@sudocode-ai/local-server 0.1.7 → 0.1.8

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 (274) hide show
  1. package/README.md +6 -0
  2. package/dist/errors/agent-errors.d.ts +43 -0
  3. package/dist/errors/agent-errors.d.ts.map +1 -0
  4. package/dist/errors/agent-errors.js +69 -0
  5. package/dist/errors/agent-errors.js.map +1 -0
  6. package/dist/execution/adapters/claude-adapter.d.ts +63 -0
  7. package/dist/execution/adapters/claude-adapter.d.ts.map +1 -0
  8. package/dist/execution/adapters/claude-adapter.js +82 -0
  9. package/dist/execution/adapters/claude-adapter.js.map +1 -0
  10. package/dist/execution/adapters/codex-adapter.d.ts +67 -0
  11. package/dist/execution/adapters/codex-adapter.d.ts.map +1 -0
  12. package/dist/execution/adapters/codex-adapter.js +183 -0
  13. package/dist/execution/adapters/codex-adapter.js.map +1 -0
  14. package/dist/execution/adapters/codex-config-builder.d.ts +30 -0
  15. package/dist/execution/adapters/codex-config-builder.d.ts.map +1 -0
  16. package/dist/execution/adapters/codex-config-builder.js +110 -0
  17. package/dist/execution/adapters/codex-config-builder.js.map +1 -0
  18. package/dist/execution/adapters/copilot-adapter.d.ts +94 -0
  19. package/dist/execution/adapters/copilot-adapter.d.ts.map +1 -0
  20. package/dist/execution/adapters/copilot-adapter.js +163 -0
  21. package/dist/execution/adapters/copilot-adapter.js.map +1 -0
  22. package/dist/execution/adapters/copilot-config-builder.d.ts +48 -0
  23. package/dist/execution/adapters/copilot-config-builder.d.ts.map +1 -0
  24. package/dist/execution/adapters/copilot-config-builder.js +125 -0
  25. package/dist/execution/adapters/copilot-config-builder.js.map +1 -0
  26. package/dist/execution/adapters/cursor-adapter.d.ts +66 -0
  27. package/dist/execution/adapters/cursor-adapter.d.ts.map +1 -0
  28. package/dist/execution/adapters/cursor-adapter.js +121 -0
  29. package/dist/execution/adapters/cursor-adapter.js.map +1 -0
  30. package/dist/execution/adapters/cursor-config-builder.d.ts +29 -0
  31. package/dist/execution/adapters/cursor-config-builder.d.ts.map +1 -0
  32. package/dist/execution/adapters/cursor-config-builder.js +49 -0
  33. package/dist/execution/adapters/cursor-config-builder.js.map +1 -0
  34. package/dist/execution/adapters/shared/config-presets.d.ts +102 -0
  35. package/dist/execution/adapters/shared/config-presets.d.ts.map +1 -0
  36. package/dist/execution/adapters/shared/config-presets.js +205 -0
  37. package/dist/execution/adapters/shared/config-presets.js.map +1 -0
  38. package/dist/execution/adapters/shared/config-utils.d.ts +95 -0
  39. package/dist/execution/adapters/shared/config-utils.d.ts.map +1 -0
  40. package/dist/execution/adapters/shared/config-utils.js +163 -0
  41. package/dist/execution/adapters/shared/config-utils.js.map +1 -0
  42. package/dist/execution/adapters/shared/index.d.ts +8 -0
  43. package/dist/execution/adapters/shared/index.d.ts.map +1 -0
  44. package/dist/execution/adapters/shared/index.js +8 -0
  45. package/dist/execution/adapters/shared/index.js.map +1 -0
  46. package/dist/execution/executors/agent-executor-wrapper.d.ts +153 -0
  47. package/dist/execution/executors/agent-executor-wrapper.d.ts.map +1 -0
  48. package/dist/execution/executors/agent-executor-wrapper.js +652 -0
  49. package/dist/execution/executors/agent-executor-wrapper.js.map +1 -0
  50. package/dist/execution/executors/executor-factory.d.ts +95 -0
  51. package/dist/execution/executors/executor-factory.d.ts.map +1 -0
  52. package/dist/execution/executors/executor-factory.js +120 -0
  53. package/dist/execution/executors/executor-factory.js.map +1 -0
  54. package/dist/execution/output/ag-ui-adapter.d.ts +0 -2
  55. package/dist/execution/output/ag-ui-adapter.d.ts.map +1 -1
  56. package/dist/execution/output/ag-ui-adapter.js +0 -2
  57. package/dist/execution/output/ag-ui-adapter.js.map +1 -1
  58. package/dist/execution/output/index.d.ts +0 -3
  59. package/dist/execution/output/index.d.ts.map +1 -1
  60. package/dist/execution/output/index.js +0 -2
  61. package/dist/execution/output/index.js.map +1 -1
  62. package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts +108 -0
  63. package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts.map +1 -0
  64. package/dist/execution/output/normalized-to-ag-ui-adapter.js +321 -0
  65. package/dist/execution/output/normalized-to-ag-ui-adapter.js.map +1 -0
  66. package/dist/execution/process/builders/claude.d.ts +24 -57
  67. package/dist/execution/process/builders/claude.d.ts.map +1 -1
  68. package/dist/execution/process/builders/claude.js +153 -19
  69. package/dist/execution/process/builders/claude.js.map +1 -1
  70. package/dist/execution/transport/ipc-transport-manager.d.ts +74 -0
  71. package/dist/execution/transport/ipc-transport-manager.d.ts.map +1 -0
  72. package/dist/execution/transport/ipc-transport-manager.js +104 -0
  73. package/dist/execution/transport/ipc-transport-manager.js.map +1 -0
  74. package/dist/execution/transport/transport-manager.d.ts.map +1 -1
  75. package/dist/execution/transport/transport-manager.js +3 -0
  76. package/dist/execution/transport/transport-manager.js.map +1 -1
  77. package/dist/execution/worktree/conflict-detector.d.ts +85 -0
  78. package/dist/execution/worktree/conflict-detector.d.ts.map +1 -0
  79. package/dist/execution/worktree/conflict-detector.js +129 -0
  80. package/dist/execution/worktree/conflict-detector.js.map +1 -0
  81. package/dist/execution/worktree/git-cli.d.ts +9 -0
  82. package/dist/execution/worktree/git-cli.d.ts.map +1 -1
  83. package/dist/execution/worktree/git-cli.js +10 -0
  84. package/dist/execution/worktree/git-cli.js.map +1 -1
  85. package/dist/execution/worktree/git-sync-cli.d.ts +187 -0
  86. package/dist/execution/worktree/git-sync-cli.d.ts.map +1 -0
  87. package/dist/execution/worktree/git-sync-cli.js +350 -0
  88. package/dist/execution/worktree/git-sync-cli.js.map +1 -0
  89. package/dist/execution/worktree/manager.d.ts +18 -0
  90. package/dist/execution/worktree/manager.d.ts.map +1 -1
  91. package/dist/execution/worktree/manager.js +9 -3
  92. package/dist/execution/worktree/manager.js.map +1 -1
  93. package/dist/index.d.ts +1 -3
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +132 -211
  96. package/dist/index.js.map +1 -1
  97. package/dist/middleware/project-context.d.ts +37 -0
  98. package/dist/middleware/project-context.d.ts.map +1 -0
  99. package/dist/middleware/project-context.js +91 -0
  100. package/dist/middleware/project-context.js.map +1 -0
  101. package/dist/public/assets/index-Bb_W5bUr.css +1 -0
  102. package/dist/public/assets/index-CFKL113G.js +710 -0
  103. package/dist/public/assets/index-CFKL113G.js.map +1 -0
  104. package/dist/public/assets/{react-vendor-ByUx1V_q.js → react-vendor-DiL5hC7l.js} +2 -2
  105. package/dist/public/assets/{react-vendor-ByUx1V_q.js.map → react-vendor-DiL5hC7l.js.map} +1 -1
  106. package/dist/public/assets/ui-vendor-B4WMPEfa.js +54 -0
  107. package/dist/public/assets/ui-vendor-B4WMPEfa.js.map +1 -0
  108. package/dist/public/index.html +4 -4
  109. package/dist/routes/agents.d.ts +3 -0
  110. package/dist/routes/agents.d.ts.map +1 -0
  111. package/dist/routes/agents.js +62 -0
  112. package/dist/routes/agents.js.map +1 -0
  113. package/dist/routes/config.d.ts +3 -0
  114. package/dist/routes/config.d.ts.map +1 -0
  115. package/dist/routes/config.js +25 -0
  116. package/dist/routes/config.js.map +1 -0
  117. package/dist/routes/editors.d.ts +15 -0
  118. package/dist/routes/editors.d.ts.map +1 -0
  119. package/dist/routes/editors.js +98 -0
  120. package/dist/routes/editors.js.map +1 -0
  121. package/dist/routes/executions-stream.d.ts +8 -5
  122. package/dist/routes/executions-stream.d.ts.map +1 -1
  123. package/dist/routes/executions-stream.js +10 -6
  124. package/dist/routes/executions-stream.js.map +1 -1
  125. package/dist/routes/executions.d.ts +6 -10
  126. package/dist/routes/executions.d.ts.map +1 -1
  127. package/dist/routes/executions.js +506 -54
  128. package/dist/routes/executions.js.map +1 -1
  129. package/dist/routes/feedback.d.ts +3 -2
  130. package/dist/routes/feedback.d.ts.map +1 -1
  131. package/dist/routes/feedback.js +12 -10
  132. package/dist/routes/feedback.js.map +1 -1
  133. package/dist/routes/files.d.ts +18 -0
  134. package/dist/routes/files.d.ts.map +1 -0
  135. package/dist/routes/files.js +89 -0
  136. package/dist/routes/files.js.map +1 -0
  137. package/dist/routes/issues.d.ts +3 -2
  138. package/dist/routes/issues.d.ts.map +1 -1
  139. package/dist/routes/issues.js +19 -18
  140. package/dist/routes/issues.js.map +1 -1
  141. package/dist/routes/projects.d.ts +11 -0
  142. package/dist/routes/projects.d.ts.map +1 -0
  143. package/dist/routes/projects.js +447 -0
  144. package/dist/routes/projects.js.map +1 -0
  145. package/dist/routes/relationships.d.ts +3 -2
  146. package/dist/routes/relationships.d.ts.map +1 -1
  147. package/dist/routes/relationships.js +12 -10
  148. package/dist/routes/relationships.js.map +1 -1
  149. package/dist/routes/repo-info.d.ts +3 -0
  150. package/dist/routes/repo-info.d.ts.map +1 -0
  151. package/dist/routes/repo-info.js +126 -0
  152. package/dist/routes/repo-info.js.map +1 -0
  153. package/dist/routes/specs.d.ts +3 -2
  154. package/dist/routes/specs.d.ts.map +1 -1
  155. package/dist/routes/specs.js +19 -18
  156. package/dist/routes/specs.js.map +1 -1
  157. package/dist/services/agent-registry.d.ts +140 -0
  158. package/dist/services/agent-registry.d.ts.map +1 -0
  159. package/dist/services/agent-registry.js +272 -0
  160. package/dist/services/agent-registry.js.map +1 -0
  161. package/dist/services/editor-service.d.ts +57 -0
  162. package/dist/services/editor-service.d.ts.map +1 -0
  163. package/dist/services/editor-service.js +204 -0
  164. package/dist/services/editor-service.js.map +1 -0
  165. package/dist/services/execution-changes-service.d.ts +92 -0
  166. package/dist/services/execution-changes-service.d.ts.map +1 -0
  167. package/dist/services/execution-changes-service.js +546 -0
  168. package/dist/services/execution-changes-service.js.map +1 -0
  169. package/dist/services/execution-lifecycle.d.ts +1 -0
  170. package/dist/services/execution-lifecycle.d.ts.map +1 -1
  171. package/dist/services/execution-lifecycle.js +37 -7
  172. package/dist/services/execution-lifecycle.js.map +1 -1
  173. package/dist/services/execution-logs-store.d.ts +75 -0
  174. package/dist/services/execution-logs-store.d.ts.map +1 -1
  175. package/dist/services/execution-logs-store.js +142 -2
  176. package/dist/services/execution-logs-store.js.map +1 -1
  177. package/dist/services/execution-service.d.ts +50 -58
  178. package/dist/services/execution-service.d.ts.map +1 -1
  179. package/dist/services/execution-service.js +433 -469
  180. package/dist/services/execution-service.js.map +1 -1
  181. package/dist/services/execution-worker-pool.d.ts +116 -0
  182. package/dist/services/execution-worker-pool.d.ts.map +1 -0
  183. package/dist/services/execution-worker-pool.js +326 -0
  184. package/dist/services/execution-worker-pool.js.map +1 -0
  185. package/dist/services/executions.d.ts +3 -0
  186. package/dist/services/executions.d.ts.map +1 -1
  187. package/dist/services/executions.js +11 -17
  188. package/dist/services/executions.js.map +1 -1
  189. package/dist/services/export.d.ts +8 -2
  190. package/dist/services/export.d.ts.map +1 -1
  191. package/dist/services/export.js +29 -23
  192. package/dist/services/export.js.map +1 -1
  193. package/dist/services/file-search/git-ls-files-strategy.d.ts +72 -0
  194. package/dist/services/file-search/git-ls-files-strategy.d.ts.map +1 -0
  195. package/dist/services/file-search/git-ls-files-strategy.js +176 -0
  196. package/dist/services/file-search/git-ls-files-strategy.js.map +1 -0
  197. package/dist/services/file-search/index.d.ts +9 -0
  198. package/dist/services/file-search/index.d.ts.map +1 -0
  199. package/dist/services/file-search/index.js +10 -0
  200. package/dist/services/file-search/index.js.map +1 -0
  201. package/dist/services/file-search/registry.d.ts +97 -0
  202. package/dist/services/file-search/registry.d.ts.map +1 -0
  203. package/dist/services/file-search/registry.js +140 -0
  204. package/dist/services/file-search/registry.js.map +1 -0
  205. package/dist/services/file-search/strategy.d.ts +58 -0
  206. package/dist/services/file-search/strategy.d.ts.map +1 -0
  207. package/dist/services/file-search/strategy.js +8 -0
  208. package/dist/services/file-search/strategy.js.map +1 -0
  209. package/dist/services/project-context.d.ts +69 -0
  210. package/dist/services/project-context.d.ts.map +1 -0
  211. package/dist/services/project-context.js +113 -0
  212. package/dist/services/project-context.js.map +1 -0
  213. package/dist/services/project-manager.d.ts +95 -0
  214. package/dist/services/project-manager.d.ts.map +1 -0
  215. package/dist/services/project-manager.js +388 -0
  216. package/dist/services/project-manager.js.map +1 -0
  217. package/dist/services/project-registry.d.ts +98 -0
  218. package/dist/services/project-registry.d.ts.map +1 -0
  219. package/dist/services/project-registry.js +289 -0
  220. package/dist/services/project-registry.js.map +1 -0
  221. package/dist/services/prompt-resolver.d.ts +97 -0
  222. package/dist/services/prompt-resolver.d.ts.map +1 -0
  223. package/dist/services/prompt-resolver.js +377 -0
  224. package/dist/services/prompt-resolver.js.map +1 -0
  225. package/dist/services/repo-info.d.ts +12 -0
  226. package/dist/services/repo-info.d.ts.map +1 -1
  227. package/dist/services/repo-info.js +46 -0
  228. package/dist/services/repo-info.js.map +1 -1
  229. package/dist/services/watcher.d.ts +3 -4
  230. package/dist/services/watcher.d.ts.map +1 -1
  231. package/dist/services/watcher.js +18 -35
  232. package/dist/services/watcher.js.map +1 -1
  233. package/dist/services/websocket.d.ts +30 -16
  234. package/dist/services/websocket.d.ts.map +1 -1
  235. package/dist/services/websocket.js +102 -37
  236. package/dist/services/websocket.js.map +1 -1
  237. package/dist/services/worktree-sync-service.d.ts +228 -0
  238. package/dist/services/worktree-sync-service.d.ts.map +1 -0
  239. package/dist/services/worktree-sync-service.js +563 -0
  240. package/dist/services/worktree-sync-service.js.map +1 -0
  241. package/dist/types/editor.d.ts +49 -0
  242. package/dist/types/editor.d.ts.map +1 -0
  243. package/dist/types/editor.js +50 -0
  244. package/dist/types/editor.js.map +1 -0
  245. package/dist/types/project.d.ts +58 -0
  246. package/dist/types/project.d.ts.map +1 -0
  247. package/dist/types/project.js +10 -0
  248. package/dist/types/project.js.map +1 -0
  249. package/dist/utils/executable-check.d.ts +36 -0
  250. package/dist/utils/executable-check.d.ts.map +1 -0
  251. package/dist/utils/executable-check.js +79 -0
  252. package/dist/utils/executable-check.js.map +1 -0
  253. package/dist/workers/execution-worker.d.ts +18 -0
  254. package/dist/workers/execution-worker.d.ts.map +1 -0
  255. package/dist/workers/execution-worker.js +340 -0
  256. package/dist/workers/execution-worker.js.map +1 -0
  257. package/dist/workers/worker-ipc.d.ts +84 -0
  258. package/dist/workers/worker-ipc.d.ts.map +1 -0
  259. package/dist/workers/worker-ipc.js +29 -0
  260. package/dist/workers/worker-ipc.js.map +1 -0
  261. package/package.json +6 -5
  262. package/dist/execution/output/ag-ui-integration.d.ts +0 -96
  263. package/dist/execution/output/ag-ui-integration.d.ts.map +0 -1
  264. package/dist/execution/output/ag-ui-integration.js +0 -96
  265. package/dist/execution/output/ag-ui-integration.js.map +0 -1
  266. package/dist/execution/output/claude-code-output-processor.d.ts +0 -321
  267. package/dist/execution/output/claude-code-output-processor.d.ts.map +0 -1
  268. package/dist/execution/output/claude-code-output-processor.js +0 -769
  269. package/dist/execution/output/claude-code-output-processor.js.map +0 -1
  270. package/dist/public/assets/index-B3SEMufD.js +0 -580
  271. package/dist/public/assets/index-B3SEMufD.js.map +0 -1
  272. package/dist/public/assets/index-D2YGL3gX.css +0 -1
  273. package/dist/public/assets/ui-vendor-CotR6bx9.js +0 -54
  274. 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
- * Configuration options specific to Claude Code CLI
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;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;IAE/C;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAqCzE"}
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
- // Add --output-format flag
34
- if (config.outputFormat) {
35
- args.push('--output-format', config.outputFormat);
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
- // Add --verbose flag (required for stream-json with print mode)
38
- if (config.verbose || (config.print && config.outputFormat === 'stream-json')) {
39
- args.push('--verbose');
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
- // Add --dangerously-skip-permissions flag
42
- if (config.dangerouslySkipPermissions) {
43
- args.push('--dangerously-skip-permissions');
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
- // Add --permission-mode flag if specified
46
- if (config.permissionMode) {
47
- args.push('--permission-mode', config.permissionMode);
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
- executablePath: config.claudePath || 'claude',
51
- args,
52
- workDir: config.workDir,
53
- env: config.env,
54
- timeout: config.timeout,
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;AAwEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAwB;IACxD,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,4CAA4C;IAC5C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,2BAA2B;IAC3B,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,gEAAgE;IAChE,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY,KAAK,aAAa,CAAC,EAAE,CAAC;QAC9E,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,0CAA0C;IAC1C,IAAI,MAAM,CAAC,0BAA0B,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC9C,CAAC;IAED,0CAA0C;IAC1C,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,UAAU,IAAI,QAAQ;QAC7C,IAAI;QACJ,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../src/execution/process/builders/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAKlE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAwB;IACxD,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAErC,OAAO,gBAAgB,CAAC,sBAAsB,CAC5C,MAAM,CAAC,UAAU,IAAI,QAAQ,EAC7B,IAAI,EACJ,MAAM,CACP,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAwB;IACtD,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,8BAA8B;IAC9B,4CAA4C;IAC5C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,+BAA+B;IAC/B,IAAI,CAAC,IAAI,CACP,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;QACvC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE;QACzF,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY,KAAK,aAAa,CAAC,EAAE;QAC/G,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE;QACnF,EAAE,IAAI,EAAE,4BAA4B,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,sBAAsB,EAAE;KACnF,CAAC,CACH,CAAC;IAEF,sBAAsB;IACtB,IAAI,CAAC,IAAI,CACP,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;QACvC,EAAE,IAAI,EAAE,gCAAgC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,0BAA0B,EAAE;QAC1F,EAAE,IAAI,EAAE,sCAAsC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,+BAA+B,EAAE;QACrG,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE;KAChG,CAAC,CACH,CAAC;IAEF,8BAA8B;IAC9B,IAAI,CAAC,IAAI,CACP,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;QACvC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;QACnE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE;KAC7F,CAAC,CACH,CAAC;IAEF,2BAA2B;IAC3B,2DAA2D;IAC3D,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,kCAAkC;IAClC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,iEAAiE;IACjE,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IAC7D,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,IAAI,CACP,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;QACvC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE;QACzF,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,CAAC,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE;KAC7G,CAAC,CACH,CAAC;IAEF,8BAA8B;IAC9B,yCAAyC;IACzC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,wCAAwC;IACxC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CACP,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;QACvC,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;KACrE,CAAC,CACH,CAAC;IAEF,6BAA6B;IAC7B,IAAI,CAAC,IAAI,CACP,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;QACvC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;QACpD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;QACtE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE;QAC3D,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE;KACjF,CAAC,CACH,CAAC;IAEF,4BAA4B;IAC5B,IAAI,CAAC,IAAI,CACP,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;QACvC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC5E,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE;KAChG,CAAC,CACH,CAAC;IAEF,+CAA+C;IAC/C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAwB;IAC3D,MAAM,MAAM,GAAG;QACb,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAC9C,GAAG,sBAAsB,CAAC,MAAM,CAAC;KAClC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,MAAwB;IACtD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,sCAAsC;IACtC,IAAI,MAAM,CAAC,YAAY,KAAK,aAAa,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC7E,CAAC;IAED,iDAAiD;IACjD,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,KAAK,aAAa,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,GAAG,gBAAgB,CAAC,YAAY,CAC9B,MAAM,CAAC,cAAc,EACrB,CAAC,aAAa,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAU,EAC3E,gBAAgB,CACjB,CACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAE9E,uCAAuC;IACvC,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;IAED,oBAAoB;IACpB,MAAM,CAAC,IAAI,CACT,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CACzE,CAAC;IAEF,wBAAwB;IACxB,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,aAAa;QAC3B,OAAO,EAAE,IAAI,EAAE,sCAAsC;QACrD,0BAA0B,EAAE,KAAK;KAClC,CAAC;AACJ,CAAC"}