@posthog/agent 1.7.1 → 1.9.0
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/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/src/adapters/claude/claude-adapter.d.ts +17 -0
- package/dist/src/adapters/claude/claude-adapter.d.ts.map +1 -0
- package/dist/src/{event-transformer.js → adapters/claude/claude-adapter.js} +34 -10
- package/dist/src/adapters/claude/claude-adapter.js.map +1 -0
- package/dist/src/adapters/claude/tool-mapper.d.ts +19 -0
- package/dist/src/adapters/claude/tool-mapper.d.ts.map +1 -0
- package/dist/src/adapters/claude/tool-mapper.js +44 -0
- package/dist/src/adapters/claude/tool-mapper.js.map +1 -0
- package/dist/src/adapters/types.d.ts +28 -0
- package/dist/src/adapters/types.d.ts.map +1 -0
- package/dist/src/agent.d.ts +1 -1
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +18 -17
- package/dist/src/agent.js.map +1 -1
- package/dist/src/stage-executor.d.ts +1 -1
- package/dist/src/stage-executor.d.ts.map +1 -1
- package/dist/src/stage-executor.js +7 -7
- package/dist/src/stage-executor.js.map +1 -1
- package/dist/src/task-progress-reporter.d.ts +0 -2
- package/dist/src/task-progress-reporter.d.ts.map +1 -1
- package/dist/src/task-progress-reporter.js +0 -16
- package/dist/src/task-progress-reporter.js.map +1 -1
- package/dist/src/tools/registry.d.ts +25 -0
- package/dist/src/tools/registry.d.ts.map +1 -0
- package/dist/src/tools/registry.js +120 -0
- package/dist/src/tools/registry.js.map +1 -0
- package/dist/src/tools/types.d.ts +80 -0
- package/dist/src/tools/types.d.ts.map +1 -0
- package/dist/src/types.d.ts +41 -12
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/package.json +1 -1
- package/src/{event-transformer.ts → adapters/claude/claude-adapter.ts} +40 -16
- package/src/adapters/claude/tool-mapper.ts +46 -0
- package/src/adapters/types.ts +31 -0
- package/src/agent.ts +19 -17
- package/src/stage-executor.ts +11 -11
- package/src/task-progress-reporter.ts +0 -19
- package/src/tools/registry.ts +129 -0
- package/src/tools/types.ts +127 -0
- package/src/types.ts +42 -17
- package/dist/src/event-transformer.d.ts +0 -10
- package/dist/src/event-transformer.d.ts.map +0 -1
- package/dist/src/event-transformer.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -4,4 +4,8 @@ export type { Task, SupportingFile, ExecutionResult, AgentConfig, McpServerConfi
|
|
|
4
4
|
export type { WorkflowDefinition, WorkflowStage, WorkflowExecutionOptions, AgentDefinition } from './src/workflow-types.js';
|
|
5
5
|
export { Logger, LogLevel, } from './src/utils/logger.js';
|
|
6
6
|
export type { LoggerConfig } from './src/utils/logger.js';
|
|
7
|
+
export type { ProviderAdapter } from './src/adapters/types.js';
|
|
8
|
+
export { ClaudeAdapter } from './src/adapters/claude/claude-adapter.js';
|
|
9
|
+
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';
|
|
10
|
+
export { ToolRegistry } from './src/tools/registry.js';
|
|
7
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,cAAc,EACd,eAAe,EACf,WAAW,EACX,eAAe,EACf,UAAU,EACb,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,wBAAwB,EACxB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACH,MAAM,EACN,QAAQ,GACX,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACR,YAAY,EACf,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,cAAc,EACd,eAAe,EACf,WAAW,EACX,eAAe,EACf,UAAU,EACb,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,wBAAwB,EACxB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACH,MAAM,EACN,QAAQ,GACX,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACR,YAAY,EACf,MAAM,uBAAuB,CAAC;AAG/B,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,4 +1,6 @@
|
|
|
1
1
|
export { Agent } from './src/agent.js';
|
|
2
2
|
export { PermissionMode } from './src/types.js';
|
|
3
3
|
export { LogLevel, Logger } from './src/utils/logger.js';
|
|
4
|
+
export { ClaudeAdapter } from './src/adapters/claude/claude-adapter.js';
|
|
5
|
+
export { ToolRegistry } from './src/tools/registry.js';
|
|
4
6
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AgentEvent } from '../../types.js';
|
|
2
|
+
import type { SDKMessage } from '@anthropic-ai/claude-agent-sdk';
|
|
3
|
+
import type { ProviderAdapter } from '../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Claude provider adapter.
|
|
6
|
+
* Transforms Claude SDK messages into our standardized AgentEvent format.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ClaudeAdapter implements ProviderAdapter {
|
|
9
|
+
readonly name = "claude";
|
|
10
|
+
private toolMapper;
|
|
11
|
+
createRawSDKEvent(sdkMessage: any): AgentEvent;
|
|
12
|
+
transform(sdkMessage: SDKMessage): AgentEvent | null;
|
|
13
|
+
createStatusEvent(phase: string, additionalData?: any): import('../../types.js').StatusEvent;
|
|
14
|
+
private extractUserContent;
|
|
15
|
+
private extractFromObject;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=claude-adapter.d.ts.map
|
|
@@ -0,0 +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,gBAAgB,CAAC;AACjD,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,GAAG,IAAI;IA2OpD,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG,GAAG,OAAO,gBAAgB,EAAE,WAAW;IAS5F,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,iBAAiB;CAoB1B"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import { ClaudeToolMapper } from './tool-mapper.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Claude provider adapter.
|
|
5
|
+
* Transforms Claude SDK messages into our standardized AgentEvent format.
|
|
6
|
+
*/
|
|
7
|
+
class ClaudeAdapter {
|
|
8
|
+
name = 'claude';
|
|
9
|
+
toolMapper = new ClaudeToolMapper();
|
|
2
10
|
createRawSDKEvent(sdkMessage) {
|
|
3
11
|
return {
|
|
4
12
|
type: 'raw_sdk_event',
|
|
@@ -108,14 +116,17 @@ class EventTransformer {
|
|
|
108
116
|
if (message.content && Array.isArray(message.content)) {
|
|
109
117
|
for (const block of message.content) {
|
|
110
118
|
if (block.type === 'tool_use') {
|
|
111
|
-
//
|
|
112
|
-
|
|
119
|
+
// Create tool_call event and enrich with metadata
|
|
120
|
+
const toolCallEvent = {
|
|
113
121
|
...baseEvent,
|
|
114
122
|
type: 'tool_call',
|
|
115
123
|
toolName: block.name,
|
|
116
124
|
callId: block.id,
|
|
117
|
-
args: block.input || {}
|
|
125
|
+
args: block.input || {},
|
|
126
|
+
parentToolUseId: sdkMessage.parent_tool_use_id
|
|
118
127
|
};
|
|
128
|
+
// Enrich with tool metadata
|
|
129
|
+
return this.toolMapper.enrichToolCall(toolCallEvent);
|
|
119
130
|
}
|
|
120
131
|
}
|
|
121
132
|
}
|
|
@@ -135,13 +146,18 @@ class EventTransformer {
|
|
|
135
146
|
if (message?.content && Array.isArray(message.content)) {
|
|
136
147
|
for (const block of message.content) {
|
|
137
148
|
if (block.type === 'tool_result') {
|
|
138
|
-
|
|
149
|
+
// Create tool_result event and enrich with metadata
|
|
150
|
+
const toolResultEvent = {
|
|
139
151
|
...baseEvent,
|
|
140
152
|
type: 'tool_result',
|
|
141
153
|
toolName: block.tool_name || 'unknown',
|
|
142
154
|
callId: block.tool_use_id || '',
|
|
143
|
-
result: block.content
|
|
155
|
+
result: block.content,
|
|
156
|
+
isError: block.is_error,
|
|
157
|
+
parentToolUseId: sdkMessage.parent_tool_use_id
|
|
144
158
|
};
|
|
159
|
+
// Enrich with tool metadata
|
|
160
|
+
return this.toolMapper.enrichToolResult(toolResultEvent);
|
|
145
161
|
}
|
|
146
162
|
}
|
|
147
163
|
}
|
|
@@ -163,10 +179,14 @@ class EventTransformer {
|
|
|
163
179
|
return {
|
|
164
180
|
...baseEvent,
|
|
165
181
|
type: 'done',
|
|
182
|
+
result: sdkMessage.result,
|
|
166
183
|
durationMs: sdkMessage.duration_ms,
|
|
184
|
+
durationApiMs: sdkMessage.duration_api_ms,
|
|
167
185
|
numTurns: sdkMessage.num_turns,
|
|
168
186
|
totalCostUsd: sdkMessage.total_cost_usd,
|
|
169
|
-
usage: sdkMessage.usage
|
|
187
|
+
usage: sdkMessage.usage,
|
|
188
|
+
modelUsage: sdkMessage.modelUsage,
|
|
189
|
+
permissionDenials: sdkMessage.permission_denials
|
|
170
190
|
};
|
|
171
191
|
}
|
|
172
192
|
else {
|
|
@@ -195,7 +215,11 @@ class EventTransformer {
|
|
|
195
215
|
tools: sdkMessage.tools,
|
|
196
216
|
permissionMode: sdkMessage.permissionMode,
|
|
197
217
|
cwd: sdkMessage.cwd,
|
|
198
|
-
apiKeySource: sdkMessage.apiKeySource
|
|
218
|
+
apiKeySource: sdkMessage.apiKeySource,
|
|
219
|
+
agents: sdkMessage.agents,
|
|
220
|
+
slashCommands: sdkMessage.slash_commands,
|
|
221
|
+
outputStyle: sdkMessage.output_style,
|
|
222
|
+
mcpServers: sdkMessage.mcp_servers
|
|
199
223
|
};
|
|
200
224
|
}
|
|
201
225
|
else if (sdkMessage.subtype === 'compact_boundary') {
|
|
@@ -267,5 +291,5 @@ class EventTransformer {
|
|
|
267
291
|
}
|
|
268
292
|
}
|
|
269
293
|
|
|
270
|
-
export {
|
|
271
|
-
//# sourceMappingURL=
|
|
294
|
+
export { ClaudeAdapter };
|
|
295
|
+
//# sourceMappingURL=claude-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-adapter.js","sources":["../../../../src/adapters/claude/claude-adapter.ts"],"sourcesContent":["import type { AgentEvent } 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 | null {\n const baseEvent = { ts: Date.now() };\n\n // Handle stream events\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 null;\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 null;\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 null;\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 null;\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 null;\n }\n }\n\n // Handle assistant messages (full message, not streaming)\n if (sdkMessage.type === 'assistant') {\n const message = sdkMessage.message;\n\n // Extract tool calls from content 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\n return this.toolMapper.enrichToolCall(toolCallEvent);\n }\n }\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\n // Check for tool results in content blocks\n if (message?.content && Array.isArray(message.content)) {\n for (const block of message.content) {\n if (block.type === 'tool_result') {\n // Create tool_result event and enrich with metadata\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 // Enrich with tool metadata\n return this.toolMapper.enrichToolResult(toolResultEvent);\n }\n }\n }\n\n // Otherwise extract text content\n const textContent = this.extractUserContent(message?.content);\n if (!textContent) {\n return null;\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 null;\n }\n \n createStatusEvent(phase: string, additionalData?: any): import('../../types.js').StatusEvent {\n return {\n type: 'status',\n ts: Date.now(),\n phase,\n ...additionalData\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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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ToolCallEvent, ToolResultEvent } from '../../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Maps Claude tool names to our tool type system.
|
|
4
|
+
* Enriches tool events with metadata for better UI consumption.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ClaudeToolMapper {
|
|
7
|
+
private registry;
|
|
8
|
+
/**
|
|
9
|
+
* Enrich a tool call event with tool metadata.
|
|
10
|
+
* Looks up the tool definition and adds it to the event.
|
|
11
|
+
*/
|
|
12
|
+
enrichToolCall(event: ToolCallEvent): ToolCallEvent;
|
|
13
|
+
/**
|
|
14
|
+
* Enrich a tool result event with tool metadata.
|
|
15
|
+
* Looks up the tool definition and adds it to the event.
|
|
16
|
+
*/
|
|
17
|
+
enrichToolResult(event: ToolResultEvent): ToolResultEvent;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=tool-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-mapper.d.ts","sourceRoot":"","sources":["../../../../src/adapters/claude/tool-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGrE;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAsB;IAEtC;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa;IAcnD;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe;CAa1D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ToolRegistry } from '../../tools/registry.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Maps Claude tool names to our tool type system.
|
|
5
|
+
* Enriches tool events with metadata for better UI consumption.
|
|
6
|
+
*/
|
|
7
|
+
class ClaudeToolMapper {
|
|
8
|
+
registry = new ToolRegistry();
|
|
9
|
+
/**
|
|
10
|
+
* Enrich a tool call event with tool metadata.
|
|
11
|
+
* Looks up the tool definition and adds it to the event.
|
|
12
|
+
*/
|
|
13
|
+
enrichToolCall(event) {
|
|
14
|
+
const tool = this.registry.get(event.toolName);
|
|
15
|
+
if (!tool) {
|
|
16
|
+
// Tool not recognized, return as-is
|
|
17
|
+
return event;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
...event,
|
|
21
|
+
tool,
|
|
22
|
+
category: tool.category,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Enrich a tool result event with tool metadata.
|
|
27
|
+
* Looks up the tool definition and adds it to the event.
|
|
28
|
+
*/
|
|
29
|
+
enrichToolResult(event) {
|
|
30
|
+
const tool = this.registry.get(event.toolName);
|
|
31
|
+
if (!tool) {
|
|
32
|
+
// Tool not recognized, return as-is
|
|
33
|
+
return event;
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
...event,
|
|
37
|
+
tool,
|
|
38
|
+
category: tool.category,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { ClaudeToolMapper };
|
|
44
|
+
//# sourceMappingURL=tool-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-mapper.js","sources":["../../../../src/adapters/claude/tool-mapper.ts"],"sourcesContent":["import type { ToolCallEvent, ToolResultEvent } from '../../types.js';\nimport { ToolRegistry } from '../../tools/registry.js';\n\n/**\n * Maps Claude tool names to our tool type system.\n * Enriches tool events with metadata for better UI consumption.\n */\nexport class ClaudeToolMapper {\n private registry = new ToolRegistry();\n\n /**\n * Enrich a tool call event with tool metadata.\n * Looks up the tool definition and adds it to the event.\n */\n enrichToolCall(event: ToolCallEvent): ToolCallEvent {\n const tool = this.registry.get(event.toolName);\n if (!tool) {\n // Tool not recognized, return as-is\n return event;\n }\n\n return {\n ...event,\n tool,\n category: tool.category,\n };\n }\n\n /**\n * Enrich a tool result event with tool metadata.\n * Looks up the tool definition and adds it to the event.\n */\n enrichToolResult(event: ToolResultEvent): ToolResultEvent {\n const tool = this.registry.get(event.toolName);\n if (!tool) {\n // Tool not recognized, return as-is\n return event;\n }\n\n return {\n ...event,\n tool,\n category: tool.category,\n };\n }\n}\n"],"names":[],"mappings":";;AAGA;;;AAGG;MACU,gBAAgB,CAAA;AACnB,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;AAErC;;;AAGG;AACH,IAAA,cAAc,CAAC,KAAoB,EAAA;AACjC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE;;AAET,YAAA,OAAO,KAAK;QACd;QAEA,OAAO;AACL,YAAA,GAAG,KAAK;YACR,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;IACH;AAEA;;;AAGG;AACH,IAAA,gBAAgB,CAAC,KAAsB,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE;;AAET,YAAA,OAAO,KAAK;QACd;QAEA,OAAO;AACL,YAAA,GAAG,KAAK;YACR,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;IACH;AACD;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { AgentEvent, StatusEvent } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Provider adapter interface for transforming provider-specific messages
|
|
4
|
+
* into our standardized AgentEvent format.
|
|
5
|
+
*
|
|
6
|
+
* This allows us to support multiple AI providers (Claude, Gemini, OpenAI, etc.)
|
|
7
|
+
* while maintaining a consistent event interface for consumers.
|
|
8
|
+
*/
|
|
9
|
+
export interface ProviderAdapter {
|
|
10
|
+
/** Provider name (e.g., 'claude', 'gemini') */
|
|
11
|
+
name: string;
|
|
12
|
+
/**
|
|
13
|
+
* Transform a provider-specific SDK message into an AgentEvent.
|
|
14
|
+
* Returns null if the message should be ignored.
|
|
15
|
+
*/
|
|
16
|
+
transform(sdkMessage: unknown): AgentEvent | null;
|
|
17
|
+
/**
|
|
18
|
+
* Create a standardized status event.
|
|
19
|
+
* Used for workflow stage transitions and other status updates.
|
|
20
|
+
*/
|
|
21
|
+
createStatusEvent(phase: string, additionalData?: any): StatusEvent;
|
|
22
|
+
/**
|
|
23
|
+
* Create a raw SDK event for debugging purposes.
|
|
24
|
+
* Wraps the original SDK message in a raw_sdk_event.
|
|
25
|
+
*/
|
|
26
|
+
createRawSDKEvent(sdkMessage: any): AgentEvent;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,SAAS,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;IAElD;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG,GAAG,WAAW,CAAC;IAEpE;;;OAGG;IACH,iBAAiB,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU,CAAC;CAChD"}
|
package/dist/src/agent.d.ts
CHANGED
package/dist/src/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/src/agent.js
CHANGED
|
@@ -4,7 +4,7 @@ import { PostHogAPIClient } from './posthog-api.js';
|
|
|
4
4
|
import { PostHogFileManager } from './file-manager.js';
|
|
5
5
|
import { GitManager } from './git-manager.js';
|
|
6
6
|
import { TemplateManager } from './template-manager.js';
|
|
7
|
-
import {
|
|
7
|
+
import { ClaudeAdapter } from './adapters/claude/claude-adapter.js';
|
|
8
8
|
import { Logger } from './utils/logger.js';
|
|
9
9
|
import { AgentRegistry } from './agent-registry.js';
|
|
10
10
|
import { WorkflowRegistry } from './workflow-registry.js';
|
|
@@ -21,7 +21,7 @@ class Agent {
|
|
|
21
21
|
fileManager;
|
|
22
22
|
gitManager;
|
|
23
23
|
templateManager;
|
|
24
|
-
|
|
24
|
+
adapter;
|
|
25
25
|
logger;
|
|
26
26
|
agentRegistry;
|
|
27
27
|
workflowRegistry;
|
|
@@ -56,7 +56,8 @@ class Agent {
|
|
|
56
56
|
};
|
|
57
57
|
this.logger = new Logger({ debug: this.debug, prefix: '[PostHog Agent]' });
|
|
58
58
|
this.taskManager = new TaskManager();
|
|
59
|
-
|
|
59
|
+
// Hardcode Claude adapter for now - extensible for other providers later
|
|
60
|
+
this.adapter = new ClaudeAdapter();
|
|
60
61
|
this.fileManager = new PostHogFileManager(this.workingDirectory, this.logger.child('FileManager'));
|
|
61
62
|
this.gitManager = new GitManager({
|
|
62
63
|
repositoryPath: this.workingDirectory,
|
|
@@ -156,7 +157,7 @@ class Agent {
|
|
|
156
157
|
const atLastStage = currIdx >= 0 && currIdx === orderedStages.length - 1;
|
|
157
158
|
if (atLastStage) {
|
|
158
159
|
const finalStageKey = orderedStages[currIdx]?.key;
|
|
159
|
-
this.emitEvent(this.
|
|
160
|
+
this.emitEvent(this.adapter.createStatusEvent('no_next_stage', { stage: finalStageKey }));
|
|
160
161
|
await this.progressReporter.noNextStage(finalStageKey);
|
|
161
162
|
await this.progressReporter.complete();
|
|
162
163
|
this.taskManager.completeExecution(executionId, { task, workflow });
|
|
@@ -202,7 +203,7 @@ class Agent {
|
|
|
202
203
|
}
|
|
203
204
|
}
|
|
204
205
|
async executeStage(task, stage, options = {}) {
|
|
205
|
-
this.emitEvent(this.
|
|
206
|
+
this.emitEvent(this.adapter.createStatusEvent('stage_start', { stage: stage.key }));
|
|
206
207
|
const overrides = options.stageOverrides?.[stage.key];
|
|
207
208
|
const agentName = stage.agent_name || 'code_generation';
|
|
208
209
|
const agentDef = this.agentRegistry.getAgent(agentName);
|
|
@@ -215,20 +216,20 @@ class Agent {
|
|
|
215
216
|
if (isPlanning && shouldCreatePlanningBranch) {
|
|
216
217
|
const planningBranch = await this.createPlanningBranch(task.id);
|
|
217
218
|
await this.updateTaskBranch(task.id, planningBranch);
|
|
218
|
-
this.emitEvent(this.
|
|
219
|
+
this.emitEvent(this.adapter.createStatusEvent('branch_created', { stage: stage.key, branch: planningBranch }));
|
|
219
220
|
await this.progressReporter.branchCreated(stage.key, planningBranch);
|
|
220
221
|
}
|
|
221
222
|
else if (!isPlanning && !isManual && shouldCreateImplBranch) {
|
|
222
223
|
const implBranch = await this.createImplementationBranch(task.id);
|
|
223
224
|
await this.updateTaskBranch(task.id, implBranch);
|
|
224
|
-
this.emitEvent(this.
|
|
225
|
+
this.emitEvent(this.adapter.createStatusEvent('branch_created', { stage: stage.key, branch: implBranch }));
|
|
225
226
|
await this.progressReporter.branchCreated(stage.key, implBranch);
|
|
226
227
|
}
|
|
227
228
|
const result = await this.stageExecutor.execute(task, stage, options);
|
|
228
229
|
if (result.plan) {
|
|
229
230
|
await this.writePlan(task.id, result.plan);
|
|
230
231
|
await this.commitPlan(task.id, task.title);
|
|
231
|
-
this.emitEvent(this.
|
|
232
|
+
this.emitEvent(this.adapter.createStatusEvent('commit_made', { stage: stage.key, kind: 'plan' }));
|
|
232
233
|
await this.progressReporter.commitMade(stage.key, 'plan');
|
|
233
234
|
}
|
|
234
235
|
if (isManual) {
|
|
@@ -242,27 +243,27 @@ class Agent {
|
|
|
242
243
|
const implBranch = await this.createImplementationBranch(task.id);
|
|
243
244
|
await this.updateTaskBranch(task.id, implBranch);
|
|
244
245
|
branchName = implBranch;
|
|
245
|
-
this.emitEvent(this.
|
|
246
|
+
this.emitEvent(this.adapter.createStatusEvent('branch_created', { stage: stage.key, branch: implBranch }));
|
|
246
247
|
await this.progressReporter.branchCreated(stage.key, implBranch);
|
|
247
248
|
}
|
|
248
249
|
try {
|
|
249
250
|
const prUrl = await this.createPullRequest(task.id, branchName, task.title, task.description);
|
|
250
251
|
await this.updateTaskBranch(task.id, branchName);
|
|
251
252
|
await this.attachPullRequestToTask(task.id, prUrl, branchName);
|
|
252
|
-
this.emitEvent(this.
|
|
253
|
+
this.emitEvent(this.adapter.createStatusEvent('pr_created', { stage: stage.key, prUrl }));
|
|
253
254
|
await this.progressReporter.pullRequestCreated(stage.key, prUrl);
|
|
254
255
|
}
|
|
255
256
|
catch { }
|
|
256
257
|
}
|
|
257
258
|
// Do not auto-progress on manual stages
|
|
258
|
-
this.emitEvent(this.
|
|
259
|
+
this.emitEvent(this.adapter.createStatusEvent('stage_complete', { stage: stage.key }));
|
|
259
260
|
return;
|
|
260
261
|
}
|
|
261
262
|
if (result.results) {
|
|
262
263
|
const existingPlan = await this.readPlan(task.id);
|
|
263
264
|
const planSummary = existingPlan ? existingPlan.split('\n')[0] : undefined;
|
|
264
265
|
await this.commitImplementation(task.id, task.title, planSummary);
|
|
265
|
-
this.emitEvent(this.
|
|
266
|
+
this.emitEvent(this.adapter.createStatusEvent('commit_made', { stage: stage.key, kind: 'implementation' }));
|
|
266
267
|
await this.progressReporter.commitMade(stage.key, 'implementation');
|
|
267
268
|
}
|
|
268
269
|
// PR creation on complete stage (or if explicitly requested), regardless of whether edits occurred
|
|
@@ -275,13 +276,13 @@ class Agent {
|
|
|
275
276
|
const prUrl = await this.createPullRequest(task.id, branchName, task.title, task.description);
|
|
276
277
|
await this.updateTaskBranch(task.id, branchName);
|
|
277
278
|
await this.attachPullRequestToTask(task.id, prUrl, branchName);
|
|
278
|
-
this.emitEvent(this.
|
|
279
|
+
this.emitEvent(this.adapter.createStatusEvent('pr_created', { stage: stage.key, prUrl }));
|
|
279
280
|
await this.progressReporter.pullRequestCreated(stage.key, prUrl);
|
|
280
281
|
}
|
|
281
282
|
catch { }
|
|
282
283
|
}
|
|
283
284
|
}
|
|
284
|
-
this.emitEvent(this.
|
|
285
|
+
this.emitEvent(this.adapter.createStatusEvent('stage_complete', { stage: stage.key }));
|
|
285
286
|
}
|
|
286
287
|
async progressToNextStage(taskId, currentStageKey) {
|
|
287
288
|
if (!this.posthogAPI)
|
|
@@ -296,7 +297,7 @@ class Agent {
|
|
|
296
297
|
stage: currentStageKey,
|
|
297
298
|
error: error.message,
|
|
298
299
|
});
|
|
299
|
-
this.emitEvent(this.
|
|
300
|
+
this.emitEvent(this.adapter.createStatusEvent('no_next_stage', { stage: currentStageKey }));
|
|
300
301
|
await this.progressReporter.noNextStage(currentStageKey);
|
|
301
302
|
return;
|
|
302
303
|
}
|
|
@@ -321,9 +322,9 @@ class Agent {
|
|
|
321
322
|
for await (const message of response) {
|
|
322
323
|
this.logger.debug('Received message in direct run', message);
|
|
323
324
|
// Emit raw SDK event
|
|
324
|
-
this.emitEvent(this.
|
|
325
|
+
this.emitEvent(this.adapter.createRawSDKEvent(message));
|
|
325
326
|
// Emit transformed event
|
|
326
|
-
const transformedEvent = this.
|
|
327
|
+
const transformedEvent = this.adapter.transform(message);
|
|
327
328
|
if (transformedEvent) {
|
|
328
329
|
this.emitEvent(transformedEvent);
|
|
329
330
|
}
|