@roackb2/heddle 0.0.2

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 (370) hide show
  1. package/README.md +273 -0
  2. package/dist/examples/conversation.d.ts +2 -0
  3. package/dist/examples/conversation.d.ts.map +1 -0
  4. package/dist/examples/conversation.js +3 -0
  5. package/dist/examples/conversation.js.map +1 -0
  6. package/dist/examples/repo-investigator.d.ts +2 -0
  7. package/dist/examples/repo-investigator.d.ts.map +1 -0
  8. package/dist/examples/repo-investigator.js +57 -0
  9. package/dist/examples/repo-investigator.js.map +1 -0
  10. package/dist/src/__tests__/chat-activity-format.test.d.ts +2 -0
  11. package/dist/src/__tests__/chat-activity-format.test.d.ts.map +1 -0
  12. package/dist/src/__tests__/chat-activity-format.test.js +41 -0
  13. package/dist/src/__tests__/chat-activity-format.test.js.map +1 -0
  14. package/dist/src/__tests__/chat-compaction.test.d.ts +2 -0
  15. package/dist/src/__tests__/chat-compaction.test.d.ts.map +1 -0
  16. package/dist/src/__tests__/chat-compaction.test.js +24 -0
  17. package/dist/src/__tests__/chat-compaction.test.js.map +1 -0
  18. package/dist/src/__tests__/chat-format.test.d.ts +2 -0
  19. package/dist/src/__tests__/chat-format.test.d.ts.map +1 -0
  20. package/dist/src/__tests__/chat-format.test.js +124 -0
  21. package/dist/src/__tests__/chat-format.test.js.map +1 -0
  22. package/dist/src/__tests__/chat-runtime.test.d.ts +2 -0
  23. package/dist/src/__tests__/chat-runtime.test.d.ts.map +1 -0
  24. package/dist/src/__tests__/chat-runtime.test.js +39 -0
  25. package/dist/src/__tests__/chat-runtime.test.js.map +1 -0
  26. package/dist/src/__tests__/core-utils.test.d.ts +2 -0
  27. package/dist/src/__tests__/core-utils.test.d.ts.map +1 -0
  28. package/dist/src/__tests__/core-utils.test.js +87 -0
  29. package/dist/src/__tests__/core-utils.test.js.map +1 -0
  30. package/dist/src/__tests__/llm-factory.test.d.ts +2 -0
  31. package/dist/src/__tests__/llm-factory.test.d.ts.map +1 -0
  32. package/dist/src/__tests__/llm-factory.test.js +45 -0
  33. package/dist/src/__tests__/llm-factory.test.js.map +1 -0
  34. package/dist/src/__tests__/local-commands.test.d.ts +2 -0
  35. package/dist/src/__tests__/local-commands.test.d.ts.map +1 -0
  36. package/dist/src/__tests__/local-commands.test.js +163 -0
  37. package/dist/src/__tests__/local-commands.test.js.map +1 -0
  38. package/dist/src/__tests__/project-approval-rules.test.d.ts +2 -0
  39. package/dist/src/__tests__/project-approval-rules.test.d.ts.map +1 -0
  40. package/dist/src/__tests__/project-approval-rules.test.js +135 -0
  41. package/dist/src/__tests__/project-approval-rules.test.js.map +1 -0
  42. package/dist/src/__tests__/prompts.test.d.ts +2 -0
  43. package/dist/src/__tests__/prompts.test.d.ts.map +1 -0
  44. package/dist/src/__tests__/prompts.test.js +43 -0
  45. package/dist/src/__tests__/prompts.test.js.map +1 -0
  46. package/dist/src/__tests__/run-agent.test.d.ts +2 -0
  47. package/dist/src/__tests__/run-agent.test.d.ts.map +1 -0
  48. package/dist/src/__tests__/run-agent.test.js +1276 -0
  49. package/dist/src/__tests__/run-agent.test.js.map +1 -0
  50. package/dist/src/__tests__/run-shell.command.test.d.ts +2 -0
  51. package/dist/src/__tests__/run-shell.command.test.d.ts.map +1 -0
  52. package/dist/src/__tests__/run-shell.command.test.js +188 -0
  53. package/dist/src/__tests__/run-shell.command.test.js.map +1 -0
  54. package/dist/src/__tests__/smoke.test.d.ts +2 -0
  55. package/dist/src/__tests__/smoke.test.d.ts.map +1 -0
  56. package/dist/src/__tests__/smoke.test.js +314 -0
  57. package/dist/src/__tests__/smoke.test.js.map +1 -0
  58. package/dist/src/__tests__/tools.test.d.ts +2 -0
  59. package/dist/src/__tests__/tools.test.d.ts.map +1 -0
  60. package/dist/src/__tests__/tools.test.js +557 -0
  61. package/dist/src/__tests__/tools.test.js.map +1 -0
  62. package/dist/src/__tests__/trace-format.test.d.ts +2 -0
  63. package/dist/src/__tests__/trace-format.test.d.ts.map +1 -0
  64. package/dist/src/__tests__/trace-format.test.js +148 -0
  65. package/dist/src/__tests__/trace-format.test.js.map +1 -0
  66. package/dist/src/cli/ask.d.ts +11 -0
  67. package/dist/src/cli/ask.d.ts.map +1 -0
  68. package/dist/src/cli/ask.js +59 -0
  69. package/dist/src/cli/ask.js.map +1 -0
  70. package/dist/src/cli/chat/App.d.ts +5 -0
  71. package/dist/src/cli/chat/App.d.ts.map +1 -0
  72. package/dist/src/cli/chat/App.js +348 -0
  73. package/dist/src/cli/chat/App.js.map +1 -0
  74. package/dist/src/cli/chat/actions.d.ts +47 -0
  75. package/dist/src/cli/chat/actions.d.ts.map +1 -0
  76. package/dist/src/cli/chat/actions.js +215 -0
  77. package/dist/src/cli/chat/actions.js.map +1 -0
  78. package/dist/src/cli/chat/components/ActivityPanel.d.ts +11 -0
  79. package/dist/src/cli/chat/components/ActivityPanel.d.ts.map +1 -0
  80. package/dist/src/cli/chat/components/ActivityPanel.js +20 -0
  81. package/dist/src/cli/chat/components/ActivityPanel.js.map +1 -0
  82. package/dist/src/cli/chat/components/ApprovalComposer.d.ts +6 -0
  83. package/dist/src/cli/chat/components/ApprovalComposer.d.ts.map +1 -0
  84. package/dist/src/cli/chat/components/ApprovalComposer.js +30 -0
  85. package/dist/src/cli/chat/components/ApprovalComposer.js.map +1 -0
  86. package/dist/src/cli/chat/components/CommandHintPanel.d.ts +5 -0
  87. package/dist/src/cli/chat/components/CommandHintPanel.d.ts.map +1 -0
  88. package/dist/src/cli/chat/components/CommandHintPanel.js +13 -0
  89. package/dist/src/cli/chat/components/CommandHintPanel.js.map +1 -0
  90. package/dist/src/cli/chat/components/ConversationPanel.d.ts +16 -0
  91. package/dist/src/cli/chat/components/ConversationPanel.d.ts.map +1 -0
  92. package/dist/src/cli/chat/components/ConversationPanel.js +218 -0
  93. package/dist/src/cli/chat/components/ConversationPanel.js.map +1 -0
  94. package/dist/src/cli/chat/components/ModelPickerPanel.d.ts +7 -0
  95. package/dist/src/cli/chat/components/ModelPickerPanel.d.ts.map +1 -0
  96. package/dist/src/cli/chat/components/ModelPickerPanel.js +32 -0
  97. package/dist/src/cli/chat/components/ModelPickerPanel.js.map +1 -0
  98. package/dist/src/cli/chat/components/PromptInput.d.ts +29 -0
  99. package/dist/src/cli/chat/components/PromptInput.d.ts.map +1 -0
  100. package/dist/src/cli/chat/components/PromptInput.js +132 -0
  101. package/dist/src/cli/chat/components/PromptInput.js.map +1 -0
  102. package/dist/src/cli/chat/components/RecentTurnsPanel.d.ts +5 -0
  103. package/dist/src/cli/chat/components/RecentTurnsPanel.d.ts.map +1 -0
  104. package/dist/src/cli/chat/components/RecentTurnsPanel.js +10 -0
  105. package/dist/src/cli/chat/components/RecentTurnsPanel.js.map +1 -0
  106. package/dist/src/cli/chat/components/SessionPickerPanel.d.ts +12 -0
  107. package/dist/src/cli/chat/components/SessionPickerPanel.d.ts.map +1 -0
  108. package/dist/src/cli/chat/components/SessionPickerPanel.js +32 -0
  109. package/dist/src/cli/chat/components/SessionPickerPanel.js.map +1 -0
  110. package/dist/src/cli/chat/components/SlashHintPanel.d.ts +8 -0
  111. package/dist/src/cli/chat/components/SlashHintPanel.d.ts.map +1 -0
  112. package/dist/src/cli/chat/components/SlashHintPanel.js +38 -0
  113. package/dist/src/cli/chat/components/SlashHintPanel.js.map +1 -0
  114. package/dist/src/cli/chat/components/index.d.ts +10 -0
  115. package/dist/src/cli/chat/components/index.d.ts.map +1 -0
  116. package/dist/src/cli/chat/components/index.js +10 -0
  117. package/dist/src/cli/chat/components/index.js.map +1 -0
  118. package/dist/src/cli/chat/format.d.ts +23 -0
  119. package/dist/src/cli/chat/format.d.ts.map +1 -0
  120. package/dist/src/cli/chat/format.js +243 -0
  121. package/dist/src/cli/chat/format.js.map +1 -0
  122. package/dist/src/cli/chat/hooks/useAgentRun.d.ts +61 -0
  123. package/dist/src/cli/chat/hooks/useAgentRun.d.ts.map +1 -0
  124. package/dist/src/cli/chat/hooks/useAgentRun.js +463 -0
  125. package/dist/src/cli/chat/hooks/useAgentRun.js.map +1 -0
  126. package/dist/src/cli/chat/hooks/useApprovalFlow.d.ts +31 -0
  127. package/dist/src/cli/chat/hooks/useApprovalFlow.d.ts.map +1 -0
  128. package/dist/src/cli/chat/hooks/useApprovalFlow.js +145 -0
  129. package/dist/src/cli/chat/hooks/useApprovalFlow.js.map +1 -0
  130. package/dist/src/cli/chat/hooks/useChatSessions.d.ts +23 -0
  131. package/dist/src/cli/chat/hooks/useChatSessions.d.ts.map +1 -0
  132. package/dist/src/cli/chat/hooks/useChatSessions.js +124 -0
  133. package/dist/src/cli/chat/hooks/useChatSessions.js.map +1 -0
  134. package/dist/src/cli/chat/hooks/useProjectApprovals.d.ts +8 -0
  135. package/dist/src/cli/chat/hooks/useProjectApprovals.d.ts.map +1 -0
  136. package/dist/src/cli/chat/hooks/useProjectApprovals.js +33 -0
  137. package/dist/src/cli/chat/hooks/useProjectApprovals.js.map +1 -0
  138. package/dist/src/cli/chat/index.d.ts +4 -0
  139. package/dist/src/cli/chat/index.d.ts.map +1 -0
  140. package/dist/src/cli/chat/index.js +9 -0
  141. package/dist/src/cli/chat/index.js.map +1 -0
  142. package/dist/src/cli/chat/local-commands.d.ts +17 -0
  143. package/dist/src/cli/chat/local-commands.d.ts.map +1 -0
  144. package/dist/src/cli/chat/local-commands.js +180 -0
  145. package/dist/src/cli/chat/local-commands.js.map +1 -0
  146. package/dist/src/cli/chat/panels.d.ts +37 -0
  147. package/dist/src/cli/chat/panels.d.ts.map +1 -0
  148. package/dist/src/cli/chat/panels.js +142 -0
  149. package/dist/src/cli/chat/panels.js.map +1 -0
  150. package/dist/src/cli/chat/runtime.d.ts +26 -0
  151. package/dist/src/cli/chat/runtime.d.ts.map +1 -0
  152. package/dist/src/cli/chat/runtime.js +28 -0
  153. package/dist/src/cli/chat/runtime.js.map +1 -0
  154. package/dist/src/cli/chat/state/approval-rules.d.ts +21 -0
  155. package/dist/src/cli/chat/state/approval-rules.d.ts.map +1 -0
  156. package/dist/src/cli/chat/state/approval-rules.js +196 -0
  157. package/dist/src/cli/chat/state/approval-rules.js.map +1 -0
  158. package/dist/src/cli/chat/state/compaction.d.ts +13 -0
  159. package/dist/src/cli/chat/state/compaction.d.ts.map +1 -0
  160. package/dist/src/cli/chat/state/compaction.js +143 -0
  161. package/dist/src/cli/chat/state/compaction.js.map +1 -0
  162. package/dist/src/cli/chat/state/local-commands.d.ts +17 -0
  163. package/dist/src/cli/chat/state/local-commands.d.ts.map +1 -0
  164. package/dist/src/cli/chat/state/local-commands.js +169 -0
  165. package/dist/src/cli/chat/state/local-commands.js.map +1 -0
  166. package/dist/src/cli/chat/state/storage.d.ts +14 -0
  167. package/dist/src/cli/chat/state/storage.d.ts.map +1 -0
  168. package/dist/src/cli/chat/state/storage.js +144 -0
  169. package/dist/src/cli/chat/state/storage.js.map +1 -0
  170. package/dist/src/cli/chat/state/types.d.ts +69 -0
  171. package/dist/src/cli/chat/state/types.d.ts.map +1 -0
  172. package/dist/src/cli/chat/state/types.js +2 -0
  173. package/dist/src/cli/chat/state/types.js.map +1 -0
  174. package/dist/src/cli/chat/storage.d.ts +13 -0
  175. package/dist/src/cli/chat/storage.d.ts.map +1 -0
  176. package/dist/src/cli/chat/storage.js +126 -0
  177. package/dist/src/cli/chat/storage.js.map +1 -0
  178. package/dist/src/cli/chat/submit.d.ts +28 -0
  179. package/dist/src/cli/chat/submit.d.ts.map +1 -0
  180. package/dist/src/cli/chat/submit.js +90 -0
  181. package/dist/src/cli/chat/submit.js.map +1 -0
  182. package/dist/src/cli/chat/types.d.ts +51 -0
  183. package/dist/src/cli/chat/types.d.ts.map +1 -0
  184. package/dist/src/cli/chat/types.js +2 -0
  185. package/dist/src/cli/chat/types.js.map +1 -0
  186. package/dist/src/cli/chat/use-run-state.d.ts +23 -0
  187. package/dist/src/cli/chat/use-run-state.d.ts.map +1 -0
  188. package/dist/src/cli/chat/use-run-state.js +118 -0
  189. package/dist/src/cli/chat/use-run-state.js.map +1 -0
  190. package/dist/src/cli/chat/use-sessions.d.ts +21 -0
  191. package/dist/src/cli/chat/use-sessions.d.ts.map +1 -0
  192. package/dist/src/cli/chat/use-sessions.js +111 -0
  193. package/dist/src/cli/chat/use-sessions.js.map +1 -0
  194. package/dist/src/cli/chat/utils/format.d.ts +41 -0
  195. package/dist/src/cli/chat/utils/format.d.ts.map +1 -0
  196. package/dist/src/cli/chat/utils/format.js +578 -0
  197. package/dist/src/cli/chat/utils/format.js.map +1 -0
  198. package/dist/src/cli/chat/utils/runtime.d.ts +31 -0
  199. package/dist/src/cli/chat/utils/runtime.d.ts.map +1 -0
  200. package/dist/src/cli/chat/utils/runtime.js +56 -0
  201. package/dist/src/cli/chat/utils/runtime.js.map +1 -0
  202. package/dist/src/cli/chat-actions.d.ts +47 -0
  203. package/dist/src/cli/chat-actions.d.ts.map +1 -0
  204. package/dist/src/cli/chat-actions.js +215 -0
  205. package/dist/src/cli/chat-actions.js.map +1 -0
  206. package/dist/src/cli/chat-format.d.ts +23 -0
  207. package/dist/src/cli/chat-format.d.ts.map +1 -0
  208. package/dist/src/cli/chat-format.js +243 -0
  209. package/dist/src/cli/chat-format.js.map +1 -0
  210. package/dist/src/cli/chat-local-commands.d.ts +17 -0
  211. package/dist/src/cli/chat-local-commands.d.ts.map +1 -0
  212. package/dist/src/cli/chat-local-commands.js +180 -0
  213. package/dist/src/cli/chat-local-commands.js.map +1 -0
  214. package/dist/src/cli/chat-panels.d.ts +37 -0
  215. package/dist/src/cli/chat-panels.d.ts.map +1 -0
  216. package/dist/src/cli/chat-panels.js +142 -0
  217. package/dist/src/cli/chat-panels.js.map +1 -0
  218. package/dist/src/cli/chat-runtime.d.ts +26 -0
  219. package/dist/src/cli/chat-runtime.d.ts.map +1 -0
  220. package/dist/src/cli/chat-runtime.js +28 -0
  221. package/dist/src/cli/chat-runtime.js.map +1 -0
  222. package/dist/src/cli/chat-storage.d.ts +13 -0
  223. package/dist/src/cli/chat-storage.d.ts.map +1 -0
  224. package/dist/src/cli/chat-storage.js +126 -0
  225. package/dist/src/cli/chat-storage.js.map +1 -0
  226. package/dist/src/cli/chat-submit.d.ts +28 -0
  227. package/dist/src/cli/chat-submit.d.ts.map +1 -0
  228. package/dist/src/cli/chat-submit.js +90 -0
  229. package/dist/src/cli/chat-submit.js.map +1 -0
  230. package/dist/src/cli/chat-types.d.ts +51 -0
  231. package/dist/src/cli/chat-types.d.ts.map +1 -0
  232. package/dist/src/cli/chat-types.js +2 -0
  233. package/dist/src/cli/chat-types.js.map +1 -0
  234. package/dist/src/cli/chat.d.ts +4 -0
  235. package/dist/src/cli/chat.d.ts.map +1 -0
  236. package/dist/src/cli/chat.js +153 -0
  237. package/dist/src/cli/chat.js.map +1 -0
  238. package/dist/src/cli/main.d.ts +3 -0
  239. package/dist/src/cli/main.d.ts.map +1 -0
  240. package/dist/src/cli/main.js +190 -0
  241. package/dist/src/cli/main.js.map +1 -0
  242. package/dist/src/cli/useChatRunState.d.ts +23 -0
  243. package/dist/src/cli/useChatRunState.d.ts.map +1 -0
  244. package/dist/src/cli/useChatRunState.js +118 -0
  245. package/dist/src/cli/useChatRunState.js.map +1 -0
  246. package/dist/src/cli/useChatSessions.d.ts +21 -0
  247. package/dist/src/cli/useChatSessions.d.ts.map +1 -0
  248. package/dist/src/cli/useChatSessions.js +111 -0
  249. package/dist/src/cli/useChatSessions.js.map +1 -0
  250. package/dist/src/config.d.ts +4 -0
  251. package/dist/src/config.d.ts.map +1 -0
  252. package/dist/src/config.js +7 -0
  253. package/dist/src/config.js.map +1 -0
  254. package/dist/src/index.d.ts +36 -0
  255. package/dist/src/index.d.ts.map +1 -0
  256. package/dist/src/index.js +31 -0
  257. package/dist/src/index.js.map +1 -0
  258. package/dist/src/llm/anthropic.d.ts +7 -0
  259. package/dist/src/llm/anthropic.d.ts.map +1 -0
  260. package/dist/src/llm/anthropic.js +115 -0
  261. package/dist/src/llm/anthropic.js.map +1 -0
  262. package/dist/src/llm/factory.d.ts +10 -0
  263. package/dist/src/llm/factory.d.ts.map +1 -0
  264. package/dist/src/llm/factory.js +53 -0
  265. package/dist/src/llm/factory.js.map +1 -0
  266. package/dist/src/llm/openai-models.d.ts +15 -0
  267. package/dist/src/llm/openai-models.d.ts.map +1 -0
  268. package/dist/src/llm/openai-models.js +97 -0
  269. package/dist/src/llm/openai-models.js.map +1 -0
  270. package/dist/src/llm/openai.d.ts +10 -0
  271. package/dist/src/llm/openai.d.ts.map +1 -0
  272. package/dist/src/llm/openai.js +170 -0
  273. package/dist/src/llm/openai.js.map +1 -0
  274. package/dist/src/llm/types.d.ts +64 -0
  275. package/dist/src/llm/types.d.ts.map +1 -0
  276. package/dist/src/llm/types.js +5 -0
  277. package/dist/src/llm/types.js.map +1 -0
  278. package/dist/src/prompts/system-prompt.d.ts +6 -0
  279. package/dist/src/prompts/system-prompt.d.ts.map +1 -0
  280. package/dist/src/prompts/system-prompt.js +117 -0
  281. package/dist/src/prompts/system-prompt.js.map +1 -0
  282. package/dist/src/run-agent/history.d.ts +3 -0
  283. package/dist/src/run-agent/history.d.ts.map +1 -0
  284. package/dist/src/run-agent/history.js +36 -0
  285. package/dist/src/run-agent/history.js.map +1 -0
  286. package/dist/src/run-agent/mutation-tracking.d.ts +22 -0
  287. package/dist/src/run-agent/mutation-tracking.d.ts.map +1 -0
  288. package/dist/src/run-agent/mutation-tracking.js +116 -0
  289. package/dist/src/run-agent/mutation-tracking.js.map +1 -0
  290. package/dist/src/run-agent/post-mutation.d.ts +23 -0
  291. package/dist/src/run-agent/post-mutation.d.ts.map +1 -0
  292. package/dist/src/run-agent/post-mutation.js +106 -0
  293. package/dist/src/run-agent/post-mutation.js.map +1 -0
  294. package/dist/src/run-agent/progress-reminders.d.ts +13 -0
  295. package/dist/src/run-agent/progress-reminders.d.ts.map +1 -0
  296. package/dist/src/run-agent/progress-reminders.js +65 -0
  297. package/dist/src/run-agent/progress-reminders.js.map +1 -0
  298. package/dist/src/run-agent/tool-dispatch.d.ts +31 -0
  299. package/dist/src/run-agent/tool-dispatch.d.ts.map +1 -0
  300. package/dist/src/run-agent/tool-dispatch.js +114 -0
  301. package/dist/src/run-agent/tool-dispatch.js.map +1 -0
  302. package/dist/src/run-agent/util.d.ts +10 -0
  303. package/dist/src/run-agent/util.d.ts.map +1 -0
  304. package/dist/src/run-agent/util.js +64 -0
  305. package/dist/src/run-agent/util.js.map +1 -0
  306. package/dist/src/run-agent.d.ts +36 -0
  307. package/dist/src/run-agent.d.ts.map +1 -0
  308. package/dist/src/run-agent.js +477 -0
  309. package/dist/src/run-agent.js.map +1 -0
  310. package/dist/src/tools/edit-file.d.ts +10 -0
  311. package/dist/src/tools/edit-file.d.ts.map +1 -0
  312. package/dist/src/tools/edit-file.js +268 -0
  313. package/dist/src/tools/edit-file.js.map +1 -0
  314. package/dist/src/tools/execute-tool.d.ts +8 -0
  315. package/dist/src/tools/execute-tool.d.ts.map +1 -0
  316. package/dist/src/tools/execute-tool.js +31 -0
  317. package/dist/src/tools/execute-tool.js.map +1 -0
  318. package/dist/src/tools/list-files.d.ts +3 -0
  319. package/dist/src/tools/list-files.d.ts.map +1 -0
  320. package/dist/src/tools/list-files.js +49 -0
  321. package/dist/src/tools/list-files.js.map +1 -0
  322. package/dist/src/tools/read-file.d.ts +3 -0
  323. package/dist/src/tools/read-file.d.ts.map +1 -0
  324. package/dist/src/tools/read-file.js +73 -0
  325. package/dist/src/tools/read-file.js.map +1 -0
  326. package/dist/src/tools/registry.d.ts +11 -0
  327. package/dist/src/tools/registry.d.ts.map +1 -0
  328. package/dist/src/tools/registry.js +27 -0
  329. package/dist/src/tools/registry.js.map +1 -0
  330. package/dist/src/tools/report-state.d.ts +3 -0
  331. package/dist/src/tools/report-state.d.ts.map +1 -0
  332. package/dist/src/tools/report-state.js +63 -0
  333. package/dist/src/tools/report-state.js.map +1 -0
  334. package/dist/src/tools/run-shell.d.ts +41 -0
  335. package/dist/src/tools/run-shell.d.ts.map +1 -0
  336. package/dist/src/tools/run-shell.js +407 -0
  337. package/dist/src/tools/run-shell.js.map +1 -0
  338. package/dist/src/tools/search-files.d.ts +8 -0
  339. package/dist/src/tools/search-files.d.ts.map +1 -0
  340. package/dist/src/tools/search-files.js +86 -0
  341. package/dist/src/tools/search-files.js.map +1 -0
  342. package/dist/src/tools/update-plan.d.ts +8 -0
  343. package/dist/src/tools/update-plan.d.ts.map +1 -0
  344. package/dist/src/tools/update-plan.js +85 -0
  345. package/dist/src/tools/update-plan.js.map +1 -0
  346. package/dist/src/trace/format.d.ts +6 -0
  347. package/dist/src/trace/format.d.ts.map +1 -0
  348. package/dist/src/trace/format.js +94 -0
  349. package/dist/src/trace/format.js.map +1 -0
  350. package/dist/src/trace/recorder.d.ts +11 -0
  351. package/dist/src/trace/recorder.d.ts.map +1 -0
  352. package/dist/src/trace/recorder.js +21 -0
  353. package/dist/src/trace/recorder.js.map +1 -0
  354. package/dist/src/types.d.ts +110 -0
  355. package/dist/src/types.d.ts.map +1 -0
  356. package/dist/src/types.js +6 -0
  357. package/dist/src/types.js.map +1 -0
  358. package/dist/src/utils/budget.d.ts +13 -0
  359. package/dist/src/utils/budget.d.ts.map +1 -0
  360. package/dist/src/utils/budget.js +22 -0
  361. package/dist/src/utils/budget.js.map +1 -0
  362. package/dist/src/utils/errors.d.ts +14 -0
  363. package/dist/src/utils/errors.d.ts.map +1 -0
  364. package/dist/src/utils/errors.js +31 -0
  365. package/dist/src/utils/errors.js.map +1 -0
  366. package/dist/src/utils/logger.d.ts +17 -0
  367. package/dist/src/utils/logger.d.ts.map +1 -0
  368. package/dist/src/utils/logger.js +50 -0
  369. package/dist/src/utils/logger.js.map +1 -0
  370. package/package.json +57 -0
@@ -0,0 +1,47 @@
1
+ import type { MutableRefObject } from 'react';
2
+ import type { Logger } from 'pino';
3
+ import type { ChatMessage, LlmAdapter, RunResult, ToolDefinition } from '../../index.js';
4
+ import type { ApprovalChoice, ChatSession, LiveEvent, PendingApproval } from './types.js';
5
+ import type { ChatRuntimeConfig } from './runtime.js';
6
+ type StateSetter<T> = (value: T | ((current: T) => T)) => void;
7
+ type SessionUpdater = (sessionId: string, updater: (session: ChatSession) => ChatSession) => void;
8
+ type ActiveSessionUpdater = (updater: (session: ChatSession) => ChatSession) => void;
9
+ export type ActionState = {
10
+ isRunning: boolean;
11
+ nextLocalId: () => string;
12
+ setError: (value: string | undefined) => void;
13
+ setStatus: (value: string) => void;
14
+ setIsRunning: (value: boolean) => void;
15
+ setInterruptRequested: (value: boolean) => void;
16
+ setLiveEvents: StateSetter<LiveEvent[]>;
17
+ setPendingApproval: (value: PendingApproval | undefined) => void;
18
+ setApprovalChoice: (value: ApprovalChoice) => void;
19
+ interruptRequestedRef: MutableRefObject<boolean>;
20
+ abortControllerRef: MutableRefObject<AbortController | undefined>;
21
+ };
22
+ type ExecuteTurnArgs = {
23
+ prompt: string;
24
+ displayText?: string;
25
+ sessionId: string;
26
+ sessionHistory: ChatMessage[];
27
+ runtime: ChatRuntimeConfig;
28
+ llm: LlmAdapter;
29
+ tools: ToolDefinition[];
30
+ logger: Logger;
31
+ state: ActionState;
32
+ updateSessionById: SessionUpdater;
33
+ maybeAutoNameSession: (sessionId: string, prompt: string, responseText: string) => void;
34
+ };
35
+ type ExecuteDirectShellArgs = {
36
+ rawCommand: string;
37
+ activeSessionId: string;
38
+ runtime: ChatRuntimeConfig;
39
+ tools: ToolDefinition[];
40
+ state: ActionState;
41
+ updateActiveSession: ActiveSessionUpdater;
42
+ maybeAutoNameSession: (sessionId: string, prompt: string, responseText: string) => void;
43
+ };
44
+ export declare function executeAgentTurn(args: ExecuteTurnArgs): Promise<RunResult | undefined>;
45
+ export declare function executeDirectShellCommand(args: ExecuteDirectShellArgs): Promise<void>;
46
+ export {};
47
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../src/cli/chat/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
1
+ import { runAgent } from '../../index.js';
2
+ import { DEFAULT_INSPECT_RULES, DEFAULT_MUTATE_RULES, runShellCommand } from '../../tools/run-shell.js';
3
+ import { appendDirectShellHistory, buildConversationMessages, countAssistantSteps, formatDirectShellResponse, shouldFallbackToMutate, summarizeTrace, summarizeToolCall, toLiveEvent, } from './format.js';
4
+ import { saveTrace } from './runtime.js';
5
+ export async function executeAgentTurn(args) {
6
+ const { prompt, displayText, sessionId, sessionHistory, runtime, llm, tools, logger, state, updateSessionById, maybeAutoNameSession, } = args;
7
+ if (!prompt || state.isRunning) {
8
+ return undefined;
9
+ }
10
+ if (!runtime.apiKey) {
11
+ state.setError('Missing OpenAI API key');
12
+ state.setStatus('Error');
13
+ return undefined;
14
+ }
15
+ state.setError(undefined);
16
+ state.setIsRunning(true);
17
+ state.setStatus('Running');
18
+ state.interruptRequestedRef.current = false;
19
+ state.setInterruptRequested(false);
20
+ state.abortControllerRef.current = new AbortController();
21
+ state.setLiveEvents([]);
22
+ updateSessionById(sessionId, (session) => ({ ...session, lastContinuePrompt: prompt }));
23
+ if (displayText) {
24
+ updateSessionById(sessionId, (session) => ({
25
+ ...session,
26
+ messages: [...session.messages, { id: state.nextLocalId(), role: 'user', text: displayText }],
27
+ }));
28
+ }
29
+ try {
30
+ const result = await runAgent({
31
+ goal: prompt,
32
+ llm,
33
+ tools,
34
+ maxSteps: runtime.maxSteps,
35
+ logger,
36
+ history: sessionHistory,
37
+ systemContext: runtime.systemContext,
38
+ onEvent: (event) => {
39
+ const next = toLiveEvent(event);
40
+ if (!next) {
41
+ return;
42
+ }
43
+ state.setLiveEvents((current) => {
44
+ const previous = current[current.length - 1];
45
+ if (previous?.text === next) {
46
+ return current;
47
+ }
48
+ return [...current, { id: state.nextLocalId(), text: next }].slice(-8);
49
+ });
50
+ },
51
+ approveToolCall: (call, tool) => new Promise((resolve) => {
52
+ state.setPendingApproval({ call, tool, resolve });
53
+ }),
54
+ shouldStop: () => state.interruptRequestedRef.current,
55
+ abortSignal: state.abortControllerRef.current.signal,
56
+ });
57
+ updateSessionById(sessionId, (sessionToUpdate) => ({
58
+ ...sessionToUpdate,
59
+ history: result.transcript,
60
+ messages: buildConversationMessages(result.transcript),
61
+ }));
62
+ const traceFile = saveTrace(runtime.traceDir, result.trace);
63
+ const nextTurn = {
64
+ id: state.nextLocalId(),
65
+ prompt,
66
+ outcome: result.outcome,
67
+ summary: result.summary,
68
+ steps: countAssistantSteps(result.trace),
69
+ traceFile,
70
+ events: summarizeTrace(result.trace),
71
+ };
72
+ updateSessionById(sessionId, (sessionToUpdate) => ({
73
+ ...sessionToUpdate,
74
+ turns: [...sessionToUpdate.turns, nextTurn].slice(-8),
75
+ }));
76
+ const assistantText = buildConversationMessages(result.transcript).filter((message) => message.role === 'assistant').at(-1)?.text ??
77
+ result.summary;
78
+ maybeAutoNameSession(sessionId, prompt, assistantText);
79
+ if (result.outcome === 'error') {
80
+ state.setError(result.summary);
81
+ }
82
+ state.setStatus(result.outcome === 'done' ? 'Idle' : `Stopped: ${result.outcome}`);
83
+ return result;
84
+ }
85
+ catch (runError) {
86
+ const message = runError instanceof Error ? runError.message : String(runError);
87
+ state.setError(message);
88
+ state.setStatus('Error');
89
+ updateSessionById(sessionId, (sessionToUpdate) => ({
90
+ ...sessionToUpdate,
91
+ messages: [
92
+ ...sessionToUpdate.messages,
93
+ { id: state.nextLocalId(), role: 'assistant', text: `Run failed before a final answer: ${message}` },
94
+ ],
95
+ }));
96
+ return undefined;
97
+ }
98
+ finally {
99
+ state.setIsRunning(false);
100
+ state.interruptRequestedRef.current = false;
101
+ state.setInterruptRequested(false);
102
+ state.abortControllerRef.current = undefined;
103
+ }
104
+ }
105
+ export async function executeDirectShellCommand(args) {
106
+ const { rawCommand, activeSessionId, runtime, tools, state, updateActiveSession, maybeAutoNameSession, } = args;
107
+ const command = rawCommand.trim();
108
+ if (!command || state.isRunning) {
109
+ return;
110
+ }
111
+ const shellDisplay = `!${command}`;
112
+ state.setError(undefined);
113
+ state.setIsRunning(true);
114
+ state.setStatus('Running');
115
+ state.interruptRequestedRef.current = false;
116
+ state.setInterruptRequested(false);
117
+ state.abortControllerRef.current = new AbortController();
118
+ state.setLiveEvents([{ id: state.nextLocalId(), text: `running direct shell (${command})` }]);
119
+ updateActiveSession((session) => ({
120
+ ...session,
121
+ messages: [...session.messages, { id: state.nextLocalId(), role: 'user', text: shellDisplay }],
122
+ lastContinuePrompt: undefined,
123
+ }));
124
+ try {
125
+ const inspectCall = {
126
+ id: `direct-shell-${Date.now()}-inspect`,
127
+ tool: 'run_shell_inspect',
128
+ input: { command },
129
+ };
130
+ const inspectResult = await runShellCommand(inspectCall.input, {
131
+ toolName: inspectCall.tool,
132
+ rules: DEFAULT_INSPECT_RULES,
133
+ allowUnknown: false,
134
+ }, state.abortControllerRef.current.signal);
135
+ let chosenCall = inspectCall;
136
+ let chosenResult = inspectResult;
137
+ if (shouldFallbackToMutate(inspectResult.error)) {
138
+ const mutateCall = {
139
+ id: `direct-shell-${Date.now()}-mutate`,
140
+ tool: 'run_shell_mutate',
141
+ input: { command },
142
+ };
143
+ if (runtime.directShellApproval === 'always') {
144
+ const directShellTool = tools.find((tool) => tool.name === 'run_shell_mutate');
145
+ if (!directShellTool) {
146
+ throw new Error('run_shell_mutate tool is not registered');
147
+ }
148
+ const approval = await new Promise((resolve) => {
149
+ state.setPendingApproval({ call: mutateCall, tool: directShellTool, resolve });
150
+ });
151
+ if (!approval.approved) {
152
+ const denialMessage = approval.reason ? `Command denied.\n${approval.reason}` : 'Command denied.';
153
+ updateActiveSession((session) => ({
154
+ ...session,
155
+ messages: [...session.messages, { id: state.nextLocalId(), role: 'assistant', text: denialMessage }],
156
+ }));
157
+ state.setLiveEvents([
158
+ {
159
+ id: state.nextLocalId(),
160
+ text: `approval denied for ${summarizeToolCall(mutateCall.tool, mutateCall.input)}`,
161
+ },
162
+ ]);
163
+ state.setStatus('Idle');
164
+ return;
165
+ }
166
+ }
167
+ chosenCall = mutateCall;
168
+ chosenResult = await runShellCommand(mutateCall.input, {
169
+ toolName: mutateCall.tool,
170
+ rules: DEFAULT_MUTATE_RULES,
171
+ allowUnknown: true,
172
+ }, state.abortControllerRef.current.signal);
173
+ }
174
+ const responseText = formatDirectShellResponse(chosenCall.tool, command, chosenResult);
175
+ updateActiveSession((session) => ({
176
+ ...session,
177
+ messages: [...session.messages, { id: state.nextLocalId(), role: 'assistant', text: responseText }],
178
+ history: appendDirectShellHistory(session.history, shellDisplay, chosenCall.tool, chosenResult),
179
+ }));
180
+ state.setLiveEvents([
181
+ {
182
+ id: state.nextLocalId(),
183
+ text: chosenResult.ok ?
184
+ `${summarizeToolCall(chosenCall.tool, chosenCall.input)} completed`
185
+ : `${summarizeToolCall(chosenCall.tool, chosenCall.input)} failed`,
186
+ },
187
+ ]);
188
+ state.setStatus(chosenResult.ok ? 'Idle' : 'Stopped: error');
189
+ if (!chosenResult.ok && chosenResult.error) {
190
+ state.setError(chosenResult.error);
191
+ }
192
+ maybeAutoNameSession(activeSessionId, shellDisplay, responseText);
193
+ }
194
+ catch (shellError) {
195
+ const message = shellError instanceof Error ? shellError.message : String(shellError);
196
+ state.setError(message);
197
+ state.setStatus('Error');
198
+ updateActiveSession((session) => ({
199
+ ...session,
200
+ messages: [
201
+ ...session.messages,
202
+ { id: state.nextLocalId(), role: 'assistant', text: `Direct shell execution failed:\n${message}` },
203
+ ],
204
+ }));
205
+ }
206
+ finally {
207
+ state.setPendingApproval(undefined);
208
+ state.setApprovalChoice('approve');
209
+ state.interruptRequestedRef.current = false;
210
+ state.setInterruptRequested(false);
211
+ state.abortControllerRef.current = undefined;
212
+ state.setIsRunning(false);
213
+ }
214
+ }
215
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../../src/cli/chat/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { LiveEvent, PendingApproval } from '../state/types.js';
2
+ export declare function ActivityPanel({ isRunning, workingFrame, elapsedSeconds, liveEvents, pendingApproval, interruptRequested, error, }: {
3
+ isRunning: boolean;
4
+ workingFrame: number;
5
+ elapsedSeconds: number;
6
+ liveEvents: LiveEvent[];
7
+ pendingApproval?: PendingApproval;
8
+ interruptRequested: boolean;
9
+ error?: string;
10
+ }): import("react/jsx-runtime").JSX.Element | null;
11
+ //# sourceMappingURL=ActivityPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityPanel.d.ts","sourceRoot":"","sources":["../../../../../src/cli/chat/components/ActivityPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpE,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,YAAY,EACZ,cAAc,EACd,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,KAAK,GACN,EAAE;IACD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,kDAkCA"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { currentActivityText, truncate } from '../utils/format.js';
4
+ export function ActivityPanel({ isRunning, workingFrame, elapsedSeconds, liveEvents, pendingApproval, interruptRequested, error, }) {
5
+ if (!isRunning && !pendingApproval && !interruptRequested && !error) {
6
+ return null;
7
+ }
8
+ const visibleEvents = isRunning ? liveEvents.slice(-3) : liveEvents.slice(-1);
9
+ const activityText = currentActivityText(liveEvents, isRunning, elapsedSeconds, pendingApproval, interruptRequested);
10
+ const dedupedEvents = visibleEvents.filter((event, index, events) => {
11
+ if (event.text === activityText) {
12
+ return false;
13
+ }
14
+ return events.findIndex((candidate) => candidate.text === event.text) === index;
15
+ });
16
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Current Activity" }), _jsx(Text, { color: pendingApproval ? 'yellow' : interruptRequested ? 'yellow' : isRunning ? 'yellow' : 'gray', children: activityText }), dedupedEvents.map((event) => (_jsx(Box, { children: _jsx(Text, { dimColor: true, children: truncate(event.text, 160) }) }, event.id))), error ?
17
+ _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: "red", children: "Last error" }), _jsx(Text, { color: "red", children: error })] })
18
+ : null] }));
19
+ }
20
+ //# sourceMappingURL=ActivityPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityPanel.js","sourceRoot":"","sources":["../../../../../src/cli/chat/components/ActivityPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnE,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,EACT,YAAY,EACZ,cAAc,EACd,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,KAAK,GASN;IACC,IAAI,CAAC,SAAS,IAAI,CAAC,eAAe,IAAI,CAAC,kBAAkB,IAAI,CAAC,KAAK,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC;IACrH,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAClE,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,uCAAwB,EAClC,KAAC,IAAI,IAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,YACpG,YAAY,GACR,EACN,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC5B,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,QAAQ,kBAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAQ,IADzC,KAAK,CAAC,EAAE,CAEZ,CACP,CAAC,EACD,KAAK,CAAC,CAAC;gBACN,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,2BAAkB,EACnC,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,GAAQ,IAC5B;gBACR,CAAC,CAAC,IAAI,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ApprovalChoice, PendingApproval } from '../state/types.js';
2
+ export declare function ApprovalComposer({ pendingApproval, approvalChoice, }: {
3
+ pendingApproval: PendingApproval;
4
+ approvalChoice: ApprovalChoice;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=ApprovalComposer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApprovalComposer.d.ts","sourceRoot":"","sources":["../../../../../src/cli/chat/components/ApprovalComposer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzE,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,cAAc,GACf,EAAE;IACD,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;CAChC,2CAmDA"}
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { formatApprovalHint, summarizePendingApproval } from '../utils/format.js';
4
+ export function ApprovalComposer({ pendingApproval, approvalChoice, }) {
5
+ const summary = summarizePendingApproval(pendingApproval);
6
+ return (_jsxs(_Fragment, { children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: "yellow", children: summary.title }), summary.command ?
7
+ _jsx(Box, { borderStyle: "round", borderColor: "gray", paddingX: 1, marginTop: 1, children: _jsx(Text, { color: "cyan", children: summary.command }) })
8
+ : null, _jsx(Text, { dimColor: true, children: [summary.scope, summary.capability, summary.risk ? `${summary.risk} risk` : undefined].filter(Boolean).join(' • ') }), _jsxs(Text, { children: ["Why: ", summary.why] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, children: "Effects" }), summary.effects.map((effect) => (_jsxs(Text, { dimColor: true, children: ["\u2022 ", effect] }, effect)))] })] }), pendingApproval.editPreview ?
9
+ _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", marginTop: 1, marginBottom: 1, paddingX: 1, children: [_jsx(Text, { bold: true, children: "Diff Preview" }), pendingApproval.editPreview.diff.split('\n').map((line, index) => (_jsx(Text, { color: diffLineColor(line), children: line }, `${pendingApproval.editPreview?.path}-${index}`))), pendingApproval.editPreview.truncated ? _jsx(Text, { dimColor: true, children: "Preview truncated" }) : null] })
10
+ : null, _jsx(Text, { dimColor: true, children: formatApprovalHint(pendingApproval) }), _jsx(ApprovalSelector, { choice: approvalChoice }), _jsxs(Box, { justifyContent: "space-between", children: [_jsx(Text, { dimColor: true, children: "Use \u2190/\u2192 then Enter" }), _jsx(Text, { dimColor: true, children: "Approval stays in the conversation flow" })] })] }));
11
+ }
12
+ function ApprovalSelector({ choice }) {
13
+ return (_jsxs(Box, { marginBottom: 0, flexWrap: "wrap", children: [_jsx(Text, { color: choice === 'approve' ? 'green' : 'gray', children: choice === 'approve' ? '◉ Approve once' : '○ Approve once' }), _jsx(Text, { dimColor: true, children: " " }), _jsx(Text, { color: choice === 'allow_project' ? 'cyan' : 'gray', children: choice === 'allow_project' ? '◉ Remember for project' : '○ Remember for project' }), _jsx(Text, { dimColor: true, children: " " }), _jsx(Text, { color: choice === 'deny' ? 'red' : 'gray', children: choice === 'deny' ? '◉ Deny' : '○ Deny' })] }));
14
+ }
15
+ function diffLineColor(line) {
16
+ if (line.startsWith('+++') || line.startsWith('---')) {
17
+ return 'gray';
18
+ }
19
+ if (line.startsWith('@@')) {
20
+ return 'yellow';
21
+ }
22
+ if (line.startsWith('+')) {
23
+ return 'green';
24
+ }
25
+ if (line.startsWith('-')) {
26
+ return 'red';
27
+ }
28
+ return undefined;
29
+ }
30
+ //# sourceMappingURL=ApprovalComposer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApprovalComposer.js","sourceRoot":"","sources":["../../../../../src/cli/chat/components/ApprovalComposer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function CommandHintPanel({ draft }: {
2
+ draft: string;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ export declare function shouldShowCommandHint(draft: string): boolean;
5
+ //# sourceMappingURL=CommandHintPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandHintPanel.d.ts","sourceRoot":"","sources":["../../../../../src/cli/chat/components/CommandHintPanel.tsx"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,2CAY5D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5D"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { truncate } from '../utils/format.js';
4
+ export function CommandHintPanel({ draft }) {
5
+ const command = draft.trim().slice(1).trim();
6
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { dimColor: true, children: "Direct shell" }), _jsx(Text, { dimColor: true, children: command ?
7
+ `Run ${truncate(command, 100)} directly in chat. Read-oriented commands stay in inspect mode; other commands fall back to approval-gated execution.`
8
+ : 'Start with ! to run a shell command directly in chat.' })] }));
9
+ }
10
+ export function shouldShowCommandHint(draft) {
11
+ return draft.trimStart().startsWith('!');
12
+ }
13
+ //# sourceMappingURL=CommandHintPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandHintPanel.js","sourceRoot":"","sources":["../../../../../src/cli/chat/components/CommandHintPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,UAAU,gBAAgB,CAAC,EAAE,KAAK,EAAqB;IAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,QAAQ,mCAAoB,EAClC,KAAC,IAAI,IAAC,QAAQ,kBACX,OAAO,CAAC,CAAC;oBACR,OAAO,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,uHAAuH;oBACtJ,CAAC,CAAC,uDAAuD,GACpD,IACH,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { ConversationLine } from '../state/types.js';
2
+ import type { PlanItem } from '../../../tools/update-plan.js';
3
+ export declare function ConversationPanel({ messages, activeTurn, }: {
4
+ messages: ConversationLine[];
5
+ activeTurn?: {
6
+ title: string;
7
+ lines: string[];
8
+ error?: string;
9
+ currentAssistantText?: string;
10
+ currentPlan?: {
11
+ explanation?: string;
12
+ items: PlanItem[];
13
+ };
14
+ };
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=ConversationPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationPanel.d.ts","sourceRoot":"","sources":["../../../../../src/cli/chat/components/ConversationPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,UAAU,GACX,EAAE;IACD,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,WAAW,CAAC,EAAE;YACZ,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,KAAK,EAAE,QAAQ,EAAE,CAAC;SACnB,CAAC;KACH,CAAC;CACH,2CA8BA"}