@qduc/term2 0.14.0 → 0.16.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 (1166) hide show
  1. package/README.md +324 -316
  2. package/dist/agent.d.ts +5 -0
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +23 -61
  5. package/dist/agent.js.map +1 -1
  6. package/dist/app-helpers.d.ts +4 -0
  7. package/dist/app-helpers.d.ts.map +1 -1
  8. package/dist/app-helpers.js +6 -0
  9. package/dist/app-helpers.js.map +1 -1
  10. package/dist/app.d.ts +2 -2
  11. package/dist/app.d.ts.map +1 -1
  12. package/dist/app.js +265 -27
  13. package/dist/app.js.map +1 -1
  14. package/dist/cli.js +123 -30
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/auto-approve-command.js +3 -3
  17. package/dist/commands/auto-approve-command.js.map +1 -1
  18. package/dist/commands/compact-command.d.ts.map +1 -1
  19. package/dist/commands/compact-command.js +4 -0
  20. package/dist/commands/compact-command.js.map +1 -1
  21. package/dist/commands/effort-command.js +1 -1
  22. package/dist/commands/effort-command.js.map +1 -1
  23. package/dist/commands/guarded-settings-command.d.ts +3 -1
  24. package/dist/commands/guarded-settings-command.d.ts.map +1 -1
  25. package/dist/commands/guarded-settings-command.js +17 -5
  26. package/dist/commands/guarded-settings-command.js.map +1 -1
  27. package/dist/commands/mode-commands.d.ts +9 -2
  28. package/dist/commands/mode-commands.d.ts.map +1 -1
  29. package/dist/commands/mode-commands.js +12 -3
  30. package/dist/commands/mode-commands.js.map +1 -1
  31. package/dist/commands/model-command.js +1 -1
  32. package/dist/commands/model-command.js.map +1 -1
  33. package/dist/commands/resume-command.d.ts +10 -0
  34. package/dist/commands/resume-command.d.ts.map +1 -0
  35. package/dist/commands/resume-command.js +40 -0
  36. package/dist/commands/resume-command.js.map +1 -0
  37. package/dist/commands/usage-command.d.ts +10 -1
  38. package/dist/commands/usage-command.d.ts.map +1 -1
  39. package/dist/commands/usage-command.js +11 -1
  40. package/dist/commands/usage-command.js.map +1 -1
  41. package/dist/components/ErrorBoundary.d.ts.map +1 -1
  42. package/dist/components/ErrorBoundary.js +5 -4
  43. package/dist/components/ErrorBoundary.js.map +1 -1
  44. package/dist/components/InputBox.d.ts +2 -0
  45. package/dist/components/InputBox.d.ts.map +1 -1
  46. package/dist/components/InputBox.js +59 -8
  47. package/dist/components/InputBox.js.map +1 -1
  48. package/dist/components/MarkdownRenderer.d.ts.map +1 -1
  49. package/dist/components/MarkdownRenderer.js +16 -15
  50. package/dist/components/MarkdownRenderer.js.map +1 -1
  51. package/dist/components/common/MenuContainer.d.ts +25 -2
  52. package/dist/components/common/MenuContainer.d.ts.map +1 -1
  53. package/dist/components/common/MenuContainer.js +35 -11
  54. package/dist/components/common/MenuContainer.js.map +1 -1
  55. package/dist/components/common/ScrollableTabBar.d.ts.map +1 -1
  56. package/dist/components/common/ScrollableTabBar.js +5 -4
  57. package/dist/components/common/ScrollableTabBar.js.map +1 -1
  58. package/dist/components/input/ApplicationInputSurface.d.ts +4 -5
  59. package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -1
  60. package/dist/components/input/ApplicationInputSurface.js.map +1 -1
  61. package/dist/components/input/FirstRunSetupPrompt.d.ts.map +1 -1
  62. package/dist/components/input/FirstRunSetupPrompt.js +5 -4
  63. package/dist/components/input/FirstRunSetupPrompt.js.map +1 -1
  64. package/dist/components/input/MenuSurface.d.ts.map +1 -1
  65. package/dist/components/input/MenuSurface.js +10 -3
  66. package/dist/components/input/MenuSurface.js.map +1 -1
  67. package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
  68. package/dist/components/input/ModelMenuSession.js +2 -1
  69. package/dist/components/input/ModelMenuSession.js.map +1 -1
  70. package/dist/components/input/PendingQueueList.d.ts +2 -0
  71. package/dist/components/input/PendingQueueList.d.ts.map +1 -1
  72. package/dist/components/input/PendingQueueList.js +26 -6
  73. package/dist/components/input/PendingQueueList.js.map +1 -1
  74. package/dist/components/input/ProviderMenuSession.d.ts.map +1 -1
  75. package/dist/components/input/ProviderMenuSession.js +1 -0
  76. package/dist/components/input/ProviderMenuSession.js.map +1 -1
  77. package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
  78. package/dist/components/input/SettingsValueMenuSession.js +8 -1
  79. package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
  80. package/dist/components/layout/BackgroundTaskManager.d.ts +2 -0
  81. package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
  82. package/dist/components/layout/BackgroundTaskManager.js +166 -73
  83. package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
  84. package/dist/components/layout/BackgroundTasksPanel.d.ts +12 -3
  85. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
  86. package/dist/components/layout/BackgroundTasksPanel.js +197 -62
  87. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
  88. package/dist/components/layout/Banner.d.ts +0 -1
  89. package/dist/components/layout/Banner.d.ts.map +1 -1
  90. package/dist/components/layout/Banner.js +43 -73
  91. package/dist/components/layout/Banner.js.map +1 -1
  92. package/dist/components/layout/BottomArea.d.ts +17 -6
  93. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  94. package/dist/components/layout/BottomArea.js +44 -19
  95. package/dist/components/layout/BottomArea.js.map +1 -1
  96. package/dist/components/layout/DiffView.js +5 -5
  97. package/dist/components/layout/DiffView.js.map +1 -1
  98. package/dist/components/layout/StatusBar.d.ts +9 -1
  99. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  100. package/dist/components/layout/StatusBar.js +332 -80
  101. package/dist/components/layout/StatusBar.js.map +1 -1
  102. package/dist/components/layout/background-task-clock.d.ts +43 -0
  103. package/dist/components/layout/background-task-clock.d.ts.map +1 -0
  104. package/dist/components/layout/background-task-clock.js +46 -0
  105. package/dist/components/layout/background-task-clock.js.map +1 -0
  106. package/dist/components/layout/live-task-rows.d.ts +16 -0
  107. package/dist/components/layout/live-task-rows.d.ts.map +1 -0
  108. package/dist/components/layout/live-task-rows.js +28 -0
  109. package/dist/components/layout/live-task-rows.js.map +1 -0
  110. package/dist/components/layout/terminal-text-budget.d.ts +4 -0
  111. package/dist/components/layout/terminal-text-budget.d.ts.map +1 -0
  112. package/dist/components/layout/terminal-text-budget.js +18 -0
  113. package/dist/components/layout/terminal-text-budget.js.map +1 -0
  114. package/dist/components/menu/CopyMenu.d.ts.map +1 -1
  115. package/dist/components/menu/CopyMenu.js +4 -3
  116. package/dist/components/menu/CopyMenu.js.map +1 -1
  117. package/dist/components/menu/MentorPoolSelectionMenu.d.ts.map +1 -1
  118. package/dist/components/menu/MentorPoolSelectionMenu.js +28 -21
  119. package/dist/components/menu/MentorPoolSelectionMenu.js.map +1 -1
  120. package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
  121. package/dist/components/menu/ModelSelectionMenu.js +43 -17
  122. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  123. package/dist/components/menu/PathSelectionMenu.d.ts.map +1 -1
  124. package/dist/components/menu/PathSelectionMenu.js +4 -3
  125. package/dist/components/menu/PathSelectionMenu.js.map +1 -1
  126. package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
  127. package/dist/components/menu/ProviderSelectionMenu.js +71 -26
  128. package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
  129. package/dist/components/menu/RewindMenu.d.ts.map +1 -1
  130. package/dist/components/menu/RewindMenu.js +4 -3
  131. package/dist/components/menu/RewindMenu.js.map +1 -1
  132. package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
  133. package/dist/components/menu/SettingsSelectionMenu.js +30 -25
  134. package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
  135. package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
  136. package/dist/components/menu/SettingsValueSelectionMenu.js +22 -20
  137. package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
  138. package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
  139. package/dist/components/menu/SkillSelectionMenu.js +33 -23
  140. package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
  141. package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
  142. package/dist/components/menu/SlashCommandMenu.js +11 -6
  143. package/dist/components/menu/SlashCommandMenu.js.map +1 -1
  144. package/dist/components/message/ChatMessage.js +2 -2
  145. package/dist/components/message/ChatMessage.js.map +1 -1
  146. package/dist/components/message/CodeContextSearchRenderer.d.ts.map +1 -1
  147. package/dist/components/message/CodeContextSearchRenderer.js +8 -11
  148. package/dist/components/message/CodeContextSearchRenderer.js.map +1 -1
  149. package/dist/components/message/CommandGroupSummary.d.ts +9 -0
  150. package/dist/components/message/CommandGroupSummary.d.ts.map +1 -0
  151. package/dist/components/message/CommandGroupSummary.js +39 -0
  152. package/dist/components/message/CommandGroupSummary.js.map +1 -0
  153. package/dist/components/message/CommandMessage.d.ts +8 -0
  154. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  155. package/dist/components/message/CommandMessage.js +159 -110
  156. package/dist/components/message/CommandMessage.js.map +1 -1
  157. package/dist/components/message/GrepRenderer.d.ts.map +1 -1
  158. package/dist/components/message/GrepRenderer.js +5 -8
  159. package/dist/components/message/GrepRenderer.js.map +1 -1
  160. package/dist/components/message/MemoryRenderer.d.ts +1 -0
  161. package/dist/components/message/MemoryRenderer.d.ts.map +1 -1
  162. package/dist/components/message/MemoryRenderer.js +19 -17
  163. package/dist/components/message/MemoryRenderer.js.map +1 -1
  164. package/dist/components/message/MessageList.d.ts +6 -3
  165. package/dist/components/message/MessageList.d.ts.map +1 -1
  166. package/dist/components/message/MessageList.js +68 -13
  167. package/dist/components/message/MessageList.js.map +1 -1
  168. package/dist/components/message/ReadFileRenderer.d.ts.map +1 -1
  169. package/dist/components/message/ReadFileRenderer.js +5 -6
  170. package/dist/components/message/ReadFileRenderer.js.map +1 -1
  171. package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
  172. package/dist/components/message/SubagentActivityMessage.js +21 -15
  173. package/dist/components/message/SubagentActivityMessage.js.map +1 -1
  174. package/dist/components/message/WebFetchRenderer.d.ts.map +1 -1
  175. package/dist/components/message/WebFetchRenderer.js +7 -11
  176. package/dist/components/message/WebFetchRenderer.js.map +1 -1
  177. package/dist/components/message/WebSearchRenderer.d.ts.map +1 -1
  178. package/dist/components/message/WebSearchRenderer.js +5 -10
  179. package/dist/components/message/WebSearchRenderer.js.map +1 -1
  180. package/dist/components/message/command-grouping.d.ts +66 -0
  181. package/dist/components/message/command-grouping.d.ts.map +1 -0
  182. package/dist/components/message/command-grouping.js +184 -0
  183. package/dist/components/message/command-grouping.js.map +1 -0
  184. package/dist/components/message/command-message-helpers.d.ts +11 -37
  185. package/dist/components/message/command-message-helpers.d.ts.map +1 -1
  186. package/dist/components/message/command-message-helpers.js +62 -8
  187. package/dist/components/message/command-message-helpers.js.map +1 -1
  188. package/dist/components/message/useCommandVisibility.d.ts.map +1 -1
  189. package/dist/components/message/useCommandVisibility.js +5 -4
  190. package/dist/components/message/useCommandVisibility.js.map +1 -1
  191. package/dist/components/prompt/ApprovalPrompt.d.ts +1 -1
  192. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  193. package/dist/components/prompt/ApprovalPrompt.js +286 -156
  194. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  195. package/dist/components/prompt/HandoffConfirmationPrompt.d.ts.map +1 -1
  196. package/dist/components/prompt/HandoffConfirmationPrompt.js +3 -2
  197. package/dist/components/prompt/HandoffConfirmationPrompt.js.map +1 -1
  198. package/dist/components/prompt/InputSurgeConfirmationPrompt.d.ts.map +1 -1
  199. package/dist/components/prompt/InputSurgeConfirmationPrompt.js +5 -4
  200. package/dist/components/prompt/InputSurgeConfirmationPrompt.js.map +1 -1
  201. package/dist/components/prompt/LargeUncachedConfirmationPrompt.d.ts.map +1 -1
  202. package/dist/components/prompt/LargeUncachedConfirmationPrompt.js +4 -3
  203. package/dist/components/prompt/LargeUncachedConfirmationPrompt.js.map +1 -1
  204. package/dist/components/prompt/ModeSwitchConfirmationPrompt.d.ts +11 -0
  205. package/dist/components/prompt/ModeSwitchConfirmationPrompt.d.ts.map +1 -0
  206. package/dist/components/prompt/ModeSwitchConfirmationPrompt.js +51 -0
  207. package/dist/components/prompt/ModeSwitchConfirmationPrompt.js.map +1 -0
  208. package/dist/components/prompt/QueuePausedPrompt.d.ts.map +1 -1
  209. package/dist/components/prompt/QueuePausedPrompt.js +15 -8
  210. package/dist/components/prompt/QueuePausedPrompt.js.map +1 -1
  211. package/dist/components/prompt/StandardModeConfirmationPrompt.d.ts.map +1 -1
  212. package/dist/components/prompt/StandardModeConfirmationPrompt.js +3 -2
  213. package/dist/components/prompt/StandardModeConfirmationPrompt.js.map +1 -1
  214. package/dist/components/theme.d.ts +58 -3
  215. package/dist/components/theme.d.ts.map +1 -1
  216. package/dist/components/theme.js +84 -17
  217. package/dist/components/theme.js.map +1 -1
  218. package/dist/contracts/application-stream.d.ts +21 -0
  219. package/dist/contracts/application-stream.d.ts.map +1 -1
  220. package/dist/contracts/conversation.d.ts +24 -1
  221. package/dist/contracts/conversation.d.ts.map +1 -1
  222. package/dist/contracts/conversation.js +8 -0
  223. package/dist/contracts/conversation.js.map +1 -1
  224. package/dist/contracts/streamed-model-turn.d.ts +22 -1
  225. package/dist/contracts/streamed-model-turn.d.ts.map +1 -1
  226. package/dist/core/index.d.ts +9 -0
  227. package/dist/core/index.d.ts.map +1 -0
  228. package/dist/core/index.js +8 -0
  229. package/dist/core/index.js.map +1 -0
  230. package/dist/core/session-runtime.d.ts +10 -0
  231. package/dist/core/session-runtime.d.ts.map +1 -0
  232. package/dist/core/session-runtime.js +9 -0
  233. package/dist/core/session-runtime.js.map +1 -0
  234. package/dist/gateway/assertion.d.ts +41 -0
  235. package/dist/gateway/assertion.d.ts.map +1 -0
  236. package/dist/gateway/assertion.js +168 -0
  237. package/dist/gateway/assertion.js.map +1 -0
  238. package/dist/gateway/contracts.d.ts +141 -0
  239. package/dist/gateway/contracts.d.ts.map +1 -0
  240. package/dist/gateway/contracts.js +24 -0
  241. package/dist/gateway/contracts.js.map +1 -0
  242. package/dist/gateway/dynamic-workspace-registry.d.ts +76 -0
  243. package/dist/gateway/dynamic-workspace-registry.d.ts.map +1 -0
  244. package/dist/gateway/dynamic-workspace-registry.js +403 -0
  245. package/dist/gateway/dynamic-workspace-registry.js.map +1 -0
  246. package/dist/gateway/gateway.d.ts +95 -0
  247. package/dist/gateway/gateway.d.ts.map +1 -0
  248. package/dist/gateway/gateway.js +1960 -0
  249. package/dist/gateway/gateway.js.map +1 -0
  250. package/dist/gateway/index.d.ts +22 -0
  251. package/dist/gateway/index.d.ts.map +1 -0
  252. package/dist/gateway/index.js +22 -0
  253. package/dist/gateway/index.js.map +1 -0
  254. package/dist/gateway/interaction-protocol.d.ts +76 -0
  255. package/dist/gateway/interaction-protocol.d.ts.map +1 -0
  256. package/dist/gateway/interaction-protocol.js +548 -0
  257. package/dist/gateway/interaction-protocol.js.map +1 -0
  258. package/dist/gateway/launcher-seam.d.ts +18 -0
  259. package/dist/gateway/launcher-seam.d.ts.map +1 -0
  260. package/dist/gateway/launcher-seam.js +43 -0
  261. package/dist/gateway/launcher-seam.js.map +1 -0
  262. package/dist/gateway/launcher.d.ts +8 -0
  263. package/dist/gateway/launcher.d.ts.map +1 -0
  264. package/dist/gateway/launcher.js +20 -0
  265. package/dist/gateway/launcher.js.map +1 -0
  266. package/dist/gateway/lifecycle.d.ts +12 -0
  267. package/dist/gateway/lifecycle.d.ts.map +1 -0
  268. package/dist/gateway/lifecycle.js +38 -0
  269. package/dist/gateway/lifecycle.js.map +1 -0
  270. package/dist/gateway/pairing.d.ts +25 -0
  271. package/dist/gateway/pairing.d.ts.map +1 -0
  272. package/dist/gateway/pairing.js +107 -0
  273. package/dist/gateway/pairing.js.map +1 -0
  274. package/dist/gateway/persistence/admission-persistence.d.ts +82 -0
  275. package/dist/gateway/persistence/admission-persistence.d.ts.map +1 -0
  276. package/dist/gateway/persistence/admission-persistence.js +215 -0
  277. package/dist/gateway/persistence/admission-persistence.js.map +1 -0
  278. package/dist/gateway/persistence/contracts.d.ts +94 -0
  279. package/dist/gateway/persistence/contracts.d.ts.map +1 -0
  280. package/dist/gateway/persistence/contracts.js +32 -0
  281. package/dist/gateway/persistence/contracts.js.map +1 -0
  282. package/dist/gateway/persistence/coordinator.d.ts +27 -0
  283. package/dist/gateway/persistence/coordinator.d.ts.map +1 -0
  284. package/dist/gateway/persistence/coordinator.js +194 -0
  285. package/dist/gateway/persistence/coordinator.js.map +1 -0
  286. package/dist/gateway/persistence/event-journal.d.ts +31 -0
  287. package/dist/gateway/persistence/event-journal.d.ts.map +1 -0
  288. package/dist/gateway/persistence/event-journal.js +378 -0
  289. package/dist/gateway/persistence/event-journal.js.map +1 -0
  290. package/dist/gateway/persistence/interaction-checkpoint.d.ts +17 -0
  291. package/dist/gateway/persistence/interaction-checkpoint.d.ts.map +1 -0
  292. package/dist/gateway/persistence/interaction-checkpoint.js +75 -0
  293. package/dist/gateway/persistence/interaction-checkpoint.js.map +1 -0
  294. package/dist/gateway/persistence/projection.d.ts +53 -0
  295. package/dist/gateway/persistence/projection.d.ts.map +1 -0
  296. package/dist/gateway/persistence/projection.js +226 -0
  297. package/dist/gateway/persistence/projection.js.map +1 -0
  298. package/dist/gateway/persistence/retention.d.ts +16 -0
  299. package/dist/gateway/persistence/retention.d.ts.map +1 -0
  300. package/dist/gateway/persistence/retention.js +93 -0
  301. package/dist/gateway/persistence/retention.js.map +1 -0
  302. package/dist/gateway/persistence/session-index.d.ts +34 -0
  303. package/dist/gateway/persistence/session-index.d.ts.map +1 -0
  304. package/dist/gateway/persistence/session-index.js +348 -0
  305. package/dist/gateway/persistence/session-index.js.map +1 -0
  306. package/dist/gateway/persistence/session-persistence.d.ts +68 -0
  307. package/dist/gateway/persistence/session-persistence.d.ts.map +1 -0
  308. package/dist/gateway/persistence/session-persistence.js +165 -0
  309. package/dist/gateway/persistence/session-persistence.js.map +1 -0
  310. package/dist/gateway/persistence/storage.d.ts +13 -0
  311. package/dist/gateway/persistence/storage.d.ts.map +1 -0
  312. package/dist/gateway/persistence/storage.js +87 -0
  313. package/dist/gateway/persistence/storage.js.map +1 -0
  314. package/dist/gateway/replay-ledger.d.ts +30 -0
  315. package/dist/gateway/replay-ledger.d.ts.map +1 -0
  316. package/dist/gateway/replay-ledger.js +83 -0
  317. package/dist/gateway/replay-ledger.js.map +1 -0
  318. package/dist/gateway/runtime-factory.d.ts +93 -0
  319. package/dist/gateway/runtime-factory.d.ts.map +1 -0
  320. package/dist/gateway/runtime-factory.js +242 -0
  321. package/dist/gateway/runtime-factory.js.map +1 -0
  322. package/dist/gateway/safe-log.d.ts +15 -0
  323. package/dist/gateway/safe-log.d.ts.map +1 -0
  324. package/dist/gateway/safe-log.js +108 -0
  325. package/dist/gateway/safe-log.js.map +1 -0
  326. package/dist/gateway/server-session.d.ts +65 -0
  327. package/dist/gateway/server-session.d.ts.map +1 -0
  328. package/dist/gateway/server-session.js +284 -0
  329. package/dist/gateway/server-session.js.map +1 -0
  330. package/dist/gateway/server.d.ts +65 -0
  331. package/dist/gateway/server.d.ts.map +1 -0
  332. package/dist/gateway/server.js +214 -0
  333. package/dist/gateway/server.js.map +1 -0
  334. package/dist/gateway/settings-rpc.d.ts +95 -0
  335. package/dist/gateway/settings-rpc.d.ts.map +1 -0
  336. package/dist/gateway/settings-rpc.js +227 -0
  337. package/dist/gateway/settings-rpc.js.map +1 -0
  338. package/dist/gateway/trusted-clients.d.ts +27 -0
  339. package/dist/gateway/trusted-clients.d.ts.map +1 -0
  340. package/dist/gateway/trusted-clients.js +157 -0
  341. package/dist/gateway/trusted-clients.js.map +1 -0
  342. package/dist/gateway/worker-boundary.d.ts +41 -0
  343. package/dist/gateway/worker-boundary.d.ts.map +1 -0
  344. package/dist/gateway/worker-boundary.js +159 -0
  345. package/dist/gateway/worker-boundary.js.map +1 -0
  346. package/dist/gateway/workspace-admission.d.ts +48 -0
  347. package/dist/gateway/workspace-admission.d.ts.map +1 -0
  348. package/dist/gateway/workspace-admission.js +358 -0
  349. package/dist/gateway/workspace-admission.js.map +1 -0
  350. package/dist/gateway/workspace-boundary-probe.d.ts +18 -0
  351. package/dist/gateway/workspace-boundary-probe.d.ts.map +1 -0
  352. package/dist/gateway/workspace-boundary-probe.js +37 -0
  353. package/dist/gateway/workspace-boundary-probe.js.map +1 -0
  354. package/dist/hooks/conversation-ui-reducer.d.ts +12 -0
  355. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  356. package/dist/hooks/conversation-ui-reducer.js +12 -1
  357. package/dist/hooks/conversation-ui-reducer.js.map +1 -1
  358. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  359. package/dist/hooks/settings-completion-config.js +39 -3
  360. package/dist/hooks/settings-completion-config.js.map +1 -1
  361. package/dist/hooks/use-app-commands.d.ts +9 -1
  362. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  363. package/dist/hooks/use-app-commands.js +34 -14
  364. package/dist/hooks/use-app-commands.js.map +1 -1
  365. package/dist/hooks/use-app-keyboard-shortcuts.d.ts +6 -3
  366. package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
  367. package/dist/hooks/use-app-keyboard-shortcuts.js +22 -9
  368. package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
  369. package/dist/hooks/use-conversation.d.ts +9 -0
  370. package/dist/hooks/use-conversation.d.ts.map +1 -1
  371. package/dist/hooks/use-conversation.js +34 -14
  372. package/dist/hooks/use-conversation.js.map +1 -1
  373. package/dist/hooks/use-grok-credit-usage.d.ts +20 -0
  374. package/dist/hooks/use-grok-credit-usage.d.ts.map +1 -0
  375. package/dist/hooks/use-grok-credit-usage.js +48 -0
  376. package/dist/hooks/use-grok-credit-usage.js.map +1 -0
  377. package/dist/hooks/use-opencode-go-usage.d.ts +8 -0
  378. package/dist/hooks/use-opencode-go-usage.d.ts.map +1 -0
  379. package/dist/hooks/use-opencode-go-usage.js +45 -0
  380. package/dist/hooks/use-opencode-go-usage.js.map +1 -0
  381. package/dist/hooks/use-provider-selection.d.ts +10 -0
  382. package/dist/hooks/use-provider-selection.d.ts.map +1 -1
  383. package/dist/hooks/use-provider-selection.js +105 -6
  384. package/dist/hooks/use-provider-selection.js.map +1 -1
  385. package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
  386. package/dist/hooks/use-settings-value-completion.js +10 -2
  387. package/dist/hooks/use-settings-value-completion.js.map +1 -1
  388. package/dist/hooks/use-shell-mode.d.ts +3 -4
  389. package/dist/hooks/use-shell-mode.d.ts.map +1 -1
  390. package/dist/hooks/use-shell-mode.js +14 -12
  391. package/dist/hooks/use-shell-mode.js.map +1 -1
  392. package/dist/hooks/use-terminal-columns.d.ts +15 -0
  393. package/dist/hooks/use-terminal-columns.d.ts.map +1 -0
  394. package/dist/hooks/use-terminal-columns.js +45 -0
  395. package/dist/hooks/use-terminal-columns.js.map +1 -0
  396. package/dist/lib/agent-client.d.ts +12 -3
  397. package/dist/lib/agent-client.d.ts.map +1 -1
  398. package/dist/lib/agent-client.js +116 -23
  399. package/dist/lib/agent-client.js.map +1 -1
  400. package/dist/lib/agent-configuration.d.ts +5 -0
  401. package/dist/lib/agent-configuration.d.ts.map +1 -1
  402. package/dist/lib/agent-configuration.js +10 -2
  403. package/dist/lib/agent-configuration.js.map +1 -1
  404. package/dist/lib/agent-factory.d.ts +5 -0
  405. package/dist/lib/agent-factory.d.ts.map +1 -1
  406. package/dist/lib/agent-factory.js +36 -11
  407. package/dist/lib/agent-factory.js.map +1 -1
  408. package/dist/lib/editor-impl.d.ts.map +1 -1
  409. package/dist/lib/editor-impl.js +14 -17
  410. package/dist/lib/editor-impl.js.map +1 -1
  411. package/dist/lib/harness-input-idle.d.ts +16 -0
  412. package/dist/lib/harness-input-idle.d.ts.map +1 -0
  413. package/dist/lib/harness-input-idle.js +51 -0
  414. package/dist/lib/harness-input-idle.js.map +1 -0
  415. package/dist/lib/input-owner.d.ts +3 -0
  416. package/dist/lib/input-owner.d.ts.map +1 -1
  417. package/dist/lib/input-owner.js +2 -0
  418. package/dist/lib/input-owner.js.map +1 -1
  419. package/dist/lib/subagent-bridge.d.ts +3 -3
  420. package/dist/lib/subagent-bridge.d.ts.map +1 -1
  421. package/dist/lib/subagent-bridge.js +16 -9
  422. package/dist/lib/subagent-bridge.js.map +1 -1
  423. package/dist/lib/tool-invoke.d.ts +2 -0
  424. package/dist/lib/tool-invoke.d.ts.map +1 -1
  425. package/dist/lib/tool-invoke.js +3 -0
  426. package/dist/lib/tool-invoke.js.map +1 -1
  427. package/dist/non-interactive.d.ts.map +1 -1
  428. package/dist/non-interactive.js +12 -0
  429. package/dist/non-interactive.js.map +1 -1
  430. package/dist/prompts/approval-model.md +22 -0
  431. package/dist/prompts/explorer-delegation-contract.test.ts +22 -0
  432. package/dist/prompts/gpt-5.6.md +4 -3
  433. package/dist/prompts/kimi.md +1 -1
  434. package/dist/prompts/mentor-mode-stub.md +3 -0
  435. package/dist/prompts/orchestrator-mode-stub.md +3 -0
  436. package/dist/prompts/orchestrator.md +10 -1
  437. package/dist/prompts/plan-mode-info.md +3 -3
  438. package/dist/prompts/plan-mode-stub.md +7 -0
  439. package/dist/prompts/prefix-quality.test.ts +112 -0
  440. package/dist/prompts/prompt-constructor.d.ts +2 -0
  441. package/dist/prompts/prompt-constructor.d.ts.map +1 -1
  442. package/dist/prompts/prompt-constructor.js +24 -11
  443. package/dist/prompts/prompt-constructor.js.map +1 -1
  444. package/dist/prompts/prompt-constructor.test.ts +48 -6
  445. package/dist/prompts/prompt-constructor.ts +28 -13
  446. package/dist/prompts/prompt-profiles.d.ts +1 -3
  447. package/dist/prompts/prompt-profiles.d.ts.map +1 -1
  448. package/dist/prompts/prompt-profiles.js +2 -7
  449. package/dist/prompts/prompt-profiles.js.map +1 -1
  450. package/dist/prompts/prompt-profiles.ts +3 -16
  451. package/dist/prompts/session-browser.md +3 -0
  452. package/dist/prompts/subagent-delegation.d.ts +3 -2
  453. package/dist/prompts/subagent-delegation.d.ts.map +1 -1
  454. package/dist/prompts/subagent-delegation.js +9 -13
  455. package/dist/prompts/subagent-delegation.js.map +1 -1
  456. package/dist/prompts/subagent-delegation.ts +9 -13
  457. package/dist/prompts/subagents/explorer.md +7 -1
  458. package/dist/prompts/subagents/librarian.md +2 -0
  459. package/dist/prompts/subagents/mentor.md +2 -0
  460. package/dist/prompts/subagents/worker.md +2 -0
  461. package/dist/providers/ai-sdk-streamed-model.d.ts +5 -0
  462. package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
  463. package/dist/providers/ai-sdk-streamed-model.js +64 -1
  464. package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
  465. package/dist/providers/chained-wire-state.d.ts +13 -2
  466. package/dist/providers/chained-wire-state.d.ts.map +1 -1
  467. package/dist/providers/chained-wire-state.js +17 -10
  468. package/dist/providers/chained-wire-state.js.map +1 -1
  469. package/dist/providers/codex-auth.d.ts +70 -2
  470. package/dist/providers/codex-auth.d.ts.map +1 -1
  471. package/dist/providers/codex-auth.js +168 -2
  472. package/dist/providers/codex-auth.js.map +1 -1
  473. package/dist/providers/codex-responses-model.d.ts +3 -0
  474. package/dist/providers/codex-responses-model.d.ts.map +1 -1
  475. package/dist/providers/codex-responses-model.js +314 -162
  476. package/dist/providers/codex-responses-model.js.map +1 -1
  477. package/dist/providers/codex-turn-converter.d.ts.map +1 -1
  478. package/dist/providers/codex-turn-converter.js +7 -1
  479. package/dist/providers/codex-turn-converter.js.map +1 -1
  480. package/dist/providers/codex.provider.d.ts +25 -2
  481. package/dist/providers/codex.provider.d.ts.map +1 -1
  482. package/dist/providers/codex.provider.js +83 -71
  483. package/dist/providers/codex.provider.js.map +1 -1
  484. package/dist/providers/common/provider-errors.d.ts +20 -0
  485. package/dist/providers/common/provider-errors.d.ts.map +1 -1
  486. package/dist/providers/common/provider-errors.js +35 -0
  487. package/dist/providers/common/provider-errors.js.map +1 -1
  488. package/dist/providers/grok-auth.d.ts +102 -0
  489. package/dist/providers/grok-auth.d.ts.map +1 -0
  490. package/dist/providers/grok-auth.js +318 -0
  491. package/dist/providers/grok-auth.js.map +1 -0
  492. package/dist/providers/grok-credit-usage.d.ts +53 -0
  493. package/dist/providers/grok-credit-usage.d.ts.map +1 -0
  494. package/dist/providers/grok-credit-usage.js +108 -0
  495. package/dist/providers/grok-credit-usage.js.map +1 -0
  496. package/dist/providers/grok.provider.d.ts +24 -0
  497. package/dist/providers/grok.provider.d.ts.map +1 -0
  498. package/dist/providers/grok.provider.js +153 -0
  499. package/dist/providers/grok.provider.js.map +1 -0
  500. package/dist/providers/index.d.ts +1 -0
  501. package/dist/providers/index.d.ts.map +1 -1
  502. package/dist/providers/index.js +1 -0
  503. package/dist/providers/index.js.map +1 -1
  504. package/dist/providers/jwt-claims.d.ts +12 -0
  505. package/dist/providers/jwt-claims.d.ts.map +1 -0
  506. package/dist/providers/jwt-claims.js +25 -0
  507. package/dist/providers/jwt-claims.js.map +1 -0
  508. package/dist/providers/luna-responses-lite-wire-protocol.d.ts +1 -0
  509. package/dist/providers/luna-responses-lite-wire-protocol.d.ts.map +1 -1
  510. package/dist/providers/luna-responses-lite-wire-protocol.js +19 -0
  511. package/dist/providers/luna-responses-lite-wire-protocol.js.map +1 -1
  512. package/dist/providers/model-catalog/catalog.generated.d.ts +360 -232
  513. package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
  514. package/dist/providers/model-catalog/catalog.generated.js +360 -232
  515. package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
  516. package/dist/providers/model-catalog/generate-catalog.d.ts.map +1 -1
  517. package/dist/providers/model-catalog/generate-catalog.js +21 -1
  518. package/dist/providers/model-catalog/generate-catalog.js.map +1 -1
  519. package/dist/providers/oauth-account-store.d.ts +89 -0
  520. package/dist/providers/oauth-account-store.d.ts.map +1 -0
  521. package/dist/providers/oauth-account-store.js +193 -0
  522. package/dist/providers/oauth-account-store.js.map +1 -0
  523. package/dist/providers/oauth-accounts.d.ts +24 -0
  524. package/dist/providers/oauth-accounts.d.ts.map +1 -0
  525. package/dist/providers/oauth-accounts.js +37 -0
  526. package/dist/providers/oauth-accounts.js.map +1 -0
  527. package/dist/providers/oauth-pkce.d.ts +61 -0
  528. package/dist/providers/oauth-pkce.d.ts.map +1 -0
  529. package/dist/providers/oauth-pkce.js +272 -0
  530. package/dist/providers/oauth-pkce.js.map +1 -0
  531. package/dist/providers/oauth-session-account.d.ts +5 -0
  532. package/dist/providers/oauth-session-account.d.ts.map +1 -0
  533. package/dist/providers/oauth-session-account.js +24 -0
  534. package/dist/providers/oauth-session-account.js.map +1 -0
  535. package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
  536. package/dist/providers/openai-chat-completions-model.js +37 -16
  537. package/dist/providers/openai-chat-completions-model.js.map +1 -1
  538. package/dist/providers/openai-compatible-lazy.js.map +1 -1
  539. package/dist/providers/openai-compatible.provider.d.ts +5 -0
  540. package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
  541. package/dist/providers/openai-compatible.provider.js +40 -3
  542. package/dist/providers/openai-compatible.provider.js.map +1 -1
  543. package/dist/providers/openai-responses-model.d.ts +13 -3
  544. package/dist/providers/openai-responses-model.d.ts.map +1 -1
  545. package/dist/providers/openai-responses-model.js +92 -39
  546. package/dist/providers/openai-responses-model.js.map +1 -1
  547. package/dist/providers/openai.provider.d.ts.map +1 -1
  548. package/dist/providers/openai.provider.js +23 -2
  549. package/dist/providers/openai.provider.js.map +1 -1
  550. package/dist/providers/opencode-go-usage.d.ts +24 -0
  551. package/dist/providers/opencode-go-usage.d.ts.map +1 -0
  552. package/dist/providers/opencode-go-usage.js +37 -0
  553. package/dist/providers/opencode-go-usage.js.map +1 -0
  554. package/dist/providers/opencode-routing.d.ts +2 -0
  555. package/dist/providers/opencode-routing.d.ts.map +1 -1
  556. package/dist/providers/opencode-routing.js +12 -6
  557. package/dist/providers/opencode-routing.js.map +1 -1
  558. package/dist/providers/opencode-transport-discovery.d.ts +18 -0
  559. package/dist/providers/opencode-transport-discovery.d.ts.map +1 -0
  560. package/dist/providers/opencode-transport-discovery.js +115 -0
  561. package/dist/providers/opencode-transport-discovery.js.map +1 -0
  562. package/dist/providers/openrouter.provider.d.ts.map +1 -1
  563. package/dist/providers/openrouter.provider.js +8 -1
  564. package/dist/providers/openrouter.provider.js.map +1 -1
  565. package/dist/providers/provider-opaque-compatibility.d.ts +58 -0
  566. package/dist/providers/provider-opaque-compatibility.d.ts.map +1 -0
  567. package/dist/providers/provider-opaque-compatibility.js +80 -0
  568. package/dist/providers/provider-opaque-compatibility.js.map +1 -0
  569. package/dist/providers/provider-service.d.ts +1 -1
  570. package/dist/providers/provider-service.d.ts.map +1 -1
  571. package/dist/providers/provider-service.js.map +1 -1
  572. package/dist/providers/registry.d.ts +10 -1
  573. package/dist/providers/registry.d.ts.map +1 -1
  574. package/dist/providers/registry.js.map +1 -1
  575. package/dist/providers/responses-websocket-sessions.d.ts +26 -0
  576. package/dist/providers/responses-websocket-sessions.d.ts.map +1 -0
  577. package/dist/providers/responses-websocket-sessions.js +116 -0
  578. package/dist/providers/responses-websocket-sessions.js.map +1 -0
  579. package/dist/providers/retrying-model.d.ts.map +1 -1
  580. package/dist/providers/retrying-model.js +31 -3
  581. package/dist/providers/retrying-model.js.map +1 -1
  582. package/dist/providers/websocket-close-evidence.d.ts +45 -0
  583. package/dist/providers/websocket-close-evidence.d.ts.map +1 -0
  584. package/dist/providers/websocket-close-evidence.js +78 -0
  585. package/dist/providers/websocket-close-evidence.js.map +1 -0
  586. package/dist/providers/websocket-receive-watchdog.d.ts +9 -1
  587. package/dist/providers/websocket-receive-watchdog.d.ts.map +1 -1
  588. package/dist/providers/websocket-receive-watchdog.js +27 -1
  589. package/dist/providers/websocket-receive-watchdog.js.map +1 -1
  590. package/dist/providers/websocket-request-dispatch.d.ts +35 -0
  591. package/dist/providers/websocket-request-dispatch.d.ts.map +1 -0
  592. package/dist/providers/websocket-request-dispatch.js +23 -0
  593. package/dist/providers/websocket-request-dispatch.js.map +1 -0
  594. package/dist/scripts/eval-context-compaction/runner.js +1 -1
  595. package/dist/scripts/eval-context-compaction/runner.js.map +1 -1
  596. package/dist/services/agent-runtime/agent-handle.d.ts.map +1 -1
  597. package/dist/services/agent-runtime/agent-handle.js +8 -5
  598. package/dist/services/agent-runtime/agent-handle.js.map +1 -1
  599. package/dist/services/agent-runtime/agent-runtime.d.ts +1 -1
  600. package/dist/services/agent-runtime/agent-runtime.js +1 -1
  601. package/dist/services/agent-runtime/application-run-loop.d.ts +37 -9
  602. package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
  603. package/dist/services/agent-runtime/application-run-loop.js +512 -219
  604. package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
  605. package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts +6 -1
  606. package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts.map +1 -1
  607. package/dist/services/agent-runtime/context-compaction/local-context-compactor.js +72 -4
  608. package/dist/services/agent-runtime/context-compaction/local-context-compactor.js.map +1 -1
  609. package/dist/services/agent-runtime/executor.d.ts +1 -1
  610. package/dist/services/agent-runtime/executor.d.ts.map +1 -1
  611. package/dist/services/agent-runtime/executor.js +5 -5
  612. package/dist/services/agent-runtime/executor.js.map +1 -1
  613. package/dist/services/agent-runtime/generation-guard.d.ts +39 -24
  614. package/dist/services/agent-runtime/generation-guard.d.ts.map +1 -1
  615. package/dist/services/agent-runtime/generation-guard.js +100 -97
  616. package/dist/services/agent-runtime/generation-guard.js.map +1 -1
  617. package/dist/services/agent-runtime/run-budget.d.ts +131 -0
  618. package/dist/services/agent-runtime/run-budget.d.ts.map +1 -0
  619. package/dist/services/agent-runtime/run-budget.js +272 -0
  620. package/dist/services/agent-runtime/run-budget.js.map +1 -0
  621. package/dist/services/agent-runtime/tool-invocation-context.d.ts +12 -0
  622. package/dist/services/agent-runtime/tool-invocation-context.d.ts.map +1 -1
  623. package/dist/services/agent-runtime/tool-invocation-context.js.map +1 -1
  624. package/dist/services/agent-runtime/types.d.ts +5 -4
  625. package/dist/services/agent-runtime/types.d.ts.map +1 -1
  626. package/dist/services/agent-stream.d.ts.map +1 -1
  627. package/dist/services/agent-stream.js +3 -1
  628. package/dist/services/agent-stream.js.map +1 -1
  629. package/dist/services/approval/approval-decision-executor.d.ts +6 -1
  630. package/dist/services/approval/approval-decision-executor.d.ts.map +1 -1
  631. package/dist/services/approval/approval-decision-executor.js +15 -3
  632. package/dist/services/approval/approval-decision-executor.js.map +1 -1
  633. package/dist/services/approval/approval-decision-policy.d.ts.map +1 -1
  634. package/dist/services/approval/approval-decision-policy.js +3 -0
  635. package/dist/services/approval/approval-decision-policy.js.map +1 -1
  636. package/dist/services/approval/approval-flow-coordinator.d.ts +2 -0
  637. package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
  638. package/dist/services/approval/approval-flow-coordinator.js +14 -2
  639. package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
  640. package/dist/services/approval/background-subagent-approval-controller.d.ts +3 -1
  641. package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
  642. package/dist/services/approval/background-subagent-approval-controller.js +7 -4
  643. package/dist/services/approval/background-subagent-approval-controller.js.map +1 -1
  644. package/dist/services/approval/shell-auto-approval-resolver.d.ts +5 -0
  645. package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
  646. package/dist/services/approval/shell-auto-approval-resolver.js +8 -0
  647. package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
  648. package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
  649. package/dist/services/approval/tool-approval-batch-coordinator.js +20 -11
  650. package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
  651. package/dist/services/approval/tool-ownership-registry.d.ts +5 -1
  652. package/dist/services/approval/tool-ownership-registry.d.ts.map +1 -1
  653. package/dist/services/approval/tool-ownership-registry.js +5 -22
  654. package/dist/services/approval/tool-ownership-registry.js.map +1 -1
  655. package/dist/services/background-task-activity.d.ts +79 -0
  656. package/dist/services/background-task-activity.d.ts.map +1 -0
  657. package/dist/services/background-task-activity.js +34 -0
  658. package/dist/services/background-task-activity.js.map +1 -0
  659. package/dist/services/command-message-streaming.d.ts +4 -2
  660. package/dist/services/command-message-streaming.d.ts.map +1 -1
  661. package/dist/services/command-message-streaming.js +2 -2
  662. package/dist/services/command-message-streaming.js.map +1 -1
  663. package/dist/services/conversation/conversation-adapter-factory.d.ts +6 -2
  664. package/dist/services/conversation/conversation-adapter-factory.d.ts.map +1 -1
  665. package/dist/services/conversation/conversation-adapter-factory.js +5 -1
  666. package/dist/services/conversation/conversation-adapter-factory.js.map +1 -1
  667. package/dist/services/conversation/conversation-adapter.d.ts +53 -10
  668. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  669. package/dist/services/conversation/conversation-adapter.js +252 -43
  670. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  671. package/dist/services/conversation/conversation-admission-workflow.d.ts +3 -2
  672. package/dist/services/conversation/conversation-admission-workflow.d.ts.map +1 -1
  673. package/dist/services/conversation/conversation-admission-workflow.js +6 -1
  674. package/dist/services/conversation/conversation-admission-workflow.js.map +1 -1
  675. package/dist/services/conversation/conversation-decoder.d.ts.map +1 -1
  676. package/dist/services/conversation/conversation-decoder.js +4 -0
  677. package/dist/services/conversation/conversation-decoder.js.map +1 -1
  678. package/dist/services/conversation/conversation-events.d.ts +97 -3
  679. package/dist/services/conversation/conversation-events.d.ts.map +1 -1
  680. package/dist/services/conversation/conversation-orchestrator.d.ts +14 -1
  681. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  682. package/dist/services/conversation/conversation-orchestrator.js +245 -22
  683. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  684. package/dist/services/conversation/conversation-orchestrator.types.d.ts +6 -1
  685. package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
  686. package/dist/services/conversation/conversation-persistence.d.ts +60 -3
  687. package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
  688. package/dist/services/conversation/conversation-persistence.js +221 -16
  689. package/dist/services/conversation/conversation-persistence.js.map +1 -1
  690. package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
  691. package/dist/services/conversation/conversation-replay.js +27 -0
  692. package/dist/services/conversation/conversation-replay.js.map +1 -1
  693. package/dist/services/conversation/conversation-result-builder.d.ts +6 -2
  694. package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
  695. package/dist/services/conversation/conversation-result-builder.js +60 -1
  696. package/dist/services/conversation/conversation-result-builder.js.map +1 -1
  697. package/dist/services/conversation/conversation-runtime-factory.d.ts +9 -1
  698. package/dist/services/conversation/conversation-runtime-factory.d.ts.map +1 -1
  699. package/dist/services/conversation/conversation-runtime-factory.js +5 -1
  700. package/dist/services/conversation/conversation-runtime-factory.js.map +1 -1
  701. package/dist/services/conversation/conversation-service.d.ts +32 -3
  702. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  703. package/dist/services/conversation/conversation-service.js +122 -32
  704. package/dist/services/conversation/conversation-service.js.map +1 -1
  705. package/dist/services/conversation/conversation-state-projector.d.ts +2 -1
  706. package/dist/services/conversation/conversation-state-projector.d.ts.map +1 -1
  707. package/dist/services/conversation/conversation-state-projector.js +31 -3
  708. package/dist/services/conversation/conversation-state-projector.js.map +1 -1
  709. package/dist/services/conversation/run-item-normalizer.d.ts.map +1 -1
  710. package/dist/services/conversation/run-item-normalizer.js +24 -1
  711. package/dist/services/conversation/run-item-normalizer.js.map +1 -1
  712. package/dist/services/conversation/session-audit.d.ts +70 -0
  713. package/dist/services/conversation/session-audit.d.ts.map +1 -0
  714. package/dist/services/conversation/session-audit.js +164 -0
  715. package/dist/services/conversation/session-audit.js.map +1 -0
  716. package/dist/services/conversation/session-browser.d.ts +46 -0
  717. package/dist/services/conversation/session-browser.d.ts.map +1 -0
  718. package/dist/services/conversation/session-browser.js +380 -0
  719. package/dist/services/conversation/session-browser.js.map +1 -0
  720. package/dist/services/conversation-agent-client.d.ts +21 -2
  721. package/dist/services/conversation-agent-client.d.ts.map +1 -1
  722. package/dist/services/cost/model-cost.d.ts +13 -1
  723. package/dist/services/cost/model-cost.d.ts.map +1 -1
  724. package/dist/services/cost/model-cost.js +59 -0
  725. package/dist/services/cost/model-cost.js.map +1 -1
  726. package/dist/services/cost/subscription-providers.d.ts +2 -0
  727. package/dist/services/cost/subscription-providers.d.ts.map +1 -0
  728. package/dist/services/cost/subscription-providers.js +14 -0
  729. package/dist/services/cost/subscription-providers.js.map +1 -0
  730. package/dist/services/grok/grok-credit-usage-service.d.ts +62 -0
  731. package/dist/services/grok/grok-credit-usage-service.d.ts.map +1 -0
  732. package/dist/services/grok/grok-credit-usage-service.js +137 -0
  733. package/dist/services/grok/grok-credit-usage-service.js.map +1 -0
  734. package/dist/services/history-service.d.ts +9 -0
  735. package/dist/services/history-service.d.ts.map +1 -1
  736. package/dist/services/history-service.js +49 -2
  737. package/dist/services/history-service.js.map +1 -1
  738. package/dist/services/hooks/hook-composition.d.ts +17 -0
  739. package/dist/services/hooks/hook-composition.d.ts.map +1 -0
  740. package/dist/services/hooks/hook-composition.js +19 -0
  741. package/dist/services/hooks/hook-composition.js.map +1 -0
  742. package/dist/services/input-surge-approval.d.ts +21 -0
  743. package/dist/services/input-surge-approval.d.ts.map +1 -0
  744. package/dist/services/input-surge-approval.js +42 -0
  745. package/dist/services/input-surge-approval.js.map +1 -0
  746. package/dist/services/large-uncached-input-guard.js +4 -4
  747. package/dist/services/large-uncached-input-guard.js.map +1 -1
  748. package/dist/services/logging/assistant-turn-journal.d.ts +15 -0
  749. package/dist/services/logging/assistant-turn-journal.d.ts.map +1 -1
  750. package/dist/services/logging/assistant-turn-journal.js +27 -0
  751. package/dist/services/logging/assistant-turn-journal.js.map +1 -1
  752. package/dist/services/logging/conversation-log-events.d.ts +35 -1
  753. package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
  754. package/dist/services/logging/conversation-log-events.js +17 -0
  755. package/dist/services/logging/conversation-log-events.js.map +1 -1
  756. package/dist/services/logging/conversation-log-writer.d.ts +8 -1
  757. package/dist/services/logging/conversation-log-writer.d.ts.map +1 -1
  758. package/dist/services/logging/conversation-log-writer.js +145 -10
  759. package/dist/services/logging/conversation-log-writer.js.map +1 -1
  760. package/dist/services/logging/conversation-logger.d.ts.map +1 -1
  761. package/dist/services/logging/conversation-logger.js +18 -0
  762. package/dist/services/logging/conversation-logger.js.map +1 -1
  763. package/dist/services/logging/logging-service.d.ts +6 -6
  764. package/dist/services/logging/logging-service.d.ts.map +1 -1
  765. package/dist/services/logging/logging-service.js.map +1 -1
  766. package/dist/services/logging/provider-traffic.d.ts +17 -1
  767. package/dist/services/logging/provider-traffic.d.ts.map +1 -1
  768. package/dist/services/logging/provider-traffic.js +283 -139
  769. package/dist/services/logging/provider-traffic.js.map +1 -1
  770. package/dist/services/memory/memory-capabilities.d.ts.map +1 -1
  771. package/dist/services/memory/memory-capabilities.js +22 -3
  772. package/dist/services/memory/memory-capabilities.js.map +1 -1
  773. package/dist/services/memory/memory-search.d.ts +16 -0
  774. package/dist/services/memory/memory-search.d.ts.map +1 -0
  775. package/dist/services/memory/memory-search.js +55 -0
  776. package/dist/services/memory/memory-search.js.map +1 -0
  777. package/dist/services/memory/memory-store.d.ts +12 -0
  778. package/dist/services/memory/memory-store.d.ts.map +1 -1
  779. package/dist/services/memory/memory-store.js +14 -35
  780. package/dist/services/memory/memory-store.js.map +1 -1
  781. package/dist/services/mode-notices.d.ts +12 -6
  782. package/dist/services/mode-notices.d.ts.map +1 -1
  783. package/dist/services/mode-notices.js +51 -4
  784. package/dist/services/mode-notices.js.map +1 -1
  785. package/dist/services/model-service.d.ts +2 -2
  786. package/dist/services/model-service.d.ts.map +1 -1
  787. package/dist/services/model-service.js.map +1 -1
  788. package/dist/services/queue/queue-controller.d.ts +14 -1
  789. package/dist/services/queue/queue-controller.d.ts.map +1 -1
  790. package/dist/services/queue/queue-controller.js +51 -6
  791. package/dist/services/queue/queue-controller.js.map +1 -1
  792. package/dist/services/retry/chain-recovery-fingerprint.d.ts +10 -0
  793. package/dist/services/retry/chain-recovery-fingerprint.d.ts.map +1 -0
  794. package/dist/services/retry/chain-recovery-fingerprint.js +23 -0
  795. package/dist/services/retry/chain-recovery-fingerprint.js.map +1 -0
  796. package/dist/services/retry/in-loop-model-retry.d.ts +12 -0
  797. package/dist/services/retry/in-loop-model-retry.d.ts.map +1 -0
  798. package/dist/services/retry/in-loop-model-retry.js +115 -0
  799. package/dist/services/retry/in-loop-model-retry.js.map +1 -0
  800. package/dist/services/retry/recovery-executor.d.ts.map +1 -1
  801. package/dist/services/retry/recovery-executor.js +2 -0
  802. package/dist/services/retry/recovery-executor.js.map +1 -1
  803. package/dist/services/retry/recovery-policy.d.ts.map +1 -1
  804. package/dist/services/retry/recovery-policy.js +4 -0
  805. package/dist/services/retry/recovery-policy.js.map +1 -1
  806. package/dist/services/retry/retry-classifier.d.ts.map +1 -1
  807. package/dist/services/retry/retry-classifier.js +42 -4
  808. package/dist/services/retry/retry-classifier.js.map +1 -1
  809. package/dist/services/retry/retry-contracts.d.ts +14 -0
  810. package/dist/services/retry/retry-contracts.d.ts.map +1 -1
  811. package/dist/services/retry/retry-error-classification.d.ts +17 -3
  812. package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
  813. package/dist/services/retry/retry-error-classification.js +58 -13
  814. package/dist/services/retry/retry-error-classification.js.map +1 -1
  815. package/dist/services/retry/retry-errors.d.ts +4 -0
  816. package/dist/services/retry/retry-errors.d.ts.map +1 -1
  817. package/dist/services/retry/retry-errors.js +7 -0
  818. package/dist/services/retry/retry-errors.js.map +1 -1
  819. package/dist/services/retry/retry-event-presenter.d.ts.map +1 -1
  820. package/dist/services/retry/retry-event-presenter.js +20 -0
  821. package/dist/services/retry/retry-event-presenter.js.map +1 -1
  822. package/dist/services/retry/upstream-retry-policy.d.ts.map +1 -1
  823. package/dist/services/retry/upstream-retry-policy.js +40 -7
  824. package/dist/services/retry/upstream-retry-policy.js.map +1 -1
  825. package/dist/services/runtime-setting-router.d.ts.map +1 -1
  826. package/dist/services/runtime-setting-router.js +13 -2
  827. package/dist/services/runtime-setting-router.js.map +1 -1
  828. package/dist/services/service-interfaces.d.ts +96 -13
  829. package/dist/services/service-interfaces.d.ts.map +1 -1
  830. package/dist/services/session/background-check-in-scheduler.d.ts +44 -0
  831. package/dist/services/session/background-check-in-scheduler.d.ts.map +1 -0
  832. package/dist/services/session/background-check-in-scheduler.js +88 -0
  833. package/dist/services/session/background-check-in-scheduler.js.map +1 -0
  834. package/dist/services/session/background-task-control.d.ts +6 -0
  835. package/dist/services/session/background-task-control.d.ts.map +1 -1
  836. package/dist/services/session/background-task-control.js +35 -7
  837. package/dist/services/session/background-task-control.js.map +1 -1
  838. package/dist/services/session/background-task-liveness.d.ts +2 -18
  839. package/dist/services/session/background-task-liveness.d.ts.map +1 -1
  840. package/dist/services/session/background-task-liveness.js +7 -22
  841. package/dist/services/session/background-task-liveness.js.map +1 -1
  842. package/dist/services/session/continuation-plan-applier.d.ts.map +1 -1
  843. package/dist/services/session/continuation-plan-applier.js +23 -0
  844. package/dist/services/session/continuation-plan-applier.js.map +1 -1
  845. package/dist/services/session/continuation-recovery-handler.d.ts +2 -0
  846. package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
  847. package/dist/services/session/continuation-recovery-handler.js +7 -1
  848. package/dist/services/session/continuation-recovery-handler.js.map +1 -1
  849. package/dist/services/session/initial-input-preparer.d.ts +2 -1
  850. package/dist/services/session/initial-input-preparer.d.ts.map +1 -1
  851. package/dist/services/session/initial-input-preparer.js +3 -1
  852. package/dist/services/session/initial-input-preparer.js.map +1 -1
  853. package/dist/services/session/initial-turn-recovery-handler.d.ts +1 -0
  854. package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
  855. package/dist/services/session/initial-turn-recovery-handler.js +12 -2
  856. package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
  857. package/dist/services/session/repetition-detector.d.ts +0 -4
  858. package/dist/services/session/repetition-detector.d.ts.map +1 -1
  859. package/dist/services/session/repetition-detector.js +0 -7
  860. package/dist/services/session/repetition-detector.js.map +1 -1
  861. package/dist/services/session/session-client-factory.d.ts +3 -1
  862. package/dist/services/session/session-client-factory.d.ts.map +1 -1
  863. package/dist/services/session/session-client-factory.js +2 -2
  864. package/dist/services/session/session-client-factory.js.map +1 -1
  865. package/dist/services/session/session-composition.d.ts +9 -2
  866. package/dist/services/session/session-composition.d.ts.map +1 -1
  867. package/dist/services/session/session-composition.js +151 -37
  868. package/dist/services/session/session-composition.js.map +1 -1
  869. package/dist/services/session/session-lifecycle.d.ts +8 -0
  870. package/dist/services/session/session-lifecycle.d.ts.map +1 -1
  871. package/dist/services/session/session-lifecycle.js +4 -0
  872. package/dist/services/session/session-lifecycle.js.map +1 -1
  873. package/dist/services/session/session-stream-processor.d.ts +2 -0
  874. package/dist/services/session/session-stream-processor.d.ts.map +1 -1
  875. package/dist/services/session/session-stream-processor.js +9 -15
  876. package/dist/services/session/session-stream-processor.js.map +1 -1
  877. package/dist/services/session/terminal-result-collector.d.ts +2 -2
  878. package/dist/services/session/terminal-result-collector.d.ts.map +1 -1
  879. package/dist/services/session/terminal-result-collector.js +2 -1
  880. package/dist/services/session/terminal-result-collector.js.map +1 -1
  881. package/dist/services/session/turn-attempt-factory.d.ts +3 -1
  882. package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
  883. package/dist/services/session/turn-attempt-factory.js +1 -0
  884. package/dist/services/session/turn-attempt-factory.js.map +1 -1
  885. package/dist/services/session/turn-attempt.d.ts +3 -0
  886. package/dist/services/session/turn-attempt.d.ts.map +1 -1
  887. package/dist/services/session/turn-attempt.js +5 -0
  888. package/dist/services/session/turn-attempt.js.map +1 -1
  889. package/dist/services/session/turn-coordinator.d.ts +2 -2
  890. package/dist/services/session/turn-coordinator.d.ts.map +1 -1
  891. package/dist/services/session/turn-coordinator.js +31 -6
  892. package/dist/services/session/turn-coordinator.js.map +1 -1
  893. package/dist/services/session/turn-workflow.d.ts +4 -1
  894. package/dist/services/session/turn-workflow.d.ts.map +1 -1
  895. package/dist/services/session/turn-workflow.js +52 -8
  896. package/dist/services/session/turn-workflow.js.map +1 -1
  897. package/dist/services/settings/settings-persistence.d.ts +33 -0
  898. package/dist/services/settings/settings-persistence.d.ts.map +1 -1
  899. package/dist/services/settings/settings-persistence.js +102 -4
  900. package/dist/services/settings/settings-persistence.js.map +1 -1
  901. package/dist/services/settings/settings-schema.d.ts +92 -0
  902. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  903. package/dist/services/settings/settings-schema.js +119 -9
  904. package/dist/services/settings/settings-schema.js.map +1 -1
  905. package/dist/services/settings/settings-service.d.ts +66 -3
  906. package/dist/services/settings/settings-service.d.ts.map +1 -1
  907. package/dist/services/settings/settings-service.js +211 -28
  908. package/dist/services/settings/settings-service.js.map +1 -1
  909. package/dist/services/settings/settings-service.mock.d.ts +1 -1
  910. package/dist/services/settings/settings-service.mock.d.ts.map +1 -1
  911. package/dist/services/settings/settings-service.mock.js +3 -6
  912. package/dist/services/settings/settings-service.mock.js.map +1 -1
  913. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  914. package/dist/services/settings/settings-sources.js +21 -0
  915. package/dist/services/settings/settings-sources.js.map +1 -1
  916. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +28 -0
  917. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -0
  918. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +171 -0
  919. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -0
  920. package/dist/services/shell/background-shell-registry.d.ts +10 -0
  921. package/dist/services/shell/background-shell-registry.d.ts.map +1 -1
  922. package/dist/services/shell/background-shell-registry.js +9 -1
  923. package/dist/services/shell/background-shell-registry.js.map +1 -1
  924. package/dist/services/shell/background-shell-watches.d.ts +28 -3
  925. package/dist/services/shell/background-shell-watches.d.ts.map +1 -1
  926. package/dist/services/shell/background-shell-watches.js +41 -9
  927. package/dist/services/shell/background-shell-watches.js.map +1 -1
  928. package/dist/services/shell/shell-interaction-session.d.ts +4 -5
  929. package/dist/services/shell/shell-interaction-session.d.ts.map +1 -1
  930. package/dist/services/shell/shell-interaction-session.js +8 -20
  931. package/dist/services/shell/shell-interaction-session.js.map +1 -1
  932. package/dist/services/ssh-service.d.ts +81 -9
  933. package/dist/services/ssh-service.d.ts.map +1 -1
  934. package/dist/services/ssh-service.js +211 -37
  935. package/dist/services/ssh-service.js.map +1 -1
  936. package/dist/services/stream-event-processor.d.ts +2 -0
  937. package/dist/services/stream-event-processor.d.ts.map +1 -1
  938. package/dist/services/stream-event-processor.js +32 -7
  939. package/dist/services/stream-event-processor.js.map +1 -1
  940. package/dist/services/subagents/execution-runner.d.ts +1 -1
  941. package/dist/services/subagents/execution-runner.d.ts.map +1 -1
  942. package/dist/services/subagents/execution-runner.js +34 -22
  943. package/dist/services/subagents/execution-runner.js.map +1 -1
  944. package/dist/services/subagents/foreground-subagent-lease.d.ts +11 -1
  945. package/dist/services/subagents/foreground-subagent-lease.d.ts.map +1 -1
  946. package/dist/services/subagents/foreground-subagent-lease.js +10 -1
  947. package/dist/services/subagents/foreground-subagent-lease.js.map +1 -1
  948. package/dist/services/subagents/mentor-runner.d.ts +1 -1
  949. package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
  950. package/dist/services/subagents/mentor-runner.js +12 -3
  951. package/dist/services/subagents/mentor-runner.js.map +1 -1
  952. package/dist/services/subagents/nested-runner.d.ts +11 -1
  953. package/dist/services/subagents/nested-runner.d.ts.map +1 -1
  954. package/dist/services/subagents/nested-runner.js +79 -11
  955. package/dist/services/subagents/nested-runner.js.map +1 -1
  956. package/dist/services/subagents/runtime.d.ts.map +1 -1
  957. package/dist/services/subagents/runtime.js +7 -0
  958. package/dist/services/subagents/runtime.js.map +1 -1
  959. package/dist/services/subagents/subagent-async-registry.d.ts +4 -0
  960. package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -1
  961. package/dist/services/subagents/subagent-async-registry.js +81 -17
  962. package/dist/services/subagents/subagent-async-registry.js.map +1 -1
  963. package/dist/services/subagents/subagent-manager.d.ts +1 -1
  964. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  965. package/dist/services/subagents/subagent-manager.js +4 -4
  966. package/dist/services/subagents/subagent-manager.js.map +1 -1
  967. package/dist/services/subagents/subagent-notification-store.d.ts +47 -2
  968. package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
  969. package/dist/services/subagents/subagent-notification-store.js +33 -0
  970. package/dist/services/subagents/subagent-notification-store.js.map +1 -1
  971. package/dist/services/subagents/subagent-run-control.d.ts +9 -1
  972. package/dist/services/subagents/subagent-run-control.d.ts.map +1 -1
  973. package/dist/services/subagents/subagent-run-control.js +12 -13
  974. package/dist/services/subagents/subagent-run-control.js.map +1 -1
  975. package/dist/services/subagents/tool-policy.d.ts.map +1 -1
  976. package/dist/services/subagents/tool-policy.js +20 -7
  977. package/dist/services/subagents/tool-policy.js.map +1 -1
  978. package/dist/services/subagents/types.d.ts +25 -2
  979. package/dist/services/subagents/types.d.ts.map +1 -1
  980. package/dist/services/subagents/types.js.map +1 -1
  981. package/dist/services/subagents/utils.d.ts +5 -1
  982. package/dist/services/subagents/utils.d.ts.map +1 -1
  983. package/dist/services/subagents/utils.js +33 -2
  984. package/dist/services/subagents/utils.js.map +1 -1
  985. package/dist/services/tool-execution-ledger.d.ts.map +1 -1
  986. package/dist/services/tool-execution-ledger.js +5 -1
  987. package/dist/services/tool-execution-ledger.js.map +1 -1
  988. package/dist/services/workspace/active-workspace-root.d.ts +6 -0
  989. package/dist/services/workspace/active-workspace-root.d.ts.map +1 -1
  990. package/dist/services/workspace/active-workspace-root.js +22 -0
  991. package/dist/services/workspace/active-workspace-root.js.map +1 -1
  992. package/dist/test-helpers/ink-testing.d.ts.map +1 -1
  993. package/dist/test-helpers/ink-testing.js +4 -1
  994. package/dist/test-helpers/ink-testing.js.map +1 -1
  995. package/dist/test-helpers/terminal-e2e.d.ts.map +1 -1
  996. package/dist/test-helpers/terminal-e2e.js +12 -2
  997. package/dist/test-helpers/terminal-e2e.js.map +1 -1
  998. package/dist/tools/agent/activate-skill.d.ts.map +1 -1
  999. package/dist/tools/agent/activate-skill.js +2 -2
  1000. package/dist/tools/agent/activate-skill.js.map +1 -1
  1001. package/dist/tools/agent/ask-mentor.d.ts.map +1 -1
  1002. package/dist/tools/agent/ask-mentor.js +2 -2
  1003. package/dist/tools/agent/ask-mentor.js.map +1 -1
  1004. package/dist/tools/agent/ask-user-constants.d.ts +2 -2
  1005. package/dist/tools/agent/ask-user-constants.d.ts.map +1 -1
  1006. package/dist/tools/agent/ask-user-constants.js +1 -1
  1007. package/dist/tools/agent/ask-user-constants.js.map +1 -1
  1008. package/dist/tools/agent/ask-user.d.ts.map +1 -1
  1009. package/dist/tools/agent/ask-user.js +2 -0
  1010. package/dist/tools/agent/ask-user.js.map +1 -1
  1011. package/dist/tools/agent/run-subagent-async.d.ts +2 -11
  1012. package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
  1013. package/dist/tools/agent/run-subagent-async.js +8 -2
  1014. package/dist/tools/agent/run-subagent-async.js.map +1 -1
  1015. package/dist/tools/agent/run-subagent.d.ts.map +1 -1
  1016. package/dist/tools/agent/run-subagent.js +44 -29
  1017. package/dist/tools/agent/run-subagent.js.map +1 -1
  1018. package/dist/tools/file/apply-patch.d.ts +2 -0
  1019. package/dist/tools/file/apply-patch.d.ts.map +1 -1
  1020. package/dist/tools/file/apply-patch.js +58 -14
  1021. package/dist/tools/file/apply-patch.js.map +1 -1
  1022. package/dist/tools/file/code-context.d.ts +5 -0
  1023. package/dist/tools/file/code-context.d.ts.map +1 -1
  1024. package/dist/tools/file/code-context.js +18 -6
  1025. package/dist/tools/file/code-context.js.map +1 -1
  1026. package/dist/tools/file/create-file.d.ts.map +1 -1
  1027. package/dist/tools/file/create-file.js +11 -5
  1028. package/dist/tools/file/create-file.js.map +1 -1
  1029. package/dist/tools/file/edit-healing.d.ts +7 -0
  1030. package/dist/tools/file/edit-healing.d.ts.map +1 -1
  1031. package/dist/tools/file/edit-healing.js +7 -7
  1032. package/dist/tools/file/edit-healing.js.map +1 -1
  1033. package/dist/tools/file/glob.d.ts +3 -0
  1034. package/dist/tools/file/glob.d.ts.map +1 -1
  1035. package/dist/tools/file/glob.js +9 -3
  1036. package/dist/tools/file/glob.js.map +1 -1
  1037. package/dist/tools/file/grep.d.ts +5 -0
  1038. package/dist/tools/file/grep.d.ts.map +1 -1
  1039. package/dist/tools/file/grep.js +10 -6
  1040. package/dist/tools/file/grep.js.map +1 -1
  1041. package/dist/tools/file/patch-healing.d.ts +31 -0
  1042. package/dist/tools/file/patch-healing.d.ts.map +1 -0
  1043. package/dist/tools/file/patch-healing.js +231 -0
  1044. package/dist/tools/file/patch-healing.js.map +1 -0
  1045. package/dist/tools/file/read-file.d.ts +3 -0
  1046. package/dist/tools/file/read-file.d.ts.map +1 -1
  1047. package/dist/tools/file/read-file.js +9 -3
  1048. package/dist/tools/file/read-file.js.map +1 -1
  1049. package/dist/tools/file/search-replace.d.ts.map +1 -1
  1050. package/dist/tools/file/search-replace.js +24 -6
  1051. package/dist/tools/file/search-replace.js.map +1 -1
  1052. package/dist/tools/format-helpers.d.ts +6 -0
  1053. package/dist/tools/format-helpers.d.ts.map +1 -1
  1054. package/dist/tools/format-helpers.js +23 -0
  1055. package/dist/tools/format-helpers.js.map +1 -1
  1056. package/dist/tools/memory/memory-tools.d.ts.map +1 -1
  1057. package/dist/tools/memory/memory-tools.js +324 -61
  1058. package/dist/tools/memory/memory-tools.js.map +1 -1
  1059. package/dist/tools/session-browser/session-browser-tools.d.ts +4 -0
  1060. package/dist/tools/session-browser/session-browser-tools.d.ts.map +1 -0
  1061. package/dist/tools/session-browser/session-browser-tools.js +47 -0
  1062. package/dist/tools/session-browser/session-browser-tools.js.map +1 -0
  1063. package/dist/tools/system/shell.d.ts +16 -1
  1064. package/dist/tools/system/shell.d.ts.map +1 -1
  1065. package/dist/tools/system/shell.js +97 -25
  1066. package/dist/tools/system/shell.js.map +1 -1
  1067. package/dist/tools/types.d.ts +8 -0
  1068. package/dist/tools/types.d.ts.map +1 -1
  1069. package/dist/tools/types.js.map +1 -1
  1070. package/dist/tools/web/web-fetch.d.ts.map +1 -1
  1071. package/dist/tools/web/web-fetch.js +2 -2
  1072. package/dist/tools/web/web-fetch.js.map +1 -1
  1073. package/dist/tools/web/web-search.d.ts.map +1 -1
  1074. package/dist/tools/web/web-search.js +2 -2
  1075. package/dist/tools/web/web-search.js.map +1 -1
  1076. package/dist/types/message.d.ts +1 -1
  1077. package/dist/types/message.d.ts.map +1 -1
  1078. package/dist/utils/ai/provider-credentials.d.ts +1 -1
  1079. package/dist/utils/ai/provider-credentials.d.ts.map +1 -1
  1080. package/dist/utils/ai/provider-credentials.js +18 -2
  1081. package/dist/utils/ai/provider-credentials.js.map +1 -1
  1082. package/dist/utils/ai/token-usage.d.ts +3 -1
  1083. package/dist/utils/ai/token-usage.d.ts.map +1 -1
  1084. package/dist/utils/ai/token-usage.js +7 -2
  1085. package/dist/utils/ai/token-usage.js.map +1 -1
  1086. package/dist/utils/apply-diff.d.ts.map +1 -1
  1087. package/dist/utils/apply-diff.js +8 -0
  1088. package/dist/utils/apply-diff.js.map +1 -1
  1089. package/dist/utils/busy-turn-guard.d.ts +17 -0
  1090. package/dist/utils/busy-turn-guard.d.ts.map +1 -0
  1091. package/dist/utils/busy-turn-guard.js +24 -0
  1092. package/dist/utils/busy-turn-guard.js.map +1 -0
  1093. package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
  1094. package/dist/utils/conversation/conversation-event-handler.js +88 -9
  1095. package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
  1096. package/dist/utils/error-helpers.d.ts.map +1 -1
  1097. package/dist/utils/error-helpers.js +8 -0
  1098. package/dist/utils/error-helpers.js.map +1 -1
  1099. package/dist/utils/inject-warning-into-tool-output.d.ts +30 -0
  1100. package/dist/utils/inject-warning-into-tool-output.d.ts.map +1 -1
  1101. package/dist/utils/inject-warning-into-tool-output.js +39 -0
  1102. package/dist/utils/inject-warning-into-tool-output.js.map +1 -1
  1103. package/dist/utils/output/bounded-json.d.ts +33 -0
  1104. package/dist/utils/output/bounded-json.d.ts.map +1 -0
  1105. package/dist/utils/output/bounded-json.js +59 -0
  1106. package/dist/utils/output/bounded-json.js.map +1 -0
  1107. package/dist/utils/output/output-trim.d.ts.map +1 -1
  1108. package/dist/utils/output/output-trim.js +7 -7
  1109. package/dist/utils/output/output-trim.js.map +1 -1
  1110. package/dist/utils/output/text-snippet.d.ts +6 -0
  1111. package/dist/utils/output/text-snippet.d.ts.map +1 -0
  1112. package/dist/utils/output/text-snippet.js +106 -0
  1113. package/dist/utils/output/text-snippet.js.map +1 -0
  1114. package/dist/utils/output/tty-osc.d.ts +1 -1
  1115. package/dist/utils/output/tty-osc.js +1 -1
  1116. package/dist/utils/resume-list.d.ts +3 -1
  1117. package/dist/utils/resume-list.d.ts.map +1 -1
  1118. package/dist/utils/resume-list.js +3 -2
  1119. package/dist/utils/resume-list.js.map +1 -1
  1120. package/dist/utils/settings-command.d.ts.map +1 -1
  1121. package/dist/utils/settings-command.js +120 -6
  1122. package/dist/utils/settings-command.js.map +1 -1
  1123. package/dist/utils/shell/execute-shell.d.ts +8 -0
  1124. package/dist/utils/shell/execute-shell.d.ts.map +1 -1
  1125. package/dist/utils/shell/execute-shell.js +36 -30
  1126. package/dist/utils/shell/execute-shell.js.map +1 -1
  1127. package/dist/utils/shell/sandbox/sandbox-env.d.ts +1 -0
  1128. package/dist/utils/shell/sandbox/sandbox-env.d.ts.map +1 -1
  1129. package/dist/utils/shell/sandbox/sandbox-env.js +2 -0
  1130. package/dist/utils/shell/sandbox/sandbox-env.js.map +1 -1
  1131. package/dist/utils/shell/sandbox/sandbox-policy.d.ts +4 -0
  1132. package/dist/utils/shell/sandbox/sandbox-policy.d.ts.map +1 -1
  1133. package/dist/utils/shell/sandbox/sandbox-policy.js +1 -1
  1134. package/dist/utils/shell/sandbox/sandbox-policy.js.map +1 -1
  1135. package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts +1 -0
  1136. package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts.map +1 -1
  1137. package/dist/utils/shell/sandbox/shell-sandbox-runner.js +21 -3
  1138. package/dist/utils/shell/sandbox/shell-sandbox-runner.js.map +1 -1
  1139. package/dist/utils/shell/shell-child-registry.d.ts +11 -0
  1140. package/dist/utils/shell/shell-child-registry.d.ts.map +1 -0
  1141. package/dist/utils/shell/shell-child-registry.js +40 -0
  1142. package/dist/utils/shell/shell-child-registry.js.map +1 -0
  1143. package/dist/utils/shell/shell-output.d.ts.map +1 -1
  1144. package/dist/utils/shell/shell-output.js +10 -6
  1145. package/dist/utils/shell/shell-output.js.map +1 -1
  1146. package/dist/utils/shell/temp-sweep.d.ts +28 -0
  1147. package/dist/utils/shell/temp-sweep.d.ts.map +1 -0
  1148. package/dist/utils/shell/temp-sweep.js +140 -0
  1149. package/dist/utils/shell/temp-sweep.js.map +1 -0
  1150. package/dist/utils/streaming/extract-command-messages.d.ts +12 -5
  1151. package/dist/utils/streaming/extract-command-messages.d.ts.map +1 -1
  1152. package/dist/utils/streaming/extract-command-messages.js +29 -33
  1153. package/dist/utils/streaming/extract-command-messages.js.map +1 -1
  1154. package/dist/utils/streaming/streaming-session-factory.d.ts +8 -0
  1155. package/dist/utils/streaming/streaming-session-factory.d.ts.map +1 -1
  1156. package/dist/utils/streaming/streaming-session-factory.js +3 -0
  1157. package/dist/utils/streaming/streaming-session-factory.js.map +1 -1
  1158. package/dist/utils/value-suggestions.d.ts +8 -0
  1159. package/dist/utils/value-suggestions.d.ts.map +1 -1
  1160. package/dist/utils/value-suggestions.js +72 -0
  1161. package/dist/utils/value-suggestions.js.map +1 -1
  1162. package/package.json +17 -11
  1163. package/dist/utils/output/synchronized-output.d.ts +0 -35
  1164. package/dist/utils/output/synchronized-output.d.ts.map +0 -1
  1165. package/dist/utils/output/synchronized-output.js +0 -66
  1166. package/dist/utils/output/synchronized-output.js.map +0 -1
package/README.md CHANGED
@@ -1,408 +1,416 @@
1
1
  # term2
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/@qduc/term2.svg)](https://www.npmjs.com/package/@qduc/term2)
4
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5
-
6
- A powerful terminal-based AI assistant that helps you get things done on your computer through natural conversation.
7
-
8
- **Why term2?** Unlike proprietary alternatives, term2 is **open-source (MIT)**, works with **any AI provider** (OpenAI, OpenRouter, local self-hosted, etc.), requires **no subscription**, and uniquely supports **remote server management via SSH** — all while giving you full control over what commands execute on your system.
9
-
10
- ## Demo
11
-
12
- https://github.com/user-attachments/assets/ac960d65-f7c8-453a-9440-91f6397ae842
13
-
14
- ## Features
15
-
16
- - 🎭 **Five Operating Modes** - Standard (full-power, auto-approves patches), Lite (fast & safe), Mentor (expert model advice), Plan (read-only research/planning), and Orchestrator (delegates task execution to subagents)
17
- - 🌍 **Open Source** - MIT licensed, hackable, auditable, community-driven
18
- - 🤖 **Multi-Provider Support** - Works with OpenAI, OpenRouter, OpenAI-compatible APIs, and Vercel AI SDK providers
19
- - 🔒 **Safe Execution** - Every command requires your explicit approval with diff preview
20
- - 🛠️ **Advanced Tools** - Shell execution, file patching, search/replace (with `<...>` gap matching), grep, find files, file reading, file creation, web search, web fetching, code outline & context search, mentor consultation, and subagent invocation
21
- - 👥 **Subagent Delegation** - Spawn specialized, synchronous subagents (`explorer`, `worker`, `researcher`, `mentor`) to perform sub-tasks in parallel while conserving your main context
22
- - ⏪ **Conversation Rewind** - Rewind to any past user turn with `/rewind`, choosing whether to edit the turn again or resend it as-is. The picker states what each rewind discards (turns, replies, edited files) before you commit to it
23
- - 💾 **Conversation Resumption & Persistence** - Saved conversations are persisted using robust event logging and can be resumed later using the `--resume` flag
24
- - 💬 **Slash Commands** - Quick actions like `/clear`, `/quit`, `/model`, `/mentor`, `/lite`, `/copy`, `/auto-approve`, `/plan`, `/rewind`, `/usage`, `/effort`, `/handoff`, and `/orchestrator` for easy control
25
- - 📝 **Smart Context** - The assistant understands your environment and provides relevant help
26
- - 🎯 **Streaming Responses** - See the AI's thoughts and reasoning in real-time
27
- - 🧠 **Reasoning Effort Control** - Configurable reasoning levels (minimal to high) for O1/O3 models
28
- - ⚡ **Command History** - Navigate previous inputs with arrow keys
29
- - 🎨 **Markdown Rendering** - Formatted code blocks, tables, and text in the terminal
30
- - 🔄 **Retry Logic** - Automatic recovery from tool hallucinations and upstream errors
31
- - 🌐 **SSH Mode** - Execute commands and edit files on remote servers over SSH
32
- - 🔒 **Sandboxed Execution** - Shell commands run in a sandbox with configurable read policies (`credential-denylist`, `home-denylist`, `standard`, `strict`) to protect sensitive files
33
- - 🤖 **Non-Interactive Mode** - Run commands from the CLI without starting the full UI
34
- - ✏️ **Standard Mode** - Auto-approves file edits in your workspace for faster development (active by default)
35
- - 🛡️ **Smart Shell Auto-Approval** - A hybrid local-heuristic + LLM-based safety evaluator that auto-approves safe commands, eliminating prompt fatigue while strictly blocking risky ones (with detailed reasoning explanations)
36
- - 🖼️ **Image Pasting** - Paste images from your clipboard directly into the terminal for vision-model analysis
37
- - 📈 **Real-time Token Usage** - Live token consumption displayed during streaming
38
-
39
-
40
- ## Why term2 vs Alternatives?
41
-
42
- | | **term2** | **Claude Code** | **Warp** |
43
- | --- | --- | --- | --- |
44
- | **Open Source** | ✅ MIT | ❌ Proprietary | ✅ Open Source |
45
- | **Cost** | Pay-per-use API | $20 - $200/mo (or API) | Freemium / Paid tiers |
46
- | **AI Providers** | Any (OpenAI, OpenRouter, local) | Anthropic only | Selected models / BYOLLM |
47
- | **SSH / Remote** | ✅ Native | ✅ Yes (Remote Control/SSH) | ✅ Yes |
48
- | **Mentor Mode** | ✅ Built-in | ❌ No | ❌ No |
49
- | **Self-Hostable** | ✅ Yes | ❌ No (Requires Anthropic) | ❌ Cloud elements (Oz) |
3
+ [![npm version](https://img.shields.io/npm/v/@qduc/term2.svg?style=flat-square)](https://www.npmjs.com/package/@qduc/term2)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](https://opensource.org/licenses/MIT)
5
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg?style=flat-square)](https://nodejs.org)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue.svg?style=flat-square)](https://www.typescriptlang.org/)
50
7
 
51
- ## Installation
52
-
53
- **Requirements:**
54
-
55
- - Node.js 20 or higher
56
- - An API key from OpenAI, OpenRouter, or any OpenAI-compatible provider
57
-
58
- Install globally via npm:
59
-
60
- ```bash
61
- npm install --global @qduc/term2
62
- ```
63
-
64
- Set your API key as an environment variable (see [Configuration](#configuration) section for details):
8
+ term2 is an open-source terminal AI assistant and autonomous agent runtime built for high-velocity software engineering and system administration.
65
9
 
66
- ```bash
67
- export OPENAI_API_KEY="your-api-key-here"
68
- ```
10
+ Combining a fast React (Ink) terminal interface with an application-owned run loop, term2 provides fine-grained execution safety, native multi-agent delegation, provider-neutral context compaction, and seamless multi-provider support—giving developers complete agency over their workflow without vendor lock-in or subscription gates.
69
11
 
70
- ## Usage
12
+ ---
71
13
 
72
- Start the assistant:
14
+ ## Core Capabilities
73
15
 
74
- ```bash
75
- term2 # Start in standard mode (full capabilities, auto-approves patches)
76
- term2 --lite # Start in lite mode (fast, read-only)
77
- ```
16
+ - **Open Source and Local First**: MIT licensed. No mandatory subscriptions, telemetry lock-in, or proprietary walled gardens.
17
+ - **Universal Provider Support**: Native integration with OpenAI (WebSocket Responses and Chat Completions), ChatGPT/Codex OAuth (browser PKCE), Grok Responses API (with encrypted reasoning and OAuth), OpenRouter, Anthropic, Google Gemini, and custom local endpoints (Ollama, llama.cpp, vLLM).
18
+ - **Fine-Grained Sandboxing and Safety**: Sandboxed shell execution with configurable read/write boundaries (`standard`, `strict`) and interactive unified diff previews.
19
+ - **Smart Shell Auto-Approval**: A hybrid heuristic and LLM safety evaluator that auto-approves safe read-only and workspace commands, eliminating prompt fatigue while strictly gating risky operations.
20
+ - **Multi-Agent Orchestration**: Spawn specialized foreground or background subagents (`explorer`, `worker`, `mentor`, `librarian`) across tiered model profiles (`smart`, `balanced`, `cheap`, `chore`).
21
+ - **Provider-Neutral Context Compaction**: Intelligently compacts long conversation histories (via `/compact` or automatic thresholds) while preserving cold-prefix architectural facts and hot-tail tool ledger integrity.
22
+ - **Time-Travel Rewind and Forking**: Non-destructive conversation rewinding with discard previews (`/rewind`, `/undo`, `/retry`), session resumption (`/resume`, `--resume`), and session branching (`--fork`).
23
+ - **Native Remote Development**: Execute commands and manage codebases on remote servers seamlessly over SSH with SSH agent authentication.
24
+ - **Five Focused Operating Modes**: Standard, Plan, Lite, Mentor, and Orchestrator modes adapted to every phase of engineering.
78
25
 
79
- Then simply chat with the AI! Type your question or request, press Enter, and the assistant will help you.
26
+ ---
80
27
 
81
- **New to term2?**
28
+ ## Comparison: Why term2?
82
29
 
83
- - Working on a codebase/project? Use standard mode: `term2`
84
- - Just need general terminal help? Use lite mode: `term2 --lite`
85
- - Tackling a complex problem? Enable mentor mode with `/mentor` command
30
+ | Feature | term2 | Claude Code | Warp |
31
+ | :--- | :---: | :---: | :---: |
32
+ | **License** | **MIT Open Source** | Proprietary | Proprietary / Closed Core |
33
+ | **Cost** | **Direct API / Pay-per-use** | Subscription / API | Freemium / Paid Tiers |
34
+ | **Model Ecosystem** | **Any** (OpenAI, Codex, Grok, OpenRouter, Anthropic, Google, Local) | Anthropic only | Selected Cloud Models |
35
+ | **OAuth Browser Login** | **Grok and Codex PKCE** | No | No |
36
+ | **Local LLMs (Ollama/llama.cpp)** | **Native** | No | Partial (BYOLLM) |
37
+ | **Subagent Swarms** | **Configurable 4-Tier Roles** | Limited | No |
38
+ | **Remote SSH Workspaces** | **Native SSH Agent** | Remote Control | SSH Client |
39
+ | **Dual-Model Mentor Mode** | **Built-in** | No | No |
40
+ | **Context Compaction** | **Local and Provider-Native** | Automatic (Closed) | No |
86
41
 
87
- See the "Operating Modes" section below for full details.
42
+ ---
88
43
 
89
- ### Basic Examples
44
+ ## Installation
90
45
 
91
- ```
92
- "What files are in my current directory?"
93
- "Show me my git status"
94
- "Create a backup of my documents folder"
95
- "What's using port 3000?"
96
- ```
46
+ ### Prerequisites
47
+ - Node.js version 20.0.0 or higher
48
+ - An API key or OAuth account for your preferred AI provider
97
49
 
98
- ### Advanced Examples
50
+ ### Install via Package Manager
51
+ ```bash
52
+ # Install globally via npm
53
+ npm install --global @qduc/term2
99
54
 
100
- ```
101
- "Find all TODO comments in my JavaScript files"
102
- "Help me debug why my server won't start on port 8080"
103
- "Create a new React component called UserProfile"
104
- "Show me the disk usage of my home directory"
105
- "What processes are consuming the most memory?"
106
- "Search for the word 'config' in all .json files"
55
+ # Or using pnpm
56
+ pnpm add --global @qduc/term2
107
57
  ```
108
58
 
109
- ### Command Line Options
59
+ ### Quick Setup
110
60
 
61
+ #### 1. OAuth Browser Login (Grok or Codex)
62
+ term2 supports browser-based PKCE OAuth logins for OpenAI Codex/ChatGPT and xAI Grok:
111
63
  ```bash
112
- # Model selection
113
- term2 # Start with default model (gpt-5.1)
114
- term2 -m gpt-5.2 # Use a specific model
115
- term2 --model gpt-5-mini # Use GPT-5 mini for faster/cheaper responses
116
- term2 -r high # Set reasoning effort to high (for GPT-5 models)
117
- term2 --reasoning medium # Set reasoning effort to medium
118
-
119
- # Operating modes (see "Operating Modes" section below for details)
120
- term2 --lite # Start in lite mode for general terminal work (no codebase)
121
-
122
- # Resuming past conversations
123
- term2 --resume # Resume the last conversation session
124
- term2 -R <conversation-uuid> # Resume a specific conversation by ID
125
-
126
- # SSH Mode - execute on remote servers
127
- term2 --ssh user@host --remote-dir /path/to/project
128
- term2 --ssh deploy@server.com --remote-dir /var/www/app --ssh-port 2222
129
-
130
- # Combine SSH with lite mode for lightweight remote assistance
131
- term2 --ssh user@host --remote-dir /path --lite
132
-
133
- # Non-interactive mode
134
- term2 "how to use grep"
135
- term2 --auto-approve "list files in current directory"
136
- ```
137
-
138
- ### Slash Commands
139
-
140
- While in the chat, you can use these commands:
141
-
142
- - `/clear` - Clear the conversation history
143
- - `/quit` - Exit the application
144
- - `/model [model-name]` - Switch to a different model
145
- - `/mentor` - Toggle mentor mode
146
- - `/lite` - Toggle lite mode (requires `/clear` first if a session is active)
147
- - `/plan` - Toggle plan mode (read-only research/planning mode)
148
- - `/orchestrator` - Toggle orchestrator mode (delegates all tool-backed work to subagents; requires `/clear` first if a session is active)
149
- - `/skills` - Browse and manage available skills
150
- - `/rewind [last | <turn>] [edit | resend]` - Rewind the conversation to a user turn, discarding that turn and everything after it. With no arguments it opens a picker showing what each rewind would discard; `Tab` switches between putting the turn back in the input box (`edit`, the default) and resending it unchanged (`resend`)
151
- - `/undo` - Alias for `/rewind edit`
152
- - `/retry` - Alias for `/rewind resend`, acting on the last turn immediately
153
- - `/retry-tool` - Retry the last tool call (was `/retry tool`)
154
- - `/usage` - Show token usage breakdown for the current session (includes subagent usage)
155
- - `/effort [level]` - Set reasoning effort for O1/O3 models (e.g. none, minimal, low, medium, high)
156
- - `/copy` - Copy the latest assistant response to the clipboard
157
- - `/handoff` - Hand off the last assistant response to another model or session
158
- - `/auto-approve [off|advisory|auto|always]` - Set or cycle shell auto-approval mode
159
- - `/settings [key] [value]` - Modify runtime settings (e.g., `/settings agent.temperature 0.7`)
160
-
64
+ # Log in to xAI Grok
65
+ term2 --grok-login
161
66
 
162
- ## Operating Modes
163
-
164
- | Mode | Toggle / Start with | Best for | Tools Available | Context |
165
- | ----------- | ------------------- | ------------------------------------ | -------------------- | ------------- |
166
- | **Standard**| `term2` | Codebase work & development | Auto-approves patches| Full codebase |
167
- | **Plan** | `/plan` | Researching and designing plans | Read-only tools | Full codebase |
168
- | **Lite** | `term2 --lite` | General terminal tasks (no codebase) | Read-only tools | None |
169
- | **Mentor** | `/mentor` | Complex codebase problems | All + mentor tool | Full codebase |
170
- | **Orchestrator**| `/orchestrator` | Delegating complex multi-step work | Subagents + read-only| Full codebase |
67
+ # Log in to OpenAI Codex / ChatGPT
68
+ term2 --codex-login
69
+ ```
171
70
 
172
- **Standard Mode** is the default. It auto-approves `apply_patch` operations within the workspace for high-velocity coding, while still requiring confirmation for destructive operations.
71
+ > **Multi-Account Management**: Manage multiple OAuth accounts and switch between active profiles at runtime via the `/providers` menu.
173
72
 
174
- **Plan Mode** enforces read-only boundaries — no file writes or mutating shell commands. Use `/plan` or `Shift+Tab` to toggle.
73
+ #### 2. Environment Variables (API Keys)
74
+ Alternatively, export the API key for your chosen provider:
75
+ ```bash
76
+ # OpenAI
77
+ export OPENAI_API_KEY="sk-..."
175
78
 
176
- **Lite Mode** is a fast, lightweight assistant for general terminal work (system admin, file management, SSH sessions). No codebase context or file editing tools. Use `term2 --lite` or `/lite` to toggle.
79
+ # OpenRouter (Claude, Gemini, DeepSeek, etc.)
80
+ export OPENROUTER_API_KEY="sk-or-v1-..."
177
81
 
178
- **Mentor Mode** pairs your primary AI with the `agent.smartModel` tier for strategic guidance on complex problems. Toggle it with `/mentor`.
82
+ # Anthropic
83
+ export ANTHROPIC_API_KEY="sk-ant-..."
179
84
 
180
- **Orchestrator Mode** delegates all tool-backed work to subagents, preserving the main context window for high-level orchestration. Toggle with `/orchestrator`.
85
+ # Google Gemini
86
+ export GOOGLE_GENERATIVE_AI_API_KEY="..."
181
87
 
182
- **Switching modes:** Use `/lite`, `/mentor`, `/plan`, `/orchestrator`, or `Shift+Tab` (cycles Standard ↔ Plan). Modes handle mutual exclusions automatically.
88
+ # Web Search (Tavily or Exa)
89
+ export TAVILY_API_KEY="tvly-..."
90
+ export EXA_API_KEY="..."
91
+ ```
183
92
 
93
+ ---
184
94
 
185
- ## SSH Mode
95
+ ## Quick Start
186
96
 
187
- Execute commands and modify files on remote servers over SSH. Requires an SSH agent with keys loaded.
97
+ Launch term2 in your project directory:
188
98
 
189
99
  ```bash
190
- term2 --ssh user@hostname --remote-dir /path/to/project
191
- term2 --ssh user@hostname --remote-dir /path/to/project --ssh-port 2222 # custom port
192
- term2 --ssh user@hostname --lite # lightweight remote assistance (--remote-dir optional)
193
- ```
100
+ # Start standard interactive session
101
+ term2
194
102
 
195
- **Limitations:** SSH agent auth only (no passwords), text files only, no binary file support.
103
+ # Start in lightweight mode (fast system/terminal operations, no codebase ingestion)
104
+ term2 --lite
196
105
 
197
- ## Non-Interactive Mode
106
+ # Start with a specific model and provider
107
+ term2 -m claude-sonnet-4.6 -p openrouter
198
108
 
199
- Pass a prompt as a positional argument for one-off tasks. Tool execution is rejected by default; use `--auto-approve` to allow it.
109
+ # Resume the last conversation session
110
+ term2 --resume
200
111
 
201
- ```bash
202
- term2 "list files in current directory"
203
- term2 --auto-approve "delete /tmp/test-file"
204
-
205
- # Output: AI response → stdout, events → stderr
206
- ANSWER=$(term2 "is there any TODO in source/cli.tsx?")
112
+ # Run a non-interactive prompt from the command line
113
+ term2 "Explain the architecture of source/agent.ts"
207
114
  ```
208
115
 
209
- With `--auto-approve`, defaults to Standard Mode; without it, defaults to Lite Mode.
210
-
211
- ## Shell Auto-Approval
116
+ ---
212
117
 
213
- term2 uses a hybrid local-heuristic + LLM safety evaluation to minimize prompt fatigue while blocking risky commands. Destructive operations (e.g., `rm -rf`, `git push --force`) are always blocked from auto-approval.
118
+ ## Operating Modes
214
119
 
215
- Toggle modes with `/auto-approve`:
120
+ term2 features five distinct operating modes tailored to different stages of development:
121
+
122
+ | Mode | Trigger / CLI | Purpose and Behavior | Tools and Context |
123
+ | :--- | :--- | :--- | :--- |
124
+ | **Standard** | `term2` *(default)* | High-velocity codebase development. Automatically approves workspace file patches while gating destructive commands. | Full codebase context, all tools, patch auto-approval. |
125
+ | **Plan** | `/plan` or `Shift+Tab` | Architecture design, research, and code exploration. Enforces read-only safety guarantees (no file writes or mutating commands). | Full codebase context, read-only tools. |
126
+ | **Lite** | `term2 --lite` or `/lite` | General terminal tasks, DevOps, and SSH administration without codebase ingestion overhead. | Session context only, read-only system tools. |
127
+ | **Mentor** | `/mentor` | Collaborative problem-solving. Pairs the primary model with a higher-tier strategic model (`smartModel`) for architectural review. | Full codebase context, all tools and `ask_mentor`. |
128
+ | **Orchestrator** | `/orchestrator` | High-level task coordination. Encourages prompt-guided delegation across specialized subagents while retaining end-to-end turn ownership. | Full codebase context, direct tools and subagent delegation. |
129
+
130
+ > **Mode Switching:** Press `Shift+Tab` to cycle the application's operating modes. To run one direct shell command in any operating mode, prefix the input with `!`; the command and output are added to the conversation, then the input returns to normal mode. Use slash commands (`/plan`, `/lite`, `/mentor`, `/orchestrator`) to switch modes explicitly.
131
+
132
+ ---
133
+
134
+ ## Subagents Architecture
135
+
136
+ term2 includes a modular subagent execution system designed to isolate heavy computational, research, or modification workloads from the main conversation transcript. Each subagent operates under a defined role profile with explicit permissions, execution budgets, and capability tiers.
137
+
138
+ ### Explorer Subagent
139
+ - **Purpose**: Rapid codebase reconnaissance, symbol search, file discovery, and dependency mapping.
140
+ - **Permissions**: Read-only (`canRead: true`, `canWrite: false`, `canSearchWeb: true`, `canRunShell: true`).
141
+ - **Safety Boundary**: Restricted to non-destructive read operations and safe read-only shell commands (`rg`, `fd`, `git status`).
142
+ - **Model Tier**: Defaults to `agent.cheapModel` (e.g. `gpt-5.4-mini`) to minimize latency and token consumption during wide search operations.
143
+
144
+ ### Worker Subagent
145
+ - **Purpose**: Autonomous implementation of discrete tasks, file modifications, refactoring slices, and running automated test suites.
146
+ - **Permissions**: Full read/write (`canRead: true`, `canWrite: true`, `canSearchWeb: false`, `canRunShell: true`).
147
+ - **Safety Boundary**: Sandboxed to the workspace root directory. Supports pinning execution to a dedicated Git worktree (`worktree` parameter) to isolate dirty state from the parent checkout.
148
+ - **Model Tier**: Defaults to `agent.balancedModel` (e.g. `gpt-5.3-codex` or `claude-sonnet-4.6`).
149
+
150
+ ### Mentor Subagent
151
+ - **Purpose**: High-level strategic consultation, algorithmic design analysis, and independent second-opinion code review.
152
+ - **Permissions**: Advisory only (`canRead: false`, `canWrite: false`, `canSearchWeb: false`, `canRunShell: false`).
153
+ - **Safety Boundary**: Completely detached from the workspace filesystem and tool execution. Receives architectural queries via the `ask_mentor` tool and returns structured recommendations without polluting turn history.
154
+ - **Model Tier**: Defaults to `agent.smartModel` (e.g. `gpt-5.5`).
155
+
156
+ ### Librarian Subagent
157
+ - **Purpose**: Long-term persistent memory management, documentation discovery, and indexing domain knowledge across sessions.
158
+ - **Permissions**: Memory management (`canRead: false`, `canWrite: false`, `canSearchWeb: false`, `canRunShell: false`). Interacts with memory exclusively via specialized `memory_*` tools and `activate_skill`.
159
+ - **Safety Boundary**: Operates strictly within persistent memory storage without general filesystem, shell, or web access.
160
+ - **Model Tier**: Defaults to `agent.cheapModel`.
161
+
162
+ ### Subagent Capability Tiers
163
+ Subagent roles are mapped to four configurable model tiers in `settings.json`:
164
+ - `agent.smartModel` / `agent.smartProvider` / `agent.smartReasoningEffort`: For deep reasoning and strategic advisory (used by Mentor).
165
+ - `agent.balancedModel` / `agent.balancedProvider` / `agent.balancedReasoningEffort`: For implementation, editing, and execution (used by Worker).
166
+ - `agent.cheapModel` / `agent.cheapProvider` / `agent.cheapReasoningEffort`: For high-throughput search and discovery (used by Explorer and Librarian).
167
+ - `agent.choreModel` / `agent.choreProvider`: For narrow utility tasks such as AST patch self-healing and auto-approval evaluation.
168
+
169
+ ### Background Subagent Management and Lifecycle
170
+ - **Concurrent Execution**: Subagents can run synchronously in the foreground or asynchronously in the background.
171
+ - **Task Manager (`Ctrl+G`)**: Press `Ctrl+G` to open the Background Task Manager to inspect live running subagents, view stream output, pause runs, or terminate hung jobs.
172
+ - **Resource Budgets**: Each subagent run is bounded by an execution turn budget (`maxTurns`) to prevent infinite recursive loops.
173
+
174
+ ### Subagent Check-In and Steering
175
+ - **Periodic Check-In**: The `BackgroundCheckInScheduler` periodically wakes the launching agent with status summaries of background work without interrupting active user turns.
176
+ - **Mid-Turn Steering**: Deliver real-time steering messages to running subagent tasks at clean request boundaries.
177
+ - **Orchestrator Inquiries**: Subagents can query the parent orchestrator for clarifying decisions using the `ask_orchestrator` tool when encountering ambiguity.
178
+
179
+ ---
180
+
181
+ ## Safety, Sandboxing, and Auto-Approval
182
+
183
+ ### Sandboxed Execution
184
+ Shell commands execute inside an isolated execution boundary:
185
+ - `standard` policy: Restricts file writes to the workspace and temporary directories while blocking reads of sensitive credential paths (`~/.ssh`, `~/.aws`, `~/.docker`, `~/.netrc`, `~/.kube`, etc.).
186
+ - `strict` policy: Locks down file reading to the workspace and safe toolchains, blocking access to the user home directory and system roots (`/etc`, `/var`, `/root`).
187
+ - Toggle sandbox enforcement anytime using `/sandbox`, or configure policies via `sandbox.readPolicy` in `/settings`.
188
+
189
+ ### Smart Shell Auto-Approval Modes (`/auto-approve`)
190
+ - `off` (Default): Every shell command prompts for interactive user confirmation with a unified diff preview.
191
+ - `advisory`: Commands require confirmation, but include real-time LLM-generated safety and consequence explanations.
192
+ - `auto`: Safe, read-only, and idempotent workspace operations execute automatically; potentially destructive commands (e.g. `rm -rf`, `git reset --hard`, `git push --force`) are strictly blocked for user confirmation.
193
+ - `always`: Unattended execution mode. Disables sandbox boundaries (intended for automated CI environments; use with caution).
194
+
195
+ ---
196
+
197
+ ## Context Management and Compaction
198
+
199
+ ### Local and Server-Side Compaction
200
+ - **Provider-Neutral Compactor**: When conversation tokens exceed configured ratios or thresholds, term2 performs request-boundary context compaction.
201
+ - **Cold-Prefix Preservation**: Architectural decisions, environment constraints, and critical requirements are summarized and retained verbatim.
202
+ - **Hot-Tail Invariants**: Recent conversation turns and active tool ledger call/result pairs remain completely intact, preventing broken references.
203
+ - **Manual Trigger**: Run `/compact` at any point to compress transcript history immediately.
204
+ - **OpenAI Native Compaction**: Leverages server-side context management when supported by the provider endpoint.
205
+
206
+ ---
207
+
208
+ ## Conversation Resumption, Rewind, and Queuing
209
+
210
+ ### Time-Travel Rewind (`/rewind`, `/undo`, `/retry`)
211
+ - **Inspection Picker**: Running `/rewind` opens an interactive menu detailing exactly which turns, replies, and modified files will be affected before committing.
212
+ - **Disposition Modes**:
213
+ - `edit` (Default / `/undo`): Discards subsequent turns and places the selected user prompt back into the input editor for revision.
214
+ - `resend` (`/retry`): Discards subsequent turns and immediately resends the selected prompt to the model.
215
+ - **Tool Retry (`/retry-tool`)**: Retries only the most recent failed or timed-out tool call without losing conversation context.
216
+
217
+ ### Session Persistence and Resumption
218
+ - **Persistence Engine**: Sessions are auto-saved using append-only event streams.
219
+ - **Resuming Sessions**:
220
+ ```bash
221
+ term2 --resume # Resume the most recent session
222
+ term2 --resume <session-id> # Resume a specific session by UUID
223
+ term2 --resume ls # List recent saved sessions with metadata
224
+ ```
225
+ - **Session Branching (`--fork`)**:
226
+ ```bash
227
+ term2 --resume <session-id> --fork
228
+ ```
216
229
 
217
- | Mode | Behavior |
218
- | --- | --- |
219
- | `off` (default) | Every command requires manual confirmation |
220
- | `advisory` | Manual confirmation, but LLM reasoning is displayed alongside |
221
- | `auto` | Safe commands execute automatically; risky ones still prompt |
222
- | `always` | **YOLO**: every command runs without prompting (DANGEROUS) |
230
+ ### Mid-Turn Injection and Prompt Queuing
231
+ - **Input Queuing**: Press `Alt+Enter` or `Esc+Enter` to queue additional user instructions while a turn is actively generating.
232
+ - **Queue Editing**: Edit or delete pending queued prompts before they are admitted at the next request boundary.
233
+
234
+ ---
235
+
236
+ ## Remote Development over SSH
237
+
238
+ term2 connects directly to remote hosts over SSH, executing commands and modifying remote files within a remote working directory:
223
239
 
224
- In `always` mode, subagent shell commands are auto-approved too; subagents stay confined to the workspace write boundary and remain banned from unsandboxed execution.
240
+ ```bash
241
+ # Connect to remote server with working directory
242
+ term2 --ssh user@hostname --remote-dir /path/to/project
225
243
 
226
- `always` and the sandbox are mutually exclusive: setting the mode disables the sandbox, and re-enabling the sandbox demotes the mode back to `auto`.
244
+ # Custom SSH port
245
+ term2 --ssh user@hostname --remote-dir /path/to/project --ssh-port 2222
227
246
 
228
- ```json
229
- {
230
- "shell": { "autoApproveMode": "auto" },
231
- "agent": { "choreModel": "gpt-5.4-mini" }
232
- }
247
+ # Lightweight remote administration without codebase indexing
248
+ term2 --ssh user@hostname --lite
233
249
  ```
234
250
 
235
- > [!TIP] The chore tier also handles edit self-healing. Use a fast, lightweight model to keep these narrow background tasks responsive.
236
-
237
- ## Configuration
238
-
239
- term2 stores its configuration in:
251
+ **Requirements and Behavior**:
252
+ - Requires an SSH agent running locally (`ssh-agent`) with loaded keys (`ssh-add`), or configured identity keys in `~/.ssh/config`.
253
+ - `--remote-dir` is required for full codebase sessions. In `--lite` mode, omitting `--remote-dir` defaults to the remote user's home directory.
254
+ - Background command execution is restricted to local workspaces.
240
255
 
241
- - **macOS**: `~/Library/Logs/term2-nodejs/settings.json`
242
- - **Linux**: `~/.local/state/term2-nodejs/settings.json`
256
+ ---
243
257
 
244
- ### Environment Variables (API Keys Only)
258
+ ## Non-Interactive and Scripting Mode
245
259
 
246
- API keys should be set as environment variables for security (never commit them to git):
260
+ Execute one-off queries and automation tasks directly from shell scripts:
247
261
 
248
262
  ```bash
249
- # OpenAI (default provider)
250
- export OPENAI_API_KEY="sk-..."
251
-
252
- # OpenRouter (for Claude, Gemini, and other models)
253
- export OPENROUTER_API_KEY="sk-or-v1-..."
263
+ # Standard non-interactive query (output prints to stdout)
264
+ term2 "Summarize recent commits in this repository"
254
265
 
255
- # Web Search (Tavily — default)
256
- export TAVILY_API_KEY="tvly-..."
266
+ # Automated task execution with tool approvals enabled
267
+ term2 --auto-approve "Fix syntax errors in source/cli.tsx and run typecheck"
257
268
 
258
- # Web Search (Exa)
259
- export EXA_API_KEY="..."
269
+ # Capture output in shell pipeline
270
+ TODO_LIST=$(term2 "List all TODO markers in source/")
260
271
  ```
261
272
 
262
- To make them permanent, add these exports to your shell configuration file (`~/.bashrc`, `~/.zshrc`, or `~/.profile`).
273
+ ---
263
274
 
264
- ### Configuring Other Settings
275
+ ## Reference Guide
265
276
 
266
- Settings (model, provider, temperature, etc.) can be configured via:
267
-
268
- 1. **App menu** - Use `/settings` command during a session (e.g., `/settings agent.model gpt-5.2`)
269
- 2. **Settings file** - Manually edit the JSON file:
270
- - **macOS**: `~/Library/Logs/term2-nodejs/settings.json`
271
- - **Linux**: `~/.local/state/term2-nodejs/settings.json`
272
- 3. **CLI flags** - Override for a single session (e.g., `-m gpt-5.2`)
273
-
274
- ### Provider Configuration Examples
275
-
276
- ```json
277
- // OpenAI (default)
278
- { "agent": { "provider": "openai", "model": "gpt-5.5" } }
279
-
280
- // OpenRouter
281
- { "agent": { "provider": "openrouter", "model": "anthropic/claude-sonnet-4.6" } }
282
- ```
277
+ ### Slash Commands
283
278
 
284
- For local LLMs, add a provider entry to the `providers` list:
279
+ | Command | Arguments | Description |
280
+ | :--- | :--- | :--- |
281
+ | `/model` | `[model-name]` | Open model selection menu or switch model directly (`Ctrl+O`). |
282
+ | `/effort` | `[effort-level]` | Configure reasoning effort (`none`, `minimal`, `low`, `medium`, `high`, `xhigh`) (`Ctrl+T`). |
283
+ | `/plan` | — | Toggle read-only Plan Mode (`Shift+Tab`). |
284
+ | `/lite` | — | Toggle lightweight terminal mode. |
285
+ | `/mentor` | — | Toggle collaborative Mentor Mode. |
286
+ | `/orchestrator` | — | Toggle prompt-guided Orchestrator Mode. |
287
+ | `/auto-approve` | `[off\|advisory\|auto\|always]` | Cycle or set shell command auto-approval level. |
288
+ | `/sandbox` | — | Toggle shell sandbox isolation on or off. |
289
+ | `/compact` | — | Manually trigger context compaction. |
290
+ | `/providers` | — | Open interactive provider manager (list, add, edit, remove, switch accounts). |
291
+ | `/skills` | `[skill-name]` | Activate a skill for the next request. |
292
+ | `/rewind` | `[last\|<turn>] [edit\|resend]` | Rewind conversation history with interactive discard inspection. |
293
+ | `/undo` | — | Alias for `/rewind edit` (places target turn back in input box). |
294
+ | `/retry` | — | Alias for `/rewind resend` (immediately resends the last user turn). |
295
+ | `/retry-tool` | — | Re-execute the last failed or timed-out tool call. |
296
+ | `/copy` | `[N]` | Copy the latest assistant response (or $N$-th prior response) to clipboard. |
297
+ | `/usage` | — | Display exact token counts, cost breakdown, and provider rate-limit metrics. |
298
+ | `/resume` | `[ls\|conversation-id]` | Resume the latest or a specific saved conversation; use `/resume ls` to list recent conversations. |
299
+ | `/handoff` | — | Export current conversation context for handoff to another session or model. |
300
+ | `/settings` | `[key] [value]` | View or modify runtime configuration settings. |
301
+ | `/clear` | — | Clear current conversation history and start a fresh turn. |
302
+ | `/quit` | — | Exit term2 session. |
303
+
304
+ ### Keyboard Shortcuts
305
+
306
+ | Shortcut | Context | Action |
307
+ | :--- | :--- | :--- |
308
+ | `Ctrl + O` | Input Box | Open interactive model selection menu. |
309
+ | `Ctrl + T` | Input Box | Open reasoning effort selection menu. |
310
+ | `Ctrl + G` | Global | Open Background Task Manager (inspect/pause/stop tasks). |
311
+ | `Shift + Tab` | Global | Cycle Operating Modes. |
312
+ | `!` prefix | Input Box | Execute the following command directly in the shell; the red `!` prompt remains active until the command completes. |
313
+ | `Alt + Enter` / `Esc + Enter` | Input Box | Queue input while a turn is executing. |
314
+ | `Ctrl + R` | Model Menu | Refresh provider model catalog from API. |
315
+ | `Ctrl + D` | Settings Menu | Reset highlighted setting to its default value. |
316
+ | `Escape` | Input Box | Clear input buffer (when typing). |
317
+ | `Double Escape` | Active Turn | Safely interrupt in-flight generation or tool execution. |
318
+ | `y` / `n` | Approval Prompt | Single-key approve or reject for tool execution. |
319
+ | `Ctrl + C` | Global | Force immediate graceful exit. |
320
+
321
+ ---
285
322
 
286
- ```json
287
- {
288
- "providers": [
289
- { "name": "llama.cpp", "type": "llama.cpp", "baseUrl": "http://127.0.0.1:8080/v1" }
290
- ],
291
- "agent": { "provider": "llama.cpp", "model": "qwen3.6-35b-a3b" }
292
- }
293
- ```
323
+ ## Configuration
294
324
 
295
- Supported provider types: `openai` (default), `openai-compatible`, `anthropic`, `google`, `opencode`, `llama.cpp`. Custom providers with `openai-compatible` type work with any OpenAI-compatible endpoint. Set the appropriate API key environment variable for each provider (e.g. `ANTHROPIC_API_KEY`, `GOOGLE_GENERATIVE_AI_API_KEY`).
325
+ Settings are persisted across sessions in `settings.json`:
326
+ - **macOS**: `~/Library/Logs/term2-nodejs/settings.json`
327
+ - **Linux**: `~/.local/state/term2-nodejs/settings.json` *(or `$XDG_STATE_HOME/term2-nodejs/settings.json`)*
328
+ - **Windows**: `%LOCALAPPDATA%\term2-nodejs\Log\settings.json`
296
329
 
297
- ### General Settings
330
+ ### Configuration Example
298
331
 
299
332
  ```json
300
333
  {
301
334
  "agent": {
302
- "model": "gpt-5.4",
303
335
  "provider": "openai",
304
- "reasoningEffort": "default",
305
- "temperature": 1,
336
+ "model": "gpt-5.4",
337
+ "reasoningEffort": "medium",
306
338
  "smartModel": "gpt-5.5",
307
- "balancedModel": "gpt-5.3-codex",
339
+ "smartProvider": "openai",
340
+ "balancedModel": "claude-sonnet-4.6",
341
+ "balancedProvider": "openrouter",
308
342
  "cheapModel": "gpt-5.4-mini",
309
- "choreModel": "gpt-5.4-mini"
343
+ "choreModel": "gpt-5.4-mini",
344
+ "temperature": 0.7,
345
+ "maxTurns": 100
310
346
  },
311
347
  "shell": {
348
+ "autoApproveMode": "auto",
312
349
  "timeout": 120000,
313
- "autoApproveMode": "off",
314
- "maxParallelToolCalls": 5
350
+ "maxParallelToolCalls": 3
351
+ },
352
+ "sandbox": {
353
+ "readPolicy": "standard"
354
+ },
355
+ "webSearch": {
356
+ "provider": "tavily"
315
357
  },
316
- "webSearch": { "provider": "tavily" },
317
- "app": { "searchViaShell": "auto" }
358
+ "providers": [
359
+ {
360
+ "name": "Local Ollama",
361
+ "type": "openai-compatible",
362
+ "baseUrl": "http://127.0.0.1:11434/v1"
363
+ },
364
+ {
365
+ "name": "Local llama.cpp",
366
+ "type": "llama.cpp",
367
+ "baseUrl": "http://127.0.0.1:8080/v1"
368
+ }
369
+ ]
318
370
  }
319
371
  ```
320
372
 
321
- See the full schema in `settings.json` for all available options (shell output limits, app mode toggles, concise display mode, etc.).
322
-
323
-
324
- ## Supported Models
325
-
326
- - **OpenAI** (default): `gpt-5.5`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.3-codex`, `gpt-5.2`, `gpt-5.1`
327
- - **OpenRouter**: Claude, Gemini, DeepSeek, and hundreds more — use `-m model-name`
328
- - **Local/Self-hosted**: Any OpenAI-compatible API (Ollama, LM Studio, vLLM, Groq, etc.)
329
-
330
- You can reorder provider priority with the `PROVIDER_ORDER` setting in `settings.json`.
331
-
332
- ## Subagents
373
+ ---
333
374
 
334
- Delegate tasks to specialized subagents to prevent context bloat. Available roles: **Explorer** (codebase scanning), **Worker** (modifications & tests), **Researcher** (web search & docs), **Mentor** (strategic guidance). Ancillary workloads use four configurable tiers: mentor uses `smart`, worker and researcher use `balanced`, explorer and librarian use `cheap`, and approval/edit-healing tasks use `chore`. Each tier can set a matching provider, such as `agent.smartProvider`; subagent tiers can also set reasoning effort with `agent.smartReasoningEffort`, `agent.balancedReasoningEffort`, or `agent.cheapReasoningEffort`. Unset values inherit the main agent settings.
375
+ ## Development and Testing
335
376
 
336
- Legacy per-role, mentor, auto-approval, and edit-healing model settings remain readable for compatibility but are hidden from the interactive settings menu. New configuration should use the tier settings.
337
-
338
- Subagents can also use the `ask_user` tool to ask you structured multi-choice questions during execution. Low-risk (YELLOW) shell commands issued by subagents are auto-approved to reduce interruptions.
339
-
340
- ## Conversation Resumption & Persistence
341
-
342
- Conversations are auto-saved on exit. Resume with:
377
+ To set up the development environment from source:
343
378
 
344
379
  ```bash
345
- term2 --resume # resume last session
346
- term2 --resume <session-uuid> # resume specific session
347
- term2 --resume ls # list saved sessions with metadata
348
- ```
349
-
350
-
351
-
352
- ## Development
353
-
354
- Want to contribute or run from source?
355
-
356
- ```bash
357
- # Clone the repository
380
+ # 1. Clone repository
358
381
  git clone https://github.com/qduc/term2.git
359
382
  cd term2
360
383
 
361
- # Install dependencies
362
- npm install
384
+ # 2. Install dependencies (requires pnpm >= 11)
385
+ pnpm install
363
386
 
364
- # Run in development mode
365
- npm run dev
387
+ # 3. Start TypeScript compiler in watch mode
388
+ pnpm dev
366
389
 
367
- # Run tests
368
- npm test
390
+ # 4. Run test suites
391
+ pnpm test # Run Vitest unit tests
392
+ pnpm test:lane # Run deterministic fast-lane tests
393
+ pnpm test:provider-black-box # Run provider black-box wire tests
394
+ pnpm typecheck # Run strict type checking
395
+ pnpm lint # Run ESLint and Prettier checks
369
396
 
370
- # Build
371
- npm run build
397
+ # 5. Build for distribution
398
+ pnpm build
372
399
  ```
373
400
 
374
- ## Troubleshooting
375
-
376
- | Issue | Fix |
377
- | --- | --- |
378
- | `OPENAI_API_KEY not set` | `export OPENAI_API_KEY="sk-..."` |
379
- | `command not found: term2` | Restart terminal or `source ~/.zshrc` |
380
- | Permission denied during install | `sudo npm install --global @qduc/term2` or [fix npm perms](https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally) |
381
- | SSH connection failed | Start agent (`eval "$(ssh-agent -s)"`), add key (`ssh-add`), verify with `ssh-add -l` |
382
- | `remote-dir is required` | Add `--remote-dir /path` or use `--lite` (auto-detects) |
383
-
384
- ## Tips
385
-
386
- - Choose the right mode: **lite** for terminal work, **standard** for codebase work, **mentor** for complex problems
387
- - Paste images directly into the terminal for vision-model analysis
388
- - Press `Ctrl+C` to exit, arrow keys to navigate history
389
- - Use `/auto-approve auto` to reduce prompt fatigue during long sessions
390
- - System notifications alert you when the agent needs approval or finishes a task
391
- - Sandbox protects sensitive files — configure `sandbox.readPolicy` in settings for stricter access control
392
-
393
- ## Contributing
394
-
395
- Contributions are welcome! Please feel free to submit a Pull Request or open an Issue on [GitHub](https://github.com/qduc/term2).
401
+ ---
396
402
 
397
403
  ## License
398
404
 
399
- MIT License - see [LICENSE](LICENSE) file for details
405
+ This project is licensed under the [MIT License](LICENSE).
400
406
 
401
- ## Acknowledgments
407
+ ---
402
408
 
403
- Built with:
409
+ ## Acknowledgments
404
410
 
405
- - [OpenAI Agents SDK](https://github.com/openai/openai-agents-js)
406
- - [Ink](https://github.com/vadimdemedes/ink) - React for CLI
407
- - [TypeScript](https://www.typescriptlang.org/)
408
- - [ssh2](https://github.com/mscdex/ssh2) - SSH client for Node.js
411
+ term2 is built on open-source libraries:
412
+ - [Ink](https://github.com/vadimdemedes/ink) — React for interactive command-line apps
413
+ - [Vercel AI SDK](https://github.com/vercel/ai) — Multi-provider AI streaming primitives
414
+ - [OpenAI Node SDK](https://github.com/openai/openai-node) — OpenAI API transport
415
+ - [ssh2](https://github.com/mscdex/ssh2) — SSH2 client for remote server execution
416
+ - [Zod](https://github.com/colinhacks/zod) — TypeScript-first schema validation