kagent-ts 0.1.4 → 0.1.5
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/LICENSE +68 -21
- package/README.md +27 -371
- package/dist/compression/progressive-compressor.d.ts +66 -0
- package/dist/compression/progressive-compressor.d.ts.map +1 -0
- package/dist/compression/progressive-compressor.js +367 -0
- package/dist/compression/progressive-compressor.js.map +1 -0
- package/dist/compression/types.d.ts +1 -5
- package/dist/compression/types.d.ts.map +1 -1
- package/dist/context/context-manager.d.ts +34 -15
- package/dist/context/context-manager.d.ts.map +1 -1
- package/dist/context/context-manager.js +78 -28
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/types.d.ts +20 -4
- package/dist/context/types.d.ts.map +1 -1
- package/dist/core/agent.d.ts +354 -25
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +646 -64
- package/dist/core/agent.js.map +1 -1
- package/dist/core/fusion-agent.d.ts +207 -0
- package/dist/core/fusion-agent.d.ts.map +1 -0
- package/dist/core/fusion-agent.js +769 -0
- package/dist/core/fusion-agent.js.map +1 -0
- package/dist/core/hooks.d.ts +19 -7
- package/dist/core/hooks.d.ts.map +1 -1
- package/dist/core/plan-solve-agent.d.ts +1 -15
- package/dist/core/plan-solve-agent.d.ts.map +1 -1
- package/dist/core/plan-solve-agent.js +142 -117
- package/dist/core/plan-solve-agent.js.map +1 -1
- package/dist/core/react-agent.d.ts +0 -13
- package/dist/core/react-agent.d.ts.map +1 -1
- package/dist/core/react-agent.js +127 -102
- package/dist/core/react-agent.js.map +1 -1
- package/dist/core/response-schema.d.ts +65 -0
- package/dist/core/response-schema.d.ts.map +1 -1
- package/dist/core/response-schema.js +174 -1
- package/dist/core/response-schema.js.map +1 -1
- package/dist/core/system-prompts.d.ts +27 -0
- package/dist/core/system-prompts.d.ts.map +1 -0
- package/dist/core/system-prompts.js +112 -0
- package/dist/core/system-prompts.js.map +1 -0
- package/dist/eval/benchmark.d.ts +81 -0
- package/dist/eval/benchmark.d.ts.map +1 -0
- package/dist/eval/benchmark.js +292 -0
- package/dist/eval/benchmark.js.map +1 -0
- package/dist/eval/eval-runner.d.ts +79 -0
- package/dist/eval/eval-runner.d.ts.map +1 -0
- package/dist/eval/eval-runner.js +252 -0
- package/dist/eval/eval-runner.js.map +1 -0
- package/dist/eval/index.d.ts +7 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +13 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/tool-call-evaluator.d.ts +72 -0
- package/dist/eval/tool-call-evaluator.d.ts.map +1 -0
- package/dist/eval/tool-call-evaluator.js +265 -0
- package/dist/eval/tool-call-evaluator.js.map +1 -0
- package/dist/eval/types.d.ts +219 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +3 -0
- package/dist/eval/types.js.map +1 -0
- package/dist/index.d.ts +58 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +116 -8
- package/dist/index.js.map +1 -1
- package/dist/llm/anthropic-provider.d.ts +141 -0
- package/dist/llm/anthropic-provider.d.ts.map +1 -0
- package/dist/llm/anthropic-provider.js +486 -0
- package/dist/llm/anthropic-provider.js.map +1 -0
- package/dist/llm/errors.d.ts +26 -0
- package/dist/llm/errors.d.ts.map +1 -0
- package/dist/llm/errors.js +19 -0
- package/dist/llm/errors.js.map +1 -0
- package/dist/llm/factory.d.ts +73 -0
- package/dist/llm/factory.d.ts.map +1 -0
- package/dist/llm/factory.js +77 -0
- package/dist/llm/factory.js.map +1 -0
- package/dist/llm/fallback-provider.d.ts +47 -0
- package/dist/llm/fallback-provider.d.ts.map +1 -0
- package/dist/llm/fallback-provider.js +91 -0
- package/dist/llm/fallback-provider.js.map +1 -0
- package/dist/llm/interface.d.ts +54 -11
- package/dist/llm/interface.d.ts.map +1 -1
- package/dist/llm/interface.js +34 -0
- package/dist/llm/interface.js.map +1 -1
- package/dist/llm/model-router.d.ts +126 -0
- package/dist/llm/model-router.d.ts.map +1 -0
- package/dist/llm/model-router.js +178 -0
- package/dist/llm/model-router.js.map +1 -0
- package/dist/llm/openai-provider.d.ts +8 -32
- package/dist/llm/openai-provider.d.ts.map +1 -1
- package/dist/llm/openai-provider.js +27 -60
- package/dist/llm/openai-provider.js.map +1 -1
- package/dist/llm/rate-limiter.d.ts +41 -0
- package/dist/llm/rate-limiter.d.ts.map +1 -0
- package/dist/llm/rate-limiter.js +93 -0
- package/dist/llm/rate-limiter.js.map +1 -0
- package/dist/llm/retry.d.ts +26 -0
- package/dist/llm/retry.d.ts.map +1 -0
- package/dist/llm/retry.js +44 -0
- package/dist/llm/retry.js.map +1 -0
- package/dist/llm/token-budget.d.ts +97 -0
- package/dist/llm/token-budget.d.ts.map +1 -0
- package/dist/llm/token-budget.js +115 -0
- package/dist/llm/token-budget.js.map +1 -0
- package/dist/logging/index.d.ts +2 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +7 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.d.ts +38 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +34 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/mcp/mcp-client-manager.d.ts +10 -2
- package/dist/mcp/mcp-client-manager.d.ts.map +1 -1
- package/dist/mcp/mcp-client-manager.js +20 -9
- package/dist/mcp/mcp-client-manager.js.map +1 -1
- package/dist/memory/index.d.ts +3 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +6 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory-manager.d.ts +119 -0
- package/dist/memory/memory-manager.d.ts.map +1 -0
- package/dist/memory/memory-manager.js +334 -0
- package/dist/memory/memory-manager.js.map +1 -0
- package/dist/messages/types.d.ts +2 -0
- package/dist/messages/types.d.ts.map +1 -1
- package/dist/orchestrator/index.d.ts +5 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +13 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/json-extractor.d.ts +18 -0
- package/dist/orchestrator/json-extractor.d.ts.map +1 -0
- package/dist/orchestrator/json-extractor.js +111 -0
- package/dist/orchestrator/json-extractor.js.map +1 -0
- package/dist/orchestrator/orchestrator-agent.d.ts +152 -0
- package/dist/orchestrator/orchestrator-agent.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator-agent.js +675 -0
- package/dist/orchestrator/orchestrator-agent.js.map +1 -0
- package/dist/orchestrator/orchestrator-response.d.ts +40 -0
- package/dist/orchestrator/orchestrator-response.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator-response.js +275 -0
- package/dist/orchestrator/orchestrator-response.js.map +1 -0
- package/dist/orchestrator/orchestrator-types.d.ts +116 -0
- package/dist/orchestrator/orchestrator-types.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator-types.js +3 -0
- package/dist/orchestrator/orchestrator-types.js.map +1 -0
- package/dist/preferences/preference-manager.d.ts +8 -3
- package/dist/preferences/preference-manager.d.ts.map +1 -1
- package/dist/preferences/preference-manager.js +17 -4
- package/dist/preferences/preference-manager.js.map +1 -1
- package/dist/rag/chroma-store.d.ts +52 -0
- package/dist/rag/chroma-store.d.ts.map +1 -0
- package/dist/rag/chroma-store.js +110 -0
- package/dist/rag/chroma-store.js.map +1 -0
- package/dist/rag/document-loader.d.ts +21 -0
- package/dist/rag/document-loader.d.ts.map +1 -0
- package/dist/rag/document-loader.js +129 -0
- package/dist/rag/document-loader.js.map +1 -0
- package/dist/rag/embedding-provider.d.ts +36 -0
- package/dist/rag/embedding-provider.d.ts.map +1 -0
- package/dist/rag/embedding-provider.js +74 -0
- package/dist/rag/embedding-provider.js.map +1 -0
- package/dist/rag/index.d.ts +17 -0
- package/dist/rag/index.d.ts.map +1 -0
- package/dist/rag/index.js +27 -0
- package/dist/rag/index.js.map +1 -0
- package/dist/rag/keyword-index.d.ts +53 -0
- package/dist/rag/keyword-index.d.ts.map +1 -0
- package/dist/rag/keyword-index.js +161 -0
- package/dist/rag/keyword-index.js.map +1 -0
- package/dist/rag/llm-reranker.d.ts +36 -0
- package/dist/rag/llm-reranker.d.ts.map +1 -0
- package/dist/rag/llm-reranker.js +95 -0
- package/dist/rag/llm-reranker.js.map +1 -0
- package/dist/rag/rag-manager.d.ts +54 -0
- package/dist/rag/rag-manager.d.ts.map +1 -0
- package/dist/rag/rag-manager.js +179 -0
- package/dist/rag/rag-manager.js.map +1 -0
- package/dist/rag/rag-types.d.ts +143 -0
- package/dist/rag/rag-types.d.ts.map +1 -0
- package/dist/rag/rag-types.js +9 -0
- package/dist/rag/rag-types.js.map +1 -0
- package/dist/rag/rrf.d.ts +47 -0
- package/dist/rag/rrf.d.ts.map +1 -0
- package/dist/rag/rrf.js +70 -0
- package/dist/rag/rrf.js.map +1 -0
- package/dist/rag/search-knowledge.d.ts +24 -0
- package/dist/rag/search-knowledge.d.ts.map +1 -0
- package/dist/rag/search-knowledge.js +86 -0
- package/dist/rag/search-knowledge.js.map +1 -0
- package/dist/rag/text-splitter.d.ts +25 -0
- package/dist/rag/text-splitter.d.ts.map +1 -0
- package/dist/rag/text-splitter.js +136 -0
- package/dist/rag/text-splitter.js.map +1 -0
- package/dist/rag/vector-store.d.ts +34 -0
- package/dist/rag/vector-store.d.ts.map +1 -0
- package/dist/rag/vector-store.js +73 -0
- package/dist/rag/vector-store.js.map +1 -0
- package/dist/reflection/error-notebook.d.ts +125 -0
- package/dist/reflection/error-notebook.d.ts.map +1 -0
- package/dist/reflection/error-notebook.js +368 -0
- package/dist/reflection/error-notebook.js.map +1 -0
- package/dist/reflection/index.d.ts +8 -0
- package/dist/reflection/index.d.ts.map +1 -0
- package/dist/reflection/index.js +12 -0
- package/dist/reflection/index.js.map +1 -0
- package/dist/reflection/memory-reflector.d.ts +97 -0
- package/dist/reflection/memory-reflector.d.ts.map +1 -0
- package/dist/reflection/memory-reflector.js +215 -0
- package/dist/reflection/memory-reflector.js.map +1 -0
- package/dist/reflection/reflection-agent.d.ts +105 -0
- package/dist/reflection/reflection-agent.d.ts.map +1 -0
- package/dist/reflection/reflection-agent.js +234 -0
- package/dist/reflection/reflection-agent.js.map +1 -0
- package/dist/reflection/reflection-hook.d.ts +50 -0
- package/dist/reflection/reflection-hook.d.ts.map +1 -0
- package/dist/reflection/reflection-hook.js +108 -0
- package/dist/reflection/reflection-hook.js.map +1 -0
- package/dist/rules/project-rules.d.ts +47 -0
- package/dist/rules/project-rules.d.ts.map +1 -0
- package/dist/rules/project-rules.js +166 -0
- package/dist/rules/project-rules.js.map +1 -0
- package/dist/security/boundaries.d.ts +81 -0
- package/dist/security/boundaries.d.ts.map +1 -0
- package/dist/security/boundaries.js +158 -0
- package/dist/security/boundaries.js.map +1 -0
- package/dist/security/index.d.ts +2 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +11 -0
- package/dist/security/index.js.map +1 -0
- package/dist/session/session-types.d.ts +25 -4
- package/dist/session/session-types.d.ts.map +1 -1
- package/dist/skills/file-skill-loader.d.ts +4 -6
- package/dist/skills/file-skill-loader.d.ts.map +1 -1
- package/dist/skills/file-skill-loader.js +8 -19
- package/dist/skills/file-skill-loader.js.map +1 -1
- package/dist/skills/index.d.ts +1 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +1 -2
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/skill-manager.d.ts +18 -8
- package/dist/skills/skill-manager.d.ts.map +1 -1
- package/dist/skills/skill-manager.js +58 -36
- package/dist/skills/skill-manager.js.map +1 -1
- package/dist/skills/types.d.ts +3 -8
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/subagent/index.d.ts +4 -0
- package/dist/subagent/index.d.ts.map +1 -0
- package/dist/subagent/index.js +8 -0
- package/dist/subagent/index.js.map +1 -0
- package/dist/subagent/subagent-loader.d.ts +53 -0
- package/dist/subagent/subagent-loader.d.ts.map +1 -0
- package/dist/subagent/subagent-loader.js +155 -0
- package/dist/subagent/subagent-loader.js.map +1 -0
- package/dist/subagent/subagent-manager.d.ts +161 -0
- package/dist/subagent/subagent-manager.d.ts.map +1 -0
- package/dist/subagent/subagent-manager.js +468 -0
- package/dist/subagent/subagent-manager.js.map +1 -0
- package/dist/subagent/subagent-types.d.ts +77 -0
- package/dist/subagent/subagent-types.d.ts.map +1 -0
- package/dist/subagent/subagent-types.js +3 -0
- package/dist/subagent/subagent-types.js.map +1 -0
- package/dist/tools/builtin/bash.d.ts +3 -0
- package/dist/tools/builtin/bash.d.ts.map +1 -0
- package/dist/tools/builtin/bash.js +87 -0
- package/dist/tools/builtin/bash.js.map +1 -0
- package/dist/tools/builtin/edit-file.d.ts.map +1 -1
- package/dist/tools/builtin/edit-file.js +1 -0
- package/dist/tools/builtin/edit-file.js.map +1 -1
- package/dist/tools/builtin/index.d.ts +14 -0
- package/dist/tools/builtin/index.d.ts.map +1 -1
- package/dist/tools/builtin/index.js +45 -1
- package/dist/tools/builtin/index.js.map +1 -1
- package/dist/tools/builtin/list-errors.d.ts +7 -0
- package/dist/tools/builtin/list-errors.d.ts.map +1 -0
- package/dist/tools/builtin/list-errors.js +64 -0
- package/dist/tools/builtin/list-errors.js.map +1 -0
- package/dist/tools/builtin/list-subagents.d.ts +7 -0
- package/dist/tools/builtin/list-subagents.d.ts.map +1 -0
- package/dist/tools/builtin/list-subagents.js +21 -0
- package/dist/tools/builtin/list-subagents.js.map +1 -0
- package/dist/tools/builtin/recall.d.ts +11 -0
- package/dist/tools/builtin/recall.d.ts.map +1 -0
- package/dist/tools/builtin/recall.js +60 -0
- package/dist/tools/builtin/recall.js.map +1 -0
- package/dist/tools/builtin/remember.d.ts +12 -0
- package/dist/tools/builtin/remember.d.ts.map +1 -0
- package/dist/tools/builtin/remember.js +72 -0
- package/dist/tools/builtin/remember.js.map +1 -0
- package/dist/tools/builtin/skill.d.ts +14 -0
- package/dist/tools/builtin/skill.d.ts.map +1 -0
- package/dist/tools/builtin/skill.js +71 -0
- package/dist/tools/builtin/skill.js.map +1 -0
- package/dist/tools/builtin/spawn-subagent.d.ts +7 -0
- package/dist/tools/builtin/spawn-subagent.d.ts.map +1 -0
- package/dist/tools/builtin/spawn-subagent.js +43 -0
- package/dist/tools/builtin/spawn-subagent.js.map +1 -0
- package/dist/tools/builtin/web-fetch.d.ts +3 -0
- package/dist/tools/builtin/web-fetch.d.ts.map +1 -0
- package/dist/tools/builtin/web-fetch.js +101 -0
- package/dist/tools/builtin/web-fetch.js.map +1 -0
- package/dist/tools/builtin/write-file.d.ts.map +1 -1
- package/dist/tools/builtin/write-file.js +1 -0
- package/dist/tools/builtin/write-file.js.map +1 -1
- package/dist/tools/circuit-breaker.d.ts +19 -10
- package/dist/tools/circuit-breaker.d.ts.map +1 -1
- package/dist/tools/circuit-breaker.js +22 -11
- package/dist/tools/circuit-breaker.js.map +1 -1
- package/dist/tools/error-tracker.d.ts +28 -44
- package/dist/tools/error-tracker.d.ts.map +1 -1
- package/dist/tools/error-tracker.js +39 -156
- package/dist/tools/error-tracker.js.map +1 -1
- package/dist/tools/tool-filter.d.ts +70 -0
- package/dist/tools/tool-filter.d.ts.map +1 -0
- package/dist/tools/tool-filter.js +92 -0
- package/dist/tools/tool-filter.js.map +1 -0
- package/dist/tools/tool-output-truncator.d.ts +36 -0
- package/dist/tools/tool-output-truncator.d.ts.map +1 -0
- package/dist/tools/tool-output-truncator.js +117 -0
- package/dist/tools/tool-output-truncator.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +25 -9
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/tool-registry.js +77 -28
- package/dist/tools/tool-registry.js.map +1 -1
- package/dist/tools/tool-validator.d.ts +13 -0
- package/dist/tools/tool-validator.d.ts.map +1 -0
- package/dist/tools/tool-validator.js +116 -0
- package/dist/tools/tool-validator.js.map +1 -0
- package/dist/tools/types.d.ts +86 -3
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js +51 -2
- package/dist/tools/types.js.map +1 -1
- package/dist/trace/trace-logger.d.ts +30 -4
- package/dist/trace/trace-logger.d.ts.map +1 -1
- package/dist/trace/trace-logger.js +82 -6
- package/dist/trace/trace-logger.js.map +1 -1
- package/package.json +13 -4
- package/dist/compression/sliding-window.d.ts +0 -21
- package/dist/compression/sliding-window.d.ts.map +0 -1
- package/dist/compression/sliding-window.js +0 -44
- package/dist/compression/sliding-window.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fusion-agent.js","sourceRoot":"","sources":["../../src/core/fusion-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/core/hooks.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LLMResponse } from "../llm/interface";
|
|
2
|
-
import { LLMNetworkError } from "../llm/
|
|
2
|
+
import { LLMNetworkError } from "../llm/errors";
|
|
3
3
|
import { MessageData } from "../messages/types";
|
|
4
4
|
import { Tool } from "../tools/types";
|
|
5
5
|
/**
|
|
@@ -22,12 +22,24 @@ export interface AgentHooks {
|
|
|
22
22
|
onLLMEnd?: (response: LLMResponse) => void;
|
|
23
23
|
/** Called when a network error exhausts all retries. */
|
|
24
24
|
onLLMError?: (error: LLMNetworkError) => void;
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Called before a tool begins execution.
|
|
27
|
+
* @param toolCallId The unique ID assigned by the LLM to this tool call
|
|
28
|
+
* (from `response.tool_calls[].id`). Used for exact
|
|
29
|
+
* matching when the same tool is called multiple times
|
|
30
|
+
* in one batch.
|
|
31
|
+
*/
|
|
32
|
+
onToolStart?: (toolName: string, args: Record<string, unknown>, toolCallId?: string) => void;
|
|
33
|
+
/**
|
|
34
|
+
* Called after a tool returns successfully.
|
|
35
|
+
* @param toolCallId Matches the ID passed to `onToolStart`.
|
|
36
|
+
*/
|
|
37
|
+
onToolEnd?: (toolName: string, result: string, toolCallId?: string) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Called when a tool throws or returns an error string.
|
|
40
|
+
* @param toolCallId Matches the ID passed to `onToolStart`.
|
|
41
|
+
*/
|
|
42
|
+
onToolError?: (toolName: string, error: string, toolCallId?: string) => void;
|
|
31
43
|
/** Called when the LLM produces a reasoning thought. */
|
|
32
44
|
onThought?: (thought: string) => void;
|
|
33
45
|
/** Called when an initial plan is created. */
|
package/dist/core/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/core/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/core/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IAGzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAE9D,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAE3C,wDAAwD;IACxD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAI9C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7F;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAE5E;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAI7E,wDAAwD;IACxD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAItC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAEzC,qDAAqD;IACrD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAIzC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC"}
|
|
@@ -8,14 +8,7 @@ export interface PlanSolveAgentConfig extends AgentConfig {
|
|
|
8
8
|
maxIterations?: number;
|
|
9
9
|
/** Maximum number of steps in a plan (default: 12). */
|
|
10
10
|
maxPlanSteps?: number;
|
|
11
|
-
/**
|
|
12
|
-
* Enable progressive skill disclosure.
|
|
13
|
-
* When true, skills are auto-detected from user input and loaded
|
|
14
|
-
* into the system prompt on demand (default: true).
|
|
15
|
-
*/
|
|
16
|
-
enableSkillAutoDetect?: boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Number of consecutive tool failures before a "replan hint" is injected
|
|
11
|
+
/** Number of consecutive tool failures before a "replan hint" is injected
|
|
19
12
|
* into the system prompt, nudging the LLM to consider revising its plan.
|
|
20
13
|
* Set to 0 to disable auto-replan triggering (default: 2).
|
|
21
14
|
*/
|
|
@@ -42,7 +35,6 @@ export interface PlanSolveAgentConfig extends AgentConfig {
|
|
|
42
35
|
export declare class PlanSolveAgent extends Agent {
|
|
43
36
|
private maxIterations;
|
|
44
37
|
private maxPlanSteps;
|
|
45
|
-
private enableSkillAutoDetect;
|
|
46
38
|
/** The current plan steps (empty until the plan is created). */
|
|
47
39
|
private currentPlan;
|
|
48
40
|
/** Whether a plan has been created in this run. */
|
|
@@ -82,12 +74,6 @@ export declare class PlanSolveAgent extends Agent {
|
|
|
82
74
|
* @param input New user input to continue the conversation.
|
|
83
75
|
*/
|
|
84
76
|
resume(sessionId: string, input: string): Promise<string>;
|
|
85
|
-
/**
|
|
86
|
-
* Handle an LLMNetworkError: save an interrupted checkpoint if
|
|
87
|
-
* checkpointing is enabled, and return a user-facing message with
|
|
88
|
-
* resume instructions.
|
|
89
|
-
*/
|
|
90
|
-
private handleNetworkError;
|
|
91
77
|
/**
|
|
92
78
|
* Rebuild the system prompt to include the current plan context
|
|
93
79
|
* alongside the core prompt and active skill prompts.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-solve-agent.d.ts","sourceRoot":"","sources":["../../src/core/plan-solve-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"plan-solve-agent.d.ts","sourceRoot":"","sources":["../../src/core/plan-solve-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAW7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAyBvE;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAE7B,gEAAgE;IAChE,OAAO,CAAC,WAAW,CAAgB;IAEnC,mDAAmD;IACnD,OAAO,CAAC,OAAO,CAAS;IAExB;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAS;IAEhC,wEAAwE;IACxE,OAAO,CAAC,mBAAmB,CAAK;IAEhC,uEAAuE;IACvE,OAAO,CAAC,cAAc,CAAK;IAE3B,iFAAiF;IACjF,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,oBAAoB;IAgBlC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4WzC;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,YAAY;IAItC;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY;IAapE;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAehE;;;;;;;;OAQG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY/D;;;;;;;;;OASG;IACH,OAAO,CAAC,sBAAsB;IA6B9B;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;CAc1B"}
|
|
@@ -3,9 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PlanSolveAgent = void 0;
|
|
4
4
|
const agent_1 = require("./agent");
|
|
5
5
|
const message_1 = require("../messages/message");
|
|
6
|
+
const types_1 = require("../messages/types");
|
|
6
7
|
const response_schema_1 = require("./response-schema");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
8
|
+
const system_prompts_1 = require("./system-prompts");
|
|
9
|
+
const boundaries_1 = require("../security/boundaries");
|
|
10
|
+
const errors_1 = require("../llm/errors");
|
|
11
|
+
const interface_1 = require("../llm/interface");
|
|
9
12
|
/**
|
|
10
13
|
* Default system prompt for the Plan-and-Solve paradigm.
|
|
11
14
|
*
|
|
@@ -25,20 +28,9 @@ Process:
|
|
|
25
28
|
4. When all steps are complete, provide the final answer.
|
|
26
29
|
|
|
27
30
|
If no tools are needed, respond with the final answer directly.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
1. READ the error message carefully — understand WHY it failed.
|
|
32
|
-
2. ANALYZE whether the parameters were correct. Common issues:
|
|
33
|
-
- Wrong file path (check spelling, use absolute paths)
|
|
34
|
-
- Missing or incorrect arguments
|
|
35
|
-
- The tool may need different input formats
|
|
36
|
-
3. RETRY with corrected parameters if you can fix the issue.
|
|
37
|
-
4. If the same tool fails repeatedly, try a COMPLETELY DIFFERENT approach.
|
|
38
|
-
5. If a tool fails 2+ times in a row, consider whether your PLAN needs revision.
|
|
39
|
-
The approach may be fundamentally wrong — output a "revised_plan".
|
|
40
|
-
6. If a tool is disabled after too many failures, DO NOT try to use it again.
|
|
41
|
-
Find another way to accomplish the task.${response_schema_1.PLAN_SOLVE_INSTRUCTIONS}`;
|
|
31
|
+
${system_prompts_1.TOOL_ERROR_RECOVERY}
|
|
32
|
+
5. If multiple tools fail in a round, consider whether your PLAN needs revision.
|
|
33
|
+
The approach may be fundamentally wrong — output a "revised_plan".${response_schema_1.PLAN_SOLVE_INSTRUCTIONS}`;
|
|
42
34
|
/**
|
|
43
35
|
* Plan-and-Solve Agent implementing a structured Plan → Resolve → Final Answer loop.
|
|
44
36
|
*
|
|
@@ -60,7 +52,6 @@ When a tool returns an error:
|
|
|
60
52
|
class PlanSolveAgent extends agent_1.Agent {
|
|
61
53
|
maxIterations;
|
|
62
54
|
maxPlanSteps;
|
|
63
|
-
enableSkillAutoDetect;
|
|
64
55
|
/** The current plan steps (empty until the plan is created). */
|
|
65
56
|
currentPlan = [];
|
|
66
57
|
/** Whether a plan has been created in this run. */
|
|
@@ -85,36 +76,37 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
85
76
|
super(mergedConfig);
|
|
86
77
|
this.maxIterations = config.maxIterations ?? 15;
|
|
87
78
|
this.maxPlanSteps = config.maxPlanSteps ?? 12;
|
|
88
|
-
this.enableSkillAutoDetect = config.enableSkillAutoDetect ?? true;
|
|
89
79
|
this.replanThreshold = config.replanThreshold ?? 2;
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
if (this.skillManager.activeCount > 0) {
|
|
93
|
-
this.rebuildSystemPrompt();
|
|
94
|
-
}
|
|
80
|
+
// Build the full system prompt once all sections are ready
|
|
81
|
+
this.rebuildSystemPrompt();
|
|
95
82
|
}
|
|
96
83
|
async run(input) {
|
|
84
|
+
// Consume the skip-reset flag immediately — no early return path
|
|
85
|
+
// may leave it dangling (resume() sets it before calling run()).
|
|
86
|
+
const skipPlanReset = this._skipPlanReset;
|
|
87
|
+
this._skipPlanReset = false;
|
|
88
|
+
// ── Pre-flight: reject oversized input before any setup ───────────
|
|
89
|
+
const sizeError = this.validateInputSize(input);
|
|
90
|
+
if (sizeError)
|
|
91
|
+
return sizeError;
|
|
92
|
+
// ── Create fresh abort controller for this run ───────────────────
|
|
93
|
+
this._abortController = new AbortController();
|
|
97
94
|
// ── Async initialization (MCP connections, etc.) ─────────────────
|
|
98
95
|
await this.init();
|
|
99
|
-
// ──
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
this.rebuildSystemPrompt();
|
|
104
|
-
console.log(`[Skills] Auto-activated: ${activated.join(", ")}`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
96
|
+
// ── Reload dynamic resources (preferences, skills, MCP) ─────────
|
|
97
|
+
await this.reloadDynamicResources();
|
|
98
|
+
// ── Recover orphaned sub-agent results from a cancelled session ──
|
|
99
|
+
this.recoverOrphanedSubAgentResults();
|
|
107
100
|
// ── Create user message ─────────────────────────────────────────
|
|
108
101
|
const userMessage = message_1.Message.user(input);
|
|
109
102
|
this.contextManager.addMessage(userMessage.toDict());
|
|
110
103
|
// Reset plan state for this run (skip when resuming a session)
|
|
111
|
-
if (!
|
|
104
|
+
if (!skipPlanReset) {
|
|
112
105
|
this.currentPlan = [];
|
|
113
106
|
this.hasPlan = false;
|
|
114
107
|
this.consecutiveFailures = 0;
|
|
115
108
|
this.completedSteps = 0;
|
|
116
109
|
}
|
|
117
|
-
this._skipPlanReset = false;
|
|
118
110
|
// Save initial checkpoint (captures user input before any LLM call)
|
|
119
111
|
if (this.checkpointingEnabled) {
|
|
120
112
|
this.saveCheckpoint("active");
|
|
@@ -122,91 +114,129 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
122
114
|
// Track consecutive unproductive iterations (no tool calls, no answer)
|
|
123
115
|
let consecutiveEmptyIterations = 0;
|
|
124
116
|
const EMPTY_ITERATION_LIMIT = 5;
|
|
117
|
+
// Track consecutive max_tokens truncations (to avoid infinite continuation loops)
|
|
118
|
+
let consecutiveTruncations = 0;
|
|
119
|
+
const MAX_TRUNCATION_CONTINUES = 3;
|
|
125
120
|
// ── Main Plan-Solve loop ────────────────────────────────────────
|
|
126
121
|
for (let iteration = 0; iteration < this.maxIterations; iteration++) {
|
|
127
122
|
// Check if user cancelled (SIGINT)
|
|
128
123
|
if (this.isCancelled) {
|
|
129
|
-
this.
|
|
130
|
-
const
|
|
124
|
+
this.saveCheckpoint("cancelled");
|
|
125
|
+
const sid = this.sessionManager?.getSessionId() ?? "unknown";
|
|
126
|
+
const cancelMsg = `Execution cancelled by user. Session "${sid}" preserved — ` +
|
|
127
|
+
`resume with agent.resume("${sid}", "<your prompt>").`;
|
|
131
128
|
for (const h of this.hooks)
|
|
132
129
|
h.onFinish?.(cancelMsg);
|
|
133
130
|
return cancelMsg;
|
|
134
131
|
}
|
|
135
|
-
|
|
132
|
+
// ── Poll sub-agent results ──────────────────────────────────────
|
|
133
|
+
const subResults = await this.pollSubAgentResults();
|
|
134
|
+
for (const r of subResults) {
|
|
135
|
+
const source = `subagent:${r.name}`;
|
|
136
|
+
const msg = new message_1.Message(types_1.Role.User, (0, boundaries_1.wrapAndScan)(source, r.output), { name: source });
|
|
137
|
+
this.contextManager.addMessage(msg.toDict());
|
|
138
|
+
}
|
|
139
|
+
await this.checkAndCompress();
|
|
136
140
|
// Rebuild the system prompt to inject current plan progress
|
|
137
141
|
// and any replan hint if consecutive failures are detected
|
|
138
142
|
const replanHint = this.computeReplanHint();
|
|
139
143
|
this.rebuildContextWithPlan(replanHint);
|
|
140
144
|
const contextMessages = this.contextManager.getContextMessages();
|
|
145
|
+
// Token budget check — skip token counting when no budget is configured
|
|
146
|
+
const budgetError = this.checkTokenBudget(this.tokenBudget ? this.contextManager.getCurrentTokens() : 0);
|
|
147
|
+
if (budgetError) {
|
|
148
|
+
for (const h of this.hooks)
|
|
149
|
+
h.onFinish?.(budgetError);
|
|
150
|
+
return budgetError;
|
|
151
|
+
}
|
|
141
152
|
// Call the LLM — with network error handling
|
|
142
153
|
for (const h of this.hooks)
|
|
143
154
|
h.onLLMStart?.(contextMessages, this.toolRegistry.getTools());
|
|
144
155
|
let response;
|
|
145
156
|
try {
|
|
146
|
-
response = await this.llm.chat(contextMessages, this.toolRegistry.getTools());
|
|
157
|
+
response = await this.llm.chat(contextMessages, this.toolRegistry.getTools(), this._abortController?.signal);
|
|
147
158
|
}
|
|
148
159
|
catch (err) {
|
|
149
|
-
|
|
160
|
+
// Cancellation by user (AbortController) — exit the loop cleanly
|
|
161
|
+
if (this.isCancelled) {
|
|
162
|
+
this.saveCheckpoint("cancelled");
|
|
163
|
+
const sid = this.sessionManager?.getSessionId() ?? "unknown";
|
|
164
|
+
const cancelMsg = `Execution cancelled by user. Session "${sid}" preserved — ` +
|
|
165
|
+
`resume with agent.resume("${sid}", "<your prompt>").`;
|
|
166
|
+
for (const h of this.hooks)
|
|
167
|
+
h.onFinish?.(cancelMsg);
|
|
168
|
+
return cancelMsg;
|
|
169
|
+
}
|
|
170
|
+
if (err instanceof errors_1.LLMNetworkError) {
|
|
150
171
|
for (const h of this.hooks)
|
|
151
172
|
h.onLLMError?.(err);
|
|
152
|
-
return this.handleNetworkError(err, iteration + 1);
|
|
173
|
+
return this.handleNetworkError(err, iteration + 1, "continue with what you were doing");
|
|
153
174
|
}
|
|
154
175
|
throw err;
|
|
155
176
|
}
|
|
156
177
|
for (const h of this.hooks)
|
|
157
178
|
h.onLLMEnd?.(response);
|
|
179
|
+
// Record token usage against the session budget
|
|
180
|
+
if (response.usage) {
|
|
181
|
+
this.tokenBudget?.recordUsage(response.usage.prompt_tokens, response.usage.completion_tokens);
|
|
182
|
+
}
|
|
158
183
|
const parsed = (0, response_schema_1.parsePlanSolveResponse)(response.content);
|
|
184
|
+
// Capture LLM analysis of any active tool error traces
|
|
185
|
+
if (parsed.thought) {
|
|
186
|
+
this.captureErrorAnalysis(parsed.thought);
|
|
187
|
+
}
|
|
159
188
|
// Create assistant message from the response
|
|
160
189
|
const assistantMessage = message_1.Message.assistant(response.content, response.tool_calls);
|
|
161
|
-
|
|
190
|
+
// ── Handle max_tokens truncation ──────────────────────────────
|
|
191
|
+
const isTruncated = response.responseError?.code === interface_1.LLMResponseErrorCode.MAX_TOKENS;
|
|
192
|
+
if (isTruncated) {
|
|
193
|
+
consecutiveTruncations++;
|
|
194
|
+
if (consecutiveTruncations > MAX_TRUNCATION_CONTINUES) {
|
|
195
|
+
// Bail out — too many consecutive truncations, return what we have.
|
|
196
|
+
// Don't add the truncated message to context; it's incomplete junk.
|
|
197
|
+
const fallback = parsed.answer
|
|
198
|
+
? parsed.answer + "\n\n[Note: Response may be incomplete due to repeated output limits.]"
|
|
199
|
+
: "I apologize, but I'm unable to complete this response due to output length constraints. " +
|
|
200
|
+
"Please try breaking your request into smaller steps.";
|
|
201
|
+
for (const h of this.hooks)
|
|
202
|
+
h.onFinish?.(fallback);
|
|
203
|
+
return fallback;
|
|
204
|
+
}
|
|
205
|
+
// Store the truncated message so the LLM has context for where it left off,
|
|
206
|
+
// then inject a continuation instruction.
|
|
207
|
+
this.contextManager.addMessage(assistantMessage.toDict());
|
|
208
|
+
const continueMsg = message_1.Message.user("Your previous response was cut off (max output tokens reached). " +
|
|
209
|
+
"Continue exactly where you left off — do NOT repeat any content already written. " +
|
|
210
|
+
"If you were calling tools, re-invoke them with complete arguments.");
|
|
211
|
+
this.contextManager.addMessage(continueMsg.toDict());
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
// Normal (non-truncated) response — store it and reset the counter.
|
|
215
|
+
this.contextManager.addMessage(assistantMessage.toDict());
|
|
216
|
+
consecutiveTruncations = 0;
|
|
217
|
+
}
|
|
162
218
|
// ── Handle tool calls (execution phase) ─────────────────────
|
|
163
219
|
if (response.tool_calls && response.tool_calls.length > 0) {
|
|
164
220
|
consecutiveEmptyIterations = 0;
|
|
165
221
|
if (parsed.thought) {
|
|
166
|
-
|
|
222
|
+
this.logger.info("Thought", parsed.thought);
|
|
167
223
|
for (const h of this.hooks)
|
|
168
224
|
h.onThought?.(parsed.thought);
|
|
169
|
-
this.captureAnalysisFromThought(parsed.thought);
|
|
170
225
|
}
|
|
171
|
-
//
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
catch {
|
|
179
|
-
args = {};
|
|
180
|
-
}
|
|
181
|
-
for (const h of this.hooks)
|
|
182
|
-
h.onToolStart?.(toolCall.function.name, args);
|
|
183
|
-
let result;
|
|
184
|
-
try {
|
|
185
|
-
result = await this.toolRegistry.execute(toolCall.function.name, args);
|
|
186
|
-
}
|
|
187
|
-
catch (err) {
|
|
188
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
189
|
-
result = `Error executing tool "${toolCall.function.name}": ${message}`;
|
|
190
|
-
}
|
|
191
|
-
// Track failure/success for replan detection and hooks
|
|
192
|
-
if (result.startsWith("Error")) {
|
|
193
|
-
roundHadFailure = true;
|
|
194
|
-
for (const h of this.hooks)
|
|
195
|
-
h.onToolError?.(toolCall.function.name, result);
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
for (const h of this.hooks)
|
|
199
|
-
h.onToolEnd?.(toolCall.function.name, result);
|
|
200
|
-
}
|
|
201
|
-
// Track this result for error analysis if it indicates a failure
|
|
202
|
-
this.trackToolErrorForAnalysis(toolCall.function.name, result);
|
|
203
|
-
const toolMessage = message_1.Message.tool(result, toolCall.id, toolCall.function.name);
|
|
204
|
-
this.contextManager.addMessage(toolMessage.toDict());
|
|
226
|
+
// If the LLM response shows non-truncation quality issues, warn
|
|
227
|
+
// before executing tool calls. (max_tokens truncation is handled above.)
|
|
228
|
+
if (response.responseError &&
|
|
229
|
+
response.responseError.code !== interface_1.LLMResponseErrorCode.MAX_TOKENS &&
|
|
230
|
+
response.responseError.code !== interface_1.LLMResponseErrorCode.OK) {
|
|
231
|
+
const warnMsg = message_1.Message.system(`LLM response quality issue: ${response.responseError.message}`);
|
|
232
|
+
this.contextManager.addMessage(warnMsg.toDict());
|
|
205
233
|
}
|
|
234
|
+
const mcpWarnedServers = new Set();
|
|
235
|
+
const { hadFailure: roundHadFailure } = await this.executeToolCallsBatch(response.tool_calls, mcpWarnedServers);
|
|
206
236
|
// Update consecutive failure count and step progress
|
|
207
237
|
if (roundHadFailure) {
|
|
208
238
|
this.consecutiveFailures++;
|
|
209
|
-
|
|
239
|
+
this.logger.info("Replan", `Consecutive failures: ${this.consecutiveFailures}` +
|
|
210
240
|
(this.replanThreshold > 0 &&
|
|
211
241
|
this.consecutiveFailures >= this.replanThreshold
|
|
212
242
|
? ` — threshold reached (${this.replanThreshold}), will prompt replan`
|
|
@@ -223,7 +253,7 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
223
253
|
this.completedSteps = Math.min(this.completedSteps + 1, this.currentPlan.length);
|
|
224
254
|
}
|
|
225
255
|
if (this.hasPlan) {
|
|
226
|
-
|
|
256
|
+
this.logger.info("Progress", `Step ${this.completedSteps}/${this.currentPlan.length} completed`);
|
|
227
257
|
}
|
|
228
258
|
}
|
|
229
259
|
// Save checkpoint after complete tool execution round
|
|
@@ -235,12 +265,33 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
235
265
|
}
|
|
236
266
|
// ── Final answer ────────────────────────────────────────────
|
|
237
267
|
if (parsed.answer) {
|
|
268
|
+
// If truncated, don't return — the continuation instruction is
|
|
269
|
+
// already in context; next iteration will continue from here.
|
|
270
|
+
if (isTruncated) {
|
|
271
|
+
consecutiveEmptyIterations = 0;
|
|
272
|
+
if (parsed.thought) {
|
|
273
|
+
this.logger.info("Thought", parsed.thought);
|
|
274
|
+
for (const h of this.hooks)
|
|
275
|
+
h.onThought?.(parsed.thought);
|
|
276
|
+
}
|
|
277
|
+
// If this is the last iteration we can't continue — return
|
|
278
|
+
// what we have instead of the generic "max iterations" message.
|
|
279
|
+
if (iteration === this.maxIterations - 1) {
|
|
280
|
+
const fallback = parsed.answer +
|
|
281
|
+
"\n\n[Note: Response may be incomplete due to output length constraints.]";
|
|
282
|
+
for (const h of this.hooks)
|
|
283
|
+
h.onFinish?.(fallback);
|
|
284
|
+
return fallback;
|
|
285
|
+
}
|
|
286
|
+
this.logger.info("Plan-Solve", "Answer truncated (max_tokens) — continuing in next iteration.");
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
238
289
|
if (parsed.thought) {
|
|
239
|
-
|
|
290
|
+
this.logger.info("Thought", parsed.thought);
|
|
240
291
|
for (const h of this.hooks)
|
|
241
292
|
h.onThought?.(parsed.thought);
|
|
242
293
|
}
|
|
243
|
-
|
|
294
|
+
this.logger.info("Plan-Solve", "Task complete — returning final answer.");
|
|
244
295
|
// Save final checkpoint as completed
|
|
245
296
|
if (this.checkpointingEnabled) {
|
|
246
297
|
this.saveCheckpoint("completed");
|
|
@@ -257,14 +308,14 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
257
308
|
consecutiveEmptyIterations = 0;
|
|
258
309
|
this.currentPlan = parsed.plan.slice(0, this.maxPlanSteps);
|
|
259
310
|
this.hasPlan = true;
|
|
260
|
-
|
|
311
|
+
this.logger.info("Plan", `Created ${this.currentPlan.length}-step plan:`);
|
|
261
312
|
for (let i = 0; i < this.currentPlan.length; i++) {
|
|
262
|
-
|
|
313
|
+
this.logger.info("Plan", ` ${i + 1}. ${this.currentPlan[i]}`);
|
|
263
314
|
}
|
|
264
315
|
for (const h of this.hooks)
|
|
265
316
|
h.onPlanCreated?.(this.currentPlan);
|
|
266
317
|
if (parsed.thought) {
|
|
267
|
-
|
|
318
|
+
this.logger.info("Thought", parsed.thought);
|
|
268
319
|
for (const h of this.hooks)
|
|
269
320
|
h.onThought?.(parsed.thought);
|
|
270
321
|
}
|
|
@@ -277,14 +328,15 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
277
328
|
consecutiveEmptyIterations = 0;
|
|
278
329
|
this.currentPlan = parsed.revised_plan.slice(0, this.maxPlanSteps);
|
|
279
330
|
this.completedSteps = 0; // Remaining steps are now new
|
|
280
|
-
|
|
331
|
+
this.consecutiveFailures = 0; // New plan, fresh failure counter
|
|
332
|
+
this.logger.info("Plan", `Revised — ${this.currentPlan.length} steps remaining:`);
|
|
281
333
|
for (let i = 0; i < this.currentPlan.length; i++) {
|
|
282
|
-
|
|
334
|
+
this.logger.info("Plan", ` ${i + 1}. ${this.currentPlan[i]}`);
|
|
283
335
|
}
|
|
284
336
|
for (const h of this.hooks)
|
|
285
337
|
h.onPlanRevised?.(this.currentPlan);
|
|
286
338
|
if (parsed.thought) {
|
|
287
|
-
|
|
339
|
+
this.logger.info("Thought", parsed.thought);
|
|
288
340
|
for (const h of this.hooks)
|
|
289
341
|
h.onThought?.(parsed.thought);
|
|
290
342
|
}
|
|
@@ -293,10 +345,9 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
293
345
|
// ── Default: log thought and continue loop ──────────────────
|
|
294
346
|
if (parsed.thought) {
|
|
295
347
|
consecutiveEmptyIterations++;
|
|
296
|
-
|
|
348
|
+
this.logger.info("Thought", parsed.thought);
|
|
297
349
|
for (const h of this.hooks)
|
|
298
350
|
h.onThought?.(parsed.thought);
|
|
299
|
-
this.captureAnalysisFromThought(parsed.thought);
|
|
300
351
|
// If stuck in thought-only loop, bail out
|
|
301
352
|
if (consecutiveEmptyIterations >= EMPTY_ITERATION_LIMIT) {
|
|
302
353
|
const stuckMsg = "I apologize, but I'm having difficulty making progress on your request. " +
|
|
@@ -381,28 +432,8 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
381
432
|
this._skipPlanReset = true;
|
|
382
433
|
return this.run(input);
|
|
383
434
|
}
|
|
384
|
-
// ───
|
|
385
|
-
|
|
386
|
-
* Handle an LLMNetworkError: save an interrupted checkpoint if
|
|
387
|
-
* checkpointing is enabled, and return a user-facing message with
|
|
388
|
-
* resume instructions.
|
|
389
|
-
*/
|
|
390
|
-
handleNetworkError(err, iteration) {
|
|
391
|
-
if (this.checkpointingEnabled) {
|
|
392
|
-
this.saveCheckpoint("interrupted");
|
|
393
|
-
}
|
|
394
|
-
const sid = this.sessionManager?.getSessionId() ?? "unknown";
|
|
395
|
-
console.error(`\n[Network Error] ${err.cause}: ${err.message}`);
|
|
396
|
-
if (this.checkpointingEnabled && this.sessionManager) {
|
|
397
|
-
return (`[Network Error] ${err.message}\n\n` +
|
|
398
|
-
`Your session "${sid}" has been saved (iteration ${iteration}).\n` +
|
|
399
|
-
`After your network is restored, resume with:\n` +
|
|
400
|
-
` agent.resume("${sid}", "continue with what you were doing")\n\n` +
|
|
401
|
-
`Or start a new session by calling agent.run() again.`);
|
|
402
|
-
}
|
|
403
|
-
return (`[Network Error] ${err.message}\n\n` +
|
|
404
|
-
`Please check your network connection and try again.`);
|
|
405
|
-
}
|
|
435
|
+
// ─── Network error handling inherited from Agent ───────────────────
|
|
436
|
+
// handleNetworkError is defined in the base Agent class.
|
|
406
437
|
// ─── Plan Context Injection ─────────────────────────────────────────────
|
|
407
438
|
/**
|
|
408
439
|
* Rebuild the system prompt to include the current plan context
|
|
@@ -415,11 +446,7 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
415
446
|
* to consider revising its plan.
|
|
416
447
|
*/
|
|
417
448
|
rebuildContextWithPlan(replanHint) {
|
|
418
|
-
let prompt = this.
|
|
419
|
-
// User preferences — injected as a system-prompt section
|
|
420
|
-
prompt += preference_manager_1.PreferenceManager.toPrompt(this.preferences);
|
|
421
|
-
// Available skills hint (progressive disclosure — names only)
|
|
422
|
-
prompt += this.skillManager.buildAvailableSkillsHint();
|
|
449
|
+
let prompt = this.buildSystemPrompt();
|
|
423
450
|
// Plan context — injected when a plan exists
|
|
424
451
|
if (this.hasPlan && this.currentPlan.length > 0) {
|
|
425
452
|
prompt += `\n\n=== Current Plan (${this.completedSteps}/${this.currentPlan.length} completed) ===\n`;
|
|
@@ -440,8 +467,6 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
440
467
|
if (replanHint) {
|
|
441
468
|
prompt += `\n\n${replanHint}`;
|
|
442
469
|
}
|
|
443
|
-
// Active skill instructions
|
|
444
|
-
prompt += this.skillManager.buildSkillsPrompt();
|
|
445
470
|
this.contextManager.setSystemMessage(prompt);
|
|
446
471
|
}
|
|
447
472
|
/**
|