@loom-framework/backend 0.1.0-alpha.12 → 0.1.0-alpha.14
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.
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Parses `claude -p --output-format stream-json --verbose --include-partial-messages` output stream.
|
|
5
5
|
* Supports real-time streaming with thinking, tool calls, and text deltas.
|
|
6
|
+
*
|
|
7
|
+
* Key insight: Tool input comes via input_json_delta events, need to accumulate them.
|
|
6
8
|
*/
|
|
7
9
|
import type { AIChunk } from '@loom-framework/core';
|
|
8
10
|
/** Parser log entry for diagnostics */
|
|
@@ -21,6 +23,7 @@ export type ParserLogger = (entry: ParserLogEntry) => void;
|
|
|
21
23
|
* 2. Strip ANSI escape codes
|
|
22
24
|
* 3. Parse each line as JSON
|
|
23
25
|
* 4. Map to appropriate AIChunk types
|
|
26
|
+
* 5. Accumulate tool input from input_json_delta events
|
|
24
27
|
*/
|
|
25
28
|
export declare function parseClaudeOutput(stdout: NodeJS.ReadableStream, logger?: ParserLogger): AsyncGenerator<AIChunk>;
|
|
26
29
|
//# sourceMappingURL=output-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-parser.d.ts","sourceRoot":"","sources":["../../src/ai/output-parser.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"output-parser.d.ts","sourceRoot":"","sources":["../../src/ai/output-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAW,MAAM,sBAAsB,CAAC;AAE7D,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,gBAAgB,GAAG,aAAa,GAAG,aAAa,CAAC;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AA0F3D;;;;;;;;;GASG;AACH,wBAAuB,iBAAiB,CACtC,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,MAAM,CAAC,EAAE,YAAY,GACpB,cAAc,CAAC,OAAO,CAAC,CAgCzB"}
|
package/dist/ai/output-parser.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Parses `claude -p --output-format stream-json --verbose --include-partial-messages` output stream.
|
|
5
5
|
* Supports real-time streaming with thinking, tool calls, and text deltas.
|
|
6
|
+
*
|
|
7
|
+
* Key insight: Tool input comes via input_json_delta events, need to accumulate them.
|
|
6
8
|
*/
|
|
7
9
|
/** ANSI escape code pattern */
|
|
8
10
|
const ANSI_ESCAPE = /\x1b\[[0-9;]*m/g;
|
|
@@ -14,10 +16,15 @@ const ANSI_ESCAPE = /\x1b\[[0-9;]*m/g;
|
|
|
14
16
|
* 2. Strip ANSI escape codes
|
|
15
17
|
* 3. Parse each line as JSON
|
|
16
18
|
* 4. Map to appropriate AIChunk types
|
|
19
|
+
* 5. Accumulate tool input from input_json_delta events
|
|
17
20
|
*/
|
|
18
21
|
export async function* parseClaudeOutput(stdout, logger) {
|
|
19
22
|
let buffer = '';
|
|
20
|
-
|
|
23
|
+
const state = {
|
|
24
|
+
toolInputBuffers: new Map(),
|
|
25
|
+
activeToolId: null,
|
|
26
|
+
activeToolName: null,
|
|
27
|
+
};
|
|
21
28
|
for await (const chunk of stdout) {
|
|
22
29
|
buffer += chunk.toString();
|
|
23
30
|
// Process complete lines
|
|
@@ -27,11 +34,8 @@ export async function* parseClaudeOutput(stdout, logger) {
|
|
|
27
34
|
const trimmed = line.trim();
|
|
28
35
|
if (!trimmed)
|
|
29
36
|
continue;
|
|
30
|
-
const chunks = parseLine(trimmed, logger,
|
|
37
|
+
const chunks = parseLine(trimmed, logger, state);
|
|
31
38
|
for (const c of chunks) {
|
|
32
|
-
if (c.type === 'tool_call' && c.toolUseId) {
|
|
33
|
-
currentToolUseId = c.toolUseId;
|
|
34
|
-
}
|
|
35
39
|
yield c;
|
|
36
40
|
}
|
|
37
41
|
}
|
|
@@ -39,23 +43,23 @@ export async function* parseClaudeOutput(stdout, logger) {
|
|
|
39
43
|
// Process any remaining buffer
|
|
40
44
|
if (buffer.trim()) {
|
|
41
45
|
const cleanOutput = buffer.replace(ANSI_ESCAPE, '').trim();
|
|
42
|
-
const chunks = parseLine(cleanOutput, logger,
|
|
46
|
+
const chunks = parseLine(cleanOutput, logger, state);
|
|
43
47
|
for (const c of chunks)
|
|
44
48
|
yield c;
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
|
-
function parseLine(line, logger,
|
|
51
|
+
function parseLine(line, logger, state) {
|
|
48
52
|
try {
|
|
49
53
|
const data = JSON.parse(line);
|
|
50
54
|
logger?.({ type: 'LINE_PARSED', timestamp: new Date().toISOString(), message: `Parsed ${data.type}` });
|
|
51
|
-
return mapToChunks(data,
|
|
55
|
+
return mapToChunks(data, state);
|
|
52
56
|
}
|
|
53
57
|
catch {
|
|
54
58
|
logger?.({ type: 'PARSE_ERROR', timestamp: new Date().toISOString(), message: 'Failed to parse line', data: line.slice(0, 200) });
|
|
55
59
|
return [];
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
|
-
function mapToChunks(data,
|
|
62
|
+
function mapToChunks(data, state) {
|
|
59
63
|
switch (data.type) {
|
|
60
64
|
case 'system':
|
|
61
65
|
if (data.subtype === 'init' && data.session_id) {
|
|
@@ -63,9 +67,10 @@ function mapToChunks(data, currentToolUseId) {
|
|
|
63
67
|
}
|
|
64
68
|
return [];
|
|
65
69
|
case 'stream_event':
|
|
66
|
-
return handleStreamEvent(data);
|
|
70
|
+
return handleStreamEvent(data, state);
|
|
67
71
|
case 'assistant':
|
|
68
|
-
|
|
72
|
+
// Process assistant message - it contains complete tool_use with full input
|
|
73
|
+
return handleAssistantMessage(data, state);
|
|
69
74
|
case 'user':
|
|
70
75
|
return handleUserMessage(data);
|
|
71
76
|
case 'result':
|
|
@@ -74,46 +79,110 @@ function mapToChunks(data, currentToolUseId) {
|
|
|
74
79
|
return [];
|
|
75
80
|
}
|
|
76
81
|
}
|
|
77
|
-
function handleStreamEvent(wrapper) {
|
|
82
|
+
function handleStreamEvent(wrapper, state) {
|
|
78
83
|
const { event } = wrapper;
|
|
79
84
|
switch (event.type) {
|
|
80
85
|
case 'content_block_delta':
|
|
86
|
+
// Handle thinking and text deltas
|
|
81
87
|
if (event.delta?.type === 'thinking_delta' && event.delta.thinking) {
|
|
82
88
|
return [{ type: 'thinking', content: event.delta.thinking }];
|
|
83
89
|
}
|
|
84
90
|
if (event.delta?.type === 'text_delta' && event.delta.text) {
|
|
85
91
|
return [{ type: 'content', content: event.delta.text }];
|
|
86
92
|
}
|
|
93
|
+
// Handle tool input JSON delta - accumulate it
|
|
94
|
+
if (event.delta?.type === 'input_json_delta' && event.delta.partial_json) {
|
|
95
|
+
if (state.activeToolId) {
|
|
96
|
+
const current = state.toolInputBuffers.get(state.activeToolId) || '';
|
|
97
|
+
state.toolInputBuffers.set(state.activeToolId, current + event.delta.partial_json);
|
|
98
|
+
}
|
|
99
|
+
return []; // Don't emit until tool call is complete
|
|
100
|
+
}
|
|
87
101
|
return [];
|
|
88
102
|
case 'content_block_start':
|
|
89
103
|
if (event.content_block?.type === 'tool_use') {
|
|
104
|
+
const toolUseId = event.content_block.id || '';
|
|
105
|
+
const toolName = event.content_block.name || 'unknown';
|
|
106
|
+
// Set active tool for accumulation
|
|
107
|
+
state.activeToolId = toolUseId;
|
|
108
|
+
state.activeToolName = toolName;
|
|
109
|
+
// Initialize buffer if there's already input
|
|
110
|
+
if (event.content_block.input !== undefined) {
|
|
111
|
+
state.toolInputBuffers.set(toolUseId, JSON.stringify(event.content_block.input));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
state.toolInputBuffers.set(toolUseId, '');
|
|
115
|
+
}
|
|
116
|
+
// Emit tool_call without input yet (will be updated later)
|
|
90
117
|
return [{
|
|
91
118
|
type: 'tool_call',
|
|
92
|
-
toolUseId
|
|
93
|
-
toolName
|
|
119
|
+
toolUseId,
|
|
120
|
+
toolName,
|
|
94
121
|
toolInput: event.content_block.input,
|
|
95
122
|
}];
|
|
96
123
|
}
|
|
97
124
|
return [];
|
|
125
|
+
case 'content_block_stop':
|
|
126
|
+
// When content block stops, emit the complete tool input if we have one
|
|
127
|
+
if (state.activeToolId && event.index !== undefined) {
|
|
128
|
+
const accumulatedInput = state.toolInputBuffers.get(state.activeToolId);
|
|
129
|
+
if (accumulatedInput && state.activeToolName) {
|
|
130
|
+
try {
|
|
131
|
+
const parsedInput = JSON.parse(accumulatedInput);
|
|
132
|
+
// Emit update with complete input
|
|
133
|
+
const chunks = [{
|
|
134
|
+
type: 'tool_call',
|
|
135
|
+
toolUseId: state.activeToolId,
|
|
136
|
+
toolName: state.activeToolName,
|
|
137
|
+
toolInput: parsedInput,
|
|
138
|
+
}];
|
|
139
|
+
state.activeToolId = null;
|
|
140
|
+
state.activeToolName = null;
|
|
141
|
+
return chunks;
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// JSON not complete yet, keep state
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
state.activeToolId = null;
|
|
148
|
+
state.activeToolName = null;
|
|
149
|
+
}
|
|
150
|
+
return [];
|
|
98
151
|
default:
|
|
99
152
|
return [];
|
|
100
153
|
}
|
|
101
154
|
}
|
|
102
|
-
function handleAssistantMessage(data) {
|
|
155
|
+
function handleAssistantMessage(data, state) {
|
|
103
156
|
const chunks = [];
|
|
104
157
|
for (const block of data.message.content || []) {
|
|
105
158
|
if (block.type === 'thinking' && block.thinking) {
|
|
106
|
-
|
|
159
|
+
// Skip - already sent via thinking_delta
|
|
107
160
|
}
|
|
108
161
|
if (block.type === 'text' && block.text) {
|
|
109
|
-
|
|
162
|
+
// Skip - already sent via text_delta
|
|
110
163
|
}
|
|
111
164
|
if (block.type === 'tool_use') {
|
|
165
|
+
// Assistant message contains complete tool_use with full input
|
|
166
|
+
// Use the accumulated input if we have it, otherwise use the block's input
|
|
167
|
+
const toolUseId = block.id || '';
|
|
168
|
+
const accumulatedInput = state.toolInputBuffers.get(toolUseId);
|
|
169
|
+
let toolInput;
|
|
170
|
+
if (accumulatedInput) {
|
|
171
|
+
try {
|
|
172
|
+
toolInput = JSON.parse(accumulatedInput);
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
toolInput = block.input;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
toolInput = block.input;
|
|
180
|
+
}
|
|
112
181
|
chunks.push({
|
|
113
182
|
type: 'tool_call',
|
|
114
|
-
toolUseId
|
|
183
|
+
toolUseId,
|
|
115
184
|
toolName: block.name || 'unknown',
|
|
116
|
-
toolInput
|
|
185
|
+
toolInput,
|
|
117
186
|
});
|
|
118
187
|
}
|
|
119
188
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-parser.js","sourceRoot":"","sources":["../../src/ai/output-parser.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"output-parser.js","sourceRoot":"","sources":["../../src/ai/output-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/bin.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loom-framework/backend",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.14",
|
|
4
4
|
"description": "Loom framework backend - AI communication, SSE chat, REST routes",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"lint": "tsc --noEmit"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@loom-framework/core": "^0.1.0-alpha.
|
|
28
|
+
"@loom-framework/core": "^0.1.0-alpha.14",
|
|
29
29
|
"fastify": "^5.2.0",
|
|
30
30
|
"@fastify/cors": "^10.0.0",
|
|
31
31
|
"@fastify/static": "^8.0.0"
|