@qduc/term2 0.8.0 → 0.9.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/README.md +397 -0
- package/dist/agent.d.ts +1 -9
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +2 -127
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +21 -12
- package/dist/app.js.map +1 -1
- package/dist/commands/effort-command.d.ts +2 -2
- package/dist/commands/effort-command.d.ts.map +1 -1
- package/dist/commands/effort-command.js +3 -3
- package/dist/commands/effort-command.js.map +1 -1
- package/dist/commands/guarded-settings-command.d.ts +2 -2
- package/dist/commands/guarded-settings-command.d.ts.map +1 -1
- package/dist/commands/guarded-settings-command.js +2 -2
- package/dist/commands/guarded-settings-command.js.map +1 -1
- package/dist/commands/model-command.d.ts +2 -2
- package/dist/commands/model-command.d.ts.map +1 -1
- package/dist/commands/model-command.js +2 -2
- package/dist/commands/model-command.js.map +1 -1
- package/dist/commands/skills-command.d.ts +1 -1
- package/dist/commands/skills-command.d.ts.map +1 -1
- package/dist/commands/skills-command.js +1 -1
- package/dist/commands/skills-command.js.map +1 -1
- package/dist/commands/undo-command.d.ts +2 -2
- package/dist/commands/undo-command.d.ts.map +1 -1
- package/dist/commands/undo-command.js +2 -2
- package/dist/commands/undo-command.js.map +1 -1
- package/dist/components/Input/insertions.d.ts +2 -0
- package/dist/components/Input/insertions.d.ts.map +1 -1
- package/dist/components/Input/insertions.js +6 -3
- package/dist/components/Input/insertions.js.map +1 -1
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +26 -12
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/components/MarkdownRenderer.js +2 -1
- package/dist/components/MarkdownRenderer.js.map +1 -1
- package/dist/components/layout/BottomArea.d.ts.map +1 -1
- package/dist/components/layout/BottomArea.js +2 -0
- package/dist/components/layout/BottomArea.js.map +1 -1
- package/dist/components/layout/DiffView.d.ts.map +1 -1
- package/dist/components/layout/DiffView.js +33 -26
- package/dist/components/layout/DiffView.js.map +1 -1
- package/dist/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/components/layout/StatusBar.js +6 -3
- package/dist/components/layout/StatusBar.js.map +1 -1
- package/dist/components/message/CommandMessage.d.ts.map +1 -1
- package/dist/components/message/CommandMessage.js +6 -4
- package/dist/components/message/CommandMessage.js.map +1 -1
- package/dist/components/message/command-message-helpers.d.ts +1 -1
- package/dist/components/message/command-message-helpers.d.ts.map +1 -1
- package/dist/components/message/command-message-helpers.js +8 -7
- package/dist/components/message/command-message-helpers.js.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.js +101 -14
- package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
- package/dist/context/InputContext.d.ts +4 -0
- package/dist/context/InputContext.d.ts.map +1 -1
- package/dist/context/InputContext.js +5 -1
- package/dist/context/InputContext.js.map +1 -1
- package/dist/contracts/conversation.d.ts +22 -0
- package/dist/contracts/conversation.d.ts.map +1 -1
- package/dist/contracts/conversation.js +11 -1
- package/dist/contracts/conversation.js.map +1 -1
- package/dist/hooks/use-app-commands.d.ts +2 -2
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-app-commands.js +7 -7
- package/dist/hooks/use-app-commands.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +13 -8
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-handoff-flow.d.ts +3 -2
- package/dist/hooks/use-handoff-flow.d.ts.map +1 -1
- package/dist/hooks/use-handoff-flow.js +28 -18
- package/dist/hooks/use-handoff-flow.js.map +1 -1
- package/dist/hooks/use-mode-handlers.js +1 -2
- package/dist/hooks/use-mode-handlers.js.map +1 -1
- package/dist/hooks/use-model-selection.d.ts.map +1 -1
- package/dist/hooks/use-model-selection.js +6 -2
- package/dist/hooks/use-model-selection.js.map +1 -1
- package/dist/hooks/use-path-completion.d.ts.map +1 -1
- package/dist/hooks/use-path-completion.js +4 -2
- package/dist/hooks/use-path-completion.js.map +1 -1
- package/dist/hooks/use-pending-turn-guards.d.ts +2 -2
- package/dist/hooks/use-pending-turn-guards.d.ts.map +1 -1
- package/dist/hooks/use-pending-turn-guards.js +8 -8
- package/dist/hooks/use-pending-turn-guards.js.map +1 -1
- package/dist/hooks/use-provider-selection.js +19 -18
- package/dist/hooks/use-provider-selection.js.map +1 -1
- package/dist/hooks/use-selection.d.ts.map +1 -1
- package/dist/hooks/use-selection.js +5 -1
- package/dist/hooks/use-selection.js.map +1 -1
- package/dist/hooks/use-setting.d.ts.map +1 -1
- package/dist/hooks/use-setting.js +3 -5
- package/dist/hooks/use-setting.js.map +1 -1
- package/dist/hooks/use-settings-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-completion.js +19 -7
- package/dist/hooks/use-settings-completion.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-value-completion.js +13 -2
- package/dist/hooks/use-settings-value-completion.js.map +1 -1
- package/dist/hooks/use-shell-mode.d.ts +2 -2
- package/dist/hooks/use-shell-mode.d.ts.map +1 -1
- package/dist/hooks/use-shell-mode.js +5 -3
- package/dist/hooks/use-shell-mode.js.map +1 -1
- package/dist/hooks/use-skill-selection.js +3 -3
- package/dist/hooks/use-skill-selection.js.map +1 -1
- package/dist/hooks/use-slash-commands.js +3 -3
- package/dist/hooks/use-slash-commands.js.map +1 -1
- package/dist/hooks/use-terminal-width.js +2 -2
- package/dist/hooks/use-terminal-width.js.map +1 -1
- package/dist/hooks/use-undo-selection.d.ts.map +1 -1
- package/dist/hooks/use-undo-selection.js +3 -1
- package/dist/hooks/use-undo-selection.js.map +1 -1
- package/dist/lib/agent-chat-service.js +2 -2
- package/dist/lib/agent-chat-service.js.map +1 -1
- package/dist/lib/agent-run-orchestrator.js +1 -1
- package/dist/lib/agent-run-orchestrator.js.map +1 -1
- package/dist/lib/subagent-bridge.d.ts.map +1 -1
- package/dist/lib/subagent-bridge.js +15 -3
- package/dist/lib/subagent-bridge.js.map +1 -1
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +0 -2
- package/dist/non-interactive.js.map +1 -1
- package/dist/prompts/anthropic.md +1 -0
- package/dist/prompts/codex.md +1 -0
- package/dist/prompts/gpt-5-modern.md +1 -0
- package/dist/prompts/gpt-5.5.md +1 -0
- package/dist/prompts/kimi.md +3 -1
- package/dist/prompts/prompt-constructor.js +2 -2
- package/dist/prompts/prompt-constructor.js.map +1 -1
- package/dist/prompts/prompt-constructor.ts +2 -2
- package/dist/prompts/subagent-delegation.js +1 -1
- package/dist/prompts/subagent-delegation.ts +1 -1
- package/dist/providers/codex-responses-model.d.ts.map +1 -1
- package/dist/providers/codex-responses-model.js +4 -3
- package/dist/providers/codex-responses-model.js.map +1 -1
- package/dist/providers/openai-compatible-middleware.js +1 -1
- package/dist/providers/openai-compatible-middleware.js.map +1 -1
- package/dist/providers/openai-compatible.provider.js +1 -1
- package/dist/providers/openai-compatible.provider.js.map +1 -1
- package/dist/scripts/eval-auto-approval/runner.js +1 -1
- package/dist/scripts/eval-auto-approval/runner.js.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.js +41 -1
- package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
- package/dist/services/approval/shell-sandbox-approval.d.ts +2 -0
- package/dist/services/approval/shell-sandbox-approval.d.ts.map +1 -0
- package/dist/services/approval/shell-sandbox-approval.js +7 -0
- package/dist/services/approval/shell-sandbox-approval.js.map +1 -0
- package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.js +4 -2
- package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
- package/dist/services/conversation/conversation-replay.js +1 -1
- package/dist/services/conversation/conversation-replay.js.map +1 -1
- package/dist/services/conversation/conversation-result-builder.d.ts +2 -0
- package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
- package/dist/services/conversation/conversation-result-builder.js +31 -2
- package/dist/services/conversation/conversation-result-builder.js.map +1 -1
- package/dist/services/logging/logging-service.js +2 -2
- package/dist/services/logging/logging-service.js.map +1 -1
- package/dist/services/rtk-service.d.ts.map +1 -1
- package/dist/services/rtk-service.js +6 -2
- package/dist/services/rtk-service.js.map +1 -1
- package/dist/services/session/session-input-planner.d.ts.map +1 -1
- package/dist/services/session/session-input-planner.js +22 -2
- package/dist/services/session/session-input-planner.js.map +1 -1
- package/dist/services/session/session-tool-tracker.d.ts +13 -0
- package/dist/services/session/session-tool-tracker.d.ts.map +1 -1
- package/dist/services/session/session-tool-tracker.js +18 -3
- package/dist/services/session/session-tool-tracker.js.map +1 -1
- package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts +12 -0
- package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts.map +1 -0
- package/dist/services/session/test-helpers/conversation-session-fixtures.js +29 -0
- package/dist/services/session/test-helpers/conversation-session-fixtures.js.map +1 -0
- package/dist/services/settings/settings-merger.d.ts.map +1 -1
- package/dist/services/settings/settings-merger.js +7 -5
- package/dist/services/settings/settings-merger.js.map +1 -1
- package/dist/services/settings/settings-persistence.js +1 -1
- package/dist/services/settings/settings-persistence.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +25 -0
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +23 -2
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +5 -0
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/skills/skills-service.d.ts.map +1 -1
- package/dist/services/skills/skills-service.js +3 -10
- package/dist/services/skills/skills-service.js.map +1 -1
- package/dist/services/subagents/role-loader.js +3 -3
- package/dist/services/subagents/role-loader.js.map +1 -1
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts +35 -0
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts.map +1 -0
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js +174 -0
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js.map +1 -0
- package/dist/services/subagents/tool-policy.d.ts.map +1 -1
- package/dist/services/subagents/tool-policy.js +18 -0
- package/dist/services/subagents/tool-policy.js.map +1 -1
- package/dist/services/tool-execution-ledger.d.ts +41 -0
- package/dist/services/tool-execution-ledger.d.ts.map +1 -1
- package/dist/services/tool-execution-ledger.js +113 -0
- package/dist/services/tool-execution-ledger.js.map +1 -1
- package/dist/tools/agent/activate-skill.js +1 -1
- package/dist/tools/agent/activate-skill.js.map +1 -1
- package/dist/tools/agent/ask-user.d.ts.map +1 -1
- package/dist/tools/agent/ask-user.js +4 -15
- package/dist/tools/agent/ask-user.js.map +1 -1
- package/dist/tools/agent/run-subagent.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent.js +2 -5
- package/dist/tools/agent/run-subagent.js.map +1 -1
- package/dist/tools/file/apply-patch.js +2 -2
- package/dist/tools/file/apply-patch.js.map +1 -1
- package/dist/tools/file/create-file.d.ts.map +1 -1
- package/dist/tools/file/create-file.js +2 -5
- package/dist/tools/file/create-file.js.map +1 -1
- package/dist/tools/file/find-files.d.ts.map +1 -1
- package/dist/tools/file/find-files.js +21 -18
- package/dist/tools/file/find-files.js.map +1 -1
- package/dist/tools/file/read-file.d.ts.map +1 -1
- package/dist/tools/file/read-file.js +17 -3
- package/dist/tools/file/read-file.js.map +1 -1
- package/dist/tools/file/search-replace.d.ts.map +1 -1
- package/dist/tools/file/search-replace.js +2 -3
- package/dist/tools/file/search-replace.js.map +1 -1
- package/dist/tools/format-helpers.js +0 -2
- package/dist/tools/format-helpers.js.map +1 -1
- package/dist/tools/languages/csharp.js +1 -1
- package/dist/tools/languages/csharp.js.map +1 -1
- package/dist/tools/languages/java.js +1 -1
- package/dist/tools/languages/java.js.map +1 -1
- package/dist/tools/system/code-context.d.ts.map +1 -1
- package/dist/tools/system/code-context.js +28 -10
- package/dist/tools/system/code-context.js.map +1 -1
- package/dist/tools/system/grep.d.ts.map +1 -1
- package/dist/tools/system/grep.js +6 -14
- package/dist/tools/system/grep.js.map +1 -1
- package/dist/tools/system/shell.d.ts +9 -1
- package/dist/tools/system/shell.d.ts.map +1 -1
- package/dist/tools/system/shell.js +115 -7
- package/dist/tools/system/shell.js.map +1 -1
- package/dist/tools/utils.d.ts +4 -0
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +13 -0
- package/dist/tools/utils.js.map +1 -1
- package/dist/tools/web/web-fetch.js +1 -1
- package/dist/tools/web/web-fetch.js.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.js +1 -1
- package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
- package/dist/utils/conversation/test-helpers/event-handler-fixtures.d.ts +31 -0
- package/dist/utils/conversation/test-helpers/event-handler-fixtures.d.ts.map +1 -0
- package/dist/utils/conversation/test-helpers/event-handler-fixtures.js +42 -0
- package/dist/utils/conversation/test-helpers/event-handler-fixtures.js.map +1 -0
- package/dist/utils/output/output-trim.d.ts +1 -1
- package/dist/utils/output/output-trim.js +1 -1
- package/dist/utils/project-tree.d.ts +7 -12
- package/dist/utils/project-tree.d.ts.map +1 -1
- package/dist/utils/project-tree.js +184 -83
- package/dist/utils/project-tree.js.map +1 -1
- package/dist/utils/settings-command.d.ts +2 -2
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +2 -2
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/shell/command-safety/find-helpers.js +1 -1
- package/dist/utils/shell/command-safety/find-helpers.js.map +1 -1
- package/dist/utils/shell/command-safety/handlers/git-handler.js +1 -1
- package/dist/utils/shell/command-safety/handlers/git-handler.js.map +1 -1
- package/dist/utils/shell/execute-shell.d.ts +2 -0
- package/dist/utils/shell/execute-shell.d.ts.map +1 -1
- package/dist/utils/shell/execute-shell.js +9 -6
- package/dist/utils/shell/execute-shell.js.map +1 -1
- package/dist/utils/shell/sandbox/denied-read-detector.d.ts +39 -0
- package/dist/utils/shell/sandbox/denied-read-detector.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/denied-read-detector.js +250 -0
- package/dist/utils/shell/sandbox/denied-read-detector.js.map +1 -0
- package/dist/utils/shell/sandbox/denied-read-stores.d.ts +74 -0
- package/dist/utils/shell/sandbox/denied-read-stores.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/denied-read-stores.js +166 -0
- package/dist/utils/shell/sandbox/denied-read-stores.js.map +1 -0
- package/dist/utils/shell/sandbox/sandbox-env.d.ts +3 -0
- package/dist/utils/shell/sandbox/sandbox-env.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/sandbox-env.js +31 -0
- package/dist/utils/shell/sandbox/sandbox-env.js.map +1 -0
- package/dist/utils/shell/sandbox/sandbox-policy.d.ts +41 -0
- package/dist/utils/shell/sandbox/sandbox-policy.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/sandbox-policy.js +217 -0
- package/dist/utils/shell/sandbox/sandbox-policy.js.map +1 -0
- package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts +18 -0
- package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/shell-sandbox-runner.js +58 -0
- package/dist/utils/shell/sandbox/shell-sandbox-runner.js.map +1 -0
- package/dist/utils/shell/shell-output.d.ts.map +1 -1
- package/dist/utils/shell/shell-output.js +8 -6
- package/dist/utils/shell/shell-output.js.map +1 -1
- package/dist/utils/shell/temp-dir.d.ts +2 -0
- package/dist/utils/shell/temp-dir.d.ts.map +1 -0
- package/dist/utils/shell/temp-dir.js +38 -0
- package/dist/utils/shell/temp-dir.js.map +1 -0
- package/dist/utils/skill-discovery-paths.d.ts +5 -0
- package/dist/utils/skill-discovery-paths.d.ts.map +1 -0
- package/dist/utils/skill-discovery-paths.js +18 -0
- package/dist/utils/skill-discovery-paths.js.map +1 -0
- package/package.json +10 -16
- package/readme.md +0 -887
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-command.js","sourceRoot":"","sources":["../../source/utils/settings-command.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"settings-command.js","sourceRoot":"","sources":["../../source/utils/settings-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -97,7 +97,7 @@ export function hasFindSuspiciousFlags(args) {
|
|
|
97
97
|
const permValue = extractWordText(args[nextIdx]);
|
|
98
98
|
if (permValue) {
|
|
99
99
|
// Numeric SUID/SGID patterns (e.g., -4000, /6000)
|
|
100
|
-
const hasNumericSuid = /[
|
|
100
|
+
const hasNumericSuid = /[-/]?[2467]000/.test(permValue);
|
|
101
101
|
// Symbolic SUID/SGID patterns (e.g., -u+s, /g+s, +s)
|
|
102
102
|
const hasSymbolicSuid = /[ug]?\+s/.test(permValue);
|
|
103
103
|
if (hasNumericSuid || hasSymbolicSuid) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-helpers.js","sourceRoot":"","sources":["../../../../source/utils/shell/command-safety/find-helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"find-helpers.js","sourceRoot":"","sources":["../../../../source/utils/shell/command-safety/find-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ export const gitHandler = {
|
|
|
18
18
|
handle(node, helpers) {
|
|
19
19
|
const { extractWordText } = helpers;
|
|
20
20
|
const reasons = [];
|
|
21
|
-
|
|
21
|
+
const status = SafetyStatus.GREEN;
|
|
22
22
|
// Extract the git subcommand (first non-flag argument), skipping global
|
|
23
23
|
// options and any values they consume.
|
|
24
24
|
let gitSubcommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-handler.js","sourceRoot":"","sources":["../../../../../source/utils/shell/command-safety/handlers/git-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAG1F,wEAAwE;AACxE,+EAA+E;AAC/E,6EAA6E;AAC7E,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACvC,IAAI;IACJ,IAAI;IACJ,WAAW;IACX,aAAa;IACb,aAAa;IACb,aAAa;IACb,gBAAgB;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,MAAM,CAAC,IAAS,EAAE,OAA8B;QAC9C,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QACpC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,
|
|
1
|
+
{"version":3,"file":"git-handler.js","sourceRoot":"","sources":["../../../../../source/utils/shell/command-safety/handlers/git-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ type ExecImpl = (command: string, options: {
|
|
|
5
5
|
timeout?: number;
|
|
6
6
|
maxBuffer?: number;
|
|
7
7
|
detached?: boolean;
|
|
8
|
+
env?: NodeJS.ProcessEnv;
|
|
8
9
|
}, callback: ExecCallback) => ChildProcess;
|
|
9
10
|
export interface ShellExecutionResult {
|
|
10
11
|
stdout: string;
|
|
@@ -17,6 +18,7 @@ export interface ExecuteShellOptions {
|
|
|
17
18
|
cwd?: string;
|
|
18
19
|
timeout?: number;
|
|
19
20
|
maxBuffer?: number;
|
|
21
|
+
env?: NodeJS.ProcessEnv;
|
|
20
22
|
signal?: AbortSignal;
|
|
21
23
|
sshService?: ISSHService;
|
|
22
24
|
execImpl?: ExecImpl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-shell.d.ts","sourceRoot":"","sources":["../../../source/utils/shell/execute-shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-shell.d.ts","sourceRoot":"","sources":["../../../source/utils/shell/execute-shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAIxD,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;AAE3F,KAAK,QAAQ,GAAG,CACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,EAC5G,QAAQ,EAAE,YAAY,KACnB,YAAY,CAAC;AAIlB,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAeD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,oBAAoB,CAAC,CA+D/B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { exec } from 'child_process';
|
|
2
2
|
import process from 'process';
|
|
3
|
+
import { SANDBOX_TEMP_DIR } from './temp-dir.js';
|
|
3
4
|
const defaultExecImpl = exec;
|
|
4
5
|
function stopChildProcess(child) {
|
|
5
6
|
if (process.platform !== 'win32' && child.pid) {
|
|
@@ -14,22 +15,24 @@ function stopChildProcess(child) {
|
|
|
14
15
|
child.kill('SIGTERM');
|
|
15
16
|
}
|
|
16
17
|
export async function executeShellCommand(command, options = {}) {
|
|
17
|
-
const { cwd = process.cwd(), timeout, maxBuffer, signal, sshService, execImpl = defaultExecImpl } = options;
|
|
18
|
+
const { cwd = process.cwd(), timeout, maxBuffer, env, signal, sshService, execImpl = defaultExecImpl } = options;
|
|
18
19
|
if (sshService) {
|
|
19
20
|
return sshService.executeCommand(command, { cwd });
|
|
20
21
|
}
|
|
22
|
+
const childEnv = {
|
|
23
|
+
...(env ?? process.env),
|
|
24
|
+
TMPDIR: SANDBOX_TEMP_DIR,
|
|
25
|
+
};
|
|
21
26
|
try {
|
|
22
27
|
const result = await new Promise((resolve, reject) => {
|
|
23
|
-
let stopChild;
|
|
24
28
|
const child = execImpl(command, {
|
|
25
29
|
cwd,
|
|
26
30
|
timeout,
|
|
27
31
|
maxBuffer,
|
|
32
|
+
env: childEnv,
|
|
28
33
|
detached: process.platform !== 'win32',
|
|
29
34
|
}, (error, stdout, stderr) => {
|
|
30
|
-
|
|
31
|
-
signal?.removeEventListener('abort', stopChild);
|
|
32
|
-
}
|
|
35
|
+
signal?.removeEventListener('abort', stopChild);
|
|
33
36
|
if (error) {
|
|
34
37
|
error.stdout = stdout;
|
|
35
38
|
error.stderr = stderr;
|
|
@@ -38,7 +41,7 @@ export async function executeShellCommand(command, options = {}) {
|
|
|
38
41
|
}
|
|
39
42
|
resolve({ stdout, stderr });
|
|
40
43
|
});
|
|
41
|
-
stopChild = () => stopChildProcess(child);
|
|
44
|
+
const stopChild = () => stopChildProcess(child);
|
|
42
45
|
if (signal?.aborted) {
|
|
43
46
|
stopChild();
|
|
44
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-shell.js","sourceRoot":"","sources":["../../../source/utils/shell/execute-shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAqB,MAAM,eAAe,CAAC;AACxD,OAAO,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-shell.js","sourceRoot":"","sources":["../../../source/utils/shell/execute-shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Information extracted from a sandbox denied-read failure.
|
|
3
|
+
* `path` is the resolved real path of the denied file/dir (for display only).
|
|
4
|
+
* `suggestedParent` is the smallest stable useful parent to add to `allowRead`
|
|
5
|
+
* when the user chooses "allow once" or "allow and remember".
|
|
6
|
+
* `sensitive` suppresses the "allow and remember" option for credential-shaped paths.
|
|
7
|
+
*/
|
|
8
|
+
export interface DeniedReadInfo {
|
|
9
|
+
path: string;
|
|
10
|
+
suggestedParent: string;
|
|
11
|
+
sensitive: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Whether the given denied path is a credential-shaped or broad config root
|
|
15
|
+
* for which "allow and remember" must be suppressed.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isSensitiveReadPath(p: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Picks the smallest stable useful parent for a denied path.
|
|
20
|
+
* For known package-manager stores (pnpm, cargo, rustup, m2, etc.), returns the store root.
|
|
21
|
+
* For others, falls back to `dirname` of the denied path.
|
|
22
|
+
* Never collapses to the home root or broad config ancestors.
|
|
23
|
+
*/
|
|
24
|
+
export declare function suggestStableParent(p: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Attempt to detect a denied-read failure from sandbox runtime output.
|
|
27
|
+
* Returns null if no path can be extracted (falls back to the generic escape instruction).
|
|
28
|
+
*
|
|
29
|
+
* macOS: parses the `<sandbox_violations>` block emitted by SandboxManager.annotateStderrWithSandboxFailures.
|
|
30
|
+
* Linux (bwrap): parses common tool error patterns (Permission denied / Operation not permitted),
|
|
31
|
+
* since bwrap does not emit structured annotation events.
|
|
32
|
+
*/
|
|
33
|
+
export declare function detectDeniedRead(_command: string, stderr: string): DeniedReadInfo | null;
|
|
34
|
+
/**
|
|
35
|
+
* Instruction shown to the agent when a sandbox denied-read is detected,
|
|
36
|
+
* encouraging a same-parameter retry so the user can approve the read.
|
|
37
|
+
*/
|
|
38
|
+
export declare const DETAILED_DENIED_READ_INSTRUCTION = "Sandbox blocked a read access. Retry the same command; the user will be prompted to allow the read for this project.";
|
|
39
|
+
//# sourceMappingURL=denied-read-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"denied-read-detector.d.ts","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/denied-read-detector.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACpB;AAsDD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAqBtD;AA6BD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CA+BrD;AA+FD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAaxF;AAED;;;GAGG;AACH,eAAO,MAAM,gCAAgC,yHAC2E,CAAC"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import os from 'node:os';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
const home = os.homedir();
|
|
5
|
+
const SENSITIVE_SUBPATHS = [
|
|
6
|
+
path.join(home, '.ssh'),
|
|
7
|
+
path.join(home, '.aws'),
|
|
8
|
+
path.join(home, '.azure'),
|
|
9
|
+
path.join(home, '.config', 'gcloud'),
|
|
10
|
+
path.join(home, '.docker', 'config.json'),
|
|
11
|
+
path.join(home, '.docker'),
|
|
12
|
+
path.join(home, '.netrc'),
|
|
13
|
+
path.join(home, '.git-credentials'),
|
|
14
|
+
path.join(home, '.bash_history'),
|
|
15
|
+
path.join(home, '.zsh_history'),
|
|
16
|
+
path.join(home, '.npmrc'),
|
|
17
|
+
path.join(home, '.pypirc'),
|
|
18
|
+
path.join(home, '.kube'),
|
|
19
|
+
path.join(home, '.gnupg'),
|
|
20
|
+
path.join(home, '.config', 'gh'),
|
|
21
|
+
path.join(home, '.config', 'hub'),
|
|
22
|
+
path.join(home, '.gem'),
|
|
23
|
+
path.join(home, '.gemrc'),
|
|
24
|
+
path.join(home, '.config'),
|
|
25
|
+
path.join(home, '.local'),
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* Carve-outs under sensitive broad roots (e.g. ~/.local) that are NOT sensitive.
|
|
29
|
+
* Checked before the sensitive list so package-manager caches are allowable.
|
|
30
|
+
*/
|
|
31
|
+
const NON_SENSITIVE_SUBPATHS = [
|
|
32
|
+
path.join(home, '.local', 'share', 'pnpm', 'store'),
|
|
33
|
+
path.join(home, '.local', 'share', 'pnpm'),
|
|
34
|
+
path.join(home, '.cargo'),
|
|
35
|
+
path.join(home, '.rustup'),
|
|
36
|
+
path.join(home, '.m2', 'repository'),
|
|
37
|
+
path.join(home, '.m2'),
|
|
38
|
+
path.join(home, '.gradle'),
|
|
39
|
+
path.join(home, '.npm', '_cacache'),
|
|
40
|
+
path.join(home, '.pyenv'),
|
|
41
|
+
path.join(home, '.rbenv'),
|
|
42
|
+
path.join(home, '.nvm'),
|
|
43
|
+
];
|
|
44
|
+
const SENSITIVE_REGEX_PREFIXES = [
|
|
45
|
+
// Browser profile dirs
|
|
46
|
+
path.join(home, '.mozilla'),
|
|
47
|
+
path.join(home, '.config', 'google-chrome'),
|
|
48
|
+
path.join(home, '.config', 'chromium'),
|
|
49
|
+
path.join(home, 'Library', 'Application Support', 'Google', 'Chrome'),
|
|
50
|
+
path.join(home, 'Library', 'Application Support', 'Chromium'),
|
|
51
|
+
path.join(home, 'Library', 'Application Support', 'Firefox'),
|
|
52
|
+
];
|
|
53
|
+
/**
|
|
54
|
+
* Whether the given denied path is a credential-shaped or broad config root
|
|
55
|
+
* for which "allow and remember" must be suppressed.
|
|
56
|
+
*/
|
|
57
|
+
export function isSensitiveReadPath(p) {
|
|
58
|
+
const normalized = path.resolve(p);
|
|
59
|
+
// Carve-outs (package-manager caches) take precedence over the broad-root rule.
|
|
60
|
+
for (const sub of NON_SENSITIVE_SUBPATHS) {
|
|
61
|
+
if (normalized === sub || normalized.startsWith(sub + path.sep)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
for (const sub of SENSITIVE_SUBPATHS) {
|
|
66
|
+
if (normalized === sub || normalized.startsWith(sub + path.sep)) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
for (const prefix of SENSITIVE_REGEX_PREFIXES) {
|
|
71
|
+
if (normalized === prefix || normalized.startsWith(prefix + path.sep)) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Allow-listed package-manager caches under ~/.local are not sensitive.
|
|
76
|
+
// ~/.local/share/pnpm/store is explicitly non-sensitive.
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const STORE_PARENTS = [
|
|
80
|
+
{
|
|
81
|
+
prefix: path.join(home, '.local', 'share', 'pnpm', 'store'),
|
|
82
|
+
parent: path.join(home, '.local', 'share', 'pnpm', 'store'),
|
|
83
|
+
},
|
|
84
|
+
{ prefix: path.join(home, '.cargo'), parent: path.join(home, '.cargo') },
|
|
85
|
+
{ prefix: path.join(home, '.rustup'), parent: path.join(home, '.rustup') },
|
|
86
|
+
{
|
|
87
|
+
prefix: path.join(home, '.m2', 'repository'),
|
|
88
|
+
parent: path.join(home, '.m2', 'repository'),
|
|
89
|
+
},
|
|
90
|
+
{ prefix: path.join(home, '.m2'), parent: path.join(home, '.m2') },
|
|
91
|
+
{ prefix: path.join(home, '.config', 'gh'), parent: path.join(home, '.config', 'gh') },
|
|
92
|
+
{ prefix: path.join(home, '.gradle'), parent: path.join(home, '.gradle') },
|
|
93
|
+
{ prefix: path.join(home, '.npm', '_cacache'), parent: path.join(home, '.npm', '_cacache') },
|
|
94
|
+
{ prefix: path.join(home, '.pyenv'), parent: path.join(home, '.pyenv') },
|
|
95
|
+
{ prefix: path.join(home, '.rbenv'), parent: path.join(home, '.rbenv') },
|
|
96
|
+
{ prefix: path.join(home, '.nvm'), parent: path.join(home, '.nvm') },
|
|
97
|
+
{ prefix: path.join(home, '.cargo'), parent: path.join(home, '.cargo') },
|
|
98
|
+
{ prefix: path.join(home, '.rustup'), parent: path.join(home, '.rustup') },
|
|
99
|
+
];
|
|
100
|
+
/**
|
|
101
|
+
* Picks the smallest stable useful parent for a denied path.
|
|
102
|
+
* For known package-manager stores (pnpm, cargo, rustup, m2, etc.), returns the store root.
|
|
103
|
+
* For others, falls back to `dirname` of the denied path.
|
|
104
|
+
* Never collapses to the home root or broad config ancestors.
|
|
105
|
+
*/
|
|
106
|
+
export function suggestStableParent(p) {
|
|
107
|
+
const normalized = path.resolve(p);
|
|
108
|
+
// Known store mappings — prefer the most specific matching prefix.
|
|
109
|
+
let best;
|
|
110
|
+
for (const mapping of STORE_PARENTS) {
|
|
111
|
+
if (normalized === mapping.prefix || normalized.startsWith(mapping.prefix + path.sep)) {
|
|
112
|
+
if (!best || mapping.prefix.length > best.prefix.length) {
|
|
113
|
+
best = mapping;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (best) {
|
|
118
|
+
return best.parent;
|
|
119
|
+
}
|
|
120
|
+
// Floor: never suggest the home root or broad config roots.
|
|
121
|
+
// If dirname would collapse to home, return the path itself (do not broaden).
|
|
122
|
+
const dir = path.dirname(normalized);
|
|
123
|
+
if (dir === home || dir === path.join(home) || normalized === home) {
|
|
124
|
+
return normalized;
|
|
125
|
+
}
|
|
126
|
+
// Avoid broad config roots as the suggested parent.
|
|
127
|
+
if (dir === path.join(home, '.config') ||
|
|
128
|
+
dir === path.join(home, '.local') ||
|
|
129
|
+
dir === path.join(home, '.local', 'share')) {
|
|
130
|
+
return normalized;
|
|
131
|
+
}
|
|
132
|
+
return dir;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* macOS sandbox violation line patterns.
|
|
136
|
+
* Examples handled:
|
|
137
|
+
* Sandbox: term2(123) deny(1) file-read* /Users/user/.local/share/pnpm/store
|
|
138
|
+
* Sandbox: node(678) deny file-read-data /Users/me/.cargo/registry/cache
|
|
139
|
+
*/
|
|
140
|
+
const MACOS_READ_DENY_REGEXES = [/deny(?:\(\d+\))?\s+file-read\S*\s+(\/\S+)/];
|
|
141
|
+
function extractMacosViolationPath(stderr) {
|
|
142
|
+
const violationsStart = stderr.indexOf('<sandbox_violations>');
|
|
143
|
+
const violationsEnd = stderr.indexOf('</sandbox_violations>');
|
|
144
|
+
if (violationsStart === -1 || violationsEnd === -1)
|
|
145
|
+
return null;
|
|
146
|
+
const block = stderr.slice(violationsStart, violationsEnd);
|
|
147
|
+
const lines = block.split('\n');
|
|
148
|
+
for (const line of lines) {
|
|
149
|
+
if (!line.includes('deny'))
|
|
150
|
+
continue;
|
|
151
|
+
for (const regex of MACOS_READ_DENY_REGEXES) {
|
|
152
|
+
const match = regex.exec(line);
|
|
153
|
+
if (match?.[1]) {
|
|
154
|
+
return resolvePathSafely(match[1]);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Linux generic tool error patterns (bwrap does not emit structured annotations;
|
|
162
|
+
* denials surface as PERMISSION_DENIED / EACCES in the command's own stderr).
|
|
163
|
+
* cat: /home/user/.m2/...: Permission denied
|
|
164
|
+
* cat: cannot open '/home/...': Permission denied
|
|
165
|
+
* grep: /home/user/.cargo/registry: Operation not permitted
|
|
166
|
+
*/
|
|
167
|
+
const LINUX_PERMISSION_REGEXES = [
|
|
168
|
+
/(?:cannot open '|\s)(\/[^\s']+: Permission denied)/,
|
|
169
|
+
/cannot open '(\/[^']+)'/,
|
|
170
|
+
/(?::\s)(\/[^\s:']+)(?:: Permission denied|: Operation not permitted)/,
|
|
171
|
+
/\s(\/\S+): (?:Permission denied|Operation not permitted)/,
|
|
172
|
+
/^(\/\S+): (?:Permission denied|Operation not permitted)/m,
|
|
173
|
+
];
|
|
174
|
+
const LINUX_HIDDEN_EXISTING_PATH_REGEXES = [
|
|
175
|
+
/(?:^|\n)\S*sh: line \d+: (\/[^\n:]+): No such file or directory/,
|
|
176
|
+
];
|
|
177
|
+
function extractLinuxPermissionPath(stderr) {
|
|
178
|
+
for (const regex of LINUX_PERMISSION_REGEXES) {
|
|
179
|
+
const match = regex.exec(stderr);
|
|
180
|
+
if (match?.[1]) {
|
|
181
|
+
return resolvePathSafely(match[1].replace(/: Permission denied|: Operation not permitted$/, ''));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
function extractLinuxHiddenExistingPath(stderr) {
|
|
187
|
+
for (const regex of LINUX_HIDDEN_EXISTING_PATH_REGEXES) {
|
|
188
|
+
const match = regex.exec(stderr);
|
|
189
|
+
if (!match?.[1])
|
|
190
|
+
continue;
|
|
191
|
+
const candidate = match[1].trim().replace(/["']/g, '');
|
|
192
|
+
const normalized = path.resolve(candidate);
|
|
193
|
+
if ((normalized === home || normalized.startsWith(home + path.sep)) && fs.existsSync(normalized)) {
|
|
194
|
+
return resolvePathSafely(normalized);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
function resolvePathSafely(p) {
|
|
200
|
+
const trimmed = p.trim().replace(/["']/g, '');
|
|
201
|
+
try {
|
|
202
|
+
return fs.realpathSync(trimmed);
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return path.resolve(trimmed);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
function appearsToFileReadDenial(line) {
|
|
209
|
+
return line.includes('deny') && /file-read/.test(line);
|
|
210
|
+
}
|
|
211
|
+
function hasNetworkOnlyDenial(stderr) {
|
|
212
|
+
const violationsStart = stderr.indexOf('<sandbox_violations>');
|
|
213
|
+
const violationsEnd = stderr.indexOf('</sandbox_violations>');
|
|
214
|
+
if (violationsStart === -1 || violationsEnd === -1)
|
|
215
|
+
return false;
|
|
216
|
+
const block = stderr.slice(violationsStart, violationsEnd);
|
|
217
|
+
const lines = block.split('\n').filter((l) => l.includes('deny'));
|
|
218
|
+
if (lines.length === 0)
|
|
219
|
+
return false;
|
|
220
|
+
// Every violation is network-only (no file-read).
|
|
221
|
+
return lines.every((l) => !appearsToFileReadDenial(l) && /network/.test(l));
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Attempt to detect a denied-read failure from sandbox runtime output.
|
|
225
|
+
* Returns null if no path can be extracted (falls back to the generic escape instruction).
|
|
226
|
+
*
|
|
227
|
+
* macOS: parses the `<sandbox_violations>` block emitted by SandboxManager.annotateStderrWithSandboxFailures.
|
|
228
|
+
* Linux (bwrap): parses common tool error patterns (Permission denied / Operation not permitted),
|
|
229
|
+
* since bwrap does not emit structured annotation events.
|
|
230
|
+
*/
|
|
231
|
+
export function detectDeniedRead(_command, stderr) {
|
|
232
|
+
// macOS structured violations block takes precedence.
|
|
233
|
+
const macosPath = extractMacosViolationPath(stderr);
|
|
234
|
+
const candidate = macosPath ?? extractLinuxPermissionPath(stderr) ?? extractLinuxHiddenExistingPath(stderr);
|
|
235
|
+
if (!candidate) {
|
|
236
|
+
// If the only denials are network, this is not a read denial.
|
|
237
|
+
if (hasNetworkOnlyDenial(stderr))
|
|
238
|
+
return null;
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
const suggestedParent = suggestStableParent(candidate);
|
|
242
|
+
const sensitive = isSensitiveReadPath(candidate);
|
|
243
|
+
return { path: candidate, suggestedParent, sensitive };
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Instruction shown to the agent when a sandbox denied-read is detected,
|
|
247
|
+
* encouraging a same-parameter retry so the user can approve the read.
|
|
248
|
+
*/
|
|
249
|
+
export const DETAILED_DENIED_READ_INSTRUCTION = 'Sandbox blocked a read access. Retry the same command; the user will be prompted to allow the read for this project.';
|
|
250
|
+
//# sourceMappingURL=denied-read-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"denied-read-detector.js","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/denied-read-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import type { ILoggingService } from '../../../services/service-interfaces.js';
|
|
3
|
+
import type { DeniedReadInfo } from './denied-read-detector.js';
|
|
4
|
+
/**
|
|
5
|
+
* Per-command execution override set at approval time and consumed by `execute` on resume.
|
|
6
|
+
* - `extraAllowRead`: merged into allowRead for this one execution only.
|
|
7
|
+
* - `forceUnsandboxed`: run this one call without the sandbox (approved escape).
|
|
8
|
+
*/
|
|
9
|
+
export interface ExecutionOverride {
|
|
10
|
+
extraAllowRead?: string[];
|
|
11
|
+
forceUnsandboxed?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* In-memory, session-scoped store of denied-read info keyed by normalized command string.
|
|
15
|
+
*
|
|
16
|
+
* Lifecycle of an entry:
|
|
17
|
+
* 1. `execute` detects a denied read → `record(command, info)`.
|
|
18
|
+
* 2. The agent retries the same command; the approval-result builder calls `consume(command)` → returns the info
|
|
19
|
+
* (so the approval gate fires), then `stageForDescriptor(command, info)` re-stages it so the
|
|
20
|
+
* approval-result builder can attach `deniedRead` metadata to the ApprovalDescriptor.
|
|
21
|
+
* 3. `consumeStaged(command)` is called by the approval flow to set the retry override and clear.
|
|
22
|
+
*/
|
|
23
|
+
export declare class DeniedReadStore {
|
|
24
|
+
#private;
|
|
25
|
+
record(command: string, info: DeniedReadInfo): void;
|
|
26
|
+
consume(command: string): DeniedReadInfo | null;
|
|
27
|
+
peek(command: string): DeniedReadInfo | null;
|
|
28
|
+
has(command: string): boolean;
|
|
29
|
+
stageForDescriptor(descriptorKey: string, info: DeniedReadInfo): void;
|
|
30
|
+
consumeStaged(descriptorKey: string): DeniedReadInfo | null;
|
|
31
|
+
clear(): void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* In-memory, per-command store of execution overrides. Set at approval-decision time;
|
|
35
|
+
* consumed and cleared by `execute` when the SDK resumes the approved tool call.
|
|
36
|
+
*/
|
|
37
|
+
export declare class ExecutionOverrideStore {
|
|
38
|
+
#private;
|
|
39
|
+
set(command: string, override: ExecutionOverride): void;
|
|
40
|
+
consume(command: string): ExecutionOverride | null;
|
|
41
|
+
clear(): void;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Persistent, project-scoped store of remembered allow-read paths.
|
|
45
|
+
* Stored at `<workspaceRoot>/.term2/sandbox-allow-paths.json`.
|
|
46
|
+
*
|
|
47
|
+
* Paths are realpath-normalized and deduplicated before persistence.
|
|
48
|
+
* A separate, dedicated store (not the global settings system) so that remembered
|
|
49
|
+
* paths stay scoped to the workspace where they were approved.
|
|
50
|
+
*/
|
|
51
|
+
export declare class ProjectSandboxAllowReadStore {
|
|
52
|
+
#private;
|
|
53
|
+
constructor(workspaceRoot: string, fsImpl?: typeof fs, log?: ILoggingService);
|
|
54
|
+
load(): string[];
|
|
55
|
+
append(filePath: string): void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Module-level singletons shared between the shell tool and the approval flow.
|
|
59
|
+
* A conversation is single-threaded in this CLI, so entries are consumed in order.
|
|
60
|
+
* Each entry is one-shot (consumed on use), so no cross-turn contamination occurs.
|
|
61
|
+
*/
|
|
62
|
+
export declare const deniedReadStore: DeniedReadStore;
|
|
63
|
+
export declare const executionOverrideStore: ExecutionOverrideStore;
|
|
64
|
+
/**
|
|
65
|
+
* Returns the project-scoped allow-read store for the given workspace root.
|
|
66
|
+
* The store is lazily created and re-created if the workspace root changes
|
|
67
|
+
* (unlikely in practice — the launch cwd is stable for the process).
|
|
68
|
+
*/
|
|
69
|
+
export declare function getProjectAllowReadStore(workspaceRoot: string): ProjectSandboxAllowReadStore;
|
|
70
|
+
/**
|
|
71
|
+
* Test-only: reset all module-level singletons. Not for production use.
|
|
72
|
+
*/
|
|
73
|
+
export declare function resetSandboxDeniedReadStoresForTest(): void;
|
|
74
|
+
//# sourceMappingURL=denied-read-stores.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"denied-read-stores.d.ts","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/denied-read-stores.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,qBAAa,eAAe;;IAI1B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI;IAInD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAS/C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAI5C,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI;IAIrE,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAS3D,KAAK,IAAI,IAAI;CAId;AAED;;;GAGG;AACH,qBAAa,sBAAsB;;IAGjC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIvD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IASlD,KAAK,IAAI,IAAI;CAGd;AAUD;;;;;;;GAOG;AACH,qBAAa,4BAA4B;;gBAK3B,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,EAAE,eAAe;IAU5E,IAAI,IAAI,MAAM,EAAE;IAgBhB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CA0B/B;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAC;AACrD,eAAO,MAAM,sBAAsB,wBAA+B,CAAC;AAKnE;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,4BAA4B,CAM5F;AAED;;GAEG;AACH,wBAAgB,mCAAmC,IAAI,IAAI,CAK1D"}
|