@herbcaudill/ralph 0.8.5 → 1.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 (187) hide show
  1. package/dist/index.js +2401 -5
  2. package/dist/index.js.map +1 -1
  3. package/package.json +9 -7
  4. package/templates/core-prompt.md +77 -0
  5. package/templates/skills/manage-tasks/SKILL.md +113 -0
  6. package/templates/workflow.md +46 -0
  7. package/dist/cli.d.ts +0 -3
  8. package/dist/cli.d.ts.map +0 -1
  9. package/dist/cli.js +0 -81
  10. package/dist/cli.js.map +0 -1
  11. package/dist/components/App.d.ts +0 -12
  12. package/dist/components/App.d.ts.map +0 -1
  13. package/dist/components/App.js +0 -14
  14. package/dist/components/App.js.map +0 -1
  15. package/dist/components/EnhancedTextInput.d.ts +0 -22
  16. package/dist/components/EnhancedTextInput.d.ts.map +0 -1
  17. package/dist/components/EnhancedTextInput.js +0 -164
  18. package/dist/components/EnhancedTextInput.js.map +0 -1
  19. package/dist/components/EnhancedTextInput.test.d.ts +0 -2
  20. package/dist/components/EnhancedTextInput.test.d.ts.map +0 -1
  21. package/dist/components/EnhancedTextInput.test.js +0 -107
  22. package/dist/components/EnhancedTextInput.test.js.map +0 -1
  23. package/dist/components/EventDisplay.d.ts +0 -14
  24. package/dist/components/EventDisplay.d.ts.map +0 -1
  25. package/dist/components/EventDisplay.js +0 -182
  26. package/dist/components/EventDisplay.js.map +0 -1
  27. package/dist/components/EventDisplay.replay.test.d.ts +0 -2
  28. package/dist/components/EventDisplay.replay.test.d.ts.map +0 -1
  29. package/dist/components/EventDisplay.replay.test.js +0 -413
  30. package/dist/components/EventDisplay.replay.test.js.map +0 -1
  31. package/dist/components/EventDisplay.test.d.ts +0 -2
  32. package/dist/components/EventDisplay.test.d.ts.map +0 -1
  33. package/dist/components/EventDisplay.test.js +0 -319
  34. package/dist/components/EventDisplay.test.js.map +0 -1
  35. package/dist/components/FullScreenLayout.d.ts +0 -14
  36. package/dist/components/FullScreenLayout.d.ts.map +0 -1
  37. package/dist/components/FullScreenLayout.js +0 -30
  38. package/dist/components/FullScreenLayout.js.map +0 -1
  39. package/dist/components/Header.d.ts +0 -9
  40. package/dist/components/Header.d.ts.map +0 -1
  41. package/dist/components/Header.js +0 -15
  42. package/dist/components/Header.js.map +0 -1
  43. package/dist/components/Header.test.d.ts +0 -2
  44. package/dist/components/Header.test.d.ts.map +0 -1
  45. package/dist/components/Header.test.js +0 -27
  46. package/dist/components/Header.test.js.map +0 -1
  47. package/dist/components/InitRalph.d.ts +0 -3
  48. package/dist/components/InitRalph.d.ts.map +0 -1
  49. package/dist/components/InitRalph.js +0 -154
  50. package/dist/components/InitRalph.js.map +0 -1
  51. package/dist/components/IterationRunner.d.ts +0 -17
  52. package/dist/components/IterationRunner.d.ts.map +0 -1
  53. package/dist/components/IterationRunner.js +0 -620
  54. package/dist/components/IterationRunner.js.map +0 -1
  55. package/dist/components/IterationRunner.test.d.ts +0 -2
  56. package/dist/components/IterationRunner.test.d.ts.map +0 -1
  57. package/dist/components/IterationRunner.test.js +0 -129
  58. package/dist/components/IterationRunner.test.js.map +0 -1
  59. package/dist/components/JsonOutput.d.ts +0 -14
  60. package/dist/components/JsonOutput.d.ts.map +0 -1
  61. package/dist/components/JsonOutput.js +0 -246
  62. package/dist/components/JsonOutput.js.map +0 -1
  63. package/dist/components/ProgressBar.d.ts +0 -18
  64. package/dist/components/ProgressBar.d.ts.map +0 -1
  65. package/dist/components/ProgressBar.js +0 -30
  66. package/dist/components/ProgressBar.js.map +0 -1
  67. package/dist/components/ProgressBar.test.d.ts +0 -2
  68. package/dist/components/ProgressBar.test.d.ts.map +0 -1
  69. package/dist/components/ProgressBar.test.js +0 -55
  70. package/dist/components/ProgressBar.test.js.map +0 -1
  71. package/dist/components/ReplayLog.d.ts +0 -7
  72. package/dist/components/ReplayLog.d.ts.map +0 -1
  73. package/dist/components/ReplayLog.js +0 -50
  74. package/dist/components/ReplayLog.js.map +0 -1
  75. package/dist/components/StreamingText.d.ts +0 -7
  76. package/dist/components/StreamingText.d.ts.map +0 -1
  77. package/dist/components/StreamingText.js +0 -36
  78. package/dist/components/StreamingText.js.map +0 -1
  79. package/dist/components/StreamingText.test.d.ts +0 -2
  80. package/dist/components/StreamingText.test.d.ts.map +0 -1
  81. package/dist/components/StreamingText.test.js +0 -86
  82. package/dist/components/StreamingText.test.js.map +0 -1
  83. package/dist/components/ToolUse.d.ts +0 -8
  84. package/dist/components/ToolUse.d.ts.map +0 -1
  85. package/dist/components/ToolUse.js +0 -10
  86. package/dist/components/ToolUse.js.map +0 -1
  87. package/dist/components/ToolUse.test.d.ts +0 -2
  88. package/dist/components/ToolUse.test.d.ts.map +0 -1
  89. package/dist/components/ToolUse.test.js +0 -43
  90. package/dist/components/ToolUse.test.js.map +0 -1
  91. package/dist/components/eventToBlocks.d.ts +0 -16
  92. package/dist/components/eventToBlocks.d.ts.map +0 -1
  93. package/dist/components/eventToBlocks.js +0 -160
  94. package/dist/components/eventToBlocks.js.map +0 -1
  95. package/dist/components/eventToBlocks.test.d.ts +0 -2
  96. package/dist/components/eventToBlocks.test.d.ts.map +0 -1
  97. package/dist/components/eventToBlocks.test.js +0 -466
  98. package/dist/components/eventToBlocks.test.js.map +0 -1
  99. package/dist/index.d.ts +0 -2
  100. package/dist/index.d.ts.map +0 -1
  101. package/dist/lib/MessageQueue.d.ts +0 -20
  102. package/dist/lib/MessageQueue.d.ts.map +0 -1
  103. package/dist/lib/MessageQueue.js +0 -89
  104. package/dist/lib/MessageQueue.js.map +0 -1
  105. package/dist/lib/MessageQueue.test.d.ts +0 -2
  106. package/dist/lib/MessageQueue.test.d.ts.map +0 -1
  107. package/dist/lib/MessageQueue.test.js +0 -224
  108. package/dist/lib/MessageQueue.test.js.map +0 -1
  109. package/dist/lib/StdinCommandHandler.d.ts +0 -42
  110. package/dist/lib/StdinCommandHandler.d.ts.map +0 -1
  111. package/dist/lib/StdinCommandHandler.js +0 -102
  112. package/dist/lib/StdinCommandHandler.js.map +0 -1
  113. package/dist/lib/StdinCommandHandler.test.d.ts +0 -2
  114. package/dist/lib/StdinCommandHandler.test.d.ts.map +0 -1
  115. package/dist/lib/StdinCommandHandler.test.js +0 -93
  116. package/dist/lib/StdinCommandHandler.test.js.map +0 -1
  117. package/dist/lib/addTodo.d.ts +0 -11
  118. package/dist/lib/addTodo.d.ts.map +0 -1
  119. package/dist/lib/addTodo.js +0 -65
  120. package/dist/lib/addTodo.js.map +0 -1
  121. package/dist/lib/beadsClient.d.ts +0 -52
  122. package/dist/lib/beadsClient.d.ts.map +0 -1
  123. package/dist/lib/beadsClient.js +0 -171
  124. package/dist/lib/beadsClient.js.map +0 -1
  125. package/dist/lib/debug.d.ts +0 -18
  126. package/dist/lib/debug.d.ts.map +0 -1
  127. package/dist/lib/debug.js +0 -44
  128. package/dist/lib/debug.js.map +0 -1
  129. package/dist/lib/formatContentBlock.d.ts +0 -10
  130. package/dist/lib/formatContentBlock.d.ts.map +0 -1
  131. package/dist/lib/formatContentBlock.js +0 -69
  132. package/dist/lib/formatContentBlock.js.map +0 -1
  133. package/dist/lib/getClaudeVersion.d.ts +0 -2
  134. package/dist/lib/getClaudeVersion.d.ts.map +0 -1
  135. package/dist/lib/getClaudeVersion.js +0 -17
  136. package/dist/lib/getClaudeVersion.js.map +0 -1
  137. package/dist/lib/getClaudeVersion.test.d.ts +0 -2
  138. package/dist/lib/getClaudeVersion.test.d.ts.map +0 -1
  139. package/dist/lib/getClaudeVersion.test.js +0 -39
  140. package/dist/lib/getClaudeVersion.test.js.map +0 -1
  141. package/dist/lib/getNextLogFile.d.ts +0 -12
  142. package/dist/lib/getNextLogFile.d.ts.map +0 -1
  143. package/dist/lib/getNextLogFile.js +0 -52
  144. package/dist/lib/getNextLogFile.js.map +0 -1
  145. package/dist/lib/getNextLogFile.test.d.ts +0 -2
  146. package/dist/lib/getNextLogFile.test.d.ts.map +0 -1
  147. package/dist/lib/getNextLogFile.test.js +0 -65
  148. package/dist/lib/getNextLogFile.test.js.map +0 -1
  149. package/dist/lib/getOpenIssueCount.d.ts +0 -11
  150. package/dist/lib/getOpenIssueCount.d.ts.map +0 -1
  151. package/dist/lib/getOpenIssueCount.js +0 -31
  152. package/dist/lib/getOpenIssueCount.js.map +0 -1
  153. package/dist/lib/getOpenIssueCount.test.d.ts +0 -2
  154. package/dist/lib/getOpenIssueCount.test.d.ts.map +0 -1
  155. package/dist/lib/getOpenIssueCount.test.js +0 -65
  156. package/dist/lib/getOpenIssueCount.test.js.map +0 -1
  157. package/dist/lib/getProgress.d.ts +0 -34
  158. package/dist/lib/getProgress.d.ts.map +0 -1
  159. package/dist/lib/getProgress.js +0 -131
  160. package/dist/lib/getProgress.js.map +0 -1
  161. package/dist/lib/getProgress.test.d.ts +0 -2
  162. package/dist/lib/getProgress.test.d.ts.map +0 -1
  163. package/dist/lib/getProgress.test.js +0 -217
  164. package/dist/lib/getProgress.test.js.map +0 -1
  165. package/dist/lib/rel.d.ts +0 -2
  166. package/dist/lib/rel.d.ts.map +0 -1
  167. package/dist/lib/rel.js +0 -10
  168. package/dist/lib/rel.js.map +0 -1
  169. package/dist/lib/rel.test.d.ts +0 -2
  170. package/dist/lib/rel.test.d.ts.map +0 -1
  171. package/dist/lib/rel.test.js +0 -36
  172. package/dist/lib/rel.test.js.map +0 -1
  173. package/dist/lib/shortenTempPaths.d.ts +0 -2
  174. package/dist/lib/shortenTempPaths.d.ts.map +0 -1
  175. package/dist/lib/shortenTempPaths.js +0 -7
  176. package/dist/lib/shortenTempPaths.js.map +0 -1
  177. package/dist/lib/shortenTempPaths.test.d.ts +0 -2
  178. package/dist/lib/shortenTempPaths.test.d.ts.map +0 -1
  179. package/dist/lib/shortenTempPaths.test.js +0 -46
  180. package/dist/lib/shortenTempPaths.test.js.map +0 -1
  181. package/dist/lib/useTerminalSize.d.ts +0 -5
  182. package/dist/lib/useTerminalSize.d.ts.map +0 -1
  183. package/dist/lib/useTerminalSize.js +0 -21
  184. package/dist/lib/useTerminalSize.js.map +0 -1
  185. package/templates/prompt-beads.md +0 -44
  186. package/templates/prompt-todos.md +0 -17
  187. package/templates/todo.md +0 -9
@@ -1,466 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { eventToBlocks } from "./eventToBlocks.js";
3
- describe("eventToBlocks", () => {
4
- it("returns empty array for non-assistant events", () => {
5
- const event = { type: "message_start" };
6
- const result = eventToBlocks(event);
7
- expect(result).toEqual([]);
8
- });
9
- it("returns empty array for assistant event without message", () => {
10
- const event = { type: "assistant" };
11
- const result = eventToBlocks(event);
12
- expect(result).toEqual([]);
13
- });
14
- it("returns empty array for assistant event without content", () => {
15
- const event = { type: "assistant", message: {} };
16
- const result = eventToBlocks(event);
17
- expect(result).toEqual([]);
18
- });
19
- it("extracts text blocks", () => {
20
- const event = {
21
- type: "assistant",
22
- message: {
23
- id: "msg_123",
24
- content: [{ type: "text", text: "Hello world" }],
25
- },
26
- };
27
- const result = eventToBlocks(event);
28
- expect(result).toEqual([{ type: "text", content: "Hello world", id: "msg_123-0" }]);
29
- });
30
- it("merges consecutive text blocks", () => {
31
- const event = {
32
- type: "assistant",
33
- message: {
34
- id: "msg_123",
35
- content: [
36
- { type: "text", text: "First" },
37
- { type: "text", text: "Second" },
38
- ],
39
- },
40
- };
41
- const result = eventToBlocks(event);
42
- expect(result).toEqual([{ type: "text", content: "FirstSecond", id: "msg_123-0" }]);
43
- });
44
- it("keeps text blocks separate when interrupted by tool calls", () => {
45
- const event = {
46
- type: "assistant",
47
- message: {
48
- id: "msg_123",
49
- content: [
50
- { type: "text", text: "Before tool" },
51
- {
52
- type: "tool_use",
53
- name: "Read",
54
- input: { file_path: `${process.cwd()}/file.ts` },
55
- },
56
- { type: "text", text: "After tool" },
57
- ],
58
- },
59
- };
60
- const result = eventToBlocks(event);
61
- expect(result).toEqual([
62
- { type: "text", content: "Before tool", id: "msg_123-0" },
63
- { type: "tool", name: "Read", arg: "file.ts", id: "msg_123-1" },
64
- { type: "text", content: "After tool", id: "msg_123-2" },
65
- ]);
66
- });
67
- it("extracts Read tool use with relative path", () => {
68
- const event = {
69
- type: "assistant",
70
- message: {
71
- id: "msg_123",
72
- content: [
73
- {
74
- type: "tool_use",
75
- name: "Read",
76
- input: { file_path: `${process.cwd()}/src/index.ts` },
77
- },
78
- ],
79
- },
80
- };
81
- const result = eventToBlocks(event);
82
- expect(result).toEqual([{ type: "tool", name: "Read", arg: "src/index.ts", id: "msg_123-0" }]);
83
- });
84
- it("extracts Edit tool use", () => {
85
- const event = {
86
- type: "assistant",
87
- message: {
88
- id: "msg_123",
89
- content: [
90
- {
91
- type: "tool_use",
92
- name: "Edit",
93
- input: { file_path: `${process.cwd()}/src/app.ts` },
94
- },
95
- ],
96
- },
97
- };
98
- const result = eventToBlocks(event);
99
- expect(result).toEqual([{ type: "tool", name: "Edit", arg: "src/app.ts", id: "msg_123-0" }]);
100
- });
101
- it("extracts Write tool use", () => {
102
- const event = {
103
- type: "assistant",
104
- message: {
105
- id: "msg_123",
106
- content: [
107
- {
108
- type: "tool_use",
109
- name: "Write",
110
- input: { file_path: `${process.cwd()}/src/new.ts` },
111
- },
112
- ],
113
- },
114
- };
115
- const result = eventToBlocks(event);
116
- expect(result).toEqual([{ type: "tool", name: "Write", arg: "src/new.ts", id: "msg_123-0" }]);
117
- });
118
- it("extracts Bash tool use with shortened temp paths", () => {
119
- const event = {
120
- type: "assistant",
121
- message: {
122
- id: "msg_123",
123
- content: [
124
- {
125
- type: "tool_use",
126
- name: "Bash",
127
- input: { command: "cat /tmp/temp-file.txt" },
128
- },
129
- ],
130
- },
131
- };
132
- const result = eventToBlocks(event);
133
- expect(result).toEqual([{ type: "tool", name: "$", arg: "cat temp-file.txt", id: "msg_123-0" }]);
134
- });
135
- it("extracts Grep tool use with pattern only", () => {
136
- const event = {
137
- type: "assistant",
138
- message: {
139
- id: "msg_123",
140
- content: [
141
- {
142
- type: "tool_use",
143
- name: "Grep",
144
- input: { pattern: "search-term" },
145
- },
146
- ],
147
- },
148
- };
149
- const result = eventToBlocks(event);
150
- expect(result).toEqual([{ type: "tool", name: "Grep", arg: "search-term", id: "msg_123-0" }]);
151
- });
152
- it("extracts Grep tool use with pattern and path", () => {
153
- const event = {
154
- type: "assistant",
155
- message: {
156
- id: "msg_123",
157
- content: [
158
- {
159
- type: "tool_use",
160
- name: "Grep",
161
- input: { pattern: "TODO", path: `${process.cwd()}/src` },
162
- },
163
- ],
164
- },
165
- };
166
- const result = eventToBlocks(event);
167
- expect(result).toEqual([{ type: "tool", name: "Grep", arg: "TODO in src", id: "msg_123-0" }]);
168
- });
169
- it("extracts Glob tool use with pattern only", () => {
170
- const event = {
171
- type: "assistant",
172
- message: {
173
- id: "msg_123",
174
- content: [
175
- {
176
- type: "tool_use",
177
- name: "Glob",
178
- input: { pattern: "**/*.ts" },
179
- },
180
- ],
181
- },
182
- };
183
- const result = eventToBlocks(event);
184
- expect(result).toEqual([{ type: "tool", name: "Glob", arg: "**/*.ts", id: "msg_123-0" }]);
185
- });
186
- it("extracts Glob tool use with pattern and path", () => {
187
- const event = {
188
- type: "assistant",
189
- message: {
190
- id: "msg_123",
191
- content: [
192
- {
193
- type: "tool_use",
194
- name: "Glob",
195
- input: { pattern: "*.json", path: `${process.cwd()}/config` },
196
- },
197
- ],
198
- },
199
- };
200
- const result = eventToBlocks(event);
201
- expect(result).toEqual([
202
- { type: "tool", name: "Glob", arg: "*.json in config", id: "msg_123-0" },
203
- ]);
204
- });
205
- it("extracts TodoWrite with todos", () => {
206
- const event = {
207
- type: "assistant",
208
- message: {
209
- id: "msg_123",
210
- content: [
211
- {
212
- type: "tool_use",
213
- name: "TodoWrite",
214
- input: {
215
- todos: [
216
- { content: "Task 1", status: "pending" },
217
- { content: "Task 2", status: "in_progress" },
218
- { content: "Task 3", status: "completed" },
219
- ],
220
- },
221
- },
222
- ],
223
- },
224
- };
225
- const result = eventToBlocks(event);
226
- expect(result).toEqual([
227
- {
228
- type: "tool",
229
- name: "TodoWrite",
230
- arg: "\n [ ] Task 1\n [~] Task 2\n [x] Task 3",
231
- id: "msg_123-0",
232
- },
233
- ]);
234
- });
235
- it("extracts TodoWrite without todos", () => {
236
- const event = {
237
- type: "assistant",
238
- message: {
239
- id: "msg_123",
240
- content: [
241
- {
242
- type: "tool_use",
243
- name: "TodoWrite",
244
- input: { todos: [] },
245
- },
246
- ],
247
- },
248
- };
249
- const result = eventToBlocks(event);
250
- expect(result).toEqual([{ type: "tool", name: "TodoWrite", id: "msg_123-0" }]);
251
- });
252
- it("extracts WebFetch tool use", () => {
253
- const event = {
254
- type: "assistant",
255
- message: {
256
- id: "msg_123",
257
- content: [
258
- {
259
- type: "tool_use",
260
- name: "WebFetch",
261
- input: { url: "https://example.com" },
262
- },
263
- ],
264
- },
265
- };
266
- const result = eventToBlocks(event);
267
- expect(result).toEqual([
268
- {
269
- type: "tool",
270
- name: "WebFetch",
271
- arg: "https://example.com",
272
- id: "msg_123-0",
273
- },
274
- ]);
275
- });
276
- it("extracts WebSearch tool use", () => {
277
- const event = {
278
- type: "assistant",
279
- message: {
280
- id: "msg_123",
281
- content: [
282
- {
283
- type: "tool_use",
284
- name: "WebSearch",
285
- input: { query: "test query" },
286
- },
287
- ],
288
- },
289
- };
290
- const result = eventToBlocks(event);
291
- expect(result).toEqual([
292
- {
293
- type: "tool",
294
- name: "WebSearch",
295
- arg: "test query",
296
- id: "msg_123-0",
297
- },
298
- ]);
299
- });
300
- it("extracts Task tool use", () => {
301
- const event = {
302
- type: "assistant",
303
- message: {
304
- id: "msg_123",
305
- content: [
306
- {
307
- type: "tool_use",
308
- name: "Task",
309
- input: { description: "Run tests" },
310
- },
311
- ],
312
- },
313
- };
314
- const result = eventToBlocks(event);
315
- expect(result).toEqual([{ type: "tool", name: "Task", arg: "Run tests", id: "msg_123-0" }]);
316
- });
317
- it("extracts Skill tool use", () => {
318
- const event = {
319
- type: "assistant",
320
- message: {
321
- id: "msg_123",
322
- content: [
323
- {
324
- type: "tool_use",
325
- name: "Skill",
326
- input: { skill: "commit" },
327
- },
328
- ],
329
- },
330
- };
331
- const result = eventToBlocks(event);
332
- expect(result).toEqual([{ type: "tool", name: "Skill", arg: "commit", id: "msg_123-0" }]);
333
- });
334
- it("ignores unknown tool types", () => {
335
- const event = {
336
- type: "assistant",
337
- message: {
338
- id: "msg_123",
339
- content: [
340
- {
341
- type: "tool_use",
342
- name: "UnknownTool",
343
- input: { foo: "bar" },
344
- },
345
- ],
346
- },
347
- };
348
- const result = eventToBlocks(event);
349
- expect(result).toEqual([]);
350
- });
351
- it("handles mixed content types", () => {
352
- const event = {
353
- type: "assistant",
354
- message: {
355
- id: "msg_123",
356
- content: [
357
- { type: "text", text: "Let me read a file" },
358
- {
359
- type: "tool_use",
360
- name: "Read",
361
- input: { file_path: `${process.cwd()}/src/index.ts` },
362
- },
363
- { type: "text", text: "Done reading" },
364
- ],
365
- },
366
- };
367
- const result = eventToBlocks(event);
368
- expect(result).toEqual([
369
- { type: "text", content: "Let me read a file", id: "msg_123-0" },
370
- { type: "tool", name: "Read", arg: "src/index.ts", id: "msg_123-1" },
371
- { type: "text", content: "Done reading", id: "msg_123-2" },
372
- ]);
373
- });
374
- it("generates unique IDs for each block", () => {
375
- const event = {
376
- type: "assistant",
377
- message: {
378
- id: "msg_123",
379
- content: [
380
- { type: "text", text: "First" },
381
- {
382
- type: "tool_use",
383
- name: "Read",
384
- input: { file_path: `${process.cwd()}/file1.ts` },
385
- },
386
- { type: "text", text: "Second" },
387
- {
388
- type: "tool_use",
389
- name: "Read",
390
- input: { file_path: `${process.cwd()}/file2.ts` },
391
- },
392
- { type: "text", text: "Third" },
393
- ],
394
- },
395
- };
396
- const result = eventToBlocks(event);
397
- const ids = result.map(block => block.id);
398
- expect(ids).toEqual(["msg_123-0", "msg_123-1", "msg_123-2", "msg_123-3", "msg_123-4"]);
399
- expect(new Set(ids).size).toBe(5); // All unique
400
- });
401
- it('uses "unknown" ID when message has no ID', () => {
402
- const event = {
403
- type: "assistant",
404
- message: {
405
- content: [{ type: "text", text: "Hello" }],
406
- },
407
- };
408
- const result = eventToBlocks(event);
409
- expect(result[0].id).toBe("unknown-0");
410
- });
411
- it("extracts user message text", () => {
412
- const event = {
413
- type: "user",
414
- message: {
415
- id: "user-msg-123",
416
- role: "user",
417
- content: [{ type: "text", text: "Hello Claude" }],
418
- },
419
- };
420
- const result = eventToBlocks(event);
421
- expect(result).toEqual([{ type: "user", content: "Hello Claude", id: "user-msg-123" }]);
422
- });
423
- it("returns empty array for user message without content", () => {
424
- const event = {
425
- type: "user",
426
- message: {
427
- id: "user-msg-123",
428
- role: "user",
429
- },
430
- };
431
- const result = eventToBlocks(event);
432
- expect(result).toEqual([]);
433
- });
434
- it("concatenates multiple text blocks in user message", () => {
435
- const event = {
436
- type: "user",
437
- message: {
438
- id: "user-msg-123",
439
- role: "user",
440
- content: [
441
- { type: "text", text: "First part " },
442
- { type: "text", text: "second part" },
443
- ],
444
- },
445
- };
446
- const result = eventToBlocks(event);
447
- expect(result).toEqual([
448
- { type: "user", content: "First part second part", id: "user-msg-123" },
449
- ]);
450
- });
451
- it("generates timestamp-based ID for user message without ID", () => {
452
- const event = {
453
- type: "user",
454
- message: {
455
- role: "user",
456
- content: [{ type: "text", text: "Hello" }],
457
- },
458
- };
459
- const result = eventToBlocks(event);
460
- expect(result.length).toBe(1);
461
- expect(result[0].type).toBe("user");
462
- expect(result[0]).toHaveProperty("content", "Hello");
463
- expect(result[0].id).toMatch(/^user-\d+$/);
464
- });
465
- });
466
- //# sourceMappingURL=eventToBlocks.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eventToBlocks.test.js","sourceRoot":"","sources":["../../src/components/eventToBlocks.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare const run: () => void;
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,GAAG,YAEf,CAAA"}
@@ -1,20 +0,0 @@
1
- import type { SDKUserMessage } from "@anthropic-ai/claude-agent-sdk";
2
- /**
3
- * A message queue that can be used as an async iterable for the SDK's streamInput.
4
- * Allows pushing messages dynamically while iterating.
5
- */
6
- export declare class MessageQueue implements AsyncIterable<SDKUserMessage> {
7
- private queue;
8
- private resolvers;
9
- private closed;
10
- private nextCallCount;
11
- push(message: SDKUserMessage): void;
12
- close(): void;
13
- private getMessagePreview;
14
- [Symbol.asyncIterator](): AsyncIterator<SDKUserMessage>;
15
- }
16
- /**
17
- * Create an SDKUserMessage from text.
18
- */
19
- export declare const createUserMessage: (text: string) => SDKUserMessage;
20
- //# sourceMappingURL=MessageQueue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MessageQueue.d.ts","sourceRoot":"","sources":["../../src/lib/MessageQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAKpE;;;GAGG;AACH,qBAAa,YAAa,YAAW,aAAa,CAAC,cAAc,CAAC;IAChE,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,SAAS,CAA8D;IAC/E,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,aAAa,CAAI;IAEzB,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAmBnC,KAAK,IAAI,IAAI;IAgBb,OAAO,CAAC,iBAAiB;IAYzB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,cAAc,CAAC;CAwBxD;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,cAQ/C,CAAA"}
@@ -1,89 +0,0 @@
1
- import { createDebugLogger } from "./debug.js";
2
- const log = createDebugLogger("messagequeue");
3
- /**
4
- * A message queue that can be used as an async iterable for the SDK's streamInput.
5
- * Allows pushing messages dynamically while iterating.
6
- */
7
- export class MessageQueue {
8
- queue = [];
9
- resolvers = [];
10
- closed = false;
11
- nextCallCount = 0;
12
- push(message) {
13
- const messagePreview = this.getMessagePreview(message);
14
- log(`push() called with message: ${messagePreview}`);
15
- if (this.closed) {
16
- log(`push() ignored - queue is closed`);
17
- return;
18
- }
19
- if (this.resolvers.length > 0) {
20
- const resolve = this.resolvers.shift();
21
- log(`push() resolving pending next() call (${this.resolvers.length} resolvers remaining)`);
22
- resolve({ value: message, done: false });
23
- }
24
- else {
25
- this.queue.push(message);
26
- log(`push() added to queue (queue length: ${this.queue.length})`);
27
- }
28
- }
29
- close() {
30
- if (this.closed) {
31
- log(`close() called but already closed - no-op`);
32
- return;
33
- }
34
- log(`close() called - resolving ${this.resolvers.length} pending resolvers`);
35
- this.closed = true;
36
- // Resolve any pending iterators
37
- for (const resolve of this.resolvers) {
38
- log(`close() resolving pending resolver with done=true`);
39
- resolve({ value: undefined, done: true });
40
- }
41
- this.resolvers = [];
42
- log(`close() complete`);
43
- }
44
- getMessagePreview(message) {
45
- const content = message.message?.content;
46
- if (Array.isArray(content) && content.length > 0) {
47
- const firstBlock = content[0];
48
- if ("text" in firstBlock && typeof firstBlock.text === "string") {
49
- const text = firstBlock.text.slice(0, 50);
50
- return text.length < firstBlock.text.length ? `"${text}..."` : `"${text}"`;
51
- }
52
- }
53
- return `[${message.type} message]`;
54
- }
55
- [Symbol.asyncIterator]() {
56
- return {
57
- next: () => {
58
- this.nextCallCount++;
59
- const callId = this.nextCallCount;
60
- if (this.queue.length > 0) {
61
- const message = this.queue.shift();
62
- log(`next() #${callId}: returning queued message (${this.queue.length} remaining)`);
63
- return Promise.resolve({ value: message, done: false });
64
- }
65
- if (this.closed) {
66
- log(`next() #${callId}: queue closed, returning done=true`);
67
- return Promise.resolve({ value: undefined, done: true });
68
- }
69
- log(`next() #${callId}: queue empty, creating pending resolver (${this.resolvers.length + 1} total)`);
70
- return new Promise(resolve => {
71
- this.resolvers.push(resolve);
72
- });
73
- },
74
- };
75
- }
76
- }
77
- /**
78
- * Create an SDKUserMessage from text.
79
- */
80
- export const createUserMessage = (text) => ({
81
- type: "user",
82
- session_id: "",
83
- message: {
84
- role: "user",
85
- content: [{ type: "text", text }],
86
- },
87
- parent_tool_use_id: null,
88
- });
89
- //# sourceMappingURL=MessageQueue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MessageQueue.js","sourceRoot":"","sources":["../../src/lib/MessageQueue.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=MessageQueue.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MessageQueue.test.d.ts","sourceRoot":"","sources":["../../src/lib/MessageQueue.test.ts"],"names":[],"mappings":""}