@agntk/core 0.3.3 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced/index.d.ts +13 -22
- package/dist/advanced/index.d.ts.map +1 -1
- package/dist/advanced/index.js +10 -55
- package/dist/advanced/index.js.map +1 -1
- package/dist/agent.d.ts +2 -35
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +113 -111
- package/dist/agent.js.map +1 -1
- package/dist/config/defaults.d.ts +1 -5
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -11
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +5 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +7 -7
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts +0 -40
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +3 -80
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +117 -788
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +52 -63
- package/dist/config/schema.js.map +1 -1
- package/dist/constants.d.ts +0 -11
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -17
- package/dist/constants.js.map +1 -1
- package/dist/evals/assertions.d.ts +0 -35
- package/dist/evals/assertions.d.ts.map +1 -1
- package/dist/evals/assertions.js +0 -51
- package/dist/evals/assertions.js.map +1 -1
- package/dist/evals/index.d.ts +0 -5
- package/dist/evals/index.d.ts.map +1 -1
- package/dist/evals/index.js +0 -5
- package/dist/evals/index.js.map +1 -1
- package/dist/evals/runner.d.ts +0 -27
- package/dist/evals/runner.d.ts.map +1 -1
- package/dist/evals/runner.js +3 -45
- package/dist/evals/runner.js.map +1 -1
- package/dist/evals/types.d.ts +0 -14
- package/dist/evals/types.d.ts.map +1 -1
- package/dist/evals/types.js +0 -3
- package/dist/evals/types.js.map +1 -1
- package/dist/guardrails/built-ins.d.ts +0 -28
- package/dist/guardrails/built-ins.d.ts.map +1 -1
- package/dist/guardrails/built-ins.js +21 -47
- package/dist/guardrails/built-ins.js.map +1 -1
- package/dist/guardrails/index.d.ts +1 -4
- package/dist/guardrails/index.d.ts.map +1 -1
- package/dist/guardrails/index.js +1 -4
- package/dist/guardrails/index.js.map +1 -1
- package/dist/guardrails/runner.d.ts +0 -30
- package/dist/guardrails/runner.d.ts.map +1 -1
- package/dist/guardrails/runner.js +1 -46
- package/dist/guardrails/runner.js.map +1 -1
- package/dist/guardrails/types.d.ts +0 -35
- package/dist/guardrails/types.d.ts.map +1 -1
- package/dist/guardrails/types.js +4 -7
- package/dist/guardrails/types.js.map +1 -1
- package/dist/index.d.ts +4 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -31
- package/dist/index.js.map +1 -1
- package/dist/memory/loader.d.ts +0 -17
- package/dist/memory/loader.d.ts.map +1 -1
- package/dist/memory/loader.js +5 -27
- package/dist/memory/loader.js.map +1 -1
- package/dist/memory/store.d.ts +8 -16
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +101 -32
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/types.d.ts +10 -30
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +0 -6
- package/dist/memory/types.js.map +1 -1
- package/dist/models.d.ts +9 -32
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +25 -68
- package/dist/models.js.map +1 -1
- package/dist/observability/index.d.ts +0 -3
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +0 -3
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/langfuse.d.ts +0 -38
- package/dist/observability/langfuse.d.ts.map +1 -1
- package/dist/observability/langfuse.js +6 -55
- package/dist/observability/langfuse.js.map +1 -1
- package/dist/observability/types.d.ts +0 -21
- package/dist/observability/types.d.ts.map +1 -1
- package/dist/observability/types.js +0 -3
- package/dist/observability/types.js.map +1 -1
- package/dist/presets/tool-preset-registry.d.ts +0 -21
- package/dist/presets/tool-preset-registry.d.ts.map +1 -1
- package/dist/presets/tool-preset-registry.js +15 -34
- package/dist/presets/tool-preset-registry.js.map +1 -1
- package/dist/presets/tools.d.ts +41 -39
- package/dist/presets/tools.d.ts.map +1 -1
- package/dist/presets/tools.js +46 -40
- package/dist/presets/tools.js.map +1 -1
- package/dist/prompts/context.d.ts +0 -4
- package/dist/prompts/context.d.ts.map +1 -1
- package/dist/prompts/context.js +21 -33
- package/dist/prompts/context.js.map +1 -1
- package/dist/prompts/template.d.ts +0 -11
- package/dist/prompts/template.d.ts.map +1 -1
- package/dist/prompts/template.js +4 -14
- package/dist/prompts/template.js.map +1 -1
- package/dist/provider-resolver.d.ts +0 -29
- package/dist/provider-resolver.d.ts.map +1 -1
- package/dist/provider-resolver.js +17 -61
- package/dist/provider-resolver.js.map +1 -1
- package/dist/reflection.d.ts +0 -34
- package/dist/reflection.d.ts.map +1 -1
- package/dist/reflection.js +0 -40
- package/dist/reflection.js.map +1 -1
- package/dist/skills/index.d.ts +0 -3
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +0 -3
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/loader.d.ts +0 -69
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +38 -130
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/types.d.ts +0 -36
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skills/types.js +0 -4
- package/dist/skills/types.js.map +1 -1
- package/dist/system-detect.d.ts +0 -57
- package/dist/system-detect.d.ts.map +1 -1
- package/dist/system-detect.js +9 -114
- package/dist/system-detect.js.map +1 -1
- package/dist/tools/approval.d.ts +0 -47
- package/dist/tools/approval.d.ts.map +1 -1
- package/dist/tools/approval.js +0 -46
- package/dist/tools/approval.js.map +1 -1
- package/dist/tools/ast-grep/cli.d.ts.map +1 -1
- package/dist/tools/ast-grep/cli.js +10 -4
- package/dist/tools/ast-grep/cli.js.map +1 -1
- package/dist/tools/ast-grep/constants.d.ts.map +1 -1
- package/dist/tools/ast-grep/constants.js +7 -14
- package/dist/tools/ast-grep/constants.js.map +1 -1
- package/dist/tools/ast-grep/downloader.d.ts.map +1 -1
- package/dist/tools/ast-grep/downloader.js +1 -4
- package/dist/tools/ast-grep/downloader.js.map +1 -1
- package/dist/tools/ast-grep/index.d.ts +2 -2
- package/dist/tools/ast-grep/index.d.ts.map +1 -1
- package/dist/tools/ast-grep/index.js +1 -1
- package/dist/tools/ast-grep/index.js.map +1 -1
- package/dist/tools/ast-grep/tools.d.ts +4 -4
- package/dist/tools/ast-grep/tools.d.ts.map +1 -1
- package/dist/tools/ast-grep/tools.js +2 -8
- package/dist/tools/ast-grep/tools.js.map +1 -1
- package/dist/tools/browser/index.d.ts +4 -4
- package/dist/tools/browser/index.d.ts.map +1 -1
- package/dist/tools/browser/index.js +2 -3
- package/dist/tools/browser/index.js.map +1 -1
- package/dist/tools/browser/stream.d.ts +0 -32
- package/dist/tools/browser/stream.d.ts.map +1 -1
- package/dist/tools/browser/stream.js +0 -53
- package/dist/tools/browser/stream.js.map +1 -1
- package/dist/tools/browser/tool.d.ts +10 -15
- package/dist/tools/browser/tool.d.ts.map +1 -1
- package/dist/tools/browser/tool.js +2 -26
- package/dist/tools/browser/tool.js.map +1 -1
- package/dist/tools/browser/types.d.ts +31 -156
- package/dist/tools/browser/types.d.ts.map +1 -1
- package/dist/tools/browser/types.js +22 -17
- package/dist/tools/browser/types.js.map +1 -1
- package/dist/tools/deep-reasoning/constants.d.ts +0 -6
- package/dist/tools/deep-reasoning/constants.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/constants.js +0 -6
- package/dist/tools/deep-reasoning/constants.js.map +1 -1
- package/dist/tools/deep-reasoning/engine.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/engine.js +0 -1
- package/dist/tools/deep-reasoning/engine.js.map +1 -1
- package/dist/tools/deep-reasoning/index.d.ts +4 -0
- package/dist/tools/deep-reasoning/index.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/index.js +4 -3
- package/dist/tools/deep-reasoning/index.js.map +1 -1
- package/dist/tools/deep-reasoning/tools.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/tools.js +8 -1
- package/dist/tools/deep-reasoning/tools.js.map +1 -1
- package/dist/tools/deep-reasoning/types.d.ts +5 -30
- package/dist/tools/deep-reasoning/types.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/types.js +10 -1
- package/dist/tools/deep-reasoning/types.js.map +1 -1
- package/dist/tools/file/index.d.ts +3 -5
- package/dist/tools/file/index.d.ts.map +1 -1
- package/dist/tools/file/index.js +2 -4
- package/dist/tools/file/index.js.map +1 -1
- package/dist/tools/file/tools.d.ts +8 -11
- package/dist/tools/file/tools.d.ts.map +1 -1
- package/dist/tools/file/tools.js +45 -59
- package/dist/tools/file/tools.js.map +1 -1
- package/dist/tools/glob/cli.d.ts.map +1 -1
- package/dist/tools/glob/cli.js +8 -6
- package/dist/tools/glob/cli.js.map +1 -1
- package/dist/tools/glob/tools.d.ts.map +1 -1
- package/dist/tools/glob/tools.js +7 -10
- package/dist/tools/glob/tools.js.map +1 -1
- package/dist/tools/grep/cli.d.ts.map +1 -1
- package/dist/tools/grep/cli.js +0 -2
- package/dist/tools/grep/cli.js.map +1 -1
- package/dist/tools/grep/constants.d.ts.map +1 -1
- package/dist/tools/grep/constants.js +3 -5
- package/dist/tools/grep/constants.js.map +1 -1
- package/dist/tools/grep/downloader.d.ts.map +1 -1
- package/dist/tools/grep/downloader.js +3 -3
- package/dist/tools/grep/downloader.js.map +1 -1
- package/dist/tools/grep/tools.d.ts +2 -2
- package/dist/tools/grep/tools.d.ts.map +1 -1
- package/dist/tools/grep/tools.js +8 -14
- package/dist/tools/grep/tools.js.map +1 -1
- package/dist/tools/index.d.ts +10 -11
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +9 -22
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/model-retry.d.ts +0 -40
- package/dist/tools/model-retry.d.ts.map +1 -1
- package/dist/tools/model-retry.js +1 -49
- package/dist/tools/model-retry.js.map +1 -1
- package/dist/tools/plan/constants.d.ts +0 -6
- package/dist/tools/plan/constants.d.ts.map +1 -1
- package/dist/tools/plan/constants.js +9 -6
- package/dist/tools/plan/constants.js.map +1 -1
- package/dist/tools/plan/index.d.ts +1 -1
- package/dist/tools/plan/index.d.ts.map +1 -1
- package/dist/tools/plan/index.js +1 -4
- package/dist/tools/plan/index.js.map +1 -1
- package/dist/tools/plan/tools.d.ts +2 -2
- package/dist/tools/plan/tools.d.ts.map +1 -1
- package/dist/tools/plan/tools.js +10 -11
- package/dist/tools/plan/tools.js.map +1 -1
- package/dist/tools/plan/types.d.ts +22 -32
- package/dist/tools/plan/types.d.ts.map +1 -1
- package/dist/tools/plan/types.js +11 -3
- package/dist/tools/plan/types.js.map +1 -1
- package/dist/tools/progress/index.d.ts +3 -22
- package/dist/tools/progress/index.d.ts.map +1 -1
- package/dist/tools/progress/index.js +19 -34
- package/dist/tools/progress/index.js.map +1 -1
- package/dist/tools/search-skills.d.ts +0 -23
- package/dist/tools/search-skills.d.ts.map +1 -1
- package/dist/tools/search-skills.js +3 -32
- package/dist/tools/search-skills.js.map +1 -1
- package/dist/tools/shell/background.d.ts +2 -18
- package/dist/tools/shell/background.d.ts.map +1 -1
- package/dist/tools/shell/background.js +45 -48
- package/dist/tools/shell/background.js.map +1 -1
- package/dist/tools/shell/constants.d.ts +0 -3
- package/dist/tools/shell/constants.d.ts.map +1 -1
- package/dist/tools/shell/constants.js +16 -6
- package/dist/tools/shell/constants.js.map +1 -1
- package/dist/tools/shell/index.d.ts +1 -1
- package/dist/tools/shell/index.d.ts.map +1 -1
- package/dist/tools/shell/index.js +1 -1
- package/dist/tools/shell/index.js.map +1 -1
- package/dist/tools/shell/tools.d.ts +3 -3
- package/dist/tools/shell/tools.d.ts.map +1 -1
- package/dist/tools/shell/tools.js +0 -2
- package/dist/tools/shell/tools.js.map +1 -1
- package/dist/tools/shell/types.d.ts +5 -13
- package/dist/tools/shell/types.d.ts.map +1 -1
- package/dist/tools/shell/types.js +10 -1
- package/dist/tools/shell/types.js.map +1 -1
- package/dist/tools/spawn-agent/check-agent.d.ts +45 -0
- package/dist/tools/spawn-agent/check-agent.d.ts.map +1 -0
- package/dist/tools/spawn-agent/check-agent.js +84 -0
- package/dist/tools/spawn-agent/check-agent.js.map +1 -0
- package/dist/tools/spawn-agent/index.d.ts +44 -51
- package/dist/tools/spawn-agent/index.d.ts.map +1 -1
- package/dist/tools/spawn-agent/index.js +196 -84
- package/dist/tools/spawn-agent/index.js.map +1 -1
- package/dist/tools/spawn-agent/registry.d.ts +36 -0
- package/dist/tools/spawn-agent/registry.d.ts.map +1 -0
- package/dist/tools/spawn-agent/registry.js +88 -0
- package/dist/tools/spawn-agent/registry.js.map +1 -0
- package/dist/tools/utils/errors.d.ts +2 -1
- package/dist/tools/utils/errors.d.ts.map +1 -1
- package/dist/tools/utils/errors.js +2 -1
- package/dist/tools/utils/errors.js.map +1 -1
- package/dist/tools/utils/shell.d.ts +0 -11
- package/dist/tools/utils/shell.d.ts.map +1 -1
- package/dist/tools/utils/shell.js +10 -78
- package/dist/tools/utils/shell.js.map +1 -1
- package/dist/tools/utils/tool-result.d.ts +0 -3
- package/dist/tools/utils/tool-result.d.ts.map +1 -1
- package/dist/tools/utils/tool-result.js +4 -4
- package/dist/tools/utils/tool-result.js.map +1 -1
- package/dist/tools/web-search/index.d.ts +4 -0
- package/dist/tools/web-search/index.d.ts.map +1 -0
- package/dist/tools/web-search/index.js +3 -0
- package/dist/tools/web-search/index.js.map +1 -0
- package/dist/tools/web-search/tools.d.ts +17 -0
- package/dist/tools/web-search/tools.d.ts.map +1 -0
- package/dist/tools/web-search/tools.js +81 -0
- package/dist/tools/web-search/tools.js.map +1 -0
- package/dist/tools/web-search/types.d.ts +16 -0
- package/dist/tools/web-search/types.d.ts.map +1 -0
- package/dist/tools/web-search/types.js +29 -0
- package/dist/tools/web-search/types.js.map +1 -0
- package/dist/tools/workspace-middleware.d.ts +14 -0
- package/dist/tools/workspace-middleware.d.ts.map +1 -0
- package/dist/tools/workspace-middleware.js +97 -0
- package/dist/tools/workspace-middleware.js.map +1 -0
- package/dist/types/agent.d.ts +1 -66
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js +0 -6
- package/dist/types/agent.js.map +1 -1
- package/dist/types/index.d.ts +4 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -3
- package/dist/types/index.js.map +1 -1
- package/dist/types/lifecycle.d.ts +0 -141
- package/dist/types/lifecycle.d.ts.map +1 -1
- package/dist/types/lifecycle.js +4 -54
- package/dist/types/lifecycle.js.map +1 -1
- package/dist/types/streaming.d.ts +0 -4
- package/dist/types/streaming.d.ts.map +1 -1
- package/dist/types/streaming.js +0 -4
- package/dist/types/streaming.js.map +1 -1
- package/dist/usage-limits.d.ts +0 -37
- package/dist/usage-limits.d.ts.map +1 -1
- package/dist/usage-limits.js +1 -40
- package/dist/usage-limits.js.map +1 -1
- package/dist/workflow/durable-tool.d.ts +0 -84
- package/dist/workflow/durable-tool.d.ts.map +1 -1
- package/dist/workflow/durable-tool.js +2 -104
- package/dist/workflow/durable-tool.js.map +1 -1
- package/dist/workflow/hooks.d.ts +0 -215
- package/dist/workflow/hooks.d.ts.map +1 -1
- package/dist/workflow/hooks.js +15 -221
- package/dist/workflow/hooks.js.map +1 -1
- package/dist/workflow/index.d.ts +0 -9
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +0 -12
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/utils.d.ts +0 -24
- package/dist/workflow/utils.d.ts.map +1 -1
- package/dist/workflow/utils.js +1 -32
- package/dist/workflow/utils.js.map +1 -1
- package/dist/wrappers/best-of-n.d.ts +0 -35
- package/dist/wrappers/best-of-n.d.ts.map +1 -1
- package/dist/wrappers/best-of-n.js +4 -53
- package/dist/wrappers/best-of-n.js.map +1 -1
- package/dist/wrappers/refine-loop.d.ts +36 -0
- package/dist/wrappers/refine-loop.d.ts.map +1 -0
- package/dist/wrappers/refine-loop.js +135 -0
- package/dist/wrappers/refine-loop.js.map +1 -0
- package/package.json +14 -8
|
@@ -1,25 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @
|
|
3
|
-
*
|
|
2
|
+
* @fileoverview Sub-agent spawning and lifecycle management.
|
|
3
|
+
* Handles creating, executing, and summarizing tasks delegted to sub-agents.
|
|
4
|
+
* Supports both synchronous (blocking) and asynchronous (background) execution.
|
|
4
5
|
*/
|
|
5
6
|
import { z } from 'zod';
|
|
7
|
+
import type { AgentRegistry, SpawnErrorType } from './registry.js';
|
|
6
8
|
export interface SpawnAgentOptions {
|
|
7
|
-
/**
|
|
8
|
-
* Maximum spawn depth to prevent infinite recursion
|
|
9
|
-
* Sub-agents spawned by this tool will have depth-1
|
|
10
|
-
*/
|
|
11
9
|
maxSpawnDepth?: number;
|
|
12
|
-
/**
|
|
13
|
-
* Current spawn depth (0 = main agent)
|
|
14
|
-
*/
|
|
15
10
|
currentDepth?: number;
|
|
16
|
-
/**
|
|
17
|
-
* Agent factory function - must be provided to enable spawning.
|
|
18
|
-
* This is called to create the sub-agent instance.
|
|
19
|
-
*/
|
|
20
11
|
createAgent?: (options: {
|
|
21
|
-
|
|
22
|
-
instructions
|
|
12
|
+
task: string;
|
|
13
|
+
instructions: string;
|
|
14
|
+
workspacePath: string;
|
|
15
|
+
model?: 'fast' | 'standard' | 'reasoning';
|
|
16
|
+
tools?: string[];
|
|
23
17
|
}) => {
|
|
24
18
|
stream: (input: {
|
|
25
19
|
prompt: string;
|
|
@@ -29,65 +23,64 @@ export interface SpawnAgentOptions {
|
|
|
29
23
|
text?: string;
|
|
30
24
|
}>;
|
|
31
25
|
text: Promise<string>;
|
|
26
|
+
usage: Promise<{
|
|
27
|
+
totalTokens?: number;
|
|
28
|
+
promptTokens?: number;
|
|
29
|
+
completionTokens?: number;
|
|
30
|
+
}>;
|
|
32
31
|
};
|
|
33
32
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
* Called with each text delta chunk
|
|
37
|
-
*/
|
|
33
|
+
registry?: AgentRegistry;
|
|
34
|
+
workspacePath?: string;
|
|
38
35
|
onStream?: (data: SubAgentStreamData) => void;
|
|
39
36
|
}
|
|
40
37
|
export interface SubAgentStreamData {
|
|
41
38
|
type: 'sub-agent-stream';
|
|
42
39
|
agentId: string;
|
|
43
|
-
role: string;
|
|
44
40
|
text: string;
|
|
45
41
|
status: 'streaming' | 'complete';
|
|
46
42
|
}
|
|
47
43
|
export declare const spawnAgentParametersSchema: z.ZodObject<{
|
|
48
44
|
task: z.ZodString;
|
|
49
|
-
role: z.ZodDefault<z.ZodEnum<["coder", "researcher", "analyst", "generic"]>>;
|
|
50
45
|
context: z.ZodOptional<z.ZodString>;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
role?: "coder" | "researcher" | "analyst" | "generic" | undefined;
|
|
59
|
-
}>;
|
|
46
|
+
async: z.ZodDefault<z.ZodBoolean>;
|
|
47
|
+
model: z.ZodOptional<z.ZodEnum<{
|
|
48
|
+
reasoning: "reasoning";
|
|
49
|
+
fast: "fast";
|
|
50
|
+
standard: "standard";
|
|
51
|
+
}>>;
|
|
52
|
+
}, z.core.$strip>;
|
|
60
53
|
export type SpawnAgentInput = z.infer<typeof spawnAgentParametersSchema>;
|
|
61
|
-
export interface
|
|
54
|
+
export interface SpawnAgentSyncResult {
|
|
62
55
|
success: boolean;
|
|
63
|
-
agentId
|
|
64
|
-
role?: string;
|
|
56
|
+
agentId: string;
|
|
65
57
|
summary?: string;
|
|
66
|
-
|
|
58
|
+
workspacePath: string;
|
|
67
59
|
error?: string;
|
|
68
|
-
|
|
60
|
+
errorType?: SpawnErrorType;
|
|
61
|
+
message?: string;
|
|
69
62
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
63
|
+
export interface SpawnAgentAsyncResult {
|
|
64
|
+
success: true;
|
|
65
|
+
agentId: string;
|
|
66
|
+
workspacePath: string;
|
|
67
|
+
status: 'running';
|
|
68
|
+
message: string;
|
|
69
|
+
}
|
|
70
|
+
export type SpawnAgentResult = SpawnAgentSyncResult | SpawnAgentAsyncResult;
|
|
71
|
+
export declare function generateAgentId(task: string): string;
|
|
76
72
|
export declare function createSpawnAgentTool(options?: SpawnAgentOptions): {
|
|
77
73
|
description: string;
|
|
78
74
|
inputSchema: z.ZodObject<{
|
|
79
75
|
task: z.ZodString;
|
|
80
|
-
role: z.ZodDefault<z.ZodEnum<["coder", "researcher", "analyst", "generic"]>>;
|
|
81
76
|
context: z.ZodOptional<z.ZodString>;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
role?: "coder" | "researcher" | "analyst" | "generic" | undefined;
|
|
90
|
-
}>;
|
|
77
|
+
async: z.ZodDefault<z.ZodBoolean>;
|
|
78
|
+
model: z.ZodOptional<z.ZodEnum<{
|
|
79
|
+
reasoning: "reasoning";
|
|
80
|
+
fast: "fast";
|
|
81
|
+
standard: "standard";
|
|
82
|
+
}>>;
|
|
83
|
+
}, z.core.$strip>;
|
|
91
84
|
execute: (input: SpawnAgentInput) => Promise<SpawnAgentResult>;
|
|
92
85
|
};
|
|
93
86
|
export default createSpawnAgentTool;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/spawn-agent/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/spawn-agent/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,aAAa,EAAsB,cAAc,EAAE,MAAM,YAAY,CAAC;AAIpF,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;QAC1C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,KAAK;QACJ,MAAM,EAAE,CAAC,KAAK,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,KAAK;YACrC,UAAU,EAAE,aAAa,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAC3D,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACtB,KAAK,EAAE,OAAO,CAAC;gBAAE,WAAW,CAAC,EAAE,MAAM,CAAC;gBAAC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SAC5F,CAAC;KACH,CAAC;IAEF,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC;CAClC;AAqBD,eAAO,MAAM,0BAA0B;;;;;;;;;iBAWrC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEzE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;AAE5E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYpD;AA+SD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,iBAAsB;;;;;;;;;;;;qBAI/C,eAAe;EAEnC;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -1,160 +1,272 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @
|
|
3
|
-
*
|
|
2
|
+
* @fileoverview Sub-agent spawning and lifecycle management.
|
|
3
|
+
* Handles creating, executing, and summarizing tasks delegted to sub-agents.
|
|
4
|
+
* Supports both synchronous (blocking) and asynchronous (background) execution.
|
|
4
5
|
*/
|
|
5
6
|
import { generateId, generateText } from 'ai';
|
|
6
7
|
import { z } from 'zod';
|
|
7
|
-
import {
|
|
8
|
+
import { createLogger } from '@agntk/logger';
|
|
8
9
|
import { resolveModel } from '../../models.js';
|
|
9
|
-
const
|
|
10
|
+
const log = createLogger('@agntk/core:spawn-agent');
|
|
11
|
+
const DESCRIPTION = `Spawn a sub-agent to work on a specific task.
|
|
10
12
|
|
|
11
|
-
Use this tool
|
|
12
|
-
- Independent
|
|
13
|
-
-
|
|
14
|
-
-
|
|
13
|
+
Use this tool to delegate work that benefits from:
|
|
14
|
+
- Independent, focused execution
|
|
15
|
+
- Parallel processing (use async: true)
|
|
16
|
+
- Isolated workspace for intermediate results
|
|
15
17
|
|
|
16
|
-
The sub-agent
|
|
18
|
+
The sub-agent works autonomously and writes its output to a workspace directory.
|
|
19
|
+
You receive a summary and can read the full output from the workspace path.
|
|
17
20
|
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
21
|
+
Parameters:
|
|
22
|
+
- task (required): Clear description of what the sub-agent should accomplish
|
|
23
|
+
- context: Background information the sub-agent needs
|
|
24
|
+
- async: Set to true to run in background (use check_agent to poll)
|
|
25
|
+
- model: Override model tier ('fast', 'standard', 'reasoning')
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
When async is false (default), this tool blocks until the sub-agent completes.
|
|
28
|
+
When async is true, it returns immediately with an agentId for polling.`;
|
|
25
29
|
export const spawnAgentParametersSchema = z.object({
|
|
26
|
-
task: z.string().describe('
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
task: z.string().describe('Clear description of what the sub-agent should accomplish'),
|
|
31
|
+
context: z.string().optional().describe('Background information the sub-agent needs'),
|
|
32
|
+
async: z
|
|
33
|
+
.boolean()
|
|
34
|
+
.default(false)
|
|
35
|
+
.describe('If true, run in background and return immediately with agentId'),
|
|
36
|
+
model: z
|
|
37
|
+
.enum(['fast', 'standard', 'reasoning'])
|
|
38
|
+
.optional()
|
|
39
|
+
.describe('Model tier override (default: inherit parent)'),
|
|
29
40
|
});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
export function generateAgentId(task) {
|
|
42
|
+
const slug = task
|
|
43
|
+
.toLowerCase()
|
|
44
|
+
.replace(/[^a-z0-9\s-]/g, '')
|
|
45
|
+
.trim()
|
|
46
|
+
.split(/\s+/)
|
|
47
|
+
.filter(Boolean)
|
|
48
|
+
.slice(0, 3)
|
|
49
|
+
.join('-');
|
|
50
|
+
const suffix = generateId().slice(0, 4);
|
|
51
|
+
return `${slug || 'agent'}-${suffix}`;
|
|
52
|
+
}
|
|
33
53
|
async function executeSpawnAgent(input, options) {
|
|
34
|
-
const { maxSpawnDepth =
|
|
35
|
-
const { task,
|
|
36
|
-
|
|
54
|
+
const { maxSpawnDepth = 2, currentDepth = 0, createAgent, registry, workspacePath, onStream, } = options;
|
|
55
|
+
const { task, context, model: modelTier } = input;
|
|
56
|
+
const isAsync = input.async;
|
|
37
57
|
if (currentDepth >= maxSpawnDepth) {
|
|
38
58
|
return {
|
|
39
59
|
success: false,
|
|
60
|
+
agentId: '',
|
|
61
|
+
workspacePath: '',
|
|
40
62
|
error: 'Maximum spawn depth reached. Sub-agents cannot spawn further sub-agents.',
|
|
41
|
-
|
|
63
|
+
errorType: 'depth_exceeded',
|
|
64
|
+
message: 'Complete this task directly instead of delegating.',
|
|
42
65
|
};
|
|
43
66
|
}
|
|
44
67
|
if (!createAgent) {
|
|
45
68
|
return {
|
|
46
69
|
success: false,
|
|
70
|
+
agentId: '',
|
|
71
|
+
workspacePath: '',
|
|
47
72
|
error: 'Agent factory not configured. Sub-agent spawning is disabled.',
|
|
48
73
|
};
|
|
49
74
|
}
|
|
50
|
-
const agentId =
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
75
|
+
const agentId = generateAgentId(task);
|
|
76
|
+
const agentWorkspacePath = workspacePath ? `${workspacePath}/${agentId}` : agentId;
|
|
77
|
+
log.info('Spawning sub-agent', { agentId, task: task.slice(0, 80), async: isAsync });
|
|
78
|
+
const registryEntry = {
|
|
79
|
+
agentId,
|
|
80
|
+
task,
|
|
81
|
+
status: 'running',
|
|
82
|
+
workspacePath: agentWorkspacePath,
|
|
83
|
+
startedAt: new Date().toISOString(),
|
|
84
|
+
};
|
|
85
|
+
if (registry) {
|
|
86
|
+
await registry.register(registryEntry);
|
|
87
|
+
}
|
|
88
|
+
const instructions = buildSubAgentInstructions(task, agentWorkspacePath);
|
|
89
|
+
const fullPrompt = context ? `Context:\n${context}\n\nTask:\n${task}` : task;
|
|
90
|
+
const subAgent = createAgent({
|
|
91
|
+
task,
|
|
92
|
+
instructions,
|
|
93
|
+
workspacePath: agentWorkspacePath,
|
|
94
|
+
model: modelTier,
|
|
95
|
+
});
|
|
96
|
+
if (isAsync) {
|
|
97
|
+
runSubAgentInBackground(subAgent, fullPrompt, agentId, task, agentWorkspacePath, registry ?? null, onStream ?? null).catch((err) => {
|
|
98
|
+
log.error('Background sub-agent failed', {
|
|
99
|
+
agentId,
|
|
100
|
+
error: err instanceof Error ? err.message : String(err),
|
|
101
|
+
});
|
|
64
102
|
});
|
|
103
|
+
return {
|
|
104
|
+
success: true,
|
|
105
|
+
agentId,
|
|
106
|
+
workspacePath: agentWorkspacePath,
|
|
107
|
+
status: 'running',
|
|
108
|
+
message: `Sub-agent "${agentId}" started in background. Use check_agent to poll status.`,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return runSubAgentSync(subAgent, fullPrompt, agentId, task, agentWorkspacePath, registry ?? null, onStream ?? null);
|
|
112
|
+
}
|
|
113
|
+
async function runSubAgentSync(subAgent, prompt, agentId, task, agentWorkspacePath, registry, onStream) {
|
|
114
|
+
if (onStream) {
|
|
115
|
+
onStream({ type: 'sub-agent-stream', agentId, text: '', status: 'streaming' });
|
|
65
116
|
}
|
|
66
117
|
try {
|
|
67
|
-
|
|
68
|
-
const subAgent = createAgent({
|
|
69
|
-
role,
|
|
70
|
-
instructions: roleConfig.instructions,
|
|
71
|
-
});
|
|
72
|
-
const stream = subAgent.stream({ prompt: fullPrompt });
|
|
73
|
-
// Stream sub-agent output
|
|
118
|
+
const stream = subAgent.stream({ prompt });
|
|
74
119
|
for await (const chunk of stream.fullStream) {
|
|
75
120
|
if (chunk.type === 'text-delta' && chunk.text) {
|
|
76
121
|
if (onStream) {
|
|
77
|
-
onStream({
|
|
78
|
-
type: 'sub-agent-stream',
|
|
79
|
-
agentId,
|
|
80
|
-
role,
|
|
81
|
-
text: chunk.text,
|
|
82
|
-
status: 'streaming',
|
|
83
|
-
});
|
|
122
|
+
onStream({ type: 'sub-agent-stream', agentId, text: chunk.text, status: 'streaming' });
|
|
84
123
|
}
|
|
85
124
|
}
|
|
86
125
|
}
|
|
87
|
-
// Get final result
|
|
88
126
|
const result = await stream.text;
|
|
89
|
-
// Stream completion event
|
|
90
127
|
if (onStream) {
|
|
91
|
-
onStream({
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
status: '
|
|
128
|
+
onStream({ type: 'sub-agent-stream', agentId, text: result, status: 'complete' });
|
|
129
|
+
}
|
|
130
|
+
const summary = await extractSummary(result, task);
|
|
131
|
+
if (registry) {
|
|
132
|
+
await registry.update(agentId, {
|
|
133
|
+
status: 'completed',
|
|
134
|
+
completedAt: new Date().toISOString(),
|
|
135
|
+
summary,
|
|
97
136
|
});
|
|
98
137
|
}
|
|
99
|
-
// Extract semantic summary using LLM instead of blind truncation
|
|
100
|
-
const summary = await extractSummary(result, role, task);
|
|
101
138
|
return {
|
|
102
139
|
success: true,
|
|
103
140
|
agentId,
|
|
104
|
-
role,
|
|
105
141
|
summary,
|
|
106
|
-
|
|
142
|
+
workspacePath: agentWorkspacePath,
|
|
143
|
+
message: `Sub-agent "${agentId}" completed the task. Full output at ${agentWorkspacePath}`,
|
|
107
144
|
};
|
|
108
145
|
}
|
|
109
146
|
catch (error) {
|
|
110
147
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
111
|
-
|
|
148
|
+
const errorType = classifyError(error);
|
|
112
149
|
if (onStream) {
|
|
113
150
|
onStream({
|
|
114
151
|
type: 'sub-agent-stream',
|
|
115
152
|
agentId,
|
|
116
|
-
role,
|
|
117
153
|
text: `Error: ${errorMessage}`,
|
|
118
154
|
status: 'complete',
|
|
119
155
|
});
|
|
120
156
|
}
|
|
157
|
+
if (registry) {
|
|
158
|
+
await registry.update(agentId, {
|
|
159
|
+
status: 'failed',
|
|
160
|
+
completedAt: new Date().toISOString(),
|
|
161
|
+
error: errorMessage,
|
|
162
|
+
errorType,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
121
165
|
return {
|
|
122
166
|
success: false,
|
|
123
167
|
agentId,
|
|
124
|
-
|
|
168
|
+
workspacePath: agentWorkspacePath,
|
|
125
169
|
error: errorMessage,
|
|
170
|
+
errorType,
|
|
126
171
|
};
|
|
127
172
|
}
|
|
128
173
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
174
|
+
async function runSubAgentInBackground(subAgent, prompt, agentId, task, agentWorkspacePath, registry, onStream) {
|
|
175
|
+
try {
|
|
176
|
+
const stream = subAgent.stream({ prompt });
|
|
177
|
+
for await (const chunk of stream.fullStream) {
|
|
178
|
+
if (chunk.type === 'text-delta' && chunk.text && onStream) {
|
|
179
|
+
onStream({ type: 'sub-agent-stream', agentId, text: chunk.text, status: 'streaming' });
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const result = await stream.text;
|
|
183
|
+
if (onStream) {
|
|
184
|
+
onStream({ type: 'sub-agent-stream', agentId, text: result, status: 'complete' });
|
|
185
|
+
}
|
|
186
|
+
const summary = await extractSummary(result, task);
|
|
187
|
+
if (registry) {
|
|
188
|
+
await registry.update(agentId, {
|
|
189
|
+
status: 'completed',
|
|
190
|
+
completedAt: new Date().toISOString(),
|
|
191
|
+
summary,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
log.info('Background sub-agent completed', { agentId });
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
198
|
+
const errorType = classifyError(error);
|
|
199
|
+
if (onStream) {
|
|
200
|
+
onStream({
|
|
201
|
+
type: 'sub-agent-stream',
|
|
202
|
+
agentId,
|
|
203
|
+
text: `Error: ${errorMessage}`,
|
|
204
|
+
status: 'complete',
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
if (registry) {
|
|
208
|
+
await registry.update(agentId, {
|
|
209
|
+
status: 'failed',
|
|
210
|
+
completedAt: new Date().toISOString(),
|
|
211
|
+
error: errorMessage,
|
|
212
|
+
errorType,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
log.error('Background sub-agent failed', { agentId, error: errorMessage, errorType });
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
function buildSubAgentInstructions(task, workspacePath) {
|
|
219
|
+
return `You are a sub-agent working on a specific task. Focus exclusively on this task and produce thorough results.
|
|
220
|
+
|
|
221
|
+
Your workspace directory is: ${workspacePath}
|
|
222
|
+
Write your output, notes, and intermediate results to this directory.
|
|
223
|
+
|
|
224
|
+
When you finish:
|
|
225
|
+
1. Write a clear summary of what you accomplished
|
|
226
|
+
2. Note any issues encountered or decisions made
|
|
227
|
+
3. Save detailed results to your workspace directory
|
|
228
|
+
|
|
229
|
+
Task: ${task}`;
|
|
230
|
+
}
|
|
231
|
+
async function extractSummary(fullOutput, originalTask) {
|
|
135
232
|
if (fullOutput.length <= 500) {
|
|
136
233
|
return fullOutput;
|
|
137
234
|
}
|
|
138
235
|
try {
|
|
139
236
|
const { text } = await generateText({
|
|
140
|
-
model: resolveModel({ tier: 'fast' }),
|
|
141
|
-
system: `You are summarizing the output of a sub-agent
|
|
237
|
+
model: resolveModel({ tier: 'fast' }).model,
|
|
238
|
+
system: `You are summarizing the output of a sub-agent. Write a clear, actionable summary that captures key findings, decisions, and results. Be concise but preserve critical details.`,
|
|
142
239
|
prompt: `Original task: ${originalTask}\n\nSub-agent output:\n${fullOutput}`,
|
|
143
240
|
maxRetries: 1,
|
|
144
241
|
});
|
|
145
242
|
return text;
|
|
146
243
|
}
|
|
147
|
-
catch
|
|
148
|
-
// Fallback: return the beginning of the output if summarization fails
|
|
244
|
+
catch {
|
|
149
245
|
return `${fullOutput.slice(0, 500)}...\n[Summary extraction failed, showing first 500 chars]`;
|
|
150
246
|
}
|
|
151
247
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
248
|
+
function classifyError(error) {
|
|
249
|
+
if (!(error instanceof Error))
|
|
250
|
+
return 'task_failed';
|
|
251
|
+
const msg = error.message.toLowerCase();
|
|
252
|
+
if (msg.includes('timeout') || msg.includes('step limit') || msg.includes('max steps')) {
|
|
253
|
+
return 'timeout';
|
|
254
|
+
}
|
|
255
|
+
if (msg.includes('rate limit') ||
|
|
256
|
+
msg.includes('401') ||
|
|
257
|
+
msg.includes('403') ||
|
|
258
|
+
msg.includes('429') ||
|
|
259
|
+
msg.includes('api') ||
|
|
260
|
+
msg.includes('network') ||
|
|
261
|
+
msg.includes('fetch failed') ||
|
|
262
|
+
msg.includes('econnrefused')) {
|
|
263
|
+
return 'api_error';
|
|
264
|
+
}
|
|
265
|
+
if (msg.includes('depth') || msg.includes('recursion')) {
|
|
266
|
+
return 'depth_exceeded';
|
|
267
|
+
}
|
|
268
|
+
return 'task_failed';
|
|
269
|
+
}
|
|
158
270
|
export function createSpawnAgentTool(options = {}) {
|
|
159
271
|
return {
|
|
160
272
|
description: DESCRIPTION,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/spawn-agent/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/spawn-agent/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Sub-agent registry and persistence.
|
|
3
|
+
* Tracks the status, task, and lifecycle of all spawned agents.
|
|
4
|
+
* Provides methods for registering, updating, and persisting sub-agent metadata to disk.
|
|
5
|
+
*/
|
|
6
|
+
export type AgentStatus = 'running' | 'completed' | 'failed';
|
|
7
|
+
export type SpawnErrorType = 'timeout' | 'api_error' | 'depth_exceeded' | 'task_failed';
|
|
8
|
+
export interface AgentRegistryEntry {
|
|
9
|
+
agentId: string;
|
|
10
|
+
task: string;
|
|
11
|
+
status: AgentStatus;
|
|
12
|
+
workspacePath: string;
|
|
13
|
+
startedAt: string;
|
|
14
|
+
completedAt?: string;
|
|
15
|
+
summary?: string;
|
|
16
|
+
error?: string;
|
|
17
|
+
errorType?: SpawnErrorType;
|
|
18
|
+
tokenUsage?: {
|
|
19
|
+
input: number;
|
|
20
|
+
output: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export declare class AgentRegistry {
|
|
24
|
+
private readonly agents;
|
|
25
|
+
private persistPath;
|
|
26
|
+
setPersistPath(path: string): void;
|
|
27
|
+
register(entry: AgentRegistryEntry): Promise<void>;
|
|
28
|
+
update(agentId: string, updates: Partial<AgentRegistryEntry>): Promise<void>;
|
|
29
|
+
get(agentId: string): AgentRegistryEntry | undefined;
|
|
30
|
+
getAll(statusFilter?: AgentStatus): AgentRegistryEntry[];
|
|
31
|
+
hasRunning(): boolean;
|
|
32
|
+
getCounts(): Record<AgentStatus, number>;
|
|
33
|
+
private persist;
|
|
34
|
+
loadFromDisk(path: string): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/spawn-agent/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAExF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAChE,OAAO,CAAC,WAAW,CAAuB;IAE1C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlF,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIpD,MAAM,CAAC,YAAY,CAAC,EAAE,WAAW,GAAG,kBAAkB,EAAE;IAQxD,UAAU,IAAI,OAAO;IAIrB,SAAS,IAAI,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC;YAQ1B,OAAO;IAkBf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBhD"}
|