@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,36 @@
1
+ import type { Agent, RunState } from '@openai/agents';
2
+ import { type SandboxRunConfig, type SandboxClient } from '@openai/agents/sandbox';
3
+ import type { AgentProcessStartCommandV1, JsonValue } from '../../runtime/index.js';
4
+ import { InteractionBroker } from '../interactions/broker.js';
5
+ import { type ManagedMcpBundle, type ManagedMcpDependencies } from '../mcp/managedMcp.js';
6
+ import type { ProviderCapabilityPlan } from '../providerCapabilities.js';
7
+ import type { InteractionStore } from '../storage/interaction.js';
8
+ import { ToolExecutionLedger } from '../storage/toolLedger.js';
9
+ export interface OpenAISandboxExecution {
10
+ agent: Agent;
11
+ sandbox: SandboxRunConfig;
12
+ tools: string[];
13
+ mcpServers: string[];
14
+ features: string[];
15
+ interactions?: InteractionBroker;
16
+ serializeWorkspaceState(state: RunState<any, any>): JsonValue;
17
+ close(): Promise<Array<{
18
+ code: string;
19
+ message: string;
20
+ }>>;
21
+ }
22
+ export interface OpenAISandboxExecutionDependencies {
23
+ mcp?: ManagedMcpDependencies;
24
+ mcpBundle?: ManagedMcpBundle;
25
+ sandboxClient?: SandboxClient;
26
+ skillsDir?: string;
27
+ interactions?: InteractionStore;
28
+ ledger?: ToolExecutionLedger;
29
+ }
30
+ export declare class UnsupportedSandboxProviderError extends Error {
31
+ readonly code = "workspace_unavailable";
32
+ constructor(message: string);
33
+ }
34
+ export declare function prepareOpenAISandboxExecution(start: AgentProcessStartCommandV1, providerPlan: ProviderCapabilityPlan, dependencies?: OpenAISandboxExecutionDependencies): Promise<OpenAISandboxExecution>;
35
+ export declare function assertNoEscapingSymlinks(workspaceRoot: string, maximumEntries?: number): Promise<void>;
36
+ //# sourceMappingURL=execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../src/openai-agent/sandbox/execution.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EASL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,KAAK,EACV,0BAA0B,EAC1B,SAAS,EACV,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAM/D,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAC9D,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,kCAAkC;IACjD,GAAG,CAAC,EAAE,sBAAsB,CAAC;IAC7B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,IAAI,2BAA2B;gBAE5B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,0BAA0B,EACjC,YAAY,EAAE,sBAAsB,EACpC,YAAY,GAAE,kCAAuC,GACpD,OAAO,CAAC,sBAAsB,CAAC,CAmNjC;AAED,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,MAAM,EACrB,cAAc,SAAU,GACvB,OAAO,CAAC,IAAI,CAAC,CAiCf"}
@@ -0,0 +1,239 @@
1
+ import { cp, lstat, mkdir, readdir, realpath, rm } from 'node:fs/promises';
2
+ import { homedir } from 'node:os';
3
+ import { dirname, relative, resolve, sep } from 'node:path';
4
+ import { SandboxAgent, compaction, filesystem, localBindMountStrategy, localDir, mount, shell, skills, } from '@openai/agents/sandbox';
5
+ import { localDirLazySkillSource, UnixLocalSandboxClient, } from '@openai/agents/sandbox/local';
6
+ import { createEchoTool, SPS_ECHO_TOOL_NAME, } from '../agentFactory.js';
7
+ import { InteractionBroker } from '../interactions/broker.js';
8
+ import { buildOpenAIAgentInstructions } from '../instructions.js';
9
+ import { prepareManagedMcp, } from '../mcp/managedMcp.js';
10
+ import { ToolExecutionLedger } from '../storage/toolLedger.js';
11
+ import { configureLedgerTools } from '../tools/ledgerTools.js';
12
+ import { createProductionDockerClient } from './productionDocker.js';
13
+ const TOOL_TIMEOUT_MS = 60_000;
14
+ export class UnsupportedSandboxProviderError extends Error {
15
+ code = 'workspace_unavailable';
16
+ constructor(message) {
17
+ super(message);
18
+ this.name = 'UnsupportedSandboxProviderError';
19
+ }
20
+ }
21
+ export async function prepareOpenAISandboxExecution(start, providerPlan, dependencies = {}) {
22
+ if (start.sandbox.provider !== 'unix_local' &&
23
+ start.sandbox.provider !== 'docker') {
24
+ throw new UnsupportedSandboxProviderError(`Sandbox provider ${start.sandbox.provider} is not available in this worker build`);
25
+ }
26
+ if (start.sandbox.profile === 'production' &&
27
+ start.sandbox.provider !== 'docker') {
28
+ throw new UnsupportedSandboxProviderError('Production sandbox profile requires the Docker provider');
29
+ }
30
+ await assertNoEscapingSymlinks(start.cwd);
31
+ // SPS 技能主目录(`sps setup` 装于此;claude 项目 .claude/skills 也软链到这)——openai 用同一源,
32
+ // 技能集与 claude 一致。授权只读(extraPathGrants)+ 物化进 sandbox 的 .agents/skills,不越权、不拷进项目。
33
+ const baseSkillsDir = dependencies.skillsDir ?? resolve(homedir(), '.coral', 'skills');
34
+ // 卡片 skill 白名单(env SPS_CARD_SKILLS,逗号分隔;来源卡片 frontmatter,经 RuntimeSessionRuntime 透传)。
35
+ // 给了则只暴露这些技能:在 sessionRoot 下建过滤视图目录(拷允许且存在的技能),skillsDir 指它;否则用全量。
36
+ const allowedSkills = (process.env.SPS_CARD_SKILLS ?? '')
37
+ .split(',')
38
+ .map((s) => s.trim())
39
+ .filter((s) => /^[A-Za-z0-9_-]+$/.test(s));
40
+ let skillsDir = baseSkillsDir;
41
+ if (allowedSkills.length) {
42
+ const viewDir = resolve(start.sessionRoot, 'skills-view');
43
+ await rm(viewDir, { recursive: true, force: true });
44
+ await mkdir(viewDir, { recursive: true });
45
+ for (const name of allowedSkills) {
46
+ try {
47
+ await cp(resolve(baseSkillsDir, name), resolve(viewDir, name), { recursive: true });
48
+ }
49
+ catch {
50
+ /* 技能不存在于主目录 → 跳过 */
51
+ }
52
+ }
53
+ skillsDir = viewDir;
54
+ }
55
+ const mcp = dependencies.mcpBundle ??
56
+ (await prepareManagedMcp(start, dependencies.mcp));
57
+ const interactionBroker = dependencies.interactions
58
+ ? new InteractionBroker(start, dependencies.interactions)
59
+ : undefined;
60
+ const configureTools = (tools) => configureLedgerTools((interactionBroker?.configureCapabilityTools(tools) ??
61
+ tools)
62
+ // codex 不认 hosted apply_patch(400 Unsupported tool type)→ 从能力工具里剔除。
63
+ .filter((tool) => providerPlan.hostedApplyPatch || tool.type !== 'apply_patch')
64
+ .map((tool) => tool.type === 'function'
65
+ ? {
66
+ ...tool,
67
+ timeoutMs: TOOL_TIMEOUT_MS,
68
+ timeoutBehavior: 'raise_exception',
69
+ }
70
+ : tool), start, dependencies.ledger ?? new ToolExecutionLedger(start.sessionRoot));
71
+ const capabilities = [
72
+ filesystem({ configureTools }),
73
+ shell({ configureTools }),
74
+ skills({
75
+ lazyFrom: localDirLazySkillSource({
76
+ src: skillsDir,
77
+ baseDir: dirname(skillsDir),
78
+ }),
79
+ skillsPath: '.agents/skills',
80
+ }),
81
+ ...(providerPlan.compaction ? [compaction()] : []),
82
+ ];
83
+ const manifest = {
84
+ version: 1,
85
+ root: '/workspace',
86
+ entries: {
87
+ repo: start.sandbox.provider === 'docker'
88
+ ? localDir({
89
+ src: start.cwd,
90
+ description: 'SPS-authorized isolated project workspace copy',
91
+ })
92
+ : mount({
93
+ source: start.cwd,
94
+ mountPath: '/workspace/repo',
95
+ readOnly: false,
96
+ mountStrategy: localBindMountStrategy(),
97
+ description: 'SPS-authorized project workspace',
98
+ }),
99
+ },
100
+ extraPathGrants: [
101
+ {
102
+ path: skillsDir,
103
+ readOnly: true,
104
+ description: 'Read-only SPS skill source',
105
+ },
106
+ ],
107
+ };
108
+ const agent = new SandboxAgent({
109
+ name: `sps-openai-agent-v${start.agentBundleVersion}`,
110
+ model: start.provider.model,
111
+ baseInstructions: buildOpenAIAgentInstructions(start),
112
+ instructions: 'Complete the task using the authorized workspace and the tools exposed in this run.',
113
+ defaultManifest: manifest,
114
+ capabilities,
115
+ tools: [
116
+ ...configureLedgerTools([createEchoTool(), ...mcp.functionTools], start, dependencies.ledger ?? new ToolExecutionLedger(start.sessionRoot)),
117
+ ...(interactionBroker?.tools() ?? []),
118
+ ],
119
+ mcpServers: [],
120
+ mcpConfig: {
121
+ convertSchemasToStrict: false,
122
+ includeServerInToolNames: true,
123
+ errorFunction: null,
124
+ },
125
+ });
126
+ const workspaceBaseDir = resolve(start.sessionRoot, 'sandbox-workspaces');
127
+ if (!dependencies.sandboxClient) {
128
+ await mkdir(workspaceBaseDir, { recursive: true });
129
+ }
130
+ const archiveLimits = {
131
+ maxInputBytes: 64 * 1024 * 1024,
132
+ maxExtractedBytes: 256 * 1024 * 1024,
133
+ maxMembers: 100_000,
134
+ };
135
+ const client = dependencies.sandboxClient ??
136
+ (start.sandbox.provider === 'docker'
137
+ ? createProductionDockerClient({
138
+ workspaceBaseDir,
139
+ image: process.env.SPS_OPENAI_SANDBOX_IMAGE ??
140
+ 'node:22-bookworm-slim',
141
+ archiveLimits,
142
+ concurrencyLimits: {
143
+ manifestEntries: 1_024,
144
+ localDirFiles: 250_000,
145
+ },
146
+ }, start.cwd)
147
+ : new UnixLocalSandboxClient({
148
+ workspaceBaseDir,
149
+ archiveLimits,
150
+ concurrencyLimits: {
151
+ manifestEntries: 1_024,
152
+ localDirFiles: 250_000,
153
+ },
154
+ }));
155
+ return {
156
+ agent,
157
+ sandbox: { client },
158
+ tools: [
159
+ SPS_ECHO_TOOL_NAME,
160
+ ...(interactionBroker
161
+ ? ['present_choices', 'present_form']
162
+ : []),
163
+ 'view_image',
164
+ ...(providerPlan.hostedApplyPatch ? ['apply_patch'] : []),
165
+ 'exec_command',
166
+ 'write_stdin',
167
+ 'load_skill',
168
+ ...mcp.qualifiedToolNames,
169
+ ],
170
+ mcpServers: mcp.serverNames,
171
+ ...(interactionBroker ? { interactions: interactionBroker } : {}),
172
+ features: [
173
+ 'streaming',
174
+ 'multi_turn_agent_loop',
175
+ 'cancellation',
176
+ 'usage',
177
+ 'sandbox',
178
+ 'filesystem',
179
+ 'shell',
180
+ 'skills',
181
+ ...(providerPlan.compaction ? ['compaction'] : []),
182
+ ],
183
+ serializeWorkspaceState(state) {
184
+ return {
185
+ sandbox: state._sandbox
186
+ ? JSON.parse(JSON.stringify(state._sandbox))
187
+ : null,
188
+ manifest: {
189
+ root: '/workspace',
190
+ entries: ['repo'],
191
+ sandboxProvider: start.sandbox.provider,
192
+ },
193
+ };
194
+ },
195
+ async close() {
196
+ return (await mcp.close()).map((failure) => ({
197
+ code: 'mcp_close_failed',
198
+ message: `${failure.server}: ${failure.error}`,
199
+ }));
200
+ },
201
+ };
202
+ }
203
+ export async function assertNoEscapingSymlinks(workspaceRoot, maximumEntries = 250_000) {
204
+ const canonicalRoot = await realpath(workspaceRoot);
205
+ const pending = [canonicalRoot];
206
+ let visited = 0;
207
+ while (pending.length > 0) {
208
+ const directory = pending.pop();
209
+ for (const entry of await readdir(directory, { withFileTypes: true })) {
210
+ visited += 1;
211
+ if (visited > maximumEntries) {
212
+ throw new UnsupportedSandboxProviderError(`Workspace exceeds the ${maximumEntries} entry security scan limit`);
213
+ }
214
+ const candidate = resolve(directory, entry.name);
215
+ if (entry.isSymbolicLink()) {
216
+ const target = await realpath(candidate).catch(() => null);
217
+ if (!target || !isWithin(canonicalRoot, target)) {
218
+ throw new UnsupportedSandboxProviderError(`Workspace symlink escapes the authorized root: ${candidate}`);
219
+ }
220
+ continue;
221
+ }
222
+ // `.claude` 是 SPS/Claude 工具目录(技能软链指向仓外的 SPS 技能库、settings、hooks),
223
+ // 非 agent 可编辑的项目源;其技能软链天然"越权",但 openai worker 的技能由独立 skills
224
+ // capability 提供、不靠项目 `.claude/skills`。故把整个 `.claude` 子树排除出越权扫描。
225
+ if (entry.isDirectory() && entry.name === '.claude')
226
+ continue;
227
+ if (entry.isDirectory()) {
228
+ const stats = await lstat(candidate);
229
+ if (stats.isDirectory())
230
+ pending.push(candidate);
231
+ }
232
+ }
233
+ }
234
+ }
235
+ function isWithin(root, candidate) {
236
+ const path = relative(root, candidate);
237
+ return path === '' || (!path.startsWith(`..${sep}`) && path !== '..');
238
+ }
239
+ //# sourceMappingURL=execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/openai-agent/sandbox/execution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { SandboxClient } from '@openai/agents/sandbox';
2
+ import { type DockerSandboxClientOptions } from '@openai/agents/sandbox/local';
3
+ export interface ProductionDockerLimits {
4
+ cpus: number;
5
+ memoryMb: number;
6
+ processCount: number;
7
+ network: 'none';
8
+ }
9
+ export declare const DEFAULT_PRODUCTION_DOCKER_LIMITS: ProductionDockerLimits;
10
+ export type DockerCommandRunner = (args: string[]) => Promise<void>;
11
+ export declare function hardenDockerContainer(containerId: string, limits?: ProductionDockerLimits, run?: DockerCommandRunner): Promise<void>;
12
+ /**
13
+ * SDK Docker client wrapped with fail-closed host-enforced resource limits.
14
+ * The session is not returned to the agent until hardening succeeds.
15
+ */
16
+ export declare function createProductionDockerClient(options: DockerSandboxClientOptions, sourceWorkspace: string, limits?: ProductionDockerLimits, run?: DockerCommandRunner): SandboxClient;
17
+ //# sourceMappingURL=productionDocker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productionDocker.d.ts","sourceRoot":"","sources":["../../../src/openai-agent/sandbox/productionDocker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EAGd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,0BAA0B,EAGhC,MAAM,8BAA8B,CAAC;AAKtC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,gCAAgC,EAAE,sBAK9C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAChC,IAAI,EAAE,MAAM,EAAE,KACX,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,sBAAyD,EACjE,GAAG,GAAE,mBAA+B,GACnC,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,0BAA0B,EACnC,eAAe,EAAE,MAAM,EACvB,MAAM,GAAE,sBAAyD,EACjE,GAAG,GAAE,mBAA+B,GACnC,aAAa,CAoDf"}
@@ -0,0 +1,76 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { cp } from 'node:fs/promises';
3
+ import { resolve } from 'node:path';
4
+ import { promisify } from 'node:util';
5
+ import { DockerSandboxClient, } from '@openai/agents/sandbox/local';
6
+ import { Manifest } from '@openai/agents/sandbox';
7
+ const execFileAsync = promisify(execFile);
8
+ export const DEFAULT_PRODUCTION_DOCKER_LIMITS = {
9
+ cpus: 2,
10
+ memoryMb: 2_048,
11
+ processCount: 256,
12
+ network: 'none',
13
+ };
14
+ export async function hardenDockerContainer(containerId, limits = DEFAULT_PRODUCTION_DOCKER_LIMITS, run = runDocker) {
15
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9_.-]+$/.test(containerId)) {
16
+ throw new Error('Docker returned an unsafe container id');
17
+ }
18
+ await run([
19
+ 'update',
20
+ '--cpus',
21
+ String(limits.cpus),
22
+ '--memory',
23
+ `${limits.memoryMb}m`,
24
+ '--pids-limit',
25
+ String(limits.processCount),
26
+ containerId,
27
+ ]);
28
+ if (limits.network === 'none') {
29
+ await run(['network', 'disconnect', '-f', 'bridge', containerId]);
30
+ }
31
+ }
32
+ /**
33
+ * SDK Docker client wrapped with fail-closed host-enforced resource limits.
34
+ * The session is not returned to the agent until hardening succeeds.
35
+ */
36
+ export function createProductionDockerClient(options, sourceWorkspace, limits = DEFAULT_PRODUCTION_DOCKER_LIMITS, run = runDocker) {
37
+ const delegate = new DockerSandboxClient(options);
38
+ const harden = async (session) => {
39
+ try {
40
+ await hardenDockerContainer(session.state.containerId, limits, run);
41
+ return session;
42
+ }
43
+ catch (error) {
44
+ await session.delete().catch(() => undefined);
45
+ throw new Error(`Production Docker sandbox hardening failed: ${error instanceof Error ? error.message : String(error)}`);
46
+ }
47
+ };
48
+ return {
49
+ backendId: 'docker',
50
+ supportsDefaultOptions: true,
51
+ create: (async (args, manifestOptions) => harden(args instanceof Manifest
52
+ ? await delegate.create(args, manifestOptions)
53
+ : await delegate.create(args))),
54
+ resume: (state, resumeOptions) => delegate.resume(state, resumeOptions).then(harden),
55
+ serializeSessionState: async (state) => {
56
+ const dockerState = state;
57
+ // Docker receives an isolated localDir copy. Materialize successful
58
+ // creates/updates back into the explicitly authorized project before the
59
+ // SDK deletes its owned workspace.
60
+ await cp(resolve(dockerState.workspaceRootPath, 'repo'), sourceWorkspace, {
61
+ recursive: true,
62
+ force: true,
63
+ preserveTimestamps: true,
64
+ });
65
+ return delegate.serializeSessionState(dockerState);
66
+ },
67
+ deserializeSessionState: (state) => delegate.deserializeSessionState(state),
68
+ };
69
+ }
70
+ async function runDocker(args) {
71
+ await execFileAsync('docker', args, {
72
+ timeout: 15_000,
73
+ maxBuffer: 1024 * 1024,
74
+ });
75
+ }
76
+ //# sourceMappingURL=productionDocker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productionDocker.js","sourceRoot":"","sources":["../../../src/openai-agent/sandbox/productionDocker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Agent, MCPServer, ModelProvider, Runner, RunState, RunStreamEvent, StreamedRunResult } from '@openai/agents';
2
+ import type { SandboxAgent } from '@openai/agents/sandbox';
3
+ /**
4
+ * Compile-time boundary for the exact OpenAI Agents SDK version pinned by SPS.
5
+ * Keeping the unstable sandbox import here makes SDK upgrades fail at typecheck
6
+ * before product code is changed.
7
+ */
8
+ export interface OpenAIAgentSdkContract {
9
+ agent: Agent<any, any>;
10
+ runner: Runner;
11
+ provider: ModelProvider;
12
+ stream: StreamedRunResult<any, Agent<any, any>>;
13
+ event: RunStreamEvent;
14
+ state: RunState<any, Agent<any, any>>;
15
+ mcpServer: MCPServer;
16
+ sandboxAgent: SandboxAgent;
17
+ }
18
+ //# sourceMappingURL=sdkContract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdkContract.d.ts","sourceRoot":"","sources":["../../src/openai-agent/sdkContract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,SAAS,EACT,aAAa,EACb,MAAM,EACN,QAAQ,EACR,cAAc,EACd,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAChD,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACtC,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sdkContract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdkContract.js","sourceRoot":"","sources":["../../src/openai-agent/sdkContract.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export declare function assertStorageRoot(path: string): void;
2
+ export declare function assertIdentifier(value: string, name: string): void;
3
+ export declare function pathExists(path: string): Promise<boolean>;
4
+ export declare function readJsonFile<T>(path: string, validate: (value: unknown) => T): Promise<T | null>;
5
+ export declare function atomicWriteJson(path: string, value: unknown, validate?: (value: unknown) => unknown): Promise<void>;
6
+ export declare function requireRecord(value: unknown, label: string): Record<string, unknown>;
7
+ export declare function requireString(record: Record<string, unknown>, key: string): string;
8
+ export declare function requireInteger(record: Record<string, unknown>, key: string, minimum?: number): number;
9
+ export declare function isNodeError(error: unknown, code: string): error is NodeJS.ErrnoException;
10
+ //# sourceMappingURL=atomic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomic.d.ts","sourceRoot":"","sources":["../../../src/openai-agent/storage/atomic.ts"],"names":[],"mappings":"AAWA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAOpD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAOlE;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ/D;AAED,wBAAsB,YAAY,CAAC,CAAC,EAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,GAC9B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAsBnB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GACrC,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV,MAAM,CASR;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,OAAO,SAAI,GACV,MAAM,CASR;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,GACX,KAAK,IAAI,MAAM,CAAC,cAAc,CAMhC"}
@@ -0,0 +1,112 @@
1
+ import { mkdir, open, readFile, rename, unlink, } from 'node:fs/promises';
2
+ import { dirname, isAbsolute, join } from 'node:path';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { OpenAIAgentStorageError } from './errors.js';
5
+ export function assertStorageRoot(path) {
6
+ if (!isAbsolute(path)) {
7
+ throw new OpenAIAgentStorageError('persistence_error', `Session root must be absolute: ${path}`);
8
+ }
9
+ }
10
+ export function assertIdentifier(value, name) {
11
+ if (!/^[A-Za-z0-9][A-Za-z0-9._-]{0,199}$/.test(value)) {
12
+ throw new OpenAIAgentStorageError('persistence_error', `${name} contains unsafe path characters`);
13
+ }
14
+ }
15
+ export async function pathExists(path) {
16
+ try {
17
+ await readFile(path);
18
+ return true;
19
+ }
20
+ catch (error) {
21
+ if (isNodeError(error, 'ENOENT'))
22
+ return false;
23
+ throw error;
24
+ }
25
+ }
26
+ export async function readJsonFile(path, validate) {
27
+ let raw;
28
+ try {
29
+ raw = await readFile(path, 'utf8');
30
+ }
31
+ catch (error) {
32
+ if (isNodeError(error, 'ENOENT'))
33
+ return null;
34
+ throw new OpenAIAgentStorageError('persistence_error', `Failed to read ${path}`, error);
35
+ }
36
+ try {
37
+ return validate(JSON.parse(raw));
38
+ }
39
+ catch (error) {
40
+ if (error instanceof OpenAIAgentStorageError)
41
+ throw error;
42
+ throw new OpenAIAgentStorageError('corrupt', `Invalid JSON state in ${path}`, error);
43
+ }
44
+ }
45
+ export async function atomicWriteJson(path, value, validate) {
46
+ validate?.(value);
47
+ let serialized;
48
+ try {
49
+ serialized = `${JSON.stringify(value, null, 2)}\n`;
50
+ }
51
+ catch (error) {
52
+ throw new OpenAIAgentStorageError('persistence_error', `State for ${path} is not JSON serializable`, error);
53
+ }
54
+ if (serialized.includes('undefined')) {
55
+ // JSON.stringify removes undefined object fields; validation should make
56
+ // that loss explicit instead of silently changing durable meaning.
57
+ validate?.(JSON.parse(serialized));
58
+ }
59
+ const directory = dirname(path);
60
+ await mkdir(directory, { recursive: true, mode: 0o700 });
61
+ const temporary = join(directory, `.${randomUUID()}.tmp`);
62
+ let handle;
63
+ try {
64
+ handle = await open(temporary, 'wx', 0o600);
65
+ await handle.writeFile(serialized, 'utf8');
66
+ await handle.sync();
67
+ await handle.close();
68
+ handle = undefined;
69
+ await rename(temporary, path);
70
+ const directoryHandle = await open(directory, 'r');
71
+ try {
72
+ await directoryHandle.sync();
73
+ }
74
+ finally {
75
+ await directoryHandle.close();
76
+ }
77
+ }
78
+ catch (error) {
79
+ if (handle)
80
+ await handle.close().catch(() => undefined);
81
+ await unlink(temporary).catch(() => undefined);
82
+ if (error instanceof OpenAIAgentStorageError)
83
+ throw error;
84
+ throw new OpenAIAgentStorageError('persistence_error', `Atomic write failed for ${path}`, error);
85
+ }
86
+ }
87
+ export function requireRecord(value, label) {
88
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
89
+ throw new OpenAIAgentStorageError('corrupt', `${label} must be an object`);
90
+ }
91
+ return value;
92
+ }
93
+ export function requireString(record, key) {
94
+ const value = record[key];
95
+ if (typeof value !== 'string' || value.length === 0) {
96
+ throw new OpenAIAgentStorageError('corrupt', `${key} must be a non-empty string`);
97
+ }
98
+ return value;
99
+ }
100
+ export function requireInteger(record, key, minimum = 0) {
101
+ const value = record[key];
102
+ if (!Number.isInteger(value) || value < minimum) {
103
+ throw new OpenAIAgentStorageError('corrupt', `${key} must be an integer >= ${minimum}`);
104
+ }
105
+ return value;
106
+ }
107
+ export function isNodeError(error, code) {
108
+ return (error instanceof Error &&
109
+ 'code' in error &&
110
+ error.code === code);
111
+ }
112
+ //# sourceMappingURL=atomic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomic.js","sourceRoot":"","sources":["../../../src/openai-agent/storage/atomic.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,MAAM,GACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,uBAAuB,CAC/B,mBAAmB,EACnB,kCAAkC,IAAI,EAAE,CACzC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,IAAY;IAC1D,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,uBAAuB,CAC/B,mBAAmB,EACnB,GAAG,IAAI,kCAAkC,CAC1C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,QAA+B;IAE/B,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9C,MAAM,IAAI,uBAAuB,CAC/B,mBAAmB,EACnB,kBAAkB,IAAI,EAAE,EACxB,KAAK,CACN,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,uBAAuB;YAAE,MAAM,KAAK,CAAC;QAC1D,MAAM,IAAI,uBAAuB,CAC/B,SAAS,EACT,yBAAyB,IAAI,EAAE,EAC/B,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,KAAc,EACd,QAAsC;IAEtC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;IAClB,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,UAAU,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,uBAAuB,CAC/B,mBAAmB,EACnB,aAAa,IAAI,2BAA2B,EAC5C,KAAK,CACN,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,yEAAyE;QACzE,mEAAmE;QACnE,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,SAAS,CAAC;QACnB,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACT,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACxD,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,KAAK,YAAY,uBAAuB;YAAE,MAAM,KAAK,CAAC;QAC1D,MAAM,IAAI,uBAAuB,CAC/B,mBAAmB,EACnB,2BAA2B,IAAI,EAAE,EACjC,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAAc,EACd,KAAa;IAEb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,uBAAuB,CAAC,SAAS,EAAE,GAAG,KAAK,oBAAoB,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,MAA+B,EAC/B,GAAW;IAEX,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,uBAAuB,CAC/B,SAAS,EACT,GAAG,GAAG,6BAA6B,CACpC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,MAA+B,EAC/B,GAAW,EACX,OAAO,GAAG,CAAC;IAEX,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAK,KAAgB,GAAG,OAAO,EAAE,CAAC;QAC5D,MAAM,IAAI,uBAAuB,CAC/B,SAAS,EACT,GAAG,GAAG,0BAA0B,OAAO,EAAE,CAC1C,CAAC;IACJ,CAAC;IACD,OAAO,KAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,KAAc,EACd,IAAY;IAEZ,OAAO,CACL,KAAK,YAAY,KAAK;QACtB,MAAM,IAAI,KAAK;QACd,KAA+B,CAAC,IAAI,KAAK,IAAI,CAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { RunState, type Agent, type RunContext } from '@openai/agents';
2
+ import type { JsonValue } from '../../runtime/index.js';
3
+ declare const CHECKPOINT_SCHEMA_VERSION = 1;
4
+ declare const SDK_RUN_STATE_SCHEMA_VERSION = "1.13";
5
+ export interface RunCheckpoint {
6
+ schemaVersion: typeof CHECKPOINT_SCHEMA_VERSION;
7
+ revision: number;
8
+ status: 'running' | 'waiting_for_input' | 'cancelled_safe';
9
+ serializedRunState: string;
10
+ sdkRunStateSchemaVersion: typeof SDK_RUN_STATE_SCHEMA_VERSION;
11
+ agentBundleVersion: string;
12
+ pending?: {
13
+ interactionId?: string;
14
+ toolCallId?: string;
15
+ kind: string;
16
+ };
17
+ workspaceStateRef?: string;
18
+ lastSafeSequence: number;
19
+ safeToResume: boolean;
20
+ createdAt: string;
21
+ updatedAt: string;
22
+ metadata?: Record<string, JsonValue>;
23
+ }
24
+ export type NextRunCheckpoint = Omit<RunCheckpoint, 'schemaVersion' | 'revision' | 'createdAt' | 'updatedAt'> & {
25
+ createdAt?: string;
26
+ };
27
+ export declare class RunCheckpointStore {
28
+ private readonly sessionRoot;
29
+ private readonly path;
30
+ private readonly lockPath;
31
+ constructor(sessionRoot: string);
32
+ load(): Promise<RunCheckpoint | null>;
33
+ compareAndSet(expectedRevision: number, next: NextRunCheckpoint): Promise<RunCheckpoint>;
34
+ clear(expectedRevision?: number): Promise<void>;
35
+ restore<TContext, TAgent extends Agent<any, any>>(checkpoint: RunCheckpoint, initialAgent: TAgent, agentBundleVersion: string, context?: RunContext<TContext>): Promise<RunState<TContext, TAgent>>;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=checkpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../src/openai-agent/storage/checkpoint.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,KAAK,KAAK,EACV,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAWxD,QAAA,MAAM,yBAAyB,IAAI,CAAC;AAEpC,QAAA,MAAM,4BAA4B,SAAS,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,OAAO,yBAAyB,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;IAC3D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wBAAwB,EAAE,OAAO,4BAA4B,CAAC;IAC9D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,aAAa,EACb,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CACzD,GAAG;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAHxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEL,WAAW,EAAE,MAAM;IAKhD,IAAI,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAI/B,aAAa,CACjB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,aAAa,CAAC;IA2BnB,KAAK,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B/C,OAAO,CAAC,QAAQ,EAAE,MAAM,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACpD,UAAU,EAAE,aAAa,EACzB,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CAsBvC"}