@pentoshi/clai 3.9.2 → 3.9.4
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 +15 -2
- package/dist/agent/runner.js +766 -213
- 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/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-interactive-sessions-adapter.d.ts +4 -0
- package/dist/app/adapters/current-interactive-sessions-adapter.js +11 -0
- package/dist/app/adapters/current-interactive-sessions-adapter.js.map +1 -0
- 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/cancel-all-result.d.ts +8 -0
- package/dist/app/controllers/cancel-all-result.js +32 -0
- package/dist/app/controllers/cancel-all-result.js.map +1 -0
- 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 +25 -17
- package/dist/app/controllers/session-controller.js +142 -128
- 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/interactive-sessions-port.d.ts +21 -0
- package/dist/app/ports/interactive-sessions-port.js +9 -0
- package/dist/app/ports/interactive-sessions-port.js.map +1 -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/index.js +21 -8
- package/dist/index.js.map +1 -1
- package/dist/interactive-session/artifact-writer.d.ts +54 -0
- package/dist/interactive-session/artifact-writer.js +161 -0
- package/dist/interactive-session/artifact-writer.js.map +1 -0
- package/dist/interactive-session/cleanup.d.ts +36 -0
- package/dist/interactive-session/cleanup.js +157 -0
- package/dist/interactive-session/cleanup.js.map +1 -0
- package/dist/interactive-session/config.d.ts +118 -0
- package/dist/interactive-session/config.js +141 -0
- package/dist/interactive-session/config.js.map +1 -0
- package/dist/interactive-session/input-policy.d.ts +41 -0
- package/dist/interactive-session/input-policy.js +163 -0
- package/dist/interactive-session/input-policy.js.map +1 -0
- package/dist/interactive-session/manager.d.ts +107 -0
- package/dist/interactive-session/manager.js +927 -0
- package/dist/interactive-session/manager.js.map +1 -0
- package/dist/interactive-session/output-store.d.ts +81 -0
- package/dist/interactive-session/output-store.js +239 -0
- package/dist/interactive-session/output-store.js.map +1 -0
- package/dist/interactive-session/output-view.d.ts +20 -0
- package/dist/interactive-session/output-view.js +142 -0
- package/dist/interactive-session/output-view.js.map +1 -0
- package/dist/interactive-session/recovery-journal.d.ts +55 -0
- package/dist/interactive-session/recovery-journal.js +115 -0
- package/dist/interactive-session/recovery-journal.js.map +1 -0
- package/dist/interactive-session/registry.d.ts +59 -0
- package/dist/interactive-session/registry.js +170 -0
- package/dist/interactive-session/registry.js.map +1 -0
- package/dist/interactive-session/runtime.d.ts +107 -0
- package/dist/interactive-session/runtime.js +191 -0
- package/dist/interactive-session/runtime.js.map +1 -0
- package/dist/interactive-session/session-runtime.d.ts +50 -0
- package/dist/interactive-session/session-runtime.js +63 -0
- package/dist/interactive-session/session-runtime.js.map +1 -0
- package/dist/interactive-session/streaming-redactor.d.ts +53 -0
- package/dist/interactive-session/streaming-redactor.js +263 -0
- package/dist/interactive-session/streaming-redactor.js.map +1 -0
- package/dist/interactive-session/telemetry.d.ts +30 -0
- package/dist/interactive-session/telemetry.js +47 -0
- package/dist/interactive-session/telemetry.js.map +1 -0
- package/dist/interactive-session/transport-factory.d.ts +8 -0
- package/dist/interactive-session/transport-factory.js +16 -0
- package/dist/interactive-session/transport-factory.js.map +1 -0
- package/dist/interactive-session/transport-node-pty.d.ts +49 -0
- package/dist/interactive-session/transport-node-pty.js +219 -0
- package/dist/interactive-session/transport-node-pty.js.map +1 -0
- package/dist/interactive-session/transport-pipe.d.ts +9 -0
- package/dist/interactive-session/transport-pipe.js +215 -0
- package/dist/interactive-session/transport-pipe.js.map +1 -0
- package/dist/interactive-session/transport.d.ts +104 -0
- package/dist/interactive-session/transport.js +89 -0
- package/dist/interactive-session/transport.js.map +1 -0
- package/dist/interactive-session/types.d.ts +254 -0
- package/dist/interactive-session/types.js +191 -0
- package/dist/interactive-session/types.js.map +1 -0
- 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-identity.d.ts +46 -0
- package/dist/os/process-identity.js +147 -0
- package/dist/os/process-identity.js.map +1 -0
- 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 +71 -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 +257 -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/interactive-session-tools.d.ts +11 -0
- package/dist/tools/interactive-session-tools.js +261 -0
- package/dist/tools/interactive-session-tools.js.map +1 -0
- package/dist/tools/jobs.d.ts +78 -4
- package/dist/tools/jobs.js +486 -127
- 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 +158 -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 +52 -4
- 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/bootstrap/composition-root.d.ts +3 -0
- package/dist/tui-v2/bootstrap/composition-root.js +3 -0
- package/dist/tui-v2/bootstrap/composition-root.js.map +1 -1
- package/dist/tui-v2/bootstrap/start-tui-v2.js +10 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.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 +12 -6
- 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 +34 -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nmap-runner.js","sourceRoot":"","sources":["../../src/tools/nmap-runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"nmap-runner.js","sourceRoot":"","sources":["../../src/tools/nmap-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/pdf.js
CHANGED
|
@@ -72,6 +72,37 @@ export async function pdfRead(args, options = {}) {
|
|
|
72
72
|
exitCode: 1,
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
|
+
const psmRaw = optionalNumber(args, "psm") ?? 6;
|
|
76
|
+
const psm = Math.floor(psmRaw);
|
|
77
|
+
if (!Number.isFinite(psmRaw) || psm < 0 || psm > 13) {
|
|
78
|
+
return {
|
|
79
|
+
ok: false,
|
|
80
|
+
output: "pdf.read: psm must be an integer from 0 to 13",
|
|
81
|
+
exitCode: 1,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const maxPagesRaw = optionalNumber(args, "maxPages");
|
|
85
|
+
let maxPages;
|
|
86
|
+
if (maxPagesRaw !== undefined) {
|
|
87
|
+
maxPages = Math.floor(maxPagesRaw);
|
|
88
|
+
if (!Number.isFinite(maxPagesRaw) || maxPages < 1 || maxPages > 500) {
|
|
89
|
+
return {
|
|
90
|
+
ok: false,
|
|
91
|
+
output: "pdf.read: maxPages must be an integer from 1 to 500",
|
|
92
|
+
exitCode: 1,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// The per-call budget bounds the whole operation, including OCR of every
|
|
97
|
+
// rendered page, so the model can actually cap a scanned-PDF read.
|
|
98
|
+
const totalTimeoutMs = optionalNumber(args, "timeoutMs");
|
|
99
|
+
const deadline = totalTimeoutMs !== undefined ? Date.now() + totalTimeoutMs : undefined;
|
|
100
|
+
const remainingMs = (fallback) => {
|
|
101
|
+
if (deadline === undefined)
|
|
102
|
+
return fallback;
|
|
103
|
+
return Math.max(1_000, Math.min(fallback, deadline - Date.now()));
|
|
104
|
+
};
|
|
105
|
+
const outOfTime = () => deadline !== undefined && Date.now() >= deadline;
|
|
75
106
|
const path = resolve(expandHome(rawPath));
|
|
76
107
|
try {
|
|
77
108
|
const info = await stat(path);
|
|
@@ -96,7 +127,7 @@ export async function pdfRead(args, options = {}) {
|
|
|
96
127
|
const direct = await spawnArgv({
|
|
97
128
|
command: "pdftotext",
|
|
98
129
|
argv: ["-layout", path, "-"],
|
|
99
|
-
timeoutMs: 120_000,
|
|
130
|
+
timeoutMs: remainingMs(120_000),
|
|
100
131
|
signal: options.signal,
|
|
101
132
|
onOutput: options.onOutput,
|
|
102
133
|
noArtifact: true,
|
|
@@ -139,7 +170,7 @@ export async function pdfRead(args, options = {}) {
|
|
|
139
170
|
const render = await spawnArgv({
|
|
140
171
|
command: "pdftoppm",
|
|
141
172
|
argv: ["-png", "-r", String(dpi), path, prefix],
|
|
142
|
-
timeoutMs: 300_000,
|
|
173
|
+
timeoutMs: remainingMs(300_000),
|
|
143
174
|
signal: options.signal,
|
|
144
175
|
onOutput: options.onOutput,
|
|
145
176
|
noArtifact: true,
|
|
@@ -151,27 +182,35 @@ export async function pdfRead(args, options = {}) {
|
|
|
151
182
|
exitCode: render.exitCode ?? 1,
|
|
152
183
|
};
|
|
153
184
|
}
|
|
154
|
-
const
|
|
185
|
+
const allEntries = (await readdir(workDir))
|
|
155
186
|
.filter((name) => name.toLowerCase().endsWith(".png"))
|
|
156
187
|
.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
|
|
157
|
-
if (
|
|
188
|
+
if (allEntries.length === 0) {
|
|
158
189
|
return {
|
|
159
190
|
ok: false,
|
|
160
191
|
output: "pdf.read: no pages were rendered from the PDF — it may be empty or corrupt.",
|
|
161
192
|
exitCode: 1,
|
|
162
193
|
};
|
|
163
194
|
}
|
|
195
|
+
// maxPages is advertised in the schema and must actually bound the work:
|
|
196
|
+
// OCR costs up to 120s per page, so a 100-page scan is hours otherwise.
|
|
197
|
+
const entries = maxPages !== undefined ? allEntries.slice(0, maxPages) : allEntries;
|
|
198
|
+
const skippedPages = allEntries.length - entries.length;
|
|
164
199
|
const pageTexts = [];
|
|
165
200
|
for (let i = 0; i < entries.length; i += 1) {
|
|
166
201
|
if (options.signal?.aborted) {
|
|
167
202
|
return { ok: false, output: "pdf.read aborted.", exitCode: 130 };
|
|
168
203
|
}
|
|
204
|
+
if (outOfTime()) {
|
|
205
|
+
pageTexts.push(`----- page ${i + 1} -----\n(skipped: timeoutMs budget exhausted after ${i} page(s); raise timeoutMs or lower maxPages)`);
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
169
208
|
const imagePath = join(workDir, entries[i]);
|
|
170
209
|
options.onOutput?.(` OCR page ${i + 1}/${entries.length}…\n`, "stdout");
|
|
171
210
|
const ocr = await spawnArgv({
|
|
172
211
|
command: "tesseract",
|
|
173
|
-
argv: [imagePath, "stdout", "-l", lang, "--psm",
|
|
174
|
-
timeoutMs: 120_000,
|
|
212
|
+
argv: [imagePath, "stdout", "-l", lang, "--psm", String(psm)],
|
|
213
|
+
timeoutMs: remainingMs(120_000),
|
|
175
214
|
signal: options.signal,
|
|
176
215
|
noArtifact: true,
|
|
177
216
|
maxModelBytes: 200_000,
|
|
@@ -190,7 +229,11 @@ export async function pdfRead(args, options = {}) {
|
|
|
190
229
|
}
|
|
191
230
|
return {
|
|
192
231
|
ok: true,
|
|
193
|
-
output: `[scanned PDF — text recovered via OCR of ${entries.length} page(s)
|
|
232
|
+
output: `[scanned PDF — text recovered via OCR of ${entries.length} page(s)` +
|
|
233
|
+
(skippedPages > 0
|
|
234
|
+
? `; ${skippedPages} further page(s) skipped by maxPages=${maxPages}`
|
|
235
|
+
: "") +
|
|
236
|
+
`]\n\n${combined}`,
|
|
194
237
|
};
|
|
195
238
|
}
|
|
196
239
|
finally {
|
package/dist/tools/pdf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/tools/pdf.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/tools/pdf.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/registry.js
CHANGED
|
@@ -3,6 +3,7 @@ import { detectPackageManager, assertSafePackageName, commandAvailable, } from "
|
|
|
3
3
|
import { safeCwd } from "../os/cwd.js";
|
|
4
4
|
import { fsEdit, fsDelete, fsList, fsRead, fsSearch, fsWrite, fsWriteMany, fsReplaceLines, fsAppend, } from "./fs.js";
|
|
5
5
|
import { httpFetch } from "./http.js";
|
|
6
|
+
import { createInteractiveSessionHandlers, INTERACTIVE_SESSION_TOOL_NAMES, } from "./interactive-session-tools.js";
|
|
6
7
|
import { shellExec, spawnArgv } from "./shell.js";
|
|
7
8
|
import { isLongQuietInstallOrScaffoldCommand, } from "../agent/task-evidence.js";
|
|
8
9
|
import { imageOcr } from "./image.js";
|
|
@@ -12,13 +13,13 @@ import { webSearch } from "./web/search.js";
|
|
|
12
13
|
import { RESPONSE_MODES, SEARCH_TIMEOUT_MS, } from "./web/types.js";
|
|
13
14
|
import { classifyToolCall } from "../safety/classifier.js";
|
|
14
15
|
import { loadScope } from "../store/scope.js";
|
|
15
|
-
import { parseHost, parsePortSpec, parseLegacyFlags, profileToNmapArgs, nmapScanNeedsPrivilege, } from "./validate.js";
|
|
16
|
+
import { parseHost, parsePortSpec, parseLegacyFlags, normalizeScanProfile, profileToNmapArgs, nmapScanNeedsPrivilege, toConnectScanArgv, withNmapSkipDiscovery, } from "./validate.js";
|
|
16
17
|
import { getNetworkContext } from "./network-context.js";
|
|
17
18
|
import { pingSweep } from "./net-ping-sweep.js";
|
|
18
19
|
import { toolCheckHandler } from "./capabilities.js";
|
|
19
20
|
import { wordlistFind } from "./wordlists.js";
|
|
20
|
-
import { jobManager } from "./jobs.js";
|
|
21
|
-
import {
|
|
21
|
+
import { jobManager, } from "./jobs.js";
|
|
22
|
+
import { resolveShellExecBackgroundPolicy } from "./command-intent.js";
|
|
22
23
|
import { packageBinaryName } from "./package-binary.js";
|
|
23
24
|
import { resolveNmapTimeoutPolicy, runNmapScan } from "./nmap-runner.js";
|
|
24
25
|
import { compareAuthorizationContexts, discoverWebSurface, enumerateApi } from "./pentest-workflows.js";
|
|
@@ -69,6 +70,7 @@ function responderJobOptions(options) {
|
|
|
69
70
|
...(options?.sessionId ? { ownerSessionId: options.sessionId } : {}),
|
|
70
71
|
...(options?.taskId ? { taskId: options.taskId } : {}),
|
|
71
72
|
...(options?.parentTaskId ? { parentTaskId: options.parentTaskId } : {}),
|
|
73
|
+
...(options?.delegationId ? { delegationId: options.delegationId } : {}),
|
|
72
74
|
...(options?.wakeOnCompletion !== undefined ? { wakeOnCompletion: options.wakeOnCompletion } : {}),
|
|
73
75
|
...(options?.monitor !== undefined ? { monitor: options.monitor } : {}),
|
|
74
76
|
...(responderLeaseId ? { responderLeaseId } : {}),
|
|
@@ -84,6 +86,36 @@ export function estimateScanResources(argv) {
|
|
|
84
86
|
durableRecommended: policy.depth !== "standard",
|
|
85
87
|
};
|
|
86
88
|
}
|
|
89
|
+
async function prepareDurableNmapJob(argv, options, prompt) {
|
|
90
|
+
if (!nmapScanNeedsPrivilege(argv)) {
|
|
91
|
+
return { prepared: true, spec: { command: "nmap", argv: [...argv] } };
|
|
92
|
+
}
|
|
93
|
+
const elevated = await preparePrivilegedBackgroundArgv("nmap", argv, {
|
|
94
|
+
signal: options?.signal,
|
|
95
|
+
onOutput: options?.onOutput,
|
|
96
|
+
requestSecret: options?.requestSecret,
|
|
97
|
+
title: "Administrator access for nmap",
|
|
98
|
+
prompt,
|
|
99
|
+
});
|
|
100
|
+
if (elevated.prepared || options?.signal?.aborted)
|
|
101
|
+
return elevated;
|
|
102
|
+
if (argv.includes("-sU") || argv.includes("-sO")) {
|
|
103
|
+
return {
|
|
104
|
+
prepared: false,
|
|
105
|
+
result: {
|
|
106
|
+
...elevated.result,
|
|
107
|
+
output: `${elevated.result.output}\n` +
|
|
108
|
+
"The requested UDP/protocol scan has no equivalent unprivileged fallback. Authentication will not be reopened automatically; choose a TCP connect scan explicitly to continue without elevation.",
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
const fallbackArgv = withNmapSkipDiscovery(toConnectScanArgv(argv));
|
|
113
|
+
options?.onOutput?.("\nAdministrator scan was cancelled or unavailable. Starting one unprivileged TCP connect fallback (-sT -Pn); authentication will not be requested again.\n", "stderr");
|
|
114
|
+
return {
|
|
115
|
+
prepared: true,
|
|
116
|
+
spec: { command: "nmap", argv: fallbackArgv },
|
|
117
|
+
};
|
|
118
|
+
}
|
|
87
119
|
/** nmap argv for pentest.recon — ports configurable (default top-100). */
|
|
88
120
|
export function buildPentestReconNmapArgv(args, host) {
|
|
89
121
|
const argv = ["-sS", "-sV"];
|
|
@@ -128,24 +160,23 @@ function optionalResponseMode(args, key) {
|
|
|
128
160
|
return undefined;
|
|
129
161
|
}
|
|
130
162
|
export const toolRegistry = {
|
|
163
|
+
...createInteractiveSessionHandlers(),
|
|
131
164
|
async "shell.exec"(args, options) {
|
|
132
165
|
const command = requireString(args, "command");
|
|
133
|
-
// Persistent processes and
|
|
134
|
-
//
|
|
135
|
-
//
|
|
166
|
+
// Persistent processes and genuinely expensive finite scanners/searches run
|
|
167
|
+
// as durable jobs. `background` gives the caller an explicit escape hatch:
|
|
168
|
+
// never — always foreground, timeoutMs honored
|
|
169
|
+
// always — always a durable job
|
|
170
|
+
// auto — persistent commands and cost-signalled finite commands go
|
|
171
|
+
// background; everything else stays foreground (default)
|
|
136
172
|
const requestedTimeoutMs = optionalNumber(args, "timeoutMs");
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
// agent fires-and-continues instead of blocking or polling. Persistent
|
|
145
|
-
// servers (looksLongRunning) are deliberately NOT responder jobs: they
|
|
146
|
-
// never "complete", so the agent probes them and leaves them running.
|
|
147
|
-
const responder = responderRequested || finiteBackgroundJob;
|
|
148
|
-
if (looksLongRunning(command) || finiteBackgroundJob || responderRequested) {
|
|
173
|
+
const policy = resolveShellExecBackgroundPolicy({
|
|
174
|
+
command,
|
|
175
|
+
background: args.background,
|
|
176
|
+
responder: args.responder,
|
|
177
|
+
});
|
|
178
|
+
const { backgroundMode, costReason, wantsBackground, responder, } = policy;
|
|
179
|
+
if (wantsBackground) {
|
|
149
180
|
const elevated = await prepareElevatedBackgroundCommand(command, {
|
|
150
181
|
signal: options?.signal,
|
|
151
182
|
onOutput: options?.onOutput,
|
|
@@ -160,15 +191,16 @@ export const toolRegistry = {
|
|
|
160
191
|
wakeOnCompletion: responder,
|
|
161
192
|
});
|
|
162
193
|
if (job.ok) {
|
|
194
|
+
const autoBackgrounded = backgroundMode === "auto";
|
|
195
|
+
const timeoutNote = autoBackgrounded && requestedTimeoutMs !== undefined
|
|
196
|
+
? `\n\nNote: timeoutMs=${requestedTimeoutMs} does not apply — this command was auto-backgrounded${costReason ? ` (${costReason})` : ""}. Pass background:"never" to run it in the foreground with your timeout.`
|
|
197
|
+
: "";
|
|
198
|
+
const costNote = autoBackgrounded && costReason
|
|
199
|
+
? `\n\nAuto-backgrounded because: ${costReason}. Pass background:"never" to force foreground.`
|
|
200
|
+
: "";
|
|
163
201
|
return {
|
|
164
202
|
...job,
|
|
165
|
-
output: `${job.output}
|
|
166
|
-
(responder
|
|
167
|
-
? "Auto-delegated to the RESPONDER as a durable background job (it finishes on its own after a while and can emit a lot of output). " +
|
|
168
|
-
"Do NOT poll, shell.tail, shell.jobs, sleep, or fs.read it to watch progress — the Responder tracks the process and delivers the completed result into your context automatically between turns. " +
|
|
169
|
-
"Mark your launch step done and move to the next task now. " +
|
|
170
|
-
"When the result arrives, read ONLY the key lines you need (matched status codes / hits / findings) with a filtered shell.tail byte-window or a grep of the artifact — never a full read of a noisy scanner log, and make sure the command you ran preserves those key fields (e.g. keep status codes, not just the wordlist name)."
|
|
171
|
-
: "This persistent command was started in the BACKGROUND. It is not proof of readiness — inspect shell.tail, run a readiness probe, use shell.jobs for status, and shell.stop when appropriate."),
|
|
203
|
+
output: `${job.output}${costNote}${timeoutNote}`,
|
|
172
204
|
};
|
|
173
205
|
}
|
|
174
206
|
return job;
|
|
@@ -242,6 +274,14 @@ export const toolRegistry = {
|
|
|
242
274
|
return fsSearch(requireString(args, "pattern"), optionalString(args, "path"), {
|
|
243
275
|
confirmed: options?.confirmed,
|
|
244
276
|
maxMatches: optionalNumber(args, "maxMatches"),
|
|
277
|
+
maxPerFile: optionalNumber(args, "maxPerFile"),
|
|
278
|
+
glob: optionalString(args, "glob"),
|
|
279
|
+
caseInsensitive: optionalBoolean(args, "caseInsensitive"),
|
|
280
|
+
fixedString: optionalBoolean(args, "fixedString"),
|
|
281
|
+
context: optionalNumber(args, "context"),
|
|
282
|
+
filesOnly: optionalBoolean(args, "filesOnly"),
|
|
283
|
+
hidden: optionalBoolean(args, "hidden"),
|
|
284
|
+
timeoutMs: optionalNumber(args, "timeoutMs"),
|
|
245
285
|
});
|
|
246
286
|
},
|
|
247
287
|
async "pkg.install"(args, options) {
|
|
@@ -302,31 +342,18 @@ export const toolRegistry = {
|
|
|
302
342
|
? /^top[\s_-]*(?:ports?[\s_-]*)?(\d{1,5})$/i.exec(portsRaw.trim())
|
|
303
343
|
: null;
|
|
304
344
|
const ports = portsRaw && !topPortsMatch ? parsePortSpec(portsRaw) : undefined;
|
|
305
|
-
let profile = args.profile
|
|
306
|
-
typeof args.profile === "object" &&
|
|
307
|
-
!Array.isArray(args.profile)
|
|
308
|
-
? args.profile
|
|
309
|
-
: undefined;
|
|
345
|
+
let profile = normalizeScanProfile(args.profile);
|
|
310
346
|
if (topPortsMatch) {
|
|
311
347
|
const n = Math.max(1, Math.min(65535, Number(topPortsMatch[1])));
|
|
312
348
|
profile = { ...(profile ?? {}), topPorts: profile?.topPorts ?? n };
|
|
313
349
|
}
|
|
314
|
-
const userPrompt = options?.userPrompt;
|
|
315
|
-
const isConnectRequested = Boolean(userPrompt &&
|
|
316
|
-
/\b(?:-sT|connect scan|tcp connect|normal scan|unprivileged scan)\b/i.test(userPrompt));
|
|
317
|
-
if (profile && profile.scanType === "tcp" && !isConnectRequested) {
|
|
318
|
-
profile = { ...profile, scanType: "syn" };
|
|
319
|
-
}
|
|
320
350
|
const legacyFlags = optionalString(args, "flags");
|
|
321
351
|
// ports and topPorts conflict on the nmap CLI — ports takes priority
|
|
322
352
|
const cleanedProfile = ports && profile?.topPorts
|
|
323
353
|
? { ...profile, topPorts: undefined }
|
|
324
354
|
: profile;
|
|
325
355
|
const profileArgs = profileToNmapArgs(cleanedProfile);
|
|
326
|
-
|
|
327
|
-
if (!isConnectRequested) {
|
|
328
|
-
legacyArgs = legacyArgs.map(arg => arg === "-sT" ? "-sS" : arg);
|
|
329
|
-
}
|
|
356
|
+
const legacyArgs = legacyFlags ? parseLegacyFlags(legacyFlags) : [];
|
|
330
357
|
const argv = [];
|
|
331
358
|
if (ports)
|
|
332
359
|
argv.push("-p", ports);
|
|
@@ -334,15 +361,7 @@ export const toolRegistry = {
|
|
|
334
361
|
const estimate = estimateScanResources(argv);
|
|
335
362
|
const durable = args.background === true || estimate.durableRecommended;
|
|
336
363
|
if (durable) {
|
|
337
|
-
const prepared =
|
|
338
|
-
? await preparePrivilegedBackgroundArgv("nmap", argv, {
|
|
339
|
-
signal: options?.signal,
|
|
340
|
-
onOutput: options?.onOutput,
|
|
341
|
-
requestSecret: options?.requestSecret,
|
|
342
|
-
title: "Administrator access for nmap",
|
|
343
|
-
prompt: "Enter your password for the nmap raw-socket scan. It is sent only to sudo stdin and is never stored. Esc cancels.",
|
|
344
|
-
})
|
|
345
|
-
: { prepared: true, spec: { command: "nmap", argv: [...argv] } };
|
|
364
|
+
const prepared = await prepareDurableNmapJob(argv, options, "Enter your password for the nmap raw-socket scan. It is sent only to sudo stdin and is never stored. Esc cancels.");
|
|
346
365
|
if (!prepared.prepared)
|
|
347
366
|
return prepared.result;
|
|
348
367
|
return jobManager.startJob(prepared.spec, {
|
|
@@ -620,7 +639,7 @@ export const toolRegistry = {
|
|
|
620
639
|
const artifactDir = getArtifactDir();
|
|
621
640
|
let artifactPath;
|
|
622
641
|
try {
|
|
623
|
-
await mkdir(artifactDir, { recursive: true });
|
|
642
|
+
await mkdir(artifactDir, { recursive: true, mode: 0o700 });
|
|
624
643
|
const safeHost = host.value.replace(/[^a-z0-9_.-]+/gi, "-");
|
|
625
644
|
artifactPath = join(artifactDir, `${new Date().toISOString().replace(/[:.]/g, "-")}-recon-${safeHost}.txt`);
|
|
626
645
|
}
|
|
@@ -644,21 +663,15 @@ export const toolRegistry = {
|
|
|
644
663
|
if (step.key === "nmap") {
|
|
645
664
|
const estimate = estimateScanResources(step.argv);
|
|
646
665
|
if (estimate.durableRecommended || args.background === true) {
|
|
647
|
-
const prepared =
|
|
648
|
-
? await preparePrivilegedBackgroundArgv("nmap", step.argv, {
|
|
649
|
-
signal: options?.signal,
|
|
650
|
-
onOutput: options?.onOutput,
|
|
651
|
-
requestSecret: options?.requestSecret,
|
|
652
|
-
title: "Administrator access for nmap",
|
|
653
|
-
prompt: "Enter your password for the durable nmap raw-socket scan. It is sent only to sudo stdin and is never stored. Esc cancels.",
|
|
654
|
-
})
|
|
655
|
-
: { prepared: true, spec: { command: "nmap", argv: [...step.argv] } };
|
|
666
|
+
const prepared = await prepareDurableNmapJob(step.argv, options, "Enter your password for the durable nmap raw-socket scan. It is sent only to sudo stdin and is never stored. Esc cancels.");
|
|
656
667
|
const result = prepared.prepared
|
|
657
668
|
? await jobManager.startJob(prepared.spec, {
|
|
658
669
|
name: `recon-${estimate.profile}-${host.value}`,
|
|
659
670
|
profile: estimate.profile,
|
|
660
671
|
estimatedSeconds: estimate.estimatedSeconds,
|
|
661
672
|
...responderJobOptions(options),
|
|
673
|
+
responder: true,
|
|
674
|
+
wakeOnCompletion: true,
|
|
662
675
|
...(options?.engagementAuthorization ? { authorization: options.engagementAuthorization } : {}),
|
|
663
676
|
})
|
|
664
677
|
: prepared.result;
|
|
@@ -721,7 +734,7 @@ export const toolRegistry = {
|
|
|
721
734
|
if (artifactPath) {
|
|
722
735
|
const body = transcript.join("\n\n");
|
|
723
736
|
try {
|
|
724
|
-
await writeFile(artifactPath, body, "utf8");
|
|
737
|
+
await writeFile(artifactPath, body, { encoding: "utf8", mode: 0o600 });
|
|
725
738
|
}
|
|
726
739
|
catch {
|
|
727
740
|
artifactPath = undefined;
|
|
@@ -781,13 +794,13 @@ export const toolRegistry = {
|
|
|
781
794
|
async "net.context"() {
|
|
782
795
|
return getNetworkContext();
|
|
783
796
|
},
|
|
784
|
-
async "net.pingSweep"(args) {
|
|
797
|
+
async "net.pingSweep"(args, options) {
|
|
785
798
|
const target = requireString(args, "target");
|
|
786
799
|
return pingSweep({
|
|
787
800
|
target,
|
|
788
801
|
method: optionalString(args, "method"),
|
|
789
802
|
timeoutMs: optionalNumber(args, "timeoutMs"),
|
|
790
|
-
});
|
|
803
|
+
}, { signal: options?.signal });
|
|
791
804
|
},
|
|
792
805
|
async "tool.check"(args) {
|
|
793
806
|
return toolCheckHandler(args);
|
|
@@ -814,13 +827,12 @@ export const toolRegistry = {
|
|
|
814
827
|
});
|
|
815
828
|
if (elevated && !elevated.prepared)
|
|
816
829
|
return elevated.result;
|
|
817
|
-
const responder = optionalBoolean(args, "responder") ?? false;
|
|
818
830
|
return jobManager.startJob(elevated?.prepared ? elevated.spec : command, {
|
|
819
831
|
cwd: optionalString(args, "cwd"),
|
|
820
832
|
name: optionalString(args, "name"),
|
|
821
833
|
...responderJobOptions(options),
|
|
822
|
-
responder,
|
|
823
|
-
wakeOnCompletion:
|
|
834
|
+
responder: false,
|
|
835
|
+
wakeOnCompletion: false,
|
|
824
836
|
});
|
|
825
837
|
},
|
|
826
838
|
async "shell.jobs"(_args, options) {
|
|
@@ -870,13 +882,61 @@ export const toolRegistry = {
|
|
|
870
882
|
export function availableToolNames() {
|
|
871
883
|
return Object.keys(toolRegistry);
|
|
872
884
|
}
|
|
885
|
+
/**
|
|
886
|
+
* Keys that mean "this is a file/content payload, not a command line". When a
|
|
887
|
+
* hallucinated call carries one of these, we refuse to synthesize shell text
|
|
888
|
+
* from it: concatenating file content into a command line is how metacharacters
|
|
889
|
+
* in model output become executed shell.
|
|
890
|
+
*/
|
|
891
|
+
const CONTENT_SHAPED_ARG_KEYS = new Set([
|
|
892
|
+
"content",
|
|
893
|
+
"contents",
|
|
894
|
+
"body",
|
|
895
|
+
"text",
|
|
896
|
+
"data",
|
|
897
|
+
"file_text",
|
|
898
|
+
"filetext",
|
|
899
|
+
"new_str",
|
|
900
|
+
"newstr",
|
|
901
|
+
"old_str",
|
|
902
|
+
"oldstr",
|
|
903
|
+
"patch",
|
|
904
|
+
"diff",
|
|
905
|
+
"source",
|
|
906
|
+
"stdin",
|
|
907
|
+
"input",
|
|
908
|
+
]);
|
|
909
|
+
/** Explicit command-bearing fields, in precedence order. */
|
|
910
|
+
const COMMAND_ARG_KEYS = [
|
|
911
|
+
"command",
|
|
912
|
+
"cmd",
|
|
913
|
+
"commandLine",
|
|
914
|
+
"command_line",
|
|
915
|
+
"argv",
|
|
916
|
+
"args",
|
|
917
|
+
"arguments",
|
|
918
|
+
];
|
|
919
|
+
const SHELL_SAFE_TOKEN_RE = /^[A-Za-z0-9_@%+=:,./-]+$/;
|
|
920
|
+
function shellQuoteToken(token) {
|
|
921
|
+
if (SHELL_SAFE_TOKEN_RE.test(token))
|
|
922
|
+
return token;
|
|
923
|
+
return `'${token.replace(/'/g, `'\\''`)}'`;
|
|
924
|
+
}
|
|
873
925
|
/**
|
|
874
926
|
* Build a shell command string from a bare-command tool call. Models often
|
|
875
|
-
* emit the binary as the tool name (`sed`, `awk`, `git`, …) and
|
|
876
|
-
*
|
|
877
|
-
*
|
|
927
|
+
* emit the binary as the tool name (`sed`, `awk`, `git`, …) and put the rest
|
|
928
|
+
* into an explicit `command`/`cmd`/`argv`/`args` field. Only those explicit
|
|
929
|
+
* fields are honored: array forms are shell-quoted per element, and calls that
|
|
930
|
+
* look like a file-write shape (content/body/text/patch/...) are rejected so
|
|
931
|
+
* an unknown-tool error is surfaced instead of executing model text.
|
|
878
932
|
*/
|
|
879
933
|
function buildShellCommandFromCall(name, args) {
|
|
934
|
+
const trimmedName = name.trim();
|
|
935
|
+
const keys = Object.keys(args);
|
|
936
|
+
for (const key of keys) {
|
|
937
|
+
if (CONTENT_SHAPED_ARG_KEYS.has(key.toLowerCase()))
|
|
938
|
+
return undefined;
|
|
939
|
+
}
|
|
880
940
|
const asText = (value) => {
|
|
881
941
|
if (typeof value === "string")
|
|
882
942
|
return value;
|
|
@@ -885,33 +945,29 @@ function buildShellCommandFromCall(name, args) {
|
|
|
885
945
|
if (Array.isArray(value)) {
|
|
886
946
|
const parts = value
|
|
887
947
|
.filter((v) => typeof v === "string" || typeof v === "number")
|
|
888
|
-
.map((v) => String(v));
|
|
948
|
+
.map((v) => shellQuoteToken(String(v)));
|
|
889
949
|
return parts.length > 0 ? parts.join(" ") : undefined;
|
|
890
950
|
}
|
|
891
951
|
return undefined;
|
|
892
952
|
};
|
|
893
|
-
let rest
|
|
894
|
-
|
|
895
|
-
asText(args
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
if (rest === undefined) {
|
|
900
|
-
// Last resort: concatenate scalar arg values (skipping execution knobs)
|
|
901
|
-
// in insertion order so e.g. {"expression":"s/a/b/","file":"x"} still runs.
|
|
902
|
-
const skip = new Set(["cwd", "timeoutMs", "iOwnThis", "own"]);
|
|
903
|
-
const parts = [];
|
|
904
|
-
for (const [key, value] of Object.entries(args)) {
|
|
905
|
-
if (skip.has(key))
|
|
906
|
-
continue;
|
|
907
|
-
const text = asText(value);
|
|
908
|
-
if (text)
|
|
909
|
-
parts.push(text);
|
|
953
|
+
let rest;
|
|
954
|
+
for (const key of COMMAND_ARG_KEYS) {
|
|
955
|
+
const text = asText(args[key]);
|
|
956
|
+
if (text !== undefined) {
|
|
957
|
+
rest = text;
|
|
958
|
+
break;
|
|
910
959
|
}
|
|
911
|
-
rest = parts.join(" ");
|
|
912
960
|
}
|
|
913
|
-
|
|
914
|
-
|
|
961
|
+
if (rest === undefined) {
|
|
962
|
+
// No explicit command field. A name-only call with no other arguments is
|
|
963
|
+
// still runnable (`whoami`); anything else is an unknown tool, not a
|
|
964
|
+
// command to be assembled out of arbitrary model values.
|
|
965
|
+
const meaningful = keys.filter((key) => !["cwd", "timeoutMs", "iOwnThis", "own"].includes(key));
|
|
966
|
+
if (meaningful.length > 0)
|
|
967
|
+
return undefined;
|
|
968
|
+
return trimmedName || undefined;
|
|
969
|
+
}
|
|
970
|
+
const trimmedRest = rest.trim();
|
|
915
971
|
if (!trimmedRest)
|
|
916
972
|
return trimmedName || undefined;
|
|
917
973
|
// Avoid a doubled binary when `rest` already begins with the tool name.
|
|
@@ -1026,6 +1082,8 @@ export const BATCH_SAFE_TOOLS = new Set([
|
|
|
1026
1082
|
*/
|
|
1027
1083
|
const BATCH_FORBIDDEN_TOOLS = new Set([
|
|
1028
1084
|
"tool.batch",
|
|
1085
|
+
// Interactive sessions need explicit ordering, confirmation, and waits.
|
|
1086
|
+
...INTERACTIVE_SESSION_TOOL_NAMES,
|
|
1029
1087
|
"plan.create",
|
|
1030
1088
|
"task.move",
|
|
1031
1089
|
"task.read",
|
|
@@ -1343,6 +1401,7 @@ async function runToolBatch(args, options) {
|
|
|
1343
1401
|
...(options?.sessionId ? { sessionId: options.sessionId } : {}),
|
|
1344
1402
|
...(options?.taskId ? { taskId: options.taskId } : {}),
|
|
1345
1403
|
...(options?.parentTaskId ? { parentTaskId: options.parentTaskId } : {}),
|
|
1404
|
+
...(options?.delegationId ? { delegationId: options.delegationId } : {}),
|
|
1346
1405
|
...(options?.wakeOnCompletion !== undefined
|
|
1347
1406
|
? { wakeOnCompletion: options.wakeOnCompletion }
|
|
1348
1407
|
: {}),
|
|
@@ -1494,7 +1553,7 @@ async function runToolBatch(args, options) {
|
|
|
1494
1553
|
name: spec.name,
|
|
1495
1554
|
status: "fail",
|
|
1496
1555
|
ok: false,
|
|
1497
|
-
output: `Not run — tool.batch timed out after ${
|
|
1556
|
+
output: `Not run — tool.batch timed out after ${Math.round(batchTimeoutMs / 1000)}s.`,
|
|
1498
1557
|
exitCode: 124,
|
|
1499
1558
|
};
|
|
1500
1559
|
continue;
|
|
@@ -1522,7 +1581,7 @@ async function runToolBatch(args, options) {
|
|
|
1522
1581
|
let output = sections.join("\n\n");
|
|
1523
1582
|
if (hardTimedOut && !allOk) {
|
|
1524
1583
|
output =
|
|
1525
|
-
`[batch] timed out after ${
|
|
1584
|
+
`[batch] timed out after ${Math.round(batchTimeoutMs / 1000)}s — partial results below\n\n` +
|
|
1526
1585
|
output;
|
|
1527
1586
|
}
|
|
1528
1587
|
else if (policyCancelCount > 0) {
|
|
@@ -1533,12 +1592,15 @@ async function runToolBatch(args, options) {
|
|
|
1533
1592
|
output;
|
|
1534
1593
|
}
|
|
1535
1594
|
}
|
|
1536
|
-
//
|
|
1537
|
-
//
|
|
1538
|
-
//
|
|
1539
|
-
|
|
1595
|
+
// `ok` is the signal the runner, loop-guard, and task-evidence layers use, so
|
|
1596
|
+
// it reports the truth: a batch whose children failed is NOT a success. The
|
|
1597
|
+
// original intent (a failed child must not cancel sibling top-level tools) is
|
|
1598
|
+
// preserved by `partial`, which tells the runner this was a partial result
|
|
1599
|
+
// rather than an aborted or hard-failed call.
|
|
1600
|
+
const anyOk = finalOutcomes.some((outcome) => outcome.ok);
|
|
1540
1601
|
return {
|
|
1541
|
-
ok:
|
|
1602
|
+
ok: allOk,
|
|
1603
|
+
partial: !allOk && anyOk && !parentAborted && !hardTimedOut,
|
|
1542
1604
|
output,
|
|
1543
1605
|
exitCode: allOk ? 0 : hardTimedOut ? 124 : parentAborted ? 130 : 1,
|
|
1544
1606
|
};
|