@pentoshi/clai 4.12.0 → 4.13.0
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/CODE_OF_CONDUCT.md +132 -0
- package/CONTRIBUTING.md +101 -0
- package/PROVIDERS.md +149 -0
- package/README.md +217 -426
- package/SECURITY.md +33 -0
- package/dist/agent/compaction/summary-execution.js +19 -4
- package/dist/agent/compaction/summary-execution.js.map +1 -1
- package/dist/agent/compaction-summary.d.ts +5 -2
- package/dist/agent/compaction-summary.js +10 -4
- package/dist/agent/compaction-summary.js.map +1 -1
- package/dist/agent/confirm-port.d.ts +3 -5
- package/dist/agent/confirm-port.js +12 -6
- package/dist/agent/confirm-port.js.map +1 -1
- package/dist/agent/context/compact-with-summary.d.ts +1 -0
- package/dist/agent/context/compact-with-summary.js +36 -7
- package/dist/agent/context/compact-with-summary.js.map +1 -1
- package/dist/agent/context/compaction-recent-history.d.ts +12 -0
- package/dist/agent/context/compaction-recent-history.js +114 -0
- package/dist/agent/context/compaction-recent-history.js.map +1 -0
- package/dist/agent/context/latest-user-message.d.ts +2 -0
- package/dist/agent/context/latest-user-message.js +10 -0
- package/dist/agent/context/latest-user-message.js.map +1 -0
- package/dist/agent/context/user-credentials.d.ts +1 -0
- package/dist/agent/context/user-credentials.js +3 -0
- package/dist/agent/context/user-credentials.js.map +1 -1
- package/dist/agent/context-manager.js +6 -2
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/evidence/task-classification.js +2 -5
- package/dist/agent/evidence/task-classification.js.map +1 -1
- package/dist/agent/evidence/tool-budgets.js +4 -14
- package/dist/agent/evidence/tool-budgets.js.map +1 -1
- package/dist/agent/loop-guard.js +1 -5
- package/dist/agent/loop-guard.js.map +1 -1
- package/dist/agent/outcomes.js +9 -1
- package/dist/agent/outcomes.js.map +1 -1
- package/dist/agent/parser/arg-formatting.js +3 -16
- package/dist/agent/parser/arg-formatting.js.map +1 -1
- package/dist/agent/parser/bare-recognition.js +12 -6
- package/dist/agent/parser/bare-recognition.js.map +1 -1
- package/dist/agent/parser/xml-protocol.js +0 -2
- package/dist/agent/parser/xml-protocol.js.map +1 -1
- package/dist/agent/plan-implement-compact.js +2 -1
- package/dist/agent/plan-implement-compact.js.map +1 -1
- package/dist/agent/request-budget.d.ts +1 -0
- package/dist/agent/request-budget.js +6 -1
- package/dist/agent/request-budget.js.map +1 -1
- package/dist/agent/runner.js +2 -2
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/session-policy.d.ts +1 -0
- package/dist/agent/session-policy.js +1 -4
- package/dist/agent/session-policy.js.map +1 -1
- package/dist/agent/subagents/manager.d.ts +5 -1
- package/dist/agent/subagents/manager.js +96 -15
- package/dist/agent/subagents/manager.js.map +1 -1
- package/dist/agent/subagents/read-only-tools.js +44 -20
- package/dist/agent/subagents/read-only-tools.js.map +1 -1
- package/dist/agent/subagents/tools.d.ts +8 -1
- package/dist/agent/subagents/tools.js +21 -13
- package/dist/agent/subagents/tools.js.map +1 -1
- package/dist/agent/subagents/types.d.ts +8 -0
- package/dist/agent/subagents/worker.js +48 -7
- package/dist/agent/subagents/worker.js.map +1 -1
- package/dist/agent/task-evidence.js +2 -11
- package/dist/agent/task-evidence.js.map +1 -1
- package/dist/agent/tool-output-formatting.js +8 -2
- package/dist/agent/tool-output-formatting.js.map +1 -1
- package/dist/agent/turn/automatic-compaction-execution.js +1 -0
- package/dist/agent/turn/automatic-compaction-execution.js.map +1 -1
- package/dist/agent/turn/compaction-coordinator.js +4 -4
- package/dist/agent/turn/compaction-coordinator.js.map +1 -1
- package/dist/agent/turn/compaction-replay-selection.js +1 -0
- package/dist/agent/turn/compaction-replay-selection.js.map +1 -1
- package/dist/agent/turn/loop/run-rounds.js +11 -3
- package/dist/agent/turn/loop/run-rounds.js.map +1 -1
- package/dist/agent/turn/prompt-sections.js +4 -9
- package/dist/agent/turn/prompt-sections.js.map +1 -1
- package/dist/agent/turn/setup/turn-messages.js +2 -1
- package/dist/agent/turn/setup/turn-messages.js.map +1 -1
- package/dist/agent/turn/subagent-inbox.d.ts +5 -5
- package/dist/agent/turn/subagent-inbox.js +90 -11
- package/dist/agent/turn/subagent-inbox.js.map +1 -1
- package/dist/agent/turn/system-sections.d.ts +1 -0
- package/dist/agent/turn/system-sections.js +1 -1
- package/dist/agent/turn/system-sections.js.map +1 -1
- package/dist/agent/turn/task-autostart.js +2 -0
- package/dist/agent/turn/task-autostart.js.map +1 -1
- package/dist/agent/turn/tool-execution/authorization.js +3 -39
- package/dist/agent/turn/tool-execution/authorization.js.map +1 -1
- package/dist/agent/turn/tool-execution/single-tool.js +2 -4
- package/dist/agent/turn/tool-execution/single-tool.js.map +1 -1
- package/dist/agent/turn/tool-result-recorder.js +5 -0
- package/dist/agent/turn/tool-result-recorder.js.map +1 -1
- package/dist/agent/turn/tool-routing.d.ts +1 -1
- package/dist/agent/turn/tool-routing.js +11 -11
- package/dist/agent/turn/tool-routing.js.map +1 -1
- package/dist/agent/workspace-orient.js +2 -2
- package/dist/agent/workspace-orient.js.map +1 -1
- package/dist/app/adapters/agent-event-adapter.js +5 -0
- package/dist/app/adapters/agent-event-adapter.js.map +1 -1
- package/dist/app/adapters/current-store-adapter.js +2 -2
- package/dist/app/adapters/current-store-adapter.js.map +1 -1
- package/dist/app/commands/catalog.js +9 -4
- package/dist/app/commands/catalog.js.map +1 -1
- package/dist/app/commands/registry.js +1 -1
- package/dist/app/commands/registry.js.map +1 -1
- package/dist/app/controllers/session-compact-helper.js +2 -1
- package/dist/app/controllers/session-compact-helper.js.map +1 -1
- package/dist/app/controllers/session-controller.d.ts +8 -0
- package/dist/app/controllers/session-controller.js +66 -12
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/app/controllers/session-naming.d.ts +4 -5
- package/dist/app/controllers/session-naming.js +38 -80
- package/dist/app/controllers/session-naming.js.map +1 -1
- package/dist/app/controllers/session-prompt-history.d.ts +4 -0
- package/dist/app/controllers/session-prompt-history.js +33 -0
- package/dist/app/controllers/session-prompt-history.js.map +1 -0
- package/dist/app/controllers/session-prompt-queue.d.ts +1 -0
- package/dist/app/controllers/session-prompt-queue.js +1 -1
- package/dist/app/controllers/session-prompt-queue.js.map +1 -1
- package/dist/app/events/artifact-output.d.ts +1 -0
- package/dist/app/events/artifact-output.js +32 -0
- package/dist/app/events/artifact-output.js.map +1 -0
- package/dist/app/events/event-buffer.d.ts +13 -1
- package/dist/app/events/event-buffer.js +92 -4
- package/dist/app/events/event-buffer.js.map +1 -1
- package/dist/app/operation-review.d.ts +7 -0
- package/dist/app/operation-review.js +61 -0
- package/dist/app/operation-review.js.map +1 -0
- package/dist/app/ports/confirm-port.d.ts +1 -1
- package/dist/app/ports/persistence-port.d.ts +2 -1
- package/dist/app/ports/secret-port.d.ts +2 -0
- package/dist/classic/app/ClassicApp.js +34 -3
- package/dist/classic/app/ClassicApp.js.map +1 -1
- package/dist/classic/app/action-handlers.js +0 -2
- package/dist/classic/app/action-handlers.js.map +1 -1
- package/dist/classic/app/app-wiring.d.ts +1 -2
- package/dist/classic/app/app-wiring.js +1 -8
- package/dist/classic/app/app-wiring.js.map +1 -1
- package/dist/classic/app/use-feed.js +2 -1
- package/dist/classic/app/use-feed.js.map +1 -1
- package/dist/classic/app/wiring-interactions.d.ts +0 -2
- package/dist/classic/app/wiring-interactions.js +5 -13
- package/dist/classic/app/wiring-interactions.js.map +1 -1
- package/dist/classic/app/wiring-types.d.ts +2 -2
- package/dist/classic/blocks/batch-lines.js +10 -8
- package/dist/classic/blocks/batch-lines.js.map +1 -1
- package/dist/classic/blocks/block-context.d.ts +1 -0
- package/dist/classic/blocks/block-context.js.map +1 -1
- package/dist/classic/blocks/tool-lines.js +20 -39
- package/dist/classic/blocks/tool-lines.js.map +1 -1
- package/dist/classic/bootstrap/renderer-handle.d.ts +5 -1
- package/dist/classic/bootstrap/renderer-handle.js.map +1 -1
- package/dist/classic/bootstrap/start-classic.js +12 -12
- package/dist/classic/bootstrap/start-classic.js.map +1 -1
- package/dist/classic/chrome/context-limit-editor.d.ts +7 -0
- package/dist/classic/chrome/context-limit-editor.js +5 -0
- package/dist/classic/chrome/context-limit-editor.js.map +1 -1
- package/dist/classic/chrome/status-rows.d.ts +4 -0
- package/dist/classic/chrome/status-rows.js +11 -0
- package/dist/classic/chrome/status-rows.js.map +1 -1
- package/dist/classic/feed/feed-blocks.d.ts +1 -1
- package/dist/classic/feed/feed-blocks.js +13 -6
- package/dist/classic/feed/feed-blocks.js.map +1 -1
- package/dist/classic/panels/confirm-panel.js +9 -3
- package/dist/classic/panels/confirm-panel.js.map +1 -1
- package/dist/classic/panels/keys-panel.js +12 -3
- package/dist/classic/panels/keys-panel.js.map +1 -1
- package/dist/classic/panels/pager-panel.js +0 -6
- package/dist/classic/panels/pager-panel.js.map +1 -1
- package/dist/classic/panels/pager-source-controller.d.ts +34 -0
- package/dist/classic/panels/pager-source-controller.js +209 -0
- package/dist/classic/panels/pager-source-controller.js.map +1 -0
- package/dist/classic/panels/panel-controller.d.ts +1 -5
- package/dist/classic/panels/panel-controller.js +44 -92
- package/dist/classic/panels/panel-controller.js.map +1 -1
- package/dist/classic/panels/panel-effect.d.ts +2 -4
- package/dist/classic/panels/panel-effect.js.map +1 -1
- package/dist/classic/panels/panel-effects.js +3 -6
- package/dist/classic/panels/panel-effects.js.map +1 -1
- package/dist/classic/panels/panel-types.d.ts +0 -2
- package/dist/classic/panels/picker-panel.js +1 -1
- package/dist/classic/panels/picker-panel.js.map +1 -1
- package/dist/classic/panels/secret-panel.d.ts +1 -0
- package/dist/classic/panels/secret-panel.js +8 -1
- package/dist/classic/panels/secret-panel.js.map +1 -1
- package/dist/commands/providers.d.ts +1 -0
- package/dist/commands/providers.js +1 -0
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/qoder.d.ts +8 -0
- package/dist/commands/qoder.js +85 -0
- package/dist/commands/qoder.js.map +1 -0
- package/dist/commands/update/installers.js +1 -0
- package/dist/commands/update/installers.js.map +1 -1
- package/dist/index.js +31 -15
- package/dist/index.js.map +1 -1
- package/dist/llm/capability/state.d.ts +1 -1
- package/dist/llm/capability/tool-dialect.js +1 -0
- package/dist/llm/capability/tool-dialect.js.map +1 -1
- package/dist/llm/capability/vision-patterns.js +1 -0
- package/dist/llm/capability/vision-patterns.js.map +1 -1
- package/dist/llm/catalog-facts.js +15 -8
- package/dist/llm/catalog-facts.js.map +1 -1
- package/dist/llm/codex-auth.d.ts +2 -0
- package/dist/llm/codex-auth.js +30 -0
- package/dist/llm/codex-auth.js.map +1 -1
- package/dist/llm/codex-config.js +18 -14
- package/dist/llm/codex-config.js.map +1 -1
- package/dist/llm/codex-models.d.ts +0 -1
- package/dist/llm/codex-models.js +0 -1
- package/dist/llm/codex-models.js.map +1 -1
- package/dist/llm/context-windows.js +2 -3
- package/dist/llm/context-windows.js.map +1 -1
- package/dist/llm/freebuff-run.d.ts +3 -0
- package/dist/llm/freebuff-run.js +9 -1
- package/dist/llm/freebuff-run.js.map +1 -1
- package/dist/llm/freebuff-session-api.d.ts +3 -1
- package/dist/llm/freebuff-session-api.js +14 -1
- package/dist/llm/freebuff-session-api.js.map +1 -1
- package/dist/llm/freebuff-session.d.ts +2 -0
- package/dist/llm/freebuff-session.js +61 -28
- package/dist/llm/freebuff-session.js.map +1 -1
- package/dist/llm/freebuff-wire.d.ts +3 -0
- package/dist/llm/freebuff-wire.js +82 -0
- package/dist/llm/freebuff-wire.js.map +1 -0
- package/dist/llm/freebuff.js +61 -117
- package/dist/llm/freebuff.js.map +1 -1
- package/dist/llm/provider-identity.js +5 -0
- package/dist/llm/provider-identity.js.map +1 -1
- package/dist/llm/provider-info-text.js +25 -0
- package/dist/llm/provider-info-text.js.map +1 -1
- package/dist/llm/provider-profile-layers.js +1 -1
- package/dist/llm/provider-profile-layers.js.map +1 -1
- package/dist/llm/qoder/qoder-accounts.d.ts +9 -0
- package/dist/llm/qoder/qoder-accounts.js +53 -0
- package/dist/llm/qoder/qoder-accounts.js.map +1 -0
- package/dist/llm/qoder/qoder-auth.d.ts +59 -0
- package/dist/llm/qoder/qoder-auth.js +203 -0
- package/dist/llm/qoder/qoder-auth.js.map +1 -0
- package/dist/llm/qoder/qoder-credential.d.ts +31 -0
- package/dist/llm/qoder/qoder-credential.js +82 -0
- package/dist/llm/qoder/qoder-credential.js.map +1 -0
- package/dist/llm/qoder/qoder-login.d.ts +28 -0
- package/dist/llm/qoder/qoder-login.js +153 -0
- package/dist/llm/qoder/qoder-login.js.map +1 -0
- package/dist/llm/qoder/qoder-refresh.d.ts +4 -0
- package/dist/llm/qoder/qoder-refresh.js +165 -0
- package/dist/llm/qoder/qoder-refresh.js.map +1 -0
- package/dist/llm/qoder/qoder-signer.d.ts +66 -0
- package/dist/llm/qoder/qoder-signer.js +119 -0
- package/dist/llm/qoder/qoder-signer.js.map +1 -0
- package/dist/llm/qoder/qoder.d.ts +20 -0
- package/dist/llm/qoder/qoder.js +441 -0
- package/dist/llm/qoder/qoder.js.map +1 -0
- package/dist/llm/qoder/signer-glue.generated.d.ts +1 -0
- package/dist/llm/qoder/signer-glue.generated.js +4 -0
- package/dist/llm/qoder/signer-glue.generated.js.map +1 -0
- package/dist/llm/qoder/signer-wasm.generated.d.ts +3 -0
- package/dist/llm/qoder/signer-wasm.generated.js +6 -0
- package/dist/llm/qoder/signer-wasm.generated.js.map +1 -0
- package/dist/llm/reasoning-capability.js +1 -0
- package/dist/llm/reasoning-capability.js.map +1 -1
- package/dist/llm/reasoning-controls.js +1 -3
- package/dist/llm/reasoning-controls.js.map +1 -1
- package/dist/llm/reasoning-errors.js +3 -1
- package/dist/llm/reasoning-errors.js.map +1 -1
- package/dist/llm/request-plan.js +18 -12
- package/dist/llm/request-plan.js.map +1 -1
- package/dist/llm/routing/attempt-complete.js +11 -4
- package/dist/llm/routing/attempt-complete.js.map +1 -1
- package/dist/llm/routing/attempt-request.d.ts +2 -1
- package/dist/llm/routing/attempt-request.js +37 -0
- package/dist/llm/routing/attempt-request.js.map +1 -1
- package/dist/llm/routing/attempt-stream.js +12 -4
- package/dist/llm/routing/attempt-stream.js.map +1 -1
- package/dist/llm/routing/provider-selection.js +3 -0
- package/dist/llm/routing/provider-selection.js.map +1 -1
- package/dist/llm/tool-protocol.js +6 -0
- package/dist/llm/tool-protocol.js.map +1 -1
- package/dist/llm/wire/chat-body.js +17 -0
- package/dist/llm/wire/chat-body.js.map +1 -1
- package/dist/llm/wire/reasoning-payload.d.ts +1 -1
- package/dist/llm/wire/reasoning-payload.js +6 -0
- package/dist/llm/wire/reasoning-payload.js.map +1 -1
- package/dist/modes/ask.js +26 -10
- package/dist/modes/ask.js.map +1 -1
- package/dist/noninteractive/readline-prompts.d.ts +2 -1
- package/dist/noninteractive/readline-prompts.js +34 -1
- package/dist/noninteractive/readline-prompts.js.map +1 -1
- package/dist/noninteractive/stdio-confirm-port.js +18 -6
- package/dist/noninteractive/stdio-confirm-port.js.map +1 -1
- package/dist/noninteractive/stream-blocks.d.ts +2 -4
- package/dist/noninteractive/stream-blocks.js +5 -5
- package/dist/noninteractive/stream-blocks.js.map +1 -1
- package/dist/noninteractive/stream-renderer.js +1 -1
- package/dist/noninteractive/stream-renderer.js.map +1 -1
- package/dist/prompts/embedded.js +2 -2
- package/dist/prompts/embedded.js.map +1 -1
- package/dist/prompts/index.d.ts +3 -1
- package/dist/prompts/index.js +27 -10
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/system.agent.md +16 -16
- package/dist/prompts/system.ask.md +5 -3
- package/dist/safety/filesystem-permissions.d.ts +4 -0
- package/dist/safety/filesystem-permissions.js +113 -0
- package/dist/safety/filesystem-permissions.js.map +1 -0
- package/dist/safety/permission-mode.d.ts +5 -0
- package/dist/safety/permission-mode.js +22 -0
- package/dist/safety/permission-mode.js.map +1 -0
- package/dist/safety/shell-command-words.d.ts +11 -0
- package/dist/safety/shell-command-words.js +193 -0
- package/dist/safety/shell-command-words.js.map +1 -0
- package/dist/safety/shell-filesystem-effects.d.ts +14 -0
- package/dist/safety/shell-filesystem-effects.js +178 -0
- package/dist/safety/shell-filesystem-effects.js.map +1 -0
- package/dist/safety/shell-permission-words.d.ts +16 -0
- package/dist/safety/shell-permission-words.js +102 -0
- package/dist/safety/shell-permission-words.js.map +1 -0
- package/dist/safety/tool-classification.js +1 -15
- package/dist/safety/tool-classification.js.map +1 -1
- package/dist/session-runtime/binding.js +4 -1
- package/dist/session-runtime/binding.js.map +1 -1
- package/dist/session-runtime/client.js +111 -7
- package/dist/session-runtime/client.js.map +1 -1
- package/dist/session-runtime/discovery.d.ts +1 -1
- package/dist/session-runtime/discovery.js +2 -2
- package/dist/session-runtime/discovery.js.map +1 -1
- package/dist/session-runtime/host.d.ts +10 -2
- package/dist/session-runtime/host.js +206 -83
- package/dist/session-runtime/host.js.map +1 -1
- package/dist/session-runtime/input-commands.d.ts +2 -0
- package/dist/session-runtime/input-commands.js +11 -0
- package/dist/session-runtime/input-commands.js.map +1 -0
- package/dist/session-runtime/input-stream.d.ts +15 -0
- package/dist/session-runtime/input-stream.js +128 -0
- package/dist/session-runtime/input-stream.js.map +1 -0
- package/dist/session-runtime/types.d.ts +9 -0
- package/dist/store/config/endpoints.d.ts +2 -1
- package/dist/store/config/endpoints.js +4 -1
- package/dist/store/config/endpoints.js.map +1 -1
- package/dist/store/config.js +1 -0
- package/dist/store/config.js.map +1 -1
- package/dist/store/history/freshness.d.ts +9 -0
- package/dist/store/history/freshness.js +29 -0
- package/dist/store/history/freshness.js.map +1 -0
- package/dist/store/history/jsonl-backend.js +2 -16
- package/dist/store/history/jsonl-backend.js.map +1 -1
- package/dist/store/history/lifecycle.js +6 -2
- package/dist/store/history/lifecycle.js.map +1 -1
- package/dist/store/history/recovery.d.ts +1 -3
- package/dist/store/history/recovery.js +72 -111
- package/dist/store/history/recovery.js.map +1 -1
- package/dist/store/history/session-queries.js +5 -5
- package/dist/store/history/session-queries.js.map +1 -1
- package/dist/store/history-index.d.ts +5 -0
- package/dist/store/history-index.js +41 -9
- package/dist/store/history-index.js.map +1 -1
- package/dist/store/history.d.ts +7 -2
- package/dist/store/history.js +13 -7
- package/dist/store/history.js.map +1 -1
- package/dist/store/rtk-usage.d.ts +2 -0
- package/dist/store/rtk-usage.js +44 -0
- package/dist/store/rtk-usage.js.map +1 -0
- package/dist/store/session-model.js +0 -1
- package/dist/store/session-model.js.map +1 -1
- package/dist/store/session-prompts-format.d.ts +2 -0
- package/dist/store/session-prompts-format.js +29 -0
- package/dist/store/session-prompts-format.js.map +1 -0
- package/dist/store/session-prompts.d.ts +40 -0
- package/dist/store/session-prompts.js +213 -0
- package/dist/store/session-prompts.js.map +1 -0
- package/dist/store/subagents.d.ts +5 -1
- package/dist/store/subagents.js +67 -6
- package/dist/store/subagents.js.map +1 -1
- package/dist/tools/call-normalization.js +0 -3
- package/dist/tools/call-normalization.js.map +1 -1
- package/dist/tools/command-intent.d.ts +0 -1
- package/dist/tools/command-intent.js +3 -10
- package/dist/tools/command-intent.js.map +1 -1
- package/dist/tools/definitions/aggregate.js +0 -4
- package/dist/tools/definitions/aggregate.js.map +1 -1
- package/dist/tools/definitions/define.js +0 -3
- package/dist/tools/definitions/define.js.map +1 -1
- package/dist/tools/definitions/files.js +3 -111
- package/dist/tools/definitions/files.js.map +1 -1
- package/dist/tools/definitions/fs-read.d.ts +3 -0
- package/dist/tools/definitions/fs-read.js +43 -0
- package/dist/tools/definitions/fs-read.js.map +1 -0
- package/dist/tools/definitions/selection.js +0 -45
- package/dist/tools/definitions/selection.js.map +1 -1
- package/dist/tools/definitions/shell.js +6 -3
- package/dist/tools/definitions/shell.js.map +1 -1
- package/dist/tools/elevated-shell.d.ts +1 -0
- package/dist/tools/elevated-shell.js +2 -0
- package/dist/tools/elevated-shell.js.map +1 -1
- package/dist/tools/fs/read-budget.d.ts +8 -0
- package/dist/tools/fs/read-budget.js +30 -0
- package/dist/tools/fs/read-budget.js.map +1 -0
- package/dist/tools/fs/read-input.d.ts +16 -0
- package/dist/tools/fs/read-input.js +73 -0
- package/dist/tools/fs/read-input.js.map +1 -0
- package/dist/tools/fs/read-many.d.ts +6 -0
- package/dist/tools/fs/read-many.js +50 -0
- package/dist/tools/fs/read-many.js.map +1 -0
- package/dist/tools/fs/read-sections.d.ts +11 -0
- package/dist/tools/fs/read-sections.js +71 -0
- package/dist/tools/fs/read-sections.js.map +1 -0
- package/dist/tools/fs/read-window.d.ts +1 -1
- package/dist/tools/fs/read-window.js +57 -25
- package/dist/tools/fs/read-window.js.map +1 -1
- package/dist/tools/fs/read.d.ts +0 -4
- package/dist/tools/fs/read.js +34 -17
- package/dist/tools/fs/read.js.map +1 -1
- package/dist/tools/fs.d.ts +3 -2
- package/dist/tools/fs.js +23 -5
- package/dist/tools/fs.js.map +1 -1
- package/dist/tools/handlers/files-1.js +11 -35
- package/dist/tools/handlers/files-1.js.map +1 -1
- package/dist/tools/handlers/files-2.js.map +1 -1
- package/dist/tools/handlers/shell-1.js +26 -35
- package/dist/tools/handlers/shell-1.js.map +1 -1
- package/dist/tools/interactive-session-tools.js +1 -0
- package/dist/tools/interactive-session-tools.js.map +1 -1
- package/dist/tools/jobs/types.d.ts +4 -1
- package/dist/tools/jobs.js +9 -1
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/read-only-shell.d.ts +2 -0
- package/dist/tools/read-only-shell.js +65 -0
- package/dist/tools/read-only-shell.js.map +1 -0
- package/dist/tools/registry.js +0 -9
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/retired-tools.js +1 -1
- package/dist/tools/retired-tools.js.map +1 -1
- package/dist/tools/rtk/rewrite.d.ts +3 -2
- package/dist/tools/rtk/rewrite.js +4 -5
- package/dist/tools/rtk/rewrite.js.map +1 -1
- package/dist/tools/shell/exec-attempt.js +1 -0
- package/dist/tools/shell/exec-attempt.js.map +1 -1
- package/dist/tools/shell/internals.d.ts +1 -1
- package/dist/tools/shell/internals.js +2 -1
- package/dist/tools/shell/internals.js.map +1 -1
- package/dist/tools/shell/spawn-argv.js +1 -1
- package/dist/tools/shell/spawn-argv.js.map +1 -1
- package/dist/tools/shell/timeout.d.ts +1 -0
- package/dist/tools/shell/timeout.js +2 -0
- package/dist/tools/shell/timeout.js.map +1 -0
- package/dist/tools/shell.d.ts +1 -0
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/sudo-session.d.ts +4 -5
- package/dist/tools/sudo-session.js +1 -0
- package/dist/tools/sudo-session.js.map +1 -1
- package/dist/tools/tool-types.d.ts +2 -4
- package/dist/tui-v2/app/App.js +5 -1
- package/dist/tui-v2/app/App.js.map +1 -1
- package/dist/tui-v2/bootstrap/start-tui-v2.js +0 -2
- package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
- package/dist/tui-v2/components/jobs/subagents-panel.js +14 -2
- package/dist/tui-v2/components/jobs/subagents-panel.js.map +1 -1
- package/dist/tui-v2/components/modal/confirm-modal.js +6 -2
- package/dist/tui-v2/components/modal/confirm-modal.js.map +1 -1
- package/dist/tui-v2/components/modal/keys-modal.js +42 -6
- package/dist/tui-v2/components/modal/keys-modal.js.map +1 -1
- package/dist/tui-v2/components/modal/secret-modal.d.ts +8 -0
- package/dist/tui-v2/components/modal/secret-modal.js +27 -18
- package/dist/tui-v2/components/modal/secret-modal.js.map +1 -1
- package/dist/tui-v2/components/overlay/overlay-host.js +14 -3
- package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -1
- package/dist/tui-v2/components/pager/pager.js +43 -61
- package/dist/tui-v2/components/pager/pager.js.map +1 -1
- package/dist/tui-v2/components/picker/picker.js +17 -3
- package/dist/tui-v2/components/picker/picker.js.map +1 -1
- package/dist/tui-v2/components/transcript/intro-card.js +2 -1
- package/dist/tui-v2/components/transcript/intro-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/tool-card.js +21 -19
- package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-view.js +24 -21
- package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
- package/dist/tui-v2/components/transcript/use-transcript-selection.d.ts +1 -0
- package/dist/tui-v2/components/transcript/use-transcript-selection.js +12 -1
- package/dist/tui-v2/components/transcript/use-transcript-selection.js.map +1 -1
- package/dist/tui-v2/composer/composer-editor.js +1 -1
- package/dist/tui-v2/composer/composer-editor.js.map +1 -1
- package/dist/types.d.ts +17 -2
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/ui/mentions/expand.js +1 -1
- package/dist/ui-core/actions/action-id.d.ts +1 -1
- package/dist/ui-core/actions/action-id.js +0 -2
- package/dist/ui-core/actions/action-id.js.map +1 -1
- package/dist/ui-core/actions/format-shortcuts.js +0 -2
- package/dist/ui-core/actions/format-shortcuts.js.map +1 -1
- package/dist/ui-core/actions/keymap.js +0 -6
- package/dist/ui-core/actions/keymap.js.map +1 -1
- package/dist/ui-core/bootstrap/composition-root.d.ts +0 -3
- package/dist/ui-core/bootstrap/composition-root.js +0 -8
- package/dist/ui-core/bootstrap/composition-root.js.map +1 -1
- package/dist/ui-core/bootstrap/overlay-ports.js +14 -5
- package/dist/ui-core/bootstrap/overlay-ports.js.map +1 -1
- package/dist/ui-core/bootstrap/session-resume.d.ts +5 -0
- package/dist/ui-core/bootstrap/session-resume.js +13 -35
- package/dist/ui-core/bootstrap/session-resume.js.map +1 -1
- package/dist/ui-core/commands/command-handlers.js +5 -2
- package/dist/ui-core/commands/command-handlers.js.map +1 -1
- package/dist/ui-core/commands/config-commands.js +5 -1
- package/dist/ui-core/commands/config-commands.js.map +1 -1
- package/dist/ui-core/commands/key-commands.js +50 -30
- package/dist/ui-core/commands/key-commands.js.map +1 -1
- package/dist/ui-core/commands/keys/auth-picker.d.ts +3 -0
- package/dist/ui-core/commands/keys/auth-picker.js +29 -0
- package/dist/ui-core/commands/keys/auth-picker.js.map +1 -0
- package/dist/ui-core/commands/keys/qoder.d.ts +4 -0
- package/dist/ui-core/commands/keys/qoder.js +194 -0
- package/dist/ui-core/commands/keys/qoder.js.map +1 -0
- package/dist/ui-core/commands/picker-commands.js +19 -1
- package/dist/ui-core/commands/picker-commands.js.map +1 -1
- package/dist/ui-core/commands/pickers/output-pager.js +19 -8
- package/dist/ui-core/commands/pickers/output-pager.js.map +1 -1
- package/dist/ui-core/commands/pickers/search-reasoning.js +3 -4
- package/dist/ui-core/commands/pickers/search-reasoning.js.map +1 -1
- package/dist/ui-core/commands/prompt-commands.d.ts +2 -0
- package/dist/ui-core/commands/prompt-commands.js +10 -0
- package/dist/ui-core/commands/prompt-commands.js.map +1 -0
- package/dist/ui-core/commands/rtk-commands.js +35 -16
- package/dist/ui-core/commands/rtk-commands.js.map +1 -1
- package/dist/ui-core/commands/session-commands.js +22 -7
- package/dist/ui-core/commands/session-commands.js.map +1 -1
- package/dist/ui-core/commands/subagent-commands.js +5 -4
- package/dist/ui-core/commands/subagent-commands.js.map +1 -1
- package/dist/ui-core/composer/composer-meta.js +2 -5
- package/dist/ui-core/composer/composer-meta.js.map +1 -1
- package/dist/ui-core/controllers/overlay-controller.d.ts +13 -0
- package/dist/ui-core/controllers/overlay-controller.js +33 -6
- package/dist/ui-core/controllers/overlay-controller.js.map +1 -1
- package/dist/ui-core/rendering/batch-sections.d.ts +1 -1
- package/dist/ui-core/rendering/batch-sections.js +18 -4
- package/dist/ui-core/rendering/batch-sections.js.map +1 -1
- package/dist/ui-core/rendering/duration.d.ts +2 -0
- package/dist/ui-core/rendering/duration.js +9 -1
- package/dist/ui-core/rendering/duration.js.map +1 -1
- package/dist/ui-core/rendering/intro-header.js +5 -6
- package/dist/ui-core/rendering/intro-header.js.map +1 -1
- package/dist/ui-core/rendering/open-tool-output.js +4 -1
- package/dist/ui-core/rendering/open-tool-output.js.map +1 -1
- package/dist/ui-core/rendering/pager-source.js +3 -0
- package/dist/ui-core/rendering/pager-source.js.map +1 -1
- package/dist/ui-core/rendering/pager-text.js +3 -0
- package/dist/ui-core/rendering/pager-text.js.map +1 -1
- package/dist/ui-core/rendering/pager-view-policy.js +4 -2
- package/dist/ui-core/rendering/pager-view-policy.js.map +1 -1
- package/dist/ui-core/rendering/session-prompts-pager-source.d.ts +3 -0
- package/dist/ui-core/rendering/session-prompts-pager-source.js +40 -0
- package/dist/ui-core/rendering/session-prompts-pager-source.js.map +1 -0
- package/dist/ui-core/rendering/subagent-source.d.ts +4 -3
- package/dist/ui-core/rendering/subagent-source.js +79 -7
- package/dist/ui-core/rendering/subagent-source.js.map +1 -1
- package/dist/ui-core/rendering/text-width.d.ts +1 -0
- package/dist/ui-core/rendering/text-width.js +31 -0
- package/dist/ui-core/rendering/text-width.js.map +1 -1
- package/dist/ui-core/rendering/tool-presenter.d.ts +9 -4
- package/dist/ui-core/rendering/tool-presenter.js +43 -91
- package/dist/ui-core/rendering/tool-presenter.js.map +1 -1
- package/dist/ui-core/rendering/usage-pager-source.js +6 -2
- package/dist/ui-core/rendering/usage-pager-source.js.map +1 -1
- package/dist/ui-core/state/transcript-store.js +7 -2
- package/dist/ui-core/state/transcript-store.js.map +1 -1
- package/dist/ui-core/state/transcript-types.d.ts +1 -1
- package/dist/ui-core/state/transcript-types.js +4 -2
- package/dist/ui-core/state/transcript-types.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +6 -2
- package/dist/agent/turn/pentest-tools.d.ts +0 -3
- package/dist/agent/turn/pentest-tools.js +0 -17
- package/dist/agent/turn/pentest-tools.js.map +0 -1
- package/dist/classic/bootstrap/suspend-port.d.ts +0 -14
- package/dist/classic/bootstrap/suspend-port.js +0 -29
- package/dist/classic/bootstrap/suspend-port.js.map +0 -1
- package/dist/tools/capabilities.d.ts +0 -12
- package/dist/tools/capabilities.js +0 -225
- package/dist/tools/capabilities.js.map +0 -1
- package/dist/tools/definitions/network.d.ts +0 -2
- package/dist/tools/definitions/network.js +0 -17
- package/dist/tools/definitions/network.js.map +0 -1
- package/dist/tools/definitions/orchestration.d.ts +0 -2
- package/dist/tools/definitions/orchestration.js +0 -27
- package/dist/tools/definitions/orchestration.js.map +0 -1
- package/dist/tools/fs/search.d.ts +0 -32
- package/dist/tools/fs/search.js +0 -427
- package/dist/tools/fs/search.js.map +0 -1
- package/dist/tools/handlers/network-3.d.ts +0 -2
- package/dist/tools/handlers/network-3.js +0 -13
- package/dist/tools/handlers/network-3.js.map +0 -1
- package/dist/tools/handlers/orchestration-2.d.ts +0 -2
- package/dist/tools/handlers/orchestration-2.js +0 -16
- package/dist/tools/handlers/orchestration-2.js.map +0 -1
- package/dist/tools/net-ping-sweep.d.ts +0 -18
- package/dist/tools/net-ping-sweep.js +0 -274
- package/dist/tools/net-ping-sweep.js.map +0 -1
- package/dist/tools/wordlists.d.ts +0 -6
- package/dist/tools/wordlists.js +0 -390
- package/dist/tools/wordlists.js.map +0 -1
- package/dist/tui-v2/bootstrap/pager-export.d.ts +0 -7
- package/dist/tui-v2/bootstrap/pager-export.js +0 -19
- package/dist/tui-v2/bootstrap/pager-export.js.map +0 -1
- package/dist/ui-core/ports/pager-export-port.d.ts +0 -16
- package/dist/ui-core/ports/pager-export-port.js +0 -68
- package/dist/ui-core/ports/pager-export-port.js.map +0 -1
- package/dist/ui-core/rendering/fs-search-summary.d.ts +0 -11
- package/dist/ui-core/rendering/fs-search-summary.js +0 -65
- package/dist/ui-core/rendering/fs-search-summary.js.map +0 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { MAX_FS_READ_FILES } from "../fs/read-input.js";
|
|
2
|
+
const FILE_PROPERTIES = {
|
|
3
|
+
path: { type: "string", minLength: 1, description: "File or directory path (absolute, relative, or ~)." },
|
|
4
|
+
offset: { type: "integer", minimum: 0, description: "1-indexed start line; 0 means 1. Alias: startLine." },
|
|
5
|
+
limit: { type: "integer", minimum: 1, description: "Max lines (default 200, max 5000), or directory entries (default 500)." },
|
|
6
|
+
startLine: { type: "integer", minimum: 0, description: "Inclusive start line. Prefer offset+limit OR startLine+endLine, not both." },
|
|
7
|
+
endLine: { type: "integer", minimum: 1, description: "Inclusive end line, at least startLine/offset." },
|
|
8
|
+
pattern: { type: "string", minLength: 1, description: 'JS regex source ("function\\\\s+foo") or /pattern/i; returns matching lines and context. A line range optionally narrows the search.' },
|
|
9
|
+
context: { type: "integer", minimum: 0, maximum: 20, description: "Context lines before/after each pattern match (default 2)." },
|
|
10
|
+
maxMatches: { type: "integer", minimum: 1, maximum: 100, description: "Max pattern matches (default 20)." },
|
|
11
|
+
caseInsensitive: { type: "boolean", description: "Case-insensitive pattern matching; alternatively use /pattern/i." },
|
|
12
|
+
maxBytes: { type: "integer", minimum: 1, description: "Maximum content bytes for this file, including range/pattern reads. Multi-file calls share a 256 KiB content budget; narrow filters to read more." },
|
|
13
|
+
};
|
|
14
|
+
export const FS_READ_DESCRIPTION = [
|
|
15
|
+
"Read one text file or list one directory with {path,...options}.",
|
|
16
|
+
`Only when several known files are needed together, use {files:[{path,...options},...]} with 1–${MAX_FS_READ_FILES} entries; single-file reads remain preferred when sufficient.`,
|
|
17
|
+
'Example: {"files":[{"path":"src/app.ts","offset":1,"limit":80},{"path":"src/config.ts","pattern":"export","context":2}]}.',
|
|
18
|
+
"Choose exactly one of path or files. In files mode, every entry requires path; all filters belong inside that entry, never at the top level. Do not add irrelevant files to fill the limit.",
|
|
19
|
+
"Small path-only files return fully; large files auto-head. hasMore=true or clipping means incomplete coverage: continue using that file’s footer offset/limit, or narrow its filters. Do not repeat path-only hoping for more.",
|
|
20
|
+
"Known range: offset+limit or startLine+endLine (1-indexed inclusive). Known symbol: pattern with optional context. Discover unknown paths with shell.exec rg first.",
|
|
21
|
+
"Range/pattern lines are numbered N: text. Multi-file results are ordered, labeled by path, and report each file’s success or failure separately; successful reads remain available if another fails. Retry only failed/unfinished entries that are still needed.",
|
|
22
|
+
].join(" ");
|
|
23
|
+
export const FS_READ_PARAMETERS = {
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: {
|
|
26
|
+
...FILE_PROPERTIES,
|
|
27
|
+
files: {
|
|
28
|
+
type: "array",
|
|
29
|
+
minItems: 1,
|
|
30
|
+
maxItems: MAX_FS_READ_FILES,
|
|
31
|
+
description: "Optional alternative to path: 1–6 relevant file objects, each with its own path and filters. Omit top-level path and filters when using files.",
|
|
32
|
+
items: {
|
|
33
|
+
type: "object",
|
|
34
|
+
properties: FILE_PROPERTIES,
|
|
35
|
+
required: ["path"],
|
|
36
|
+
additionalProperties: false,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
required: [],
|
|
41
|
+
additionalProperties: false,
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=fs-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-read.js","sourceRoot":"","sources":["../../../src/tools/definitions/fs-read.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,eAAe,GAAG;IACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,oDAAoD,EAAE;IACzG,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,oDAAoD,EAAE;IAC1G,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,wEAAwE,EAAE;IAC7H,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,2EAA2E,EAAE;IACpI,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,gDAAgD,EAAE;IACvG,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,sIAAsI,EAAE;IAC9L,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,4DAA4D,EAAE;IAChI,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,mCAAmC,EAAE;IAC3G,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,kEAAkE,EAAE;IACrH,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,mJAAmJ,EAAE;CAC5M,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,kEAAkE;IAClE,iGAAiG,iBAAiB,+DAA+D;IACjL,2HAA2H;IAC3H,6LAA6L;IAC7L,gOAAgO;IAChO,qKAAqK;IACrK,kQAAkQ;CACnQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,kBAAkB,GAAiC;IAC9D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,GAAG,eAAe;QAClB,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,iBAAiB;YAC3B,WAAW,EAAE,gJAAgJ;YAC7J,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,eAAe;gBAC3B,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF;IACD,QAAQ,EAAE,EAAE;IACZ,oBAAoB,EAAE,KAAK;CAC5B,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { TOOL_DEFINITIONS } from "./aggregate.js";
|
|
2
2
|
import { NON_REGISTRY_TOOL_NAMES } from "../definitions.js";
|
|
3
|
-
import { SUBAGENT_TOOL_NAMES } from "./subagents.js";
|
|
4
3
|
export const byName = new Map(TOOL_DEFINITIONS.map((d) => [d.name, d]));
|
|
5
4
|
export function getToolDefinitions(filter) {
|
|
6
5
|
let defs = TOOL_DEFINITIONS;
|
|
@@ -11,50 +10,6 @@ export function getToolDefinitions(filter) {
|
|
|
11
10
|
const allow = new Set(filter.names);
|
|
12
11
|
defs = defs.filter((d) => allow.has(d.name));
|
|
13
12
|
}
|
|
14
|
-
if (filter?.compact) {
|
|
15
|
-
const core = new Set([
|
|
16
|
-
...SUBAGENT_TOOL_NAMES,
|
|
17
|
-
"fs.read",
|
|
18
|
-
"fs.write",
|
|
19
|
-
"fs.writeMany",
|
|
20
|
-
"fs.list",
|
|
21
|
-
"fs.search",
|
|
22
|
-
"fs.edit",
|
|
23
|
-
"fs.append",
|
|
24
|
-
"fs.delete",
|
|
25
|
-
"shell.exec",
|
|
26
|
-
"shell.jobs",
|
|
27
|
-
"shell.tail",
|
|
28
|
-
"shell.wait",
|
|
29
|
-
"shell.stop",
|
|
30
|
-
"terminal.start",
|
|
31
|
-
"terminal.send",
|
|
32
|
-
"terminal.read",
|
|
33
|
-
"terminal.status",
|
|
34
|
-
"terminal.list",
|
|
35
|
-
"terminal.close",
|
|
36
|
-
"web.search",
|
|
37
|
-
"web.fetch",
|
|
38
|
-
"http.fetch",
|
|
39
|
-
"net.pingSweep",
|
|
40
|
-
"wordlist.find",
|
|
41
|
-
"tool.check",
|
|
42
|
-
"image.view",
|
|
43
|
-
"image.ocr",
|
|
44
|
-
"skill.load",
|
|
45
|
-
"skill.list",
|
|
46
|
-
"mcp.call",
|
|
47
|
-
"mcp.list",
|
|
48
|
-
"mcp.tools",
|
|
49
|
-
"instructions.record",
|
|
50
|
-
"plan.create",
|
|
51
|
-
"task.add",
|
|
52
|
-
"task.move",
|
|
53
|
-
"job.read",
|
|
54
|
-
"task.update",
|
|
55
|
-
]);
|
|
56
|
-
defs = defs.filter((d) => core.has(d.name));
|
|
57
|
-
}
|
|
58
13
|
return defs.map((d) => ({ ...d }));
|
|
59
14
|
}
|
|
60
15
|
export function getCompactToolDefinitions() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../../../src/tools/definitions/selection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../../../src/tools/definitions/selection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAExE,MAAM,UAAU,kBAAkB,CAAC,MAIlC;IACC,IAAI,IAAI,GAAG,gBAAgB,CAAC;IAC5B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,kBAAkB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,YAAsB;IAEtB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,eAAe,CAAC,CAAC,IAAI,wDAAwD,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,yBAAyB,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { def, emptyObject } from "./define.js";
|
|
2
2
|
export const TOOL_DEFINITIONS_SHELL = [
|
|
3
|
-
def("shell.exec", 'Run a shell command.
|
|
3
|
+
def("shell.exec", 'Run a shell command in the foreground by default; commands are never automatically backgrounded. You choose execution mode and foreground timeoutMs in milliseconds. Foreground default is 60000; set a sufficient budget for builds, installs, scans and searches. background:"always" explicitly starts a durable pollable job; use shell.wait for finite jobs. Persistent servers, watchers, and listeners: background:"always" with a name; use shell.tail plus a readiness probe and shell.stop for cleanup. responder:true explicitly delegates finite work with automatic terminal delivery; do independent work instead of polling, then analyze the result and call job.read. background:"never" overrides responder. timeoutMs is ignored for background and Responder jobs; authorization expiry remains enforced. Pass cwd instead of cd.', {
|
|
4
4
|
type: "object",
|
|
5
5
|
properties: {
|
|
6
6
|
command: { type: "string" },
|
|
7
7
|
cwd: { type: "string" },
|
|
8
|
-
timeoutMs: {
|
|
8
|
+
timeoutMs: {
|
|
9
|
+
type: "integer",
|
|
10
|
+
description: "Foreground execution deadline in milliseconds (1000–1800000; default 60000). Ignored for background and Responder jobs, which have no execution deadline. No command-based budget or seconds conversion.",
|
|
11
|
+
},
|
|
9
12
|
name: {
|
|
10
13
|
type: "string",
|
|
11
14
|
description: "Short label for a background job, e.g. \"api dev server\".",
|
|
@@ -13,7 +16,7 @@ export const TOOL_DEFINITIONS_SHELL = [
|
|
|
13
16
|
background: {
|
|
14
17
|
type: "string",
|
|
15
18
|
enum: ["auto", "never", "always"],
|
|
16
|
-
description:
|
|
19
|
+
description: 'Omitted or auto (legacy compatibility): foreground unless responder:true is explicitly chosen; no heuristic backgrounding. never: force foreground even with responder:true. always: explicitly start a durable job, pollable unless responder:true.',
|
|
17
20
|
},
|
|
18
21
|
responder: {
|
|
19
22
|
type: "boolean",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/tools/definitions/shell.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACtD,GAAG,CACD,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/tools/definitions/shell.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACtD,GAAG,CACD,YAAY,EACZ,uzBAAuzB,EACvzB;QACE,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvB,SAAS,EAAE;gBACT,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,0MAA0M;aACxN;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4DAA4D;aAC1E;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;gBACjC,WAAW,EACT,sPAAsP;aACzP;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,4NAA4N;aAC/N;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,gKAAgK;aACnK;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;QACrB,oBAAoB,EAAE,KAAK;KAC5B,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB;IACD,GAAG,CACD,YAAY,EACZ,qKAAqK,EACrK,WAAW,EACX,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB;IACD,GAAG,CACD,YAAY,EACZ,4UAA4U,EAC5U;QACE,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1B,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,yEAAyE;aAC5E;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;gBACtC,WAAW,EAAE,0CAA0C;aACxD;SACF;QACD,QAAQ,EAAE,CAAC,IAAI,CAAC;QAChB,oBAAoB,EAAE,KAAK;KAC5B,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB;IACD,GAAG,CACD,YAAY,EACZ,2FAA2F,EAC3F;QACE,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QACtC,QAAQ,EAAE,CAAC,IAAI,CAAC;QAChB,oBAAoB,EAAE,KAAK;KAC5B,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB;IACD,GAAG,CACD,YAAY,EACZ,8fAA8f,EAC9f;QACE,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,SAAS,EAAE;gBACT,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,oDAAoD;aAClE;SACF;QACD,QAAQ,EAAE,CAAC,IAAI,CAAC;QAChB,oBAAoB,EAAE,KAAK;KAC5B,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB;CACF,CAAC"}
|
|
@@ -11,6 +11,7 @@ export type PreparedElevation = {
|
|
|
11
11
|
result: ToolResult;
|
|
12
12
|
};
|
|
13
13
|
export declare function preparePrivilegedBackgroundArgv(command: string, argv: string[], options: {
|
|
14
|
+
cwd?: string | undefined;
|
|
14
15
|
signal?: AbortSignal | undefined;
|
|
15
16
|
onOutput?: ToolRunOptions["onOutput"];
|
|
16
17
|
requestSecret?: ToolRunOptions["requestSecret"];
|
|
@@ -40,6 +40,7 @@ export async function preparePrivilegedBackgroundArgv(command, argv, options, de
|
|
|
40
40
|
}
|
|
41
41
|
const outcome = await obtainSudoPassword({
|
|
42
42
|
requestSecret: options.requestSecret,
|
|
43
|
+
operation: { name: "shell.exec", args: { executable: "sudo", argv: ["-S", "-p", "", command, ...argv], cwd: options.cwd } },
|
|
43
44
|
title: options.title ?? "Administrator access",
|
|
44
45
|
prompt: options.prompt ??
|
|
45
46
|
"Enter your password for sudo. It is sent only to sudo stdin, kept in memory for a few minutes so parallel privileged commands don't ask again, and never written to disk. Esc cancels.",
|
|
@@ -126,6 +127,7 @@ export async function tryRunElevatedWithoutTty(command, options, dependencies =
|
|
|
126
127
|
const run = dependencies.run ?? spawnArgv;
|
|
127
128
|
const outcome = await obtainSudoPassword({
|
|
128
129
|
requestSecret: options.requestSecret,
|
|
130
|
+
operation: { name: "shell.exec", args: { command, cwd: options.cwd, executable: "sudo", argv: ["-S", "-p", "", "sh", "-c", command], timeoutMs: options.timeoutMs } },
|
|
129
131
|
title: "Administrator access",
|
|
130
132
|
prompt: `Enter your password for sudo. Command: ${truncateForPrompt(command)}. It is sent only to sudo stdin, kept in memory for a few minutes so parallel privileged commands don't ask again, and never written to disk. Esc cancels.`,
|
|
131
133
|
...(options.signal ? { signal: options.signal } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elevated-shell.js","sourceRoot":"","sources":["../../src/tools/elevated-shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAInD,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAM5D,MAAM,gBAAgB,GACpB,wGAAwG;IACxG,4GAA4G;IAC5G,6EAA6E,CAAC;AAEhF,MAAM,yBAAyB,GAC7B,0FAA0F;IAC1F,qFAAqF,CAAC;AAExF,SAAS,iBAAiB,CAAC,OAAe,EAAE,GAAG,GAAG,GAAG;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,OAAO,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,OAAe,EACf,IAAc,EACd,
|
|
1
|
+
{"version":3,"file":"elevated-shell.js","sourceRoot":"","sources":["../../src/tools/elevated-shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const DEFAULT_READ_MAX_BYTES: number;
|
|
2
|
+
export declare function clipReadText(text: string, maxBytes: number): string;
|
|
3
|
+
export declare class ReadOutputBudget {
|
|
4
|
+
private remaining;
|
|
5
|
+
truncated: boolean;
|
|
6
|
+
constructor(maxBytes?: number);
|
|
7
|
+
take(line: string): string | undefined;
|
|
8
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export const DEFAULT_READ_MAX_BYTES = 8 * 1024 * 1024;
|
|
2
|
+
export function clipReadText(text, maxBytes) {
|
|
3
|
+
const candidate = text.slice(0, maxBytes);
|
|
4
|
+
if (Buffer.byteLength(candidate, "utf8") <= maxBytes)
|
|
5
|
+
return candidate;
|
|
6
|
+
const buffer = Buffer.from(candidate, "utf8");
|
|
7
|
+
let end = maxBytes;
|
|
8
|
+
while (end > 0 && (buffer[end] & 0xc0) === 0x80)
|
|
9
|
+
end -= 1;
|
|
10
|
+
return buffer.subarray(0, end).toString("utf8");
|
|
11
|
+
}
|
|
12
|
+
export class ReadOutputBudget {
|
|
13
|
+
remaining;
|
|
14
|
+
truncated = false;
|
|
15
|
+
constructor(maxBytes = DEFAULT_READ_MAX_BYTES) {
|
|
16
|
+
this.remaining = maxBytes;
|
|
17
|
+
}
|
|
18
|
+
take(line) {
|
|
19
|
+
if (this.remaining < 1) {
|
|
20
|
+
this.truncated = true;
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
const text = clipReadText(line, this.remaining - 1);
|
|
24
|
+
this.remaining -= Buffer.byteLength(text, "utf8") + 1;
|
|
25
|
+
if (text !== line)
|
|
26
|
+
this.truncated = true;
|
|
27
|
+
return text;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=read-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-budget.js","sourceRoot":"","sources":["../../../src/tools/fs/read-budget.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtD,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,QAAgB;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,QAAQ;QAAE,OAAO,SAAS,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,GAAG,IAAI,CAAC,KAAK,IAAI;QAAE,GAAG,IAAI,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,OAAO,gBAAgB;IACnB,SAAS,CAAS;IAC1B,SAAS,GAAG,KAAK,CAAC;IAElB,YAAY,QAAQ,GAAG,sBAAsB;QAC3C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,IAAY;QACf,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,IAAI,KAAK,IAAI;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { FsReadOptions } from "../fs.js";
|
|
2
|
+
export declare const MAX_FS_READ_FILES = 6;
|
|
3
|
+
export declare const FS_READ_OPTION_KEYS: readonly ["offset", "limit", "startLine", "endLine", "pattern", "context", "maxMatches", "caseInsensitive", "maxBytes"];
|
|
4
|
+
export interface FsReadFileInput extends FsReadOptions {
|
|
5
|
+
path: string;
|
|
6
|
+
}
|
|
7
|
+
type ReadInputResult = {
|
|
8
|
+
ok: true;
|
|
9
|
+
files: FsReadFileInput[];
|
|
10
|
+
multiple: boolean;
|
|
11
|
+
} | {
|
|
12
|
+
ok: false;
|
|
13
|
+
error: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function parseFsReadInput(args: Record<string, unknown>): ReadInputResult;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export const MAX_FS_READ_FILES = 6;
|
|
2
|
+
export const FS_READ_OPTION_KEYS = [
|
|
3
|
+
"offset", "limit", "startLine", "endLine", "pattern", "context",
|
|
4
|
+
"maxMatches", "caseInsensitive", "maxBytes",
|
|
5
|
+
];
|
|
6
|
+
const USAGE = 'Use {"path":"src/app.ts","offset":1,"limit":80} for one file, or {"files":[{"path":"src/app.ts","limit":80},{"path":"src/config.ts","pattern":"export","context":2}]} for 1–6 relevant files. Put each file’s options inside its entry; use exactly one of path or files.';
|
|
7
|
+
function readFileInput(raw, label) {
|
|
8
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
|
|
9
|
+
throw new Error(`${label} must be an object with a path and optional read filters.`);
|
|
10
|
+
}
|
|
11
|
+
const args = raw;
|
|
12
|
+
const unknown = Object.keys(args).find((key) => key !== "path" && !FS_READ_OPTION_KEYS.includes(key));
|
|
13
|
+
if (unknown)
|
|
14
|
+
throw new Error(`${label}.${unknown} is not a read option. Put offset/limit, startLine/endLine, pattern/context, maxMatches, caseInsensitive or maxBytes directly beside path.`);
|
|
15
|
+
if (typeof args.path !== "string" || !args.path.trim()) {
|
|
16
|
+
throw new Error(`${label}.path must be a non-empty string.`);
|
|
17
|
+
}
|
|
18
|
+
const file = { path: args.path };
|
|
19
|
+
for (const key of FS_READ_OPTION_KEYS) {
|
|
20
|
+
const value = args[key];
|
|
21
|
+
if (value === undefined || value === null)
|
|
22
|
+
continue;
|
|
23
|
+
if (key === "pattern") {
|
|
24
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
25
|
+
throw new Error(`${label}.pattern must be a non-empty regex string.`);
|
|
26
|
+
}
|
|
27
|
+
file.pattern = value;
|
|
28
|
+
}
|
|
29
|
+
else if (key === "caseInsensitive") {
|
|
30
|
+
if (typeof value !== "boolean")
|
|
31
|
+
throw new Error(`${label}.${key} must be true or false.`);
|
|
32
|
+
file.caseInsensitive = value;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const number = typeof value === "string" && value.trim() ? Number(value) : value;
|
|
36
|
+
const minimum = key === "offset" || key === "startLine" || key === "context" ? 0 : 1;
|
|
37
|
+
if (typeof number !== "number" || !Number.isSafeInteger(number) || number < minimum) {
|
|
38
|
+
throw new Error(`${label}.${key} must be an integer >= ${minimum}.`);
|
|
39
|
+
}
|
|
40
|
+
file[key] = number;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return file;
|
|
44
|
+
}
|
|
45
|
+
export function parseFsReadInput(args) {
|
|
46
|
+
try {
|
|
47
|
+
if (args.files !== undefined && args.files !== null) {
|
|
48
|
+
if (args.path !== undefined && args.path !== null) {
|
|
49
|
+
throw new Error("fs.read received both path and files.");
|
|
50
|
+
}
|
|
51
|
+
if (!Array.isArray(args.files) || args.files.length < 1 || args.files.length > MAX_FS_READ_FILES) {
|
|
52
|
+
throw new Error(`fs.read files must be an array of 1–${MAX_FS_READ_FILES} file objects.`);
|
|
53
|
+
}
|
|
54
|
+
const sharedOption = FS_READ_OPTION_KEYS.find((key) => args[key] !== undefined && args[key] !== null);
|
|
55
|
+
if (sharedOption)
|
|
56
|
+
throw new Error(`Move ${sharedOption} into the appropriate files entry.`);
|
|
57
|
+
const unknown = Object.keys(args).find((key) => key !== "files" && key !== "path");
|
|
58
|
+
if (unknown)
|
|
59
|
+
throw new Error(`fs.read.${unknown} is not supported in files mode; place read filters directly inside each file entry.`);
|
|
60
|
+
return {
|
|
61
|
+
ok: true,
|
|
62
|
+
files: args.files.map((file, index) => readFileInput(file, `files[${index}]`)),
|
|
63
|
+
multiple: true,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const { files: _unused, ...single } = args;
|
|
67
|
+
return { ok: true, files: [readFileInput(single, "fs.read")], multiple: false };
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
return { ok: false, error: `${error instanceof Error ? error.message : String(error)}\n${USAGE}` };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=read-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-input.js","sourceRoot":"","sources":["../../../src/tools/fs/read-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ToolResult } from "../../types.js";
|
|
2
|
+
import { type FsReadFileInput } from "./read-input.js";
|
|
3
|
+
export declare function fsReadMany(files: readonly FsReadFileInput[], options?: {
|
|
4
|
+
confirmed?: boolean | undefined;
|
|
5
|
+
signal?: AbortSignal | undefined;
|
|
6
|
+
}): Promise<ToolResult>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { fsRead } from "./read.js";
|
|
2
|
+
import { MAX_FS_READ_FILES } from "./read-input.js";
|
|
3
|
+
import { boundFsReadOutput, formatFsReadSection } from "./read-sections.js";
|
|
4
|
+
const BATCH_MAX_BYTES = 256 * 1024;
|
|
5
|
+
const READ_CONCURRENCY = 3;
|
|
6
|
+
export async function fsReadMany(files, options = {}) {
|
|
7
|
+
if (files.length < 1 || files.length > MAX_FS_READ_FILES) {
|
|
8
|
+
return { ok: false, exitCode: 1, output: `fs.read accepts 1–${MAX_FS_READ_FILES} files per call.` };
|
|
9
|
+
}
|
|
10
|
+
options.signal?.throwIfAborted();
|
|
11
|
+
const results = new Array(files.length);
|
|
12
|
+
const maxBytes = Math.floor(BATCH_MAX_BYTES / files.length);
|
|
13
|
+
let next = 0;
|
|
14
|
+
const worker = async () => {
|
|
15
|
+
while (next < files.length) {
|
|
16
|
+
options.signal?.throwIfAborted();
|
|
17
|
+
const index = next++;
|
|
18
|
+
const { path, ...filters } = files[index];
|
|
19
|
+
try {
|
|
20
|
+
results[index] = await fsRead(path, {
|
|
21
|
+
...filters,
|
|
22
|
+
...options,
|
|
23
|
+
maxBytes: Math.min(filters.maxBytes ?? maxBytes, maxBytes),
|
|
24
|
+
});
|
|
25
|
+
options.signal?.throwIfAborted();
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
options.signal?.throwIfAborted();
|
|
29
|
+
results[index] = { ok: false, exitCode: 1, output: error instanceof Error ? error.message : String(error) };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const settled = await Promise.allSettled(Array.from({ length: Math.min(READ_CONCURRENCY, files.length) }, worker));
|
|
34
|
+
const rejected = settled.find((result) => result.status === "rejected");
|
|
35
|
+
if (rejected?.status === "rejected")
|
|
36
|
+
throw rejected.reason;
|
|
37
|
+
const failed = results.filter((result) => !result.ok).length;
|
|
38
|
+
const output = results.map((result, index) => formatFsReadSection({
|
|
39
|
+
index: index + 1, total: files.length, path: files[index].path,
|
|
40
|
+
ok: result.ok, body: result.output || "(empty file)",
|
|
41
|
+
})).join("\n\n");
|
|
42
|
+
const bounded = boundFsReadOutput(output, BATCH_MAX_BYTES);
|
|
43
|
+
return {
|
|
44
|
+
ok: failed === 0,
|
|
45
|
+
...(failed > 0 ? { exitCode: 1 } : {}),
|
|
46
|
+
truncated: bounded !== output || results.some((result) => result.truncated),
|
|
47
|
+
output: bounded,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=read-many.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-many.js","sourceRoot":"","sources":["../../../src/tools/fs/read-many.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface FsReadSection {
|
|
2
|
+
readonly index: number;
|
|
3
|
+
readonly total: number;
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly ok: boolean;
|
|
6
|
+
readonly body: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function formatFsReadSection(section: FsReadSection): string;
|
|
9
|
+
export declare function parseFsReadSections(output: string): FsReadSection[];
|
|
10
|
+
export declare function isFsReadMultiOutput(output: string): boolean;
|
|
11
|
+
export declare function boundFsReadOutput(output: string, maxChars: number): string;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { MAX_FS_READ_FILES } from "./read-input.js";
|
|
2
|
+
const HEADER = /^# fs\.read file=(\d+)\/(\d+) path=("(?:\\.|[^"\\])*") status=(ok|failed)$/m;
|
|
3
|
+
export function formatFsReadSection(section) {
|
|
4
|
+
return `# fs.read file=${section.index}/${section.total} path=${JSON.stringify(section.path)} status=${section.ok ? "ok" : "failed"}\n${section.body}\n# end fs.read file=${section.index}/${section.total}`;
|
|
5
|
+
}
|
|
6
|
+
export function parseFsReadSections(output) {
|
|
7
|
+
const sections = [];
|
|
8
|
+
const pattern = new RegExp(HEADER.source, "gm");
|
|
9
|
+
let header;
|
|
10
|
+
while (sections.length < MAX_FS_READ_FILES && (header = pattern.exec(output))) {
|
|
11
|
+
const index = Number(header[1]);
|
|
12
|
+
const total = Number(header[2]);
|
|
13
|
+
if (total < 1 || total > MAX_FS_READ_FILES || index < 1 || index > total)
|
|
14
|
+
continue;
|
|
15
|
+
let path;
|
|
16
|
+
try {
|
|
17
|
+
path = JSON.parse(header[3]);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const start = header.index + header[0].length + 1;
|
|
23
|
+
const endMarker = `\n# end fs.read file=${index}/${total}`;
|
|
24
|
+
const marker = output.indexOf(endMarker, start);
|
|
25
|
+
const next = marker < 0 ? pattern.exec(output) : undefined;
|
|
26
|
+
const end = marker >= start ? marker : next?.index ?? output.length;
|
|
27
|
+
pattern.lastIndex = marker >= start ? marker + endMarker.length : end;
|
|
28
|
+
sections.push({ index, total, path, ok: header[4] === "ok", body: output.slice(start, end).trimEnd() });
|
|
29
|
+
}
|
|
30
|
+
return sections;
|
|
31
|
+
}
|
|
32
|
+
export function isFsReadMultiOutput(output) {
|
|
33
|
+
return HEADER.test(output);
|
|
34
|
+
}
|
|
35
|
+
export function boundFsReadOutput(output, maxChars) {
|
|
36
|
+
if (output.length <= maxChars)
|
|
37
|
+
return output;
|
|
38
|
+
const sections = parseFsReadSections(output);
|
|
39
|
+
if (sections.length === 0)
|
|
40
|
+
return output;
|
|
41
|
+
const prefix = output.slice(0, HEADER.exec(output)?.index ?? 0);
|
|
42
|
+
const notice = "\n# Output clipped; re-read this path with narrower filters. Coverage is incomplete.\n";
|
|
43
|
+
const pathBudget = Math.max(32, Math.floor(maxChars / (sections.length * 4)));
|
|
44
|
+
const bounded = sections.map((section) => ({
|
|
45
|
+
...section,
|
|
46
|
+
path: section.path.length <= pathBudget ? section.path : `${section.path.slice(0, pathBudget - 1)}…`,
|
|
47
|
+
}));
|
|
48
|
+
const headersSize = prefix.length + bounded.reduce((size, section) => size + formatFsReadSection({ ...section, body: "" }).length + 2, 0);
|
|
49
|
+
if (headersSize >= maxChars) {
|
|
50
|
+
const note = "\nBodies omitted; coverage is incomplete. Re-read with narrower filters.";
|
|
51
|
+
const available = Math.max(0, maxChars - prefix.length - note.length);
|
|
52
|
+
const rowBudget = Math.max(0, Math.floor(available / sections.length) - 1);
|
|
53
|
+
const rows = sections.map((section) => {
|
|
54
|
+
const label = `${section.index}/${section.total} ${section.ok ? "ok" : "failed"}: `;
|
|
55
|
+
return `${label}${section.path.slice(0, Math.max(0, rowBudget - label.length))}`.slice(0, rowBudget);
|
|
56
|
+
});
|
|
57
|
+
return `${prefix}${rows.join("\n")}${note}`.slice(0, maxChars);
|
|
58
|
+
}
|
|
59
|
+
const budget = Math.max(0, Math.floor((maxChars - headersSize) / bounded.length));
|
|
60
|
+
return prefix + bounded.map((section) => {
|
|
61
|
+
if (section.body.length <= budget)
|
|
62
|
+
return formatFsReadSection(section);
|
|
63
|
+
if (budget <= notice.length)
|
|
64
|
+
return formatFsReadSection({ ...section, body: notice.trim().slice(0, budget) });
|
|
65
|
+
const contentBudget = budget - notice.length;
|
|
66
|
+
const head = Math.ceil(contentBudget * 0.7);
|
|
67
|
+
const tail = contentBudget - head;
|
|
68
|
+
return formatFsReadSection({ ...section, body: `${section.body.slice(0, head)}${notice}${tail > 0 ? section.body.slice(-tail) : ""}` });
|
|
69
|
+
}).join("\n\n");
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=read-sections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-sections.js","sourceRoot":"","sources":["../../../src/tools/fs/read-sections.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,5 +10,5 @@ export declare function resolveLineWindow(options: FsReadOptions): {
|
|
|
10
10
|
ok: false;
|
|
11
11
|
error: string;
|
|
12
12
|
};
|
|
13
|
-
export declare function readLineWindow(resolved: string, start: number, limit: number, fileBytes: number, note?: string): Promise<ToolResult>;
|
|
13
|
+
export declare function readLineWindow(resolved: string, start: number, limit: number, fileBytes: number, note?: string, maxBytes?: number, signal?: AbortSignal): Promise<ToolResult>;
|
|
14
14
|
export declare function readByPattern(resolved: string, options: FsReadOptions, fileBytes: number): Promise<ToolResult>;
|