@qduc/term2 0.10.0 → 0.11.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.
Files changed (207) hide show
  1. package/dist/agent.d.ts +7 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +20 -14
  4. package/dist/agent.js.map +1 -1
  5. package/dist/app.d.ts.map +1 -1
  6. package/dist/app.js +10 -11
  7. package/dist/app.js.map +1 -1
  8. package/dist/components/layout/BackgroundTasksPanel.d.ts +10 -0
  9. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -0
  10. package/dist/components/layout/BackgroundTasksPanel.js +60 -0
  11. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -0
  12. package/dist/components/layout/BottomArea.d.ts +3 -0
  13. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  14. package/dist/components/layout/BottomArea.js +3 -1
  15. package/dist/components/layout/BottomArea.js.map +1 -1
  16. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  17. package/dist/components/layout/StatusBar.js +33 -30
  18. package/dist/components/layout/StatusBar.js.map +1 -1
  19. package/dist/components/message/CommandMessage.d.ts +1 -0
  20. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  21. package/dist/components/message/CommandMessage.js +27 -4
  22. package/dist/components/message/CommandMessage.js.map +1 -1
  23. package/dist/components/message/MessageList.js +1 -1
  24. package/dist/components/message/MessageList.js.map +1 -1
  25. package/dist/components/message/SubagentActivityMessage.d.ts +1 -0
  26. package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
  27. package/dist/components/message/SubagentActivityMessage.js +3 -3
  28. package/dist/components/message/SubagentActivityMessage.js.map +1 -1
  29. package/dist/components/message/command-message-helpers.d.ts.map +1 -1
  30. package/dist/components/message/command-message-helpers.js +10 -0
  31. package/dist/components/message/command-message-helpers.js.map +1 -1
  32. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  33. package/dist/components/prompt/ApprovalPrompt.js +35 -8
  34. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  35. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  36. package/dist/hooks/settings-completion-config.js +4 -0
  37. package/dist/hooks/settings-completion-config.js.map +1 -1
  38. package/dist/hooks/use-conversation.d.ts +3 -0
  39. package/dist/hooks/use-conversation.d.ts.map +1 -1
  40. package/dist/hooks/use-conversation.js +23 -1
  41. package/dist/hooks/use-conversation.js.map +1 -1
  42. package/dist/lib/agent-client.d.ts +16 -1
  43. package/dist/lib/agent-client.d.ts.map +1 -1
  44. package/dist/lib/agent-client.js +22 -1
  45. package/dist/lib/agent-client.js.map +1 -1
  46. package/dist/lib/agent-configuration.d.ts.map +1 -1
  47. package/dist/lib/agent-configuration.js +2 -0
  48. package/dist/lib/agent-configuration.js.map +1 -1
  49. package/dist/lib/agent-factory.d.ts +7 -0
  50. package/dist/lib/agent-factory.d.ts.map +1 -1
  51. package/dist/lib/agent-factory.js +2 -0
  52. package/dist/lib/agent-factory.js.map +1 -1
  53. package/dist/lib/subagent-bridge.d.ts +37 -3
  54. package/dist/lib/subagent-bridge.d.ts.map +1 -1
  55. package/dist/lib/subagent-bridge.js +115 -8
  56. package/dist/lib/subagent-bridge.js.map +1 -1
  57. package/dist/prompts/async-subagent-delegation.d.ts +9 -0
  58. package/dist/prompts/async-subagent-delegation.d.ts.map +1 -0
  59. package/dist/prompts/async-subagent-delegation.js +36 -0
  60. package/dist/prompts/async-subagent-delegation.js.map +1 -0
  61. package/dist/prompts/async-subagent-delegation.ts +45 -0
  62. package/dist/prompts/orchestrator.md +16 -3
  63. package/dist/prompts/prompt-constructor.d.ts +1 -0
  64. package/dist/prompts/prompt-constructor.d.ts.map +1 -1
  65. package/dist/prompts/prompt-constructor.js +5 -1
  66. package/dist/prompts/prompt-constructor.js.map +1 -1
  67. package/dist/prompts/prompt-constructor.test.ts +51 -0
  68. package/dist/prompts/prompt-constructor.ts +7 -0
  69. package/dist/prompts/subagent-delegation.d.ts.map +1 -1
  70. package/dist/prompts/subagent-delegation.js +2 -1
  71. package/dist/prompts/subagent-delegation.js.map +1 -1
  72. package/dist/prompts/subagent-delegation.ts +2 -1
  73. package/dist/services/agent-runtime/execution-budget.d.ts +6 -0
  74. package/dist/services/agent-runtime/execution-budget.d.ts.map +1 -1
  75. package/dist/services/agent-runtime/execution-budget.js +32 -24
  76. package/dist/services/agent-runtime/execution-budget.js.map +1 -1
  77. package/dist/services/agent-runtime/permission-resolver.js +1 -1
  78. package/dist/services/agent-runtime/permission-resolver.js.map +1 -1
  79. package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
  80. package/dist/services/approval/approval-flow-coordinator.js +12 -2
  81. package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
  82. package/dist/services/approval/shell-sandbox-approval.d.ts.map +1 -1
  83. package/dist/services/approval/shell-sandbox-approval.js +5 -4
  84. package/dist/services/approval/shell-sandbox-approval.js.map +1 -1
  85. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  86. package/dist/services/conversation/conversation-adapter.js +2 -0
  87. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  88. package/dist/services/conversation/conversation-events.d.ts +12 -1
  89. package/dist/services/conversation/conversation-events.d.ts.map +1 -1
  90. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  91. package/dist/services/conversation/conversation-orchestrator.js +138 -22
  92. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  93. package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
  94. package/dist/services/conversation/conversation-replay.js +1 -0
  95. package/dist/services/conversation/conversation-replay.js.map +1 -1
  96. package/dist/services/conversation/conversation-service.d.ts +22 -0
  97. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  98. package/dist/services/conversation/conversation-service.js +40 -0
  99. package/dist/services/conversation/conversation-service.js.map +1 -1
  100. package/dist/services/conversation/conversation-store.d.ts +6 -0
  101. package/dist/services/conversation/conversation-store.d.ts.map +1 -1
  102. package/dist/services/conversation/conversation-store.js +17 -0
  103. package/dist/services/conversation/conversation-store.js.map +1 -1
  104. package/dist/services/conversation-agent-client.d.ts +13 -0
  105. package/dist/services/conversation-agent-client.d.ts.map +1 -1
  106. package/dist/services/logging/conversation-log-events.d.ts +1 -0
  107. package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
  108. package/dist/services/logging/conversation-log-events.js.map +1 -1
  109. package/dist/services/logging/conversation-logger.d.ts.map +1 -1
  110. package/dist/services/logging/conversation-logger.js +1 -0
  111. package/dist/services/logging/conversation-logger.js.map +1 -1
  112. package/dist/services/plan-mode-interceptor.js +2 -2
  113. package/dist/services/plan-mode-interceptor.js.map +1 -1
  114. package/dist/services/session/session-composition.d.ts +23 -0
  115. package/dist/services/session/session-composition.d.ts.map +1 -1
  116. package/dist/services/session/session-composition.js +65 -1
  117. package/dist/services/session/session-composition.js.map +1 -1
  118. package/dist/services/session/turn-workflow.d.ts.map +1 -1
  119. package/dist/services/session/turn-workflow.js +7 -1
  120. package/dist/services/session/turn-workflow.js.map +1 -1
  121. package/dist/services/settings/settings-merger.d.ts.map +1 -1
  122. package/dist/services/settings/settings-merger.js +2 -0
  123. package/dist/services/settings/settings-merger.js.map +1 -1
  124. package/dist/services/settings/settings-schema.d.ts +15 -0
  125. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  126. package/dist/services/settings/settings-schema.js +23 -0
  127. package/dist/services/settings/settings-schema.js.map +1 -1
  128. package/dist/services/subagents/execution-runner.d.ts +3 -0
  129. package/dist/services/subagents/execution-runner.d.ts.map +1 -1
  130. package/dist/services/subagents/execution-runner.js +33 -7
  131. package/dist/services/subagents/execution-runner.js.map +1 -1
  132. package/dist/services/subagents/mentor-runner.d.ts +5 -1
  133. package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
  134. package/dist/services/subagents/mentor-runner.js +40 -2
  135. package/dist/services/subagents/mentor-runner.js.map +1 -1
  136. package/dist/services/subagents/runtime.d.ts +2 -0
  137. package/dist/services/subagents/runtime.d.ts.map +1 -1
  138. package/dist/services/subagents/runtime.js +20 -0
  139. package/dist/services/subagents/runtime.js.map +1 -1
  140. package/dist/services/subagents/subagent-async-registry.d.ts +39 -0
  141. package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -0
  142. package/dist/services/subagents/subagent-async-registry.js +233 -0
  143. package/dist/services/subagents/subagent-async-registry.js.map +1 -0
  144. package/dist/services/subagents/subagent-manager.d.ts +17 -0
  145. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  146. package/dist/services/subagents/subagent-manager.js +45 -1
  147. package/dist/services/subagents/subagent-manager.js.map +1 -1
  148. package/dist/services/subagents/subagent-notification-store.d.ts +89 -0
  149. package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -0
  150. package/dist/services/subagents/subagent-notification-store.js +167 -0
  151. package/dist/services/subagents/subagent-notification-store.js.map +1 -0
  152. package/dist/services/subagents/subagent-session.d.ts +12 -1
  153. package/dist/services/subagents/subagent-session.d.ts.map +1 -1
  154. package/dist/services/subagents/subagent-session.js +29 -6
  155. package/dist/services/subagents/subagent-session.js.map +1 -1
  156. package/dist/services/subagents/types.d.ts +11 -0
  157. package/dist/services/subagents/types.d.ts.map +1 -1
  158. package/dist/services/subagents/types.js +1 -0
  159. package/dist/services/subagents/types.js.map +1 -1
  160. package/dist/services/subagents/utils.d.ts +6 -0
  161. package/dist/services/subagents/utils.d.ts.map +1 -1
  162. package/dist/services/subagents/utils.js +21 -0
  163. package/dist/services/subagents/utils.js.map +1 -1
  164. package/dist/tools/agent/run-subagent-async.d.ts +25 -0
  165. package/dist/tools/agent/run-subagent-async.d.ts.map +1 -0
  166. package/dist/tools/agent/run-subagent-async.js +178 -0
  167. package/dist/tools/agent/run-subagent-async.js.map +1 -0
  168. package/dist/tools/system/shell.d.ts +1 -3
  169. package/dist/tools/system/shell.d.ts.map +1 -1
  170. package/dist/tools/system/shell.js +32 -15
  171. package/dist/tools/system/shell.js.map +1 -1
  172. package/dist/tools/types.d.ts +1 -0
  173. package/dist/tools/types.d.ts.map +1 -1
  174. package/dist/types/message.d.ts +1 -0
  175. package/dist/types/message.d.ts.map +1 -1
  176. package/dist/types/message.js.map +1 -1
  177. package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
  178. package/dist/utils/conversation/conversation-event-handler.js +1 -0
  179. package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
  180. package/dist/utils/settings-command.d.ts.map +1 -1
  181. package/dist/utils/settings-command.js +10 -0
  182. package/dist/utils/settings-command.js.map +1 -1
  183. package/dist/utils/shell/sandbox/docker-host-control-grants.d.ts +8 -0
  184. package/dist/utils/shell/sandbox/docker-host-control-grants.d.ts.map +1 -1
  185. package/dist/utils/shell/sandbox/docker-host-control-grants.js +21 -0
  186. package/dist/utils/shell/sandbox/docker-host-control-grants.js.map +1 -1
  187. package/dist/utils/shell/sandbox/docker-host-control.d.ts +21 -0
  188. package/dist/utils/shell/sandbox/docker-host-control.d.ts.map +1 -1
  189. package/dist/utils/shell/sandbox/docker-host-control.js +132 -0
  190. package/dist/utils/shell/sandbox/docker-host-control.js.map +1 -1
  191. package/dist/utils/shell/sandbox/sandbox-failure-classifier.d.ts +8 -1
  192. package/dist/utils/shell/sandbox/sandbox-failure-classifier.d.ts.map +1 -1
  193. package/dist/utils/shell/sandbox/sandbox-failure-classifier.js +13 -1
  194. package/dist/utils/shell/sandbox/sandbox-failure-classifier.js.map +1 -1
  195. package/dist/utils/shell/sandbox/sandbox-network-approval.d.ts +2 -1
  196. package/dist/utils/shell/sandbox/sandbox-network-approval.d.ts.map +1 -1
  197. package/dist/utils/shell/sandbox/sandbox-network-approval.js +17 -1
  198. package/dist/utils/shell/sandbox/sandbox-network-approval.js.map +1 -1
  199. package/dist/utils/shell/sandbox/sandbox-network-store.d.ts +20 -0
  200. package/dist/utils/shell/sandbox/sandbox-network-store.d.ts.map +1 -0
  201. package/dist/utils/shell/sandbox/sandbox-network-store.js +99 -0
  202. package/dist/utils/shell/sandbox/sandbox-network-store.js.map +1 -0
  203. package/dist/utils/streaming/extract-command-messages.d.ts +2 -0
  204. package/dist/utils/streaming/extract-command-messages.d.ts.map +1 -1
  205. package/dist/utils/streaming/extract-command-messages.js +26 -4
  206. package/dist/utils/streaming/extract-command-messages.js.map +1 -1
  207. package/package.json +1 -1
@@ -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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"}
@@ -13,6 +13,14 @@ export declare const consumeDockerHostControlOnce: (sessionId: string, command:
13
13
  export declare const hasDockerHostControlSession: (sessionId: string, cwd: string) => boolean;
14
14
  export declare const hasDockerHostControlProject: (cwd: string) => boolean;
15
15
  export declare const clearDockerHostControlSession: (sessionId: string) => void;
16
+ export declare const recordDockerHostControlDenial: (command: string) => void;
17
+ export declare const consumeDockerHostControlDenial: (command: string) => boolean;
18
+ /**
19
+ * Whether this command must go through the Docker host-control approval prompt:
20
+ * either it reads as a Docker invocation, or a sandboxed run of it was already
21
+ * blocked from the daemon (the only signal for indirect invocations).
22
+ */
23
+ export declare const requiresDockerHostControlApproval: (command: string) => boolean;
16
24
  export declare const resetDockerHostControlGrantsForTests: () => void;
17
25
  export declare const normalizeDockerHostControlWorkspaceRoot: typeof realRoot;
18
26
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"docker-host-control-grants.d.ts","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/docker-host-control-grants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE,KAAK,6BAA6B,GAAG;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,sBAAsB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,QAAA,MAAM,QAAQ,QAAS,MAAM,WAO5B,CAAC;AA6DF,eAAO,MAAM,gCAAgC,aAAc,gBAAgB,SAC9B,CAAC;AAC9C,eAAO,MAAM,sBAAsB,UAAW,6BAA6B,SAAyC,CAAC;AACrH,eAAO,MAAM,4BAA4B,cAAe,MAAM,WAAW,MAAM,YACtB,CAAC;AAC1D,eAAO,MAAM,2BAA2B,cAAe,MAAM,OAAO,MAAM,YACtB,CAAC;AACrD,eAAO,MAAM,2BAA2B,QAAS,MAAM,YAA4C,CAAC;AACpG,eAAO,MAAM,6BAA6B,cAAe,MAAM,SAAoD,CAAC;AACpH,eAAO,MAAM,oCAAoC,YAAgD,CAAC;AAClG,eAAO,MAAM,uCAAuC,iBAAW,CAAC"}
1
+ {"version":3,"file":"docker-host-control-grants.d.ts","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/docker-host-control-grants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAGhF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE,KAAK,6BAA6B,GAAG;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,sBAAsB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,QAAA,MAAM,QAAQ,QAAS,MAAM,WAO5B,CAAC;AA4EF,eAAO,MAAM,gCAAgC,aAAc,gBAAgB,SAC9B,CAAC;AAC9C,eAAO,MAAM,sBAAsB,UAAW,6BAA6B,SAAyC,CAAC;AACrH,eAAO,MAAM,4BAA4B,cAAe,MAAM,WAAW,MAAM,YACtB,CAAC;AAC1D,eAAO,MAAM,2BAA2B,cAAe,MAAM,OAAO,MAAM,YACtB,CAAC;AACrD,eAAO,MAAM,2BAA2B,QAAS,MAAM,YAA4C,CAAC;AACpG,eAAO,MAAM,6BAA6B,cAAe,MAAM,SAAoD,CAAC;AACpH,eAAO,MAAM,6BAA6B,YAAa,MAAM,SAAkD,CAAC;AAChH,eAAO,MAAM,8BAA8B,YAAa,MAAM,YAAmD,CAAC;AAElH;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,YAAa,MAAM,YACiB,CAAC;AACnF,eAAO,MAAM,oCAAoC,YAAgD,CAAC;AAClG,eAAO,MAAM,uCAAuC,iBAAW,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
+ import { requestsDockerHostControl } from './docker-host-control.js';
3
4
  const realRoot = (cwd) => {
4
5
  const resolved = path.resolve(cwd);
5
6
  try {
@@ -14,6 +15,17 @@ class DockerHostControlGrants {
14
15
  #settings;
15
16
  #onceBySession = new Map();
16
17
  #sessionRootsBySession = new Map();
18
+ #deniedCommands = new Set();
19
+ /** A sandboxed run of this command was blocked from the Docker daemon. */
20
+ recordDenial(command) {
21
+ this.#deniedCommands.add(command);
22
+ }
23
+ consumeDenial(command) {
24
+ return this.#deniedCommands.delete(command);
25
+ }
26
+ hasDenial(command) {
27
+ return this.#deniedCommands.has(command);
28
+ }
17
29
  configure(settings) {
18
30
  this.#settings = settings;
19
31
  }
@@ -60,6 +72,7 @@ class DockerHostControlGrants {
60
72
  resetForTests() {
61
73
  this.#onceBySession.clear();
62
74
  this.#sessionRootsBySession.clear();
75
+ this.#deniedCommands.clear();
63
76
  this.#settings = undefined;
64
77
  }
65
78
  }
@@ -70,6 +83,14 @@ export const consumeDockerHostControlOnce = (sessionId, command) => dockerHostCo
70
83
  export const hasDockerHostControlSession = (sessionId, cwd) => dockerHostControlGrants.hasSession(sessionId, cwd);
71
84
  export const hasDockerHostControlProject = (cwd) => dockerHostControlGrants.hasProject(cwd);
72
85
  export const clearDockerHostControlSession = (sessionId) => dockerHostControlGrants.clearSession(sessionId);
86
+ export const recordDockerHostControlDenial = (command) => dockerHostControlGrants.recordDenial(command);
87
+ export const consumeDockerHostControlDenial = (command) => dockerHostControlGrants.consumeDenial(command);
88
+ /**
89
+ * Whether this command must go through the Docker host-control approval prompt:
90
+ * either it reads as a Docker invocation, or a sandboxed run of it was already
91
+ * blocked from the daemon (the only signal for indirect invocations).
92
+ */
93
+ export const requiresDockerHostControlApproval = (command) => requestsDockerHostControl(command) || dockerHostControlGrants.hasDenial(command);
73
94
  export const resetDockerHostControlGrantsForTests = () => dockerHostControlGrants.resetForTests();
74
95
  export const normalizeDockerHostControlWorkspaceRoot = realRoot;
75
96
  //# sourceMappingURL=docker-host-control-grants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker-host-control-grants.js","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/docker-host-control-grants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker-host-control-grants.js","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/docker-host-control-grants.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,27 @@ export interface DockerHostControl {
3
3
  configDir: string;
4
4
  cleanup(): void;
5
5
  }
6
+ /**
7
+ * Recognizes direct Docker CLI invocations wherever the shell can put them:
8
+ * after operators, inside subshells or brace groups, on a later line, behind a
9
+ * wrapper such as `sudo`/`timeout`, or preceded by environment assignments.
10
+ * Matching on command position rather than substring keeps `cat Dockerfile`
11
+ * and `git commit -m "docker"` out. Docker reached indirectly (through a script
12
+ * or package command) is out of reach of any command-string check.
13
+ */
14
+ export declare function requestsDockerHostControl(command: string): boolean;
15
+ /**
16
+ * Detects a sandboxed command that failed because it could not reach the Docker
17
+ * daemon. This is the only signal available for Docker reached indirectly —
18
+ * through a script, `make` target, or package command — where the command
19
+ * string itself never mentions Docker.
20
+ */
21
+ export declare function detectDockerDaemonBlock(stderr: string): boolean;
22
+ /**
23
+ * Instruction shown to the agent when the sandbox blocked Docker, encouraging a
24
+ * same-command retry so the user can approve host control for it.
25
+ */
26
+ export declare const DOCKER_HOST_CONTROL_RETRY_INSTRUCTION = "Sandbox blocked this command from reaching the Docker daemon. Retry the same command; the user will be prompted to allow Docker host control for it.";
6
27
  /**
7
28
  * Docker Desktop's Unix socket controls the host daemon, so this deliberately
8
29
  * recognizes only its canonical per-user macOS endpoint.
@@ -1 +1 @@
1
- {"version":3,"file":"docker-host-control.d.ts","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/docker-host-control.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,SAAe,GAAG,iBAAiB,CAwB9E"}
1
+ {"version":3,"file":"docker-host-control.d.ts","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/docker-host-control.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,IAAI,IAAI,CAAC;CACjB;AAoFD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CA2BlE;AAYD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;;GAGG;AACH,eAAO,MAAM,qCAAqC,yJACsG,CAAC;AAEzJ;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,SAAe,GAAG,iBAAiB,CAwB9E"}
@@ -2,6 +2,138 @@ import fs from 'node:fs';
2
2
  import os from 'node:os';
3
3
  import path from 'node:path';
4
4
  import { SANDBOX_TEMP_DIR } from '../temp-dir.js';
5
+ const DOCKER_BINARIES = new Set(['docker', 'docker-compose']);
6
+ // Programs that run another program, so the Docker invocation is one token later.
7
+ const COMMAND_WRAPPERS = new Set([
8
+ 'env',
9
+ 'sudo',
10
+ 'doas',
11
+ 'command',
12
+ 'exec',
13
+ 'builtin',
14
+ 'nohup',
15
+ 'nice',
16
+ 'ionice',
17
+ 'stdbuf',
18
+ 'time',
19
+ 'timeout',
20
+ 'xargs',
21
+ ]);
22
+ // Shell punctuation that returns the scanner to command position: control
23
+ // operators, grouping, and redirection.
24
+ const OPERATOR_CHARS = ';|&()<>{}';
25
+ const ENV_ASSIGNMENT = /^[A-Za-z_][A-Za-z0-9_]*=/;
26
+ const WRAPPER_OPTION = /^-|^\d+(?:\.\d+)?[smhd]?$/;
27
+ /**
28
+ * Splits a command into words and operators. Quoting matters: without it,
29
+ * `git commit -m "fix(docker): update"` would look like a Docker invocation
30
+ * after a subshell, and a false positive refuses the command outright.
31
+ */
32
+ function tokenizeShellCommand(command) {
33
+ const tokens = [];
34
+ let word = '';
35
+ let quote;
36
+ const endWord = () => {
37
+ if (word)
38
+ tokens.push({ value: word, isOperator: false });
39
+ word = '';
40
+ };
41
+ for (let index = 0; index < command.length; index++) {
42
+ const char = command[index];
43
+ if (quote) {
44
+ if (char === quote)
45
+ quote = undefined;
46
+ else
47
+ word += char;
48
+ continue;
49
+ }
50
+ if (char === "'" || char === '"') {
51
+ quote = char;
52
+ continue;
53
+ }
54
+ if (char === '\\') {
55
+ word += command[++index] ?? '';
56
+ continue;
57
+ }
58
+ if (char === '\n') {
59
+ // A newline separates commands exactly like `;`.
60
+ endWord();
61
+ tokens.push({ value: ';', isOperator: true });
62
+ continue;
63
+ }
64
+ if (/\s/.test(char)) {
65
+ endWord();
66
+ continue;
67
+ }
68
+ if (OPERATOR_CHARS.includes(char)) {
69
+ endWord();
70
+ tokens.push({ value: char, isOperator: true });
71
+ continue;
72
+ }
73
+ word += char;
74
+ }
75
+ endWord();
76
+ return tokens;
77
+ }
78
+ /**
79
+ * Recognizes direct Docker CLI invocations wherever the shell can put them:
80
+ * after operators, inside subshells or brace groups, on a later line, behind a
81
+ * wrapper such as `sudo`/`timeout`, or preceded by environment assignments.
82
+ * Matching on command position rather than substring keeps `cat Dockerfile`
83
+ * and `git commit -m "docker"` out. Docker reached indirectly (through a script
84
+ * or package command) is out of reach of any command-string check.
85
+ */
86
+ export function requestsDockerHostControl(command) {
87
+ let atCommandPosition = true;
88
+ let afterWrapper = false;
89
+ for (const { value, isOperator } of tokenizeShellCommand(command)) {
90
+ if (isOperator) {
91
+ atCommandPosition = true;
92
+ afterWrapper = false;
93
+ continue;
94
+ }
95
+ if (!atCommandPosition)
96
+ continue;
97
+ if (ENV_ASSIGNMENT.test(value))
98
+ continue;
99
+ const name = value.split('/').pop() ?? '';
100
+ if (DOCKER_BINARIES.has(name))
101
+ return true;
102
+ if (COMMAND_WRAPPERS.has(name)) {
103
+ afterWrapper = true;
104
+ continue;
105
+ }
106
+ // A wrapper's own flags and durations still precede the real command.
107
+ if (afterWrapper && WRAPPER_OPTION.test(value))
108
+ continue;
109
+ atCommandPosition = false;
110
+ afterWrapper = false;
111
+ }
112
+ return false;
113
+ }
114
+ // Docker cannot read its own config under the sandbox, so it loses the
115
+ // desktop-linux context and reports failure against the default socket. Both
116
+ // that form and a direct permission failure mean "the sandbox stood in the way".
117
+ const DOCKER_DAEMON_BLOCK_PATTERNS = [
118
+ /permission denied while trying to connect to the docker (?:api|daemon)/i,
119
+ /cannot connect to the docker daemon/i,
120
+ /docker\.sock[^\n]*(?:permission denied|operation not permitted)/i,
121
+ /(?:permission denied|operation not permitted)[^\n]*docker\.sock/i,
122
+ ];
123
+ /**
124
+ * Detects a sandboxed command that failed because it could not reach the Docker
125
+ * daemon. This is the only signal available for Docker reached indirectly —
126
+ * through a script, `make` target, or package command — where the command
127
+ * string itself never mentions Docker.
128
+ */
129
+ export function detectDockerDaemonBlock(stderr) {
130
+ return DOCKER_DAEMON_BLOCK_PATTERNS.some((pattern) => pattern.test(stderr));
131
+ }
132
+ /**
133
+ * Instruction shown to the agent when the sandbox blocked Docker, encouraging a
134
+ * same-command retry so the user can approve host control for it.
135
+ */
136
+ export const DOCKER_HOST_CONTROL_RETRY_INSTRUCTION = 'Sandbox blocked this command from reaching the Docker daemon. Retry the same command; the user will be prompted to allow Docker host control for it.';
5
137
  /**
6
138
  * Docker Desktop's Unix socket controls the host daemon, so this deliberately
7
139
  * recognizes only its canonical per-user macOS endpoint.
@@ -1 +1 @@
1
- {"version":3,"file":"docker-host-control.js","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/docker-host-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAQlD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE;IACzD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACpE,IAAI,UAAoB,CAAC;IACzB,IAAI,CAAC;QACH,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,2CAA2C,UAAU,GAAG,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,iDAAiD,UAAU,GAAG,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAChF,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAE/B,OAAO;QACL,UAAU;QACV,SAAS;QACT,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KACtE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"docker-host-control.js","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/docker-host-control.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,10 @@ export type SandboxFailureClassification = {
12
12
  confidence: SandboxFailureConfidence;
13
13
  stderr: string;
14
14
  deniedRead: DeniedReadInfo;
15
+ } | {
16
+ type: 'docker_blocked';
17
+ confidence: SandboxFailureConfidence;
18
+ stderr: string;
15
19
  };
16
20
  export interface ClassifySandboxFailureOptions {
17
21
  command: string;
@@ -19,6 +23,9 @@ export interface ClassifySandboxFailureOptions {
19
23
  annotatedStderr: string;
20
24
  sandboxed: boolean;
21
25
  readPolicy?: SandboxReadPolicy;
26
+ /** The run already held Docker host control, so a daemon failure is Docker's, not the sandbox's. */
27
+ dockerHostControlActive?: boolean;
28
+ exitCode?: number | null;
22
29
  }
23
- export declare function classifySandboxFailure({ command, rawStderr, annotatedStderr, sandboxed, readPolicy, }: ClassifySandboxFailureOptions): SandboxFailureClassification | null;
30
+ export declare function classifySandboxFailure({ command, rawStderr, annotatedStderr, sandboxed, readPolicy, dockerHostControlActive, exitCode, }: ClassifySandboxFailureOptions): SandboxFailureClassification | null;
24
31
  //# sourceMappingURL=sandbox-failure-classifier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-failure-classifier.d.ts","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/sandbox-failure-classifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAElF,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;AAE/E,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzD,MAAM,MAAM,4BAA4B,GACpC;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,cAAc,CAAC;CAC5B,CAAC;AAEN,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAUD,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,SAAS,EACT,eAAe,EACf,SAAS,EACT,UAAU,GACX,EAAE,6BAA6B,GAAG,4BAA4B,GAAG,IAAI,CAuCrE"}
1
+ {"version":3,"file":"sandbox-failure-classifier.d.ts","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/sandbox-failure-classifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGlF,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;AAE/E,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzD,MAAM,MAAM,4BAA4B,GACpC;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,cAAc,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,oGAAoG;IACpG,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAUD,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,SAAS,EACT,eAAe,EACf,SAAS,EACT,UAAU,EACV,uBAAuB,EACvB,QAAQ,GACT,EAAE,6BAA6B,GAAG,4BAA4B,GAAG,IAAI,CAoDrE"}
@@ -1,15 +1,27 @@
1
1
  import { detectDeniedRead } from './denied-read-detector.js';
2
+ import { detectDockerDaemonBlock } from './docker-host-control.js';
2
3
  function hasRuntimeAnnotation(rawStderr, annotatedStderr) {
3
4
  return annotatedStderr !== rawStderr;
4
5
  }
5
6
  function hasProxyAllowlistBlock(stderr) {
6
7
  return /blocked-by-allowlist/i.test(stderr) || (/\b403\s+Forbidden\b/i.test(stderr) && /allowlist/i.test(stderr));
7
8
  }
8
- export function classifySandboxFailure({ command, rawStderr, annotatedStderr, sandboxed, readPolicy, }) {
9
+ export function classifySandboxFailure({ command, rawStderr, annotatedStderr, sandboxed, readPolicy, dockerHostControlActive, exitCode, }) {
9
10
  if (!sandboxed) {
10
11
  return null;
11
12
  }
12
13
  const runtimeAnnotated = hasRuntimeAnnotation(rawStderr, annotatedStderr);
14
+ // Checked before the generic branches: a blocked daemon connection is
15
+ // actionable (the user can grant host control) where "blocked" is not.
16
+ // Reporting this replaces the command's output, so a command that succeeded
17
+ // is taken at its word however its stderr reads.
18
+ if (!dockerHostControlActive && exitCode !== 0 && detectDockerDaemonBlock(annotatedStderr)) {
19
+ return {
20
+ type: 'docker_blocked',
21
+ confidence: runtimeAnnotated ? 'runtime_annotation' : 'stderr_pattern',
22
+ stderr: annotatedStderr,
23
+ };
24
+ }
13
25
  const proxyAllowlistBlocked = hasProxyAllowlistBlock(annotatedStderr) || hasProxyAllowlistBlock(rawStderr);
14
26
  if (readPolicy === 'strict') {
15
27
  const deniedRead = detectDeniedRead(command, annotatedStderr);
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-failure-classifier.js","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/sandbox-failure-classifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,2BAA2B,CAAC;AA4BlF,SAAS,oBAAoB,CAAC,SAAiB,EAAE,eAAuB;IACtE,OAAO,eAAe,KAAK,SAAS,CAAC;AACvC,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAc;IAC5C,OAAO,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACpH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EACrC,OAAO,EACP,SAAS,EACT,eAAe,EACf,SAAS,EACT,UAAU,GACoB;IAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC1E,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,eAAe,CAAC,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAE3G,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC9D,IAAI,UAAU,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB;gBACtE,MAAM,EAAE,eAAe;gBACvB,UAAU;aACX,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACrD,UAAU,EAAE,oBAAoB;YAChC,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"sandbox-failure-classifier.js","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/sandbox-failure-classifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAoCnE,SAAS,oBAAoB,CAAC,SAAiB,EAAE,eAAuB;IACtE,OAAO,eAAe,KAAK,SAAS,CAAC;AACvC,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAc;IAC5C,OAAO,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACpH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EACrC,OAAO,EACP,SAAS,EACT,eAAe,EACf,SAAS,EACT,UAAU,EACV,uBAAuB,EACvB,QAAQ,GACsB;IAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAE1E,sEAAsE;IACtE,uEAAuE;IACvE,4EAA4E;IAC5E,iDAAiD;IACjD,IAAI,CAAC,uBAAuB,IAAI,QAAQ,KAAK,CAAC,IAAI,uBAAuB,CAAC,eAAe,CAAC,EAAE,CAAC;QAC3F,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB;YACtE,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,eAAe,CAAC,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAE3G,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC9D,IAAI,UAAU,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB;gBACtE,MAAM,EAAE,eAAe;gBACvB,UAAU;aACX,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACrD,UAAU,EAAE,oBAAoB;YAChC,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -2,7 +2,8 @@ export type SandboxNetworkAccessRequest = {
2
2
  host: string;
3
3
  port?: number;
4
4
  };
5
- type SandboxNetworkApprovalHandler = (request: SandboxNetworkAccessRequest) => Promise<boolean>;
5
+ export type NetworkApprovalAnswer = 'deny' | 'allow-once' | 'allow-session' | 'allow-project' | boolean;
6
+ type SandboxNetworkApprovalHandler = (request: SandboxNetworkAccessRequest) => Promise<NetworkApprovalAnswer>;
6
7
  type SandboxNetworkApprovalPauseController = {
7
8
  pause: () => void | Promise<void>;
8
9
  resume: () => void | Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-network-approval.d.ts","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/sandbox-network-approval.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,6BAA6B,GAAG,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhG,KAAK,qCAAqC,GAAG;IAC3C,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAKF,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,6BAA6B,GAAG,IAAI,GAAG,MAAM,IAAI,CAO/G;AAED,wBAAgB,6CAA6C,CAC3D,UAAU,EAAE,qCAAqC,GAAG,IAAI,GACvD,MAAM,IAAI,CAOZ;AAkBD,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC,CAa1G"}
1
+ {"version":3,"file":"sandbox-network-approval.d.ts","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/sandbox-network-approval.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,YAAY,GAAG,eAAe,GAAG,eAAe,GAAG,OAAO,CAAC;AAExG,KAAK,6BAA6B,GAAG,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAE9G,KAAK,qCAAqC,GAAG;IAC3C,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAKF,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,6BAA6B,GAAG,IAAI,GAAG,MAAM,IAAI,CAO/G;AAED,wBAAgB,6CAA6C,CAC3D,UAAU,EAAE,qCAAqC,GAAG,IAAI,GACvD,MAAM,IAAI,CAOZ;AAkBD,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC,CA6B1G"}
@@ -1,3 +1,4 @@
1
+ import { addAllowedHost, isHostAllowed } from './sandbox-network-store.js';
1
2
  let activeHandler = null;
2
3
  let activePauseController = null;
3
4
  export function registerSandboxNetworkApprovalHandler(handler) {
@@ -33,12 +34,27 @@ async function resumeActiveSandboxedCommand() {
33
34
  }
34
35
  }
35
36
  export async function requestSandboxNetworkApproval(request) {
37
+ if (isHostAllowed(request.host, request.port)) {
38
+ return true;
39
+ }
36
40
  if (!activeHandler) {
37
41
  return false;
38
42
  }
39
43
  await pauseActiveSandboxedCommand();
40
44
  try {
41
- return await activeHandler(request);
45
+ const answer = await activeHandler(request);
46
+ if (answer === true || answer === 'allow-once') {
47
+ return true;
48
+ }
49
+ if (answer === 'allow-session') {
50
+ addAllowedHost(request.host, request.port, 'session');
51
+ return true;
52
+ }
53
+ if (answer === 'allow-project') {
54
+ addAllowedHost(request.host, request.port, 'project');
55
+ return true;
56
+ }
57
+ return false;
42
58
  }
43
59
  catch {
44
60
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-network-approval.js","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/sandbox-network-approval.ts"],"names":[],"mappings":"AAYA,IAAI,aAAa,GAAyC,IAAI,CAAC;AAC/D,IAAI,qBAAqB,GAAiD,IAAI,CAAC;AAE/E,MAAM,UAAU,qCAAqC,CAAC,OAA6C;IACjG,aAAa,GAAG,OAAO,CAAC;IACxB,OAAO,GAAG,EAAE;QACV,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;YAC9B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6CAA6C,CAC3D,UAAwD;IAExD,qBAAqB,GAAG,UAAU,CAAC;IACnC,OAAO,GAAG,EAAE;QACV,IAAI,qBAAqB,KAAK,UAAU,EAAE,CAAC;YACzC,qBAAqB,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,2BAA2B;IACxC,IAAI,CAAC;QACH,MAAM,qBAAqB,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B;IACzC,IAAI,CAAC;QACH,MAAM,qBAAqB,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;IAC/E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,OAAoC;IACtF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,2BAA2B,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,OAAO,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,MAAM,4BAA4B,EAAE,CAAC;IACvC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"sandbox-network-approval.js","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/sandbox-network-approval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAgB3E,IAAI,aAAa,GAAyC,IAAI,CAAC;AAC/D,IAAI,qBAAqB,GAAiD,IAAI,CAAC;AAE/E,MAAM,UAAU,qCAAqC,CAAC,OAA6C;IACjG,aAAa,GAAG,OAAO,CAAC;IACxB,OAAO,GAAG,EAAE;QACV,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;YAC9B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6CAA6C,CAC3D,UAAwD;IAExD,qBAAqB,GAAG,UAAU,CAAC;IACnC,OAAO,GAAG,EAAE;QACV,IAAI,qBAAqB,KAAK,UAAU,EAAE,CAAC;YACzC,qBAAqB,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,2BAA2B;IACxC,IAAI,CAAC;QACH,MAAM,qBAAqB,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B;IACzC,IAAI,CAAC;QACH,MAAM,qBAAqB,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;IAC/E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,OAAoC;IACtF,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,2BAA2B,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YAC/B,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YAC/B,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,MAAM,4BAA4B,EAAE,CAAC;IACvC,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import fs from 'node:fs';
2
+ export declare class SessionNetworkAllowStore {
3
+ #private;
4
+ add(hostOrHostPort: string): void;
5
+ isAllowed(host: string, port?: number): boolean;
6
+ clear(): void;
7
+ }
8
+ export declare class ProjectNetworkAllowStore {
9
+ #private;
10
+ constructor(workspaceRoot: string, fileSystem?: typeof fs);
11
+ load(): string[];
12
+ isAllowed(host: string, port?: number): boolean;
13
+ append(hostOrHostPort: string): void;
14
+ }
15
+ export declare const sessionNetworkAllowStore: SessionNetworkAllowStore;
16
+ export declare function getProjectNetworkAllowStore(workspaceRoot: string): ProjectNetworkAllowStore;
17
+ export declare function isHostAllowed(host: string, port?: number, workspaceRoot?: string): boolean;
18
+ export declare function addAllowedHost(host: string, port: number | undefined, scope: 'session' | 'project', workspaceRoot?: string): void;
19
+ export declare function resetSandboxNetworkStoreForTest(): void;
20
+ //# sourceMappingURL=sandbox-network-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-network-store.d.ts","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/sandbox-network-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAWzB,qBAAa,wBAAwB;;IAGnC,GAAG,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAEhC;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAK9C;IAED,KAAK,IAAI,IAAI,CAEZ;CACF;AAED,qBAAa,wBAAwB;;IAInC,YAAY,aAAa,EAAE,MAAM,EAAE,UAAU,GAAE,OAAO,EAAO,EAG5D;IAMD,IAAI,IAAI,MAAM,EAAE,CAYf;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAM9C;IAED,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAMnC;CAQF;AAED,eAAO,MAAM,wBAAwB,0BAAiC,CAAC;AAKvE,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,wBAAwB,CAM3F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,GAAE,MAAsB,GAAG,OAAO,CAGzG;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,KAAK,EAAE,SAAS,GAAG,SAAS,EAC5B,aAAa,GAAE,MAAsB,GACpC,IAAI,CAON;AAED,wBAAgB,+BAA+B,IAAI,IAAI,CAItD"}
@@ -0,0 +1,99 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ const PROJECT_CONFIG_DIR = '.term2';
4
+ const PROJECT_NETWORK_HOSTS_FILE = 'sandbox-network-hosts.json';
5
+ export class SessionNetworkAllowStore {
6
+ #allowedHosts = new Set();
7
+ add(hostOrHostPort) {
8
+ this.#allowedHosts.add(hostOrHostPort.toLowerCase());
9
+ }
10
+ isAllowed(host, port) {
11
+ const lowerHost = host.toLowerCase();
12
+ if (this.#allowedHosts.has(lowerHost))
13
+ return true;
14
+ if (port != null && this.#allowedHosts.has(`${lowerHost}:${port}`))
15
+ return true;
16
+ return false;
17
+ }
18
+ clear() {
19
+ this.#allowedHosts.clear();
20
+ }
21
+ }
22
+ export class ProjectNetworkAllowStore {
23
+ #workspaceRoot;
24
+ #fs;
25
+ constructor(workspaceRoot, fileSystem = fs) {
26
+ this.#workspaceRoot = workspaceRoot;
27
+ this.#fs = fileSystem;
28
+ }
29
+ get #configPath() {
30
+ return path.join(this.#workspaceRoot, PROJECT_CONFIG_DIR, PROJECT_NETWORK_HOSTS_FILE);
31
+ }
32
+ load() {
33
+ try {
34
+ if (!this.#fs.existsSync(this.#configPath))
35
+ return [];
36
+ const raw = this.#fs.readFileSync(this.#configPath, 'utf8');
37
+ const parsed = JSON.parse(raw);
38
+ if (!parsed || !Array.isArray(parsed.allowHosts))
39
+ return [];
40
+ return Array.from(new Set(parsed.allowHosts.filter((h) => typeof h === 'string').map((h) => h.toLowerCase())));
41
+ }
42
+ catch {
43
+ return [];
44
+ }
45
+ }
46
+ isAllowed(host, port) {
47
+ const hosts = this.load();
48
+ const lowerHost = host.toLowerCase();
49
+ if (hosts.includes(lowerHost))
50
+ return true;
51
+ if (port != null && hosts.includes(`${lowerHost}:${port}`))
52
+ return true;
53
+ return false;
54
+ }
55
+ append(hostOrHostPort) {
56
+ const normalized = hostOrHostPort.toLowerCase();
57
+ const current = this.load();
58
+ if (current.includes(normalized))
59
+ return;
60
+ const next = [...current, normalized];
61
+ this.#write(next);
62
+ }
63
+ #write(hosts) {
64
+ const dir = path.dirname(this.#configPath);
65
+ this.#fs.mkdirSync(dir, { recursive: true });
66
+ const payload = { version: 1, allowHosts: hosts };
67
+ this.#fs.writeFileSync(this.#configPath, JSON.stringify(payload, null, 2) + '\n', 'utf8');
68
+ }
69
+ }
70
+ export const sessionNetworkAllowStore = new SessionNetworkAllowStore();
71
+ let projectNetworkAllowStore = null;
72
+ let projectNetworkAllowStoreRoot = null;
73
+ export function getProjectNetworkAllowStore(workspaceRoot) {
74
+ if (!projectNetworkAllowStore || projectNetworkAllowStoreRoot !== workspaceRoot) {
75
+ projectNetworkAllowStore = new ProjectNetworkAllowStore(workspaceRoot);
76
+ projectNetworkAllowStoreRoot = workspaceRoot;
77
+ }
78
+ return projectNetworkAllowStore;
79
+ }
80
+ export function isHostAllowed(host, port, workspaceRoot = process.cwd()) {
81
+ if (sessionNetworkAllowStore.isAllowed(host, port))
82
+ return true;
83
+ return getProjectNetworkAllowStore(workspaceRoot).isAllowed(host, port);
84
+ }
85
+ export function addAllowedHost(host, port, scope, workspaceRoot = process.cwd()) {
86
+ const entry = port != null && port !== 80 && port !== 443 ? `${host}:${port}` : host;
87
+ if (scope === 'session') {
88
+ sessionNetworkAllowStore.add(entry);
89
+ }
90
+ else if (scope === 'project') {
91
+ getProjectNetworkAllowStore(workspaceRoot).append(entry);
92
+ }
93
+ }
94
+ export function resetSandboxNetworkStoreForTest() {
95
+ sessionNetworkAllowStore.clear();
96
+ projectNetworkAllowStore = null;
97
+ projectNetworkAllowStoreRoot = null;
98
+ }
99
+ //# sourceMappingURL=sandbox-network-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-network-store.js","sourceRoot":"","sources":["../../../../source/utils/shell/sandbox/sandbox-network-store.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import type { CommandMessage } from '../../tools/types.js';
2
+ export declare const markToolCallAsLlmAutoApproved: (callId?: string | null) => void;
3
+ export declare const clearLlmAutoApprovalMarkers: () => void;
2
4
  export declare const markToolCallAsApprovalRejection: (callId?: string | null) => void;
3
5
  export declare const clearApprovalRejectionMarkers: () => void;
4
6
  export declare const extractCommandMessages: (items?: readonly unknown[]) => CommandMessage[];
@@ -1 +1 @@
1
- {"version":3,"file":"extract-command-messages.d.ts","sourceRoot":"","sources":["../../../source/utils/streaming/extract-command-messages.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,eAAO,MAAM,+BAA+B,YAAa,MAAM,GAAG,IAAI,KAAG,IAKxE,CAAC;AAEF,eAAO,MAAM,6BAA6B,QAAO,IAEhD,CAAC;AAiDF,eAAO,MAAM,sBAAsB,WAAW,SAAS,OAAO,EAAE,KAAQ,cAAc,EAwFrF,CAAC"}
1
+ {"version":3,"file":"extract-command-messages.d.ts","sourceRoot":"","sources":["../../../source/utils/streaming/extract-command-messages.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D,eAAO,MAAM,6BAA6B,YAAa,MAAM,GAAG,IAAI,KAAG,IAItE,CAAC;AAEF,eAAO,MAAM,2BAA2B,QAAO,IAE9C,CAAC;AAEF,eAAO,MAAM,+BAA+B,YAAa,MAAM,GAAG,IAAI,KAAG,IAKxE,CAAC;AAEF,eAAO,MAAM,6BAA6B,QAAO,IAEhD,CAAC;AA0DF,eAAO,MAAM,sBAAsB,WAAW,SAAS,OAAO,EAAE,KAAQ,cAAc,EA6FrF,CAAC"}