pulseed 0.4.15 → 0.4.16

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 (249) hide show
  1. package/dist/adapters/agents/openai-codex.d.ts +2 -2
  2. package/dist/adapters/agents/openai-codex.js +2 -2
  3. package/dist/adapters/agents/openai-codex.js.map +1 -1
  4. package/dist/base/config/global-config.d.ts +44 -0
  5. package/dist/base/config/global-config.d.ts.map +1 -1
  6. package/dist/base/config/global-config.js +37 -0
  7. package/dist/base/config/global-config.js.map +1 -1
  8. package/dist/base/config/tool-metadata.d.ts +1 -1
  9. package/dist/base/config/tool-metadata.d.ts.map +1 -1
  10. package/dist/base/config/tool-metadata.js +21 -0
  11. package/dist/base/config/tool-metadata.js.map +1 -1
  12. package/dist/base/llm/codex-llm-client.d.ts +7 -1
  13. package/dist/base/llm/codex-llm-client.d.ts.map +1 -1
  14. package/dist/base/llm/codex-llm-client.js +10 -4
  15. package/dist/base/llm/codex-llm-client.js.map +1 -1
  16. package/dist/base/llm/provider-config.d.ts +2 -0
  17. package/dist/base/llm/provider-config.d.ts.map +1 -1
  18. package/dist/base/llm/provider-config.js +8 -0
  19. package/dist/base/llm/provider-config.js.map +1 -1
  20. package/dist/base/llm/provider-factory.d.ts.map +1 -1
  21. package/dist/base/llm/provider-factory.js +15 -0
  22. package/dist/base/llm/provider-factory.js.map +1 -1
  23. package/dist/interface/chat/chat-history.d.ts +1 -0
  24. package/dist/interface/chat/chat-history.d.ts.map +1 -1
  25. package/dist/interface/chat/chat-history.js +19 -0
  26. package/dist/interface/chat/chat-history.js.map +1 -1
  27. package/dist/interface/chat/chat-runner.d.ts +6 -0
  28. package/dist/interface/chat/chat-runner.d.ts.map +1 -1
  29. package/dist/interface/chat/chat-runner.js +148 -3
  30. package/dist/interface/chat/chat-runner.js.map +1 -1
  31. package/dist/interface/chat/mutation-tool-defs.d.ts +34 -0
  32. package/dist/interface/chat/mutation-tool-defs.d.ts.map +1 -1
  33. package/dist/interface/chat/mutation-tool-defs.js +148 -1
  34. package/dist/interface/chat/mutation-tool-defs.js.map +1 -1
  35. package/dist/interface/chat/self-knowledge-mutation-tools.d.ts +12 -0
  36. package/dist/interface/chat/self-knowledge-mutation-tools.d.ts.map +1 -0
  37. package/dist/interface/chat/self-knowledge-mutation-tools.js +261 -0
  38. package/dist/interface/chat/self-knowledge-mutation-tools.js.map +1 -0
  39. package/dist/interface/chat/self-knowledge-tools.d.ts +34 -0
  40. package/dist/interface/chat/self-knowledge-tools.d.ts.map +1 -0
  41. package/dist/interface/chat/self-knowledge-tools.js +258 -0
  42. package/dist/interface/chat/self-knowledge-tools.js.map +1 -0
  43. package/dist/interface/tui/app.d.ts +8 -0
  44. package/dist/interface/tui/app.d.ts.map +1 -1
  45. package/dist/interface/tui/app.js +50 -27
  46. package/dist/interface/tui/app.js.map +1 -1
  47. package/dist/interface/tui/chat.d.ts +2 -1
  48. package/dist/interface/tui/chat.d.ts.map +1 -1
  49. package/dist/interface/tui/chat.js +17 -22
  50. package/dist/interface/tui/chat.js.map +1 -1
  51. package/dist/interface/tui/clipboard.d.ts.map +1 -1
  52. package/dist/interface/tui/clipboard.js +2 -1
  53. package/dist/interface/tui/clipboard.js.map +1 -1
  54. package/dist/interface/tui/cursor-tracker.d.ts +4 -4
  55. package/dist/interface/tui/cursor-tracker.d.ts.map +1 -1
  56. package/dist/interface/tui/cursor-tracker.js +6 -10
  57. package/dist/interface/tui/cursor-tracker.js.map +1 -1
  58. package/dist/interface/tui/entry.d.ts.map +1 -1
  59. package/dist/interface/tui/entry.js +198 -154
  60. package/dist/interface/tui/entry.js.map +1 -1
  61. package/dist/interface/tui/flicker/AlternateScreen.d.ts +2 -1
  62. package/dist/interface/tui/flicker/AlternateScreen.d.ts.map +1 -1
  63. package/dist/interface/tui/flicker/AlternateScreen.js +5 -4
  64. package/dist/interface/tui/flicker/AlternateScreen.js.map +1 -1
  65. package/dist/interface/tui/flicker/MouseTracking.d.ts +2 -1
  66. package/dist/interface/tui/flicker/MouseTracking.d.ts.map +1 -1
  67. package/dist/interface/tui/flicker/MouseTracking.js +4 -3
  68. package/dist/interface/tui/flicker/MouseTracking.js.map +1 -1
  69. package/dist/interface/tui/flicker/frame-writer.js +3 -3
  70. package/dist/interface/tui/flicker/frame-writer.js.map +1 -1
  71. package/dist/interface/tui/fullscreen-chat.d.ts +3 -1
  72. package/dist/interface/tui/fullscreen-chat.d.ts.map +1 -1
  73. package/dist/interface/tui/fullscreen-chat.js +47 -44
  74. package/dist/interface/tui/fullscreen-chat.js.map +1 -1
  75. package/dist/interface/tui/git-branch.d.ts +2 -0
  76. package/dist/interface/tui/git-branch.d.ts.map +1 -0
  77. package/dist/interface/tui/git-branch.js +14 -0
  78. package/dist/interface/tui/git-branch.js.map +1 -0
  79. package/dist/interface/tui/output-controller.d.ts +10 -0
  80. package/dist/interface/tui/output-controller.d.ts.map +1 -0
  81. package/dist/interface/tui/output-controller.js +79 -0
  82. package/dist/interface/tui/output-controller.js.map +1 -0
  83. package/dist/interface/tui/terminal-output.d.ts +6 -0
  84. package/dist/interface/tui/terminal-output.d.ts.map +1 -0
  85. package/dist/interface/tui/terminal-output.js +11 -0
  86. package/dist/interface/tui/terminal-output.js.map +1 -0
  87. package/dist/interface/tui/test-app.d.ts +2 -1
  88. package/dist/interface/tui/test-app.d.ts.map +1 -1
  89. package/dist/interface/tui/test-app.js +2 -2
  90. package/dist/interface/tui/test-app.js.map +1 -1
  91. package/dist/interface/tui/test-entry.d.ts.map +1 -1
  92. package/dist/interface/tui/test-entry.js +40 -42
  93. package/dist/interface/tui/test-entry.js.map +1 -1
  94. package/dist/interface/tui/text-width.d.ts +3 -0
  95. package/dist/interface/tui/text-width.d.ts.map +1 -0
  96. package/dist/interface/tui/text-width.js +8 -0
  97. package/dist/interface/tui/text-width.js.map +1 -0
  98. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.d.ts +4 -1
  99. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.d.ts.map +1 -1
  100. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.js +29 -5
  101. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.js.map +1 -1
  102. package/dist/orchestrator/execution/agent-loop/agent-loop-prompts.d.ts +3 -0
  103. package/dist/orchestrator/execution/agent-loop/agent-loop-prompts.d.ts.map +1 -1
  104. package/dist/orchestrator/execution/agent-loop/agent-loop-prompts.js +13 -0
  105. package/dist/orchestrator/execution/agent-loop/agent-loop-prompts.js.map +1 -1
  106. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.d.ts +5 -1
  107. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.d.ts.map +1 -1
  108. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js +4 -0
  109. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js.map +1 -1
  110. package/dist/orchestrator/execution/agent-loop/execution-policy.d.ts +26 -0
  111. package/dist/orchestrator/execution/agent-loop/execution-policy.d.ts.map +1 -0
  112. package/dist/orchestrator/execution/agent-loop/execution-policy.js +45 -0
  113. package/dist/orchestrator/execution/agent-loop/execution-policy.js.map +1 -0
  114. package/dist/orchestrator/execution/agent-loop/index.d.ts +1 -0
  115. package/dist/orchestrator/execution/agent-loop/index.d.ts.map +1 -1
  116. package/dist/orchestrator/execution/agent-loop/index.js +1 -0
  117. package/dist/orchestrator/execution/agent-loop/index.js.map +1 -1
  118. package/dist/orchestrator/execution/agent-loop/task-agent-loop-context.d.ts +2 -0
  119. package/dist/orchestrator/execution/agent-loop/task-agent-loop-context.d.ts.map +1 -1
  120. package/dist/orchestrator/execution/agent-loop/task-agent-loop-context.js +2 -0
  121. package/dist/orchestrator/execution/agent-loop/task-agent-loop-context.js.map +1 -1
  122. package/dist/orchestrator/execution/agent-loop/task-agent-loop-factory.d.ts.map +1 -1
  123. package/dist/orchestrator/execution/agent-loop/task-agent-loop-factory.js +11 -0
  124. package/dist/orchestrator/execution/agent-loop/task-agent-loop-factory.js.map +1 -1
  125. package/dist/orchestrator/execution/agent-loop/task-agent-loop-runner.d.ts +4 -0
  126. package/dist/orchestrator/execution/agent-loop/task-agent-loop-runner.d.ts.map +1 -1
  127. package/dist/orchestrator/execution/agent-loop/task-agent-loop-runner.js +3 -0
  128. package/dist/orchestrator/execution/agent-loop/task-agent-loop-runner.js.map +1 -1
  129. package/dist/orchestrator/execution/task/task-executor.d.ts.map +1 -1
  130. package/dist/orchestrator/execution/task/task-executor.js +9 -14
  131. package/dist/orchestrator/execution/task/task-executor.js.map +1 -1
  132. package/dist/platform/soil/contracts.d.ts +36 -36
  133. package/dist/prompt/index.d.ts +12 -0
  134. package/dist/prompt/index.d.ts.map +1 -0
  135. package/dist/prompt/index.js +9 -0
  136. package/dist/prompt/index.js.map +1 -0
  137. package/dist/runtime/builtin-integrations.d.ts.map +1 -1
  138. package/dist/runtime/builtin-integrations.js +23 -1
  139. package/dist/runtime/builtin-integrations.js.map +1 -1
  140. package/dist/runtime/daemon/runner-lifecycle.d.ts +5 -0
  141. package/dist/runtime/daemon/runner-lifecycle.d.ts.map +1 -1
  142. package/dist/runtime/daemon/runner-lifecycle.js +6 -4
  143. package/dist/runtime/daemon/runner-lifecycle.js.map +1 -1
  144. package/dist/runtime/daemon/runner.d.ts +3 -0
  145. package/dist/runtime/daemon/runner.d.ts.map +1 -1
  146. package/dist/runtime/daemon/runner.js +1 -0
  147. package/dist/runtime/daemon/runner.js.map +1 -1
  148. package/dist/runtime/interactive-automation/default-registry.d.ts +9 -0
  149. package/dist/runtime/interactive-automation/default-registry.d.ts.map +1 -0
  150. package/dist/runtime/interactive-automation/default-registry.js +24 -0
  151. package/dist/runtime/interactive-automation/default-registry.js.map +1 -0
  152. package/dist/runtime/interactive-automation/index.d.ts +9 -0
  153. package/dist/runtime/interactive-automation/index.d.ts.map +1 -0
  154. package/dist/runtime/interactive-automation/index.js +9 -0
  155. package/dist/runtime/interactive-automation/index.js.map +1 -0
  156. package/dist/runtime/interactive-automation/providers/anthropic-computer-use.d.ts +14 -0
  157. package/dist/runtime/interactive-automation/providers/anthropic-computer-use.d.ts.map +1 -0
  158. package/dist/runtime/interactive-automation/providers/anthropic-computer-use.js +33 -0
  159. package/dist/runtime/interactive-automation/providers/anthropic-computer-use.js.map +1 -0
  160. package/dist/runtime/interactive-automation/providers/codex-app.d.ts +29 -0
  161. package/dist/runtime/interactive-automation/providers/codex-app.d.ts.map +1 -0
  162. package/dist/runtime/interactive-automation/providers/codex-app.js +67 -0
  163. package/dist/runtime/interactive-automation/providers/codex-app.js.map +1 -0
  164. package/dist/runtime/interactive-automation/providers/manus-browser.d.ts +23 -0
  165. package/dist/runtime/interactive-automation/providers/manus-browser.d.ts.map +1 -0
  166. package/dist/runtime/interactive-automation/providers/manus-browser.js +88 -0
  167. package/dist/runtime/interactive-automation/providers/manus-browser.js.map +1 -0
  168. package/dist/runtime/interactive-automation/providers/noop.d.ts +21 -0
  169. package/dist/runtime/interactive-automation/providers/noop.d.ts.map +1 -0
  170. package/dist/runtime/interactive-automation/providers/noop.js +59 -0
  171. package/dist/runtime/interactive-automation/providers/noop.js.map +1 -0
  172. package/dist/runtime/interactive-automation/providers/perplexity-research.d.ts +25 -0
  173. package/dist/runtime/interactive-automation/providers/perplexity-research.d.ts.map +1 -0
  174. package/dist/runtime/interactive-automation/providers/perplexity-research.js +124 -0
  175. package/dist/runtime/interactive-automation/providers/perplexity-research.js.map +1 -0
  176. package/dist/runtime/interactive-automation/registry.d.ts +20 -0
  177. package/dist/runtime/interactive-automation/registry.d.ts.map +1 -0
  178. package/dist/runtime/interactive-automation/registry.js +55 -0
  179. package/dist/runtime/interactive-automation/registry.js.map +1 -0
  180. package/dist/runtime/interactive-automation/types.d.ts +132 -0
  181. package/dist/runtime/interactive-automation/types.d.ts.map +1 -0
  182. package/dist/runtime/interactive-automation/types.js +8 -0
  183. package/dist/runtime/interactive-automation/types.js.map +1 -0
  184. package/dist/runtime/types/builtin-integration.d.ts +2 -2
  185. package/dist/runtime/types/builtin-integration.d.ts.map +1 -1
  186. package/dist/tools/automation/InteractiveAutomationTools.d.ts +333 -0
  187. package/dist/tools/automation/InteractiveAutomationTools.d.ts.map +1 -0
  188. package/dist/tools/automation/InteractiveAutomationTools.js +424 -0
  189. package/dist/tools/automation/InteractiveAutomationTools.js.map +1 -0
  190. package/dist/tools/automation/index.d.ts +2 -0
  191. package/dist/tools/automation/index.d.ts.map +1 -0
  192. package/dist/tools/automation/index.js +2 -0
  193. package/dist/tools/automation/index.js.map +1 -0
  194. package/dist/tools/builtin/index.d.ts +6 -0
  195. package/dist/tools/builtin/index.d.ts.map +1 -1
  196. package/dist/tools/builtin/index.js +25 -0
  197. package/dist/tools/builtin/index.js.map +1 -1
  198. package/dist/tools/execution/SoilOpenTool/SoilOpenTool.d.ts +4 -4
  199. package/dist/tools/execution/SpawnSessionTool/SpawnSessionTool.d.ts +40 -8
  200. package/dist/tools/execution/SpawnSessionTool/SpawnSessionTool.d.ts.map +1 -1
  201. package/dist/tools/execution/SpawnSessionTool/SpawnSessionTool.js +28 -4
  202. package/dist/tools/execution/SpawnSessionTool/SpawnSessionTool.js.map +1 -1
  203. package/dist/tools/executor.d.ts.map +1 -1
  204. package/dist/tools/executor.js +16 -0
  205. package/dist/tools/executor.js.map +1 -1
  206. package/dist/tools/fs/FileEditTool/FileEditTool.js +1 -1
  207. package/dist/tools/fs/FileEditTool/FileEditTool.js.map +1 -1
  208. package/dist/tools/fs/FileValidationTool/FileValidationTool.d.ts +1 -1
  209. package/dist/tools/fs/FileValidationTool/FileValidationTool.d.ts.map +1 -1
  210. package/dist/tools/fs/FileValidationTool/FileValidationTool.js +3 -16
  211. package/dist/tools/fs/FileValidationTool/FileValidationTool.js.map +1 -1
  212. package/dist/tools/fs/FileValidationTool/protected-path-policy.d.ts +12 -0
  213. package/dist/tools/fs/FileValidationTool/protected-path-policy.d.ts.map +1 -0
  214. package/dist/tools/fs/FileValidationTool/protected-path-policy.js +58 -0
  215. package/dist/tools/fs/FileValidationTool/protected-path-policy.js.map +1 -0
  216. package/dist/tools/fs/FileWriteTool/FileWriteTool.js +1 -1
  217. package/dist/tools/fs/FileWriteTool/FileWriteTool.js.map +1 -1
  218. package/dist/tools/fs/GlobTool/GlobTool.js +1 -1
  219. package/dist/tools/fs/GlobTool/GlobTool.js.map +1 -1
  220. package/dist/tools/fs/GrepTool/GrepTool.js +1 -1
  221. package/dist/tools/fs/GrepTool/GrepTool.js.map +1 -1
  222. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.js +1 -1
  223. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.js.map +1 -1
  224. package/dist/tools/fs/ListDirTool/ListDirTool.js +1 -1
  225. package/dist/tools/fs/ListDirTool/ListDirTool.js.map +1 -1
  226. package/dist/tools/fs/ReadTool/ReadTool.js +1 -1
  227. package/dist/tools/fs/ReadTool/ReadTool.js.map +1 -1
  228. package/dist/tools/network/HttpFetchTool/HttpFetchTool.js +1 -1
  229. package/dist/tools/network/HttpFetchTool/HttpFetchTool.js.map +1 -1
  230. package/dist/tools/network/WebSearchTool/WebSearchTool.d.ts.map +1 -1
  231. package/dist/tools/network/WebSearchTool/WebSearchTool.js +1 -0
  232. package/dist/tools/network/WebSearchTool/WebSearchTool.js.map +1 -1
  233. package/dist/tools/permission.d.ts +1 -0
  234. package/dist/tools/permission.d.ts.map +1 -1
  235. package/dist/tools/permission.js +33 -0
  236. package/dist/tools/permission.js.map +1 -1
  237. package/dist/tools/system/EnvTool/EnvTool.d.ts +4 -4
  238. package/dist/tools/system/ShellTool/ShellTool.d.ts.map +1 -1
  239. package/dist/tools/system/ShellTool/ShellTool.js +6 -46
  240. package/dist/tools/system/ShellTool/ShellTool.js.map +1 -1
  241. package/dist/tools/system/ShellTool/command-policy.d.ts +14 -0
  242. package/dist/tools/system/ShellTool/command-policy.d.ts.map +1 -0
  243. package/dist/tools/system/ShellTool/command-policy.js +121 -0
  244. package/dist/tools/system/ShellTool/command-policy.js.map +1 -0
  245. package/dist/tools/types.d.ts +9 -0
  246. package/dist/tools/types.d.ts.map +1 -1
  247. package/dist/tools/types.js +2 -0
  248. package/dist/tools/types.js.map +1 -1
  249. package/package.json +4 -4
@@ -100,6 +100,25 @@ export class ChatHistory {
100
100
  await this.persist();
101
101
  return { before, after: this.session.messages.length };
102
102
  }
103
+ async removeLastTurn() {
104
+ if (this.session.messages.length === 0)
105
+ return 0;
106
+ let removed = 0;
107
+ while (this.session.messages.length > 0) {
108
+ const message = this.session.messages.pop();
109
+ if (!message)
110
+ break;
111
+ removed += 1;
112
+ if (message.role === "user")
113
+ break;
114
+ }
115
+ this.session.messages = this.session.messages.map((message, index) => ({
116
+ ...message,
117
+ turnIndex: index,
118
+ }));
119
+ await this.persist();
120
+ return removed;
121
+ }
103
122
  getMessages() {
104
123
  return [...this.session.messages];
105
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat-history.js","sourceRoot":"","sources":["../../../src/interface/chat/chat-history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-history.js","sourceRoot":"","sources":["../../../src/interface/chat/chat-history.ts"],"names":[],"mappings":"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"}
@@ -113,6 +113,7 @@ export declare class ChatRunner {
113
113
  onEvent: ((event: ChatEvent) => void) | undefined;
114
114
  private nativeAgentLoopStatePath;
115
115
  private runtimeControlContext;
116
+ private sessionExecutionPolicy;
116
117
  constructor(deps: ChatRunnerDeps);
117
118
  /**
118
119
  * Initialize a persistent session for interactive (multi-turn) mode.
@@ -155,6 +156,10 @@ export declare class ChatRunner {
155
156
  private handleCompact;
156
157
  private handleCommand;
157
158
  private handleTrack;
159
+ private handlePermissions;
160
+ private handleReview;
161
+ private handleFork;
162
+ private handleUndo;
158
163
  private handleTend;
159
164
  private handleTendConfirmation;
160
165
  /**
@@ -197,6 +202,7 @@ export declare class ChatRunner {
197
202
  private emitLifecycleEndEvent;
198
203
  private emitLifecycleErrorEvent;
199
204
  /** Build a ToolCallContext from ChatRunnerDeps for tool dispatch. */
205
+ private getSessionExecutionPolicy;
200
206
  private buildToolCallContext;
201
207
  }
202
208
  //# sourceMappingURL=chat-runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-runner.d.ts","sourceRoot":"","sources":["../../../src/interface/chat/chat-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-runner.d.ts","sourceRoot":"","sources":["../../../src/interface/chat/chat-runner.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAa,MAAM,+CAA+C,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAK/D,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,KAAK,EAAgB,SAAS,EAAoB,MAAM,kBAAkB,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mEAAmE,CAAC;AAW7G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,kDAAkD,CAAC;AAU1D,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,QAAQ,CAAC;IAClB,mEAAmE;IACnE,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,sEAAsE;IACtE,YAAY,CAAC,EAAE;QAAE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IAC1J,sEAAsE;IACtE,YAAY,CAAC,EAAE;QAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC,CAAA;KAAE,CAAC;IACjG,qDAAqD;IACrD,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC/C,+EAA+E;IAC/E,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACxE,mFAAmF;IACnF,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1G,+EAA+E;IAC/E,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kFAAkF;IAClF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,kGAAkG;IAClG,qBAAqB,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;IAC/D,4EAA4E;IAC5E,wBAAwB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IAC/C,uEAAuE;IACvE,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AA8GD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAAuB;IACzC,qGAAqG;IACrG,OAAO,CAAC,aAAa,CAAS;IAC9B,0GAA0G;IAC1G,OAAO,CAAC,cAAc,CAA0B;IAChD,+FAA+F;IAC/F,OAAO,CAAC,wBAAwB,CAAuB;IACvD,4DAA4D;IAC5D,OAAO,CAAC,WAAW,CAA2D;IAC9E,wDAAwD;IACxD,OAAO,CAAC,iBAAiB,CAA2C;IACpE;;;OAGG;IACH,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAa;IACpE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAa;IAC9D,OAAO,CAAC,wBAAwB,CAAuB;IACvD,OAAO,CAAC,qBAAqB,CAA0C;IACvE,OAAO,CAAC,sBAAsB,CAAgC;gBAElD,IAAI,EAAE,cAAc;IAIhC;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW/B,6BAA6B,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAU/D,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,yBAAyB,IAAI,WAAW,CAAC,UAAU,CAAC;IAIpD,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI;IAIzE,OAAO,CAAC,0BAA0B;IAmBlC,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,aAAa;YAYP,SAAS;YAMT,cAAc;IAO5B,OAAO,CAAC,gBAAgB;YAOV,8BAA8B;IAyB5C,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,cAAc;YAUR,YAAY;YAiCZ,WAAW;YAYX,gBAAgB;YAuBhB,gBAAgB;YAYhB,mBAAmB;IAQjC,OAAO,CAAC,cAAc;YAKR,WAAW;IAgBzB,OAAO,CAAC,aAAa;YAWP,QAAQ;IAsBtB,OAAO,CAAC,UAAU;YAqBJ,UAAU;IAoBxB,OAAO,CAAC,qBAAqB;YAKf,yBAAyB;IAgBvC,OAAO,CAAC,YAAY;YAON,YAAY;YAKZ,WAAW;YASX,aAAa;IAoB3B,OAAO,CAAC,wBAAwB;YAKlB,0BAA0B;YAyB1B,aAAa;YAmBb,aAAa;YAuHb,WAAW;YAgCX,iBAAiB;YAsDjB,YAAY;YAcZ,UAAU;YA+BV,UAAU;YAeV,UAAU;YAmDV,sBAAsB;IA+DpC;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,SAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;YAsbnF,0BAA0B;IAyCxC;;;OAGG;YACW,gBAAgB;IAsF9B;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,wBAAwB;IAiHhC,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,kBAAkB;YAQZ,2BAA2B;IAYzC,OAAO,CAAC,uBAAuB;IAc/B,iDAAiD;YACnC,gBAAgB;YA6JhB,cAAc;IA4B5B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,uBAAuB;IAc/B,qEAAqE;YACvD,yBAAyB;YAUzB,oBAAoB;CAgBnC"}
@@ -18,6 +18,7 @@ import { TendCommand } from "./tend-command.js";
18
18
  import { EventSubscriber } from "./event-subscriber.js";
19
19
  import { buildPromptedToolProtocolSystemPrompt, extractPromptedToolCalls, } from "../../orchestrator/execution/agent-loop/prompted-tool-protocol.js";
20
20
  import { recognizeRuntimeControlIntent } from "../../runtime/control/index.js";
21
+ import { resolveExecutionPolicy, summarizeExecutionPolicy, withExecutionPolicyOverrides, } from "../../orchestrator/execution/agent-loop/execution-policy.js";
21
22
  const DEFAULT_TIMEOUT_MS = 120_000;
22
23
  const MAX_VERIFY_RETRIES = 2;
23
24
  const MAX_TOOL_LOOPS = 5;
@@ -48,10 +49,16 @@ Goals and tasks
48
49
  Configuration
49
50
  /config Show provider configuration with secrets masked
50
51
  /model Show the active provider/model/adapter
52
+ /permissions [args] Show or update session execution policy
51
53
  /plugins List installed plugins when plugin metadata is available
52
54
 
55
+ Review and branching
56
+ /review Show current diff summary and verification context
57
+ /fork [title] Fork the current chat session into a new session
58
+ /undo Remove the latest chat turn from session history
59
+
53
60
  Deferred
54
- /retry, /undo, and /usage are intentionally not supported yet.`;
61
+ /retry and /usage are intentionally not supported yet.`;
55
62
  // ─── Helpers ───
56
63
  function checkGitChanges(cwd) {
57
64
  return new Promise((resolve) => {
@@ -114,6 +121,7 @@ export class ChatRunner {
114
121
  onEvent = undefined;
115
122
  nativeAgentLoopStatePath = null;
116
123
  runtimeControlContext = null;
124
+ sessionExecutionPolicy = null;
117
125
  constructor(deps) {
118
126
  this.deps = deps;
119
127
  }
@@ -130,6 +138,7 @@ export class ChatRunner {
130
138
  this.sessionActive = true;
131
139
  this.nativeAgentLoopStatePath = `chat/agentloop/${sessionId}.state.json`;
132
140
  this.history.setAgentLoopStatePath(this.nativeAgentLoopStatePath);
141
+ this.sessionExecutionPolicy = null;
133
142
  }
134
143
  startSessionFromLoadedSession(session) {
135
144
  const chatSession = this.loadedSessionToChatSession(session);
@@ -138,6 +147,7 @@ export class ChatRunner {
138
147
  this.sessionActive = true;
139
148
  this.nativeAgentLoopStatePath = session.agentLoopStatePath ?? `chat/agentloop/${session.id}.state.json`;
140
149
  this.history.setAgentLoopStatePath(this.nativeAgentLoopStatePath);
150
+ this.sessionExecutionPolicy = null;
141
151
  }
142
152
  getSessionId() {
143
153
  return this.history?.getSessionId() ?? null;
@@ -613,9 +623,21 @@ export class ChatRunner {
613
623
  if (cmd === "/model") {
614
624
  return this.handleModel(start);
615
625
  }
626
+ if (cmd === "/permissions") {
627
+ return this.handlePermissions(trimmed.slice("/permissions".length).trim(), start);
628
+ }
616
629
  if (cmd === "/plugins") {
617
630
  return this.handlePlugins(start);
618
631
  }
632
+ if (cmd === "/review") {
633
+ return this.handleReview(start);
634
+ }
635
+ if (cmd === "/fork") {
636
+ return this.handleFork(trimmed.slice("/fork".length).trim(), start);
637
+ }
638
+ if (cmd === "/undo") {
639
+ return this.handleUndo(start);
640
+ }
619
641
  if (cmd === "/exit") {
620
642
  return { success: true, output: "Exiting chat mode.", elapsed_ms: Date.now() - start };
621
643
  }
@@ -668,6 +690,114 @@ export class ChatRunner {
668
690
  };
669
691
  }
670
692
  }
693
+ async handlePermissions(args, start) {
694
+ const policy = await this.getSessionExecutionPolicy();
695
+ if (!args) {
696
+ return {
697
+ success: true,
698
+ output: summarizeExecutionPolicy(policy),
699
+ elapsed_ms: Date.now() - start,
700
+ };
701
+ }
702
+ const tokens = args.toLowerCase().split(/\s+/).filter(Boolean);
703
+ let nextPolicy = policy;
704
+ for (let index = 0; index < tokens.length; index++) {
705
+ const token = tokens[index];
706
+ if (token === "read-only" || token === "readonly" || token === "read_only") {
707
+ nextPolicy = withExecutionPolicyOverrides(nextPolicy, { sandboxMode: "read_only" });
708
+ continue;
709
+ }
710
+ if (token === "workspace-write" || token === "workspace_write") {
711
+ nextPolicy = withExecutionPolicyOverrides(nextPolicy, { sandboxMode: "workspace_write" });
712
+ continue;
713
+ }
714
+ if (token === "full-access" || token === "danger-full-access" || token === "danger_full_access") {
715
+ nextPolicy = withExecutionPolicyOverrides(nextPolicy, { sandboxMode: "danger_full_access" });
716
+ continue;
717
+ }
718
+ if (token === "network" && tokens[index + 1]) {
719
+ nextPolicy = withExecutionPolicyOverrides(nextPolicy, { networkAccess: tokens[index + 1] === "on" });
720
+ index += 1;
721
+ continue;
722
+ }
723
+ if (token === "approval" && tokens[index + 1]) {
724
+ const approvalPolicy = tokens[index + 1];
725
+ if (approvalPolicy === "never" || approvalPolicy === "on_request" || approvalPolicy === "untrusted") {
726
+ nextPolicy = withExecutionPolicyOverrides(nextPolicy, { approvalPolicy });
727
+ index += 1;
728
+ continue;
729
+ }
730
+ }
731
+ return {
732
+ success: false,
733
+ output: "Usage: /permissions [read-only|workspace-write|full-access] [network on|off] [approval on_request|never|untrusted]",
734
+ elapsed_ms: Date.now() - start,
735
+ };
736
+ }
737
+ this.sessionExecutionPolicy = nextPolicy;
738
+ return {
739
+ success: true,
740
+ output: summarizeExecutionPolicy(nextPolicy),
741
+ elapsed_ms: Date.now() - start,
742
+ };
743
+ }
744
+ async handleReview(start) {
745
+ const cwd = this.sessionCwd ?? process.cwd();
746
+ const diffStat = await checkGitChanges(cwd);
747
+ const policy = await this.getSessionExecutionPolicy();
748
+ const output = [
749
+ "Review summary",
750
+ diffStat ? diffStat : "No uncommitted changes detected.",
751
+ "",
752
+ "Execution policy",
753
+ summarizeExecutionPolicy(policy),
754
+ ].join("\n");
755
+ return { success: true, output, elapsed_ms: Date.now() - start };
756
+ }
757
+ async handleFork(title, start) {
758
+ const cwd = this.sessionCwd ?? process.cwd();
759
+ const sessionId = crypto.randomUUID();
760
+ const baseSession = this.history?.getSessionData() ?? {
761
+ id: sessionId,
762
+ cwd,
763
+ createdAt: new Date().toISOString(),
764
+ updatedAt: new Date().toISOString(),
765
+ messages: [],
766
+ };
767
+ const now = new Date().toISOString();
768
+ const forkedSession = {
769
+ ...baseSession,
770
+ id: sessionId,
771
+ createdAt: now,
772
+ updatedAt: now,
773
+ title: title || (baseSession.title ? `${baseSession.title} (fork)` : "Forked session"),
774
+ };
775
+ this.history = ChatHistory.fromSession(this.deps.stateManager, forkedSession);
776
+ this.sessionCwd = cwd;
777
+ this.sessionActive = true;
778
+ this.nativeAgentLoopStatePath = `chat/agentloop/${sessionId}.state.json`;
779
+ this.history.setAgentLoopStatePath(this.nativeAgentLoopStatePath);
780
+ await this.history.persist();
781
+ return {
782
+ success: true,
783
+ output: `Forked chat session as ${sessionId}.`,
784
+ elapsed_ms: Date.now() - start,
785
+ };
786
+ }
787
+ async handleUndo(start) {
788
+ if (!this.history) {
789
+ return { success: false, output: "No active chat session to undo.", elapsed_ms: Date.now() - start };
790
+ }
791
+ const removed = await this.history.removeLastTurn();
792
+ if (removed === 0) {
793
+ return { success: false, output: "No chat turn to undo.", elapsed_ms: Date.now() - start };
794
+ }
795
+ return {
796
+ success: true,
797
+ output: `Removed ${removed} message(s) from chat history. File changes were not reverted.`,
798
+ elapsed_ms: Date.now() - start,
799
+ };
800
+ }
671
801
  async handleTend(args, start) {
672
802
  if (!this.deps.llmClient) {
673
803
  return {
@@ -1031,6 +1161,9 @@ export class ChatRunner {
1031
1161
  }
1032
1162
  return false;
1033
1163
  },
1164
+ toolCallContext: {
1165
+ executionPolicy: await this.getSessionExecutionPolicy(),
1166
+ },
1034
1167
  ...(this.nativeAgentLoopStatePath ? { resumeStatePath: this.nativeAgentLoopStatePath } : {}),
1035
1168
  ...(resumeState ? { resumeState } : {}),
1036
1169
  ...(resumeOnly ? { resumeOnly: true } : {}),
@@ -1213,7 +1346,7 @@ export class ChatRunner {
1213
1346
  async executeWithTools(prompt, eventContext, assistantBuffer, systemPrompt) {
1214
1347
  const llmClient = this.deps.llmClient;
1215
1348
  const messages = [{ role: "user", content: prompt }];
1216
- const toolCallContext = this.buildToolCallContext();
1349
+ const toolCallContext = await this.buildToolCallContext();
1217
1350
  for (let loop = 0; loop < MAX_TOOL_LOOPS; loop++) {
1218
1351
  // Recompute tools each iteration so newly activated deferred tools are included
1219
1352
  const tools = this.deps.registry
@@ -1667,7 +1800,18 @@ export class ChatRunner {
1667
1800
  });
1668
1801
  }
1669
1802
  /** Build a ToolCallContext from ChatRunnerDeps for tool dispatch. */
1670
- buildToolCallContext() {
1803
+ async getSessionExecutionPolicy() {
1804
+ if (this.sessionExecutionPolicy)
1805
+ return this.sessionExecutionPolicy;
1806
+ const config = await loadProviderConfig({ saveMigration: false });
1807
+ this.sessionExecutionPolicy = resolveExecutionPolicy({
1808
+ workspaceRoot: this.sessionCwd ?? process.cwd(),
1809
+ security: config.agent_loop?.security,
1810
+ });
1811
+ return this.sessionExecutionPolicy;
1812
+ }
1813
+ async buildToolCallContext() {
1814
+ const executionPolicy = await this.getSessionExecutionPolicy();
1671
1815
  return {
1672
1816
  cwd: this.sessionCwd ?? process.cwd(),
1673
1817
  goalId: this.deps.goalId ?? "",
@@ -1679,6 +1823,7 @@ export class ChatRunner {
1679
1823
  }
1680
1824
  return false;
1681
1825
  },
1826
+ executionPolicy,
1682
1827
  };
1683
1828
  }
1684
1829
  }