@skaile/workspaces 6.8.0 → 6.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/ai-sdk.js +5 -5
  3. package/dist/{asset-feeds-NU5UOO5F.js → asset-feeds-JWRIWLVX.js} +19 -19
  4. package/dist/{asset-feeds-NU5UOO5F.js.map → asset-feeds-JWRIWLVX.js.map} +1 -1
  5. package/dist/asset-manager/catalog-deployer.js +4 -4
  6. package/dist/asset-manager/history.js +19 -1
  7. package/dist/asset-manager/index.js +11 -11
  8. package/dist/asset-manager/installer.js +7 -7
  9. package/dist/asset-manager/renderers.js +6 -6
  10. package/dist/asset-manager/src/history.d.ts.map +1 -1
  11. package/dist/asset-manager/src/index.d.ts +65 -3
  12. package/dist/asset-manager/src/index.d.ts.map +1 -1
  13. package/dist/bridge/harnesses/claude-sdk.js +9 -9
  14. package/dist/bridge/harnesses/codex.js +29 -12
  15. package/dist/bridge/harnesses/codex.js.map +1 -1
  16. package/dist/bridge/harnesses/continue.js +8 -8
  17. package/dist/bridge/harnesses/echo.js +3 -3
  18. package/dist/bridge/harnesses/gemini.js +8 -8
  19. package/dist/bridge/harnesses/goose.js +8 -8
  20. package/dist/bridge/harnesses/omp.js +156 -24
  21. package/dist/bridge/harnesses/omp.js.map +1 -1
  22. package/dist/bridge/harnesses/opencode.js +8 -8
  23. package/dist/bridge/harnesses/qwen.js +8 -8
  24. package/dist/bridge/index.js +14 -14
  25. package/dist/bridge/src/codex/friendly-error.d.ts +7 -1
  26. package/dist/bridge/src/codex/friendly-error.d.ts.map +1 -1
  27. package/dist/bridge/src/codex/login-fallback.d.ts +5 -0
  28. package/dist/bridge/src/codex/login-fallback.d.ts.map +1 -1
  29. package/dist/bridge/src/harnesses/codex.d.ts +2 -0
  30. package/dist/bridge/src/harnesses/codex.d.ts.map +1 -1
  31. package/dist/bridge/src/harnesses/omp.d.ts +17 -0
  32. package/dist/bridge/src/harnesses/omp.d.ts.map +1 -1
  33. package/dist/{chunk-757G6TTZ.js → chunk-23Q5LT4U.js} +331 -59
  34. package/dist/chunk-23Q5LT4U.js.map +1 -0
  35. package/dist/{chunk-SBNUXJ6E.js → chunk-3AIEJSQR.js} +3 -3
  36. package/dist/{chunk-SBNUXJ6E.js.map → chunk-3AIEJSQR.js.map} +1 -1
  37. package/dist/{chunk-KHWGUXSF.js → chunk-3EPRTMXY.js} +5 -5
  38. package/dist/{chunk-KHWGUXSF.js.map → chunk-3EPRTMXY.js.map} +1 -1
  39. package/dist/{chunk-TMJBEGS4.js → chunk-4KPQ6ILH.js} +5 -34
  40. package/dist/chunk-4KPQ6ILH.js.map +1 -0
  41. package/dist/{chunk-G7NMF5WQ.js → chunk-4ROXSQEG.js} +3 -3
  42. package/dist/{chunk-G7NMF5WQ.js.map → chunk-4ROXSQEG.js.map} +1 -1
  43. package/dist/{chunk-I6XH46Q6.js → chunk-4WB4KSSQ.js} +3 -3
  44. package/dist/{chunk-I6XH46Q6.js.map → chunk-4WB4KSSQ.js.map} +1 -1
  45. package/dist/{chunk-NW7Y5SNK.js → chunk-5AQLCRR7.js} +4 -4
  46. package/dist/{chunk-NW7Y5SNK.js.map → chunk-5AQLCRR7.js.map} +1 -1
  47. package/dist/{chunk-WFK4MUBL.js → chunk-5J6JWGY4.js} +3 -3
  48. package/dist/{chunk-WFK4MUBL.js.map → chunk-5J6JWGY4.js.map} +1 -1
  49. package/dist/{chunk-O5Y7VMVQ.js → chunk-5KWQMCH7.js} +3 -3
  50. package/dist/{chunk-O5Y7VMVQ.js.map → chunk-5KWQMCH7.js.map} +1 -1
  51. package/dist/{chunk-YHNPWSSH.js → chunk-5NTB64PW.js} +45 -13
  52. package/dist/chunk-5NTB64PW.js.map +1 -0
  53. package/dist/{chunk-QGA2OBUJ.js → chunk-72BDCGBB.js} +3 -3
  54. package/dist/{chunk-QGA2OBUJ.js.map → chunk-72BDCGBB.js.map} +1 -1
  55. package/dist/{chunk-KTBKW2FI.js → chunk-7QYBKUAS.js} +4 -3
  56. package/dist/chunk-7QYBKUAS.js.map +1 -0
  57. package/dist/{chunk-E3KABQS3.js → chunk-AERQFD6T.js} +4 -4
  58. package/dist/{chunk-E3KABQS3.js.map → chunk-AERQFD6T.js.map} +1 -1
  59. package/dist/{chunk-XIIIGLSL.js → chunk-AVRTZAH2.js} +9 -9
  60. package/dist/{chunk-XIIIGLSL.js.map → chunk-AVRTZAH2.js.map} +1 -1
  61. package/dist/{chunk-2I5HNM7K.js → chunk-B2DGCYVC.js} +18 -18
  62. package/dist/chunk-B2DGCYVC.js.map +1 -0
  63. package/dist/{chunk-3QX2X77G.js → chunk-C7L5MFUL.js} +3 -3
  64. package/dist/{chunk-3QX2X77G.js.map → chunk-C7L5MFUL.js.map} +1 -1
  65. package/dist/{chunk-ORXV3UB6.js → chunk-CFTTXUM2.js} +3 -3
  66. package/dist/{chunk-ORXV3UB6.js.map → chunk-CFTTXUM2.js.map} +1 -1
  67. package/dist/{chunk-DRHJRTAS.js → chunk-DZRN3SNG.js} +5 -5
  68. package/dist/{chunk-DRHJRTAS.js.map → chunk-DZRN3SNG.js.map} +1 -1
  69. package/dist/{chunk-QCR5AE5E.js → chunk-E675QKFG.js} +5 -5
  70. package/dist/{chunk-QCR5AE5E.js.map → chunk-E675QKFG.js.map} +1 -1
  71. package/dist/{chunk-O7ADRMCR.js → chunk-FZO64PLQ.js} +45 -16
  72. package/dist/chunk-FZO64PLQ.js.map +1 -0
  73. package/dist/{chunk-Y6LC5PEZ.js → chunk-GYBDWW6K.js} +14 -5
  74. package/dist/chunk-GYBDWW6K.js.map +1 -0
  75. package/dist/{chunk-CMXDFTA2.js → chunk-GYPPVANR.js} +3 -3
  76. package/dist/{chunk-CMXDFTA2.js.map → chunk-GYPPVANR.js.map} +1 -1
  77. package/dist/{chunk-G44FFUMA.js → chunk-GZL6RN4Z.js} +92 -14
  78. package/dist/chunk-GZL6RN4Z.js.map +1 -0
  79. package/dist/{chunk-DFP476EU.js → chunk-JY2JXCL6.js} +89 -4
  80. package/dist/chunk-JY2JXCL6.js.map +1 -0
  81. package/dist/{chunk-ZBA4P5TD.js → chunk-LMADWO4Q.js} +9 -6
  82. package/dist/chunk-LMADWO4Q.js.map +1 -0
  83. package/dist/{chunk-3HSLJAMJ.js → chunk-LYVLDGML.js} +3 -3
  84. package/dist/{chunk-3HSLJAMJ.js.map → chunk-LYVLDGML.js.map} +1 -1
  85. package/dist/{chunk-YZD7DUEF.js → chunk-M4G2SVXI.js} +3 -3
  86. package/dist/{chunk-YZD7DUEF.js.map → chunk-M4G2SVXI.js.map} +1 -1
  87. package/dist/{chunk-SGI5MRKP.js → chunk-MDCI4RSG.js} +40 -5
  88. package/dist/chunk-MDCI4RSG.js.map +1 -0
  89. package/dist/{chunk-LJ6PLEDU.js → chunk-MPRWVZXF.js} +316 -51
  90. package/dist/chunk-MPRWVZXF.js.map +1 -0
  91. package/dist/{chunk-KO3VSZQP.js → chunk-NDBHEOIA.js} +6 -6
  92. package/dist/{chunk-KO3VSZQP.js.map → chunk-NDBHEOIA.js.map} +1 -1
  93. package/dist/{chunk-HKRME377.js → chunk-NJVHGS7X.js} +4 -4
  94. package/dist/{chunk-HKRME377.js.map → chunk-NJVHGS7X.js.map} +1 -1
  95. package/dist/{chunk-Q6FKWPRO.js → chunk-O3FYOS64.js} +93 -14
  96. package/dist/chunk-O3FYOS64.js.map +1 -0
  97. package/dist/{chunk-RDIGVPXX.js → chunk-PTJZCOBH.js} +2 -2
  98. package/dist/{chunk-RDIGVPXX.js.map → chunk-PTJZCOBH.js.map} +1 -1
  99. package/dist/{chunk-4CD2R4MJ.js → chunk-QBUJTVMY.js} +4 -4
  100. package/dist/{chunk-4CD2R4MJ.js.map → chunk-QBUJTVMY.js.map} +1 -1
  101. package/dist/{chunk-LL5GMUQG.js → chunk-SE6OL7Y5.js} +7 -7
  102. package/dist/{chunk-LL5GMUQG.js.map → chunk-SE6OL7Y5.js.map} +1 -1
  103. package/dist/{chunk-SILFO5RY.js → chunk-SQMDFM4N.js} +2 -2
  104. package/dist/{chunk-SILFO5RY.js.map → chunk-SQMDFM4N.js.map} +1 -1
  105. package/dist/{chunk-REAF7ZFA.js → chunk-T5EIWWEJ.js} +398 -36
  106. package/dist/chunk-T5EIWWEJ.js.map +1 -0
  107. package/dist/{chunk-QW5B3TEO.js → chunk-TMQFOJ6F.js} +3 -3
  108. package/dist/{chunk-QW5B3TEO.js.map → chunk-TMQFOJ6F.js.map} +1 -1
  109. package/dist/{chunk-BB5EJLKZ.js → chunk-TUOHA6BM.js} +2 -2
  110. package/dist/{chunk-BB5EJLKZ.js.map → chunk-TUOHA6BM.js.map} +1 -1
  111. package/dist/{chunk-HLAEYFUN.js → chunk-U3FI4DVT.js} +3 -3
  112. package/dist/{chunk-HLAEYFUN.js.map → chunk-U3FI4DVT.js.map} +1 -1
  113. package/dist/{chunk-237BMOZW.js → chunk-UWD7YBDR.js} +4 -4
  114. package/dist/{chunk-237BMOZW.js.map → chunk-UWD7YBDR.js.map} +1 -1
  115. package/dist/{chunk-6ZM5X2XW.js → chunk-V2CONXKD.js} +3 -3
  116. package/dist/{chunk-6ZM5X2XW.js.map → chunk-V2CONXKD.js.map} +1 -1
  117. package/dist/{chunk-3NJFPGEB.js → chunk-V3EJYOP2.js} +6 -6
  118. package/dist/{chunk-3NJFPGEB.js.map → chunk-V3EJYOP2.js.map} +1 -1
  119. package/dist/{chunk-K7ZGY2BY.js → chunk-WPLZGT5Z.js} +4095 -3888
  120. package/dist/chunk-WPLZGT5Z.js.map +1 -0
  121. package/dist/{chunk-VT6G5AJV.js → chunk-WS3BOCAT.js} +4 -3
  122. package/dist/chunk-WS3BOCAT.js.map +1 -0
  123. package/dist/{chunk-7YOHUX2M.js → chunk-X2B5GMJO.js} +18 -9
  124. package/dist/chunk-X2B5GMJO.js.map +1 -0
  125. package/dist/{chunk-YGP6XEPA.js → chunk-XPKUFOS3.js} +6 -6
  126. package/dist/{chunk-YGP6XEPA.js.map → chunk-XPKUFOS3.js.map} +1 -1
  127. package/dist/{chunk-XCGDRLMH.js → chunk-Y242OE4B.js} +3 -3
  128. package/dist/{chunk-XCGDRLMH.js.map → chunk-Y242OE4B.js.map} +1 -1
  129. package/dist/{chunk-K6HCOTOZ.js → chunk-Y2BQWZXT.js} +41 -35
  130. package/dist/chunk-Y2BQWZXT.js.map +1 -0
  131. package/dist/{chunk-5TLMHB2U.js → chunk-YGT3CGPD.js} +6 -3
  132. package/dist/chunk-YGT3CGPD.js.map +1 -0
  133. package/dist/{claude-code-AESK7XO4.js → claude-code-YRJIGXTL.js} +5 -5
  134. package/dist/{claude-code-AESK7XO4.js.map → claude-code-YRJIGXTL.js.map} +1 -1
  135. package/dist/cli/index.js +277 -143
  136. package/dist/cli/index.js.map +1 -1
  137. package/dist/cli/src/agent-pins.d.ts +8 -0
  138. package/dist/cli/src/agent-pins.d.ts.map +1 -1
  139. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  140. package/dist/cli/src/commands/catalog.d.ts +4 -4
  141. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  142. package/dist/cli/src/commands/connector.d.ts.map +1 -1
  143. package/dist/cli/src/commands/deploy.d.ts.map +1 -1
  144. package/dist/cli/src/commands/flow.d.ts.map +1 -1
  145. package/dist/cli/src/commands/harness.d.ts.map +1 -1
  146. package/dist/cli/src/commands/integration.d.ts.map +1 -1
  147. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  148. package/dist/cli/src/commands/library-index.d.ts +42 -0
  149. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  150. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  151. package/dist/cli/src/commands/npx.d.ts.map +1 -1
  152. package/dist/cli/src/commands/patch.d.ts.map +1 -1
  153. package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
  154. package/dist/cli/src/commands/project.d.ts.map +1 -1
  155. package/dist/cli/src/commands/run.d.ts.map +1 -1
  156. package/dist/cli/src/commands/serve-preflight.d.ts +10 -0
  157. package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
  158. package/dist/cli/src/commands/serve.d.ts +5 -3
  159. package/dist/cli/src/commands/serve.d.ts.map +1 -1
  160. package/dist/cli/src/commands/session.d.ts.map +1 -1
  161. package/dist/cli/src/commands/source.d.ts.map +1 -1
  162. package/dist/cli/src/commands/store.d.ts.map +1 -1
  163. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  164. package/dist/cli/src/config-checks.d.ts +13 -0
  165. package/dist/cli/src/config-checks.d.ts.map +1 -1
  166. package/dist/cli/src/group-help.d.ts +11 -0
  167. package/dist/cli/src/group-help.d.ts.map +1 -0
  168. package/dist/connectors/config.js +2 -2
  169. package/dist/connectors/index.js +17 -17
  170. package/dist/connectors/src/config.d.ts.map +1 -1
  171. package/dist/connectors/src/connector-manager.d.ts +66 -2
  172. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  173. package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
  174. package/dist/connectors/src/connector-types.d.ts +6 -0
  175. package/dist/connectors/src/connector-types.d.ts.map +1 -1
  176. package/dist/connectors/src/fleet-utils.d.ts +33 -0
  177. package/dist/connectors/src/fleet-utils.d.ts.map +1 -1
  178. package/dist/connectors/src/index.d.ts +2 -2
  179. package/dist/connectors/src/index.d.ts.map +1 -1
  180. package/dist/{connectors-5ZZRVAPD.js → connectors-JKT32HZT.js} +20 -20
  181. package/dist/{connectors-5ZZRVAPD.js.map → connectors-JKT32HZT.js.map} +1 -1
  182. package/dist/core/index.js +4 -4
  183. package/dist/core/logging.js +1 -1
  184. package/dist/core/runtime-assets.js +2 -2
  185. package/dist/core/src/index.d.ts +1 -1
  186. package/dist/core/src/index.d.ts.map +1 -1
  187. package/dist/core/src/logging/config.d.ts.map +1 -1
  188. package/dist/core/src/repo-manager.d.ts +6 -0
  189. package/dist/core/src/repo-manager.d.ts.map +1 -1
  190. package/dist/core/src/run-state-ignore.d.ts +6 -4
  191. package/dist/core/src/run-state-ignore.d.ts.map +1 -1
  192. package/dist/core/src/walker.d.ts.map +1 -1
  193. package/dist/core/src/workspace-config.d.ts +6 -0
  194. package/dist/core/src/workspace-config.d.ts.map +1 -1
  195. package/dist/core/workspace-config.js +1 -1
  196. package/dist/deploy/index.js +4 -4
  197. package/dist/discovery/index.js +2 -2
  198. package/dist/{ensure-sources-VLJ7AUUK.js → ensure-sources-GUJODKY5.js} +23 -23
  199. package/dist/{ensure-sources-VLJ7AUUK.js.map → ensure-sources-GUJODKY5.js.map} +1 -1
  200. package/dist/factory-assets/connectors/box.js +17 -17
  201. package/dist/factory-assets/connectors/deploy.js +17 -17
  202. package/dist/factory-assets/connectors/devserver.js +17 -17
  203. package/dist/factory-assets/connectors/flow/adapter.js +17 -17
  204. package/dist/factory-assets/connectors/flow/engine.js +5 -5
  205. package/dist/factory-assets/connectors/flow/run-flow.js +18 -18
  206. package/dist/factory-assets/connectors/flow.js +17 -17
  207. package/dist/factory-assets/connectors/git.js +17 -17
  208. package/dist/factory-assets/connectors/gmail.js +17 -17
  209. package/dist/factory-assets/connectors/googledrive.js +17 -17
  210. package/dist/factory-assets/connectors/local.js +17 -17
  211. package/dist/factory-assets/connectors/mattermost.js +17 -17
  212. package/dist/factory-assets/connectors/memory.js +17 -17
  213. package/dist/factory-assets/connectors/minio.js +17 -17
  214. package/dist/factory-assets/connectors/postgres.js +17 -17
  215. package/dist/factory-assets/connectors/s3.js +17 -17
  216. package/dist/factory-assets/connectors/sharepoint.js +17 -17
  217. package/dist/factory-assets/connectors/sqlite.js +17 -17
  218. package/dist/factory-assets/connectors/static-server.js +17 -17
  219. package/dist/factory-assets/connectors/tunnel.js +17 -17
  220. package/dist/factory-assets/connectors/webdav.js +17 -17
  221. package/dist/factory-assets/connectors/xstate-store.js +17 -17
  222. package/dist/factory-assets/connectors/xstate.js +17 -17
  223. package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +4 -4
  224. package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +10 -10
  225. package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +15 -15
  226. package/dist/factory-assets/skills/manifest-compliance/SKILL.md +1 -1
  227. package/dist/{flows-I6ODIPZZ.js → flows-UCP6ZUYS.js} +7 -7
  228. package/dist/{flows-I6ODIPZZ.js.map → flows-UCP6ZUYS.js.map} +1 -1
  229. package/dist/{helpers-APXGTZ5A.js → helpers-SO53MRHF.js} +23 -23
  230. package/dist/{helpers-APXGTZ5A.js.map → helpers-SO53MRHF.js.map} +1 -1
  231. package/dist/library/index.js +7 -7
  232. package/dist/library/src/index.d.ts +1 -1
  233. package/dist/library/src/index.d.ts.map +1 -1
  234. package/dist/library/src/remote/index.d.ts +1 -1
  235. package/dist/library/src/remote/index.d.ts.map +1 -1
  236. package/dist/library/src/remote/remote-catalog-source.d.ts +33 -2
  237. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  238. package/dist/{library-publish-B5HL4OBE.js → library-publish-Z5E3YZCZ.js} +61 -47
  239. package/dist/library-publish-Z5E3YZCZ.js.map +1 -0
  240. package/dist/model-endpoint/index.js +7 -7
  241. package/dist/model-endpoint/src/index.d.ts +1 -1
  242. package/dist/model-endpoint/src/index.d.ts.map +1 -1
  243. package/dist/model-endpoint/src/openai-agent.d.ts +60 -0
  244. package/dist/model-endpoint/src/openai-agent.d.ts.map +1 -0
  245. package/dist/model-endpoint/src/resolve.d.ts +12 -3
  246. package/dist/model-endpoint/src/resolve.d.ts.map +1 -1
  247. package/dist/model-endpoint/src/server.d.ts.map +1 -1
  248. package/dist/model-endpoint/src/types.d.ts +33 -0
  249. package/dist/model-endpoint/src/types.d.ts.map +1 -1
  250. package/dist/model-endpoint/src/upstream-models.d.ts +20 -0
  251. package/dist/model-endpoint/src/upstream-models.d.ts.map +1 -0
  252. package/dist/{open-library-F56D46K7.js → open-library-A5OB72FD.js} +26 -26
  253. package/dist/{open-library-F56D46K7.js.map → open-library-A5OB72FD.js.map} +1 -1
  254. package/dist/{open-registry-RZW2AFD6.js → open-registry-BHBHQMBA.js} +11 -11
  255. package/dist/{open-registry-RZW2AFD6.js.map → open-registry-BHBHQMBA.js.map} +1 -1
  256. package/dist/{paths-RPK5PNZQ.js → paths-77PXOXZY.js} +7 -7
  257. package/dist/{paths-RPK5PNZQ.js.map → paths-77PXOXZY.js.map} +1 -1
  258. package/dist/{plugin-store-OJTERUEZ.js → plugin-store-XQP2CRYH.js} +7 -7
  259. package/dist/{plugin-store-OJTERUEZ.js.map → plugin-store-XQP2CRYH.js.map} +1 -1
  260. package/dist/{project-GLTP6VFV.js → project-KTEUN7KR.js} +39 -40
  261. package/dist/{project-GLTP6VFV.js.map → project-KTEUN7KR.js.map} +1 -1
  262. package/dist/resolver/index.js +4 -4
  263. package/dist/runner/index.js +28 -28
  264. package/dist/runner/src/agent-loop.d.ts +42 -0
  265. package/dist/runner/src/agent-loop.d.ts.map +1 -0
  266. package/dist/runner/src/agents/in-process-host.d.ts +9 -6
  267. package/dist/runner/src/agents/in-process-host.d.ts.map +1 -1
  268. package/dist/runner/src/model-endpoint-discovery.d.ts +3 -0
  269. package/dist/runner/src/model-endpoint-discovery.d.ts.map +1 -1
  270. package/dist/runner/src/resource-handler.d.ts +1 -1
  271. package/dist/runner/src/resource-handler.d.ts.map +1 -1
  272. package/dist/runner/src/resources.d.ts +1 -0
  273. package/dist/runner/src/resources.d.ts.map +1 -1
  274. package/dist/runner/src/serve.d.ts.map +1 -1
  275. package/dist/runner/src/session-builder.d.ts +6 -4
  276. package/dist/runner/src/session-builder.d.ts.map +1 -1
  277. package/dist/runner/src/session-resource-handlers.d.ts.map +1 -1
  278. package/dist/runner/src/turn-scheduler.d.ts +29 -2
  279. package/dist/runner/src/turn-scheduler.d.ts.map +1 -1
  280. package/dist/sdk/asset-manager.js +11 -11
  281. package/dist/sdk/bridge.js +14 -14
  282. package/dist/sdk/core.js +4 -4
  283. package/dist/sdk/flow.js +5 -5
  284. package/dist/sdk/index.js +28 -28
  285. package/dist/sdk/resolver.js +4 -4
  286. package/dist/sdk/runner.js +28 -28
  287. package/dist/sdk/transport/ws/server.js +5 -5
  288. package/dist/sdk/transport/ws.js +5 -5
  289. package/dist/sdk/transport.js +5 -5
  290. package/dist/{serve-preflight-EHLBSNUE.js → serve-preflight-ODQGVUFL.js} +27 -26
  291. package/dist/{serve-preflight-EHLBSNUE.js.map → serve-preflight-ODQGVUFL.js.map} +1 -1
  292. package/dist/{setup-PMZLMFCD.js → setup-QJDI5YAW.js} +24 -24
  293. package/dist/{setup-PMZLMFCD.js.map → setup-QJDI5YAW.js.map} +1 -1
  294. package/dist/{skills-KHHW3RZ3.js → skills-DE2BDQ6G.js} +6 -6
  295. package/dist/{skills-KHHW3RZ3.js.map → skills-DE2BDQ6G.js.map} +1 -1
  296. package/dist/{source-QNSGAM3S.js → source-FKOUYMEM.js} +39 -39
  297. package/dist/{source-QNSGAM3S.js.map → source-FKOUYMEM.js.map} +1 -1
  298. package/dist/{source-manifest-publish-AI725AVE.js → source-manifest-publish-JA4TY4Z6.js} +41 -41
  299. package/dist/{source-manifest-publish-AI725AVE.js.map → source-manifest-publish-JA4TY4Z6.js.map} +1 -1
  300. package/dist/transport/index.js +5 -5
  301. package/dist/transport/ws/server.js +5 -5
  302. package/dist/transport/ws.js +5 -5
  303. package/dist/tui/index.js +29 -29
  304. package/dist/tui/index.js.map +1 -1
  305. package/dist/tui/src/repl.d.ts.map +1 -1
  306. package/dist/types/manifests.js +1 -1
  307. package/dist/types/src/manifests/scaffold-body.d.ts +1 -1
  308. package/dist/types/src/manifests/scaffold-body.d.ts.map +1 -1
  309. package/dist/workspace-plugin/adapters/mcp.js +20 -20
  310. package/dist/workspace-plugin/adapters/omp.js +14 -14
  311. package/dist/workspace-plugin/index.js +2 -2
  312. package/dist/workspace-plugin/src/tools/connectors.d.ts.map +1 -1
  313. package/package.json +1 -1
  314. package/dist/chunk-2I5HNM7K.js.map +0 -1
  315. package/dist/chunk-5TLMHB2U.js.map +0 -1
  316. package/dist/chunk-757G6TTZ.js.map +0 -1
  317. package/dist/chunk-7YOHUX2M.js.map +0 -1
  318. package/dist/chunk-DFP476EU.js.map +0 -1
  319. package/dist/chunk-G44FFUMA.js.map +0 -1
  320. package/dist/chunk-K6HCOTOZ.js.map +0 -1
  321. package/dist/chunk-K7ZGY2BY.js.map +0 -1
  322. package/dist/chunk-KTBKW2FI.js.map +0 -1
  323. package/dist/chunk-LJ6PLEDU.js.map +0 -1
  324. package/dist/chunk-O7ADRMCR.js.map +0 -1
  325. package/dist/chunk-PMZMG3HC.js +0 -83
  326. package/dist/chunk-PMZMG3HC.js.map +0 -1
  327. package/dist/chunk-Q6FKWPRO.js.map +0 -1
  328. package/dist/chunk-REAF7ZFA.js.map +0 -1
  329. package/dist/chunk-SGI5MRKP.js.map +0 -1
  330. package/dist/chunk-TMJBEGS4.js.map +0 -1
  331. package/dist/chunk-VT6G5AJV.js.map +0 -1
  332. package/dist/chunk-Y6LC5PEZ.js.map +0 -1
  333. package/dist/chunk-YHNPWSSH.js.map +0 -1
  334. package/dist/chunk-ZBA4P5TD.js.map +0 -1
  335. package/dist/library-publish-B5HL4OBE.js.map +0 -1
@@ -1,20 +1,20 @@
1
1
  import { harnessSessionConfigHome, removeSessionConfigFile, writeSessionConfigFile } from '../../chunk-NBAGV6L2.js';
2
- import { SubprocessCliHarness, extractText, extractCost, extractTokens } from '../../chunk-QGA2OBUJ.js';
2
+ import { SubprocessCliHarness, extractText, extractCost, extractTokens } from '../../chunk-72BDCGBB.js';
3
3
  import { HARNESS_BINARIES } from '../../chunk-WWSRIT3J.js';
4
- import { resolveEnvHarnessSession, continueRoleBinding, credentialsForEveryProvider, registryModelEntries, selectableEntries, entrySurface, harnessProviderName, entryBaseUrl, versionedAnthropicBaseUrl } from '../../chunk-I6XH46Q6.js';
4
+ import { resolveEnvHarnessSession, continueRoleBinding, credentialsForEveryProvider, registryModelEntries, selectableEntries, entrySurface, harnessProviderName, entryBaseUrl, versionedAnthropicBaseUrl } from '../../chunk-4WB4KSSQ.js';
5
5
  import '../../chunk-5DE3DGVR.js';
6
6
  import '../../chunk-7DN6JKP2.js';
7
- import { getBridgeLogger, registryHarnessConfig } from '../../chunk-ORXV3UB6.js';
8
- import { BUILTIN_HARNESS_CATALOG, entryCredentialValue, providerCredentialEnvName } from '../../chunk-SILFO5RY.js';
7
+ import { getBridgeLogger, registryHarnessConfig } from '../../chunk-CFTTXUM2.js';
8
+ import { BUILTIN_HARNESS_CATALOG, entryCredentialValue, providerCredentialEnvName } from '../../chunk-SQMDFM4N.js';
9
9
  import '../../chunk-G5SUWZEU.js';
10
10
  import '../../chunk-6UP2EDFN.js';
11
- import '../../chunk-TMJBEGS4.js';
11
+ import '../../chunk-4KPQ6ILH.js';
12
12
  import '../../chunk-4GY63JU6.js';
13
- import '../../chunk-G7NMF5WQ.js';
13
+ import '../../chunk-4ROXSQEG.js';
14
14
  import '../../chunk-5KRMNUL4.js';
15
15
  import '../../chunk-C5HFK34M.js';
16
16
  import '../../chunk-MWXYN6NY.js';
17
- import '../../chunk-O7ADRMCR.js';
17
+ import '../../chunk-FZO64PLQ.js';
18
18
  import '../../chunk-L5VSIPQD.js';
19
19
  import '../../chunk-VTETQCR6.js';
20
20
  import '../../chunk-QC5BYUED.js';
@@ -23,7 +23,7 @@ import '../../chunk-RVRB27AN.js';
23
23
  import '../../chunk-V5KG6CCV.js';
24
24
  import '../../chunk-VSX2G7LA.js';
25
25
  import { parseModelRef } from '../../chunk-RXGPFAMN.js';
26
- import '../../chunk-SGI5MRKP.js';
26
+ import '../../chunk-MDCI4RSG.js';
27
27
  import '../../chunk-C3CAXQMA.js';
28
28
  import '../../chunk-BOFL7GIF.js';
29
29
  import '../../chunk-NSBPE2FW.js';
@@ -1,12 +1,12 @@
1
1
  import { dispatchCapability } from '../../chunk-YEOG7CWQ.js';
2
- import { AgentHarness, getBridgeLogger, registryHarnessConfig } from '../../chunk-ORXV3UB6.js';
3
- import { BUILTIN_HARNESS_CATALOG } from '../../chunk-SILFO5RY.js';
2
+ import { AgentHarness, getBridgeLogger, registryHarnessConfig } from '../../chunk-CFTTXUM2.js';
3
+ import { BUILTIN_HARNESS_CATALOG } from '../../chunk-SQMDFM4N.js';
4
4
  import '../../chunk-G5SUWZEU.js';
5
5
  import '../../chunk-6UP2EDFN.js';
6
6
  import '../../chunk-7NN3P6VF.js';
7
7
  import '../../chunk-VSX2G7LA.js';
8
8
  import '../../chunk-RXGPFAMN.js';
9
- import '../../chunk-SGI5MRKP.js';
9
+ import '../../chunk-MDCI4RSG.js';
10
10
  import '../../chunk-C3CAXQMA.js';
11
11
  import '../../chunk-BOFL7GIF.js';
12
12
  import '../../chunk-NSBPE2FW.js';
@@ -1,18 +1,18 @@
1
- export { GeminiFamilyHarness, GeminiHarness, geminiHarnessTarget } from '../../chunk-LL5GMUQG.js';
2
- import '../../chunk-QGA2OBUJ.js';
3
- import '../../chunk-SBNUXJ6E.js';
1
+ export { GeminiFamilyHarness, GeminiHarness, geminiHarnessTarget } from '../../chunk-SE6OL7Y5.js';
2
+ import '../../chunk-72BDCGBB.js';
3
+ import '../../chunk-3AIEJSQR.js';
4
4
  import '../../chunk-WWSRIT3J.js';
5
- import '../../chunk-I6XH46Q6.js';
5
+ import '../../chunk-4WB4KSSQ.js';
6
6
  import '../../chunk-5DE3DGVR.js';
7
7
  import '../../chunk-7DN6JKP2.js';
8
- import '../../chunk-ORXV3UB6.js';
9
- import '../../chunk-SILFO5RY.js';
8
+ import '../../chunk-CFTTXUM2.js';
9
+ import '../../chunk-SQMDFM4N.js';
10
10
  import '../../chunk-G5SUWZEU.js';
11
11
  import '../../chunk-6UP2EDFN.js';
12
- import '../../chunk-VT6G5AJV.js';
12
+ import '../../chunk-WS3BOCAT.js';
13
13
  import '../../chunk-VSX2G7LA.js';
14
14
  import '../../chunk-RXGPFAMN.js';
15
- import '../../chunk-SGI5MRKP.js';
15
+ import '../../chunk-MDCI4RSG.js';
16
16
  import '../../chunk-C3CAXQMA.js';
17
17
  import '../../chunk-BOFL7GIF.js';
18
18
  import '../../chunk-NSBPE2FW.js';
@@ -1,20 +1,20 @@
1
1
  import { harnessSessionConfigHome, pruneSessionConfigDir, writeSessionConfigFile } from '../../chunk-NBAGV6L2.js';
2
- import { SubprocessCliHarness, extractText, extractCost, extractTokens } from '../../chunk-QGA2OBUJ.js';
2
+ import { SubprocessCliHarness, extractText, extractCost, extractTokens } from '../../chunk-72BDCGBB.js';
3
3
  import { HARNESS_BINARIES } from '../../chunk-WWSRIT3J.js';
4
- import { resolveEnvHarnessSession, resolveRegistryBinding, credentialsForEveryProvider, registryModelEntries, selectableEntries, isStockCatalogEndpoint, entrySurface, entryBaseUrl, entryModelIds } from '../../chunk-I6XH46Q6.js';
4
+ import { resolveEnvHarnessSession, resolveRegistryBinding, credentialsForEveryProvider, registryModelEntries, selectableEntries, isStockCatalogEndpoint, entrySurface, entryBaseUrl, entryModelIds } from '../../chunk-4WB4KSSQ.js';
5
5
  import '../../chunk-5DE3DGVR.js';
6
6
  import '../../chunk-7DN6JKP2.js';
7
- import { getBridgeLogger, registryHarnessConfig } from '../../chunk-ORXV3UB6.js';
8
- import { BUILTIN_HARNESS_CATALOG, providerCredentialEnvName } from '../../chunk-SILFO5RY.js';
7
+ import { getBridgeLogger, registryHarnessConfig } from '../../chunk-CFTTXUM2.js';
8
+ import { BUILTIN_HARNESS_CATALOG, providerCredentialEnvName } from '../../chunk-SQMDFM4N.js';
9
9
  import '../../chunk-G5SUWZEU.js';
10
10
  import '../../chunk-6UP2EDFN.js';
11
- import '../../chunk-TMJBEGS4.js';
11
+ import '../../chunk-4KPQ6ILH.js';
12
12
  import '../../chunk-4GY63JU6.js';
13
- import '../../chunk-G7NMF5WQ.js';
13
+ import '../../chunk-4ROXSQEG.js';
14
14
  import '../../chunk-5KRMNUL4.js';
15
15
  import '../../chunk-C5HFK34M.js';
16
16
  import '../../chunk-MWXYN6NY.js';
17
- import '../../chunk-O7ADRMCR.js';
17
+ import '../../chunk-FZO64PLQ.js';
18
18
  import '../../chunk-L5VSIPQD.js';
19
19
  import '../../chunk-VTETQCR6.js';
20
20
  import '../../chunk-QC5BYUED.js';
@@ -23,7 +23,7 @@ import '../../chunk-RVRB27AN.js';
23
23
  import '../../chunk-V5KG6CCV.js';
24
24
  import '../../chunk-VSX2G7LA.js';
25
25
  import '../../chunk-RXGPFAMN.js';
26
- import '../../chunk-SGI5MRKP.js';
26
+ import '../../chunk-MDCI4RSG.js';
27
27
  import '../../chunk-C3CAXQMA.js';
28
28
  import '../../chunk-BOFL7GIF.js';
29
29
  import '../../chunk-NSBPE2FW.js';
@@ -1,18 +1,18 @@
1
1
  import { checkToolInputSchema } from '../../chunk-3X7VTCPG.js';
2
- import { materializeOmpProviders, isCredentialOmissionWarning, materializeOmpIdentityDir, registryModelEntries } from '../../chunk-NW7Y5SNK.js';
2
+ import { materializeOmpProviders, isCredentialOmissionWarning, materializeOmpIdentityDir, registryModelEntries } from '../../chunk-5AQLCRR7.js';
3
3
  import { dispatchCapability } from '../../chunk-YEOG7CWQ.js';
4
4
  import { HARNESS_BINARIES } from '../../chunk-WWSRIT3J.js';
5
- import '../../chunk-I6XH46Q6.js';
5
+ import '../../chunk-4WB4KSSQ.js';
6
6
  import { RUNNER_AGENT_ENV_KEYS, ReconfigureLedger, stripRunnerPrivateEnv, classifyGenericErrorMessage } from '../../chunk-5DE3DGVR.js';
7
7
  import { wrapAgentCommand, resolveAgentExec } from '../../chunk-7DN6JKP2.js';
8
- import { AgentHarness, getBridgeLogger, TOOL_ALLOWLIST_UNSUPPORTED, registryHarnessConfig } from '../../chunk-ORXV3UB6.js';
9
- import { BUILTIN_HARNESS_CATALOG } from '../../chunk-SILFO5RY.js';
8
+ import { AgentHarness, getBridgeLogger, TOOL_ALLOWLIST_UNSUPPORTED, registryHarnessConfig } from '../../chunk-CFTTXUM2.js';
9
+ import { BUILTIN_HARNESS_CATALOG } from '../../chunk-SQMDFM4N.js';
10
10
  import '../../chunk-G5SUWZEU.js';
11
11
  import '../../chunk-6UP2EDFN.js';
12
12
  import { withActivityLabelJsonSchema } from '../../chunk-7NN3P6VF.js';
13
13
  import '../../chunk-VSX2G7LA.js';
14
14
  import '../../chunk-RXGPFAMN.js';
15
- import '../../chunk-SGI5MRKP.js';
15
+ import '../../chunk-MDCI4RSG.js';
16
16
  import '../../chunk-C3CAXQMA.js';
17
17
  import '../../chunk-BOFL7GIF.js';
18
18
  import '../../chunk-NSBPE2FW.js';
@@ -184,6 +184,35 @@ function ompStartFailureCause(lines) {
184
184
  }
185
185
  return clean.at(-1) ?? "";
186
186
  }
187
+ var KILLED_EXIT_WAIT_MS = 5e3;
188
+ var EarlyOmpExit = class extends Error {
189
+ constructor(code, signal) {
190
+ super(`omp process crashed (exit code ${code})`);
191
+ this.code = code;
192
+ this.signal = signal;
193
+ }
194
+ code;
195
+ signal;
196
+ };
197
+ function removeHomeAfterExit(proc, home) {
198
+ let resolve;
199
+ const promise = new Promise((r) => {
200
+ resolve = r;
201
+ });
202
+ const timer = setTimeout(remove, KILLED_EXIT_WAIT_MS);
203
+ timer.unref?.();
204
+ function remove() {
205
+ clearTimeout(timer);
206
+ try {
207
+ rmSync(home, { recursive: true, force: true });
208
+ } catch {
209
+ }
210
+ resolve();
211
+ }
212
+ if (proc.exitCode !== null || proc.signalCode !== null) remove();
213
+ else proc.once("exit", remove);
214
+ return promise;
215
+ }
187
216
  var OmpHarness = class extends AgentHarness {
188
217
  harnessInfo = {
189
218
  id: "omp",
@@ -203,6 +232,11 @@ var OmpHarness = class extends AgentHarness {
203
232
  prevText = "";
204
233
  /** OMP session ID captured via `get_state` after each turn. */
205
234
  _ompSessionId;
235
+ /**
236
+ * The omp session the last unexpected exit left behind, set as `config.resumeSessionId` for
237
+ * the respawn; cleared once a respawn on it fails (the next one starts empty).
238
+ */
239
+ exitResumeSessionId;
206
240
  /**
207
241
  * Usage of the most recent turn, summed over every model call in it (a tool
208
242
  * loop is one prompt but many assistant messages). Cleared when a turn
@@ -221,6 +255,8 @@ var OmpHarness = class extends AgentHarness {
221
255
  systemPromptFile = null;
222
256
  /** The private omp home of the running process, when it is the harness's own temporary one. */
223
257
  privateHome = null;
258
+ /** Settles when the process last killed has exited and its private home is deleted. */
259
+ homeGone = Promise.resolve();
224
260
  getTokenUsage() {
225
261
  return this._lastTokens;
226
262
  }
@@ -271,6 +307,14 @@ var OmpHarness = class extends AgentHarness {
271
307
  promptTail = Promise.resolve();
272
308
  /** `true` while `agent_end` is being delivered to listeners. */
273
309
  turnEnded = false;
310
+ /** `true` once the current turn showed model output (text, a thinking delta or a tool run). */
311
+ turnOutputSeen = false;
312
+ /** `true` once `runPrompt` sent the current prompt a second time after an early exit. */
313
+ promptRetried = false;
314
+ /** `true` once omp recorded the current prompt as a user message in its session. */
315
+ turnUserMessageSeen = false;
316
+ /** Counts `kill()` calls, so a prompt that restarts omp itself can tell it was killed meanwhile. */
317
+ killEpoch = 0;
274
318
  get runtimeSessionId() {
275
319
  return this._ompSessionId;
276
320
  }
@@ -377,9 +421,26 @@ var OmpHarness = class extends AgentHarness {
377
421
  async start() {
378
422
  if (this.startPromise) return this.startPromise;
379
423
  if (this.proc) return;
380
- this.startPromise = this._start().catch((err) => {
424
+ this.startPromise = this._start().then(() => {
425
+ this.exitResumeSessionId = void 0;
426
+ }).catch(async (err) => {
381
427
  this.removeSystemPromptFile();
382
428
  this.removePrivateHome();
429
+ const resumeId = this.exitResumeSessionId;
430
+ if (resumeId !== void 0 && this.config.resumeSessionId === resumeId) {
431
+ this.log.warn("omp did not restart on its previous session; starting a new one", {
432
+ sessionId: resumeId,
433
+ error: err instanceof Error ? err.message : String(err)
434
+ });
435
+ this.exitResumeSessionId = void 0;
436
+ this._ompSessionId = void 0;
437
+ this.config = { ...this.config, resumeSessionId: void 0 };
438
+ return this._start().catch((retryErr) => {
439
+ this.removeSystemPromptFile();
440
+ this.removePrivateHome();
441
+ throw retryErr;
442
+ });
443
+ }
383
444
  throw err;
384
445
  });
385
446
  return this.startPromise;
@@ -497,13 +558,50 @@ var OmpHarness = class extends AgentHarness {
497
558
  }
498
559
  const lastStderr = this.stderrBuffer.slice(-10).join("\n");
499
560
  const crashed = code !== null && code !== 0;
500
- if (crashed) {
561
+ const wasReady = this.ready;
562
+ const betweenTurns = wasReady && this.turnReject === null;
563
+ if (wasReady) {
564
+ const sessionId = this._ompSessionId;
565
+ if (sessionId) {
566
+ this.config = { ...this.config, resumeSessionId: sessionId };
567
+ this.exitResumeSessionId = sessionId;
568
+ }
569
+ if (betweenTurns) {
570
+ this.log.warn("omp exited between turns; it restarts on the next prompt", {
571
+ code,
572
+ signal,
573
+ resumeSessionId: sessionId ?? null,
574
+ stderr: lastStderr || null
575
+ });
576
+ } else if (lastStderr) {
577
+ this.log.warn("omp exited during a turn", { code, signal, stderr: lastStderr });
578
+ }
579
+ }
580
+ const resumeAttempt = !wasReady && this.exitResumeSessionId !== void 0 && this.config.resumeSessionId === this.exitResumeSessionId;
581
+ const wouldDuplicate = this.turnUserMessageSeen && this.config.resumeSessionId !== void 0;
582
+ const retryEarly = (crashed || signal !== null) && wasReady && !betweenTurns && !this.turnOutputSeen && !wouldDuplicate && !this.promptRetried && !resumeAttempt;
583
+ if (retryEarly) {
584
+ this.log.warn("omp exited in a turn before its first output", {
585
+ code,
586
+ signal,
587
+ stderr: lastStderr || null
588
+ });
589
+ } else if (crashed && !betweenTurns && !resumeAttempt) {
590
+ const sessionDir2 = path.join(this.config.cwd, ".omp", "sessions");
501
591
  const detail = {
502
592
  message: `omp process crashed (exit code ${code})${lastStderr ? `: ${lastStderr}` : ""}`,
503
593
  category: "process",
504
594
  retryable: true,
505
- hint: lastStderr || "The agent process exited unexpectedly. Try sending your prompt again."
595
+ hint: lastStderr || `omp exited with code ${code}${signal ? ` (signal ${signal})` : ""} and wrote nothing to stderr; its session files are in ${sessionDir2}. Try sending your prompt again.`
506
596
  };
597
+ if (!lastStderr) {
598
+ this.log.warn("omp exited with no stderr", {
599
+ code,
600
+ signal,
601
+ sessionDir: sessionDir2,
602
+ sessionId: this._ompSessionId ?? null
603
+ });
604
+ }
507
605
  this.emit("agent-event", { type: "error", error: detail.message, detail });
508
606
  }
509
607
  if (!this.ready) {
@@ -521,7 +619,7 @@ var OmpHarness = class extends AgentHarness {
521
619
  }
522
620
  this.cleanup();
523
621
  this.rejectTurn(
524
- new Error(
622
+ retryEarly ? new EarlyOmpExit(code, signal) : new Error(
525
623
  crashed ? `omp process crashed (exit code ${code})` : `omp process exited before the turn completed${signal ? ` (signal ${signal})` : ""}`
526
624
  )
527
625
  );
@@ -942,6 +1040,12 @@ var OmpHarness = class extends AgentHarness {
942
1040
  this.emit(`response:${event.id}`, event);
943
1041
  return;
944
1042
  }
1043
+ if (event.type === "message_start" && event.message?.role === "assistant" || event.type === "message_update" || event.type === "host_tool_call" || event.type === "extension_ui_request" || event.type.startsWith("tool_execution")) {
1044
+ this.turnOutputSeen = true;
1045
+ }
1046
+ if (event.type === "message_end" && event.message?.role === "user") {
1047
+ this.turnUserMessageSeen = true;
1048
+ }
945
1049
  if (event.type === "host_tool_call") {
946
1050
  this.handleHostToolCall(event);
947
1051
  return;
@@ -1273,22 +1377,42 @@ ${input.text}` : input.text;
1273
1377
  * Rejects if the child dies first.
1274
1378
  */
1275
1379
  async runPrompt(payload) {
1276
- await this.start();
1277
- await this.reconfig.flushBeforeTurn();
1278
- const id = this.nextId();
1279
- const turnPromise = new Promise((resolve, reject) => {
1280
- this.turnResolve = resolve;
1281
- this.turnReject = reject;
1282
- });
1283
- this.beginUsageTurn();
1284
- try {
1285
- this.send({ id, type: "prompt", ...payload });
1286
- } catch (err) {
1287
- this.turnResolve = null;
1288
- this.turnReject = null;
1289
- throw err;
1380
+ this.promptRetried = false;
1381
+ const epoch = this.killEpoch;
1382
+ for (; ; ) {
1383
+ await this.start();
1384
+ if (this.killEpoch !== epoch) {
1385
+ this.kill();
1386
+ throw new Error("omp process killed");
1387
+ }
1388
+ await this.reconfig.flushBeforeTurn();
1389
+ const id = this.nextId();
1390
+ const turnPromise = new Promise((resolve, reject) => {
1391
+ this.turnResolve = resolve;
1392
+ this.turnReject = reject;
1393
+ });
1394
+ this.turnOutputSeen = false;
1395
+ this.turnUserMessageSeen = false;
1396
+ this.beginUsageTurn();
1397
+ try {
1398
+ this.send({ id, type: "prompt", ...payload });
1399
+ } catch (err) {
1400
+ this.turnResolve = null;
1401
+ this.turnReject = null;
1402
+ throw err;
1403
+ }
1404
+ try {
1405
+ await turnPromise;
1406
+ return;
1407
+ } catch (err) {
1408
+ if (!(err instanceof EarlyOmpExit)) throw err;
1409
+ this.promptRetried = true;
1410
+ this.log.warn("omp exited before its first output; sending the prompt again", {
1411
+ code: err.code,
1412
+ signal: err.signal
1413
+ });
1414
+ }
1290
1415
  }
1291
- await turnPromise;
1292
1416
  }
1293
1417
  /**
1294
1418
  * Sends an in-band abort RPC to the omp process, requesting it to stop the
@@ -1314,13 +1438,21 @@ ${input.text}` : input.text;
1314
1438
  * `OmpHarness` to start a fresh session.
1315
1439
  */
1316
1440
  kill() {
1441
+ this.killEpoch++;
1317
1442
  const proc = this.proc;
1318
1443
  if (!proc) return;
1319
1444
  if (this.turnEnded) this.resolveTurn();
1320
1445
  else this.rejectTurn(new Error("omp process killed"));
1321
1446
  proc.kill("SIGTERM");
1447
+ const home = this.privateHome;
1448
+ this.homeGone = home ? removeHomeAfterExit(proc, home) : Promise.resolve();
1322
1449
  this.cleanup();
1323
1450
  }
1451
+ /** Stop omp and wait until the process has exited and its private home is deleted. */
1452
+ async dispose() {
1453
+ this.kill();
1454
+ await this.homeGone;
1455
+ }
1324
1456
  async resetSession() {
1325
1457
  this.kill();
1326
1458
  this.config = { ...this.config, resumeSessionId: void 0 };