@pentoshi/clai 3.9.2 → 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 +759 -211
- 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-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 +17 -17
- package/dist/app/controllers/session-controller.js +122 -124
- 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 +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/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 +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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nmap-runner.js","sourceRoot":"","sources":["../../src/tools/nmap-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,+BAA+B,EAC/B,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAGvB;;;;;;;;;GASG;AACH,KAAK,UAAU,eAAe;IAG5B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAC7C,oCAAoC;QACpC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;QAC3B,IAAI,MAAM,gBAAgB,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACzE,IAAI,MAAM,gBAAgB,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC3E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,0EAA0E;QAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,iCAAiC,CAAC,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,MAAM,gBAAgB,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACzE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iFAAiF;AACjF,SAAS,uBAAuB,CAAC,MAAc;IAC7C,OAAO,8SAA8S,CAAC,IAAI,CACxT,MAAM,CACP,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AA2BD,MAAM,gBAAgB,GAA4C;IAChE,QAAQ,EAAE,CAAC,GAAG,MAAM;IACpB,IAAI,EAAE,EAAE,GAAG,MAAM;IACjB,IAAI,EAAE,EAAE,GAAG,MAAM;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAuB,EACvB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;QAC7D,OAAO,EAAE,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAC3F,CAAC;IAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAuB;IACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,IAAI,+BAA+B,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC;IAClE,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3C,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAC7E,CAAC;IACF,IAAI,QAAQ,GAAG,KAAK,IAAI,aAAa,GAAG,KAAK,IAAI,kBAAkB;QAAE,OAAO,MAAM,CAAC;IACnF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAc,EACd,OAAwB,EACxB,iBAA0B;IAE1B,2EAA2E;IAC3E,kEAAkE;IAClE,IAAI,QAAQ,GACV,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAClD,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAC7B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEhB,MAAM,cAAc,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpE,MAAM,QAAQ,GAMT,EAAE,CAAC;IAER,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC9B,uEAAuE;YACvE,yEAAyE;YACzE,0EAA0E;YAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAClD,MAAM,MAAM,GACV,CAAC,SAAS;gBACV,kBAAkB,EAAE;gBACpB,+BAA+B,EAAE,CAAC;YAEpC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,EAAE,QAAQ,EAAE,CACjB,uHAAuH,EACvH,QAAQ,CACT,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,QAAQ,EAAE,CACjB,SAAS;oBACP,CAAC,CAAC,qGAAqG;oBACvG,CAAC,CAAC,0GAA0G,EAC9G,QAAQ,CACT,CAAC;gBACF,IAAI,SAAS,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;oBACxC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;wBAC3C,KAAK,EAAE,sBAAsB;wBAC7B,MAAM,EACJ,gHAAgH;qBACnH,CAAC,CAAC;oBACH,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC3B,OAAO,EAAE,QAAQ,EAAE,CACjB,+EAA+E,EAC/E,QAAQ,CACT,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,aAAa,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;wBACxD,8DAA8D;wBAC9D,gDAAgD;wBAChD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC;4BAC3B,OAAO,EAAE,MAAM;4BACf,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC;4BAC5B,SAAS,EAAE,aAAa;4BACxB,SAAS,EAAE,MAAM;4BACjB,MAAM,EAAE,OAAO,CAAC,MAAM;4BACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,UAAU,EAAE,IAAI;4BAChB,gBAAgB,EAAE,KAAK;yBACxB,CAAC,CAAC;wBACH,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;4BACtD,OAAO,EAAE,QAAQ,EAAE,CACjB,6EAA6E,EAC7E,QAAQ,CACT,CAAC;wBACJ,CAAC;6BAAM,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;4BACnB,6DAA6D;4BAC7D,6DAA6D;4BAC7D,yDAAyD;4BACzD,0DAA0D;4BAC1D,QAAQ,CAAC,IAAI,CAAC;gCACZ,OAAO,EAAE,MAAM;gCACf,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;gCAC3C,SAAS,EAAE,aAAa;gCACxB,gBAAgB,EAAE,KAAK;gCACvB,IAAI,EAAE,sEAAsE;6BAC7E,CAAC,CAAC;wBACL,CAAC;6BAAM,CAAC;4BACN,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;gCAChC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;gCACzC,CAAC,CAAC,EAAE,CAAC;4BACP,OAAO,EAAE,QAAQ,EAAE,CACjB,gFAAgF,MAAM,IAAI,EAC1F,QAAQ,CACT,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,6DAA6D;oBAC7D,+DAA+D;oBAC/D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC;wBAC3B,OAAO,EAAE,MAAM;wBACf,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;wBAC5B,SAAS,EAAE,OAAO;wBAClB,MAAM,EAAE,OAAO,EAAE,MAAM;wBACvB,QAAQ,EAAE,OAAO,EAAE,QAAQ;wBAC3B,gBAAgB,EAAE,IAAI;wBACtB,UAAU,EAAE,IAAI;qBACjB,CAAC,CAAC;oBACH,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG;
|
|
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
|
@@ -12,13 +12,13 @@ import { webSearch } from "./web/search.js";
|
|
|
12
12
|
import { RESPONSE_MODES, SEARCH_TIMEOUT_MS, } from "./web/types.js";
|
|
13
13
|
import { classifyToolCall } from "../safety/classifier.js";
|
|
14
14
|
import { loadScope } from "../store/scope.js";
|
|
15
|
-
import { parseHost, parsePortSpec, parseLegacyFlags, profileToNmapArgs, nmapScanNeedsPrivilege, } from "./validate.js";
|
|
15
|
+
import { parseHost, parsePortSpec, parseLegacyFlags, normalizeScanProfile, profileToNmapArgs, nmapScanNeedsPrivilege, toConnectScanArgv, withNmapSkipDiscovery, } from "./validate.js";
|
|
16
16
|
import { getNetworkContext } from "./network-context.js";
|
|
17
17
|
import { pingSweep } from "./net-ping-sweep.js";
|
|
18
18
|
import { toolCheckHandler } from "./capabilities.js";
|
|
19
19
|
import { wordlistFind } from "./wordlists.js";
|
|
20
|
-
import { jobManager } from "./jobs.js";
|
|
21
|
-
import {
|
|
20
|
+
import { jobManager, } from "./jobs.js";
|
|
21
|
+
import { resolveShellExecBackgroundPolicy } from "./command-intent.js";
|
|
22
22
|
import { packageBinaryName } from "./package-binary.js";
|
|
23
23
|
import { resolveNmapTimeoutPolicy, runNmapScan } from "./nmap-runner.js";
|
|
24
24
|
import { compareAuthorizationContexts, discoverWebSurface, enumerateApi } from "./pentest-workflows.js";
|
|
@@ -69,6 +69,7 @@ function responderJobOptions(options) {
|
|
|
69
69
|
...(options?.sessionId ? { ownerSessionId: options.sessionId } : {}),
|
|
70
70
|
...(options?.taskId ? { taskId: options.taskId } : {}),
|
|
71
71
|
...(options?.parentTaskId ? { parentTaskId: options.parentTaskId } : {}),
|
|
72
|
+
...(options?.delegationId ? { delegationId: options.delegationId } : {}),
|
|
72
73
|
...(options?.wakeOnCompletion !== undefined ? { wakeOnCompletion: options.wakeOnCompletion } : {}),
|
|
73
74
|
...(options?.monitor !== undefined ? { monitor: options.monitor } : {}),
|
|
74
75
|
...(responderLeaseId ? { responderLeaseId } : {}),
|
|
@@ -84,6 +85,36 @@ export function estimateScanResources(argv) {
|
|
|
84
85
|
durableRecommended: policy.depth !== "standard",
|
|
85
86
|
};
|
|
86
87
|
}
|
|
88
|
+
async function prepareDurableNmapJob(argv, options, prompt) {
|
|
89
|
+
if (!nmapScanNeedsPrivilege(argv)) {
|
|
90
|
+
return { prepared: true, spec: { command: "nmap", argv: [...argv] } };
|
|
91
|
+
}
|
|
92
|
+
const elevated = await preparePrivilegedBackgroundArgv("nmap", argv, {
|
|
93
|
+
signal: options?.signal,
|
|
94
|
+
onOutput: options?.onOutput,
|
|
95
|
+
requestSecret: options?.requestSecret,
|
|
96
|
+
title: "Administrator access for nmap",
|
|
97
|
+
prompt,
|
|
98
|
+
});
|
|
99
|
+
if (elevated.prepared || options?.signal?.aborted)
|
|
100
|
+
return elevated;
|
|
101
|
+
if (argv.includes("-sU") || argv.includes("-sO")) {
|
|
102
|
+
return {
|
|
103
|
+
prepared: false,
|
|
104
|
+
result: {
|
|
105
|
+
...elevated.result,
|
|
106
|
+
output: `${elevated.result.output}\n` +
|
|
107
|
+
"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.",
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const fallbackArgv = withNmapSkipDiscovery(toConnectScanArgv(argv));
|
|
112
|
+
options?.onOutput?.("\nAdministrator scan was cancelled or unavailable. Starting one unprivileged TCP connect fallback (-sT -Pn); authentication will not be requested again.\n", "stderr");
|
|
113
|
+
return {
|
|
114
|
+
prepared: true,
|
|
115
|
+
spec: { command: "nmap", argv: fallbackArgv },
|
|
116
|
+
};
|
|
117
|
+
}
|
|
87
118
|
/** nmap argv for pentest.recon — ports configurable (default top-100). */
|
|
88
119
|
export function buildPentestReconNmapArgv(args, host) {
|
|
89
120
|
const argv = ["-sS", "-sV"];
|
|
@@ -130,22 +161,20 @@ function optionalResponseMode(args, key) {
|
|
|
130
161
|
export const toolRegistry = {
|
|
131
162
|
async "shell.exec"(args, options) {
|
|
132
163
|
const command = requireString(args, "command");
|
|
133
|
-
// Persistent processes and
|
|
134
|
-
//
|
|
135
|
-
//
|
|
164
|
+
// Persistent processes and genuinely expensive finite scanners/searches run
|
|
165
|
+
// as durable jobs. `background` gives the caller an explicit escape hatch:
|
|
166
|
+
// never — always foreground, timeoutMs honored
|
|
167
|
+
// always — always a durable job
|
|
168
|
+
// auto — persistent commands and cost-signalled finite commands go
|
|
169
|
+
// background; everything else stays foreground (default)
|
|
136
170
|
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) {
|
|
171
|
+
const policy = resolveShellExecBackgroundPolicy({
|
|
172
|
+
command,
|
|
173
|
+
background: args.background,
|
|
174
|
+
responder: args.responder,
|
|
175
|
+
});
|
|
176
|
+
const { backgroundMode, costReason, wantsBackground, responder, } = policy;
|
|
177
|
+
if (wantsBackground) {
|
|
149
178
|
const elevated = await prepareElevatedBackgroundCommand(command, {
|
|
150
179
|
signal: options?.signal,
|
|
151
180
|
onOutput: options?.onOutput,
|
|
@@ -160,15 +189,16 @@ export const toolRegistry = {
|
|
|
160
189
|
wakeOnCompletion: responder,
|
|
161
190
|
});
|
|
162
191
|
if (job.ok) {
|
|
192
|
+
const autoBackgrounded = backgroundMode === "auto";
|
|
193
|
+
const timeoutNote = autoBackgrounded && requestedTimeoutMs !== undefined
|
|
194
|
+
? `\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.`
|
|
195
|
+
: "";
|
|
196
|
+
const costNote = autoBackgrounded && costReason
|
|
197
|
+
? `\n\nAuto-backgrounded because: ${costReason}. Pass background:"never" to force foreground.`
|
|
198
|
+
: "";
|
|
163
199
|
return {
|
|
164
200
|
...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."),
|
|
201
|
+
output: `${job.output}${costNote}${timeoutNote}`,
|
|
172
202
|
};
|
|
173
203
|
}
|
|
174
204
|
return job;
|
|
@@ -242,6 +272,14 @@ export const toolRegistry = {
|
|
|
242
272
|
return fsSearch(requireString(args, "pattern"), optionalString(args, "path"), {
|
|
243
273
|
confirmed: options?.confirmed,
|
|
244
274
|
maxMatches: optionalNumber(args, "maxMatches"),
|
|
275
|
+
maxPerFile: optionalNumber(args, "maxPerFile"),
|
|
276
|
+
glob: optionalString(args, "glob"),
|
|
277
|
+
caseInsensitive: optionalBoolean(args, "caseInsensitive"),
|
|
278
|
+
fixedString: optionalBoolean(args, "fixedString"),
|
|
279
|
+
context: optionalNumber(args, "context"),
|
|
280
|
+
filesOnly: optionalBoolean(args, "filesOnly"),
|
|
281
|
+
hidden: optionalBoolean(args, "hidden"),
|
|
282
|
+
timeoutMs: optionalNumber(args, "timeoutMs"),
|
|
245
283
|
});
|
|
246
284
|
},
|
|
247
285
|
async "pkg.install"(args, options) {
|
|
@@ -302,31 +340,18 @@ export const toolRegistry = {
|
|
|
302
340
|
? /^top[\s_-]*(?:ports?[\s_-]*)?(\d{1,5})$/i.exec(portsRaw.trim())
|
|
303
341
|
: null;
|
|
304
342
|
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;
|
|
343
|
+
let profile = normalizeScanProfile(args.profile);
|
|
310
344
|
if (topPortsMatch) {
|
|
311
345
|
const n = Math.max(1, Math.min(65535, Number(topPortsMatch[1])));
|
|
312
346
|
profile = { ...(profile ?? {}), topPorts: profile?.topPorts ?? n };
|
|
313
347
|
}
|
|
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
348
|
const legacyFlags = optionalString(args, "flags");
|
|
321
349
|
// ports and topPorts conflict on the nmap CLI — ports takes priority
|
|
322
350
|
const cleanedProfile = ports && profile?.topPorts
|
|
323
351
|
? { ...profile, topPorts: undefined }
|
|
324
352
|
: profile;
|
|
325
353
|
const profileArgs = profileToNmapArgs(cleanedProfile);
|
|
326
|
-
|
|
327
|
-
if (!isConnectRequested) {
|
|
328
|
-
legacyArgs = legacyArgs.map(arg => arg === "-sT" ? "-sS" : arg);
|
|
329
|
-
}
|
|
354
|
+
const legacyArgs = legacyFlags ? parseLegacyFlags(legacyFlags) : [];
|
|
330
355
|
const argv = [];
|
|
331
356
|
if (ports)
|
|
332
357
|
argv.push("-p", ports);
|
|
@@ -334,15 +359,7 @@ export const toolRegistry = {
|
|
|
334
359
|
const estimate = estimateScanResources(argv);
|
|
335
360
|
const durable = args.background === true || estimate.durableRecommended;
|
|
336
361
|
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] } };
|
|
362
|
+
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
363
|
if (!prepared.prepared)
|
|
347
364
|
return prepared.result;
|
|
348
365
|
return jobManager.startJob(prepared.spec, {
|
|
@@ -620,7 +637,7 @@ export const toolRegistry = {
|
|
|
620
637
|
const artifactDir = getArtifactDir();
|
|
621
638
|
let artifactPath;
|
|
622
639
|
try {
|
|
623
|
-
await mkdir(artifactDir, { recursive: true });
|
|
640
|
+
await mkdir(artifactDir, { recursive: true, mode: 0o700 });
|
|
624
641
|
const safeHost = host.value.replace(/[^a-z0-9_.-]+/gi, "-");
|
|
625
642
|
artifactPath = join(artifactDir, `${new Date().toISOString().replace(/[:.]/g, "-")}-recon-${safeHost}.txt`);
|
|
626
643
|
}
|
|
@@ -644,21 +661,15 @@ export const toolRegistry = {
|
|
|
644
661
|
if (step.key === "nmap") {
|
|
645
662
|
const estimate = estimateScanResources(step.argv);
|
|
646
663
|
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] } };
|
|
664
|
+
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
665
|
const result = prepared.prepared
|
|
657
666
|
? await jobManager.startJob(prepared.spec, {
|
|
658
667
|
name: `recon-${estimate.profile}-${host.value}`,
|
|
659
668
|
profile: estimate.profile,
|
|
660
669
|
estimatedSeconds: estimate.estimatedSeconds,
|
|
661
670
|
...responderJobOptions(options),
|
|
671
|
+
responder: true,
|
|
672
|
+
wakeOnCompletion: true,
|
|
662
673
|
...(options?.engagementAuthorization ? { authorization: options.engagementAuthorization } : {}),
|
|
663
674
|
})
|
|
664
675
|
: prepared.result;
|
|
@@ -721,7 +732,7 @@ export const toolRegistry = {
|
|
|
721
732
|
if (artifactPath) {
|
|
722
733
|
const body = transcript.join("\n\n");
|
|
723
734
|
try {
|
|
724
|
-
await writeFile(artifactPath, body, "utf8");
|
|
735
|
+
await writeFile(artifactPath, body, { encoding: "utf8", mode: 0o600 });
|
|
725
736
|
}
|
|
726
737
|
catch {
|
|
727
738
|
artifactPath = undefined;
|
|
@@ -781,13 +792,13 @@ export const toolRegistry = {
|
|
|
781
792
|
async "net.context"() {
|
|
782
793
|
return getNetworkContext();
|
|
783
794
|
},
|
|
784
|
-
async "net.pingSweep"(args) {
|
|
795
|
+
async "net.pingSweep"(args, options) {
|
|
785
796
|
const target = requireString(args, "target");
|
|
786
797
|
return pingSweep({
|
|
787
798
|
target,
|
|
788
799
|
method: optionalString(args, "method"),
|
|
789
800
|
timeoutMs: optionalNumber(args, "timeoutMs"),
|
|
790
|
-
});
|
|
801
|
+
}, { signal: options?.signal });
|
|
791
802
|
},
|
|
792
803
|
async "tool.check"(args) {
|
|
793
804
|
return toolCheckHandler(args);
|
|
@@ -814,13 +825,12 @@ export const toolRegistry = {
|
|
|
814
825
|
});
|
|
815
826
|
if (elevated && !elevated.prepared)
|
|
816
827
|
return elevated.result;
|
|
817
|
-
const responder = optionalBoolean(args, "responder") ?? false;
|
|
818
828
|
return jobManager.startJob(elevated?.prepared ? elevated.spec : command, {
|
|
819
829
|
cwd: optionalString(args, "cwd"),
|
|
820
830
|
name: optionalString(args, "name"),
|
|
821
831
|
...responderJobOptions(options),
|
|
822
|
-
responder,
|
|
823
|
-
wakeOnCompletion:
|
|
832
|
+
responder: false,
|
|
833
|
+
wakeOnCompletion: false,
|
|
824
834
|
});
|
|
825
835
|
},
|
|
826
836
|
async "shell.jobs"(_args, options) {
|
|
@@ -870,13 +880,61 @@ export const toolRegistry = {
|
|
|
870
880
|
export function availableToolNames() {
|
|
871
881
|
return Object.keys(toolRegistry);
|
|
872
882
|
}
|
|
883
|
+
/**
|
|
884
|
+
* Keys that mean "this is a file/content payload, not a command line". When a
|
|
885
|
+
* hallucinated call carries one of these, we refuse to synthesize shell text
|
|
886
|
+
* from it: concatenating file content into a command line is how metacharacters
|
|
887
|
+
* in model output become executed shell.
|
|
888
|
+
*/
|
|
889
|
+
const CONTENT_SHAPED_ARG_KEYS = new Set([
|
|
890
|
+
"content",
|
|
891
|
+
"contents",
|
|
892
|
+
"body",
|
|
893
|
+
"text",
|
|
894
|
+
"data",
|
|
895
|
+
"file_text",
|
|
896
|
+
"filetext",
|
|
897
|
+
"new_str",
|
|
898
|
+
"newstr",
|
|
899
|
+
"old_str",
|
|
900
|
+
"oldstr",
|
|
901
|
+
"patch",
|
|
902
|
+
"diff",
|
|
903
|
+
"source",
|
|
904
|
+
"stdin",
|
|
905
|
+
"input",
|
|
906
|
+
]);
|
|
907
|
+
/** Explicit command-bearing fields, in precedence order. */
|
|
908
|
+
const COMMAND_ARG_KEYS = [
|
|
909
|
+
"command",
|
|
910
|
+
"cmd",
|
|
911
|
+
"commandLine",
|
|
912
|
+
"command_line",
|
|
913
|
+
"argv",
|
|
914
|
+
"args",
|
|
915
|
+
"arguments",
|
|
916
|
+
];
|
|
917
|
+
const SHELL_SAFE_TOKEN_RE = /^[A-Za-z0-9_@%+=:,./-]+$/;
|
|
918
|
+
function shellQuoteToken(token) {
|
|
919
|
+
if (SHELL_SAFE_TOKEN_RE.test(token))
|
|
920
|
+
return token;
|
|
921
|
+
return `'${token.replace(/'/g, `'\\''`)}'`;
|
|
922
|
+
}
|
|
873
923
|
/**
|
|
874
924
|
* 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
|
-
*
|
|
925
|
+
* emit the binary as the tool name (`sed`, `awk`, `git`, …) and put the rest
|
|
926
|
+
* into an explicit `command`/`cmd`/`argv`/`args` field. Only those explicit
|
|
927
|
+
* fields are honored: array forms are shell-quoted per element, and calls that
|
|
928
|
+
* look like a file-write shape (content/body/text/patch/...) are rejected so
|
|
929
|
+
* an unknown-tool error is surfaced instead of executing model text.
|
|
878
930
|
*/
|
|
879
931
|
function buildShellCommandFromCall(name, args) {
|
|
932
|
+
const trimmedName = name.trim();
|
|
933
|
+
const keys = Object.keys(args);
|
|
934
|
+
for (const key of keys) {
|
|
935
|
+
if (CONTENT_SHAPED_ARG_KEYS.has(key.toLowerCase()))
|
|
936
|
+
return undefined;
|
|
937
|
+
}
|
|
880
938
|
const asText = (value) => {
|
|
881
939
|
if (typeof value === "string")
|
|
882
940
|
return value;
|
|
@@ -885,33 +943,29 @@ function buildShellCommandFromCall(name, args) {
|
|
|
885
943
|
if (Array.isArray(value)) {
|
|
886
944
|
const parts = value
|
|
887
945
|
.filter((v) => typeof v === "string" || typeof v === "number")
|
|
888
|
-
.map((v) => String(v));
|
|
946
|
+
.map((v) => shellQuoteToken(String(v)));
|
|
889
947
|
return parts.length > 0 ? parts.join(" ") : undefined;
|
|
890
948
|
}
|
|
891
949
|
return undefined;
|
|
892
950
|
};
|
|
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);
|
|
951
|
+
let rest;
|
|
952
|
+
for (const key of COMMAND_ARG_KEYS) {
|
|
953
|
+
const text = asText(args[key]);
|
|
954
|
+
if (text !== undefined) {
|
|
955
|
+
rest = text;
|
|
956
|
+
break;
|
|
910
957
|
}
|
|
911
|
-
rest = parts.join(" ");
|
|
912
958
|
}
|
|
913
|
-
|
|
914
|
-
|
|
959
|
+
if (rest === undefined) {
|
|
960
|
+
// No explicit command field. A name-only call with no other arguments is
|
|
961
|
+
// still runnable (`whoami`); anything else is an unknown tool, not a
|
|
962
|
+
// command to be assembled out of arbitrary model values.
|
|
963
|
+
const meaningful = keys.filter((key) => !["cwd", "timeoutMs", "iOwnThis", "own"].includes(key));
|
|
964
|
+
if (meaningful.length > 0)
|
|
965
|
+
return undefined;
|
|
966
|
+
return trimmedName || undefined;
|
|
967
|
+
}
|
|
968
|
+
const trimmedRest = rest.trim();
|
|
915
969
|
if (!trimmedRest)
|
|
916
970
|
return trimmedName || undefined;
|
|
917
971
|
// Avoid a doubled binary when `rest` already begins with the tool name.
|
|
@@ -1343,6 +1397,7 @@ async function runToolBatch(args, options) {
|
|
|
1343
1397
|
...(options?.sessionId ? { sessionId: options.sessionId } : {}),
|
|
1344
1398
|
...(options?.taskId ? { taskId: options.taskId } : {}),
|
|
1345
1399
|
...(options?.parentTaskId ? { parentTaskId: options.parentTaskId } : {}),
|
|
1400
|
+
...(options?.delegationId ? { delegationId: options.delegationId } : {}),
|
|
1346
1401
|
...(options?.wakeOnCompletion !== undefined
|
|
1347
1402
|
? { wakeOnCompletion: options.wakeOnCompletion }
|
|
1348
1403
|
: {}),
|
|
@@ -1494,7 +1549,7 @@ async function runToolBatch(args, options) {
|
|
|
1494
1549
|
name: spec.name,
|
|
1495
1550
|
status: "fail",
|
|
1496
1551
|
ok: false,
|
|
1497
|
-
output: `Not run — tool.batch timed out after ${
|
|
1552
|
+
output: `Not run — tool.batch timed out after ${Math.round(batchTimeoutMs / 1000)}s.`,
|
|
1498
1553
|
exitCode: 124,
|
|
1499
1554
|
};
|
|
1500
1555
|
continue;
|
|
@@ -1522,7 +1577,7 @@ async function runToolBatch(args, options) {
|
|
|
1522
1577
|
let output = sections.join("\n\n");
|
|
1523
1578
|
if (hardTimedOut && !allOk) {
|
|
1524
1579
|
output =
|
|
1525
|
-
`[batch] timed out after ${
|
|
1580
|
+
`[batch] timed out after ${Math.round(batchTimeoutMs / 1000)}s — partial results below\n\n` +
|
|
1526
1581
|
output;
|
|
1527
1582
|
}
|
|
1528
1583
|
else if (policyCancelCount > 0) {
|
|
@@ -1533,12 +1588,15 @@ async function runToolBatch(args, options) {
|
|
|
1533
1588
|
output;
|
|
1534
1589
|
}
|
|
1535
1590
|
}
|
|
1536
|
-
//
|
|
1537
|
-
//
|
|
1538
|
-
//
|
|
1539
|
-
|
|
1591
|
+
// `ok` is the signal the runner, loop-guard, and task-evidence layers use, so
|
|
1592
|
+
// it reports the truth: a batch whose children failed is NOT a success. The
|
|
1593
|
+
// original intent (a failed child must not cancel sibling top-level tools) is
|
|
1594
|
+
// preserved by `partial`, which tells the runner this was a partial result
|
|
1595
|
+
// rather than an aborted or hard-failed call.
|
|
1596
|
+
const anyOk = finalOutcomes.some((outcome) => outcome.ok);
|
|
1540
1597
|
return {
|
|
1541
|
-
ok:
|
|
1598
|
+
ok: allOk,
|
|
1599
|
+
partial: !allOk && anyOk && !parentAborted && !hardTimedOut,
|
|
1542
1600
|
output,
|
|
1543
1601
|
exitCode: allOk ? 0 : hardTimedOut ? 124 : parentAborted ? 130 : 1,
|
|
1544
1602
|
};
|