@sudocode-ai/local-server 0.1.7 → 0.1.9
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/README.md +6 -0
- package/dist/errors/agent-errors.d.ts +43 -0
- package/dist/errors/agent-errors.d.ts.map +1 -0
- package/dist/errors/agent-errors.js +69 -0
- package/dist/errors/agent-errors.js.map +1 -0
- package/dist/execution/adapters/claude-adapter.d.ts +63 -0
- package/dist/execution/adapters/claude-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/claude-adapter.js +82 -0
- package/dist/execution/adapters/claude-adapter.js.map +1 -0
- package/dist/execution/adapters/codex-adapter.d.ts +67 -0
- package/dist/execution/adapters/codex-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/codex-adapter.js +183 -0
- package/dist/execution/adapters/codex-adapter.js.map +1 -0
- package/dist/execution/adapters/codex-config-builder.d.ts +30 -0
- package/dist/execution/adapters/codex-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/codex-config-builder.js +110 -0
- package/dist/execution/adapters/codex-config-builder.js.map +1 -0
- package/dist/execution/adapters/copilot-adapter.d.ts +94 -0
- package/dist/execution/adapters/copilot-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/copilot-adapter.js +163 -0
- package/dist/execution/adapters/copilot-adapter.js.map +1 -0
- package/dist/execution/adapters/copilot-config-builder.d.ts +48 -0
- package/dist/execution/adapters/copilot-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/copilot-config-builder.js +125 -0
- package/dist/execution/adapters/copilot-config-builder.js.map +1 -0
- package/dist/execution/adapters/cursor-adapter.d.ts +66 -0
- package/dist/execution/adapters/cursor-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/cursor-adapter.js +121 -0
- package/dist/execution/adapters/cursor-adapter.js.map +1 -0
- package/dist/execution/adapters/cursor-config-builder.d.ts +29 -0
- package/dist/execution/adapters/cursor-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/cursor-config-builder.js +49 -0
- package/dist/execution/adapters/cursor-config-builder.js.map +1 -0
- package/dist/execution/adapters/shared/config-presets.d.ts +102 -0
- package/dist/execution/adapters/shared/config-presets.d.ts.map +1 -0
- package/dist/execution/adapters/shared/config-presets.js +205 -0
- package/dist/execution/adapters/shared/config-presets.js.map +1 -0
- package/dist/execution/adapters/shared/config-utils.d.ts +95 -0
- package/dist/execution/adapters/shared/config-utils.d.ts.map +1 -0
- package/dist/execution/adapters/shared/config-utils.js +163 -0
- package/dist/execution/adapters/shared/config-utils.js.map +1 -0
- package/dist/execution/adapters/shared/index.d.ts +8 -0
- package/dist/execution/adapters/shared/index.d.ts.map +1 -0
- package/dist/execution/adapters/shared/index.js +8 -0
- package/dist/execution/adapters/shared/index.js.map +1 -0
- package/dist/execution/executors/agent-executor-wrapper.d.ts +153 -0
- package/dist/execution/executors/agent-executor-wrapper.d.ts.map +1 -0
- package/dist/execution/executors/agent-executor-wrapper.js +652 -0
- package/dist/execution/executors/agent-executor-wrapper.js.map +1 -0
- package/dist/execution/executors/executor-factory.d.ts +95 -0
- package/dist/execution/executors/executor-factory.d.ts.map +1 -0
- package/dist/execution/executors/executor-factory.js +120 -0
- package/dist/execution/executors/executor-factory.js.map +1 -0
- package/dist/execution/output/ag-ui-adapter.d.ts +0 -2
- package/dist/execution/output/ag-ui-adapter.d.ts.map +1 -1
- package/dist/execution/output/ag-ui-adapter.js +0 -2
- package/dist/execution/output/ag-ui-adapter.js.map +1 -1
- package/dist/execution/output/index.d.ts +0 -3
- package/dist/execution/output/index.d.ts.map +1 -1
- package/dist/execution/output/index.js +0 -2
- package/dist/execution/output/index.js.map +1 -1
- package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts +108 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts.map +1 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.js +321 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.js.map +1 -0
- package/dist/execution/process/builders/claude.d.ts +24 -57
- package/dist/execution/process/builders/claude.d.ts.map +1 -1
- package/dist/execution/process/builders/claude.js +153 -19
- package/dist/execution/process/builders/claude.js.map +1 -1
- package/dist/execution/transport/ipc-transport-manager.d.ts +74 -0
- package/dist/execution/transport/ipc-transport-manager.d.ts.map +1 -0
- package/dist/execution/transport/ipc-transport-manager.js +104 -0
- package/dist/execution/transport/ipc-transport-manager.js.map +1 -0
- package/dist/execution/transport/transport-manager.d.ts.map +1 -1
- package/dist/execution/transport/transport-manager.js +3 -0
- package/dist/execution/transport/transport-manager.js.map +1 -1
- package/dist/execution/worktree/conflict-detector.d.ts +85 -0
- package/dist/execution/worktree/conflict-detector.d.ts.map +1 -0
- package/dist/execution/worktree/conflict-detector.js +129 -0
- package/dist/execution/worktree/conflict-detector.js.map +1 -0
- package/dist/execution/worktree/git-cli.d.ts +9 -0
- package/dist/execution/worktree/git-cli.d.ts.map +1 -1
- package/dist/execution/worktree/git-cli.js +10 -0
- package/dist/execution/worktree/git-cli.js.map +1 -1
- package/dist/execution/worktree/git-sync-cli.d.ts +198 -0
- package/dist/execution/worktree/git-sync-cli.d.ts.map +1 -0
- package/dist/execution/worktree/git-sync-cli.js +401 -0
- package/dist/execution/worktree/git-sync-cli.js.map +1 -0
- package/dist/execution/worktree/manager.d.ts +18 -0
- package/dist/execution/worktree/manager.d.ts.map +1 -1
- package/dist/execution/worktree/manager.js +9 -3
- package/dist/execution/worktree/manager.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +124 -229
- package/dist/index.js.map +1 -1
- package/dist/middleware/project-context.d.ts +37 -0
- package/dist/middleware/project-context.d.ts.map +1 -0
- package/dist/middleware/project-context.js +91 -0
- package/dist/middleware/project-context.js.map +1 -0
- package/dist/public/assets/index-DV9Tbujb.css +1 -0
- package/dist/public/assets/index-DcDX9-Ad.js +740 -0
- package/dist/public/assets/index-DcDX9-Ad.js.map +1 -0
- package/dist/public/assets/{react-vendor-ByUx1V_q.js → react-vendor-DiL5hC7l.js} +2 -2
- package/dist/public/assets/{react-vendor-ByUx1V_q.js.map → react-vendor-DiL5hC7l.js.map} +1 -1
- package/dist/public/assets/ui-vendor-B4WMPEfa.js +54 -0
- package/dist/public/assets/ui-vendor-B4WMPEfa.js.map +1 -0
- package/dist/public/index.html +4 -4
- package/dist/routes/agents.d.ts +3 -0
- package/dist/routes/agents.d.ts.map +1 -0
- package/dist/routes/agents.js +62 -0
- package/dist/routes/agents.js.map +1 -0
- package/dist/routes/config.d.ts +3 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +25 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/editors.d.ts +15 -0
- package/dist/routes/editors.d.ts.map +1 -0
- package/dist/routes/editors.js +98 -0
- package/dist/routes/editors.js.map +1 -0
- package/dist/routes/executions-stream.d.ts +8 -5
- package/dist/routes/executions-stream.d.ts.map +1 -1
- package/dist/routes/executions-stream.js +10 -6
- package/dist/routes/executions-stream.js.map +1 -1
- package/dist/routes/executions.d.ts +6 -10
- package/dist/routes/executions.d.ts.map +1 -1
- package/dist/routes/executions.js +792 -37
- package/dist/routes/executions.js.map +1 -1
- package/dist/routes/feedback.d.ts +3 -2
- package/dist/routes/feedback.d.ts.map +1 -1
- package/dist/routes/feedback.js +12 -10
- package/dist/routes/feedback.js.map +1 -1
- package/dist/routes/files.d.ts +18 -0
- package/dist/routes/files.d.ts.map +1 -0
- package/dist/routes/files.js +89 -0
- package/dist/routes/files.js.map +1 -0
- package/dist/routes/issues.d.ts +3 -2
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +19 -18
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/projects.d.ts +11 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +447 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/relationships.d.ts +3 -2
- package/dist/routes/relationships.d.ts.map +1 -1
- package/dist/routes/relationships.js +12 -10
- package/dist/routes/relationships.js.map +1 -1
- package/dist/routes/repo-info.d.ts +3 -0
- package/dist/routes/repo-info.d.ts.map +1 -0
- package/dist/routes/repo-info.js +203 -0
- package/dist/routes/repo-info.js.map +1 -0
- package/dist/routes/specs.d.ts +3 -2
- package/dist/routes/specs.d.ts.map +1 -1
- package/dist/routes/specs.js +19 -18
- package/dist/routes/specs.js.map +1 -1
- package/dist/routes/version.d.ts +3 -0
- package/dist/routes/version.d.ts.map +1 -0
- package/dist/routes/version.js +25 -0
- package/dist/routes/version.js.map +1 -0
- package/dist/services/agent-registry.d.ts +140 -0
- package/dist/services/agent-registry.d.ts.map +1 -0
- package/dist/services/agent-registry.js +272 -0
- package/dist/services/agent-registry.js.map +1 -0
- package/dist/services/editor-service.d.ts +57 -0
- package/dist/services/editor-service.d.ts.map +1 -0
- package/dist/services/editor-service.js +204 -0
- package/dist/services/editor-service.js.map +1 -0
- package/dist/services/execution-changes-service.d.ts +110 -0
- package/dist/services/execution-changes-service.d.ts.map +1 -0
- package/dist/services/execution-changes-service.js +700 -0
- package/dist/services/execution-changes-service.js.map +1 -0
- package/dist/services/execution-lifecycle.d.ts +1 -0
- package/dist/services/execution-lifecycle.d.ts.map +1 -1
- package/dist/services/execution-lifecycle.js +37 -7
- package/dist/services/execution-lifecycle.js.map +1 -1
- package/dist/services/execution-logs-store.d.ts +75 -0
- package/dist/services/execution-logs-store.d.ts.map +1 -1
- package/dist/services/execution-logs-store.js +142 -2
- package/dist/services/execution-logs-store.js.map +1 -1
- package/dist/services/execution-service.d.ts +82 -59
- package/dist/services/execution-service.d.ts.map +1 -1
- package/dist/services/execution-service.js +514 -469
- package/dist/services/execution-service.js.map +1 -1
- package/dist/services/execution-worker-pool.d.ts +116 -0
- package/dist/services/execution-worker-pool.d.ts.map +1 -0
- package/dist/services/execution-worker-pool.js +326 -0
- package/dist/services/execution-worker-pool.js.map +1 -0
- package/dist/services/executions.d.ts +3 -0
- package/dist/services/executions.d.ts.map +1 -1
- package/dist/services/executions.js +11 -17
- package/dist/services/executions.js.map +1 -1
- package/dist/services/export.d.ts +8 -2
- package/dist/services/export.d.ts.map +1 -1
- package/dist/services/export.js +29 -23
- package/dist/services/export.js.map +1 -1
- package/dist/services/file-search/git-ls-files-strategy.d.ts +72 -0
- package/dist/services/file-search/git-ls-files-strategy.d.ts.map +1 -0
- package/dist/services/file-search/git-ls-files-strategy.js +176 -0
- package/dist/services/file-search/git-ls-files-strategy.js.map +1 -0
- package/dist/services/file-search/index.d.ts +9 -0
- package/dist/services/file-search/index.d.ts.map +1 -0
- package/dist/services/file-search/index.js +10 -0
- package/dist/services/file-search/index.js.map +1 -0
- package/dist/services/file-search/registry.d.ts +97 -0
- package/dist/services/file-search/registry.d.ts.map +1 -0
- package/dist/services/file-search/registry.js +140 -0
- package/dist/services/file-search/registry.js.map +1 -0
- package/dist/services/file-search/strategy.d.ts +58 -0
- package/dist/services/file-search/strategy.d.ts.map +1 -0
- package/dist/services/file-search/strategy.js +8 -0
- package/dist/services/file-search/strategy.js.map +1 -0
- package/dist/services/project-context.d.ts +69 -0
- package/dist/services/project-context.d.ts.map +1 -0
- package/dist/services/project-context.js +113 -0
- package/dist/services/project-context.js.map +1 -0
- package/dist/services/project-manager.d.ts +95 -0
- package/dist/services/project-manager.d.ts.map +1 -0
- package/dist/services/project-manager.js +388 -0
- package/dist/services/project-manager.js.map +1 -0
- package/dist/services/project-registry.d.ts +98 -0
- package/dist/services/project-registry.d.ts.map +1 -0
- package/dist/services/project-registry.js +289 -0
- package/dist/services/project-registry.js.map +1 -0
- package/dist/services/prompt-resolver.d.ts +97 -0
- package/dist/services/prompt-resolver.d.ts.map +1 -0
- package/dist/services/prompt-resolver.js +377 -0
- package/dist/services/prompt-resolver.js.map +1 -0
- package/dist/services/repo-info.d.ts +12 -0
- package/dist/services/repo-info.d.ts.map +1 -1
- package/dist/services/repo-info.js +46 -0
- package/dist/services/repo-info.js.map +1 -1
- package/dist/services/version-service.d.ts +14 -0
- package/dist/services/version-service.d.ts.map +1 -0
- package/dist/services/version-service.js +57 -0
- package/dist/services/version-service.js.map +1 -0
- package/dist/services/watcher.d.ts +3 -4
- package/dist/services/watcher.d.ts.map +1 -1
- package/dist/services/watcher.js +18 -35
- package/dist/services/watcher.js.map +1 -1
- package/dist/services/websocket.d.ts +30 -16
- package/dist/services/websocket.d.ts.map +1 -1
- package/dist/services/websocket.js +102 -37
- package/dist/services/websocket.js.map +1 -1
- package/dist/services/worktree-sync-service.d.ts +326 -0
- package/dist/services/worktree-sync-service.d.ts.map +1 -0
- package/dist/services/worktree-sync-service.js +1091 -0
- package/dist/services/worktree-sync-service.js.map +1 -0
- package/dist/types/editor.d.ts +49 -0
- package/dist/types/editor.d.ts.map +1 -0
- package/dist/types/editor.js +50 -0
- package/dist/types/editor.js.map +1 -0
- package/dist/types/project.d.ts +58 -0
- package/dist/types/project.d.ts.map +1 -0
- package/dist/types/project.js +10 -0
- package/dist/types/project.js.map +1 -0
- package/dist/utils/executable-check.d.ts +36 -0
- package/dist/utils/executable-check.d.ts.map +1 -0
- package/dist/utils/executable-check.js +79 -0
- package/dist/utils/executable-check.js.map +1 -0
- package/dist/workers/execution-worker.d.ts +18 -0
- package/dist/workers/execution-worker.d.ts.map +1 -0
- package/dist/workers/execution-worker.js +340 -0
- package/dist/workers/execution-worker.js.map +1 -0
- package/dist/workers/worker-ipc.d.ts +84 -0
- package/dist/workers/worker-ipc.d.ts.map +1 -0
- package/dist/workers/worker-ipc.js +29 -0
- package/dist/workers/worker-ipc.js.map +1 -0
- package/package.json +6 -5
- package/dist/execution/output/ag-ui-integration.d.ts +0 -96
- package/dist/execution/output/ag-ui-integration.d.ts.map +0 -1
- package/dist/execution/output/ag-ui-integration.js +0 -96
- package/dist/execution/output/ag-ui-integration.js.map +0 -1
- package/dist/execution/output/claude-code-output-processor.d.ts +0 -321
- package/dist/execution/output/claude-code-output-processor.d.ts.map +0 -1
- package/dist/execution/output/claude-code-output-processor.js +0 -769
- package/dist/execution/output/claude-code-output-processor.js.map +0 -1
- package/dist/public/assets/index-B3SEMufD.js +0 -580
- package/dist/public/assets/index-B3SEMufD.js.map +0 -1
- package/dist/public/assets/index-D2YGL3gX.css +0 -1
- package/dist/public/assets/ui-vendor-CotR6bx9.js +0 -54
- package/dist/public/assets/ui-vendor-CotR6bx9.js.map +0 -1
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalized Entry to AG-UI Adapter
|
|
3
|
+
*
|
|
4
|
+
* Converts NormalizedEntry output from ClaudeCodeExecutor to AG-UI events
|
|
5
|
+
* that can be consumed by the frontend via SSE streaming.
|
|
6
|
+
*
|
|
7
|
+
* This adapter bridges the gap between agent-execution-engine's normalized
|
|
8
|
+
* format and the AG-UI protocol used by the frontend.
|
|
9
|
+
*
|
|
10
|
+
* @module execution/output/normalized-to-ag-ui-adapter
|
|
11
|
+
*/
|
|
12
|
+
import { EventType, } from "@ag-ui/core";
|
|
13
|
+
/**
|
|
14
|
+
* NormalizedEntryToAgUiAdapter
|
|
15
|
+
*
|
|
16
|
+
* Transforms normalized entries from agent executors into AG-UI protocol events.
|
|
17
|
+
* Maintains message ID tracking and ensures proper event sequencing.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const agUiAdapter = new AgUiEventAdapter('run-123');
|
|
22
|
+
* const normalizedAdapter = new NormalizedEntryToAgUiAdapter(agUiAdapter);
|
|
23
|
+
*
|
|
24
|
+
* for await (const entry of normalizedStream) {
|
|
25
|
+
* await normalizedAdapter.processEntry(entry);
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export class NormalizedEntryToAgUiAdapter {
|
|
30
|
+
agUiAdapter;
|
|
31
|
+
toolCallMap = new Map(); // toolId -> messageId
|
|
32
|
+
messageCounter = 0;
|
|
33
|
+
/**
|
|
34
|
+
* Create a new NormalizedEntryToAgUiAdapter
|
|
35
|
+
*
|
|
36
|
+
* @param agUiAdapter - AG-UI event adapter to emit events through
|
|
37
|
+
*/
|
|
38
|
+
constructor(agUiAdapter) {
|
|
39
|
+
this.agUiAdapter = agUiAdapter;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Process a normalized entry and emit appropriate AG-UI events
|
|
43
|
+
*
|
|
44
|
+
* @param entry - Normalized entry from agent executor
|
|
45
|
+
*/
|
|
46
|
+
async processEntry(entry) {
|
|
47
|
+
switch (entry.type.kind) {
|
|
48
|
+
case "assistant_message":
|
|
49
|
+
await this.handleAssistantMessage(entry);
|
|
50
|
+
break;
|
|
51
|
+
case "tool_use":
|
|
52
|
+
await this.handleToolUse(entry);
|
|
53
|
+
break;
|
|
54
|
+
case "thinking":
|
|
55
|
+
await this.handleThinking(entry);
|
|
56
|
+
break;
|
|
57
|
+
case "error":
|
|
58
|
+
await this.handleError(entry);
|
|
59
|
+
break;
|
|
60
|
+
case "system_message":
|
|
61
|
+
await this.handleSystemMessage(entry);
|
|
62
|
+
break;
|
|
63
|
+
case "user_message":
|
|
64
|
+
// User messages are already sent by the client, skip
|
|
65
|
+
break;
|
|
66
|
+
default:
|
|
67
|
+
console.warn("[NormalizedAdapter] Unknown entry type:", entry);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Handle assistant message entries
|
|
72
|
+
*
|
|
73
|
+
* Emits TextMessageStart, TextMessageContent, and TextMessageEnd events.
|
|
74
|
+
*/
|
|
75
|
+
async handleAssistantMessage(entry) {
|
|
76
|
+
const messageId = this.generateMessageId();
|
|
77
|
+
const timestamp = this.getTimestamp(entry);
|
|
78
|
+
// Emit TEXT_MESSAGE_START
|
|
79
|
+
this.emitEvent({
|
|
80
|
+
type: EventType.TEXT_MESSAGE_START,
|
|
81
|
+
timestamp,
|
|
82
|
+
messageId,
|
|
83
|
+
role: "assistant",
|
|
84
|
+
});
|
|
85
|
+
// Emit TEXT_MESSAGE_CONTENT
|
|
86
|
+
this.emitEvent({
|
|
87
|
+
type: EventType.TEXT_MESSAGE_CONTENT,
|
|
88
|
+
timestamp,
|
|
89
|
+
messageId,
|
|
90
|
+
delta: entry.content,
|
|
91
|
+
});
|
|
92
|
+
// Emit TEXT_MESSAGE_END
|
|
93
|
+
this.emitEvent({
|
|
94
|
+
type: EventType.TEXT_MESSAGE_END,
|
|
95
|
+
timestamp,
|
|
96
|
+
messageId,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Handle tool use entries
|
|
101
|
+
*
|
|
102
|
+
* Emits ToolCallStart, and optionally ToolCallResult/End if the tool
|
|
103
|
+
* execution is complete.
|
|
104
|
+
*/
|
|
105
|
+
async handleToolUse(entry) {
|
|
106
|
+
if (entry.type.kind !== "tool_use")
|
|
107
|
+
return;
|
|
108
|
+
const tool = entry.type.tool;
|
|
109
|
+
const toolId = `${tool.toolName}-${entry.index}`;
|
|
110
|
+
const timestamp = this.getTimestamp(entry);
|
|
111
|
+
// Check if we've already started this tool call
|
|
112
|
+
let messageId = this.toolCallMap.get(toolId);
|
|
113
|
+
if (!messageId) {
|
|
114
|
+
// First time seeing this tool - emit start event
|
|
115
|
+
messageId = this.generateMessageId();
|
|
116
|
+
this.toolCallMap.set(toolId, messageId);
|
|
117
|
+
const args = this.extractToolArgs(tool.action);
|
|
118
|
+
// Emit TOOL_CALL_START
|
|
119
|
+
this.emitEvent({
|
|
120
|
+
type: EventType.TOOL_CALL_START,
|
|
121
|
+
timestamp,
|
|
122
|
+
toolCallId: toolId,
|
|
123
|
+
toolCallName: tool.toolName,
|
|
124
|
+
});
|
|
125
|
+
// If we have args in the action, emit them
|
|
126
|
+
if (Object.keys(args).length > 0) {
|
|
127
|
+
this.emitEvent({
|
|
128
|
+
type: EventType.TOOL_CALL_ARGS,
|
|
129
|
+
timestamp,
|
|
130
|
+
toolCallId: toolId,
|
|
131
|
+
delta: JSON.stringify(args),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// If tool is completed (success or failed), emit result and end
|
|
136
|
+
if (tool.status === "success" || tool.status === "failed") {
|
|
137
|
+
const result = this.extractToolResult(tool.result);
|
|
138
|
+
// Emit TOOL_CALL_END
|
|
139
|
+
this.emitEvent({
|
|
140
|
+
type: EventType.TOOL_CALL_END,
|
|
141
|
+
timestamp,
|
|
142
|
+
toolCallId: toolId,
|
|
143
|
+
});
|
|
144
|
+
// Emit TOOL_CALL_RESULT
|
|
145
|
+
this.emitEvent({
|
|
146
|
+
type: EventType.TOOL_CALL_RESULT,
|
|
147
|
+
timestamp,
|
|
148
|
+
messageId,
|
|
149
|
+
toolCallId: toolId,
|
|
150
|
+
content: result.success
|
|
151
|
+
? JSON.stringify(result.output)
|
|
152
|
+
: result.error || "Tool execution failed",
|
|
153
|
+
});
|
|
154
|
+
// Clean up tracking
|
|
155
|
+
this.toolCallMap.delete(toolId);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Handle thinking entries
|
|
160
|
+
*
|
|
161
|
+
* Converts thinking blocks to text messages with special formatting.
|
|
162
|
+
*/
|
|
163
|
+
async handleThinking(entry) {
|
|
164
|
+
if (entry.type.kind !== "thinking")
|
|
165
|
+
return;
|
|
166
|
+
const messageId = this.generateMessageId();
|
|
167
|
+
const timestamp = this.getTimestamp(entry);
|
|
168
|
+
const reasoning = entry.type.reasoning || "";
|
|
169
|
+
// Emit as a text message with [Thinking] prefix
|
|
170
|
+
this.emitEvent({
|
|
171
|
+
type: EventType.TEXT_MESSAGE_START,
|
|
172
|
+
timestamp,
|
|
173
|
+
messageId,
|
|
174
|
+
role: "assistant",
|
|
175
|
+
});
|
|
176
|
+
this.emitEvent({
|
|
177
|
+
type: EventType.TEXT_MESSAGE_CONTENT,
|
|
178
|
+
timestamp,
|
|
179
|
+
messageId,
|
|
180
|
+
delta: `[Thinking] ${reasoning}`,
|
|
181
|
+
});
|
|
182
|
+
this.emitEvent({
|
|
183
|
+
type: EventType.TEXT_MESSAGE_END,
|
|
184
|
+
timestamp,
|
|
185
|
+
messageId,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Handle error entries
|
|
190
|
+
*
|
|
191
|
+
* Emits RunError events for execution errors.
|
|
192
|
+
*/
|
|
193
|
+
async handleError(entry) {
|
|
194
|
+
if (entry.type.kind !== "error")
|
|
195
|
+
return;
|
|
196
|
+
const error = entry.type.error;
|
|
197
|
+
this.emitEvent({
|
|
198
|
+
type: EventType.RUN_ERROR,
|
|
199
|
+
timestamp: this.getTimestamp(entry),
|
|
200
|
+
message: error.message,
|
|
201
|
+
...(error.stack && { rawEvent: { details: error.stack } }),
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Handle system message entries
|
|
206
|
+
*
|
|
207
|
+
* Converts to custom events or text messages.
|
|
208
|
+
*/
|
|
209
|
+
async handleSystemMessage(entry) {
|
|
210
|
+
// System messages can be emitted as custom events or text messages
|
|
211
|
+
// For now, emit as text messages for visibility
|
|
212
|
+
const messageId = this.generateMessageId();
|
|
213
|
+
const timestamp = this.getTimestamp(entry);
|
|
214
|
+
this.emitEvent({
|
|
215
|
+
type: EventType.TEXT_MESSAGE_START,
|
|
216
|
+
timestamp,
|
|
217
|
+
messageId,
|
|
218
|
+
role: "assistant",
|
|
219
|
+
});
|
|
220
|
+
this.emitEvent({
|
|
221
|
+
type: EventType.TEXT_MESSAGE_CONTENT,
|
|
222
|
+
timestamp,
|
|
223
|
+
messageId,
|
|
224
|
+
delta: `[System] ${entry.content}`,
|
|
225
|
+
});
|
|
226
|
+
this.emitEvent({
|
|
227
|
+
type: EventType.TEXT_MESSAGE_END,
|
|
228
|
+
timestamp,
|
|
229
|
+
messageId,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Extract tool arguments from action type
|
|
234
|
+
*
|
|
235
|
+
* Maps the discriminated ActionType union to a plain object
|
|
236
|
+
* suitable for AG-UI events.
|
|
237
|
+
*/
|
|
238
|
+
extractToolArgs(action) {
|
|
239
|
+
switch (action.kind) {
|
|
240
|
+
case "file_read":
|
|
241
|
+
return { path: action.path };
|
|
242
|
+
case "file_write":
|
|
243
|
+
return { path: action.path };
|
|
244
|
+
case "file_edit":
|
|
245
|
+
return {
|
|
246
|
+
path: action.path,
|
|
247
|
+
changes: action.changes.map((c) => ({
|
|
248
|
+
type: c.type,
|
|
249
|
+
diff: c.unifiedDiff,
|
|
250
|
+
})),
|
|
251
|
+
};
|
|
252
|
+
case "command_run":
|
|
253
|
+
return {
|
|
254
|
+
command: action.command,
|
|
255
|
+
result: action.result
|
|
256
|
+
? {
|
|
257
|
+
exitCode: action.result.exitCode,
|
|
258
|
+
stdout: action.result.stdout,
|
|
259
|
+
stderr: action.result.stderr,
|
|
260
|
+
}
|
|
261
|
+
: undefined,
|
|
262
|
+
};
|
|
263
|
+
case "search":
|
|
264
|
+
return { query: action.query };
|
|
265
|
+
case "tool":
|
|
266
|
+
return {
|
|
267
|
+
toolName: action.toolName,
|
|
268
|
+
args: action.args,
|
|
269
|
+
};
|
|
270
|
+
default:
|
|
271
|
+
return {};
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Extract tool result for AG-UI events
|
|
276
|
+
*
|
|
277
|
+
* Converts ToolResult to AG-UI format.
|
|
278
|
+
*/
|
|
279
|
+
extractToolResult(result) {
|
|
280
|
+
if (!result) {
|
|
281
|
+
return { success: false, error: "No result available" };
|
|
282
|
+
}
|
|
283
|
+
return {
|
|
284
|
+
success: result.success,
|
|
285
|
+
output: result.data,
|
|
286
|
+
error: result.error,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Generate a unique message ID
|
|
291
|
+
*/
|
|
292
|
+
generateMessageId() {
|
|
293
|
+
this.messageCounter++;
|
|
294
|
+
return `msg-${Date.now()}-${this.messageCounter}`;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Get timestamp from entry, falling back to Date.now() if not available
|
|
298
|
+
*
|
|
299
|
+
* Preserves original timestamps from NormalizedEntry for proper ordering
|
|
300
|
+
* during historical replay.
|
|
301
|
+
*/
|
|
302
|
+
getTimestamp(entry) {
|
|
303
|
+
if (entry.timestamp) {
|
|
304
|
+
return entry.timestamp instanceof Date
|
|
305
|
+
? entry.timestamp.getTime()
|
|
306
|
+
: new Date(entry.timestamp).getTime();
|
|
307
|
+
}
|
|
308
|
+
return Date.now();
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Emit an event through the AG-UI adapter
|
|
312
|
+
*
|
|
313
|
+
* Uses the adapter's onEvent mechanism to emit events.
|
|
314
|
+
*/
|
|
315
|
+
emitEvent(event) {
|
|
316
|
+
// Access the private emit method via the adapter's listener mechanism
|
|
317
|
+
// This is a workaround since AgUiEventAdapter doesn't expose public emit methods
|
|
318
|
+
this.agUiAdapter.emit(event);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=normalized-to-ag-ui-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalized-to-ag-ui-adapter.js","sourceRoot":"","sources":["../../../src/execution/output/normalized-to-ag-ui-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,63 +7,8 @@
|
|
|
7
7
|
* @module execution/process/builders/claude
|
|
8
8
|
*/
|
|
9
9
|
import type { ProcessConfig } from 'agent-execution-engine';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*/
|
|
13
|
-
export interface ClaudeCodeConfig {
|
|
14
|
-
/**
|
|
15
|
-
* Path to Claude Code CLI executable
|
|
16
|
-
* @default 'claude'
|
|
17
|
-
*/
|
|
18
|
-
claudePath?: string;
|
|
19
|
-
/**
|
|
20
|
-
* Working directory for the process
|
|
21
|
-
*/
|
|
22
|
-
workDir: string;
|
|
23
|
-
/**
|
|
24
|
-
* Run in non-interactive print mode
|
|
25
|
-
* @default false
|
|
26
|
-
*/
|
|
27
|
-
print?: boolean;
|
|
28
|
-
/**
|
|
29
|
-
* Output format (stream-json recommended for parsing)
|
|
30
|
-
* @default 'text'
|
|
31
|
-
*/
|
|
32
|
-
outputFormat?: 'stream-json' | 'json' | 'text';
|
|
33
|
-
/**
|
|
34
|
-
* Enable verbose output (required for stream-json with print mode)
|
|
35
|
-
* @default false
|
|
36
|
-
*/
|
|
37
|
-
verbose?: boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Skip permission prompts
|
|
40
|
-
* @default false
|
|
41
|
-
*/
|
|
42
|
-
dangerouslySkipPermissions?: boolean;
|
|
43
|
-
/**
|
|
44
|
-
* Permission mode setting
|
|
45
|
-
*/
|
|
46
|
-
permissionMode?: string;
|
|
47
|
-
/**
|
|
48
|
-
* Environment variables to pass to the process
|
|
49
|
-
*/
|
|
50
|
-
env?: Record<string, string>;
|
|
51
|
-
/**
|
|
52
|
-
* Maximum execution time in milliseconds
|
|
53
|
-
*/
|
|
54
|
-
timeout?: number;
|
|
55
|
-
/**
|
|
56
|
-
* Maximum idle time before cleanup (pool only)
|
|
57
|
-
*/
|
|
58
|
-
idleTimeout?: number;
|
|
59
|
-
/**
|
|
60
|
-
* Retry configuration for failed spawns
|
|
61
|
-
*/
|
|
62
|
-
retry?: {
|
|
63
|
-
maxAttempts: number;
|
|
64
|
-
backoffMs: number;
|
|
65
|
-
};
|
|
66
|
-
}
|
|
10
|
+
import type { ClaudeCodeConfig } from '@sudocode-ai/types/agents';
|
|
11
|
+
export type { ClaudeCodeConfig } from '@sudocode-ai/types/agents';
|
|
67
12
|
/**
|
|
68
13
|
* Build a generic ProcessConfig from Claude Code specific configuration
|
|
69
14
|
*
|
|
@@ -76,6 +21,8 @@ export interface ClaudeCodeConfig {
|
|
|
76
21
|
* workDir: '/path/to/project',
|
|
77
22
|
* print: true,
|
|
78
23
|
* outputFormat: 'stream-json',
|
|
24
|
+
* model: 'sonnet',
|
|
25
|
+
* allowedTools: ['Bash(git:*)', 'Edit', 'Read'],
|
|
79
26
|
* dangerouslySkipPermissions: true,
|
|
80
27
|
* });
|
|
81
28
|
*
|
|
@@ -83,4 +30,24 @@ export interface ClaudeCodeConfig {
|
|
|
83
30
|
* ```
|
|
84
31
|
*/
|
|
85
32
|
export declare function buildClaudeConfig(config: ClaudeCodeConfig): ProcessConfig;
|
|
33
|
+
/**
|
|
34
|
+
* Build Claude Code CLI arguments from configuration
|
|
35
|
+
*
|
|
36
|
+
* @param config - Claude Code configuration
|
|
37
|
+
* @returns Array of command-line arguments
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildClaudeArgs(config: ClaudeCodeConfig): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Validate Claude Code configuration
|
|
42
|
+
*
|
|
43
|
+
* @param config - Configuration to validate
|
|
44
|
+
* @returns Array of validation error messages (empty if valid)
|
|
45
|
+
*/
|
|
46
|
+
export declare function validateClaudeConfig(config: ClaudeCodeConfig): string[];
|
|
47
|
+
/**
|
|
48
|
+
* Get default Claude Code configuration
|
|
49
|
+
*
|
|
50
|
+
* @returns Default configuration values
|
|
51
|
+
*/
|
|
52
|
+
export declare function getDefaultClaudeConfig(): Partial<ClaudeCodeConfig>;
|
|
86
53
|
//# sourceMappingURL=claude.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../../src/execution/process/builders/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../../src/execution/process/builders/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAIlE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAQzE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAmHlE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAOvE;AA2DD;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAQlE"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module execution/process/builders/claude
|
|
8
8
|
*/
|
|
9
|
+
import { AgentConfigUtils } from '../../adapters/shared/index.js';
|
|
9
10
|
/**
|
|
10
11
|
* Build a generic ProcessConfig from Claude Code specific configuration
|
|
11
12
|
*
|
|
@@ -18,6 +19,8 @@
|
|
|
18
19
|
* workDir: '/path/to/project',
|
|
19
20
|
* print: true,
|
|
20
21
|
* outputFormat: 'stream-json',
|
|
22
|
+
* model: 'sonnet',
|
|
23
|
+
* allowedTools: ['Bash(git:*)', 'Edit', 'Read'],
|
|
21
24
|
* dangerouslySkipPermissions: true,
|
|
22
25
|
* });
|
|
23
26
|
*
|
|
@@ -25,35 +28,166 @@
|
|
|
25
28
|
* ```
|
|
26
29
|
*/
|
|
27
30
|
export function buildClaudeConfig(config) {
|
|
31
|
+
const args = buildClaudeArgs(config);
|
|
32
|
+
return AgentConfigUtils.buildBaseProcessConfig(config.claudePath || 'claude', args, config);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Build Claude Code CLI arguments from configuration
|
|
36
|
+
*
|
|
37
|
+
* @param config - Claude Code configuration
|
|
38
|
+
* @returns Array of command-line arguments
|
|
39
|
+
*/
|
|
40
|
+
export function buildClaudeArgs(config) {
|
|
28
41
|
const args = [];
|
|
42
|
+
// === Core Execution Mode ===
|
|
29
43
|
// Add --print flag for non-interactive mode
|
|
30
44
|
if (config.print) {
|
|
31
45
|
args.push('--print');
|
|
32
46
|
}
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
|
|
47
|
+
// === Output Configuration ===
|
|
48
|
+
args.push(...AgentConfigUtils.buildConditionalArgs([
|
|
49
|
+
{ flag: '--output-format', value: config.outputFormat, condition: !!config.outputFormat },
|
|
50
|
+
{ flag: '--verbose', condition: !!config.verbose || (!!config.print && config.outputFormat === 'stream-json') },
|
|
51
|
+
{ flag: '--json-schema', value: config.jsonSchema, condition: !!config.jsonSchema },
|
|
52
|
+
{ flag: '--include-partial-messages', condition: !!config.includePartialMessages },
|
|
53
|
+
]));
|
|
54
|
+
// === Permissions ===
|
|
55
|
+
args.push(...AgentConfigUtils.buildConditionalArgs([
|
|
56
|
+
{ flag: '--dangerously-skip-permissions', condition: !!config.dangerouslySkipPermissions },
|
|
57
|
+
{ flag: '--allow-dangerously-skip-permissions', condition: !!config.allowDangerouslySkipPermissions },
|
|
58
|
+
{ flag: '--permission-mode', value: config.permissionMode, condition: !!config.permissionMode },
|
|
59
|
+
]));
|
|
60
|
+
// === Model Configuration ===
|
|
61
|
+
args.push(...AgentConfigUtils.buildConditionalArgs([
|
|
62
|
+
{ flag: '--model', value: config.model, condition: !!config.model },
|
|
63
|
+
{ flag: '--fallback-model', value: config.fallbackModel, condition: !!config.fallbackModel },
|
|
64
|
+
]));
|
|
65
|
+
// === Tool Permissions ===
|
|
66
|
+
// --allowedTools / --allowed-tools accepts multiple values
|
|
67
|
+
if (config.allowedTools && config.allowedTools.length > 0) {
|
|
68
|
+
args.push('--allowed-tools', ...config.allowedTools);
|
|
69
|
+
}
|
|
70
|
+
// --tools accepts multiple values
|
|
71
|
+
if (config.tools && config.tools.length > 0) {
|
|
72
|
+
args.push('--tools', ...config.tools);
|
|
73
|
+
}
|
|
74
|
+
// --disallowedTools / --disallowed-tools accepts multiple values
|
|
75
|
+
if (config.disallowedTools && config.disallowedTools.length > 0) {
|
|
76
|
+
args.push('--disallowed-tools', ...config.disallowedTools);
|
|
36
77
|
}
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
78
|
+
// === System Prompt ===
|
|
79
|
+
args.push(...AgentConfigUtils.buildConditionalArgs([
|
|
80
|
+
{ flag: '--system-prompt', value: config.systemPrompt, condition: !!config.systemPrompt },
|
|
81
|
+
{ flag: '--append-system-prompt', value: config.appendSystemPrompt, condition: !!config.appendSystemPrompt },
|
|
82
|
+
]));
|
|
83
|
+
// === Directory & Context ===
|
|
84
|
+
// --add-dir accepts multiple directories
|
|
85
|
+
if (config.addDir && config.addDir.length > 0) {
|
|
86
|
+
for (const dir of config.addDir) {
|
|
87
|
+
args.push('--add-dir', dir);
|
|
88
|
+
}
|
|
40
89
|
}
|
|
41
|
-
//
|
|
42
|
-
|
|
43
|
-
|
|
90
|
+
// === MCP Configuration ===
|
|
91
|
+
// --mcp-config accepts multiple configs
|
|
92
|
+
if (config.mcpConfig && config.mcpConfig.length > 0) {
|
|
93
|
+
for (const mcpCfg of config.mcpConfig) {
|
|
94
|
+
args.push('--mcp-config', mcpCfg);
|
|
95
|
+
}
|
|
44
96
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
97
|
+
args.push(...AgentConfigUtils.buildConditionalArgs([
|
|
98
|
+
{ flag: '--strict-mcp-config', condition: !!config.strictMcpConfig },
|
|
99
|
+
]));
|
|
100
|
+
// === Session Management ===
|
|
101
|
+
args.push(...AgentConfigUtils.buildConditionalArgs([
|
|
102
|
+
{ flag: '--continue', condition: !!config.continue },
|
|
103
|
+
{ flag: '--resume', value: config.resume, condition: !!config.resume },
|
|
104
|
+
{ flag: '--fork-session', condition: !!config.forkSession },
|
|
105
|
+
{ flag: '--session-id', value: config.sessionId, condition: !!config.sessionId },
|
|
106
|
+
]));
|
|
107
|
+
// === Advanced Settings ===
|
|
108
|
+
args.push(...AgentConfigUtils.buildConditionalArgs([
|
|
109
|
+
{ flag: '--settings', value: config.settings, condition: !!config.settings },
|
|
110
|
+
{ flag: '--setting-sources', value: config.settingSources, condition: !!config.settingSources },
|
|
111
|
+
]));
|
|
112
|
+
// Debug mode - can be boolean or string filter
|
|
113
|
+
if (config.debug) {
|
|
114
|
+
if (typeof config.debug === 'string') {
|
|
115
|
+
args.push('--debug', config.debug);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
args.push('--debug');
|
|
119
|
+
}
|
|
48
120
|
}
|
|
121
|
+
// === Prompt (must be last) ===
|
|
122
|
+
if (config.prompt) {
|
|
123
|
+
args.push(config.prompt);
|
|
124
|
+
}
|
|
125
|
+
return args;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Validate Claude Code configuration
|
|
129
|
+
*
|
|
130
|
+
* @param config - Configuration to validate
|
|
131
|
+
* @returns Array of validation error messages (empty if valid)
|
|
132
|
+
*/
|
|
133
|
+
export function validateClaudeConfig(config) {
|
|
134
|
+
const errors = [
|
|
135
|
+
...AgentConfigUtils.validateBaseConfig(config),
|
|
136
|
+
...validateClaudeSpecific(config),
|
|
137
|
+
];
|
|
138
|
+
return errors;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Validate Claude-specific configuration
|
|
142
|
+
*
|
|
143
|
+
* @param config - Configuration to validate
|
|
144
|
+
* @returns Array of validation errors
|
|
145
|
+
*/
|
|
146
|
+
function validateClaudeSpecific(config) {
|
|
147
|
+
const errors = [];
|
|
148
|
+
// Validate output format requirements
|
|
149
|
+
if (config.outputFormat === 'stream-json' && !config.print) {
|
|
150
|
+
errors.push('stream-json output format requires print mode to be enabled');
|
|
151
|
+
}
|
|
152
|
+
// Validate include-partial-messages requirements
|
|
153
|
+
if (config.includePartialMessages) {
|
|
154
|
+
if (!config.print) {
|
|
155
|
+
errors.push('includePartialMessages requires print mode to be enabled');
|
|
156
|
+
}
|
|
157
|
+
if (config.outputFormat !== 'stream-json') {
|
|
158
|
+
errors.push('includePartialMessages requires outputFormat to be stream-json');
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Validate permission mode
|
|
162
|
+
errors.push(...AgentConfigUtils.validateEnum(config.permissionMode, ['acceptEdits', 'bypassPermissions', 'default', 'dontAsk', 'plan'], 'permissionMode'));
|
|
163
|
+
// Validate paths
|
|
164
|
+
errors.push(...AgentConfigUtils.validatePaths(config.addDir, 'addDir'));
|
|
165
|
+
errors.push(...AgentConfigUtils.validatePaths(config.mcpConfig, 'mcpConfig'));
|
|
166
|
+
// Validate conflicting session options
|
|
167
|
+
if (config.continue && config.resume) {
|
|
168
|
+
errors.push('Cannot use both continue and resume options');
|
|
169
|
+
}
|
|
170
|
+
if (config.sessionId && (config.continue || config.resume)) {
|
|
171
|
+
errors.push('sessionId cannot be used with continue or resume');
|
|
172
|
+
}
|
|
173
|
+
// Validate timeouts
|
|
174
|
+
errors.push(...AgentConfigUtils.validateTimeouts(config.timeout, config.idleTimeout));
|
|
175
|
+
// Validate retry config
|
|
176
|
+
errors.push(...AgentConfigUtils.validateRetryConfig(config.retry));
|
|
177
|
+
return errors;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get default Claude Code configuration
|
|
181
|
+
*
|
|
182
|
+
* @returns Default configuration values
|
|
183
|
+
*/
|
|
184
|
+
export function getDefaultClaudeConfig() {
|
|
49
185
|
return {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
idleTimeout: config.idleTimeout,
|
|
56
|
-
retry: config.retry,
|
|
186
|
+
claudePath: 'claude',
|
|
187
|
+
print: true,
|
|
188
|
+
outputFormat: 'stream-json',
|
|
189
|
+
verbose: true, // Required for stream-json with print
|
|
190
|
+
dangerouslySkipPermissions: false,
|
|
57
191
|
};
|
|
58
192
|
}
|
|
59
193
|
//# sourceMappingURL=claude.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../src/execution/process/builders/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../src/execution/process/builders/claude.ts"],"names":[],"mappings":"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"}
|