@pentoshi/clai 3.9.1 → 3.9.3
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/agent/compaction-attempt.d.ts +22 -0
- package/dist/agent/compaction-attempt.js +69 -0
- package/dist/agent/compaction-attempt.js.map +1 -0
- package/dist/agent/compaction-summary.d.ts +27 -0
- package/dist/agent/compaction-summary.js +62 -0
- package/dist/agent/compaction-summary.js.map +1 -1
- package/dist/agent/context-breakdown.d.ts +2 -0
- package/dist/agent/context-breakdown.js +37 -0
- package/dist/agent/context-breakdown.js.map +1 -1
- package/dist/agent/context-manager.d.ts +7 -1
- package/dist/agent/context-manager.js +64 -15
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/continue-orient.d.ts +8 -0
- package/dist/agent/continue-orient.js +26 -3
- package/dist/agent/continue-orient.js.map +1 -1
- package/dist/agent/durable-envelope.d.ts +39 -0
- package/dist/agent/durable-envelope.js +195 -0
- package/dist/agent/durable-envelope.js.map +1 -0
- package/dist/agent/events.d.ts +21 -0
- package/dist/agent/loop-guard.d.ts +13 -5
- package/dist/agent/loop-guard.js +114 -1
- package/dist/agent/loop-guard.js.map +1 -1
- package/dist/agent/outcomes.d.ts +29 -0
- package/dist/agent/outcomes.js +118 -3
- package/dist/agent/outcomes.js.map +1 -1
- package/dist/agent/plan-decision.js +8 -3
- package/dist/agent/plan-decision.js.map +1 -1
- package/dist/agent/plan-tool.d.ts +5 -0
- package/dist/agent/plan-tool.js +166 -6
- package/dist/agent/plan-tool.js.map +1 -1
- package/dist/agent/reliability-policy.d.ts +11 -6
- package/dist/agent/reliability-policy.js +19 -13
- package/dist/agent/reliability-policy.js.map +1 -1
- package/dist/agent/request-budget.d.ts +24 -0
- package/dist/agent/request-budget.js +59 -0
- package/dist/agent/request-budget.js.map +1 -0
- package/dist/agent/responder-context.js +2 -2
- package/dist/agent/responder-context.js.map +1 -1
- package/dist/agent/responder-parent.d.ts +30 -0
- package/dist/agent/responder-parent.js +82 -0
- package/dist/agent/responder-parent.js.map +1 -0
- package/dist/agent/runner.d.ts +14 -1
- package/dist/agent/runner.js +850 -237
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/scope-context.d.ts +5 -0
- package/dist/agent/scope-context.js +7 -1
- package/dist/agent/scope-context.js.map +1 -1
- package/dist/agent/session-policy.js +1 -0
- package/dist/agent/session-policy.js.map +1 -1
- package/dist/agent/stop-summary.js +13 -7
- package/dist/agent/stop-summary.js.map +1 -1
- package/dist/agent/stream-recovery.d.ts +83 -0
- package/dist/agent/stream-recovery.js +270 -0
- package/dist/agent/stream-recovery.js.map +1 -0
- package/dist/agent/task-analyzer.js +7 -3
- package/dist/agent/task-analyzer.js.map +1 -1
- package/dist/agent/task-evidence.js +2 -0
- package/dist/agent/task-evidence.js.map +1 -1
- package/dist/agent/task-sync.d.ts +11 -0
- package/dist/agent/task-sync.js +31 -0
- package/dist/agent/task-sync.js.map +1 -1
- package/dist/agent/tool-call-parser.d.ts +6 -13
- package/dist/agent/tool-call-parser.js +186 -82
- package/dist/agent/tool-call-parser.js.map +1 -1
- package/dist/agent/tool-history.d.ts +8 -2
- package/dist/agent/tool-history.js +8 -1
- package/dist/agent/tool-history.js.map +1 -1
- package/dist/agent/turn-outcome.d.ts +4 -1
- package/dist/agent/turn-outcome.js +16 -2
- package/dist/agent/turn-outcome.js.map +1 -1
- package/dist/app/adapters/agent-event-adapter.js +27 -0
- package/dist/app/adapters/agent-event-adapter.js.map +1 -1
- package/dist/app/adapters/current-agent-adapter.js +1 -0
- package/dist/app/adapters/current-agent-adapter.js.map +1 -1
- package/dist/app/adapters/current-jobs-adapter.js +4 -3
- package/dist/app/adapters/current-jobs-adapter.js.map +1 -1
- package/dist/app/adapters/current-store-adapter.js +4 -3
- package/dist/app/adapters/current-store-adapter.js.map +1 -1
- package/dist/app/adapters/current-updates-adapter.d.ts +1 -1
- package/dist/app/adapters/current-updates-adapter.js +34 -5
- package/dist/app/adapters/current-updates-adapter.js.map +1 -1
- package/dist/app/adapters/quiet-meta-tools.js +2 -1
- package/dist/app/adapters/quiet-meta-tools.js.map +1 -1
- package/dist/app/controllers/job-controller.d.ts +4 -3
- package/dist/app/controllers/job-controller.js +9 -6
- package/dist/app/controllers/job-controller.js.map +1 -1
- package/dist/app/controllers/plan-controller.js +14 -0
- package/dist/app/controllers/plan-controller.js.map +1 -1
- package/dist/app/controllers/responder-settlement.js +2 -2
- package/dist/app/controllers/responder-settlement.js.map +1 -1
- package/dist/app/controllers/session-compact-helper.d.ts +23 -1
- package/dist/app/controllers/session-compact-helper.js +117 -7
- package/dist/app/controllers/session-compact-helper.js.map +1 -1
- package/dist/app/controllers/session-context-usage.d.ts +24 -0
- package/dist/app/controllers/session-context-usage.js +89 -0
- package/dist/app/controllers/session-context-usage.js.map +1 -0
- package/dist/app/controllers/session-controller.d.ts +18 -17
- package/dist/app/controllers/session-controller.js +127 -119
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/app/controllers/session-prompt-queue.d.ts +3 -0
- package/dist/app/controllers/session-prompt-queue.js +20 -1
- package/dist/app/controllers/session-prompt-queue.js.map +1 -1
- package/dist/app/controllers/session-responder.js +16 -6
- package/dist/app/controllers/session-responder.js.map +1 -1
- package/dist/app/controllers/session-turn-request.d.ts +18 -0
- package/dist/app/controllers/session-turn-request.js +31 -0
- package/dist/app/controllers/session-turn-request.js.map +1 -0
- package/dist/app/controllers/turn-continuation.d.ts +14 -0
- package/dist/app/controllers/turn-continuation.js +46 -0
- package/dist/app/controllers/turn-continuation.js.map +1 -0
- package/dist/app/events/app-event.d.ts +21 -0
- package/dist/app/events/app-event.js +1 -0
- package/dist/app/events/app-event.js.map +1 -1
- package/dist/app/ports/agent-port.d.ts +7 -0
- package/dist/app/ports/jobs-port.d.ts +4 -3
- package/dist/app/ports/persistence-port.d.ts +11 -0
- package/dist/app/ports/updates-port.d.ts +8 -0
- package/dist/attachments/service.js +13 -2
- package/dist/attachments/service.js.map +1 -1
- package/dist/commands/providers.js +13 -10
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/update.d.ts +4 -0
- package/dist/commands/update.js +14 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/llm/adapters/anthropic-tools.d.ts +14 -1
- package/dist/llm/adapters/anthropic-tools.js +36 -5
- package/dist/llm/adapters/anthropic-tools.js.map +1 -1
- package/dist/llm/adapters/gemini-tools.d.ts +3 -1
- package/dist/llm/adapters/gemini-tools.js +5 -2
- package/dist/llm/adapters/gemini-tools.js.map +1 -1
- package/dist/llm/adapters/ollama-tools.js +8 -3
- package/dist/llm/adapters/ollama-tools.js.map +1 -1
- package/dist/llm/adapters/openai-tools.js +8 -1
- package/dist/llm/adapters/openai-tools.js.map +1 -1
- package/dist/llm/agentrouter.js +2 -0
- package/dist/llm/agentrouter.js.map +1 -1
- package/dist/llm/anthropic.d.ts +8 -0
- package/dist/llm/anthropic.js +68 -9
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/aws-mantle.js +60 -12
- package/dist/llm/aws-mantle.js.map +1 -1
- package/dist/llm/bynara.js +2 -0
- package/dist/llm/bynara.js.map +1 -1
- package/dist/llm/capabilities.d.ts +7 -0
- package/dist/llm/capabilities.js +22 -0
- package/dist/llm/capabilities.js.map +1 -1
- package/dist/llm/gemini.d.ts +3 -0
- package/dist/llm/gemini.js +71 -11
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/groq.d.ts +20 -1
- package/dist/llm/groq.js +32 -4
- package/dist/llm/groq.js.map +1 -1
- package/dist/llm/http.d.ts +29 -0
- package/dist/llm/http.js +122 -29
- package/dist/llm/http.js.map +1 -1
- package/dist/llm/kimchi.js +2 -0
- package/dist/llm/kimchi.js.map +1 -1
- package/dist/llm/nvidia.js +2 -0
- package/dist/llm/nvidia.js.map +1 -1
- package/dist/llm/ollama.d.ts +5 -0
- package/dist/llm/ollama.js +53 -6
- package/dist/llm/ollama.js.map +1 -1
- package/dist/llm/openai.js +2 -0
- package/dist/llm/openai.js.map +1 -1
- package/dist/llm/openrouter.js +2 -0
- package/dist/llm/openrouter.js.map +1 -1
- package/dist/llm/qwen-cloud.js +2 -0
- package/dist/llm/qwen-cloud.js.map +1 -1
- package/dist/llm/router.d.ts +16 -0
- package/dist/llm/router.js +79 -23
- package/dist/llm/router.js.map +1 -1
- package/dist/llm/sampling.d.ts +32 -0
- package/dist/llm/sampling.js +48 -0
- package/dist/llm/sampling.js.map +1 -0
- package/dist/llm/stream-progress.d.ts +4 -0
- package/dist/llm/stream-progress.js +43 -0
- package/dist/llm/stream-progress.js.map +1 -0
- package/dist/llm/system-messages.d.ts +29 -0
- package/dist/llm/system-messages.js +51 -0
- package/dist/llm/system-messages.js.map +1 -0
- package/dist/llm/token-usage.d.ts +4 -1
- package/dist/llm/token-usage.js +56 -4
- package/dist/llm/token-usage.js.map +1 -1
- package/dist/llm/tool-protocol.js +30 -0
- package/dist/llm/tool-protocol.js.map +1 -1
- package/dist/os/process-tree.d.ts +15 -0
- package/dist/os/process-tree.js +77 -0
- package/dist/os/process-tree.js.map +1 -0
- package/dist/prompts/embedded.js +1 -1
- package/dist/prompts/embedded.js.map +1 -1
- package/dist/prompts/system.agent.md +13 -12
- package/dist/repl/prompt-line.d.ts +5 -0
- package/dist/repl/prompt-line.js +7 -1
- package/dist/repl/prompt-line.js.map +1 -1
- package/dist/repl.js +61 -41
- package/dist/repl.js.map +1 -1
- package/dist/safety/classifier.js +98 -44
- package/dist/safety/classifier.js.map +1 -1
- package/dist/safety/engagement-policy.d.ts +8 -0
- package/dist/safety/engagement-policy.js +52 -7
- package/dist/safety/engagement-policy.js.map +1 -1
- package/dist/safety/patterns.d.ts +44 -0
- package/dist/safety/patterns.js +168 -37
- package/dist/safety/patterns.js.map +1 -1
- package/dist/store/config.d.ts +9 -1
- package/dist/store/config.js +51 -1
- package/dist/store/config.js.map +1 -1
- package/dist/store/history-index.d.ts +12 -0
- package/dist/store/history-index.js +47 -18
- package/dist/store/history-index.js.map +1 -1
- package/dist/store/history.d.ts +5 -2
- package/dist/store/history.js +153 -62
- package/dist/store/history.js.map +1 -1
- package/dist/store/plan.d.ts +81 -5
- package/dist/store/plan.js +406 -46
- package/dist/store/plan.js.map +1 -1
- package/dist/store/redaction-cache.d.ts +12 -0
- package/dist/store/redaction-cache.js +51 -0
- package/dist/store/redaction-cache.js.map +1 -0
- package/dist/store/responder-settlement.d.ts +5 -1
- package/dist/store/responder-settlement.js +42 -30
- package/dist/store/responder-settlement.js.map +1 -1
- package/dist/store/scope.js +36 -27
- package/dist/store/scope.js.map +1 -1
- package/dist/store/task-transitions.d.ts +19 -0
- package/dist/store/task-transitions.js +46 -0
- package/dist/store/task-transitions.js.map +1 -0
- package/dist/tools/capabilities.js +33 -18
- package/dist/tools/capabilities.js.map +1 -1
- package/dist/tools/command-intent.d.ts +24 -0
- package/dist/tools/command-intent.js +158 -4
- package/dist/tools/command-intent.js.map +1 -1
- package/dist/tools/definitions.d.ts +5 -1
- package/dist/tools/definitions.js +162 -21
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/fs.d.ts +16 -0
- package/dist/tools/fs.js +122 -46
- package/dist/tools/fs.js.map +1 -1
- package/dist/tools/image.js +1 -1
- package/dist/tools/image.js.map +1 -1
- package/dist/tools/jobs.d.ts +78 -4
- package/dist/tools/jobs.js +542 -115
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/net-ping-sweep.d.ts +3 -1
- package/dist/tools/net-ping-sweep.js +64 -26
- package/dist/tools/net-ping-sweep.js.map +1 -1
- package/dist/tools/nmap-runner.js +5 -2
- package/dist/tools/nmap-runner.js.map +1 -1
- package/dist/tools/pdf.js +50 -7
- package/dist/tools/pdf.js.map +1 -1
- package/dist/tools/registry.js +154 -96
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/shell.d.ts +24 -2
- package/dist/tools/shell.js +113 -28
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/tool-types.d.ts +2 -0
- package/dist/tools/validate.d.ts +8 -5
- package/dist/tools/validate.js +177 -7
- package/dist/tools/validate.js.map +1 -1
- package/dist/tools/wordlists.js +69 -17
- package/dist/tools/wordlists.js.map +1 -1
- package/dist/tui/state.d.ts +4 -0
- package/dist/tui/state.js +88 -2
- package/dist/tui/state.js.map +1 -1
- package/dist/tui-v2/actions/keymap.js +3 -8
- package/dist/tui-v2/actions/keymap.js.map +1 -1
- package/dist/tui-v2/app/App.js +56 -5
- package/dist/tui-v2/app/App.js.map +1 -1
- package/dist/tui-v2/app/commands/config-commands.js +5 -2
- package/dist/tui-v2/app/commands/config-commands.js.map +1 -1
- package/dist/tui-v2/app/commands/picker-commands.js +3 -0
- package/dist/tui-v2/app/commands/picker-commands.js.map +1 -1
- package/dist/tui-v2/app/plan-lifecycle.d.ts +1 -1
- package/dist/tui-v2/app/plan-lifecycle.js +2 -1
- package/dist/tui-v2/app/plan-lifecycle.js.map +1 -1
- package/dist/tui-v2/components/composer/composer-input-box.d.ts +1 -1
- package/dist/tui-v2/components/composer/composer-input-box.js +12 -3
- package/dist/tui-v2/components/composer/composer-input-box.js.map +1 -1
- package/dist/tui-v2/components/jobs/jobs-panel.js +19 -6
- package/dist/tui-v2/components/jobs/jobs-panel.js.map +1 -1
- package/dist/tui-v2/components/plan/plan-view.js +9 -6
- package/dist/tui-v2/components/plan/plan-view.js.map +1 -1
- package/dist/tui-v2/components/status/status-line.d.ts +15 -0
- package/dist/tui-v2/components/status/status-line.js +33 -25
- package/dist/tui-v2/components/status/status-line.js.map +1 -1
- package/dist/tui-v2/components/transcript/assistant-message.js +17 -9
- package/dist/tui-v2/components/transcript/assistant-message.js.map +1 -1
- package/dist/tui-v2/components/transcript/compacted-row.js +49 -22
- package/dist/tui-v2/components/transcript/compacted-row.js.map +1 -1
- package/dist/tui-v2/components/transcript/intro-card.js +3 -0
- package/dist/tui-v2/components/transcript/intro-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/thinking-block.js +2 -1
- package/dist/tui-v2/components/transcript/thinking-block.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-view.js +27 -2
- package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
- package/dist/tui-v2/components/transcript/use-transcript-selection.js +57 -6
- package/dist/tui-v2/components/transcript/use-transcript-selection.js.map +1 -1
- package/dist/tui-v2/composer/composer-editor.js +20 -12
- package/dist/tui-v2/composer/composer-editor.js.map +1 -1
- package/dist/tui-v2/rendering/incremental-strip.d.ts +11 -0
- package/dist/tui-v2/rendering/incremental-strip.js +89 -0
- package/dist/tui-v2/rendering/incremental-strip.js.map +1 -0
- package/dist/tui-v2/rendering/plan-view.d.ts +12 -0
- package/dist/tui-v2/rendering/plan-view.js +71 -2
- package/dist/tui-v2/rendering/plan-view.js.map +1 -1
- package/dist/tui-v2/rendering/streaming-markdown.d.ts +25 -0
- package/dist/tui-v2/rendering/streaming-markdown.js +108 -0
- package/dist/tui-v2/rendering/streaming-markdown.js.map +1 -0
- package/dist/tui-v2/rendering/thinking-tail.d.ts +5 -0
- package/dist/tui-v2/rendering/thinking-tail.js +26 -0
- package/dist/tui-v2/rendering/thinking-tail.js.map +1 -0
- package/dist/tui-v2/state/transcript-hydrate.js +6 -2
- package/dist/tui-v2/state/transcript-hydrate.js.map +1 -1
- package/dist/tui-v2/state/transcript-reducer.js +146 -25
- package/dist/tui-v2/state/transcript-reducer.js.map +1 -1
- package/dist/tui-v2/state/transcript-types.d.ts +6 -0
- package/dist/tui-v2/state/transcript-types.js +17 -0
- package/dist/tui-v2/state/transcript-types.js.map +1 -1
- package/dist/types.d.ts +29 -0
- package/dist/types.js.map +1 -1
- package/dist/ui/intro-header.d.ts +1 -0
- package/dist/ui/intro-header.js +10 -13
- package/dist/ui/intro-header.js.map +1 -1
- package/dist/ui/markdown.js +9 -2
- package/dist/ui/markdown.js.map +1 -1
- package/dist/ui/mentions.d.ts +5 -0
- package/dist/ui/mentions.js +66 -7
- package/dist/ui/mentions.js.map +1 -1
- package/dist/ui/thinking.d.ts +5 -1
- package/dist/ui/thinking.js +3 -2
- package/dist/ui/thinking.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +2 -1
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import type { EngagementScope } from "../store/scope.js";
|
|
2
2
|
/** Compact engagement-scope block for pentest turns. */
|
|
3
3
|
export declare function scopeContextMessage(scope: EngagementScope | undefined): string | undefined;
|
|
4
|
+
export declare function outOfScopeToolMessage(input: {
|
|
5
|
+
target: string;
|
|
6
|
+
reason: string;
|
|
7
|
+
allowed?: readonly string[] | undefined;
|
|
8
|
+
}): string;
|
|
@@ -18,7 +18,13 @@ export function scopeContextMessage(scope) {
|
|
|
18
18
|
if (scope.authorizationNote?.trim()) {
|
|
19
19
|
lines.push(`note: ${scope.authorizationNote.trim()}`);
|
|
20
20
|
}
|
|
21
|
-
lines.push("Do not scan or attack hosts outside authorized targets.
|
|
21
|
+
lines.push("Do not scan or attack hosts outside authorized targets. If a tool is refused as OUT_OF_SCOPE, do not stop: explain the boundary briefly and continue with useful in-scope work without retrying the same call.");
|
|
22
22
|
return lines.join("\n");
|
|
23
23
|
}
|
|
24
|
+
export function outOfScopeToolMessage(input) {
|
|
25
|
+
const allowed = input.allowed?.length
|
|
26
|
+
? ` Authorized targets: ${input.allowed.join(", ")}.`
|
|
27
|
+
: "";
|
|
28
|
+
return `OUT_OF_SCOPE: tool call was not run for ${input.target}: ${input.reason}.${allowed} Continue the task using only in-scope targets; do not retry this unchanged call and do not end the agent solely because it was refused.`;
|
|
29
|
+
}
|
|
24
30
|
//# sourceMappingURL=scope-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-context.js","sourceRoot":"","sources":["../../src/agent/scope-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,wDAAwD;AACxD,MAAM,UAAU,mBAAmB,CACjC,KAAkC;IAElC,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,KAAK,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,CAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,IAAI,CACR,
|
|
1
|
+
{"version":3,"file":"scope-context.js","sourceRoot":"","sources":["../../src/agent/scope-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,wDAAwD;AACxD,MAAM,UAAU,mBAAmB,CACjC,KAAkC;IAElC,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,KAAK,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,CAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,IAAI,CACR,gNAAgN,CACjN,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAIrC;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM;QACnC,CAAC,CAAC,wBAAwB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACrD,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,2CAA2C,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,OAAO,0IAA0I,CAAC;AACvO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-policy.js","sourceRoot":"","sources":["../../src/agent/session-policy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-policy.js","sourceRoot":"","sources":["../../src/agent/session-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { loadPlan } from "../store/plan.js";
|
|
1
|
+
import { foregroundRemaining, loadPlan, planProgress, responderOpenTasks, } from "../store/plan.js";
|
|
2
2
|
import { jobManager } from "../tools/jobs.js";
|
|
3
3
|
/**
|
|
4
4
|
* Build a rich summary when the agent stops (user declined to continue or
|
|
@@ -26,20 +26,26 @@ export async function buildRichStopSummary(messages, session, steps) {
|
|
|
26
26
|
: "·";
|
|
27
27
|
parts.push(` ${icon} [${task.id}] (${task.state}) ${task.title}${task.note ? ` — ${task.note}` : ""}`);
|
|
28
28
|
}
|
|
29
|
-
const
|
|
30
|
-
const
|
|
29
|
+
const remaining = foregroundRemaining(plan);
|
|
30
|
+
const inProgress = remaining.find((task) => task.state === "in_progress");
|
|
31
|
+
const next = remaining[0];
|
|
31
32
|
if (inProgress) {
|
|
32
33
|
parts.push(`\nResume open task first: ${inProgress.id} — "${inProgress.title}" (do not skip to later tasks).`);
|
|
33
34
|
}
|
|
34
35
|
else if (next) {
|
|
35
36
|
parts.push(`\nNext task to resume: ${next.id} — "${next.title}"`);
|
|
36
37
|
}
|
|
37
|
-
const
|
|
38
|
-
parts.push(`\nProgress: ${
|
|
38
|
+
const progress = planProgress(plan);
|
|
39
|
+
parts.push(`\nProgress: ${progress.done}/${progress.total} tasks done.`);
|
|
40
|
+
const openChildren = responderOpenTasks(plan);
|
|
41
|
+
if (openChildren.length > 0) {
|
|
42
|
+
parts.push(`\nResponder subtasks still open (they advance on their own): ` +
|
|
43
|
+
openChildren.map((task) => `[${task.id}] ${task.title}`).join(", "));
|
|
44
|
+
}
|
|
39
45
|
}
|
|
40
46
|
// Prefer session-scoped durable jobs only (never ephemeral tool-track rows).
|
|
41
|
-
const running = jobManager.getRunningJobs();
|
|
42
|
-
const recent = jobManager.getRecentJobs(8);
|
|
47
|
+
const running = jobManager.getRunningJobs(session.sessionId);
|
|
48
|
+
const recent = jobManager.getRecentJobs(8, session.sessionId);
|
|
43
49
|
if (running.length > 0 || recent.length > 0) {
|
|
44
50
|
parts.push("\n## Background Jobs");
|
|
45
51
|
for (const job of running.slice(0, 8)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-summary.js","sourceRoot":"","sources":["../../src/agent/stop-summary.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"stop-summary.js","sourceRoot":"","sources":["../../src/agent/stop-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Robust recovery for provider stream/complete failures.
|
|
3
|
+
*
|
|
4
|
+
* Goal: the agent should try *working approaches* before it gives up on a
|
|
5
|
+
* turn. A single flaky free-tier model (empty admissions, connection glitches,
|
|
6
|
+
* capacity 5xx, rate limits) must not kill the turn on the first error. Instead
|
|
7
|
+
* we classify the failure and pick a bounded, escalating strategy — back off,
|
|
8
|
+
* compact the context, drop thinking, or let the router fall back to another
|
|
9
|
+
* provider/model — and only surrender in the worst case (every approach for
|
|
10
|
+
* that failure class exhausted, or the overall recovery budget spent).
|
|
11
|
+
*
|
|
12
|
+
* These helpers are pure so the escalation ladder and the "give up only in the
|
|
13
|
+
* worst case" guarantee are unit-testable without a live provider.
|
|
14
|
+
*/
|
|
15
|
+
export type StreamFailureKind = "aborted" | "empty" | "context-overflow" | "rate-limit" | "server" | "network" | "auth" | "not-found" | "unknown";
|
|
16
|
+
export interface StreamRecoveryState {
|
|
17
|
+
empty: number;
|
|
18
|
+
rateLimit: number;
|
|
19
|
+
server: number;
|
|
20
|
+
network: number;
|
|
21
|
+
context: number;
|
|
22
|
+
/** auth / not-found / unknown share one "structural" bucket. */
|
|
23
|
+
structural: number;
|
|
24
|
+
total: number;
|
|
25
|
+
}
|
|
26
|
+
export interface StreamRecoveryLimits {
|
|
27
|
+
readonly maxEmpty: number;
|
|
28
|
+
readonly maxRateLimit: number;
|
|
29
|
+
readonly maxServer: number;
|
|
30
|
+
readonly maxNetwork: number;
|
|
31
|
+
readonly maxContext: number;
|
|
32
|
+
readonly maxStructural: number;
|
|
33
|
+
/** Hard cap across every failure class so a turn can never loop forever. */
|
|
34
|
+
readonly maxTotal: number;
|
|
35
|
+
/** Upper bound on any single backoff so the total wait budget stays sane. */
|
|
36
|
+
readonly maxDelayMs: number;
|
|
37
|
+
}
|
|
38
|
+
export declare const DEFAULT_STREAM_RECOVERY_LIMITS: StreamRecoveryLimits;
|
|
39
|
+
export interface StreamRecoveryPlan {
|
|
40
|
+
/** retry = try again with the strategy below; give-up = rethrow (worst case). */
|
|
41
|
+
readonly action: "retry" | "give-up";
|
|
42
|
+
readonly kind: StreamFailureKind;
|
|
43
|
+
/** Backoff before the retry (0 = immediate). */
|
|
44
|
+
readonly delayMs: number;
|
|
45
|
+
/** Force a compaction pass before retrying (context pressure / empty tail). */
|
|
46
|
+
readonly forceCompact: boolean;
|
|
47
|
+
/** Retry with thinking disabled (thinking-only / reasoning-heavy stalls). */
|
|
48
|
+
readonly disableThinking: boolean;
|
|
49
|
+
/** Let the router fall back to another provider/model on the retry. */
|
|
50
|
+
readonly allowModelFallback: boolean;
|
|
51
|
+
/** Optional trailing user nudge (empty-admission recovery). */
|
|
52
|
+
readonly nudge?: string | undefined;
|
|
53
|
+
/** Human-facing one-liner; only set on the FIRST retry of a class (low noise). */
|
|
54
|
+
readonly notice?: string | undefined;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Map a raw stream/complete failure to a recovery class.
|
|
58
|
+
*
|
|
59
|
+
* Works on both raw {@link ProviderError}s and the router's wrapped
|
|
60
|
+
* "No provider could stream the request. — <provider>: <body>" strings, so it
|
|
61
|
+
* behaves the same whether the failure bubbles from a single provider or the
|
|
62
|
+
* whole fallback chain. When several providers failed for different reasons the
|
|
63
|
+
* most *actionable* class wins (compact > back off > nudge).
|
|
64
|
+
*/
|
|
65
|
+
export declare function classifyStreamFailure(error: unknown): StreamFailureKind;
|
|
66
|
+
export declare function createStreamRecoveryState(): StreamRecoveryState;
|
|
67
|
+
export declare function resetStreamRecoveryState(state: StreamRecoveryState): void;
|
|
68
|
+
/** Record that one recovery attempt for `kind` was taken. Mutates `state`. */
|
|
69
|
+
export declare function recordRecoveryAttempt(state: StreamRecoveryState, kind: StreamFailureKind): void;
|
|
70
|
+
/**
|
|
71
|
+
* Decide the next recovery action for a stream failure.
|
|
72
|
+
*
|
|
73
|
+
* `state` holds the attempts already made for each class *this failure episode*
|
|
74
|
+
* (reset on any successful stream). The planner never mutates it — the caller
|
|
75
|
+
* records the attempt via {@link recordRecoveryAttempt} once it commits to the
|
|
76
|
+
* retry — so the plan stays a pure function of (error, state, limits).
|
|
77
|
+
*/
|
|
78
|
+
export declare function planStreamRecovery(input: {
|
|
79
|
+
error?: unknown;
|
|
80
|
+
kind?: StreamFailureKind;
|
|
81
|
+
state: StreamRecoveryState;
|
|
82
|
+
limits?: StreamRecoveryLimits;
|
|
83
|
+
}): StreamRecoveryPlan;
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Robust recovery for provider stream/complete failures.
|
|
3
|
+
*
|
|
4
|
+
* Goal: the agent should try *working approaches* before it gives up on a
|
|
5
|
+
* turn. A single flaky free-tier model (empty admissions, connection glitches,
|
|
6
|
+
* capacity 5xx, rate limits) must not kill the turn on the first error. Instead
|
|
7
|
+
* we classify the failure and pick a bounded, escalating strategy — back off,
|
|
8
|
+
* compact the context, drop thinking, or let the router fall back to another
|
|
9
|
+
* provider/model — and only surrender in the worst case (every approach for
|
|
10
|
+
* that failure class exhausted, or the overall recovery budget spent).
|
|
11
|
+
*
|
|
12
|
+
* These helpers are pure so the escalation ladder and the "give up only in the
|
|
13
|
+
* worst case" guarantee are unit-testable without a live provider.
|
|
14
|
+
*/
|
|
15
|
+
import { ProviderError } from "../llm/http.js";
|
|
16
|
+
import { isEmptyCompletionError } from "../llm/router.js";
|
|
17
|
+
export const DEFAULT_STREAM_RECOVERY_LIMITS = {
|
|
18
|
+
maxEmpty: 4,
|
|
19
|
+
maxRateLimit: 3,
|
|
20
|
+
maxServer: 3,
|
|
21
|
+
maxNetwork: 3,
|
|
22
|
+
maxContext: 2,
|
|
23
|
+
maxStructural: 1,
|
|
24
|
+
maxTotal: 10,
|
|
25
|
+
maxDelayMs: 30_000,
|
|
26
|
+
};
|
|
27
|
+
const EMPTY_NUDGE = "Your previous response was empty. Continue the task now: emit your next tool call, " +
|
|
28
|
+
"or give your final answer if every required step is already complete and verified. " +
|
|
29
|
+
"Do not reply with an empty message.";
|
|
30
|
+
function errorStatus(error) {
|
|
31
|
+
if (error instanceof ProviderError)
|
|
32
|
+
return error.status ?? 0;
|
|
33
|
+
if (error && typeof error === "object" && "status" in error) {
|
|
34
|
+
const s = error.status;
|
|
35
|
+
return typeof s === "number" ? s : 0;
|
|
36
|
+
}
|
|
37
|
+
return 0;
|
|
38
|
+
}
|
|
39
|
+
function errorText(error) {
|
|
40
|
+
return (error instanceof Error ? error.message : String(error ?? ""))
|
|
41
|
+
.toLowerCase();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Map a raw stream/complete failure to a recovery class.
|
|
45
|
+
*
|
|
46
|
+
* Works on both raw {@link ProviderError}s and the router's wrapped
|
|
47
|
+
* "No provider could stream the request. — <provider>: <body>" strings, so it
|
|
48
|
+
* behaves the same whether the failure bubbles from a single provider or the
|
|
49
|
+
* whole fallback chain. When several providers failed for different reasons the
|
|
50
|
+
* most *actionable* class wins (compact > back off > nudge).
|
|
51
|
+
*/
|
|
52
|
+
export function classifyStreamFailure(error) {
|
|
53
|
+
const status = errorStatus(error);
|
|
54
|
+
const msg = errorText(error);
|
|
55
|
+
if (/\babort(ed)?\b|operation was aborted|the operation was cancelled/.test(msg)) {
|
|
56
|
+
return "aborted";
|
|
57
|
+
}
|
|
58
|
+
// Context pressure is always safe to act on (compaction), so it wins first.
|
|
59
|
+
if (status === 413 ||
|
|
60
|
+
/\b413\b|input limit|context length|context window|maximum context|too large|reduce the length|exceeded the provider input|prompt is too long|token limit/.test(msg)) {
|
|
61
|
+
return "context-overflow";
|
|
62
|
+
}
|
|
63
|
+
if (status === 429 ||
|
|
64
|
+
/\b429\b|rate limit|rate-limited|too many requests|retry after|quota exceeded/.test(msg)) {
|
|
65
|
+
return "rate-limit";
|
|
66
|
+
}
|
|
67
|
+
if ((status >= 500 && status <= 599) ||
|
|
68
|
+
/\b50[0-4]\b|upstream provider (unavailable|error)|server error \(5|bad gateway|service unavailable|gateway timeout|overloaded/.test(msg)) {
|
|
69
|
+
return "server";
|
|
70
|
+
}
|
|
71
|
+
if (/connection glitch|socket connection was closed|econnreset|etimedout|econnrefused|enotfound|fetch failed|network error|premature close|stream stalled|unexpected end of file|request timed out|connection dropped|timed out before any response/.test(msg)) {
|
|
72
|
+
return "network";
|
|
73
|
+
}
|
|
74
|
+
// Empty admission (no visible text, no tool calls). Cheap to retry / nudge.
|
|
75
|
+
if (isEmptyCompletionError(error))
|
|
76
|
+
return "empty";
|
|
77
|
+
if (status === 401 ||
|
|
78
|
+
status === 403 ||
|
|
79
|
+
/\b401\b|\b403\b|unauthorized|authentication\/authorization failed|invalid api key|forbidden/.test(msg)) {
|
|
80
|
+
return "auth";
|
|
81
|
+
}
|
|
82
|
+
if (status === 404 ||
|
|
83
|
+
status === 422 ||
|
|
84
|
+
/\b404\b|\b422\b|not found|rejected the request body/.test(msg)) {
|
|
85
|
+
return "not-found";
|
|
86
|
+
}
|
|
87
|
+
return "unknown";
|
|
88
|
+
}
|
|
89
|
+
export function createStreamRecoveryState() {
|
|
90
|
+
return {
|
|
91
|
+
empty: 0,
|
|
92
|
+
rateLimit: 0,
|
|
93
|
+
server: 0,
|
|
94
|
+
network: 0,
|
|
95
|
+
context: 0,
|
|
96
|
+
structural: 0,
|
|
97
|
+
total: 0,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export function resetStreamRecoveryState(state) {
|
|
101
|
+
state.empty = 0;
|
|
102
|
+
state.rateLimit = 0;
|
|
103
|
+
state.server = 0;
|
|
104
|
+
state.network = 0;
|
|
105
|
+
state.context = 0;
|
|
106
|
+
state.structural = 0;
|
|
107
|
+
state.total = 0;
|
|
108
|
+
}
|
|
109
|
+
/** Record that one recovery attempt for `kind` was taken. Mutates `state`. */
|
|
110
|
+
export function recordRecoveryAttempt(state, kind) {
|
|
111
|
+
state.total += 1;
|
|
112
|
+
switch (kind) {
|
|
113
|
+
case "empty":
|
|
114
|
+
state.empty += 1;
|
|
115
|
+
break;
|
|
116
|
+
case "rate-limit":
|
|
117
|
+
state.rateLimit += 1;
|
|
118
|
+
break;
|
|
119
|
+
case "server":
|
|
120
|
+
state.server += 1;
|
|
121
|
+
break;
|
|
122
|
+
case "network":
|
|
123
|
+
state.network += 1;
|
|
124
|
+
break;
|
|
125
|
+
case "context-overflow":
|
|
126
|
+
state.context += 1;
|
|
127
|
+
break;
|
|
128
|
+
default:
|
|
129
|
+
state.structural += 1;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function pick(delays, attempt, max) {
|
|
134
|
+
return Math.min(delays[attempt] ?? delays[delays.length - 1] ?? 0, max);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Decide the next recovery action for a stream failure.
|
|
138
|
+
*
|
|
139
|
+
* `state` holds the attempts already made for each class *this failure episode*
|
|
140
|
+
* (reset on any successful stream). The planner never mutates it — the caller
|
|
141
|
+
* records the attempt via {@link recordRecoveryAttempt} once it commits to the
|
|
142
|
+
* retry — so the plan stays a pure function of (error, state, limits).
|
|
143
|
+
*/
|
|
144
|
+
export function planStreamRecovery(input) {
|
|
145
|
+
const limits = input.limits ?? DEFAULT_STREAM_RECOVERY_LIMITS;
|
|
146
|
+
const kind = input.kind ?? classifyStreamFailure(input.error);
|
|
147
|
+
const { state } = input;
|
|
148
|
+
const giveUp = {
|
|
149
|
+
action: "give-up",
|
|
150
|
+
kind,
|
|
151
|
+
delayMs: 0,
|
|
152
|
+
forceCompact: false,
|
|
153
|
+
disableThinking: false,
|
|
154
|
+
allowModelFallback: false,
|
|
155
|
+
};
|
|
156
|
+
// User cancelled, or we have spent the whole recovery budget: stop now.
|
|
157
|
+
if (kind === "aborted")
|
|
158
|
+
return giveUp;
|
|
159
|
+
if (state.total >= limits.maxTotal)
|
|
160
|
+
return giveUp;
|
|
161
|
+
const cap = limits.maxDelayMs;
|
|
162
|
+
switch (kind) {
|
|
163
|
+
case "empty": {
|
|
164
|
+
const n = state.empty;
|
|
165
|
+
if (n >= limits.maxEmpty)
|
|
166
|
+
return giveUp;
|
|
167
|
+
return {
|
|
168
|
+
action: "retry",
|
|
169
|
+
kind,
|
|
170
|
+
delayMs: pick([500, 1000, 1500, 2000], n, cap),
|
|
171
|
+
// Escalate: nudge → drop thinking → compact + try another provider.
|
|
172
|
+
disableThinking: n >= 1,
|
|
173
|
+
forceCompact: n >= 2,
|
|
174
|
+
allowModelFallback: n >= 2,
|
|
175
|
+
nudge: EMPTY_NUDGE,
|
|
176
|
+
notice: n === 0
|
|
177
|
+
? "model returned an empty response — retrying with a nudge"
|
|
178
|
+
: undefined,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
case "rate-limit": {
|
|
182
|
+
const n = state.rateLimit;
|
|
183
|
+
if (n >= limits.maxRateLimit)
|
|
184
|
+
return giveUp;
|
|
185
|
+
const delayMs = pick([8_000, 20_000, 30_000], n, cap);
|
|
186
|
+
return {
|
|
187
|
+
action: "retry",
|
|
188
|
+
kind,
|
|
189
|
+
delayMs,
|
|
190
|
+
forceCompact: false,
|
|
191
|
+
disableThinking: false,
|
|
192
|
+
allowModelFallback: true,
|
|
193
|
+
notice: n === 0
|
|
194
|
+
? `provider rate limited — backing off ${Math.ceil(delayMs / 1000)}s and trying alternates`
|
|
195
|
+
: undefined,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
case "server": {
|
|
199
|
+
const n = state.server;
|
|
200
|
+
if (n >= limits.maxServer)
|
|
201
|
+
return giveUp;
|
|
202
|
+
return {
|
|
203
|
+
action: "retry",
|
|
204
|
+
kind,
|
|
205
|
+
delayMs: pick([3_000, 8_000, 15_000], n, cap),
|
|
206
|
+
forceCompact: false,
|
|
207
|
+
disableThinking: false,
|
|
208
|
+
allowModelFallback: true,
|
|
209
|
+
notice: n === 0
|
|
210
|
+
? "upstream provider error — backing off and trying alternates"
|
|
211
|
+
: undefined,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
case "network": {
|
|
215
|
+
const n = state.network;
|
|
216
|
+
if (n >= limits.maxNetwork)
|
|
217
|
+
return giveUp;
|
|
218
|
+
return {
|
|
219
|
+
action: "retry",
|
|
220
|
+
kind,
|
|
221
|
+
delayMs: pick([2_000, 5_000, 10_000], n, cap),
|
|
222
|
+
forceCompact: false,
|
|
223
|
+
disableThinking: false,
|
|
224
|
+
// If the same route keeps dropping, let the router try another one.
|
|
225
|
+
allowModelFallback: n >= 1,
|
|
226
|
+
notice: n === 0 ? "connection dropped — retrying" : undefined,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
case "context-overflow": {
|
|
230
|
+
const n = state.context;
|
|
231
|
+
if (n >= limits.maxContext)
|
|
232
|
+
return giveUp;
|
|
233
|
+
return {
|
|
234
|
+
action: "retry",
|
|
235
|
+
kind,
|
|
236
|
+
delayMs: pick([500, 500], n, cap),
|
|
237
|
+
forceCompact: true,
|
|
238
|
+
disableThinking: false,
|
|
239
|
+
allowModelFallback: n >= 1,
|
|
240
|
+
notice: n === 0
|
|
241
|
+
? "request exceeded the context window — compacting and retrying"
|
|
242
|
+
: undefined,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
case "auth":
|
|
246
|
+
case "not-found":
|
|
247
|
+
default: {
|
|
248
|
+
// Retrying the same provider/model will not help; give the router one
|
|
249
|
+
// shot at alternate providers/models, then surrender.
|
|
250
|
+
const n = state.structural;
|
|
251
|
+
if (n >= limits.maxStructural)
|
|
252
|
+
return giveUp;
|
|
253
|
+
const notice = kind === "auth"
|
|
254
|
+
? "provider auth failed — trying alternate providers"
|
|
255
|
+
: kind === "not-found"
|
|
256
|
+
? "model/endpoint unavailable — trying alternate providers"
|
|
257
|
+
: "provider request failed — retrying once with alternates";
|
|
258
|
+
return {
|
|
259
|
+
action: "retry",
|
|
260
|
+
kind,
|
|
261
|
+
delayMs: Math.min(kind === "unknown" ? 2_000 : 1_000, cap),
|
|
262
|
+
forceCompact: false,
|
|
263
|
+
disableThinking: false,
|
|
264
|
+
allowModelFallback: true,
|
|
265
|
+
notice,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=stream-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-recovery.js","sourceRoot":"","sources":["../../src/agent/stream-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,9 +14,13 @@ const FS_RE = /\b(?:read|write|edit|file|directory|folder|path|rename|delete|lis
|
|
|
14
14
|
*/
|
|
15
15
|
export function isNarrowExplicitNmapOperation(prompt) {
|
|
16
16
|
const text = prompt.replace(/\s+/g, " ").trim();
|
|
17
|
-
|
|
17
|
+
const hasNmap = /\bnmap\b/i.test(text);
|
|
18
|
+
const openPortIntent = /\b(?:find|check|scan|identify|show|list|discover)\b[\s\S]{0,32}\bopen\s+ports?\b/i.test(text) ||
|
|
19
|
+
/\b(?:which|what)\s+ports?\s+(?:are\s+)?open\b/i.test(text);
|
|
20
|
+
if (!hasNmap && !openPortIntent)
|
|
18
21
|
return false;
|
|
19
|
-
const explicitRun =
|
|
22
|
+
const explicitRun = openPortIntent ||
|
|
23
|
+
/^(?:sudo\s+)?nmap(?:\s|$)/i.test(text) ||
|
|
20
24
|
/\b(?:run|execute|start|perform)\b[\s\S]{0,40}\bnmap\b/i.test(text) ||
|
|
21
25
|
/\bnmap\b[\s\S]{0,20}\bscan\b/i.test(text) ||
|
|
22
26
|
/\bscan\b[\s\S]{0,40}\bwith\s+nmap\b/i.test(text);
|
|
@@ -235,7 +239,7 @@ export function analyzeTask(prompt) {
|
|
|
235
239
|
needsNetworkContext: false,
|
|
236
240
|
needsToolPreflight: true,
|
|
237
241
|
likelyTools: ["net.scan"],
|
|
238
|
-
stopWhen: "The requested
|
|
242
|
+
stopWhen: "The requested port scan has started or completed and its canonical job ID, status, and output are reported; do not broaden scope.",
|
|
239
243
|
suggestedSteps: [],
|
|
240
244
|
};
|
|
241
245
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-analyzer.js","sourceRoot":"","sources":["../../src/agent/task-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAgBhD,MAAM,UAAU,GACd,mVAAmV,CAAC;AAEtV,MAAM,QAAQ,GACZ,oFAAoF,CAAC;AAEvF,MAAM,MAAM,GACV,+FAA+F,CAAC;AAElG,MAAM,MAAM,GACV,6GAA6G,CAAC;AAEhH,MAAM,WAAW,GACf,yHAAyH,CAAC;AAE5H,MAAM,UAAU,GACd,gHAAgH,CAAC;AAEnH,MAAM,QAAQ,GACZ,uGAAuG,CAAC;AAE1G,MAAM,KAAK,GACT,yFAAyF,CAAC;AAE5F;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAc;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"task-analyzer.js","sourceRoot":"","sources":["../../src/agent/task-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ export function taskEvidenceFromLedger(ledger) {
|
|
|
17
17
|
export function isMetaPlanTool(name) {
|
|
18
18
|
return (name === "plan.create" ||
|
|
19
19
|
name === "task.move" ||
|
|
20
|
+
name === "job.read" ||
|
|
20
21
|
name === "task.read" ||
|
|
21
22
|
name === "task.update" ||
|
|
22
23
|
name === "agent.handoff");
|
|
@@ -445,6 +446,7 @@ export function isReadOnlyReconTool(name) {
|
|
|
445
446
|
export function isBatchSoftFailTool(name) {
|
|
446
447
|
if (name === "plan.create" ||
|
|
447
448
|
name === "task.move" ||
|
|
449
|
+
name === "job.read" ||
|
|
448
450
|
name === "task.read" ||
|
|
449
451
|
name === "task.update")
|
|
450
452
|
return true;
|