@sudocode-ai/types 0.1.4 → 0.1.6
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.
- package/dist/schema.d.ts +2 -2
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +18 -9
- package/dist/schema.js.map +1 -1
- package/package.json +1 -1
- package/dist/claude-to-ag-ui.d.ts +0 -90
- package/dist/claude-to-ag-ui.d.ts.map +0 -1
- package/dist/claude-to-ag-ui.js +0 -153
- package/dist/claude-to-ag-ui.js.map +0 -1
package/dist/schema.d.ts
CHANGED
|
@@ -34,8 +34,8 @@ export declare const EXECUTION_LOGS_INDEXES = "\nCREATE INDEX IF NOT EXISTS idx_
|
|
|
34
34
|
/**
|
|
35
35
|
* View definitions
|
|
36
36
|
*/
|
|
37
|
-
export declare const READY_ISSUES_VIEW = "\nCREATE VIEW IF NOT EXISTS ready_issues AS\nSELECT i.*\nFROM issues i\nWHERE i.status = 'open'\n AND i.archived = 0\n AND NOT EXISTS (\n SELECT 1 FROM relationships r\n JOIN issues blocker ON r.to_id = blocker.id AND r.to_type = 'issue'\n WHERE r.
|
|
38
|
-
export declare const BLOCKED_ISSUES_VIEW = "\nCREATE VIEW IF NOT EXISTS blocked_issues AS\nSELECT\n i.*,\n COUNT(
|
|
37
|
+
export declare const READY_ISSUES_VIEW = "\nCREATE VIEW IF NOT EXISTS ready_issues AS\nSELECT i.*\nFROM issues i\nWHERE i.status = 'open'\n AND i.archived = 0\n AND NOT EXISTS (\n SELECT 1 FROM relationships r\n JOIN issues blocker ON (\n (r.relationship_type = 'blocks' AND r.from_id = blocker.id AND r.from_type = 'issue') OR\n (r.relationship_type = 'depends-on' AND r.to_id = blocker.id AND r.to_type = 'issue')\n )\n WHERE (\n (r.relationship_type = 'blocks' AND r.to_id = i.id AND r.to_type = 'issue') OR\n (r.relationship_type = 'depends-on' AND r.from_id = i.id AND r.from_type = 'issue')\n )\n AND blocker.status IN ('open', 'in_progress', 'blocked')\n );\n";
|
|
38
|
+
export declare const BLOCKED_ISSUES_VIEW = "\nCREATE VIEW IF NOT EXISTS blocked_issues AS\nSELECT\n i.*,\n COUNT(DISTINCT blocker.id) as blocked_by_count,\n GROUP_CONCAT(DISTINCT blocker.id) as blocked_by_ids\nFROM issues i\nJOIN relationships r ON (\n (r.relationship_type = 'blocks' AND i.id = r.to_id AND r.to_type = 'issue') OR\n (r.relationship_type = 'depends-on' AND i.id = r.from_id AND r.from_type = 'issue')\n)\nJOIN issues blocker ON (\n (r.relationship_type = 'blocks' AND r.from_id = blocker.id AND r.from_type = 'issue') OR\n (r.relationship_type = 'depends-on' AND r.to_id = blocker.id AND r.to_type = 'issue')\n)\nWHERE i.status IN ('open', 'in_progress', 'blocked')\n AND i.archived = 0\n AND blocker.status IN ('open', 'in_progress', 'blocked')\nGROUP BY i.id;\n";
|
|
39
39
|
/**
|
|
40
40
|
* Combined schema initialization
|
|
41
41
|
*/
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,SAAS,uSAarB,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,WAAW,ysBAiBvB,CAAC;AAEF,eAAO,MAAM,YAAY,qwBAmBxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,iaAa/B,CAAC;AAEF,eAAO,MAAM,UAAU,mNAQtB,CAAC;AAEF,eAAO,MAAM,YAAY,uZAexB,CAAC;AAEF,eAAO,MAAM,oBAAoB,6zBAmBhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,wmDAwD5B,CAAC;AAGF,eAAO,MAAM,sBAAsB,ocAYlC,CAAC;AAIF,eAAO,MAAM,oBAAoB,iaAUhC,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,aAAa,oeAQzB,CAAC;AAEF,eAAO,MAAM,cAAc,+rBAW1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,seAOjC,CAAC;AAEF,eAAO,MAAM,YAAY,kOAIxB,CAAC;AAEF,eAAO,MAAM,cAAc,2cAO1B,CAAC;AAEF,eAAO,MAAM,sBAAsB,2jBAQlC,CAAC;AAEF,eAAO,MAAM,kBAAkB,0vBAU9B,CAAC;AAEF,eAAO,MAAM,wBAAwB,oKAGpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,gRAIlC,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,SAAS,uSAarB,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,WAAW,ysBAiBvB,CAAC;AAEF,eAAO,MAAM,YAAY,qwBAmBxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,iaAa/B,CAAC;AAEF,eAAO,MAAM,UAAU,mNAQtB,CAAC;AAEF,eAAO,MAAM,YAAY,uZAexB,CAAC;AAEF,eAAO,MAAM,oBAAoB,6zBAmBhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,wmDAwD5B,CAAC;AAGF,eAAO,MAAM,sBAAsB,ocAYlC,CAAC;AAIF,eAAO,MAAM,oBAAoB,iaAUhC,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,aAAa,oeAQzB,CAAC;AAEF,eAAO,MAAM,cAAc,+rBAW1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,seAOjC,CAAC;AAEF,eAAO,MAAM,YAAY,kOAIxB,CAAC;AAEF,eAAO,MAAM,cAAc,2cAO1B,CAAC;AAEF,eAAO,MAAM,sBAAsB,2jBAQlC,CAAC;AAEF,eAAO,MAAM,kBAAkB,0vBAU9B,CAAC;AAEF,eAAO,MAAM,wBAAwB,oKAGpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,gRAIlC,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,iBAAiB,gqBAkB7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,ovBAmB/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,UAUtB,CAAC;AAEF,eAAO,MAAM,WAAW,UAUvB,CAAC;AAEF,eAAO,MAAM,SAAS,UAA2C,CAAC"}
|
package/dist/schema.js
CHANGED
|
@@ -289,10 +289,14 @@ WHERE i.status = 'open'
|
|
|
289
289
|
AND i.archived = 0
|
|
290
290
|
AND NOT EXISTS (
|
|
291
291
|
SELECT 1 FROM relationships r
|
|
292
|
-
JOIN issues blocker ON
|
|
293
|
-
|
|
294
|
-
AND r.
|
|
295
|
-
|
|
292
|
+
JOIN issues blocker ON (
|
|
293
|
+
(r.relationship_type = 'blocks' AND r.from_id = blocker.id AND r.from_type = 'issue') OR
|
|
294
|
+
(r.relationship_type = 'depends-on' AND r.to_id = blocker.id AND r.to_type = 'issue')
|
|
295
|
+
)
|
|
296
|
+
WHERE (
|
|
297
|
+
(r.relationship_type = 'blocks' AND r.to_id = i.id AND r.to_type = 'issue') OR
|
|
298
|
+
(r.relationship_type = 'depends-on' AND r.from_id = i.id AND r.from_type = 'issue')
|
|
299
|
+
)
|
|
296
300
|
AND blocker.status IN ('open', 'in_progress', 'blocked')
|
|
297
301
|
);
|
|
298
302
|
`;
|
|
@@ -300,14 +304,19 @@ export const BLOCKED_ISSUES_VIEW = `
|
|
|
300
304
|
CREATE VIEW IF NOT EXISTS blocked_issues AS
|
|
301
305
|
SELECT
|
|
302
306
|
i.*,
|
|
303
|
-
COUNT(
|
|
304
|
-
GROUP_CONCAT(
|
|
307
|
+
COUNT(DISTINCT blocker.id) as blocked_by_count,
|
|
308
|
+
GROUP_CONCAT(DISTINCT blocker.id) as blocked_by_ids
|
|
305
309
|
FROM issues i
|
|
306
|
-
JOIN relationships r ON
|
|
307
|
-
|
|
310
|
+
JOIN relationships r ON (
|
|
311
|
+
(r.relationship_type = 'blocks' AND i.id = r.to_id AND r.to_type = 'issue') OR
|
|
312
|
+
(r.relationship_type = 'depends-on' AND i.id = r.from_id AND r.from_type = 'issue')
|
|
313
|
+
)
|
|
314
|
+
JOIN issues blocker ON (
|
|
315
|
+
(r.relationship_type = 'blocks' AND r.from_id = blocker.id AND r.from_type = 'issue') OR
|
|
316
|
+
(r.relationship_type = 'depends-on' AND r.to_id = blocker.id AND r.to_type = 'issue')
|
|
317
|
+
)
|
|
308
318
|
WHERE i.status IN ('open', 'in_progress', 'blocked')
|
|
309
319
|
AND i.archived = 0
|
|
310
|
-
AND r.relationship_type = 'blocks'
|
|
311
320
|
AND blocker.status IN ('open', 'in_progress', 'blocked')
|
|
312
321
|
GROUP BY i.id;
|
|
313
322
|
`;
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;CAaxB,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;CAiB1B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;CAmB3B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;CAalC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;CAQzB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;CAe3B,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;CAmBnC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwD/B,CAAC;AAEF,yBAAyB;AACzB,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;CAYrC,CAAC;AAEF,0DAA0D;AAC1D,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;CAUnC,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;CAQ5B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;CAW7B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;CAOpC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;CAI3B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;CAO7B,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;CAQrC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;CAUjC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;CAGvC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;CAIrC,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;CAaxB,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;CAiB1B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;CAmB3B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;CAalC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;CAQzB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;CAe3B,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;CAmBnC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwD/B,CAAC;AAEF,yBAAyB;AACzB,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;CAYrC,CAAC;AAEF,0DAA0D;AAC1D,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;CAUnC,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;CAQ5B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;CAW7B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;CAOpC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;CAI3B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;CAO7B,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;CAQrC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;CAUjC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;CAGvC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;CAIrC,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;CAkBhC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;CAmBlC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,WAAW;IACX,YAAY;IACZ,mBAAmB;IACnB,UAAU;IACV,YAAY;IACZ,oBAAoB;IACpB,gBAAgB;IAChB,sBAAsB;IACtB,oBAAoB;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,aAAa;IACb,cAAc;IACd,qBAAqB;IACrB,YAAY;IACZ,cAAc;IACd,sBAAsB;IACtB,kBAAkB;IAClB,wBAAwB;IACxB,sBAAsB;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Claude to AG-UI Transformation Logic
|
|
3
|
-
*
|
|
4
|
-
* Shared transformation functions for converting raw Claude stream-json messages
|
|
5
|
-
* to AG-UI events. Used by both:
|
|
6
|
-
* - Backend: Real-time transformation for SSE streaming
|
|
7
|
-
* - Frontend: Historical transformation for log replay
|
|
8
|
-
*
|
|
9
|
-
* @module claude-to-ag-ui
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* Claude stream-json message format
|
|
13
|
-
* Based on Claude Code CLI output structure
|
|
14
|
-
*/
|
|
15
|
-
export interface ClaudeStreamMessage {
|
|
16
|
-
type: "assistant" | "tool_result" | "result" | "error";
|
|
17
|
-
message?: {
|
|
18
|
-
id?: string;
|
|
19
|
-
model?: string;
|
|
20
|
-
role?: string;
|
|
21
|
-
content?: Array<{
|
|
22
|
-
type: "text" | "tool_use";
|
|
23
|
-
text?: string;
|
|
24
|
-
id?: string;
|
|
25
|
-
name?: string;
|
|
26
|
-
input?: any;
|
|
27
|
-
}>;
|
|
28
|
-
stop_reason?: string;
|
|
29
|
-
stop_sequence?: string | null;
|
|
30
|
-
};
|
|
31
|
-
result?: {
|
|
32
|
-
tool_use_id?: string;
|
|
33
|
-
content?: Array<{
|
|
34
|
-
type: string;
|
|
35
|
-
text?: string;
|
|
36
|
-
}>;
|
|
37
|
-
};
|
|
38
|
-
usage?: {
|
|
39
|
-
input_tokens?: number;
|
|
40
|
-
output_tokens?: number;
|
|
41
|
-
cache_read_input_tokens?: number;
|
|
42
|
-
cache_creation_input_tokens?: number;
|
|
43
|
-
};
|
|
44
|
-
error?: {
|
|
45
|
-
message: string;
|
|
46
|
-
type?: string;
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* AG-UI Event types
|
|
51
|
-
* Minimal interface needed for transformation
|
|
52
|
-
*/
|
|
53
|
-
export interface AgUiEvent {
|
|
54
|
-
type: string;
|
|
55
|
-
timestamp: number;
|
|
56
|
-
[key: string]: any;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Transform a single Claude stream-json message to AG-UI events
|
|
60
|
-
*
|
|
61
|
-
* @param message - Raw Claude message from stream-json output
|
|
62
|
-
* @param startSequence - Starting sequence number for events
|
|
63
|
-
* @returns Array of AG-UI events (may be empty for unhandled message types)
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* ```typescript
|
|
67
|
-
* const message = JSON.parse(line);
|
|
68
|
-
* const events = transformClaudeMessageToAgUi(message, 0);
|
|
69
|
-
* events.forEach(event => console.log(event));
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
export declare function transformClaudeMessageToAgUi(message: ClaudeStreamMessage, startSequence: number): AgUiEvent[];
|
|
73
|
-
/**
|
|
74
|
-
* Parse array of raw execution logs (NDJSON format) to AG-UI events
|
|
75
|
-
*
|
|
76
|
-
* Processes each line as a separate Claude message and transforms to AG-UI events.
|
|
77
|
-
* Handles parse errors gracefully by logging warnings and continuing.
|
|
78
|
-
*
|
|
79
|
-
* @param rawLogs - Array of NDJSON log lines
|
|
80
|
-
* @returns Promise resolving to array of AG-UI events
|
|
81
|
-
*
|
|
82
|
-
* @example
|
|
83
|
-
* ```typescript
|
|
84
|
-
* const logs = await fetch('/api/executions/123/logs').then(r => r.json());
|
|
85
|
-
* const events = await parseExecutionLogs(logs.logs);
|
|
86
|
-
* console.log(`Parsed ${events.length} events`);
|
|
87
|
-
* ```
|
|
88
|
-
*/
|
|
89
|
-
export declare function parseExecutionLogs(rawLogs: string[]): Promise<AgUiEvent[]>;
|
|
90
|
-
//# sourceMappingURL=claude-to-ag-ui.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-to-ag-ui.d.ts","sourceRoot":"","sources":["../src/claude-to-ag-ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvD,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,KAAK,CAAC;YACd,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;YAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,EAAE,CAAC,EAAE,MAAM,CAAC;YACZ,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,GAAG,CAAC;SACb,CAAC,CAAC;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;IACF,MAAM,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAClD,CAAC;IACF,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,2BAA2B,CAAC,EAAE,MAAM,CAAC;KACtC,CAAC;IACF,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,aAAa,EAAE,MAAM,GACpB,SAAS,EAAE,CAoGb;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,SAAS,EAAE,CAAC,CAiCtB"}
|
package/dist/claude-to-ag-ui.js
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Claude to AG-UI Transformation Logic
|
|
3
|
-
*
|
|
4
|
-
* Shared transformation functions for converting raw Claude stream-json messages
|
|
5
|
-
* to AG-UI events. Used by both:
|
|
6
|
-
* - Backend: Real-time transformation for SSE streaming
|
|
7
|
-
* - Frontend: Historical transformation for log replay
|
|
8
|
-
*
|
|
9
|
-
* @module claude-to-ag-ui
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* Transform a single Claude stream-json message to AG-UI events
|
|
13
|
-
*
|
|
14
|
-
* @param message - Raw Claude message from stream-json output
|
|
15
|
-
* @param startSequence - Starting sequence number for events
|
|
16
|
-
* @returns Array of AG-UI events (may be empty for unhandled message types)
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```typescript
|
|
20
|
-
* const message = JSON.parse(line);
|
|
21
|
-
* const events = transformClaudeMessageToAgUi(message, 0);
|
|
22
|
-
* events.forEach(event => console.log(event));
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
export function transformClaudeMessageToAgUi(message, startSequence) {
|
|
26
|
-
const events = [];
|
|
27
|
-
const timestamp = Date.now();
|
|
28
|
-
switch (message.type) {
|
|
29
|
-
case "assistant": {
|
|
30
|
-
// Extract content blocks from assistant message
|
|
31
|
-
const content = message.message?.content || [];
|
|
32
|
-
for (const block of content) {
|
|
33
|
-
if (block.type === "text" && block.text) {
|
|
34
|
-
// Text message → TEXT_MESSAGE_CONTENT event
|
|
35
|
-
events.push({
|
|
36
|
-
type: "CUSTOM",
|
|
37
|
-
timestamp,
|
|
38
|
-
name: "TEXT_MESSAGE_CONTENT",
|
|
39
|
-
value: {
|
|
40
|
-
content: block.text,
|
|
41
|
-
},
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
else if (block.type === "tool_use") {
|
|
45
|
-
// Tool use → TOOL_CALL_START + TOOL_CALL_ARGS events
|
|
46
|
-
const toolId = block.id || `tool-${Date.now()}`;
|
|
47
|
-
events.push({
|
|
48
|
-
type: "TOOL_CALL_START",
|
|
49
|
-
timestamp,
|
|
50
|
-
toolCallId: toolId,
|
|
51
|
-
toolCallName: block.name || "unknown",
|
|
52
|
-
}, {
|
|
53
|
-
type: "TOOL_CALL_ARGS",
|
|
54
|
-
timestamp,
|
|
55
|
-
toolCallId: toolId,
|
|
56
|
-
delta: JSON.stringify(block.input || {}),
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
case "tool_result": {
|
|
63
|
-
// Tool result → TOOL_CALL_END + TOOL_CALL_RESULT events
|
|
64
|
-
const toolUseId = message.result?.tool_use_id || "unknown";
|
|
65
|
-
const resultContent = message.result?.content || [];
|
|
66
|
-
const resultText = resultContent.find((c) => c.type === "text")?.text || "";
|
|
67
|
-
events.push({
|
|
68
|
-
type: "TOOL_CALL_END",
|
|
69
|
-
timestamp,
|
|
70
|
-
toolCallId: toolUseId,
|
|
71
|
-
}, {
|
|
72
|
-
type: "TOOL_CALL_RESULT",
|
|
73
|
-
timestamp,
|
|
74
|
-
messageId: `msg-${toolUseId}`,
|
|
75
|
-
toolCallId: toolUseId,
|
|
76
|
-
content: resultText,
|
|
77
|
-
});
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
80
|
-
case "result": {
|
|
81
|
-
// Result message with usage → USAGE_UPDATE event
|
|
82
|
-
if (message.usage) {
|
|
83
|
-
const usage = message.usage;
|
|
84
|
-
events.push({
|
|
85
|
-
type: "CUSTOM",
|
|
86
|
-
timestamp,
|
|
87
|
-
name: "USAGE_UPDATE",
|
|
88
|
-
value: {
|
|
89
|
-
inputTokens: usage.input_tokens || 0,
|
|
90
|
-
outputTokens: usage.output_tokens || 0,
|
|
91
|
-
cacheTokens: usage.cache_read_input_tokens || 0,
|
|
92
|
-
totalTokens: (usage.input_tokens || 0) + (usage.output_tokens || 0),
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
case "error": {
|
|
99
|
-
// Error message → RUN_ERROR event
|
|
100
|
-
events.push({
|
|
101
|
-
type: "RUN_ERROR",
|
|
102
|
-
timestamp,
|
|
103
|
-
message: message.error?.message || "Unknown error",
|
|
104
|
-
errorType: message.error?.type,
|
|
105
|
-
});
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return events;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Parse array of raw execution logs (NDJSON format) to AG-UI events
|
|
113
|
-
*
|
|
114
|
-
* Processes each line as a separate Claude message and transforms to AG-UI events.
|
|
115
|
-
* Handles parse errors gracefully by logging warnings and continuing.
|
|
116
|
-
*
|
|
117
|
-
* @param rawLogs - Array of NDJSON log lines
|
|
118
|
-
* @returns Promise resolving to array of AG-UI events
|
|
119
|
-
*
|
|
120
|
-
* @example
|
|
121
|
-
* ```typescript
|
|
122
|
-
* const logs = await fetch('/api/executions/123/logs').then(r => r.json());
|
|
123
|
-
* const events = await parseExecutionLogs(logs.logs);
|
|
124
|
-
* console.log(`Parsed ${events.length} events`);
|
|
125
|
-
* ```
|
|
126
|
-
*/
|
|
127
|
-
export async function parseExecutionLogs(rawLogs) {
|
|
128
|
-
const events = [];
|
|
129
|
-
let sequence = 0;
|
|
130
|
-
for (let i = 0; i < rawLogs.length; i++) {
|
|
131
|
-
const line = rawLogs[i].trim();
|
|
132
|
-
// Skip empty lines
|
|
133
|
-
if (!line) {
|
|
134
|
-
continue;
|
|
135
|
-
}
|
|
136
|
-
try {
|
|
137
|
-
// Parse JSON line
|
|
138
|
-
const message = JSON.parse(line);
|
|
139
|
-
// Transform to AG-UI events
|
|
140
|
-
const agUiEvents = transformClaudeMessageToAgUi(message, sequence);
|
|
141
|
-
// Accumulate events
|
|
142
|
-
events.push(...agUiEvents);
|
|
143
|
-
sequence += agUiEvents.length;
|
|
144
|
-
}
|
|
145
|
-
catch (error) {
|
|
146
|
-
// Log warning but continue processing
|
|
147
|
-
console.warn(`[parseExecutionLogs] Failed to parse log line ${i + 1}:`, error instanceof Error ? error.message : String(error));
|
|
148
|
-
// Don't throw - continue with remaining logs
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return events;
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=claude-to-ag-ui.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-to-ag-ui.js","sourceRoot":"","sources":["../src/claude-to-ag-ui.ts"],"names":[],"mappings":"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"}
|