@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 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.from_id = i.id\n AND r.from_type = 'issue'\n AND r.relationship_type = 'blocks'\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(r.to_id) as blocked_by_count,\n GROUP_CONCAT(r.to_id) as blocked_by_ids\nFROM issues i\nJOIN relationships r ON i.id = r.from_id AND r.from_type = 'issue'\nJOIN issues blocker ON r.to_id = blocker.id AND r.to_type = 'issue'\nWHERE i.status IN ('open', 'in_progress', 'blocked')\n AND i.archived = 0\n AND r.relationship_type = 'blocks'\n AND blocker.status IN ('open', 'in_progress', 'blocked')\nGROUP BY i.id;\n";
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
  */
@@ -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,yaAc7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,kfAc/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,UAUtB,CAAC;AAEF,eAAO,MAAM,WAAW,UAUvB,CAAC;AAEF,eAAO,MAAM,SAAS,UAA2C,CAAC"}
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 r.to_id = blocker.id AND r.to_type = 'issue'
293
- WHERE r.from_id = i.id
294
- AND r.from_type = 'issue'
295
- AND r.relationship_type = 'blocks'
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(r.to_id) as blocked_by_count,
304
- GROUP_CONCAT(r.to_id) as blocked_by_ids
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 i.id = r.from_id AND r.from_type = 'issue'
307
- JOIN issues blocker ON r.to_id = blocker.id AND r.to_type = 'issue'
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
  `;
@@ -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;;;;;;;;;;;;;;CAchC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;CAclC,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"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudocode-ai/types",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "TypeScript type definitions for sudocode",
5
5
  "types": "src/index.d.ts",
6
6
  "type": "module",
@@ -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"}
@@ -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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"}