@posthog/agent 1.24.0 → 1.24.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 (116) hide show
  1. package/LICENSE +33 -0
  2. package/dist/index.d.ts +11 -11
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -3
  5. package/dist/src/adapters/claude/claude-adapter.d.ts +3 -3
  6. package/dist/src/adapters/claude/claude-adapter.d.ts.map +1 -1
  7. package/dist/src/adapters/claude/claude-adapter.js +111 -156
  8. package/dist/src/adapters/claude/claude-adapter.js.map +1 -1
  9. package/dist/src/adapters/claude/tool-mapper.d.ts +1 -1
  10. package/dist/src/adapters/claude/tool-mapper.d.ts.map +1 -1
  11. package/dist/src/adapters/claude/tool-mapper.js.map +1 -1
  12. package/dist/src/adapters/types.d.ts +1 -1
  13. package/dist/src/adapters/types.d.ts.map +1 -1
  14. package/dist/src/agent.d.ts +7 -7
  15. package/dist/src/agent.d.ts.map +1 -1
  16. package/dist/src/agent.js +85 -143
  17. package/dist/src/agent.js.map +1 -1
  18. package/dist/src/agents/execution.js.map +1 -1
  19. package/dist/src/agents/planning.js.map +1 -1
  20. package/dist/src/agents/research.js.map +1 -1
  21. package/dist/src/file-manager.d.ts +4 -4
  22. package/dist/src/file-manager.d.ts.map +1 -1
  23. package/dist/src/file-manager.js +58 -59
  24. package/dist/src/file-manager.js.map +1 -1
  25. package/dist/src/git-manager.d.ts +1 -1
  26. package/dist/src/git-manager.d.ts.map +1 -1
  27. package/dist/src/git-manager.js +70 -87
  28. package/dist/src/git-manager.js.map +1 -1
  29. package/dist/src/posthog-api.d.ts +3 -2
  30. package/dist/src/posthog-api.d.ts.map +1 -1
  31. package/dist/src/posthog-api.js +22 -22
  32. package/dist/src/posthog-api.js.map +1 -1
  33. package/dist/src/prompt-builder.d.ts +3 -3
  34. package/dist/src/prompt-builder.d.ts.map +1 -1
  35. package/dist/src/prompt-builder.js +93 -123
  36. package/dist/src/prompt-builder.js.map +1 -1
  37. package/dist/src/task-manager.d.ts +4 -4
  38. package/dist/src/task-manager.d.ts.map +1 -1
  39. package/dist/src/task-manager.js +18 -19
  40. package/dist/src/task-manager.js.map +1 -1
  41. package/dist/src/task-progress-reporter.d.ts +4 -3
  42. package/dist/src/task-progress-reporter.d.ts.map +1 -1
  43. package/dist/src/task-progress-reporter.js +54 -59
  44. package/dist/src/task-progress-reporter.js.map +1 -1
  45. package/dist/src/template-manager.d.ts +1 -1
  46. package/dist/src/template-manager.d.ts.map +1 -1
  47. package/dist/src/template-manager.js +28 -30
  48. package/dist/src/template-manager.js.map +1 -1
  49. package/dist/src/todo-manager.d.ts +3 -3
  50. package/dist/src/todo-manager.d.ts.map +1 -1
  51. package/dist/src/todo-manager.js +24 -29
  52. package/dist/src/todo-manager.js.map +1 -1
  53. package/dist/src/tools/registry.d.ts +1 -1
  54. package/dist/src/tools/registry.js +60 -60
  55. package/dist/src/tools/registry.js.map +1 -1
  56. package/dist/src/tools/types.d.ts +31 -31
  57. package/dist/src/types.d.ts +33 -33
  58. package/dist/src/types.d.ts.map +1 -1
  59. package/dist/src/types.js.map +1 -1
  60. package/dist/src/utils/logger.d.ts +4 -4
  61. package/dist/src/utils/logger.d.ts.map +1 -1
  62. package/dist/src/utils/logger.js +8 -8
  63. package/dist/src/utils/logger.js.map +1 -1
  64. package/dist/src/workflow/config.d.ts +1 -1
  65. package/dist/src/workflow/config.d.ts.map +1 -1
  66. package/dist/src/workflow/config.js +18 -18
  67. package/dist/src/workflow/config.js.map +1 -1
  68. package/dist/src/workflow/steps/build.d.ts +1 -1
  69. package/dist/src/workflow/steps/build.d.ts.map +1 -1
  70. package/dist/src/workflow/steps/build.js +38 -46
  71. package/dist/src/workflow/steps/build.js.map +1 -1
  72. package/dist/src/workflow/steps/finalize.d.ts +1 -1
  73. package/dist/src/workflow/steps/finalize.d.ts.map +1 -1
  74. package/dist/src/workflow/steps/finalize.js +48 -54
  75. package/dist/src/workflow/steps/finalize.js.map +1 -1
  76. package/dist/src/workflow/steps/plan.d.ts +1 -1
  77. package/dist/src/workflow/steps/plan.d.ts.map +1 -1
  78. package/dist/src/workflow/steps/plan.js +46 -58
  79. package/dist/src/workflow/steps/plan.js.map +1 -1
  80. package/dist/src/workflow/steps/research.d.ts +1 -1
  81. package/dist/src/workflow/steps/research.d.ts.map +1 -1
  82. package/dist/src/workflow/steps/research.js +56 -68
  83. package/dist/src/workflow/steps/research.js.map +1 -1
  84. package/dist/src/workflow/types.d.ts +12 -12
  85. package/dist/src/workflow/types.d.ts.map +1 -1
  86. package/dist/src/workflow/utils.d.ts +1 -1
  87. package/dist/src/workflow/utils.d.ts.map +1 -1
  88. package/dist/src/workflow/utils.js +4 -7
  89. package/dist/src/workflow/utils.js.map +1 -1
  90. package/package.json +6 -6
  91. package/src/adapters/claude/claude-adapter.ts +168 -220
  92. package/src/adapters/claude/tool-mapper.ts +2 -2
  93. package/src/adapters/types.ts +1 -1
  94. package/src/agent.ts +444 -579
  95. package/src/agents/execution.ts +1 -1
  96. package/src/agents/planning.ts +1 -1
  97. package/src/agents/research.ts +1 -0
  98. package/src/file-manager.ts +63 -64
  99. package/src/git-manager.ts +88 -144
  100. package/src/posthog-api.ts +82 -122
  101. package/src/prompt-builder.ts +135 -180
  102. package/src/task-manager.ts +30 -38
  103. package/src/task-progress-reporter.ts +59 -70
  104. package/src/template-manager.ts +45 -98
  105. package/src/todo-manager.ts +30 -35
  106. package/src/tools/registry.ts +62 -62
  107. package/src/tools/types.ts +36 -36
  108. package/src/types.ts +71 -93
  109. package/src/utils/logger.ts +56 -62
  110. package/src/workflow/config.ts +48 -48
  111. package/src/workflow/steps/build.ts +113 -122
  112. package/src/workflow/steps/finalize.ts +182 -214
  113. package/src/workflow/steps/plan.ts +131 -151
  114. package/src/workflow/steps/research.ts +186 -205
  115. package/src/workflow/types.ts +36 -38
  116. package/src/workflow/utils.ts +34 -37
package/LICENSE ADDED
@@ -0,0 +1,33 @@
1
+ Business Source License 1.1
2
+
3
+ Parameters
4
+
5
+ Licensor: PostHog Inc.
6
+ Licensed Work: Array & Posthog Agent package
7
+ The Licensed Work is © 2025 PostHog Inc.
8
+
9
+ Change Date: None (the Licensed Work will remain under this License indefinitely unless Licensor specifies otherwise)
10
+ Change License: At Licensor's discretion
11
+
12
+ Additional Use Grant:
13
+ You may use, modify, and self-host this software for personal purposes.
14
+ You may also submit contributions (e.g., pull requests) to the Licensed Work under this License.
15
+ Commercial redistribution, resale, or offering as a managed/hosted service requires a separate commercial agreement with the Licensor.
16
+ Using the Licensed Work to build or offer a competing product or service is prohibited without explicit written permission from the Licensor.
17
+
18
+ Terms
19
+
20
+ The Licensor hereby grants you the right to copy, modify, create derivative works, redistribute, and make use of the Licensed Work for personal purposes. The Licensor may make an Additional Use Grant, above, permitting limited production use.
21
+
22
+ Effective on the Change Date (if one is ever designated by the Licensor), the Change License will apply to the Licensed Work.
23
+
24
+ Any use of the Licensed Work not explicitly permitted by this License is prohibited.
25
+ This License applies separately to each version of the Licensed Work released by the Licensor.
26
+
27
+ THE LICENSED WORK IS PROVIDED "AS IS". THE LICENSOR MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
28
+
29
+ This License does not grant trademark rights, and no license is granted for use of the Licensor's trademarks, trade names, or logos.
30
+
31
+ License text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.
32
+
33
+ "Business Source License" is a trademark of MariaDB Corporation Ab.
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
- export { ClaudeAdapter } from "./src/adapters/claude/claude-adapter.js";
2
- export type { ProviderAdapter } from "./src/adapters/types.js";
3
- export { Agent } from "./src/agent.js";
4
- export type { TodoItem, TodoList } from "./src/todo-manager.js";
5
- export { TodoManager } from "./src/todo-manager.js";
6
- export { ToolRegistry } from "./src/tools/registry.js";
7
- export type { BashOutputTool, BashTool, EditTool, ExitPlanModeTool, GlobTool, GrepTool, KillShellTool, KnownTool, NotebookEditTool, ReadTool, SlashCommandTool, TaskTool, TodoWriteTool, Tool, ToolCategory, WebFetchTool, WebSearchTool, WriteTool, } from "./src/tools/types.js";
8
- export type { AgentConfig, AgentEvent, ExecutionResult, McpServerConfig, ResearchEvaluation, SupportingFile, Task, TaskRun, } from "./src/types.js";
9
- export { PermissionMode } from "./src/types.js";
10
- export type { LoggerConfig } from "./src/utils/logger.js";
11
- export { Logger, LogLevel, } from "./src/utils/logger.js";
1
+ export { Agent, } from './src/agent.js';
2
+ export { PermissionMode, } from './src/types.js';
3
+ export type { Task, TaskRun, SupportingFile, ExecutionResult, AgentConfig, McpServerConfig, AgentEvent, ResearchEvaluation } from './src/types.js';
4
+ export { Logger, LogLevel, } from './src/utils/logger.js';
5
+ export type { LoggerConfig } from './src/utils/logger.js';
6
+ export { TodoManager } from './src/todo-manager.js';
7
+ export type { TodoItem, TodoList } from './src/todo-manager.js';
8
+ export type { ProviderAdapter } from './src/adapters/types.js';
9
+ export { ClaudeAdapter } from './src/adapters/claude/claude-adapter.js';
10
+ export type { Tool, ToolCategory, KnownTool, ReadTool, WriteTool, EditTool, GlobTool, NotebookEditTool, BashTool, BashOutputTool, KillShellTool, WebFetchTool, WebSearchTool, GrepTool, TaskTool, TodoWriteTool, ExitPlanModeTool, SlashCommandTool, } from './src/tools/types.js';
11
+ export { ToolRegistry } from './src/tools/registry.js';
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,YAAY,EACV,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,WAAW,EACX,UAAU,EACV,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,IAAI,EACJ,OAAO,GACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,MAAM,EACN,QAAQ,GACT,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,GACR,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACH,cAAc,GACjB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACR,IAAI,EACJ,OAAO,EACP,cAAc,EACd,eAAe,EACf,WAAW,EACX,eAAe,EACf,UAAU,EACV,kBAAkB,EACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACH,MAAM,EACN,QAAQ,GACX,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACR,YAAY,EACf,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGhE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAGxE,YAAY,EACR,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- export { ClaudeAdapter } from './src/adapters/claude/claude-adapter.js';
2
1
  export { Agent } from './src/agent.js';
3
- export { TodoManager } from './src/todo-manager.js';
4
- export { ToolRegistry } from './src/tools/registry.js';
5
2
  export { PermissionMode } from './src/types.js';
6
3
  export { LogLevel, Logger } from './src/utils/logger.js';
4
+ export { TodoManager } from './src/todo-manager.js';
5
+ export { ClaudeAdapter } from './src/adapters/claude/claude-adapter.js';
6
+ export { ToolRegistry } from './src/tools/registry.js';
7
7
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
- import type { SDKMessage } from "@anthropic-ai/claude-agent-sdk";
2
- import type { AgentEvent, ArtifactEvent, StatusEvent } from "../../types.js";
3
- import type { ProviderAdapter } from "../types.js";
1
+ import type { AgentEvent, ArtifactEvent, StatusEvent } from '../../types.js';
2
+ import type { SDKMessage } from '@anthropic-ai/claude-agent-sdk';
3
+ import type { ProviderAdapter } from '../types.js';
4
4
  /**
5
5
  * Claude provider adapter.
6
6
  * Transforms Claude SDK messages into our standardized AgentEvent format.
@@ -1 +1 @@
1
- {"version":3,"file":"claude-adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/claude/claude-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD;;;GAGG;AACH,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,UAAU,CAA0B;IAC5C,iBAAiB,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU;IAQ9C,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,EAAE;IAgS/C,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG,GAAG,WAAW;IASnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,aAAa;IAS9D,OAAO,CAAC,kBAAkB;IAoC1B,OAAO,CAAC,iBAAiB;CA2B1B"}
1
+ {"version":3,"file":"claude-adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/claude/claude-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD;;;GAGG;AACH,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,UAAU,CAA0B;IAC5C,iBAAiB,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU;IAQ9C,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,EAAE;IAqP/C,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG,GAAG,WAAW;IASnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,aAAa;IAS9D,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,iBAAiB;CAoB1B"}
@@ -5,152 +5,126 @@ import { ClaudeToolMapper } from './tool-mapper.js';
5
5
  * Transforms Claude SDK messages into our standardized AgentEvent format.
6
6
  */
7
7
  class ClaudeAdapter {
8
- name = "claude";
8
+ name = 'claude';
9
9
  toolMapper = new ClaudeToolMapper();
10
10
  createRawSDKEvent(sdkMessage) {
11
11
  return {
12
- type: "raw_sdk_event",
12
+ type: 'raw_sdk_event',
13
13
  ts: Date.now(),
14
- sdkMessage,
14
+ sdkMessage
15
15
  };
16
16
  }
17
17
  transform(sdkMessage) {
18
18
  const baseEvent = { ts: Date.now() };
19
- if (sdkMessage.type === "stream_event") {
19
+ if (sdkMessage.type === 'stream_event') {
20
20
  const event = sdkMessage.event;
21
21
  switch (event.type) {
22
- case "message_start":
23
- return [
24
- {
22
+ case 'message_start':
23
+ return [{
25
24
  ...baseEvent,
26
- type: "message_start",
25
+ type: 'message_start',
27
26
  messageId: event.message?.id,
28
- model: event.message?.model,
29
- },
30
- ];
31
- case "content_block_start": {
27
+ model: event.message?.model
28
+ }];
29
+ case 'content_block_start':
32
30
  const contentBlock = event.content_block;
33
31
  if (!contentBlock)
34
32
  return [];
35
- return [
36
- {
33
+ return [{
37
34
  ...baseEvent,
38
- type: "content_block_start",
35
+ type: 'content_block_start',
39
36
  index: event.index,
40
37
  contentType: contentBlock.type,
41
- toolName: contentBlock.type === "tool_use"
42
- ? contentBlock.name
43
- : undefined,
44
- toolId: contentBlock.type === "tool_use" ? contentBlock.id : undefined,
45
- },
46
- ];
47
- }
48
- case "content_block_delta": {
38
+ toolName: contentBlock.type === 'tool_use' ? contentBlock.name : undefined,
39
+ toolId: contentBlock.type === 'tool_use' ? contentBlock.id : undefined
40
+ }];
41
+ case 'content_block_delta':
49
42
  const delta = event.delta;
50
43
  if (!delta)
51
44
  return [];
52
- if (delta.type === "text_delta") {
53
- return [
54
- {
45
+ if (delta.type === 'text_delta') {
46
+ return [{
55
47
  ...baseEvent,
56
- type: "token",
48
+ type: 'token',
57
49
  content: delta.text,
58
- contentType: "text",
59
- },
60
- ];
50
+ contentType: 'text'
51
+ }];
61
52
  }
62
- else if (delta.type === "input_json_delta") {
63
- return [
64
- {
53
+ else if (delta.type === 'input_json_delta') {
54
+ return [{
65
55
  ...baseEvent,
66
- type: "token",
56
+ type: 'token',
67
57
  content: delta.partial_json,
68
- contentType: "tool_input",
69
- },
70
- ];
58
+ contentType: 'tool_input'
59
+ }];
71
60
  }
72
- else if (delta.type === "thinking_delta") {
73
- return [
74
- {
61
+ else if (delta.type === 'thinking_delta') {
62
+ return [{
75
63
  ...baseEvent,
76
- type: "token",
64
+ type: 'token',
77
65
  content: delta.thinking,
78
- contentType: "thinking",
79
- },
80
- ];
66
+ contentType: 'thinking'
67
+ }];
81
68
  }
82
69
  return [];
83
- }
84
- case "content_block_stop":
85
- return [
86
- {
70
+ case 'content_block_stop':
71
+ return [{
87
72
  ...baseEvent,
88
- type: "content_block_stop",
89
- index: event.index,
90
- },
91
- ];
92
- case "message_delta":
93
- return [
94
- {
73
+ type: 'content_block_stop',
74
+ index: event.index
75
+ }];
76
+ case 'message_delta':
77
+ return [{
95
78
  ...baseEvent,
96
- type: "message_delta",
79
+ type: 'message_delta',
97
80
  stopReason: event.delta?.stop_reason,
98
81
  stopSequence: event.delta?.stop_sequence,
99
- usage: event.usage
100
- ? {
101
- outputTokens: event.usage.output_tokens,
102
- }
103
- : undefined,
104
- },
105
- ];
106
- case "message_stop":
107
- return [
108
- {
82
+ usage: event.usage ? {
83
+ outputTokens: event.usage.output_tokens
84
+ } : undefined
85
+ }];
86
+ case 'message_stop':
87
+ return [{
109
88
  ...baseEvent,
110
- type: "message_stop",
111
- },
112
- ];
113
- case "ping":
89
+ type: 'message_stop'
90
+ }];
91
+ case 'ping':
114
92
  // Ignore ping events
115
93
  return [];
116
- case "error":
117
- return [
118
- {
94
+ case 'error':
95
+ return [{
119
96
  ...baseEvent,
120
- type: "error",
121
- message: event.error?.message || "Unknown error",
97
+ type: 'error',
98
+ message: event.error?.message || 'Unknown error',
122
99
  error: event.error,
123
- errorType: event.error?.type || "stream_error",
124
- context: event.error
125
- ? {
126
- type: event.error.type,
127
- code: event.error.code,
128
- }
129
- : undefined,
130
- sdkError: event.error,
131
- },
132
- ];
100
+ errorType: event.error?.type || 'stream_error',
101
+ context: event.error ? {
102
+ type: event.error.type,
103
+ code: event.error.code,
104
+ } : undefined,
105
+ sdkError: event.error
106
+ }];
133
107
  default:
134
108
  return [];
135
109
  }
136
110
  }
137
111
  // Handle assistant messages (full message, not streaming)
138
- if (sdkMessage.type === "assistant") {
112
+ if (sdkMessage.type === 'assistant') {
139
113
  const message = sdkMessage.message;
140
114
  const events = [];
141
115
  // Extract tool calls from content blocks
142
116
  // A single assistant message can contain multiple tool_use blocks
143
117
  if (message.content && Array.isArray(message.content)) {
144
118
  for (const block of message.content) {
145
- if (block.type === "tool_use") {
119
+ if (block.type === 'tool_use') {
146
120
  // Create tool_call event and enrich with metadata
147
121
  const toolCallEvent = {
148
122
  ...baseEvent,
149
- type: "tool_call",
123
+ type: 'tool_call',
150
124
  toolName: block.name,
151
125
  callId: block.id,
152
126
  args: block.input || {},
153
- parentToolUseId: sdkMessage.parent_tool_use_id,
127
+ parentToolUseId: sdkMessage.parent_tool_use_id
154
128
  };
155
129
  // Enrich with tool metadata and add to events array
156
130
  events.push(this.toolMapper.enrichToolCall(toolCallEvent));
@@ -162,32 +136,30 @@ class ClaudeAdapter {
162
136
  return events;
163
137
  }
164
138
  // If no tool calls, emit status event
165
- return [
166
- {
139
+ return [{
167
140
  ...baseEvent,
168
- type: "status",
169
- phase: "assistant_message",
141
+ type: 'status',
142
+ phase: 'assistant_message',
170
143
  messageId: message.id,
171
- model: message.model,
172
- },
173
- ];
144
+ model: message.model
145
+ }];
174
146
  }
175
147
  // Handle user messages
176
- if (sdkMessage.type === "user") {
148
+ if (sdkMessage.type === 'user') {
177
149
  const message = sdkMessage.message;
178
150
  const events = [];
179
151
  // Check for tool results in content blocks, A single user message can contain multiple tool_result blocks
180
152
  if (message?.content && Array.isArray(message.content)) {
181
153
  for (const block of message.content) {
182
- if (block.type === "tool_result") {
154
+ if (block.type === 'tool_result') {
183
155
  const toolResultEvent = {
184
156
  ...baseEvent,
185
- type: "tool_result",
186
- toolName: block.tool_name || "unknown",
187
- callId: block.tool_use_id || "",
157
+ type: 'tool_result',
158
+ toolName: block.tool_name || 'unknown',
159
+ callId: block.tool_use_id || '',
188
160
  result: block.content,
189
161
  isError: block.is_error,
190
- parentToolUseId: sdkMessage.parent_tool_use_id,
162
+ parentToolUseId: sdkMessage.parent_tool_use_id
191
163
  };
192
164
  events.push(this.toolMapper.enrichToolResult(toolResultEvent));
193
165
  }
@@ -202,22 +174,19 @@ class ClaudeAdapter {
202
174
  if (!textContent) {
203
175
  return [];
204
176
  }
205
- return [
206
- {
177
+ return [{
207
178
  ...baseEvent,
208
- type: "user_message",
179
+ type: 'user_message',
209
180
  content: textContent,
210
- isSynthetic: sdkMessage.isSynthetic,
211
- },
212
- ];
181
+ isSynthetic: sdkMessage.isSynthetic
182
+ }];
213
183
  }
214
184
  // Handle result messages
215
- if (sdkMessage.type === "result") {
216
- if (sdkMessage.subtype === "success") {
217
- return [
218
- {
185
+ if (sdkMessage.type === 'result') {
186
+ if (sdkMessage.subtype === 'success') {
187
+ return [{
219
188
  ...baseEvent,
220
- type: "done",
189
+ type: 'done',
221
190
  result: sdkMessage.result,
222
191
  durationMs: sdkMessage.duration_ms,
223
192
  durationApiMs: sdkMessage.duration_api_ms,
@@ -225,35 +194,31 @@ class ClaudeAdapter {
225
194
  totalCostUsd: sdkMessage.total_cost_usd,
226
195
  usage: sdkMessage.usage,
227
196
  modelUsage: sdkMessage.modelUsage,
228
- permissionDenials: sdkMessage.permission_denials,
229
- },
230
- ];
197
+ permissionDenials: sdkMessage.permission_denials
198
+ }];
231
199
  }
232
200
  else {
233
- return [
234
- {
201
+ return [{
235
202
  ...baseEvent,
236
- type: "error",
203
+ type: 'error',
237
204
  message: `Execution failed: ${sdkMessage.subtype}`,
238
205
  error: { subtype: sdkMessage.subtype },
239
- errorType: sdkMessage.subtype || "result_error",
206
+ errorType: sdkMessage.subtype || 'result_error',
240
207
  context: {
241
208
  subtype: sdkMessage.subtype,
242
209
  duration_ms: sdkMessage.duration_ms,
243
- num_turns: sdkMessage.num_turns,
210
+ num_turns: sdkMessage.num_turns
244
211
  },
245
- sdkError: sdkMessage,
246
- },
247
- ];
212
+ sdkError: sdkMessage
213
+ }];
248
214
  }
249
215
  }
250
216
  // Handle system messages
251
- if (sdkMessage.type === "system") {
252
- if (sdkMessage.subtype === "init") {
253
- return [
254
- {
217
+ if (sdkMessage.type === 'system') {
218
+ if (sdkMessage.subtype === 'init') {
219
+ return [{
255
220
  ...baseEvent,
256
- type: "init",
221
+ type: 'init',
257
222
  model: sdkMessage.model,
258
223
  tools: sdkMessage.tools,
259
224
  permissionMode: sdkMessage.permissionMode,
@@ -262,44 +227,41 @@ class ClaudeAdapter {
262
227
  agents: sdkMessage.agents,
263
228
  slashCommands: sdkMessage.slash_commands,
264
229
  outputStyle: sdkMessage.output_style,
265
- mcpServers: sdkMessage.mcp_servers,
266
- },
267
- ];
230
+ mcpServers: sdkMessage.mcp_servers
231
+ }];
268
232
  }
269
- else if (sdkMessage.subtype === "compact_boundary") {
270
- return [
271
- {
233
+ else if (sdkMessage.subtype === 'compact_boundary') {
234
+ return [{
272
235
  ...baseEvent,
273
- type: "compact_boundary",
236
+ type: 'compact_boundary',
274
237
  trigger: sdkMessage.compact_metadata.trigger,
275
- preTokens: sdkMessage.compact_metadata.pre_tokens,
276
- },
277
- ];
238
+ preTokens: sdkMessage.compact_metadata.pre_tokens
239
+ }];
278
240
  }
279
241
  }
280
242
  return [];
281
243
  }
282
244
  createStatusEvent(phase, additionalData) {
283
245
  return {
284
- type: "status",
246
+ type: 'status',
285
247
  ts: Date.now(),
286
248
  phase,
287
- ...additionalData,
249
+ ...additionalData
288
250
  };
289
251
  }
290
252
  createArtifactEvent(kind, content) {
291
253
  return {
292
- type: "artifact",
254
+ type: 'artifact',
293
255
  ts: Date.now(),
294
256
  kind,
295
- content,
257
+ content
296
258
  };
297
259
  }
298
260
  extractUserContent(content) {
299
261
  if (!content) {
300
262
  return null;
301
263
  }
302
- if (typeof content === "string") {
264
+ if (typeof content === 'string') {
303
265
  const trimmed = content.trim();
304
266
  return trimmed.length > 0 ? trimmed : null;
305
267
  }
@@ -310,32 +272,25 @@ class ClaudeAdapter {
310
272
  if (extracted) {
311
273
  parts.push(extracted);
312
274
  }
313
- else if (block && typeof block === "object") {
275
+ else if (block && typeof block === 'object') {
314
276
  const candidate = this.extractFromObject(block);
315
277
  if (candidate) {
316
278
  parts.push(candidate);
317
279
  }
318
280
  }
319
281
  }
320
- const text = parts.join("\n").trim();
282
+ const text = parts.join('\n').trim();
321
283
  return text.length > 0 ? text : null;
322
284
  }
323
- if (typeof content === "object") {
285
+ if (typeof content === 'object') {
324
286
  return this.extractFromObject(content);
325
287
  }
326
288
  return null;
327
289
  }
328
290
  extractFromObject(value) {
329
- const preferredKeys = [
330
- "text",
331
- "input_text",
332
- "input",
333
- "markdown",
334
- "content",
335
- "message",
336
- ];
291
+ const preferredKeys = ['text', 'input_text', 'input', 'markdown', 'content', 'message'];
337
292
  for (const key of preferredKeys) {
338
- if (typeof value[key] === "string") {
293
+ if (typeof value[key] === 'string') {
339
294
  const trimmed = value[key].trim();
340
295
  if (trimmed.length > 0) {
341
296
  return trimmed;
@@ -1 +1 @@
1
- {"version":3,"file":"claude-adapter.js","sources":["../../../../src/adapters/claude/claude-adapter.ts"],"sourcesContent":["import type { SDKMessage } from \"@anthropic-ai/claude-agent-sdk\";\nimport type { AgentEvent, ArtifactEvent, StatusEvent } from \"../../types.js\";\nimport type { ProviderAdapter } from \"../types.js\";\nimport { ClaudeToolMapper } from \"./tool-mapper.js\";\n\n/**\n * Claude provider adapter.\n * Transforms Claude SDK messages into our standardized AgentEvent format.\n */\nexport class ClaudeAdapter implements ProviderAdapter {\n readonly name = \"claude\";\n private toolMapper = new ClaudeToolMapper();\n createRawSDKEvent(sdkMessage: any): AgentEvent {\n return {\n type: \"raw_sdk_event\",\n ts: Date.now(),\n sdkMessage,\n };\n }\n\n transform(sdkMessage: SDKMessage): AgentEvent[] {\n const baseEvent = { ts: Date.now() };\n\n if (sdkMessage.type === \"stream_event\") {\n const event = sdkMessage.event;\n\n switch (event.type) {\n case \"message_start\":\n return [\n {\n ...baseEvent,\n type: \"message_start\",\n messageId: event.message?.id,\n model: event.message?.model,\n },\n ];\n\n case \"content_block_start\": {\n const contentBlock = event.content_block;\n if (!contentBlock) return [];\n\n return [\n {\n ...baseEvent,\n type: \"content_block_start\",\n index: event.index,\n contentType: contentBlock.type as\n | \"text\"\n | \"tool_use\"\n | \"thinking\",\n toolName:\n contentBlock.type === \"tool_use\"\n ? contentBlock.name\n : undefined,\n toolId:\n contentBlock.type === \"tool_use\" ? contentBlock.id : undefined,\n },\n ];\n }\n\n case \"content_block_delta\": {\n const delta = event.delta;\n if (!delta) return [];\n\n if (delta.type === \"text_delta\") {\n return [\n {\n ...baseEvent,\n type: \"token\",\n content: delta.text,\n contentType: \"text\",\n },\n ];\n } else if (delta.type === \"input_json_delta\") {\n return [\n {\n ...baseEvent,\n type: \"token\",\n content: delta.partial_json,\n contentType: \"tool_input\",\n },\n ];\n } else if (delta.type === \"thinking_delta\") {\n return [\n {\n ...baseEvent,\n type: \"token\",\n content: delta.thinking,\n contentType: \"thinking\",\n },\n ];\n }\n return [];\n }\n\n case \"content_block_stop\":\n return [\n {\n ...baseEvent,\n type: \"content_block_stop\",\n index: event.index,\n },\n ];\n\n case \"message_delta\":\n return [\n {\n ...baseEvent,\n type: \"message_delta\",\n stopReason: event.delta?.stop_reason,\n stopSequence: event.delta?.stop_sequence,\n usage: event.usage\n ? {\n outputTokens: event.usage.output_tokens,\n }\n : undefined,\n },\n ];\n\n case \"message_stop\":\n return [\n {\n ...baseEvent,\n type: \"message_stop\",\n },\n ];\n\n case \"ping\":\n // Ignore ping events\n return [];\n\n case \"error\":\n return [\n {\n ...baseEvent,\n type: \"error\",\n message: event.error?.message || \"Unknown error\",\n error: event.error,\n errorType: event.error?.type || \"stream_error\",\n context: event.error\n ? {\n type: event.error.type,\n code: event.error.code,\n }\n : undefined,\n sdkError: event.error,\n },\n ];\n\n default:\n return [];\n }\n }\n\n // Handle assistant messages (full message, not streaming)\n if (sdkMessage.type === \"assistant\") {\n const message = sdkMessage.message;\n const events: AgentEvent[] = [];\n\n // Extract tool calls from content blocks\n // A single assistant message can contain multiple tool_use blocks\n if (message.content && Array.isArray(message.content)) {\n for (const block of message.content) {\n if (block.type === \"tool_use\") {\n // Create tool_call event and enrich with metadata\n const toolCallEvent = {\n ...baseEvent,\n type: \"tool_call\" as const,\n toolName: block.name,\n callId: block.id,\n args: block.input || {},\n parentToolUseId: sdkMessage.parent_tool_use_id,\n };\n // Enrich with tool metadata and add to events array\n events.push(this.toolMapper.enrichToolCall(toolCallEvent));\n }\n }\n }\n\n // If we found tool calls, return them\n if (events.length > 0) {\n return events;\n }\n\n // If no tool calls, emit status event\n return [\n {\n ...baseEvent,\n type: \"status\",\n phase: \"assistant_message\",\n messageId: message.id,\n model: message.model,\n },\n ];\n }\n\n // Handle user messages\n if (sdkMessage.type === \"user\") {\n const message = sdkMessage.message;\n const events: AgentEvent[] = [];\n\n // Check for tool results in content blocks, A single user message can contain multiple tool_result blocks\n if (message?.content && Array.isArray(message.content)) {\n for (const block of message.content) {\n if (block.type === \"tool_result\") {\n const toolResultEvent = {\n ...baseEvent,\n type: \"tool_result\" as const,\n toolName: block.tool_name || \"unknown\",\n callId: block.tool_use_id || \"\",\n result: block.content,\n isError: block.is_error,\n parentToolUseId: sdkMessage.parent_tool_use_id,\n };\n events.push(this.toolMapper.enrichToolResult(toolResultEvent));\n }\n }\n }\n\n // If we found tool results, return them\n if (events.length > 0) {\n return events;\n }\n\n // Otherwise extract text content\n const textContent = this.extractUserContent(message?.content);\n if (!textContent) {\n return [];\n }\n return [\n {\n ...baseEvent,\n type: \"user_message\",\n content: textContent,\n isSynthetic: sdkMessage.isSynthetic,\n },\n ];\n }\n\n // Handle result messages\n if (sdkMessage.type === \"result\") {\n if (sdkMessage.subtype === \"success\") {\n return [\n {\n ...baseEvent,\n type: \"done\",\n result: sdkMessage.result,\n durationMs: sdkMessage.duration_ms,\n durationApiMs: sdkMessage.duration_api_ms,\n numTurns: sdkMessage.num_turns,\n totalCostUsd: sdkMessage.total_cost_usd,\n usage: sdkMessage.usage,\n modelUsage: sdkMessage.modelUsage,\n permissionDenials: sdkMessage.permission_denials,\n },\n ];\n } else {\n return [\n {\n ...baseEvent,\n type: \"error\",\n message: `Execution failed: ${sdkMessage.subtype}`,\n error: { subtype: sdkMessage.subtype },\n errorType: sdkMessage.subtype || \"result_error\",\n context: {\n subtype: sdkMessage.subtype,\n duration_ms: sdkMessage.duration_ms,\n num_turns: sdkMessage.num_turns,\n },\n sdkError: sdkMessage,\n },\n ];\n }\n }\n\n // Handle system messages\n if (sdkMessage.type === \"system\") {\n if (sdkMessage.subtype === \"init\") {\n return [\n {\n ...baseEvent,\n type: \"init\",\n model: sdkMessage.model,\n tools: sdkMessage.tools,\n permissionMode: sdkMessage.permissionMode,\n cwd: sdkMessage.cwd,\n apiKeySource: sdkMessage.apiKeySource,\n agents: sdkMessage.agents,\n slashCommands: sdkMessage.slash_commands,\n outputStyle: sdkMessage.output_style,\n mcpServers: sdkMessage.mcp_servers,\n },\n ];\n } else if (sdkMessage.subtype === \"compact_boundary\") {\n return [\n {\n ...baseEvent,\n type: \"compact_boundary\",\n trigger: sdkMessage.compact_metadata.trigger,\n preTokens: sdkMessage.compact_metadata.pre_tokens,\n },\n ];\n }\n }\n\n return [];\n }\n\n createStatusEvent(phase: string, additionalData?: any): StatusEvent {\n return {\n type: \"status\",\n ts: Date.now(),\n phase,\n ...additionalData,\n };\n }\n\n createArtifactEvent(kind: string, content: any): ArtifactEvent {\n return {\n type: \"artifact\",\n ts: Date.now(),\n kind,\n content,\n };\n }\n\n private extractUserContent(content: unknown): string | null {\n if (!content) {\n return null;\n }\n\n if (typeof content === \"string\") {\n const trimmed = content.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n\n if (Array.isArray(content)) {\n const parts: string[] = [];\n for (const block of content) {\n const extracted = this.extractUserContent(block);\n if (extracted) {\n parts.push(extracted);\n } else if (block && typeof block === \"object\") {\n const candidate = this.extractFromObject(\n block as Record<string, unknown>,\n );\n if (candidate) {\n parts.push(candidate);\n }\n }\n }\n const text = parts.join(\"\\n\").trim();\n return text.length > 0 ? text : null;\n }\n\n if (typeof content === \"object\") {\n return this.extractFromObject(content as Record<string, unknown>);\n }\n\n return null;\n }\n\n private extractFromObject(value: Record<string, unknown>): string | null {\n const preferredKeys = [\n \"text\",\n \"input_text\",\n \"input\",\n \"markdown\",\n \"content\",\n \"message\",\n ];\n for (const key of preferredKeys) {\n if (typeof value[key] === \"string\") {\n const trimmed = (value[key] as string).trim();\n if (trimmed.length > 0) {\n return trimmed;\n }\n }\n }\n\n for (const entry of Object.values(value)) {\n const extracted = this.extractUserContent(entry);\n if (extracted) {\n return extracted;\n }\n }\n\n return null;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-adapter.js","sources":["../../../../src/adapters/claude/claude-adapter.ts"],"sourcesContent":["import type { AgentEvent, ArtifactEvent, StatusEvent } from '../../types.js';\nimport type { SDKMessage } from '@anthropic-ai/claude-agent-sdk';\nimport type { ProviderAdapter } from '../types.js';\nimport { ClaudeToolMapper } from './tool-mapper.js';\n\n/**\n * Claude provider adapter.\n * Transforms Claude SDK messages into our standardized AgentEvent format.\n */\nexport class ClaudeAdapter implements ProviderAdapter {\n readonly name = 'claude';\n private toolMapper = new ClaudeToolMapper();\n createRawSDKEvent(sdkMessage: any): AgentEvent {\n return {\n type: 'raw_sdk_event',\n ts: Date.now(),\n sdkMessage\n };\n }\n\n transform(sdkMessage: SDKMessage): AgentEvent[] {\n const baseEvent = { ts: Date.now() };\n\n if (sdkMessage.type === 'stream_event') {\n const event = sdkMessage.event;\n\n switch (event.type) {\n case 'message_start':\n return [{\n ...baseEvent,\n type: 'message_start',\n messageId: event.message?.id,\n model: event.message?.model\n }];\n\n case 'content_block_start':\n const contentBlock = event.content_block;\n if (!contentBlock) return [];\n\n return [{\n ...baseEvent,\n type: 'content_block_start',\n index: event.index,\n contentType: contentBlock.type as 'text' | 'tool_use' | 'thinking',\n toolName: contentBlock.type === 'tool_use' ? contentBlock.name : undefined,\n toolId: contentBlock.type === 'tool_use' ? contentBlock.id : undefined\n }];\n\n case 'content_block_delta':\n const delta = event.delta;\n if (!delta) return [];\n\n if (delta.type === 'text_delta') {\n return [{\n ...baseEvent,\n type: 'token',\n content: delta.text,\n contentType: 'text'\n }];\n } else if (delta.type === 'input_json_delta') {\n return [{\n ...baseEvent,\n type: 'token',\n content: delta.partial_json,\n contentType: 'tool_input'\n }];\n } else if (delta.type === 'thinking_delta') {\n return [{\n ...baseEvent,\n type: 'token',\n content: delta.thinking,\n contentType: 'thinking'\n }];\n }\n return [];\n\n case 'content_block_stop':\n return [{\n ...baseEvent,\n type: 'content_block_stop',\n index: event.index\n }];\n\n case 'message_delta':\n return [{\n ...baseEvent,\n type: 'message_delta',\n stopReason: event.delta?.stop_reason,\n stopSequence: event.delta?.stop_sequence,\n usage: event.usage ? {\n outputTokens: event.usage.output_tokens\n } : undefined\n }];\n\n case 'message_stop':\n return [{\n ...baseEvent,\n type: 'message_stop'\n }];\n\n case 'ping':\n // Ignore ping events\n return [];\n\n case 'error':\n return [{\n ...baseEvent,\n type: 'error',\n message: event.error?.message || 'Unknown error',\n error: event.error,\n errorType: event.error?.type || 'stream_error',\n context: event.error ? {\n type: event.error.type,\n code: event.error.code,\n } : undefined,\n sdkError: event.error\n }];\n\n default:\n return [];\n }\n }\n\n // Handle assistant messages (full message, not streaming)\n if (sdkMessage.type === 'assistant') {\n const message = sdkMessage.message;\n const events: AgentEvent[] = [];\n\n // Extract tool calls from content blocks\n // A single assistant message can contain multiple tool_use blocks\n if (message.content && Array.isArray(message.content)) {\n for (const block of message.content) {\n if (block.type === 'tool_use') {\n // Create tool_call event and enrich with metadata\n const toolCallEvent = {\n ...baseEvent,\n type: 'tool_call' as const,\n toolName: block.name,\n callId: block.id,\n args: block.input || {},\n parentToolUseId: sdkMessage.parent_tool_use_id\n };\n // Enrich with tool metadata and add to events array\n events.push(this.toolMapper.enrichToolCall(toolCallEvent));\n }\n }\n }\n\n // If we found tool calls, return them\n if (events.length > 0) {\n return events;\n }\n\n // If no tool calls, emit status event\n return [{\n ...baseEvent,\n type: 'status',\n phase: 'assistant_message',\n messageId: message.id,\n model: message.model\n }];\n }\n\n // Handle user messages\n if (sdkMessage.type === 'user') {\n const message = sdkMessage.message;\n const events: AgentEvent[] = [];\n\n // Check for tool results in content blocks, A single user message can contain multiple tool_result blocks\n if (message?.content && Array.isArray(message.content)) { \n for (const block of message.content) {\n if (block.type === 'tool_result') {\n const toolResultEvent = {\n ...baseEvent,\n type: 'tool_result' as const,\n toolName: block.tool_name || 'unknown',\n callId: block.tool_use_id || '',\n result: block.content,\n isError: block.is_error,\n parentToolUseId: sdkMessage.parent_tool_use_id\n };\n events.push(this.toolMapper.enrichToolResult(toolResultEvent));\n }\n }\n }\n\n // If we found tool results, return them\n if (events.length > 0) {\n return events;\n }\n\n // Otherwise extract text content\n const textContent = this.extractUserContent(message?.content);\n if (!textContent) {\n return [];\n }\n return [{\n ...baseEvent,\n type: 'user_message',\n content: textContent,\n isSynthetic: sdkMessage.isSynthetic\n }];\n }\n\n // Handle result messages\n if (sdkMessage.type === 'result') {\n if (sdkMessage.subtype === 'success') {\n return [{\n ...baseEvent,\n type: 'done',\n result: sdkMessage.result,\n durationMs: sdkMessage.duration_ms,\n durationApiMs: sdkMessage.duration_api_ms,\n numTurns: sdkMessage.num_turns,\n totalCostUsd: sdkMessage.total_cost_usd,\n usage: sdkMessage.usage,\n modelUsage: sdkMessage.modelUsage,\n permissionDenials: sdkMessage.permission_denials\n }];\n } else {\n return [{\n ...baseEvent,\n type: 'error',\n message: `Execution failed: ${sdkMessage.subtype}`,\n error: { subtype: sdkMessage.subtype },\n errorType: sdkMessage.subtype || 'result_error',\n context: {\n subtype: sdkMessage.subtype,\n duration_ms: sdkMessage.duration_ms,\n num_turns: sdkMessage.num_turns\n },\n sdkError: sdkMessage\n }];\n }\n }\n\n // Handle system messages\n if (sdkMessage.type === 'system') {\n if (sdkMessage.subtype === 'init') {\n return [{\n ...baseEvent,\n type: 'init',\n model: sdkMessage.model,\n tools: sdkMessage.tools,\n permissionMode: sdkMessage.permissionMode,\n cwd: sdkMessage.cwd,\n apiKeySource: sdkMessage.apiKeySource,\n agents: sdkMessage.agents,\n slashCommands: sdkMessage.slash_commands,\n outputStyle: sdkMessage.output_style,\n mcpServers: sdkMessage.mcp_servers\n }];\n } else if (sdkMessage.subtype === 'compact_boundary') {\n return [{\n ...baseEvent,\n type: 'compact_boundary',\n trigger: sdkMessage.compact_metadata.trigger,\n preTokens: sdkMessage.compact_metadata.pre_tokens\n }];\n }\n }\n\n return [];\n }\n \n createStatusEvent(phase: string, additionalData?: any): StatusEvent {\n return {\n type: 'status',\n ts: Date.now(),\n phase,\n ...additionalData\n };\n }\n\n createArtifactEvent(kind: string, content: any): ArtifactEvent {\n return {\n type: 'artifact',\n ts: Date.now(),\n kind,\n content\n };\n }\n\n private extractUserContent(content: unknown): string | null {\n if (!content) {\n return null;\n }\n\n if (typeof content === 'string') {\n const trimmed = content.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n\n if (Array.isArray(content)) {\n const parts: string[] = [];\n for (const block of content) {\n const extracted = this.extractUserContent(block);\n if (extracted) {\n parts.push(extracted);\n } else if (block && typeof block === 'object') {\n const candidate = this.extractFromObject(block as Record<string, unknown>);\n if (candidate) {\n parts.push(candidate);\n }\n }\n }\n const text = parts.join('\\n').trim();\n return text.length > 0 ? text : null;\n }\n\n if (typeof content === 'object') {\n return this.extractFromObject(content as Record<string, unknown>);\n }\n\n return null;\n }\n\n private extractFromObject(value: Record<string, unknown>): string | null {\n const preferredKeys = ['text', 'input_text', 'input', 'markdown', 'content', 'message'];\n for (const key of preferredKeys) {\n if (typeof value[key] === 'string') {\n const trimmed = (value[key] as string).trim();\n if (trimmed.length > 0) {\n return trimmed;\n }\n }\n }\n\n for (const entry of Object.values(value)) {\n const extracted = this.extractUserContent(entry);\n if (extracted) {\n return extracted;\n }\n }\n\n return null;\n }\n}\n"],"names":[],"mappings":"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"}