kagent-ts 0.1.3 → 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 +407 -35
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +685 -70
- 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 +144 -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 +128 -101
- 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 +61 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +121 -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/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +8 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcp-client-manager.d.ts +72 -0
- package/dist/mcp/mcp-client-manager.d.ts.map +1 -0
- package/dist/mcp/mcp-client-manager.js +235 -0
- package/dist/mcp/mcp-client-manager.js.map +1 -0
- package/dist/mcp/mcp-types.d.ts +58 -0
- package/dist/mcp/mcp-types.d.ts.map +1 -0
- package/dist/mcp/mcp-types.js +20 -0
- package/dist/mcp/mcp-types.js.map +1 -0
- 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 +9 -20
- package/dist/skills/file-skill-loader.d.ts.map +1 -1
- package/dist/skills/file-skill-loader.js +35 -164
- 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 +22 -29
- package/dist/skills/skill-manager.d.ts.map +1 -1
- package/dist/skills/skill-manager.js +63 -85
- package/dist/skills/skill-manager.js.map +1 -1
- package/dist/skills/types.d.ts +4 -16
- 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 +83 -7
- package/dist/trace/trace-logger.js.map +1 -1
- package/package.json +14 -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,34 +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) {
|
|
97
|
-
//
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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();
|
|
94
|
+
// ── Async initialization (MCP connections, etc.) ─────────────────
|
|
95
|
+
await this.init();
|
|
96
|
+
// ── Reload dynamic resources (preferences, skills, MCP) ─────────
|
|
97
|
+
await this.reloadDynamicResources();
|
|
98
|
+
// ── Recover orphaned sub-agent results from a cancelled session ──
|
|
99
|
+
this.recoverOrphanedSubAgentResults();
|
|
105
100
|
// ── Create user message ─────────────────────────────────────────
|
|
106
101
|
const userMessage = message_1.Message.user(input);
|
|
107
102
|
this.contextManager.addMessage(userMessage.toDict());
|
|
108
103
|
// Reset plan state for this run (skip when resuming a session)
|
|
109
|
-
if (!
|
|
104
|
+
if (!skipPlanReset) {
|
|
110
105
|
this.currentPlan = [];
|
|
111
106
|
this.hasPlan = false;
|
|
112
107
|
this.consecutiveFailures = 0;
|
|
113
108
|
this.completedSteps = 0;
|
|
114
109
|
}
|
|
115
|
-
this._skipPlanReset = false;
|
|
116
110
|
// Save initial checkpoint (captures user input before any LLM call)
|
|
117
111
|
if (this.checkpointingEnabled) {
|
|
118
112
|
this.saveCheckpoint("active");
|
|
@@ -120,91 +114,129 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
120
114
|
// Track consecutive unproductive iterations (no tool calls, no answer)
|
|
121
115
|
let consecutiveEmptyIterations = 0;
|
|
122
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;
|
|
123
120
|
// ── Main Plan-Solve loop ────────────────────────────────────────
|
|
124
121
|
for (let iteration = 0; iteration < this.maxIterations; iteration++) {
|
|
125
122
|
// Check if user cancelled (SIGINT)
|
|
126
123
|
if (this.isCancelled) {
|
|
127
|
-
this.
|
|
128
|
-
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>").`;
|
|
129
128
|
for (const h of this.hooks)
|
|
130
129
|
h.onFinish?.(cancelMsg);
|
|
131
130
|
return cancelMsg;
|
|
132
131
|
}
|
|
133
|
-
|
|
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();
|
|
134
140
|
// Rebuild the system prompt to inject current plan progress
|
|
135
141
|
// and any replan hint if consecutive failures are detected
|
|
136
142
|
const replanHint = this.computeReplanHint();
|
|
137
143
|
this.rebuildContextWithPlan(replanHint);
|
|
138
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
|
+
}
|
|
139
152
|
// Call the LLM — with network error handling
|
|
140
153
|
for (const h of this.hooks)
|
|
141
154
|
h.onLLMStart?.(contextMessages, this.toolRegistry.getTools());
|
|
142
155
|
let response;
|
|
143
156
|
try {
|
|
144
|
-
response = await this.llm.chat(contextMessages, this.toolRegistry.getTools());
|
|
157
|
+
response = await this.llm.chat(contextMessages, this.toolRegistry.getTools(), this._abortController?.signal);
|
|
145
158
|
}
|
|
146
159
|
catch (err) {
|
|
147
|
-
|
|
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) {
|
|
148
171
|
for (const h of this.hooks)
|
|
149
172
|
h.onLLMError?.(err);
|
|
150
|
-
return this.handleNetworkError(err, iteration + 1);
|
|
173
|
+
return this.handleNetworkError(err, iteration + 1, "continue with what you were doing");
|
|
151
174
|
}
|
|
152
175
|
throw err;
|
|
153
176
|
}
|
|
154
177
|
for (const h of this.hooks)
|
|
155
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
|
+
}
|
|
156
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
|
+
}
|
|
157
188
|
// Create assistant message from the response
|
|
158
189
|
const assistantMessage = message_1.Message.assistant(response.content, response.tool_calls);
|
|
159
|
-
|
|
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
|
+
}
|
|
160
218
|
// ── Handle tool calls (execution phase) ─────────────────────
|
|
161
219
|
if (response.tool_calls && response.tool_calls.length > 0) {
|
|
162
220
|
consecutiveEmptyIterations = 0;
|
|
163
221
|
if (parsed.thought) {
|
|
164
|
-
|
|
222
|
+
this.logger.info("Thought", parsed.thought);
|
|
165
223
|
for (const h of this.hooks)
|
|
166
224
|
h.onThought?.(parsed.thought);
|
|
167
|
-
this.captureAnalysisFromThought(parsed.thought);
|
|
168
225
|
}
|
|
169
|
-
//
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
catch {
|
|
177
|
-
args = {};
|
|
178
|
-
}
|
|
179
|
-
for (const h of this.hooks)
|
|
180
|
-
h.onToolStart?.(toolCall.function.name, args);
|
|
181
|
-
let result;
|
|
182
|
-
try {
|
|
183
|
-
result = await this.toolRegistry.execute(toolCall.function.name, args);
|
|
184
|
-
}
|
|
185
|
-
catch (err) {
|
|
186
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
187
|
-
result = `Error executing tool "${toolCall.function.name}": ${message}`;
|
|
188
|
-
}
|
|
189
|
-
// Track failure/success for replan detection and hooks
|
|
190
|
-
if (result.startsWith("Error")) {
|
|
191
|
-
roundHadFailure = true;
|
|
192
|
-
for (const h of this.hooks)
|
|
193
|
-
h.onToolError?.(toolCall.function.name, result);
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
for (const h of this.hooks)
|
|
197
|
-
h.onToolEnd?.(toolCall.function.name, result);
|
|
198
|
-
}
|
|
199
|
-
// Track this result for error analysis if it indicates a failure
|
|
200
|
-
this.trackToolErrorForAnalysis(toolCall.function.name, result);
|
|
201
|
-
const toolMessage = message_1.Message.tool(result, toolCall.id, toolCall.function.name);
|
|
202
|
-
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());
|
|
203
233
|
}
|
|
234
|
+
const mcpWarnedServers = new Set();
|
|
235
|
+
const { hadFailure: roundHadFailure } = await this.executeToolCallsBatch(response.tool_calls, mcpWarnedServers);
|
|
204
236
|
// Update consecutive failure count and step progress
|
|
205
237
|
if (roundHadFailure) {
|
|
206
238
|
this.consecutiveFailures++;
|
|
207
|
-
|
|
239
|
+
this.logger.info("Replan", `Consecutive failures: ${this.consecutiveFailures}` +
|
|
208
240
|
(this.replanThreshold > 0 &&
|
|
209
241
|
this.consecutiveFailures >= this.replanThreshold
|
|
210
242
|
? ` — threshold reached (${this.replanThreshold}), will prompt replan`
|
|
@@ -221,7 +253,7 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
221
253
|
this.completedSteps = Math.min(this.completedSteps + 1, this.currentPlan.length);
|
|
222
254
|
}
|
|
223
255
|
if (this.hasPlan) {
|
|
224
|
-
|
|
256
|
+
this.logger.info("Progress", `Step ${this.completedSteps}/${this.currentPlan.length} completed`);
|
|
225
257
|
}
|
|
226
258
|
}
|
|
227
259
|
// Save checkpoint after complete tool execution round
|
|
@@ -233,12 +265,33 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
233
265
|
}
|
|
234
266
|
// ── Final answer ────────────────────────────────────────────
|
|
235
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
|
+
}
|
|
236
289
|
if (parsed.thought) {
|
|
237
|
-
|
|
290
|
+
this.logger.info("Thought", parsed.thought);
|
|
238
291
|
for (const h of this.hooks)
|
|
239
292
|
h.onThought?.(parsed.thought);
|
|
240
293
|
}
|
|
241
|
-
|
|
294
|
+
this.logger.info("Plan-Solve", "Task complete — returning final answer.");
|
|
242
295
|
// Save final checkpoint as completed
|
|
243
296
|
if (this.checkpointingEnabled) {
|
|
244
297
|
this.saveCheckpoint("completed");
|
|
@@ -255,14 +308,14 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
255
308
|
consecutiveEmptyIterations = 0;
|
|
256
309
|
this.currentPlan = parsed.plan.slice(0, this.maxPlanSteps);
|
|
257
310
|
this.hasPlan = true;
|
|
258
|
-
|
|
311
|
+
this.logger.info("Plan", `Created ${this.currentPlan.length}-step plan:`);
|
|
259
312
|
for (let i = 0; i < this.currentPlan.length; i++) {
|
|
260
|
-
|
|
313
|
+
this.logger.info("Plan", ` ${i + 1}. ${this.currentPlan[i]}`);
|
|
261
314
|
}
|
|
262
315
|
for (const h of this.hooks)
|
|
263
316
|
h.onPlanCreated?.(this.currentPlan);
|
|
264
317
|
if (parsed.thought) {
|
|
265
|
-
|
|
318
|
+
this.logger.info("Thought", parsed.thought);
|
|
266
319
|
for (const h of this.hooks)
|
|
267
320
|
h.onThought?.(parsed.thought);
|
|
268
321
|
}
|
|
@@ -275,14 +328,15 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
275
328
|
consecutiveEmptyIterations = 0;
|
|
276
329
|
this.currentPlan = parsed.revised_plan.slice(0, this.maxPlanSteps);
|
|
277
330
|
this.completedSteps = 0; // Remaining steps are now new
|
|
278
|
-
|
|
331
|
+
this.consecutiveFailures = 0; // New plan, fresh failure counter
|
|
332
|
+
this.logger.info("Plan", `Revised — ${this.currentPlan.length} steps remaining:`);
|
|
279
333
|
for (let i = 0; i < this.currentPlan.length; i++) {
|
|
280
|
-
|
|
334
|
+
this.logger.info("Plan", ` ${i + 1}. ${this.currentPlan[i]}`);
|
|
281
335
|
}
|
|
282
336
|
for (const h of this.hooks)
|
|
283
337
|
h.onPlanRevised?.(this.currentPlan);
|
|
284
338
|
if (parsed.thought) {
|
|
285
|
-
|
|
339
|
+
this.logger.info("Thought", parsed.thought);
|
|
286
340
|
for (const h of this.hooks)
|
|
287
341
|
h.onThought?.(parsed.thought);
|
|
288
342
|
}
|
|
@@ -291,10 +345,9 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
291
345
|
// ── Default: log thought and continue loop ──────────────────
|
|
292
346
|
if (parsed.thought) {
|
|
293
347
|
consecutiveEmptyIterations++;
|
|
294
|
-
|
|
348
|
+
this.logger.info("Thought", parsed.thought);
|
|
295
349
|
for (const h of this.hooks)
|
|
296
350
|
h.onThought?.(parsed.thought);
|
|
297
|
-
this.captureAnalysisFromThought(parsed.thought);
|
|
298
351
|
// If stuck in thought-only loop, bail out
|
|
299
352
|
if (consecutiveEmptyIterations >= EMPTY_ITERATION_LIMIT) {
|
|
300
353
|
const stuckMsg = "I apologize, but I'm having difficulty making progress on your request. " +
|
|
@@ -379,28 +432,8 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
379
432
|
this._skipPlanReset = true;
|
|
380
433
|
return this.run(input);
|
|
381
434
|
}
|
|
382
|
-
// ───
|
|
383
|
-
|
|
384
|
-
* Handle an LLMNetworkError: save an interrupted checkpoint if
|
|
385
|
-
* checkpointing is enabled, and return a user-facing message with
|
|
386
|
-
* resume instructions.
|
|
387
|
-
*/
|
|
388
|
-
handleNetworkError(err, iteration) {
|
|
389
|
-
if (this.checkpointingEnabled) {
|
|
390
|
-
this.saveCheckpoint("interrupted");
|
|
391
|
-
}
|
|
392
|
-
const sid = this.sessionManager?.getSessionId() ?? "unknown";
|
|
393
|
-
console.error(`\n[Network Error] ${err.cause}: ${err.message}`);
|
|
394
|
-
if (this.checkpointingEnabled && this.sessionManager) {
|
|
395
|
-
return (`[Network Error] ${err.message}\n\n` +
|
|
396
|
-
`Your session "${sid}" has been saved (iteration ${iteration}).\n` +
|
|
397
|
-
`After your network is restored, resume with:\n` +
|
|
398
|
-
` agent.resume("${sid}", "continue with what you were doing")\n\n` +
|
|
399
|
-
`Or start a new session by calling agent.run() again.`);
|
|
400
|
-
}
|
|
401
|
-
return (`[Network Error] ${err.message}\n\n` +
|
|
402
|
-
`Please check your network connection and try again.`);
|
|
403
|
-
}
|
|
435
|
+
// ─── Network error handling inherited from Agent ───────────────────
|
|
436
|
+
// handleNetworkError is defined in the base Agent class.
|
|
404
437
|
// ─── Plan Context Injection ─────────────────────────────────────────────
|
|
405
438
|
/**
|
|
406
439
|
* Rebuild the system prompt to include the current plan context
|
|
@@ -413,11 +446,7 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
413
446
|
* to consider revising its plan.
|
|
414
447
|
*/
|
|
415
448
|
rebuildContextWithPlan(replanHint) {
|
|
416
|
-
let prompt = this.
|
|
417
|
-
// User preferences — injected as a system-prompt section
|
|
418
|
-
prompt += preference_manager_1.PreferenceManager.toPrompt(this.preferences);
|
|
419
|
-
// Available skills hint (progressive disclosure — names only)
|
|
420
|
-
prompt += this.skillManager.buildAvailableSkillsHint();
|
|
449
|
+
let prompt = this.buildSystemPrompt();
|
|
421
450
|
// Plan context — injected when a plan exists
|
|
422
451
|
if (this.hasPlan && this.currentPlan.length > 0) {
|
|
423
452
|
prompt += `\n\n=== Current Plan (${this.completedSteps}/${this.currentPlan.length} completed) ===\n`;
|
|
@@ -438,8 +467,6 @@ class PlanSolveAgent extends agent_1.Agent {
|
|
|
438
467
|
if (replanHint) {
|
|
439
468
|
prompt += `\n\n${replanHint}`;
|
|
440
469
|
}
|
|
441
|
-
// Active skill instructions
|
|
442
|
-
prompt += this.skillManager.buildSkillsPrompt();
|
|
443
470
|
this.contextManager.setSystemMessage(prompt);
|
|
444
471
|
}
|
|
445
472
|
/**
|