@qduc/term2 0.1.2 → 0.1.4

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 (216) hide show
  1. package/dist/agent.d.ts.map +1 -1
  2. package/dist/agent.js +5 -0
  3. package/dist/agent.js.map +1 -1
  4. package/dist/app.d.ts.map +1 -1
  5. package/dist/app.js +3 -1
  6. package/dist/app.js.map +1 -1
  7. package/dist/cli.js +2 -1
  8. package/dist/cli.js.map +1 -1
  9. package/dist/components/ApprovalPrompt.d.ts.map +1 -1
  10. package/dist/components/ApprovalPrompt.js +20 -0
  11. package/dist/components/ApprovalPrompt.js.map +1 -1
  12. package/dist/components/ChatMessage.js +1 -1
  13. package/dist/components/ChatMessage.js.map +1 -1
  14. package/dist/components/InputBox.d.ts.map +1 -1
  15. package/dist/components/InputBox.js +3 -8
  16. package/dist/components/InputBox.js.map +1 -1
  17. package/dist/components/MarkdownRenderer.js +1 -1
  18. package/dist/components/MarkdownRenderer.js.map +1 -1
  19. package/dist/components/ModelSelectionMenu.error-tabs.test.d.ts +2 -0
  20. package/dist/components/ModelSelectionMenu.error-tabs.test.d.ts.map +1 -0
  21. package/dist/components/ModelSelectionMenu.error-tabs.test.js +18 -0
  22. package/dist/components/ModelSelectionMenu.error-tabs.test.js.map +1 -0
  23. package/dist/components/SettingsSelectionMenu.js +1 -1
  24. package/dist/components/SettingsSelectionMenu.js.map +1 -1
  25. package/dist/components/SlashCommandMenu.js +2 -2
  26. package/dist/components/SlashCommandMenu.js.map +1 -1
  27. package/dist/hooks/use-conversation.d.ts.map +1 -1
  28. package/dist/hooks/use-conversation.js +53 -508
  29. package/dist/hooks/use-conversation.js.map +1 -1
  30. package/dist/hooks/use-model-selection.d.ts.map +1 -1
  31. package/dist/hooks/use-model-selection.js +7 -3
  32. package/dist/hooks/use-model-selection.js.map +1 -1
  33. package/dist/hooks/use-settings-completion.d.ts.map +1 -1
  34. package/dist/hooks/use-settings-completion.js +5 -0
  35. package/dist/hooks/use-settings-completion.js.map +1 -1
  36. package/dist/hooks/use-settings-completion.test.js +6 -0
  37. package/dist/hooks/use-settings-completion.test.js.map +1 -1
  38. package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
  39. package/dist/hooks/use-settings-value-completion.js +1 -0
  40. package/dist/hooks/use-settings-value-completion.js.map +1 -1
  41. package/dist/lib/editor-impl.test.d.ts +2 -0
  42. package/dist/lib/editor-impl.test.d.ts.map +1 -0
  43. package/dist/lib/editor-impl.test.js +188 -0
  44. package/dist/lib/editor-impl.test.js.map +1 -0
  45. package/dist/lib/openai-agent-client.d.ts.map +1 -1
  46. package/dist/lib/openai-agent-client.js +35 -15
  47. package/dist/lib/openai-agent-client.js.map +1 -1
  48. package/dist/lib/openai-agent-client.public-methods.test.d.ts +2 -0
  49. package/dist/lib/openai-agent-client.public-methods.test.d.ts.map +1 -0
  50. package/dist/lib/openai-agent-client.public-methods.test.js +188 -0
  51. package/dist/lib/openai-agent-client.public-methods.test.js.map +1 -0
  52. package/dist/lib/tool-invoke.test.js +1 -1
  53. package/dist/lib/tool-invoke.test.js.map +1 -1
  54. package/dist/providers/github-copilot/converters.d.ts +45 -0
  55. package/dist/providers/github-copilot/converters.d.ts.map +1 -0
  56. package/dist/providers/github-copilot/converters.js +118 -0
  57. package/dist/providers/github-copilot/converters.js.map +1 -0
  58. package/dist/providers/github-copilot/converters.test.d.ts +2 -0
  59. package/dist/providers/github-copilot/converters.test.d.ts.map +1 -0
  60. package/dist/providers/github-copilot/converters.test.js +162 -0
  61. package/dist/providers/github-copilot/converters.test.js.map +1 -0
  62. package/dist/providers/github-copilot/github-copilot.provider.d.ts +2 -0
  63. package/dist/providers/github-copilot/github-copilot.provider.d.ts.map +1 -0
  64. package/dist/providers/github-copilot/github-copilot.provider.js +75 -0
  65. package/dist/providers/github-copilot/github-copilot.provider.js.map +1 -0
  66. package/dist/providers/github-copilot/github-copilot.provider.test.d.ts +2 -0
  67. package/dist/providers/github-copilot/github-copilot.provider.test.d.ts.map +1 -0
  68. package/dist/providers/github-copilot/github-copilot.provider.test.js +26 -0
  69. package/dist/providers/github-copilot/github-copilot.provider.test.js.map +1 -0
  70. package/dist/providers/github-copilot/index.d.ts +4 -0
  71. package/dist/providers/github-copilot/index.d.ts.map +1 -0
  72. package/dist/providers/github-copilot/index.js +4 -0
  73. package/dist/providers/github-copilot/index.js.map +1 -0
  74. package/dist/providers/github-copilot/model-direct.d.ts +34 -0
  75. package/dist/providers/github-copilot/model-direct.d.ts.map +1 -0
  76. package/dist/providers/github-copilot/model-direct.js +443 -0
  77. package/dist/providers/github-copilot/model-direct.js.map +1 -0
  78. package/dist/providers/github-copilot/model.d.ts +24 -0
  79. package/dist/providers/github-copilot/model.d.ts.map +1 -0
  80. package/dist/providers/github-copilot/model.delta.test.d.ts +2 -0
  81. package/dist/providers/github-copilot/model.delta.test.d.ts.map +1 -0
  82. package/dist/providers/github-copilot/model.delta.test.js +15 -0
  83. package/dist/providers/github-copilot/model.delta.test.js.map +1 -0
  84. package/dist/providers/github-copilot/model.js +581 -0
  85. package/dist/providers/github-copilot/model.js.map +1 -0
  86. package/dist/providers/github-copilot/provider.d.ts +20 -0
  87. package/dist/providers/github-copilot/provider.d.ts.map +1 -0
  88. package/dist/providers/github-copilot/provider.js +30 -0
  89. package/dist/providers/github-copilot/provider.js.map +1 -0
  90. package/dist/providers/github-copilot/provider.test.d.ts +2 -0
  91. package/dist/providers/github-copilot/provider.test.d.ts.map +1 -0
  92. package/dist/providers/github-copilot/provider.test.js +52 -0
  93. package/dist/providers/github-copilot/provider.test.js.map +1 -0
  94. package/dist/providers/github-copilot/utils.d.ts +20 -0
  95. package/dist/providers/github-copilot/utils.d.ts.map +1 -0
  96. package/dist/providers/github-copilot/utils.js +142 -0
  97. package/dist/providers/github-copilot/utils.js.map +1 -0
  98. package/dist/providers/github-copilot/utils.test.d.ts +2 -0
  99. package/dist/providers/github-copilot/utils.test.d.ts.map +1 -0
  100. package/dist/providers/github-copilot/utils.test.js +21 -0
  101. package/dist/providers/github-copilot/utils.test.js.map +1 -0
  102. package/dist/providers/openai-compatible/model.d.ts.map +1 -1
  103. package/dist/providers/openai-compatible/model.js +13 -2
  104. package/dist/providers/openai-compatible/model.js.map +1 -1
  105. package/dist/providers/openai-compatible/reasoning-content.test.js +2 -2
  106. package/dist/providers/openai-compatible/reasoning-content.test.js.map +1 -1
  107. package/dist/providers/openrouter/converters.d.ts.map +1 -1
  108. package/dist/providers/openrouter/converters.js +64 -46
  109. package/dist/providers/openrouter/converters.js.map +1 -1
  110. package/dist/providers/openrouter/converters.test.js +13 -12
  111. package/dist/providers/openrouter/converters.test.js.map +1 -1
  112. package/dist/providers/openrouter/merge-messages.test.d.ts +2 -0
  113. package/dist/providers/openrouter/merge-messages.test.d.ts.map +1 -0
  114. package/dist/providers/openrouter/merge-messages.test.js +83 -0
  115. package/dist/providers/openrouter/merge-messages.test.js.map +1 -0
  116. package/dist/providers/openrouter/reasoning-content.test.js +2 -2
  117. package/dist/providers/openrouter/reasoning-content.test.js.map +1 -1
  118. package/dist/providers/openrouter.test.js +30 -21
  119. package/dist/providers/openrouter.test.js.map +1 -1
  120. package/dist/reproduce_issue.test.d.ts +2 -0
  121. package/dist/reproduce_issue.test.d.ts.map +1 -0
  122. package/dist/reproduce_issue.test.js +31 -0
  123. package/dist/reproduce_issue.test.js.map +1 -0
  124. package/dist/services/conversation-store.test.js +12 -11
  125. package/dist/services/conversation-store.test.js.map +1 -1
  126. package/dist/services/settings-service.d.ts +12 -3
  127. package/dist/services/settings-service.d.ts.map +1 -1
  128. package/dist/services/settings-service.js +26 -0
  129. package/dist/services/settings-service.js.map +1 -1
  130. package/dist/tools/ask-mentor.d.ts +1 -1
  131. package/dist/tools/ask-mentor.d.ts.map +1 -1
  132. package/dist/tools/ask-mentor.js +1 -0
  133. package/dist/tools/ask-mentor.js.map +1 -1
  134. package/dist/tools/edit-healing.d.ts +24 -0
  135. package/dist/tools/edit-healing.d.ts.map +1 -0
  136. package/dist/tools/edit-healing.js +230 -0
  137. package/dist/tools/edit-healing.js.map +1 -0
  138. package/dist/tools/edit-healing.test.d.ts +2 -0
  139. package/dist/tools/edit-healing.test.d.ts.map +1 -0
  140. package/dist/tools/edit-healing.test.js +34 -0
  141. package/dist/tools/edit-healing.test.js.map +1 -0
  142. package/dist/tools/find-files.d.ts +2 -2
  143. package/dist/tools/find-files.d.ts.map +1 -1
  144. package/dist/tools/find-files.js +2 -0
  145. package/dist/tools/find-files.js.map +1 -1
  146. package/dist/tools/grep.d.ts +1 -1
  147. package/dist/tools/grep.d.ts.map +1 -1
  148. package/dist/tools/grep.js +1 -0
  149. package/dist/tools/grep.js.map +1 -1
  150. package/dist/tools/read-file.d.ts.map +1 -1
  151. package/dist/tools/read-file.js +10 -9
  152. package/dist/tools/read-file.js.map +1 -1
  153. package/dist/tools/read-file.test.js +24 -19
  154. package/dist/tools/read-file.test.js.map +1 -1
  155. package/dist/tools/search-replace.d.ts +3 -1
  156. package/dist/tools/search-replace.d.ts.map +1 -1
  157. package/dist/tools/search-replace.js +331 -19
  158. package/dist/tools/search-replace.js.map +1 -1
  159. package/dist/tools/search-replace.test.js +241 -2
  160. package/dist/tools/search-replace.test.js.map +1 -1
  161. package/dist/tools/search.d.ts +4 -4
  162. package/dist/tools/search.d.ts.map +1 -1
  163. package/dist/tools/search.js +4 -0
  164. package/dist/tools/search.js.map +1 -1
  165. package/dist/tools/shell.d.ts +2 -2
  166. package/dist/tools/shell.d.ts.map +1 -1
  167. package/dist/tools/shell.js +2 -0
  168. package/dist/tools/shell.js.map +1 -1
  169. package/dist/tools/types.d.ts +2 -2
  170. package/dist/tools/types.d.ts.map +1 -1
  171. package/dist/tools/web-fetch.d.ts +20 -0
  172. package/dist/tools/web-fetch.d.ts.map +1 -0
  173. package/dist/tools/web-fetch.js +300 -0
  174. package/dist/tools/web-fetch.js.map +1 -0
  175. package/dist/tools/web-fetch.test.d.ts +2 -0
  176. package/dist/tools/web-fetch.test.d.ts.map +1 -0
  177. package/dist/tools/web-fetch.test.js +94 -0
  178. package/dist/tools/web-fetch.test.js.map +1 -0
  179. package/dist/utils/command-safety/index.d.ts +2 -2
  180. package/dist/utils/command-safety/index.d.ts.map +1 -1
  181. package/dist/utils/command-safety/index.js +7 -6
  182. package/dist/utils/command-safety/index.js.map +1 -1
  183. package/dist/utils/command-safety.find.test.js +19 -21
  184. package/dist/utils/command-safety.find.test.js.map +1 -1
  185. package/dist/utils/conversation-event-handler.d.ts +63 -0
  186. package/dist/utils/conversation-event-handler.d.ts.map +1 -0
  187. package/dist/utils/conversation-event-handler.js +132 -0
  188. package/dist/utils/conversation-event-handler.js.map +1 -0
  189. package/dist/utils/conversation-event-handler.test.d.ts +2 -0
  190. package/dist/utils/conversation-event-handler.test.d.ts.map +1 -0
  191. package/dist/utils/conversation-event-handler.test.js +281 -0
  192. package/dist/utils/conversation-event-handler.test.js.map +1 -0
  193. package/dist/utils/conversation-utils.d.ts +41 -0
  194. package/dist/utils/conversation-utils.d.ts.map +1 -0
  195. package/dist/utils/conversation-utils.js +109 -0
  196. package/dist/utils/conversation-utils.js.map +1 -0
  197. package/dist/utils/conversation-utils.test.d.ts +2 -0
  198. package/dist/utils/conversation-utils.test.d.ts.map +1 -0
  199. package/dist/utils/conversation-utils.test.js +190 -0
  200. package/dist/utils/conversation-utils.test.js.map +1 -0
  201. package/dist/utils/ink-render-options.d.ts +9 -0
  202. package/dist/utils/ink-render-options.d.ts.map +1 -0
  203. package/dist/utils/ink-render-options.js +8 -0
  204. package/dist/utils/ink-render-options.js.map +1 -0
  205. package/dist/utils/message-utils.d.ts +17 -0
  206. package/dist/utils/message-utils.d.ts.map +1 -0
  207. package/dist/utils/message-utils.js +52 -0
  208. package/dist/utils/message-utils.js.map +1 -0
  209. package/dist/utils/message-utils.test.d.ts +2 -0
  210. package/dist/utils/message-utils.test.d.ts.map +1 -0
  211. package/dist/utils/message-utils.test.js +48 -0
  212. package/dist/utils/message-utils.test.js.map +1 -0
  213. package/dist/utils/settings-command.d.ts.map +1 -1
  214. package/dist/utils/settings-command.js +13 -4
  215. package/dist/utils/settings-command.js.map +1 -1
  216. package/package.json +10 -4
@@ -134,7 +134,7 @@ test('find - delete flag (RED)', t => {
134
134
  'find ./temp -delete',
135
135
  ];
136
136
  for (const cmd of commands) {
137
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
137
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
138
138
  }
139
139
  });
140
140
  test('find - exec with destructive commands (RED)', t => {
@@ -147,7 +147,7 @@ test('find - exec with destructive commands (RED)', t => {
147
147
  'find . -exec mv {} /tmp \\;',
148
148
  ];
149
149
  for (const cmd of commands) {
150
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
150
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
151
151
  }
152
152
  });
153
153
  test('find - exec with shell commands (RED)', t => {
@@ -158,7 +158,7 @@ test('find - exec with shell commands (RED)', t => {
158
158
  'find . -exec zsh -c "test" {} \\;',
159
159
  ];
160
160
  for (const cmd of commands) {
161
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
161
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
162
162
  }
163
163
  });
164
164
  test('find - exec with shell metacharacters (RED)', t => {
@@ -169,13 +169,13 @@ test('find - exec with shell metacharacters (RED)', t => {
169
169
  'find . -exec test `whoami` \\;',
170
170
  ];
171
171
  for (const cmd of commands) {
172
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
172
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
173
173
  }
174
174
  });
175
175
  test('find - malformed exec (no terminator) (RED)', t => {
176
176
  const commands = ['find . -exec rm {}', 'find . -exec cat'];
177
177
  for (const cmd of commands) {
178
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error for malformed exec`);
178
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED error for malformed exec`);
179
179
  }
180
180
  });
181
181
  test('find - execdir variants (RED)', t => {
@@ -186,7 +186,7 @@ test('find - execdir variants (RED)', t => {
186
186
  'find . -okdir chmod 777 {} \\;',
187
187
  ];
188
188
  for (const cmd of commands) {
189
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
189
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
190
190
  }
191
191
  });
192
192
  // ============================================================================
@@ -194,12 +194,12 @@ test('find - execdir variants (RED)', t => {
194
194
  // ============================================================================
195
195
  test('find - multiple exec flags (RED if any dangerous)', t => {
196
196
  // First safe, second dangerous
197
- t.throws(() => validateCommandSafety('find . -exec echo {} \\; -exec rm {} \\;'), { message: /RED \(forbidden\)/ }, 'Should be RED if any exec is dangerous');
197
+ t.true(validateCommandSafety('find . -exec echo {} \\; -exec rm {} \\;'), 'Should return true if any exec is dangerous');
198
198
  });
199
199
  test('find - exec with plus terminator (RED if dangerous)', t => {
200
200
  const commands = ['find . -exec rm {} +', 'find . -exec rm {} \\+'];
201
201
  for (const cmd of commands) {
202
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
202
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
203
203
  }
204
204
  });
205
205
  test('find - exec with plus terminator (YELLOW if safe)', t => {
@@ -229,7 +229,7 @@ test('find - escaped semicolons (RED if dangerous)', t => {
229
229
  'find . -exec rm {} \\;',
230
230
  ];
231
231
  for (const cmd of commands) {
232
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
232
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
233
233
  }
234
234
  });
235
235
  test('find - directory traversal in paths (RED)', t => {
@@ -238,7 +238,7 @@ test('find - directory traversal in paths (RED)', t => {
238
238
  'find ../../.ssh -type f',
239
239
  ];
240
240
  for (const cmd of commands) {
241
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
241
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
242
242
  }
243
243
  });
244
244
  test('find - home directory searches (RED)', t => {
@@ -248,20 +248,18 @@ test('find - home directory searches (RED)', t => {
248
248
  'find $HOME/.env',
249
249
  ];
250
250
  for (const cmd of commands) {
251
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
251
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
252
252
  }
253
253
  });
254
254
  test('find - empty exec command (RED)', t => {
255
- t.throws(() => validateCommandSafety('find . -exec \\;'), { message: /RED \(forbidden\)/ }, 'Empty exec command should be RED');
255
+ t.true(validateCommandSafety('find . -exec \\;'), 'Empty exec command should return true');
256
256
  });
257
257
  test('find - boolean operators maintain safety classification', t => {
258
258
  // Safe OR safe = GREEN
259
259
  const safe = classifyCommand('find . -name "*.txt" -o -name "*.md"');
260
260
  t.is(safe, SafetyStatus.GREEN);
261
261
  // Safe AND dangerous = RED
262
- t.throws(() => validateCommandSafety('find . -name "*.txt" -delete'), {
263
- message: /RED \(forbidden\)/,
264
- });
262
+ t.true(validateCommandSafety('find . -name "*.txt" -delete'));
265
263
  // NOT operation doesn't change classification
266
264
  const notSafe = classifyCommand('find . ! -name "*.txt"');
267
265
  t.is(notSafe, SafetyStatus.GREEN);
@@ -277,7 +275,7 @@ test('find - interpreter bypasses (RED)', t => {
277
275
  'find . -exec node -e "require(\\"child_process\\").execSync(\\"rm *\\")" {} \\;',
278
276
  ];
279
277
  for (const cmd of commands) {
280
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
278
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
281
279
  }
282
280
  });
283
281
  test('find - meta-executor bypasses (RED)', t => {
@@ -288,7 +286,7 @@ test('find - meta-executor bypasses (RED)', t => {
288
286
  'find . -exec timeout 10 rm {} \\;',
289
287
  ];
290
288
  for (const cmd of commands) {
291
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
289
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
292
290
  }
293
291
  });
294
292
  test('find - more destructive commands (RED)', t => {
@@ -300,11 +298,11 @@ test('find - more destructive commands (RED)', t => {
300
298
  'find . -exec rsync -a {} /backup \\;',
301
299
  ];
302
300
  for (const cmd of commands) {
303
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
301
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
304
302
  }
305
303
  });
306
304
  test('find - executing found files directly (RED)', t => {
307
- t.throws(() => validateCommandSafety('find / -perm -4000 -exec {} \\;'), { message: /RED \(forbidden\)/ }, 'Executing found SUID binaries should be RED');
305
+ t.true(validateCommandSafety('find / -perm -4000 -exec {} \\;'), 'Executing found SUID binaries should return true for RED command');
308
306
  });
309
307
  test('find - inode-based bypass (YELLOW)', t => {
310
308
  const result = classifyCommand('find / -inum 12345');
@@ -325,7 +323,7 @@ test('find - expanded home directory patterns (RED)', t => {
325
323
  'find $USER -name "*.txt"',
326
324
  ];
327
325
  for (const cmd of commands) {
328
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
326
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
329
327
  }
330
328
  });
331
329
  test('find - sensitive dotfiles expanded list (RED)', t => {
@@ -336,7 +334,7 @@ test('find - sensitive dotfiles expanded list (RED)', t => {
336
334
  'find ~/.bash_history',
337
335
  ];
338
336
  for (const cmd of commands) {
339
- t.throws(() => validateCommandSafety(cmd), { message: /RED \(forbidden\)/ }, `"${cmd}" should throw RED error`);
337
+ t.true(validateCommandSafety(cmd), `"${cmd}" should return true for RED command`);
340
338
  }
341
339
  });
342
340
  //# sourceMappingURL=command-safety.find.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-safety.find.test.js","sourceRoot":"","sources":["../../source/utils/command-safety.find.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-safety.find.test.js","sourceRoot":"","sources":["../../source/utils/command-safety.find.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,EACH,eAAe,EACf,YAAY,EACZ,qBAAqB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,+EAA+E;AAC/E,sCAAsC;AACtC,+EAA+E;AAE/E,IAAI,CAAC,kCAAkC,EAAE,CAAC,CAAC,EAAE;IACzC,MAAM,QAAQ,GAAG;QACb,sBAAsB;QACtB,uBAAuB;QACvB,wBAAwB;QACxB,yBAAyB;KAC5B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,mBAAmB,CAAC,CAAC;IACjE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,EAAE;IACpC,MAAM,QAAQ,GAAG;QACb,gBAAgB;QAChB,gBAAgB;QAChB,gBAAgB;QAChB,iCAAiC;KACpC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,mBAAmB,CAAC,CAAC;IACjE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uCAAuC,EAAE,CAAC,CAAC,EAAE;IAC9C,MAAM,QAAQ,GAAG;QACb,kBAAkB;QAClB,oBAAoB;QACpB,oBAAoB;QACpB,iCAAiC;QACjC,eAAe;KAClB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,mBAAmB,CAAC,CAAC;IACjE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sCAAsC,EAAE,CAAC,CAAC,EAAE;IAC7C,MAAM,QAAQ,GAAG;QACb,eAAe;QACf,gBAAgB;QAChB,wBAAwB;QACxB,YAAY;KACf,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,mBAAmB,CAAC,CAAC;IACjE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC,EAAE;IACrC,MAAM,QAAQ,GAAG;QACb,yBAAyB;QACzB,0BAA0B,EAAE,gDAAgD;QAC5E,0BAA0B;KAC7B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,mBAAmB,CAAC,CAAC;IACjE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E,IAAI,CAAC,yCAAyC,EAAE,CAAC,CAAC,EAAE;IAChD,MAAM,QAAQ,GAAG;QACb,yBAAyB;QACzB,8BAA8B;QAC9B,yBAAyB;KAC5B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,oBAAoB,CAAC,CAAC;IACnE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mCAAmC,EAAE,CAAC,CAAC,EAAE;IAC1C,MAAM,QAAQ,GAAG;QACb,gCAAgC;QAChC,iCAAiC;QACjC,yCAAyC;QACzC,6BAA6B;KAChC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,oBAAoB,CAAC,CAAC;IACnE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+CAA+C,EAAE,CAAC,CAAC,EAAE;IACtD,MAAM,QAAQ,GAAG;QACb,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,mBAAmB;KACtB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,oBAAoB,CAAC,CAAC;IACnE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uCAAuC,EAAE,CAAC,CAAC,EAAE;IAC9C,MAAM,QAAQ,GAAG;QACb,0BAA0B;QAC1B,6BAA6B;QAC7B,0BAA0B;KAC7B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,oBAAoB,CAAC,CAAC;IACnE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,CAAC,CAAC,EAAE;IAChD,MAAM,QAAQ,GAAG;QACb,yBAAyB;QACzB,0BAA0B;QAC1B,kCAAkC;QAClC,2BAA2B;KAC9B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,oBAAoB,CAAC,CAAC;IACnE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE;IACjC,MAAM,QAAQ,GAAG;QACb,8BAA8B;QAC9B,wBAAwB;QACxB,qBAAqB;KACxB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE;IACpD,MAAM,QAAQ,GAAG;QACb,wBAAwB;QACxB,4BAA4B;QAC5B,2BAA2B;QAC3B,+BAA+B;QAC/B,gCAAgC;QAChC,6BAA6B;KAChC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uCAAuC,EAAE,CAAC,CAAC,EAAE;IAC9C,MAAM,QAAQ,GAAG;QACb,mCAAmC;QACnC,yCAAyC;QACzC,4CAA4C;QAC5C,mCAAmC;KACtC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE;IACpD,MAAM,QAAQ,GAAG;QACb,gCAAgC;QAChC,oCAAoC;QACpC,6BAA6B;QAC7B,gCAAgC;KACnC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE;IACpD,MAAM,QAAQ,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IAE5D,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,uDAAuD,CACjE,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,EAAE;IACtC,MAAM,QAAQ,GAAG;QACb,2BAA2B;QAC3B,uCAAuC;QACvC,sBAAsB;QACtB,gCAAgC;KACnC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,IAAI,CAAC,mDAAmD,EAAE,CAAC,CAAC,EAAE;IAC1D,+BAA+B;IAC/B,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,0CAA0C,CAAC,EACjE,6CAA6C,CAChD,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qDAAqD,EAAE,CAAC,CAAC,EAAE;IAC5D,MAAM,QAAQ,GAAG,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;IAEpE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,CAAC,CAAC,EAAE;IAC1D,MAAM,QAAQ,GAAG,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAC;IAEtE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,oBAAoB,CAAC,CAAC;IACnE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,EAAE;IACxC,mEAAmE;IACnE,MAAM,QAAQ,GAAG;QACb,uBAAuB;QACvB,yBAAyB;QACzB,8BAA8B;QAC9B,2BAA2B;KAC9B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CACA,MAAM,EACN,YAAY,CAAC,KAAK,EAClB,IAAI,GAAG,8CAA8C,CACxD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8CAA8C,EAAE,CAAC,CAAC,EAAE;IACrD,MAAM,QAAQ,GAAG;QACb,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB;KAC3B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,CAAC,CAAC,EAAE;IAClD,MAAM,QAAQ,GAAG;QACb,kCAAkC;QAClC,yBAAyB;KAC5B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sCAAsC,EAAE,CAAC,CAAC,EAAE;IAC7C,MAAM,QAAQ,GAAG;QACb,sBAAsB;QACtB,qBAAqB;QACrB,iBAAiB;KACpB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,EAAE;IACxC,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,kBAAkB,CAAC,EACzC,uCAAuC,CAC1C,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yDAAyD,EAAE,CAAC,CAAC,EAAE;IAChE,uBAAuB;IACvB,MAAM,IAAI,GAAG,eAAe,CAAC,sCAAsC,CAAC,CAAC;IACrE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAE/B,2BAA2B;IAC3B,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAE9D,8CAA8C;IAC9C,MAAM,OAAO,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC;IAC1D,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E;AAE/E,IAAI,CAAC,mCAAmC,EAAE,CAAC,CAAC,EAAE;IAC1C,MAAM,QAAQ,GAAG;QACb,sCAAsC;QACtC,kEAAkE;QAClE,sCAAsC;QACtC,iFAAiF;KACpF,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qCAAqC,EAAE,CAAC,CAAC,EAAE;IAC5C,MAAM,QAAQ,GAAG;QACb,4BAA4B;QAC5B,2BAA2B;QAC3B,8BAA8B;QAC9B,mCAAmC;KACtC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,CAAC,CAAC,EAAE;IAC/C,MAAM,QAAQ,GAAG;QACb,mCAAmC;QACnC,mCAAmC;QACnC,oCAAoC;QACpC,qCAAqC;QACrC,sCAAsC;KACzC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE;IACpD,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,iCAAiC,CAAC,EACxD,kEAAkE,CACrE,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,EAAE;IAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC;IACrD,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,CAAC,CAAC,EAAE;IAC/C,MAAM,QAAQ,GAAG,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IAEzD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CACA,MAAM,EACN,YAAY,CAAC,MAAM,EACnB,IAAI,GAAG,+BAA+B,CACzC,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+CAA+C,EAAE,CAAC,CAAC,EAAE;IACtD,MAAM,QAAQ,GAAG;QACb,2BAA2B;QAC3B,6BAA6B;QAC7B,oBAAoB;QACpB,0BAA0B;KAC7B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+CAA+C,EAAE,CAAC,CAAC,EAAE;IACtD,MAAM,QAAQ,GAAG;QACb,qBAAqB;QACrB,qBAAqB;QACrB,yBAAyB;QACzB,sBAAsB;KACzB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,IAAI,CACF,qBAAqB,CAAC,GAAG,CAAC,EAC1B,IAAI,GAAG,sCAAsC,CAChD,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Factory for creating conversation event handlers.
3
+ * Extracted from use-conversation.ts to enable testing.
4
+ */
5
+ import type { ConversationEvent } from '../services/conversation-events.js';
6
+ import { type StreamingState } from './conversation-utils.js';
7
+ /**
8
+ * Message types used by the event handler.
9
+ */
10
+ export interface BotMessage {
11
+ id: number;
12
+ sender: 'bot';
13
+ text: string;
14
+ }
15
+ export interface CommandMessage {
16
+ id: string;
17
+ sender: 'command';
18
+ status: 'pending' | 'running' | 'completed' | 'failed';
19
+ command: string;
20
+ output: string;
21
+ success?: boolean;
22
+ failureReason?: string;
23
+ isApprovalRejection?: boolean;
24
+ callId?: string;
25
+ toolName?: string;
26
+ toolArgs?: unknown;
27
+ }
28
+ export interface SystemMessage {
29
+ id: number;
30
+ sender: 'system';
31
+ text: string;
32
+ }
33
+ /**
34
+ * Dependencies injected into the event handler factory.
35
+ * Uses `any` for React setState compatibility - internal utility.
36
+ */
37
+ export interface ConversationEventHandlerDeps {
38
+ liveResponseUpdater: {
39
+ push: (text: string) => void;
40
+ cancel: () => void;
41
+ flush: () => void;
42
+ };
43
+ reasoningUpdater: {
44
+ push: (text: string) => void;
45
+ cancel: () => void;
46
+ flush: () => void;
47
+ };
48
+ appendMessages: (messages: any[]) => void;
49
+ setMessages: (updater: (prev: any[]) => any[]) => void;
50
+ setLiveResponse: (response: any) => void;
51
+ trimMessages: (messages: any[]) => any[];
52
+ annotateCommandMessage: (msg: CommandMessage) => CommandMessage;
53
+ }
54
+ /**
55
+ * Create a conversation event handler that processes streaming events.
56
+ * The handler mutates the provided state object and calls deps methods.
57
+ *
58
+ * @param deps - Injected dependencies for state updates
59
+ * @param state - Mutable streaming state object
60
+ * @returns Event handler function
61
+ */
62
+ export declare function createConversationEventHandler(deps: ConversationEventHandlerDeps, state: StreamingState): (event: ConversationEvent) => void;
63
+ //# sourceMappingURL=conversation-event-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-event-handler.d.ts","sourceRoot":"","sources":["../../source/utils/conversation-event-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAGN,KAAK,cAAc,EACnB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC5C,mBAAmB,EAAE;QACpB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,KAAK,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;IACF,gBAAgB,EAAE;QACjB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,KAAK,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;IACF,cAAc,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,CAAC;IACvD,eAAe,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,CAAC;IACzC,sBAAsB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,cAAc,CAAC;CAChE;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,4BAA4B,EAClC,KAAK,EAAE,cAAc,GACnB,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAuJpC"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Factory for creating conversation event handlers.
3
+ * Extracted from use-conversation.ts to enable testing.
4
+ */
5
+ import { parseToolArguments, formatToolCommand, } from './conversation-utils.js';
6
+ /**
7
+ * Create a conversation event handler that processes streaming events.
8
+ * The handler mutates the provided state object and calls deps methods.
9
+ *
10
+ * @param deps - Injected dependencies for state updates
11
+ * @param state - Mutable streaming state object
12
+ * @returns Event handler function
13
+ */
14
+ export function createConversationEventHandler(deps, state) {
15
+ const { liveResponseUpdater, reasoningUpdater, appendMessages, setMessages, setLiveResponse, trimMessages, annotateCommandMessage, } = deps;
16
+ return (event) => {
17
+ switch (event.type) {
18
+ case 'text_delta': {
19
+ state.accumulatedText += event.delta;
20
+ liveResponseUpdater.push(state.accumulatedText);
21
+ return;
22
+ }
23
+ case 'reasoning_delta': {
24
+ const fullReasoningText = event.fullText ?? '';
25
+ // Only show reasoning text after what was already flushed
26
+ const newReasoningText = fullReasoningText.slice(state.flushedReasoningLength);
27
+ state.accumulatedReasoningText = newReasoningText;
28
+ if (!newReasoningText.trim())
29
+ return;
30
+ reasoningUpdater.push(newReasoningText);
31
+ return;
32
+ }
33
+ case 'tool_started': {
34
+ // Flush reasoning state
35
+ if (state.accumulatedReasoningText.trim()) {
36
+ reasoningUpdater.flush();
37
+ state.flushedReasoningLength +=
38
+ state.accumulatedReasoningText.length;
39
+ state.accumulatedReasoningText = '';
40
+ state.currentReasoningMessageId = null;
41
+ }
42
+ // Flush any accumulated text before showing the tool call
43
+ if (state.accumulatedText.trim()) {
44
+ const textMessage = {
45
+ id: Date.now() + 1,
46
+ sender: 'bot',
47
+ text: state.accumulatedText,
48
+ };
49
+ appendMessages([textMessage]);
50
+ state.accumulatedText = '';
51
+ state.textWasFlushed = true;
52
+ liveResponseUpdater.cancel();
53
+ setLiveResponse(null);
54
+ }
55
+ // Emit a "pending" command message when tool starts running
56
+ const { toolCallId, toolName, arguments: rawArgs } = event;
57
+ // tool_started.arguments may be either an object or a JSON string
58
+ const args = parseToolArguments(rawArgs);
59
+ const command = formatToolCommand(toolName, args);
60
+ const pendingMessage = {
61
+ id: toolCallId ?? String(Date.now()),
62
+ sender: 'command',
63
+ status: 'running',
64
+ command,
65
+ output: '',
66
+ callId: toolCallId,
67
+ toolName,
68
+ toolArgs: args,
69
+ };
70
+ appendMessages([pendingMessage]);
71
+ return;
72
+ }
73
+ case 'command_message': {
74
+ const cmdMsg = event.message;
75
+ const annotated = annotateCommandMessage(cmdMsg);
76
+ const messagesToAdd = [];
77
+ // Flush reasoning state
78
+ if (state.accumulatedReasoningText.trim()) {
79
+ reasoningUpdater.flush();
80
+ state.flushedReasoningLength +=
81
+ state.accumulatedReasoningText.length;
82
+ state.accumulatedReasoningText = '';
83
+ state.currentReasoningMessageId = null;
84
+ }
85
+ // Flush any accumulated text before adding command message
86
+ if (state.accumulatedText.trim()) {
87
+ const textMessage = {
88
+ id: Date.now() + 1,
89
+ sender: 'bot',
90
+ text: state.accumulatedText,
91
+ };
92
+ messagesToAdd.push(textMessage);
93
+ state.accumulatedText = '';
94
+ state.textWasFlushed = true;
95
+ }
96
+ if (messagesToAdd.length > 0) {
97
+ appendMessages(messagesToAdd);
98
+ liveResponseUpdater.cancel();
99
+ setLiveResponse(null);
100
+ }
101
+ // Replace pending message with completed one, or add new if not found
102
+ setMessages((prev) => {
103
+ const pendingIndex = annotated.callId
104
+ ? prev.findIndex((msg) => msg.sender === 'command' &&
105
+ msg.callId === annotated.callId &&
106
+ msg.status === 'running')
107
+ : -1;
108
+ if (pendingIndex !== -1) {
109
+ const next = [...prev];
110
+ next[pendingIndex] = annotated;
111
+ return trimMessages(next);
112
+ }
113
+ return trimMessages([...prev, annotated]);
114
+ });
115
+ return;
116
+ }
117
+ case 'retry': {
118
+ const systemMessage = {
119
+ id: Date.now(),
120
+ sender: 'system',
121
+ text: `Tool hallucination detected (${event.toolName}). Retrying... (Attempt ${event.attempt}/${event.maxRetries})`,
122
+ };
123
+ setMessages((prev) => [...prev, systemMessage]);
124
+ return;
125
+ }
126
+ default:
127
+ // Ignore unknown events (approval_required, final, error handled elsewhere)
128
+ return;
129
+ }
130
+ };
131
+ }
132
+ //# sourceMappingURL=conversation-event-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-event-handler.js","sourceRoot":"","sources":["../../source/utils/conversation-event-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conversation-event-handler.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-event-handler.test.d.ts","sourceRoot":"","sources":["../../source/utils/conversation-event-handler.test.ts"],"names":[],"mappings":""}