feat(goal): add human goal command
This commit is contained in:
@@ -114,6 +114,33 @@ describe('dsh-agent-spine-demo bundle', () => {
|
||||
expect(ctx.get('agents')).toBeDefined()
|
||||
expect(ctx.get('tasks')).toBeDefined()
|
||||
expect(ctx.get('agentLoop')).toBeDefined()
|
||||
expect(ctx.get('goals')).toBeUndefined()
|
||||
await ctx.fiber.dispose()
|
||||
})
|
||||
|
||||
it('opts into the configured persisted-goal domain, tools, and same-session driver', async () => {
|
||||
const ctx = await mount({
|
||||
workspaceContext: false,
|
||||
goals: {
|
||||
domain: { defaultMaxGoalRounds: 17 },
|
||||
tool: { blockedAfterConsecutiveRounds: 5 },
|
||||
},
|
||||
})
|
||||
expect(ctx.goals.resolveCreate({ objective: 'configured' })).toEqual({
|
||||
objective: 'configured',
|
||||
maxGoalRounds: 17,
|
||||
})
|
||||
expect(['create_goal', 'get_goal', 'update_goal'].map(name => ctx.tools.get(name)?.name))
|
||||
.toEqual(['create_goal', 'get_goal', 'update_goal'])
|
||||
expect((await ctx.systemPrompt.assemble()).sections.find(section => section.name === 'tool:goal')?.text)
|
||||
.toContain('at least 5 consecutive goal rounds')
|
||||
await ctx.fiber.dispose()
|
||||
})
|
||||
|
||||
it('accepts an explicit false goal composition without mounting it', async () => {
|
||||
const ctx = await mount({ workspaceContext: false, goals: false })
|
||||
expect(ctx.get('goals')).toBeUndefined()
|
||||
expect(ctx.tools.get('get_goal')).toBeUndefined()
|
||||
await ctx.fiber.dispose()
|
||||
})
|
||||
|
||||
@@ -170,6 +197,18 @@ describe('dsh-agent-spine-demo bundle', () => {
|
||||
await ctx.fiber.dispose()
|
||||
})
|
||||
|
||||
it('uses owner defaults for a schema-bypassing empty goal opt-in', async () => {
|
||||
const ctx = new Context()
|
||||
agentCore.apply(ctx, { workspaceContext: false, goals: {} })
|
||||
await new Promise(resolve => setTimeout(resolve, 50))
|
||||
expect(ctx.goals.resolveCreate({ objective: 'defaulted' })).toEqual({
|
||||
objective: 'defaulted',
|
||||
maxGoalRounds: 256,
|
||||
})
|
||||
expect(ctx.tools.get('get_goal')).toBeDefined()
|
||||
await ctx.fiber.dispose()
|
||||
})
|
||||
|
||||
it('loads workspace instructions into requests through the bundled spine', async () => {
|
||||
const root = await mkdtemp(join(tmpdir(), 'dsh-agent-spine-demo-workspace-context-'))
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user