@coralai/sps-cli 0.63.6 → 0.65.1

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 (458) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README-CN.md +2 -0
  3. package/README.md +2 -0
  4. package/dist/commands/agentCommand.d.ts.map +1 -1
  5. package/dist/commands/agentCommand.js +4 -3
  6. package/dist/commands/agentCommand.js.map +1 -1
  7. package/dist/commands/agentRenderer.js +3 -3
  8. package/dist/commands/agentRenderer.js.map +1 -1
  9. package/dist/commands/cardDashboard.d.ts.map +1 -1
  10. package/dist/commands/cardDashboard.js +2 -2
  11. package/dist/commands/cardDashboard.js.map +1 -1
  12. package/dist/commands/doctor.d.ts.map +1 -1
  13. package/dist/commands/doctor.js +0 -3
  14. package/dist/commands/doctor.js.map +1 -1
  15. package/dist/commands/logs.d.ts.map +1 -1
  16. package/dist/commands/logs.js +15 -15
  17. package/dist/commands/logs.js.map +1 -1
  18. package/dist/commands/openaiAgent.d.ts +3 -0
  19. package/dist/commands/openaiAgent.d.ts.map +1 -0
  20. package/dist/commands/openaiAgent.js +81 -0
  21. package/dist/commands/openaiAgent.js.map +1 -0
  22. package/dist/commands/pipelineRunner.js.map +1 -1
  23. package/dist/commands/pipelineTick.js +1 -1
  24. package/dist/commands/pipelineTick.js.map +1 -1
  25. package/dist/commands/projectInit.d.ts +11 -1
  26. package/dist/commands/projectInit.d.ts.map +1 -1
  27. package/dist/commands/projectInit.js +38 -7
  28. package/dist/commands/projectInit.js.map +1 -1
  29. package/dist/commands/prune.d.ts +6 -0
  30. package/dist/commands/prune.d.ts.map +1 -0
  31. package/dist/commands/prune.js +87 -0
  32. package/dist/commands/prune.js.map +1 -0
  33. package/dist/commands/qaTick.js +1 -1
  34. package/dist/commands/qaTick.js.map +1 -1
  35. package/dist/commands/reset.d.ts.map +1 -1
  36. package/dist/commands/reset.js +3 -2
  37. package/dist/commands/reset.js.map +1 -1
  38. package/dist/commands/setup.d.ts.map +1 -1
  39. package/dist/commands/setup.js +8 -1
  40. package/dist/commands/setup.js.map +1 -1
  41. package/dist/commands/skillCommand.d.ts.map +1 -1
  42. package/dist/commands/skillCommand.js +2 -3
  43. package/dist/commands/skillCommand.js.map +1 -1
  44. package/dist/commands/status.js +2 -2
  45. package/dist/commands/status.js.map +1 -1
  46. package/dist/commands/stop.js +3 -3
  47. package/dist/commands/stop.js.map +1 -1
  48. package/dist/commands/tick.d.ts.map +1 -1
  49. package/dist/commands/tick.js +5 -2
  50. package/dist/commands/tick.js.map +1 -1
  51. package/dist/commands/workerDashboard.d.ts.map +1 -1
  52. package/dist/commands/workerDashboard.js +27 -26
  53. package/dist/commands/workerDashboard.js.map +1 -1
  54. package/dist/commands/workerLaunch.js +1 -1
  55. package/dist/commands/workerLaunch.js.map +1 -1
  56. package/dist/console/routes/chat.d.ts +18 -1
  57. package/dist/console/routes/chat.d.ts.map +1 -1
  58. package/dist/console/routes/chat.js +529 -40
  59. package/dist/console/routes/chat.js.map +1 -1
  60. package/dist/console/routes/fs.d.ts.map +1 -1
  61. package/dist/console/routes/fs.js +2 -1
  62. package/dist/console/routes/fs.js.map +1 -1
  63. package/dist/console/routes/logs.d.ts.map +1 -1
  64. package/dist/console/routes/logs.js +17 -5
  65. package/dist/console/routes/logs.js.map +1 -1
  66. package/dist/console/routes/projects.d.ts.map +1 -1
  67. package/dist/console/routes/projects.js +25 -2
  68. package/dist/console/routes/projects.js.map +1 -1
  69. package/dist/console/routes/workers.js +3 -3
  70. package/dist/console/routes/workers.js.map +1 -1
  71. package/dist/console-assets/assets/{ShowcasePage-BWHyDQhw.js → ShowcasePage-DFRO5bAO.js} +1 -1
  72. package/dist/console-assets/assets/{index-rQ_2k-G9.css → index-DZ28qAcd.css} +1 -1
  73. package/dist/console-assets/assets/{index-DH_TQHY4.js → index-De5GjRjY.js} +220 -215
  74. package/dist/console-assets/index.html +2 -2
  75. package/dist/core/agents/AgentBackend.d.ts +2 -2
  76. package/dist/core/agents/AgentBackend.d.ts.map +1 -1
  77. package/dist/core/agents/AgentBackend.js.map +1 -1
  78. package/dist/core/agents/DaemonBackend.d.ts +12 -2
  79. package/dist/core/agents/DaemonBackend.d.ts.map +1 -1
  80. package/dist/core/agents/DaemonBackend.js +59 -12
  81. package/dist/core/agents/DaemonBackend.js.map +1 -1
  82. package/dist/core/agents/resolveBackend.d.ts +4 -1
  83. package/dist/core/agents/resolveBackend.d.ts.map +1 -1
  84. package/dist/core/agents/resolveBackend.js +31 -1
  85. package/dist/core/agents/resolveBackend.js.map +1 -1
  86. package/dist/core/auditLog.d.ts +1 -1
  87. package/dist/core/auditLog.d.ts.map +1 -1
  88. package/dist/core/config.d.ts +5 -8
  89. package/dist/core/config.d.ts.map +1 -1
  90. package/dist/core/config.js +3 -9
  91. package/dist/core/config.js.map +1 -1
  92. package/dist/core/intel/agentsConfig.d.ts +9 -0
  93. package/dist/core/intel/agentsConfig.d.ts.map +1 -1
  94. package/dist/core/intel/agentsConfig.js +42 -0
  95. package/dist/core/intel/agentsConfig.js.map +1 -1
  96. package/dist/core/intel/types.d.ts +1 -0
  97. package/dist/core/intel/types.d.ts.map +1 -1
  98. package/dist/core/markerFile.d.ts.map +1 -1
  99. package/dist/core/markerFile.js +2 -2
  100. package/dist/core/markerFile.js.map +1 -1
  101. package/dist/core/openaiWorkerLog.d.ts +7 -0
  102. package/dist/core/openaiWorkerLog.d.ts.map +1 -0
  103. package/dist/core/openaiWorkerLog.js +98 -0
  104. package/dist/core/openaiWorkerLog.js.map +1 -0
  105. package/dist/core/paths.d.ts +1 -1
  106. package/dist/core/paths.d.ts.map +1 -1
  107. package/dist/core/paths.js +9 -7
  108. package/dist/core/paths.js.map +1 -1
  109. package/dist/core/pipelineConfig.js +7 -7
  110. package/dist/core/pipelineConfig.js.map +1 -1
  111. package/dist/core/pipelineSession.d.ts +3 -1
  112. package/dist/core/pipelineSession.d.ts.map +1 -1
  113. package/dist/core/pipelineSession.js +8 -2
  114. package/dist/core/pipelineSession.js.map +1 -1
  115. package/dist/core/processInspect.d.ts +5 -0
  116. package/dist/core/processInspect.d.ts.map +1 -1
  117. package/dist/core/processInspect.js +41 -11
  118. package/dist/core/processInspect.js.map +1 -1
  119. package/dist/core/projectPipelineAdapter.d.ts.map +1 -1
  120. package/dist/core/projectPipelineAdapter.js +4 -4
  121. package/dist/core/projectPipelineAdapter.js.map +1 -1
  122. package/dist/core/runtimeSnapshot.d.ts +2 -2
  123. package/dist/core/runtimeSnapshot.d.ts.map +1 -1
  124. package/dist/core/runtimeSnapshot.js +2 -2
  125. package/dist/core/runtimeSnapshot.js.map +1 -1
  126. package/dist/core/runtimeStore.d.ts +12 -12
  127. package/dist/core/runtimeStore.d.ts.map +1 -1
  128. package/dist/core/runtimeStore.js +16 -16
  129. package/dist/core/runtimeStore.js.map +1 -1
  130. package/dist/core/runtimeTypes.d.ts +109 -24
  131. package/dist/core/runtimeTypes.d.ts.map +1 -1
  132. package/dist/core/runtimeTypes.js +1 -1
  133. package/dist/core/sessionCleanup.d.ts +1 -1
  134. package/dist/core/sessionCleanup.d.ts.map +1 -1
  135. package/dist/core/sessionCleanup.js +2 -2
  136. package/dist/core/sessionCleanup.js.map +1 -1
  137. package/dist/core/sessionContext.d.ts +2 -2
  138. package/dist/core/sessionContext.d.ts.map +1 -1
  139. package/dist/core/sessionContext.js +1 -1
  140. package/dist/core/sessionContext.js.map +1 -1
  141. package/dist/core/sessionLiveness.d.ts +7 -6
  142. package/dist/core/sessionLiveness.d.ts.map +1 -1
  143. package/dist/core/sessionLiveness.js +3 -4
  144. package/dist/core/sessionLiveness.js.map +1 -1
  145. package/dist/core/state.d.ts +13 -12
  146. package/dist/core/state.d.ts.map +1 -1
  147. package/dist/core/state.js +9 -1
  148. package/dist/core/state.js.map +1 -1
  149. package/dist/core/workerRuntimeSummary.js +2 -2
  150. package/dist/core/workerRuntimeSummary.js.map +1 -1
  151. package/dist/core/workspacePaths.d.ts +22 -0
  152. package/dist/core/workspacePaths.d.ts.map +1 -0
  153. package/dist/core/workspacePaths.js +73 -0
  154. package/dist/core/workspacePaths.js.map +1 -0
  155. package/dist/daemon/daemonClient.d.ts +19 -22
  156. package/dist/daemon/daemonClient.d.ts.map +1 -1
  157. package/dist/daemon/daemonClient.js +82 -2
  158. package/dist/daemon/daemonClient.js.map +1 -1
  159. package/dist/daemon/sessionDaemon.d.ts +52 -7
  160. package/dist/daemon/sessionDaemon.d.ts.map +1 -1
  161. package/dist/daemon/sessionDaemon.js +40 -24
  162. package/dist/daemon/sessionDaemon.js.map +1 -1
  163. package/dist/engines/EventHandler.js +1 -1
  164. package/dist/engines/EventHandler.js.map +1 -1
  165. package/dist/engines/MonitorEngine.d.ts +2 -2
  166. package/dist/engines/MonitorEngine.d.ts.map +1 -1
  167. package/dist/engines/MonitorEngine.js +15 -17
  168. package/dist/engines/MonitorEngine.js.map +1 -1
  169. package/dist/engines/StageEngine.d.ts +5 -3
  170. package/dist/engines/StageEngine.d.ts.map +1 -1
  171. package/dist/engines/StageEngine.js +33 -18
  172. package/dist/engines/StageEngine.js.map +1 -1
  173. package/dist/main.js +41 -2
  174. package/dist/main.js.map +1 -1
  175. package/dist/manager/makeBackendFactory.d.ts +11 -4
  176. package/dist/manager/makeBackendFactory.d.ts.map +1 -1
  177. package/dist/manager/makeBackendFactory.js +28 -15
  178. package/dist/manager/makeBackendFactory.js.map +1 -1
  179. package/dist/manager/runtime-coordinator.js.map +1 -1
  180. package/dist/manager/supervisor.d.ts +7 -7
  181. package/dist/manager/supervisor.d.ts.map +1 -1
  182. package/dist/manager/supervisor.js +7 -7
  183. package/dist/manager/supervisor.js.map +1 -1
  184. package/dist/manager/worker-manager-impl.d.ts +4 -4
  185. package/dist/manager/worker-manager-impl.d.ts.map +1 -1
  186. package/dist/manager/worker-manager-impl.js +56 -24
  187. package/dist/manager/worker-manager-impl.js.map +1 -1
  188. package/dist/manager/worker-manager.d.ts +6 -6
  189. package/dist/manager/worker-manager.d.ts.map +1 -1
  190. package/dist/openai-agent/agentFactory.d.ts +10 -0
  191. package/dist/openai-agent/agentFactory.d.ts.map +1 -0
  192. package/dist/openai-agent/agentFactory.js +26 -0
  193. package/dist/openai-agent/agentFactory.js.map +1 -0
  194. package/dist/openai-agent/eventMap.d.ts +11 -0
  195. package/dist/openai-agent/eventMap.d.ts.map +1 -0
  196. package/dist/openai-agent/eventMap.js +191 -0
  197. package/dist/openai-agent/eventMap.js.map +1 -0
  198. package/dist/openai-agent/hooks.d.ts +13 -0
  199. package/dist/openai-agent/hooks.d.ts.map +1 -0
  200. package/dist/openai-agent/hooks.js +63 -0
  201. package/dist/openai-agent/hooks.js.map +1 -0
  202. package/dist/openai-agent/instructions.d.ts +3 -0
  203. package/dist/openai-agent/instructions.d.ts.map +1 -0
  204. package/dist/openai-agent/instructions.js +63 -0
  205. package/dist/openai-agent/instructions.js.map +1 -0
  206. package/dist/openai-agent/interactions/broker.d.ts +23 -0
  207. package/dist/openai-agent/interactions/broker.d.ts.map +1 -0
  208. package/dist/openai-agent/interactions/broker.js +316 -0
  209. package/dist/openai-agent/interactions/broker.js.map +1 -0
  210. package/dist/openai-agent/mcp/managedMcp.d.ts +31 -0
  211. package/dist/openai-agent/mcp/managedMcp.d.ts.map +1 -0
  212. package/dist/openai-agent/mcp/managedMcp.js +95 -0
  213. package/dist/openai-agent/mcp/managedMcp.js.map +1 -0
  214. package/dist/openai-agent/protocolWriter.d.ts +29 -0
  215. package/dist/openai-agent/protocolWriter.d.ts.map +1 -0
  216. package/dist/openai-agent/protocolWriter.js +74 -0
  217. package/dist/openai-agent/protocolWriter.js.map +1 -0
  218. package/dist/openai-agent/providerCapabilities.d.ts +31 -0
  219. package/dist/openai-agent/providerCapabilities.d.ts.map +1 -0
  220. package/dist/openai-agent/providerCapabilities.js +49 -0
  221. package/dist/openai-agent/providerCapabilities.js.map +1 -0
  222. package/dist/openai-agent/providerFactory.d.ts +18 -0
  223. package/dist/openai-agent/providerFactory.d.ts.map +1 -0
  224. package/dist/openai-agent/providerFactory.js +38 -0
  225. package/dist/openai-agent/providerFactory.js.map +1 -0
  226. package/dist/openai-agent/request.d.ts +22 -0
  227. package/dist/openai-agent/request.d.ts.map +1 -0
  228. package/dist/openai-agent/request.js +89 -0
  229. package/dist/openai-agent/request.js.map +1 -0
  230. package/dist/openai-agent/runWorker.d.ts +25 -0
  231. package/dist/openai-agent/runWorker.d.ts.map +1 -0
  232. package/dist/openai-agent/runWorker.js +635 -0
  233. package/dist/openai-agent/runWorker.js.map +1 -0
  234. package/dist/openai-agent/sandbox/execution.d.ts +36 -0
  235. package/dist/openai-agent/sandbox/execution.d.ts.map +1 -0
  236. package/dist/openai-agent/sandbox/execution.js +239 -0
  237. package/dist/openai-agent/sandbox/execution.js.map +1 -0
  238. package/dist/openai-agent/sandbox/productionDocker.d.ts +17 -0
  239. package/dist/openai-agent/sandbox/productionDocker.d.ts.map +1 -0
  240. package/dist/openai-agent/sandbox/productionDocker.js +76 -0
  241. package/dist/openai-agent/sandbox/productionDocker.js.map +1 -0
  242. package/dist/openai-agent/sdkContract.d.ts +18 -0
  243. package/dist/openai-agent/sdkContract.d.ts.map +1 -0
  244. package/dist/openai-agent/sdkContract.js +2 -0
  245. package/dist/openai-agent/sdkContract.js.map +1 -0
  246. package/dist/openai-agent/storage/atomic.d.ts +10 -0
  247. package/dist/openai-agent/storage/atomic.d.ts.map +1 -0
  248. package/dist/openai-agent/storage/atomic.js +112 -0
  249. package/dist/openai-agent/storage/atomic.js.map +1 -0
  250. package/dist/openai-agent/storage/checkpoint.d.ts +38 -0
  251. package/dist/openai-agent/storage/checkpoint.d.ts.map +1 -0
  252. package/dist/openai-agent/storage/checkpoint.js +141 -0
  253. package/dist/openai-agent/storage/checkpoint.js.map +1 -0
  254. package/dist/openai-agent/storage/errors.d.ts +8 -0
  255. package/dist/openai-agent/storage/errors.d.ts.map +1 -0
  256. package/dist/openai-agent/storage/errors.js +11 -0
  257. package/dist/openai-agent/storage/errors.js.map +1 -0
  258. package/dist/openai-agent/storage/index.d.ts +12 -0
  259. package/dist/openai-agent/storage/index.d.ts.map +1 -0
  260. package/dist/openai-agent/storage/index.js +12 -0
  261. package/dist/openai-agent/storage/index.js.map +1 -0
  262. package/dist/openai-agent/storage/interaction.d.ts +45 -0
  263. package/dist/openai-agent/storage/interaction.d.ts.map +1 -0
  264. package/dist/openai-agent/storage/interaction.js +372 -0
  265. package/dist/openai-agent/storage/interaction.js.map +1 -0
  266. package/dist/openai-agent/storage/lock.d.ts +13 -0
  267. package/dist/openai-agent/storage/lock.d.ts.map +1 -0
  268. package/dist/openai-agent/storage/lock.js +95 -0
  269. package/dist/openai-agent/storage/lock.js.map +1 -0
  270. package/dist/openai-agent/storage/metrics.d.ts +34 -0
  271. package/dist/openai-agent/storage/metrics.d.ts.map +1 -0
  272. package/dist/openai-agent/storage/metrics.js +74 -0
  273. package/dist/openai-agent/storage/metrics.js.map +1 -0
  274. package/dist/openai-agent/storage/output.d.ts +22 -0
  275. package/dist/openai-agent/storage/output.d.ts.map +1 -0
  276. package/dist/openai-agent/storage/output.js +175 -0
  277. package/dist/openai-agent/storage/output.js.map +1 -0
  278. package/dist/openai-agent/storage/session.d.ts +38 -0
  279. package/dist/openai-agent/storage/session.d.ts.map +1 -0
  280. package/dist/openai-agent/storage/session.js +216 -0
  281. package/dist/openai-agent/storage/session.js.map +1 -0
  282. package/dist/openai-agent/storage/toolLedger.d.ts +64 -0
  283. package/dist/openai-agent/storage/toolLedger.d.ts.map +1 -0
  284. package/dist/openai-agent/storage/toolLedger.js +281 -0
  285. package/dist/openai-agent/storage/toolLedger.js.map +1 -0
  286. package/dist/openai-agent/storage/workerStorage.d.ts +21 -0
  287. package/dist/openai-agent/storage/workerStorage.d.ts.map +1 -0
  288. package/dist/openai-agent/storage/workerStorage.js +38 -0
  289. package/dist/openai-agent/storage/workerStorage.js.map +1 -0
  290. package/dist/openai-agent/storage/workspace.d.ts +17 -0
  291. package/dist/openai-agent/storage/workspace.d.ts.map +1 -0
  292. package/dist/openai-agent/storage/workspace.js +67 -0
  293. package/dist/openai-agent/storage/workspace.js.map +1 -0
  294. package/dist/openai-agent/testHelpers.d.ts +9 -0
  295. package/dist/openai-agent/testHelpers.d.ts.map +1 -0
  296. package/dist/openai-agent/testHelpers.js +35 -0
  297. package/dist/openai-agent/testHelpers.js.map +1 -0
  298. package/dist/openai-agent/tools/ledgerTools.d.ts +12 -0
  299. package/dist/openai-agent/tools/ledgerTools.d.ts.map +1 -0
  300. package/dist/openai-agent/tools/ledgerTools.js +151 -0
  301. package/dist/openai-agent/tools/ledgerTools.js.map +1 -0
  302. package/dist/providers/MarkdownTaskBackend.d.ts.map +1 -1
  303. package/dist/providers/MarkdownTaskBackend.js +2 -2
  304. package/dist/providers/MarkdownTaskBackend.js.map +1 -1
  305. package/dist/providers/RuntimeSessionRuntime.d.ts +35 -15
  306. package/dist/providers/RuntimeSessionRuntime.d.ts.map +1 -1
  307. package/dist/providers/RuntimeSessionRuntime.js +239 -22
  308. package/dist/providers/RuntimeSessionRuntime.js.map +1 -1
  309. package/dist/providers/llm/chatTools.d.ts.map +1 -1
  310. package/dist/providers/llm/chatTools.js +3 -3
  311. package/dist/providers/llm/chatTools.js.map +1 -1
  312. package/dist/providers/llm/codexAuth.d.ts +6 -1
  313. package/dist/providers/llm/codexAuth.d.ts.map +1 -1
  314. package/dist/providers/llm/codexAuth.js +45 -9
  315. package/dist/providers/llm/codexAuth.js.map +1 -1
  316. package/dist/providers/llm/codexModel.d.ts +4 -1
  317. package/dist/providers/llm/codexModel.d.ts.map +1 -1
  318. package/dist/providers/llm/codexModel.js +13 -3
  319. package/dist/providers/llm/codexModel.js.map +1 -1
  320. package/dist/providers/llm/localSubscription.d.ts +1 -1
  321. package/dist/providers/llm/localSubscription.d.ts.map +1 -1
  322. package/dist/providers/llm/localSubscription.js +2 -2
  323. package/dist/providers/llm/localSubscription.js.map +1 -1
  324. package/dist/providers/runtimeEventMap.d.ts +54 -5
  325. package/dist/providers/runtimeEventMap.d.ts.map +1 -1
  326. package/dist/providers/runtimeEventMap.js +110 -11
  327. package/dist/providers/runtimeEventMap.js.map +1 -1
  328. package/dist/runtime/agentd/client.d.ts +29 -0
  329. package/dist/runtime/agentd/client.d.ts.map +1 -0
  330. package/dist/runtime/agentd/client.js +131 -0
  331. package/dist/runtime/agentd/client.js.map +1 -0
  332. package/dist/runtime/agentd/main.d.ts +10 -0
  333. package/dist/runtime/agentd/main.d.ts.map +1 -0
  334. package/dist/runtime/agentd/main.js +49 -0
  335. package/dist/runtime/agentd/main.js.map +1 -0
  336. package/dist/runtime/agentd/protocol.d.ts +74 -0
  337. package/dist/runtime/agentd/protocol.d.ts.map +1 -0
  338. package/dist/runtime/agentd/protocol.js +21 -0
  339. package/dist/runtime/agentd/protocol.js.map +1 -0
  340. package/dist/runtime/agentd/server.d.ts +15 -0
  341. package/dist/runtime/agentd/server.d.ts.map +1 -0
  342. package/dist/runtime/agentd/server.js +116 -0
  343. package/dist/runtime/agentd/server.js.map +1 -0
  344. package/dist/runtime/backends/claude/ClaudeBackend.d.ts +155 -0
  345. package/dist/runtime/backends/claude/ClaudeBackend.d.ts.map +1 -0
  346. package/dist/runtime/backends/claude/ClaudeBackend.js +398 -0
  347. package/dist/runtime/backends/claude/ClaudeBackend.js.map +1 -0
  348. package/dist/runtime/backends/claude/ClaudeSessions.d.ts +23 -0
  349. package/dist/runtime/backends/claude/ClaudeSessions.d.ts.map +1 -0
  350. package/dist/runtime/backends/claude/ClaudeSessions.js +45 -0
  351. package/dist/runtime/backends/claude/ClaudeSessions.js.map +1 -0
  352. package/dist/runtime/backends/claude/inprocTools.d.ts +17 -0
  353. package/dist/runtime/backends/claude/inprocTools.d.ts.map +1 -0
  354. package/dist/runtime/backends/claude/inprocTools.js +14 -0
  355. package/dist/runtime/backends/claude/inprocTools.js.map +1 -0
  356. package/dist/runtime/backends/process/ExternalProcessBackend.d.ts +83 -0
  357. package/dist/runtime/backends/process/ExternalProcessBackend.d.ts.map +1 -0
  358. package/dist/runtime/backends/process/ExternalProcessBackend.js +642 -0
  359. package/dist/runtime/backends/process/ExternalProcessBackend.js.map +1 -0
  360. package/dist/runtime/contract/AgentBackend.d.ts +199 -0
  361. package/dist/runtime/contract/AgentBackend.d.ts.map +1 -0
  362. package/dist/runtime/contract/AgentBackend.js +2 -0
  363. package/dist/runtime/contract/AgentBackend.js.map +1 -0
  364. package/dist/runtime/contract/events.d.ts +96 -0
  365. package/dist/runtime/contract/events.d.ts.map +1 -0
  366. package/dist/runtime/contract/events.js +2 -0
  367. package/dist/runtime/contract/events.js.map +1 -0
  368. package/dist/runtime/contract/index.d.ts +13 -0
  369. package/dist/runtime/contract/index.d.ts.map +1 -0
  370. package/dist/runtime/contract/index.js +2 -0
  371. package/dist/runtime/contract/index.js.map +1 -0
  372. package/dist/runtime/contract/lifecycle.d.ts +26 -0
  373. package/dist/runtime/contract/lifecycle.d.ts.map +1 -0
  374. package/dist/runtime/contract/lifecycle.js +6 -0
  375. package/dist/runtime/contract/lifecycle.js.map +1 -0
  376. package/dist/runtime/contract/processProtocol.d.ts +263 -0
  377. package/dist/runtime/contract/processProtocol.d.ts.map +1 -0
  378. package/dist/runtime/contract/processProtocol.js +779 -0
  379. package/dist/runtime/contract/processProtocol.js.map +1 -0
  380. package/dist/runtime/contract/service.d.ts +85 -0
  381. package/dist/runtime/contract/service.d.ts.map +1 -0
  382. package/dist/runtime/contract/service.js +2 -0
  383. package/dist/runtime/contract/service.js.map +1 -0
  384. package/dist/runtime/contract/versioning.d.ts +44 -0
  385. package/dist/runtime/contract/versioning.d.ts.map +1 -0
  386. package/dist/runtime/contract/versioning.js +10 -0
  387. package/dist/runtime/contract/versioning.js.map +1 -0
  388. package/dist/runtime/index.d.ts +21 -0
  389. package/dist/runtime/index.d.ts.map +1 -0
  390. package/dist/runtime/index.js +26 -0
  391. package/dist/runtime/index.js.map +1 -0
  392. package/dist/runtime/runtime.d.ts +21 -0
  393. package/dist/runtime/runtime.d.ts.map +1 -0
  394. package/dist/runtime/runtime.js +34 -0
  395. package/dist/runtime/runtime.js.map +1 -0
  396. package/dist/runtime/service/AgentRuntime.d.ts +60 -0
  397. package/dist/runtime/service/AgentRuntime.d.ts.map +1 -0
  398. package/dist/runtime/service/AgentRuntime.js +396 -0
  399. package/dist/runtime/service/AgentRuntime.js.map +1 -0
  400. package/dist/runtime/service/FileRecordStore.d.ts +12 -0
  401. package/dist/runtime/service/FileRecordStore.d.ts.map +1 -0
  402. package/dist/runtime/service/FileRecordStore.js +48 -0
  403. package/dist/runtime/service/FileRecordStore.js.map +1 -0
  404. package/dist/runtime/service/backendFactory.d.ts +8 -0
  405. package/dist/runtime/service/backendFactory.d.ts.map +1 -0
  406. package/dist/runtime/service/backendFactory.js +20 -0
  407. package/dist/runtime/service/backendFactory.js.map +1 -0
  408. package/dist/runtime/stub/NoopBackend.d.ts +29 -0
  409. package/dist/runtime/stub/NoopBackend.d.ts.map +1 -0
  410. package/dist/runtime/stub/NoopBackend.js +56 -0
  411. package/dist/runtime/stub/NoopBackend.js.map +1 -0
  412. package/dist/runtime/stub/NoopService.d.ts +23 -0
  413. package/dist/runtime/stub/NoopService.d.ts.map +1 -0
  414. package/dist/runtime/stub/NoopService.js +136 -0
  415. package/dist/runtime/stub/NoopService.js.map +1 -0
  416. package/dist/runtime/stub/index.d.ts +8 -0
  417. package/dist/runtime/stub/index.d.ts.map +1 -0
  418. package/dist/runtime/stub/index.js +8 -0
  419. package/dist/runtime/stub/index.js.map +1 -0
  420. package/dist/runtime/versioning/VersionManager.d.ts +31 -0
  421. package/dist/runtime/versioning/VersionManager.d.ts.map +1 -0
  422. package/dist/runtime/versioning/VersionManager.js +142 -0
  423. package/dist/runtime/versioning/VersionManager.js.map +1 -0
  424. package/dist/services/ChatService.d.ts +11 -0
  425. package/dist/services/ChatService.d.ts.map +1 -1
  426. package/dist/services/ChatService.js +35 -5
  427. package/dist/services/ChatService.js.map +1 -1
  428. package/dist/services/LogService.d.ts +10 -4
  429. package/dist/services/LogService.d.ts.map +1 -1
  430. package/dist/services/LogService.js +26 -5
  431. package/dist/services/LogService.js.map +1 -1
  432. package/dist/services/ProjectService.d.ts +56 -0
  433. package/dist/services/ProjectService.d.ts.map +1 -1
  434. package/dist/services/ProjectService.js +182 -15
  435. package/dist/services/ProjectService.js.map +1 -1
  436. package/dist/services/WorkerService.d.ts +1 -0
  437. package/dist/services/WorkerService.d.ts.map +1 -1
  438. package/dist/services/WorkerService.js +72 -0
  439. package/dist/services/WorkerService.js.map +1 -1
  440. package/dist/services/executors.d.ts +1 -0
  441. package/dist/services/executors.d.ts.map +1 -1
  442. package/dist/services/executors.js +9 -1
  443. package/dist/services/executors.js.map +1 -1
  444. package/dist/services/promptPreview.d.ts.map +1 -1
  445. package/dist/services/promptPreview.js +4 -3
  446. package/dist/services/promptPreview.js.map +1 -1
  447. package/dist/shared/runtimePaths.d.ts +4 -0
  448. package/dist/shared/runtimePaths.d.ts.map +1 -1
  449. package/dist/shared/runtimePaths.js +8 -0
  450. package/dist/shared/runtimePaths.js.map +1 -1
  451. package/dist/shared/runtimeSchemas.d.ts +6 -2
  452. package/dist/shared/runtimeSchemas.d.ts.map +1 -1
  453. package/dist/shared/runtimeSchemas.js +3 -2
  454. package/dist/shared/runtimeSchemas.js.map +1 -1
  455. package/docs/openai-daemon-agent.md +144 -0
  456. package/package.json +15 -9
  457. package/project-template/.claude/hooks/openai/on-start.sh +6 -0
  458. package/project-template/.claude/hooks/openai/on-stop.sh +6 -0
@@ -0,0 +1,642 @@
1
+ /**
2
+ * Generic process-per-dispatch AgentBackend for strict V1 NDJSON workers.
3
+ * Product policy and agent construction remain in the worker; this class owns
4
+ * process lifecycle, protocol validation, cancellation escalation, and mapping
5
+ * to the released AgentBackend surface.
6
+ */
7
+ import { constants as fsConstants } from 'node:fs';
8
+ import { access, mkdir, stat } from 'node:fs/promises';
9
+ import { isAbsolute, join } from 'node:path';
10
+ import { spawn, } from 'node:child_process';
11
+ import { randomUUID } from 'node:crypto';
12
+ import { AGENT_PROCESS_PROTOCOL_VERSION, AgentProcessEventDecoder, AgentProcessEventStreamValidator, AgentProcessProtocolError, parseAgentProcessCommandV1, } from '../../contract/processProtocol.js';
13
+ export class ExternalProcessBackend {
14
+ config;
15
+ kind = 'openai-process';
16
+ spec;
17
+ listeners = new Set();
18
+ child = null;
19
+ sessionId = '';
20
+ sessionDir = '';
21
+ ensured = false;
22
+ state = 'idle';
23
+ runId = null;
24
+ turnId = null;
25
+ lastSequence = 0;
26
+ lastOutputAt = null;
27
+ terminal = null;
28
+ failureKind = null;
29
+ decoder = null;
30
+ exitDeferred = resolvedDeferred();
31
+ sawTextDelta = false;
32
+ livenessState = {};
33
+ dispatchRequestedAtMs = null;
34
+ cancelRequestedAtMs = null;
35
+ constructor(config) {
36
+ this.config = config;
37
+ if (!config.externalProcess) {
38
+ throw new Error('ExternalProcessBackend requires SessionConfig.externalProcess');
39
+ }
40
+ this.spec = config.externalProcess;
41
+ }
42
+ get pid() {
43
+ return this.child?.pid ?? null;
44
+ }
45
+ get liveness() {
46
+ return { ...this.livenessState };
47
+ }
48
+ get runInfo() {
49
+ return {
50
+ pid: this.pid,
51
+ runId: this.runId,
52
+ turnId: this.turnId,
53
+ state: this.state,
54
+ lastSequence: this.lastSequence,
55
+ lastOutputAt: this.lastOutputAt,
56
+ terminal: this.terminal,
57
+ failureKind: this.failureKind,
58
+ };
59
+ }
60
+ subscribe(listener) {
61
+ this.listeners.add(listener);
62
+ return () => {
63
+ this.listeners.delete(listener);
64
+ };
65
+ }
66
+ async ensure() {
67
+ if (this.ensured) {
68
+ return {
69
+ sessionId: this.sessionId,
70
+ resumed: this.config.resumeSessionId === this.sessionId,
71
+ };
72
+ }
73
+ this.validateTrustedConfig();
74
+ await this.validateExecutableAndCwd();
75
+ await mkdir(this.spec.sessionRoot, { recursive: true });
76
+ const resumeId = this.config.resumeSessionId;
77
+ if (resumeId) {
78
+ validateIdentifier(resumeId, 'resumeSessionId');
79
+ const resumeDir = join(this.spec.sessionRoot, resumeId);
80
+ if (await isDirectory(resumeDir)) {
81
+ this.sessionId = resumeId;
82
+ this.sessionDir = resumeDir;
83
+ this.ensured = true;
84
+ this.livenessState.resumeOutcome = 'resumed';
85
+ this.emit({ kind: 'session', sessionId: this.sessionId });
86
+ return { sessionId: this.sessionId, resumed: true };
87
+ }
88
+ this.sessionId = this.createId('session');
89
+ this.sessionDir = join(this.spec.sessionRoot, this.sessionId);
90
+ await mkdir(this.sessionDir, { recursive: true });
91
+ this.ensured = true;
92
+ this.livenessState.resumeOutcome = 'not_found';
93
+ this.emit({ kind: 'session', sessionId: this.sessionId });
94
+ return {
95
+ sessionId: this.sessionId,
96
+ resumed: false,
97
+ resumeFailed: 'not_found',
98
+ };
99
+ }
100
+ this.sessionId = this.createId('session');
101
+ this.sessionDir = join(this.spec.sessionRoot, this.sessionId);
102
+ await mkdir(this.sessionDir, { recursive: true });
103
+ this.ensured = true;
104
+ this.livenessState.resumeOutcome = 'fresh';
105
+ this.emit({ kind: 'session', sessionId: this.sessionId });
106
+ return { sessionId: this.sessionId, resumed: false };
107
+ }
108
+ async dispatch(prompt) {
109
+ if (this.child) {
110
+ throw new Error(`ExternalProcessBackend run ${this.runId ?? '<unknown>'} is still active`);
111
+ }
112
+ if (!this.ensured)
113
+ await this.ensure();
114
+ this.runId = this.createId('run');
115
+ this.turnId = this.createId('turn');
116
+ this.state = 'starting';
117
+ this.lastSequence = 0;
118
+ this.lastOutputAt = null;
119
+ this.terminal = null;
120
+ this.failureKind = null;
121
+ this.sawTextDelta = false;
122
+ this.resetRunLiveness('fresh');
123
+ this.exitDeferred = createDeferred();
124
+ this.decoder = new AgentProcessEventDecoder(new AgentProcessEventStreamValidator({
125
+ sessionId: this.sessionId,
126
+ runId: this.runId,
127
+ turnId: this.turnId,
128
+ }));
129
+ const command = this.buildStartCommand(prompt);
130
+ await this.spawnCommand(command);
131
+ }
132
+ async resumeInteraction(interactionId, answer) {
133
+ if (this.child) {
134
+ throw new Error(`ExternalProcessBackend run ${this.runId ?? '<unknown>'} is still active`);
135
+ }
136
+ if (this.state !== 'awaiting_input' ||
137
+ !this.runId ||
138
+ !this.turnId) {
139
+ throw new Error('ExternalProcessBackend is not waiting for input');
140
+ }
141
+ this.state = 'starting';
142
+ this.terminal = null;
143
+ this.failureKind = null;
144
+ this.sawTextDelta = false;
145
+ this.resetRunLiveness('resumed');
146
+ this.exitDeferred = createDeferred();
147
+ this.decoder = new AgentProcessEventDecoder(new AgentProcessEventStreamValidator({
148
+ sessionId: this.sessionId,
149
+ runId: this.runId,
150
+ turnId: this.turnId,
151
+ }, { initialSequence: this.lastSequence }));
152
+ const command = this.buildStartCommand('', {
153
+ interactionAnswers: { [interactionId]: answer },
154
+ replayAfterSequence: this.lastSequence,
155
+ });
156
+ await this.spawnCommand(command);
157
+ }
158
+ restoreInterruptedRun(state) {
159
+ if (this.child) {
160
+ throw new Error('Cannot restore an interrupted run while a child is active');
161
+ }
162
+ if (!this.ensured || this.sessionId !== state.sessionId) {
163
+ throw new Error('Interrupted run session does not match the ensured session');
164
+ }
165
+ validateIdentifier(state.runId, 'runId');
166
+ validateIdentifier(state.turnId, 'turnId');
167
+ if (!Number.isInteger(state.lastSequence) || state.lastSequence < 1) {
168
+ throw new Error('Interrupted run lastSequence must be a positive integer');
169
+ }
170
+ this.runId = state.runId;
171
+ this.turnId = state.turnId;
172
+ this.lastSequence = state.lastSequence;
173
+ this.state = 'awaiting_input';
174
+ this.terminal = null;
175
+ this.failureKind = null;
176
+ }
177
+ async recoverRun(state) {
178
+ if (this.child) {
179
+ throw new Error('Cannot recover a run while a child is active');
180
+ }
181
+ if (!this.ensured || this.sessionId !== state.sessionId) {
182
+ throw new Error('Lost run session does not match the ensured session');
183
+ }
184
+ validateIdentifier(state.runId, 'runId');
185
+ validateIdentifier(state.turnId, 'turnId');
186
+ if (!Number.isInteger(state.lastSequence) || state.lastSequence < 1) {
187
+ throw new Error('Lost run lastSequence must be a positive integer');
188
+ }
189
+ this.runId = state.runId;
190
+ this.turnId = state.turnId;
191
+ this.lastSequence = state.lastSequence;
192
+ this.state = 'starting';
193
+ this.terminal = null;
194
+ this.failureKind = null;
195
+ this.sawTextDelta = false;
196
+ this.resetRunLiveness('recovered');
197
+ this.livenessState.replayGap = 0;
198
+ this.exitDeferred = createDeferred();
199
+ this.decoder = new AgentProcessEventDecoder(new AgentProcessEventStreamValidator({
200
+ sessionId: this.sessionId,
201
+ runId: this.runId,
202
+ turnId: this.turnId,
203
+ }, { initialSequence: this.lastSequence }));
204
+ await this.spawnCommand(this.buildStartCommand('', {
205
+ resumeFromCheckpoint: true,
206
+ replayAfterSequence: this.lastSequence,
207
+ }));
208
+ }
209
+ async spawnCommand(command) {
210
+ // Validate before spawn so an unsupported/malformed dispatch cannot execute
211
+ // any worker tool.
212
+ parseAgentProcessCommandV1(command);
213
+ this.emitRunState();
214
+ const child = spawn(this.spec.executable, this.spec.args ?? [], {
215
+ cwd: this.config.cwd,
216
+ env: this.buildChildEnv(),
217
+ stdio: ['pipe', 'pipe', 'pipe'],
218
+ });
219
+ this.child = child;
220
+ child.stdout.on('data', (chunk) => {
221
+ this.handleStdout(child, chunk);
222
+ });
223
+ child.stderr.on('data', (chunk) => {
224
+ this.spec.onStderr?.(chunk.toString('utf8'));
225
+ });
226
+ child.once('close', (code, signal) => {
227
+ this.handleClose(child, code, signal);
228
+ });
229
+ await new Promise((resolve, reject) => {
230
+ let settled = false;
231
+ child.once('spawn', () => {
232
+ if (settled)
233
+ return;
234
+ settled = true;
235
+ const spawnedAtMs = Date.now();
236
+ this.livenessState.spawnedAt = new Date(spawnedAtMs).toISOString();
237
+ this.livenessState.spawnLatencyMs =
238
+ this.dispatchRequestedAtMs === null
239
+ ? 0
240
+ : Math.max(0, spawnedAtMs - this.dispatchRequestedAtMs);
241
+ this.state = 'running';
242
+ this.emitRunState();
243
+ child.stdin.write(`${JSON.stringify(command)}\n`, (error) => {
244
+ if (error)
245
+ this.handleSpawnFailure(child, error);
246
+ });
247
+ resolve();
248
+ });
249
+ child.once('error', (error) => {
250
+ if (settled) {
251
+ this.handleSpawnFailure(child, error);
252
+ return;
253
+ }
254
+ settled = true;
255
+ this.handleSpawnFailure(child, error);
256
+ reject(error);
257
+ });
258
+ });
259
+ }
260
+ async runState() {
261
+ return this.state;
262
+ }
263
+ async cancel() {
264
+ const child = this.child;
265
+ if (!child)
266
+ return;
267
+ this.cancelRequestedAtMs = Date.now();
268
+ this.livenessState.cancelRequestedAt = new Date(this.cancelRequestedAtMs).toISOString();
269
+ const command = {
270
+ command: 'cancel',
271
+ protocolVersion: AGENT_PROCESS_PROTOCOL_VERSION,
272
+ sessionId: this.sessionId,
273
+ runId: this.runId ?? '',
274
+ reason: 'cancel_requested',
275
+ };
276
+ parseAgentProcessCommandV1(command);
277
+ if (child.stdin.writable) {
278
+ child.stdin.write(`${JSON.stringify(command)}\n`);
279
+ }
280
+ if (await this.waitForCurrentExit(this.spec.cancelGraceMs ?? 2_000))
281
+ return;
282
+ if (this.child === child)
283
+ child.kill('SIGTERM');
284
+ if (await this.waitForCurrentExit(this.spec.killGraceMs ?? 2_000))
285
+ return;
286
+ if (this.child === child)
287
+ child.kill('SIGKILL');
288
+ await this.exitDeferred.promise;
289
+ }
290
+ async stop(_reason) {
291
+ if (this.child)
292
+ await this.cancel();
293
+ this.ensured = false;
294
+ this.sessionId = '';
295
+ this.sessionDir = '';
296
+ }
297
+ async waitForExit() {
298
+ await this.exitDeferred.promise;
299
+ }
300
+ validateTrustedConfig() {
301
+ const protocolVersion = this.spec.protocolVersion ?? AGENT_PROCESS_PROTOCOL_VERSION;
302
+ if (protocolVersion !== AGENT_PROCESS_PROTOCOL_VERSION) {
303
+ throw new AgentProcessProtocolError('unsupported_version', `Unsupported external worker protocol version: ${protocolVersion}`);
304
+ }
305
+ if (!isAbsolute(this.spec.executable)) {
306
+ throw new Error('externalProcess.executable must be an absolute path');
307
+ }
308
+ if (!isAbsolute(this.spec.sessionRoot)) {
309
+ throw new Error('externalProcess.sessionRoot must be an absolute path');
310
+ }
311
+ if ((this.spec.cancelGraceMs ?? 0) < 0 || (this.spec.killGraceMs ?? 0) < 0) {
312
+ throw new Error('externalProcess grace periods must be non-negative');
313
+ }
314
+ }
315
+ async validateExecutableAndCwd() {
316
+ await access(this.spec.executable, fsConstants.X_OK);
317
+ const cwd = await stat(this.config.cwd);
318
+ if (!cwd.isDirectory()) {
319
+ throw new Error(`Session cwd is not a directory: ${this.config.cwd}`);
320
+ }
321
+ }
322
+ buildStartCommand(prompt, optionOverrides = {}) {
323
+ return {
324
+ command: 'start',
325
+ protocolVersion: AGENT_PROCESS_PROTOCOL_VERSION,
326
+ sessionId: this.sessionId,
327
+ runId: this.runId ?? '',
328
+ turnId: this.turnId ?? '',
329
+ prompt,
330
+ cwd: this.config.cwd,
331
+ provider: this.spec.provider,
332
+ conversationOwner: this.spec.conversationOwner ?? { kind: 'local_session' },
333
+ sessionRoot: this.sessionDir,
334
+ agentBundleVersion: this.spec.agentBundleVersion,
335
+ sandbox: this.spec.sandbox,
336
+ mcp: this.spec.mcp ?? { servers: [] },
337
+ options: {
338
+ ...(this.spec.options ?? {}),
339
+ ...(this.config.tuning?.maxTurns === undefined
340
+ ? {}
341
+ : { maxTurns: this.config.tuning.maxTurns }),
342
+ ...optionOverrides,
343
+ },
344
+ };
345
+ }
346
+ buildChildEnv() {
347
+ const env = {};
348
+ for (const key of new Set(this.spec.envAllowlist ?? [])) {
349
+ const value = this.config.env?.[key] ?? process.env[key];
350
+ if (value !== undefined)
351
+ env[key] = value;
352
+ }
353
+ return env;
354
+ }
355
+ handleStdout(child, chunk) {
356
+ if (this.child !== child || !this.decoder)
357
+ return;
358
+ let events;
359
+ try {
360
+ events = this.decoder.push(chunk);
361
+ }
362
+ catch (error) {
363
+ this.handleProtocolFailure(child, error);
364
+ return;
365
+ }
366
+ for (const event of events)
367
+ this.handleProcessEvent(event);
368
+ }
369
+ handleProcessEvent(event) {
370
+ if (!this.livenessState.firstEventAt) {
371
+ const firstEventAtMs = Date.now();
372
+ this.livenessState.firstEventAt = new Date(firstEventAtMs).toISOString();
373
+ this.livenessState.timeToFirstEventMs =
374
+ this.dispatchRequestedAtMs === null
375
+ ? 0
376
+ : Math.max(0, firstEventAtMs - this.dispatchRequestedAtMs);
377
+ }
378
+ this.lastSequence = event.sequence;
379
+ this.lastOutputAt = event.timestamp;
380
+ this.emit({ kind: 'process', event });
381
+ switch (event.type) {
382
+ case 'session.started':
383
+ this.emit({ kind: 'session', sessionId: event.sessionId });
384
+ break;
385
+ case 'assistant.delta':
386
+ this.sawTextDelta = true;
387
+ this.emit({ kind: 'text', text: event.payload.delta });
388
+ break;
389
+ case 'assistant.message':
390
+ if (!this.sawTextDelta) {
391
+ this.emit({ kind: 'text', text: event.payload.text });
392
+ }
393
+ break;
394
+ case 'tool.call':
395
+ this.emit({
396
+ kind: 'tool_use',
397
+ id: event.payload.toolCallId,
398
+ title: event.payload.toolName,
399
+ toolName: event.payload.toolName,
400
+ input: event.payload.input,
401
+ });
402
+ break;
403
+ case 'tool.progress':
404
+ this.emit({
405
+ kind: 'tool_update',
406
+ id: event.payload.toolCallId,
407
+ status: event.payload.status,
408
+ });
409
+ break;
410
+ case 'tool.result':
411
+ this.emit({
412
+ kind: 'tool_update',
413
+ id: event.payload.toolCallId,
414
+ status: event.payload.status,
415
+ });
416
+ break;
417
+ case 'system.warning':
418
+ this.emit({
419
+ kind: 'error',
420
+ message: `${event.payload.code}: ${event.payload.message}`,
421
+ recoverable: event.payload.recoverable,
422
+ });
423
+ break;
424
+ case 'run.waiting_for_input':
425
+ this.acceptTerminal(event, 'awaiting_input');
426
+ break;
427
+ case 'run.completed':
428
+ this.acceptTerminal(event, 'completed');
429
+ this.emit({
430
+ kind: 'result',
431
+ status: 'completed',
432
+ text: outputText(event.payload.output),
433
+ usage: mapUsage(event.payload.usage),
434
+ stopReason: 'end_turn',
435
+ });
436
+ break;
437
+ case 'run.failed':
438
+ this.failureKind = 'worker';
439
+ this.acceptTerminal(event, 'failed');
440
+ this.emit({
441
+ kind: 'error',
442
+ message: event.payload.error.message,
443
+ recoverable: event.payload.error.recoverable,
444
+ });
445
+ this.emit({
446
+ kind: 'result',
447
+ status: 'failed',
448
+ text: event.payload.error.message,
449
+ usage: mapUsage(event.payload.usage),
450
+ stopReason: 'error',
451
+ });
452
+ break;
453
+ case 'run.cancelled':
454
+ this.acceptTerminal(event, 'cancelled');
455
+ this.emit({
456
+ kind: 'result',
457
+ status: 'failed',
458
+ text: event.payload.reason,
459
+ usage: mapUsage(event.payload.usage),
460
+ stopReason: 'cancelled',
461
+ });
462
+ break;
463
+ default:
464
+ break;
465
+ }
466
+ }
467
+ acceptTerminal(event, state) {
468
+ this.terminal = event;
469
+ this.state = state;
470
+ const completedAtMs = Date.now();
471
+ this.livenessState.completedAt = new Date(completedAtMs).toISOString();
472
+ this.livenessState.runDurationMs =
473
+ this.dispatchRequestedAtMs === null
474
+ ? 0
475
+ : Math.max(0, completedAtMs - this.dispatchRequestedAtMs);
476
+ this.emitRunState();
477
+ }
478
+ handleProtocolFailure(child, error) {
479
+ if (this.failureKind === 'protocol')
480
+ return;
481
+ this.failureKind = 'protocol';
482
+ this.state = 'failed';
483
+ const message = error instanceof Error ? error.message : `Protocol failure: ${String(error)}`;
484
+ this.emit({ kind: 'error', message, recoverable: false });
485
+ this.emit({
486
+ kind: 'result',
487
+ status: 'failed',
488
+ text: message,
489
+ stopReason: 'error',
490
+ });
491
+ this.emitRunState();
492
+ child.kill('SIGTERM');
493
+ }
494
+ handleSpawnFailure(child, error) {
495
+ if (this.child !== child)
496
+ return;
497
+ this.failureKind = 'spawn';
498
+ this.state = 'failed';
499
+ this.child = null;
500
+ this.emit({ kind: 'error', message: error.message, recoverable: false });
501
+ this.emit({
502
+ kind: 'result',
503
+ status: 'failed',
504
+ text: error.message,
505
+ stopReason: 'error',
506
+ });
507
+ this.emitRunState();
508
+ this.exitDeferred.resolve();
509
+ }
510
+ handleClose(child, code, signal) {
511
+ if (this.child !== child)
512
+ return;
513
+ this.livenessState.exitCode = code;
514
+ this.livenessState.exitSignal = signal;
515
+ if (!this.livenessState.completedAt) {
516
+ const completedAtMs = Date.now();
517
+ this.livenessState.completedAt = new Date(completedAtMs).toISOString();
518
+ this.livenessState.runDurationMs =
519
+ this.dispatchRequestedAtMs === null
520
+ ? 0
521
+ : Math.max(0, completedAtMs - this.dispatchRequestedAtMs);
522
+ }
523
+ if (this.cancelRequestedAtMs !== null) {
524
+ this.livenessState.cancelLatencyMs = Math.max(0, Date.now() - this.cancelRequestedAtMs);
525
+ }
526
+ if (this.failureKind === null && this.decoder) {
527
+ try {
528
+ const trailing = this.decoder.finish();
529
+ for (const event of trailing)
530
+ this.handleProcessEvent(event);
531
+ }
532
+ catch (error) {
533
+ this.handleProtocolFailure(child, error);
534
+ }
535
+ }
536
+ if (this.failureKind === null && this.terminal === null) {
537
+ this.failureKind = 'lost';
538
+ this.state = 'lost';
539
+ this.emit({
540
+ kind: 'error',
541
+ message: `External worker exited without terminal (code=${String(code)}, signal=${String(signal)})`,
542
+ recoverable: true,
543
+ });
544
+ this.emitRunState();
545
+ }
546
+ this.child = null;
547
+ this.decoder = null;
548
+ // Publish the final snapshot again after clearing the process handle so
549
+ // service records cannot retain a stale pid.
550
+ this.emitRunState();
551
+ this.exitDeferred.resolve();
552
+ }
553
+ emitRunState() {
554
+ this.emit({
555
+ kind: 'run_state',
556
+ state: this.state,
557
+ ...(this.runId === null ? {} : { runId: this.runId }),
558
+ });
559
+ }
560
+ emit(event) {
561
+ for (const listener of this.listeners) {
562
+ try {
563
+ listener(event);
564
+ }
565
+ catch {
566
+ // A consumer must not break process supervision.
567
+ }
568
+ }
569
+ }
570
+ resetRunLiveness(resumeOutcome) {
571
+ this.dispatchRequestedAtMs = Date.now();
572
+ this.cancelRequestedAtMs = null;
573
+ this.livenessState = {
574
+ dispatchRequestedAt: new Date(this.dispatchRequestedAtMs).toISOString(),
575
+ resumeOutcome,
576
+ };
577
+ }
578
+ createId(kind) {
579
+ const id = this.spec.idFactory?.(kind) ?? `${kind}_${randomUUID()}`;
580
+ validateIdentifier(id, `${kind}Id`);
581
+ return id;
582
+ }
583
+ async waitForCurrentExit(timeoutMs) {
584
+ if (!this.child)
585
+ return true;
586
+ let timer;
587
+ const timedOut = new Promise((resolve) => {
588
+ timer = setTimeout(() => resolve(false), timeoutMs);
589
+ });
590
+ const exited = this.exitDeferred.promise.then(() => true);
591
+ const result = await Promise.race([exited, timedOut]);
592
+ if (timer)
593
+ clearTimeout(timer);
594
+ return result;
595
+ }
596
+ }
597
+ function mapUsage(usage) {
598
+ if (!usage)
599
+ return undefined;
600
+ return {
601
+ inputTokens: usage.inputTokens,
602
+ outputTokens: usage.outputTokens,
603
+ reasoningTokens: usage.reasoningTokens,
604
+ costUsd: usage.costUsd,
605
+ };
606
+ }
607
+ function outputText(output) {
608
+ if (typeof output === 'string')
609
+ return output;
610
+ if (output === undefined)
611
+ return '';
612
+ return JSON.stringify(output);
613
+ }
614
+ function createDeferred() {
615
+ let resolve = () => { };
616
+ const promise = new Promise((done) => {
617
+ resolve = done;
618
+ });
619
+ return { promise, resolve };
620
+ }
621
+ function resolvedDeferred() {
622
+ return { promise: Promise.resolve(), resolve: () => { } };
623
+ }
624
+ async function isDirectory(path) {
625
+ try {
626
+ return (await stat(path)).isDirectory();
627
+ }
628
+ catch (error) {
629
+ if (isNodeError(error) && error.code === 'ENOENT')
630
+ return false;
631
+ throw error;
632
+ }
633
+ }
634
+ function isNodeError(error) {
635
+ return error instanceof Error && 'code' in error;
636
+ }
637
+ function validateIdentifier(value, field) {
638
+ if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(value)) {
639
+ throw new Error(`${field} must contain only A-Z, a-z, 0-9, dot, underscore, or dash`);
640
+ }
641
+ }
642
+ //# sourceMappingURL=ExternalProcessBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalProcessBackend.js","sourceRoot":"","sources":["../../../../src/runtime/backends/process/ExternalProcessBackend.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,KAAK,GAEN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAczC,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,gCAAgC,EAChC,yBAAyB,EACzB,0BAA0B,GAM3B,MAAM,mCAAmC,CAAC;AAwB3C,MAAM,OAAO,sBAAsB;IAsBJ;IArBpB,IAAI,GAAG,gBAAgB,CAAC;IAChB,IAAI,CAAsB;IAC1B,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IACrD,KAAK,GAA0C,IAAI,CAAC;IACpD,SAAS,GAAG,EAAE,CAAC;IACf,UAAU,GAAG,EAAE,CAAC;IAChB,OAAO,GAAG,KAAK,CAAC;IAChB,KAAK,GAAa,MAAM,CAAC;IACzB,KAAK,GAAkB,IAAI,CAAC;IAC5B,MAAM,GAAkB,IAAI,CAAC;IAC7B,YAAY,GAAG,CAAC,CAAC;IACjB,YAAY,GAAkB,IAAI,CAAC;IACnC,QAAQ,GAA+B,IAAI,CAAC;IAC5C,WAAW,GAAsC,IAAI,CAAC;IACtD,OAAO,GAAoC,IAAI,CAAC;IAChD,YAAY,GAAiB,gBAAgB,EAAE,CAAC;IAChD,YAAY,GAAG,KAAK,CAAC;IACrB,aAAa,GAAyB,EAAE,CAAC;IACzC,qBAAqB,GAAkB,IAAI,CAAC;IAC5C,mBAAmB,GAAkB,IAAI,CAAC;IAElD,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAChD,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;IACrC,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,OAAO;QACT,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,QAA8B;QACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM;QAKV,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC,SAAS;aACxD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACtC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACxD,IAAI,MAAM,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,SAAS,CAAC;gBAC7C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC1D,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACtD,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,WAAW,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC1D,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,WAAW;aAC1B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,OAAO,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,KAAK,IAAI,WAAW,kBAAkB,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,cAAc,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,wBAAwB,CACzC,IAAI,gCAAgC,CAAC;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CACH,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,aAAqB,EACrB,MAAiB;QAEjB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,CAAC,KAAK,IAAI,WAAW,kBAAkB,CAC1E,CAAC;QACJ,CAAC;QACD,IACE,IAAI,CAAC,KAAK,KAAK,gBAAgB;YAC/B,CAAC,IAAI,CAAC,KAAK;YACX,CAAC,IAAI,CAAC,MAAM,EACZ,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,cAAc,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,wBAAwB,CACzC,IAAI,gCAAgC,CAClC;YACE,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,EACD,EAAE,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE,CACvC,CACF,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE;YACzC,kBAAkB,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE;YAC/C,mBAAmB,EAAE,IAAI,CAAC,YAAY;SACvC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,qBAAqB,CAAC,KAKrB;QACC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAKhB;QACC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,cAAc,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,wBAAwB,CACzC,IAAI,gCAAgC,CAClC;YACE,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,EACD,EAAE,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE,CACvC,CACF,CAAC;QACF,MAAM,IAAI,CAAC,YAAY,CACrB,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE;YACzB,oBAAoB,EAAE,IAAI;YAC1B,mBAAmB,EAAE,IAAI,CAAC,YAAY;SACvC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,OAAmC;QAEnC,4EAA4E;QAC5E,mBAAmB;QACnB,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE;YAC9D,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;YACpB,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE;YACzB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;gBACnE,IAAI,CAAC,aAAa,CAAC,cAAc;oBAC/B,IAAI,CAAC,qBAAqB,KAAK,IAAI;wBACjC,CAAC,CAAC,CAAC;wBACH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAC5D,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBACvB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;oBAC1D,IAAI,KAAK;wBAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;gBACH,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC5B,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACtC,OAAO;gBACT,CAAC;gBACD,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACtC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAC7C,IAAI,CAAC,mBAAmB,CACzB,CAAC,WAAW,EAAE,CAAC;QAChB,MAAM,OAAO,GAAgC;YAC3C,OAAO,EAAE,QAAQ;YACjB,eAAe,EAAE,8BAA8B;YAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,EAAE,kBAAkB;SAC3B,CAAC;QACF,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACzB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;YAAE,OAAO;QAC5E,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;YAAE,OAAO;QAC1E,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAoB;QAC7B,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;IAClC,CAAC;IAEO,qBAAqB;QAC3B,MAAM,eAAe,GACnB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,8BAA8B,CAAC;QAC9D,IAAI,eAAe,KAAK,8BAA8B,EAAE,CAAC;YACvD,MAAM,IAAI,yBAAyB,CACjC,qBAAqB,EACrB,iDAAiD,eAAe,EAAE,CACnE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAEO,iBAAiB,CACvB,MAAc,EACd,kBAAkE,EAAE;QAEpE,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,eAAe,EAAE,8BAA8B;YAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACzB,MAAM;YACN,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;YACpB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAC5B,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE;YAC3E,WAAW,EAAE,IAAI,CAAC,UAAU;YAC5B,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAChD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YAC1B,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;YACrC,OAAO,EAAE;gBACP,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,KAAK,SAAS;oBAC5C,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC9C,GAAG,eAAe;aACnB;SACF,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,MAAM,GAAG,GAAsB,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,KAAK,KAAK,SAAS;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC5C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,YAAY,CAClB,KAAqC,EACrC,KAAa;QAEb,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAClD,IAAI,MAA6B,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM;YAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAEO,kBAAkB,CAAC,KAA0B;QACnD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YACzE,IAAI,CAAC,aAAa,CAAC,kBAAkB;gBACnC,IAAI,CAAC,qBAAqB,KAAK,IAAI;oBACjC,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,iBAAiB;gBACpB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC3D,MAAM;YACR,KAAK,iBAAiB;gBACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBACvD,MAAM;YACR,KAAK,mBAAmB;gBACtB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxD,CAAC;gBACD,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,UAAU;oBAChB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;oBAC5B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;oBAC7B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;oBAChC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;iBAC3B,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,eAAe;gBAClB,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,aAAa;oBACnB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;oBAC5B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;iBAC7B,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,aAAa;gBAChB,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,aAAa;oBACnB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;oBAC5B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;iBAC7B,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,gBAAgB;gBACnB,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;oBAC1D,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW;iBACvC,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,uBAAuB;gBAC1B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,eAAe;gBAClB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,WAAW;oBACnB,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;oBACtC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBACpC,UAAU,EAAE,UAAU;iBACvB,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,YAAY;gBACf,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;gBAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;oBACpC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW;iBAC7C,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;oBACjC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBACpC,UAAU,EAAE,OAAO;iBACpB,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,eAAe;gBAClB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;oBAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBACpC,UAAU,EAAE,WAAW;iBACxB,CAAC,CAAC;gBACH,MAAM;YACR;gBACE,MAAM;QACV,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,KAA0B,EAAE,KAAe;QAChE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACvE,IAAI,CAAC,aAAa,CAAC,aAAa;YAC9B,IAAI,CAAC,qBAAqB,KAAK,IAAI;gBACjC,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,qBAAqB,CAC3B,KAAqC,EACrC,KAAc;QAEd,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU;YAAE,OAAO;QAC5C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChF,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAEO,kBAAkB,CACxB,KAAqC,EACrC,KAAY;QAEZ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO;QACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,KAAK,CAAC,OAAO;YACnB,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAEO,WAAW,CACjB,KAAqC,EACrC,IAAmB,EACnB,MAA6B;QAE7B,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO;QACjC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;YACvE,IAAI,CAAC,aAAa,CAAC,aAAa;gBAC9B,IAAI,CAAC,qBAAqB,KAAK,IAAI;oBACjC,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAC3C,CAAC,EACD,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,CACtC,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACvC,KAAK,MAAM,KAAK,IAAI,QAAQ;oBAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,iDAAiD,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,GAAG;gBACnG,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,wEAAwE;QACxE,6CAA6C;QAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SACtD,CAAC,CAAC;IACL,CAAC;IAEO,IAAI,CAAC,KAAwB;QACnC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,iDAAiD;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,gBAAgB,CACtB,aAAiE;QAEjE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG;YACnB,mBAAmB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE;YACvE,aAAa;SACd,CAAC;IACJ,CAAC;IAEO,QAAQ,CAAC,IAAgC;QAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,UAAU,EAAE,EAAE,CAAC;QACpE,kBAAkB,CAAC,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAChD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC7B,IAAI,KAAgD,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAQ,CAAC,OAAO,EAAE,EAAE;YAC9C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAa,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtD,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,KAAsC;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAA6B;IAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,IAAI,EAAE,EAAE;QACzC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAChE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACnD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAAa;IACtD,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,4DAA4D,CAAC,CAAC;IACxF,CAAC;AACH,CAAC"}