Merge branch 'stack/agent-profiles-7-docs' into stack/agent-profiles-8-authoring

This commit is contained in:
Yichen Jiang
2026-08-07 13:21:57 +08:00
2 changed files with 20 additions and 0 deletions
@@ -1319,6 +1319,7 @@ describe('SessionStore', () => {
{ meta: { delegationDepth: '1' }, error: /delegationDepth must be a non-negative safe integer/ },
{ meta: { delegationDepth: 0.5 }, error: /delegationDepth must be a non-negative safe integer/ },
{ meta: { delegationDepth: -1 }, error: /delegationDepth must be a non-negative safe integer/ },
{ meta: { agentPreset: 1 }, error: /agentPreset must be a string/ },
]
for (const [index, { meta, error }] of cases.entries()) {
@@ -233,6 +233,25 @@ describe('a roster with nothing in it', () => {
})
describe('attributing a service to a subtree', () => {
it('never writes the preset file back, however the subtree changes', async () => {
const handle = await ctx.agents.create({
sessionId: SessionId('sess-write'),
setup: async (agentCtx: Context) => void await ctx.agentPresets.mount(agentCtx, 'standard'),
})
const [mount] = livePresetMounts().filter(entry => entry.presetId === 'standard')
expect(mount).toBeDefined()
const file = join(FIXTURES, 'system', 'standard', 'agent.cordis.yml')
const before = await readFile(file, 'utf8')
// The inherited `write()` persists the tree whenever the Loader thinks the
// config moved, and disposing an agent disposes its whole subtree — which
// is enough to trigger it. Inheriting that truncates the shipped preset to
// `[]` the first time a session ends.
await handle.dispose()
expect(await readFile(file, 'utf8')).toBe(before)
})
it('attributes nothing to a subtree that is already torn down', async () => {
const handle = await ctx.agents.create({
sessionId: SessionId('sess-torn'),