Merge branch 'stack/agent-profiles-7-docs' into stack/agent-profiles-8-authoring
This commit is contained in:
@@ -212,6 +212,8 @@
|
|||||||
|
|
||||||
- id: tool-todo
|
- id: tool-todo
|
||||||
name: '@deepseek-ai/dsh-tool-todo'
|
name: '@deepseek-ai/dsh-tool-todo'
|
||||||
|
config:
|
||||||
|
allowParallelInProgress: true
|
||||||
|
|
||||||
# The `web` service and its search provider stay in the host composition; only
|
# The `web` service and its search provider stay in the host composition; only
|
||||||
# the model-facing tool is per-session.
|
# the model-facing tool is per-session.
|
||||||
|
|||||||
@@ -227,6 +227,8 @@
|
|||||||
|
|
||||||
- id: tool-todo
|
- id: tool-todo
|
||||||
name: '@deepseek-ai/dsh-tool-todo'
|
name: '@deepseek-ai/dsh-tool-todo'
|
||||||
|
config:
|
||||||
|
allowParallelInProgress: true
|
||||||
|
|
||||||
# The `web` service and its search provider stay in the host composition; only
|
# The `web` service and its search provider stay in the host composition; only
|
||||||
# the model-facing tool is per-session.
|
# the model-facing tool is per-session.
|
||||||
|
|||||||
@@ -17,4 +17,9 @@ export function apply(ctx, config) {
|
|||||||
order: 10,
|
order: 10,
|
||||||
text: `section for ${config.tool}`,
|
text: `section for ${config.tool}`,
|
||||||
}))
|
}))
|
||||||
|
// Reconfiguring a live row runs the Loader's `internal/update` waterfall,
|
||||||
|
// which persists the owning tree. That is the trigger reaching the preset
|
||||||
|
// tree's `write` while the subtree is still mounted; tearing the agent down
|
||||||
|
// instead stops earlier, in the loader's own "tree is being disposed" case.
|
||||||
|
globalThis.__RECONFIGURE__ = tool => ctx.fiber.update({ ...config, tool })
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -234,22 +234,25 @@ describe('a roster with nothing in it', () => {
|
|||||||
|
|
||||||
describe('attributing a service to a subtree', () => {
|
describe('attributing a service to a subtree', () => {
|
||||||
it('never writes the preset file back, however the subtree changes', async () => {
|
it('never writes the preset file back, however the subtree changes', async () => {
|
||||||
|
delete (globalThis as { __RECONFIGURE__?: unknown }).__RECONFIGURE__
|
||||||
const handle = await ctx.agents.create({
|
const handle = await ctx.agents.create({
|
||||||
sessionId: SessionId('sess-write'),
|
sessionId: SessionId('sess-write'),
|
||||||
setup: async (agentCtx: Context) => void await ctx.agentPresets.mount(agentCtx, 'standard'),
|
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 file = join(FIXTURES, 'system', 'standard', 'agent.cordis.yml')
|
||||||
const before = await readFile(file, 'utf8')
|
const before = await readFile(file, 'utf8')
|
||||||
|
|
||||||
// The inherited `write()` persists the tree whenever the Loader thinks the
|
// The inherited `write()` persists the whole tree whenever the Loader
|
||||||
// config moved, and disposing an agent disposes its whole subtree — which
|
// decides a row's config moved, so one row reconfiguring itself would
|
||||||
// is enough to trigger it. Inheriting that truncates the shipped preset to
|
// rewrite the shipped composition — here, with the row's new tool name.
|
||||||
// `[]` the first time a session ends.
|
const reconfigure = (globalThis as { __RECONFIGURE__?: (tool: string) => Promise<void> }).__RECONFIGURE__
|
||||||
await handle.dispose()
|
expect(reconfigure).toBeTypeOf('function')
|
||||||
|
await reconfigure!('rewritten')
|
||||||
|
|
||||||
|
expect(toolNames(ctx, handle.agent)).toContain('rewritten')
|
||||||
expect(await readFile(file, 'utf8')).toBe(before)
|
expect(await readFile(file, 'utf8')).toBe(before)
|
||||||
|
|
||||||
|
await handle.dispose()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('attributes nothing to a subtree that is already torn down', async () => {
|
it('attributes nothing to a subtree that is already torn down', async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user