@the-open-engine/zeroshot 6.30.2 → 6.31.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 (320) hide show
  1. package/cli/index.js +1 -2
  2. package/lib/agent-cli-provider/adapters/acp.d.ts.map +1 -1
  3. package/lib/agent-cli-provider/adapters/acp.js +7 -11
  4. package/lib/agent-cli-provider/adapters/acp.js.map +1 -1
  5. package/lib/agent-cli-provider/adapters/omp-policy.d.ts +4 -0
  6. package/lib/agent-cli-provider/adapters/omp-policy.d.ts.map +1 -0
  7. package/lib/agent-cli-provider/adapters/omp-policy.js +47 -0
  8. package/lib/agent-cli-provider/adapters/omp-policy.js.map +1 -0
  9. package/lib/agent-cli-provider/adapters/omp.d.ts.map +1 -1
  10. package/lib/agent-cli-provider/adapters/omp.js +8 -158
  11. package/lib/agent-cli-provider/adapters/omp.js.map +1 -1
  12. package/lib/agent-cli-provider/adapters/pi.d.ts.map +1 -1
  13. package/lib/agent-cli-provider/adapters/pi.js +12 -124
  14. package/lib/agent-cli-provider/adapters/pi.js.map +1 -1
  15. package/lib/agent-cli-provider/assistant-stream.d.ts +27 -0
  16. package/lib/agent-cli-provider/assistant-stream.d.ts.map +1 -0
  17. package/lib/agent-cli-provider/assistant-stream.js +119 -0
  18. package/lib/agent-cli-provider/assistant-stream.js.map +1 -0
  19. package/lib/agent-cli-provider/contract-actions.d.ts.map +1 -1
  20. package/lib/agent-cli-provider/contract-actions.js +42 -1
  21. package/lib/agent-cli-provider/contract-actions.js.map +1 -1
  22. package/lib/agent-cli-provider/contract-invoke.d.ts.map +1 -1
  23. package/lib/agent-cli-provider/contract-invoke.js +68 -38
  24. package/lib/agent-cli-provider/contract-invoke.js.map +1 -1
  25. package/lib/agent-cli-provider/contract-support.d.ts +5 -6
  26. package/lib/agent-cli-provider/contract-support.d.ts.map +1 -1
  27. package/lib/agent-cli-provider/contract-support.js +99 -6
  28. package/lib/agent-cli-provider/contract-support.js.map +1 -1
  29. package/lib/agent-cli-provider/index.d.ts +8 -6
  30. package/lib/agent-cli-provider/index.d.ts.map +1 -1
  31. package/lib/agent-cli-provider/index.js +34 -10
  32. package/lib/agent-cli-provider/index.js.map +1 -1
  33. package/lib/agent-cli-provider/omp/auth-policy.d.ts +31 -0
  34. package/lib/agent-cli-provider/omp/auth-policy.d.ts.map +1 -0
  35. package/lib/agent-cli-provider/omp/auth-policy.js +98 -0
  36. package/lib/agent-cli-provider/omp/auth-policy.js.map +1 -0
  37. package/lib/agent-cli-provider/{omp-release.d.ts → omp/release.d.ts} +1 -1
  38. package/lib/agent-cli-provider/omp/release.d.ts.map +1 -0
  39. package/lib/agent-cli-provider/{omp-release.js → omp/release.js} +1 -1
  40. package/lib/agent-cli-provider/omp/release.js.map +1 -0
  41. package/lib/agent-cli-provider/{omp-rpc-bounds.d.ts → omp/rpc-bounds.d.ts} +1 -1
  42. package/lib/agent-cli-provider/omp/rpc-bounds.d.ts.map +1 -0
  43. package/lib/agent-cli-provider/{omp-rpc-bounds.js → omp/rpc-bounds.js} +1 -1
  44. package/lib/agent-cli-provider/omp/rpc-bounds.js.map +1 -0
  45. package/lib/agent-cli-provider/omp/rpc-driver-channel.d.ts +19 -0
  46. package/lib/agent-cli-provider/omp/rpc-driver-channel.d.ts.map +1 -0
  47. package/lib/agent-cli-provider/omp/rpc-driver-channel.js +109 -0
  48. package/lib/agent-cli-provider/omp/rpc-driver-channel.js.map +1 -0
  49. package/lib/agent-cli-provider/omp/rpc-driver-dispatch.d.ts +27 -0
  50. package/lib/agent-cli-provider/omp/rpc-driver-dispatch.d.ts.map +1 -0
  51. package/lib/agent-cli-provider/omp/rpc-driver-dispatch.js +135 -0
  52. package/lib/agent-cli-provider/omp/rpc-driver-dispatch.js.map +1 -0
  53. package/lib/agent-cli-provider/omp/rpc-driver-runner.d.ts +3 -0
  54. package/lib/agent-cli-provider/omp/rpc-driver-runner.d.ts.map +1 -0
  55. package/lib/agent-cli-provider/omp/rpc-driver-runner.js +205 -0
  56. package/lib/agent-cli-provider/omp/rpc-driver-runner.js.map +1 -0
  57. package/lib/agent-cli-provider/omp/rpc-driver-state.d.ts +80 -0
  58. package/lib/agent-cli-provider/omp/rpc-driver-state.d.ts.map +1 -0
  59. package/lib/agent-cli-provider/omp/rpc-driver-state.js +86 -0
  60. package/lib/agent-cli-provider/omp/rpc-driver-state.js.map +1 -0
  61. package/lib/agent-cli-provider/omp/rpc-driver.d.ts +3 -0
  62. package/lib/agent-cli-provider/omp/rpc-driver.d.ts.map +1 -0
  63. package/lib/agent-cli-provider/omp/rpc-driver.js +6 -0
  64. package/lib/agent-cli-provider/omp/rpc-driver.js.map +1 -0
  65. package/lib/agent-cli-provider/omp/rpc-event-lines.d.ts +8 -0
  66. package/lib/agent-cli-provider/omp/rpc-event-lines.d.ts.map +1 -0
  67. package/lib/agent-cli-provider/omp/rpc-event-lines.js +59 -0
  68. package/lib/agent-cli-provider/omp/rpc-event-lines.js.map +1 -0
  69. package/lib/agent-cli-provider/omp/rpc-events.d.ts +16 -0
  70. package/lib/agent-cli-provider/omp/rpc-events.d.ts.map +1 -0
  71. package/lib/agent-cli-provider/omp/rpc-events.js +115 -0
  72. package/lib/agent-cli-provider/omp/rpc-events.js.map +1 -0
  73. package/lib/agent-cli-provider/{omp-rpc-protocol.d.ts → omp/rpc-protocol-contract.d.ts} +1 -13
  74. package/lib/agent-cli-provider/omp/rpc-protocol-contract.d.ts.map +1 -0
  75. package/lib/agent-cli-provider/omp/rpc-protocol-contract.js +54 -0
  76. package/lib/agent-cli-provider/omp/rpc-protocol-contract.js.map +1 -0
  77. package/lib/agent-cli-provider/omp/rpc-protocol.d.ts +15 -0
  78. package/lib/agent-cli-provider/omp/rpc-protocol.d.ts.map +1 -0
  79. package/lib/agent-cli-provider/omp/rpc-protocol.js +208 -0
  80. package/lib/agent-cli-provider/omp/rpc-protocol.js.map +1 -0
  81. package/lib/agent-cli-provider/{omp-rpc-session.d.ts → omp/rpc-session.d.ts} +1 -1
  82. package/lib/agent-cli-provider/omp/rpc-session.d.ts.map +1 -0
  83. package/lib/agent-cli-provider/{omp-rpc-session.js → omp/rpc-session.js} +1 -1
  84. package/lib/agent-cli-provider/omp/rpc-session.js.map +1 -0
  85. package/lib/agent-cli-provider/omp/sdk-contract.d.ts +34 -0
  86. package/lib/agent-cli-provider/omp/sdk-contract.d.ts.map +1 -0
  87. package/lib/agent-cli-provider/omp/sdk-contract.js +81 -0
  88. package/lib/agent-cli-provider/omp/sdk-contract.js.map +1 -0
  89. package/lib/agent-cli-provider/omp/sdk-process-credentials.d.ts +6 -0
  90. package/lib/agent-cli-provider/omp/sdk-process-credentials.d.ts.map +1 -0
  91. package/lib/agent-cli-provider/omp/sdk-process-credentials.js +44 -0
  92. package/lib/agent-cli-provider/omp/sdk-process-credentials.js.map +1 -0
  93. package/lib/agent-cli-provider/omp/sdk-process-error.d.ts +5 -0
  94. package/lib/agent-cli-provider/omp/sdk-process-error.d.ts.map +1 -0
  95. package/lib/agent-cli-provider/omp/sdk-process-error.js +13 -0
  96. package/lib/agent-cli-provider/omp/sdk-process-error.js.map +1 -0
  97. package/lib/agent-cli-provider/omp/sdk-process-io.d.ts +18 -0
  98. package/lib/agent-cli-provider/omp/sdk-process-io.d.ts.map +1 -0
  99. package/lib/agent-cli-provider/omp/sdk-process-io.js +80 -0
  100. package/lib/agent-cli-provider/omp/sdk-process-io.js.map +1 -0
  101. package/lib/agent-cli-provider/omp/sdk-process-private-runtime.d.ts +51 -0
  102. package/lib/agent-cli-provider/omp/sdk-process-private-runtime.d.ts.map +1 -0
  103. package/lib/agent-cli-provider/omp/sdk-process-private-runtime.js +154 -0
  104. package/lib/agent-cli-provider/omp/sdk-process-private-runtime.js.map +1 -0
  105. package/lib/agent-cli-provider/omp/sdk-process-result.d.ts +26 -0
  106. package/lib/agent-cli-provider/omp/sdk-process-result.d.ts.map +1 -0
  107. package/lib/agent-cli-provider/omp/sdk-process-result.js +117 -0
  108. package/lib/agent-cli-provider/omp/sdk-process-result.js.map +1 -0
  109. package/lib/agent-cli-provider/omp/sdk-process-runner.d.ts +7 -0
  110. package/lib/agent-cli-provider/omp/sdk-process-runner.d.ts.map +1 -0
  111. package/lib/agent-cli-provider/omp/sdk-process-runner.js +204 -0
  112. package/lib/agent-cli-provider/omp/sdk-process-runner.js.map +1 -0
  113. package/lib/agent-cli-provider/omp/sdk-protocol-collector.d.ts +3 -0
  114. package/lib/agent-cli-provider/omp/sdk-protocol-collector.d.ts.map +1 -0
  115. package/lib/agent-cli-provider/omp/sdk-protocol-collector.js +145 -0
  116. package/lib/agent-cli-provider/omp/sdk-protocol-collector.js.map +1 -0
  117. package/lib/agent-cli-provider/omp/sdk-protocol-frame.d.ts +4 -0
  118. package/lib/agent-cli-provider/omp/sdk-protocol-frame.d.ts.map +1 -0
  119. package/lib/agent-cli-provider/omp/sdk-protocol-frame.js +183 -0
  120. package/lib/agent-cli-provider/omp/sdk-protocol-frame.js.map +1 -0
  121. package/lib/agent-cli-provider/omp/sdk-protocol-request.d.ts +8 -0
  122. package/lib/agent-cli-provider/omp/sdk-protocol-request.d.ts.map +1 -0
  123. package/lib/agent-cli-provider/omp/sdk-protocol-request.js +170 -0
  124. package/lib/agent-cli-provider/omp/sdk-protocol-request.js.map +1 -0
  125. package/lib/agent-cli-provider/omp/sdk-protocol-result.d.ts +5 -0
  126. package/lib/agent-cli-provider/omp/sdk-protocol-result.d.ts.map +1 -0
  127. package/lib/agent-cli-provider/omp/sdk-protocol-result.js +74 -0
  128. package/lib/agent-cli-provider/omp/sdk-protocol-result.js.map +1 -0
  129. package/lib/agent-cli-provider/omp/sdk-protocol-types.d.ts +94 -0
  130. package/lib/agent-cli-provider/omp/sdk-protocol-types.d.ts.map +1 -0
  131. package/lib/agent-cli-provider/omp/sdk-protocol-types.js +54 -0
  132. package/lib/agent-cli-provider/omp/sdk-protocol-types.js.map +1 -0
  133. package/lib/agent-cli-provider/omp/sdk-protocol-value.d.ts +18 -0
  134. package/lib/agent-cli-provider/omp/sdk-protocol-value.d.ts.map +1 -0
  135. package/lib/agent-cli-provider/omp/sdk-protocol-value.js +229 -0
  136. package/lib/agent-cli-provider/omp/sdk-protocol-value.js.map +1 -0
  137. package/lib/agent-cli-provider/omp/sdk-protocol.d.ts +7 -0
  138. package/lib/agent-cli-provider/omp/sdk-protocol.d.ts.map +1 -0
  139. package/lib/agent-cli-provider/omp/sdk-protocol.js +28 -0
  140. package/lib/agent-cli-provider/omp/sdk-protocol.js.map +1 -0
  141. package/lib/agent-cli-provider/omp/sdk-runtime.d.ts +29 -0
  142. package/lib/agent-cli-provider/omp/sdk-runtime.d.ts.map +1 -0
  143. package/lib/agent-cli-provider/omp/sdk-runtime.js +110 -0
  144. package/lib/agent-cli-provider/omp/sdk-runtime.js.map +1 -0
  145. package/lib/agent-cli-provider/omp/sdk-settings-auth.d.ts +3 -0
  146. package/lib/agent-cli-provider/omp/sdk-settings-auth.d.ts.map +1 -0
  147. package/lib/agent-cli-provider/omp/sdk-settings-auth.js +86 -0
  148. package/lib/agent-cli-provider/omp/sdk-settings-auth.js.map +1 -0
  149. package/lib/agent-cli-provider/omp/sdk-settings-constants.d.ts +26 -0
  150. package/lib/agent-cli-provider/omp/sdk-settings-constants.d.ts.map +1 -0
  151. package/lib/agent-cli-provider/omp/sdk-settings-constants.js +148 -0
  152. package/lib/agent-cli-provider/omp/sdk-settings-constants.js.map +1 -0
  153. package/lib/agent-cli-provider/omp/sdk-settings-model-fields.d.ts +5 -0
  154. package/lib/agent-cli-provider/omp/sdk-settings-model-fields.d.ts.map +1 -0
  155. package/lib/agent-cli-provider/omp/sdk-settings-model-fields.js +198 -0
  156. package/lib/agent-cli-provider/omp/sdk-settings-model-fields.js.map +1 -0
  157. package/lib/agent-cli-provider/omp/sdk-settings-model.d.ts +4 -0
  158. package/lib/agent-cli-provider/omp/sdk-settings-model.d.ts.map +1 -0
  159. package/lib/agent-cli-provider/omp/sdk-settings-model.js +163 -0
  160. package/lib/agent-cli-provider/omp/sdk-settings-model.js.map +1 -0
  161. package/lib/agent-cli-provider/omp/sdk-settings-normalize.d.ts +18 -0
  162. package/lib/agent-cli-provider/omp/sdk-settings-normalize.d.ts.map +1 -0
  163. package/lib/agent-cli-provider/omp/sdk-settings-normalize.js +148 -0
  164. package/lib/agent-cli-provider/omp/sdk-settings-normalize.js.map +1 -0
  165. package/lib/agent-cli-provider/omp/sdk-settings-selector.d.ts +3 -0
  166. package/lib/agent-cli-provider/omp/sdk-settings-selector.d.ts.map +1 -0
  167. package/lib/agent-cli-provider/omp/sdk-settings-selector.js +22 -0
  168. package/lib/agent-cli-provider/omp/sdk-settings-selector.js.map +1 -0
  169. package/lib/agent-cli-provider/omp/sdk-settings-types.d.ts +68 -0
  170. package/lib/agent-cli-provider/omp/sdk-settings-types.d.ts.map +1 -0
  171. package/lib/agent-cli-provider/omp/sdk-settings-types.js +19 -0
  172. package/lib/agent-cli-provider/omp/sdk-settings-types.js.map +1 -0
  173. package/lib/agent-cli-provider/omp/sdk-settings-values.d.ts +14 -0
  174. package/lib/agent-cli-provider/omp/sdk-settings-values.d.ts.map +1 -0
  175. package/lib/agent-cli-provider/omp/sdk-settings-values.js +112 -0
  176. package/lib/agent-cli-provider/omp/sdk-settings-values.js.map +1 -0
  177. package/lib/agent-cli-provider/omp/sdk-settings.d.ts +5 -0
  178. package/lib/agent-cli-provider/omp/sdk-settings.d.ts.map +1 -0
  179. package/lib/agent-cli-provider/omp/sdk-settings.js +16 -0
  180. package/lib/agent-cli-provider/omp/sdk-settings.js.map +1 -0
  181. package/lib/agent-cli-provider/omp/sdk-sidecar-context.d.ts +11 -0
  182. package/lib/agent-cli-provider/omp/sdk-sidecar-context.d.ts.map +1 -0
  183. package/lib/agent-cli-provider/omp/sdk-sidecar-context.js +171 -0
  184. package/lib/agent-cli-provider/omp/sdk-sidecar-context.js.map +1 -0
  185. package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.d.ts +5 -0
  186. package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.d.ts.map +1 -0
  187. package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.js +94 -0
  188. package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.js.map +1 -0
  189. package/lib/agent-cli-provider/omp/sdk-sidecar-execute.d.ts +5 -0
  190. package/lib/agent-cli-provider/omp/sdk-sidecar-execute.d.ts.map +1 -0
  191. package/lib/agent-cli-provider/omp/sdk-sidecar-execute.js +175 -0
  192. package/lib/agent-cli-provider/omp/sdk-sidecar-execute.js.map +1 -0
  193. package/lib/agent-cli-provider/omp/sdk-sidecar-output.d.ts +5 -0
  194. package/lib/agent-cli-provider/omp/sdk-sidecar-output.d.ts.map +1 -0
  195. package/lib/agent-cli-provider/omp/sdk-sidecar-output.js +216 -0
  196. package/lib/agent-cli-provider/omp/sdk-sidecar-output.js.map +1 -0
  197. package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.d.ts +11 -0
  198. package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.d.ts.map +1 -0
  199. package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.js +265 -0
  200. package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.js.map +1 -0
  201. package/lib/agent-cli-provider/omp/sdk-sidecar-types.d.ts +148 -0
  202. package/lib/agent-cli-provider/omp/sdk-sidecar-types.d.ts.map +1 -0
  203. package/lib/agent-cli-provider/omp/sdk-sidecar-types.js +84 -0
  204. package/lib/agent-cli-provider/omp/sdk-sidecar-types.js.map +1 -0
  205. package/lib/agent-cli-provider/omp/sdk-sidecar.d.ts +4 -0
  206. package/lib/agent-cli-provider/omp/sdk-sidecar.d.ts.map +1 -0
  207. package/lib/agent-cli-provider/omp/sdk-sidecar.js +9 -0
  208. package/lib/agent-cli-provider/omp/sdk-sidecar.js.map +1 -0
  209. package/lib/agent-cli-provider/process-runner.d.ts +1 -0
  210. package/lib/agent-cli-provider/process-runner.d.ts.map +1 -1
  211. package/lib/agent-cli-provider/process-runner.js +19 -6
  212. package/lib/agent-cli-provider/process-runner.js.map +1 -1
  213. package/lib/agent-cli-provider/provider-registry.d.ts +18 -4
  214. package/lib/agent-cli-provider/provider-registry.d.ts.map +1 -1
  215. package/lib/agent-cli-provider/provider-registry.js +21 -7
  216. package/lib/agent-cli-provider/provider-registry.js.map +1 -1
  217. package/lib/agent-cli-provider/single-agent-runtime.d.ts +10 -1
  218. package/lib/agent-cli-provider/single-agent-runtime.d.ts.map +1 -1
  219. package/lib/agent-cli-provider/single-agent-runtime.js +378 -11
  220. package/lib/agent-cli-provider/single-agent-runtime.js.map +1 -1
  221. package/lib/agent-cli-provider/types.d.ts +110 -2
  222. package/lib/agent-cli-provider/types.d.ts.map +1 -1
  223. package/lib/agent-cli-provider/types.js.map +1 -1
  224. package/npm-shrinkwrap.json +18116 -0
  225. package/package.json +16 -3
  226. package/scripts/omp/bun-ffi.d.ts +28 -0
  227. package/scripts/omp/host-supervisor-cleanup.ts +100 -0
  228. package/scripts/omp/host-supervisor-launch.ts +38 -0
  229. package/scripts/omp/host-supervisor-native.ts +181 -0
  230. package/scripts/omp/host-supervisor-tracker.ts +258 -0
  231. package/scripts/omp/host-supervisor.ts +298 -0
  232. package/scripts/omp/promise-gate.ts +13 -0
  233. package/scripts/omp/runtime-identities.js +283 -0
  234. package/scripts/omp/runtime-lock.js +232 -0
  235. package/scripts/omp/runtime-release.js +105 -0
  236. package/scripts/omp/runtime.js +33 -0
  237. package/scripts/omp/sidecar.ts +124 -0
  238. package/scripts/opcore-introduced-check.js +5 -0
  239. package/scripts/release-preflight.js +19 -0
  240. package/src/agent-cli-provider/adapters/acp.ts +18 -17
  241. package/src/agent-cli-provider/adapters/omp-policy.ts +45 -0
  242. package/src/agent-cli-provider/adapters/omp.ts +9 -155
  243. package/src/agent-cli-provider/adapters/pi.ts +15 -145
  244. package/src/agent-cli-provider/assistant-stream.ts +155 -0
  245. package/src/agent-cli-provider/contract-actions.ts +14 -2
  246. package/src/agent-cli-provider/contract-invoke.ts +77 -40
  247. package/src/agent-cli-provider/contract-support.ts +83 -12
  248. package/src/agent-cli-provider/index.ts +60 -5
  249. package/src/agent-cli-provider/omp/auth-policy.ts +126 -0
  250. package/src/agent-cli-provider/omp/rpc-driver-channel.ts +144 -0
  251. package/src/agent-cli-provider/omp/rpc-driver-dispatch.ts +177 -0
  252. package/src/agent-cli-provider/omp/rpc-driver-runner.ts +199 -0
  253. package/src/agent-cli-provider/omp/rpc-driver-state.ts +165 -0
  254. package/src/agent-cli-provider/omp/rpc-driver.ts +8 -0
  255. package/src/agent-cli-provider/omp/rpc-event-lines.ts +58 -0
  256. package/src/agent-cli-provider/omp/rpc-events.ts +154 -0
  257. package/src/agent-cli-provider/omp/rpc-protocol-contract.ts +77 -0
  258. package/src/agent-cli-provider/{omp-rpc-protocol.ts → omp/rpc-protocol.ts} +9 -111
  259. package/src/agent-cli-provider/omp/sdk-contract.ts +123 -0
  260. package/src/agent-cli-provider/omp/sdk-process-credentials.ts +55 -0
  261. package/src/agent-cli-provider/omp/sdk-process-error.ts +9 -0
  262. package/src/agent-cli-provider/omp/sdk-process-io.ts +92 -0
  263. package/src/agent-cli-provider/omp/sdk-process-private-runtime.ts +249 -0
  264. package/src/agent-cli-provider/omp/sdk-process-result.ts +181 -0
  265. package/src/agent-cli-provider/omp/sdk-process-runner.ts +281 -0
  266. package/src/agent-cli-provider/omp/sdk-protocol-collector.ts +140 -0
  267. package/src/agent-cli-provider/omp/sdk-protocol-frame.ts +260 -0
  268. package/src/agent-cli-provider/omp/sdk-protocol-request.ts +181 -0
  269. package/src/agent-cli-provider/omp/sdk-protocol-result.ts +80 -0
  270. package/src/agent-cli-provider/omp/sdk-protocol-types.ts +156 -0
  271. package/src/agent-cli-provider/omp/sdk-protocol-value.ts +234 -0
  272. package/src/agent-cli-provider/omp/sdk-protocol.ts +46 -0
  273. package/src/agent-cli-provider/omp/sdk-runtime.ts +159 -0
  274. package/src/agent-cli-provider/omp/sdk-settings-auth.ts +78 -0
  275. package/src/agent-cli-provider/omp/sdk-settings-constants.ts +147 -0
  276. package/src/agent-cli-provider/omp/sdk-settings-model-fields.ts +233 -0
  277. package/src/agent-cli-provider/omp/sdk-settings-model.ts +238 -0
  278. package/src/agent-cli-provider/omp/sdk-settings-normalize.ts +242 -0
  279. package/src/agent-cli-provider/omp/sdk-settings-selector.ts +28 -0
  280. package/src/agent-cli-provider/omp/sdk-settings-types.ts +88 -0
  281. package/src/agent-cli-provider/omp/sdk-settings-values.ts +118 -0
  282. package/src/agent-cli-provider/omp/sdk-settings.ts +33 -0
  283. package/src/agent-cli-provider/omp/sdk-sidecar-context.ts +199 -0
  284. package/src/agent-cli-provider/omp/sdk-sidecar-credentials.ts +100 -0
  285. package/src/agent-cli-provider/omp/sdk-sidecar-execute.ts +201 -0
  286. package/src/agent-cli-provider/omp/sdk-sidecar-output.ts +235 -0
  287. package/src/agent-cli-provider/omp/sdk-sidecar-runtime.ts +244 -0
  288. package/src/agent-cli-provider/omp/sdk-sidecar-types.ts +173 -0
  289. package/src/agent-cli-provider/omp/sdk-sidecar.ts +3 -0
  290. package/src/agent-cli-provider/process-runner.ts +22 -8
  291. package/src/agent-cli-provider/provider-registry.ts +29 -10
  292. package/src/agent-cli-provider/single-agent-runtime.ts +444 -18
  293. package/src/agent-cli-provider/types.ts +131 -3
  294. package/src/command-cleanup-ownership.js +15 -0
  295. package/task-lib/omp-sdk-runtime.js +8 -0
  296. package/task-lib/runner.js +121 -40
  297. package/task-lib/sdk-watcher.js +154 -0
  298. package/cli/lib/first-run.js +0 -223
  299. package/lib/agent-cli-provider/omp-release.d.ts.map +0 -1
  300. package/lib/agent-cli-provider/omp-release.js.map +0 -1
  301. package/lib/agent-cli-provider/omp-rpc-bounds.d.ts.map +0 -1
  302. package/lib/agent-cli-provider/omp-rpc-bounds.js.map +0 -1
  303. package/lib/agent-cli-provider/omp-rpc-driver.d.ts +0 -40
  304. package/lib/agent-cli-provider/omp-rpc-driver.d.ts.map +0 -1
  305. package/lib/agent-cli-provider/omp-rpc-driver.js +0 -519
  306. package/lib/agent-cli-provider/omp-rpc-driver.js.map +0 -1
  307. package/lib/agent-cli-provider/omp-rpc-events.d.ts +0 -28
  308. package/lib/agent-cli-provider/omp-rpc-events.d.ts.map +0 -1
  309. package/lib/agent-cli-provider/omp-rpc-events.js +0 -264
  310. package/lib/agent-cli-provider/omp-rpc-events.js.map +0 -1
  311. package/lib/agent-cli-provider/omp-rpc-protocol.d.ts.map +0 -1
  312. package/lib/agent-cli-provider/omp-rpc-protocol.js +0 -272
  313. package/lib/agent-cli-provider/omp-rpc-protocol.js.map +0 -1
  314. package/lib/agent-cli-provider/omp-rpc-session.d.ts.map +0 -1
  315. package/lib/agent-cli-provider/omp-rpc-session.js.map +0 -1
  316. package/src/agent-cli-provider/omp-rpc-driver.ts +0 -639
  317. package/src/agent-cli-provider/omp-rpc-events.ts +0 -318
  318. /package/src/agent-cli-provider/{omp-release.ts → omp/release.ts} +0 -0
  319. /package/src/agent-cli-provider/{omp-rpc-bounds.ts → omp/rpc-bounds.ts} +0 -0
  320. /package/src/agent-cli-provider/{omp-rpc-session.ts → omp/rpc-session.ts} +0 -0
@@ -0,0 +1,232 @@
1
+ 'use strict';
2
+
3
+ const crypto = require('crypto');
4
+ const {
5
+ BUN_PACKAGE_INTEGRITY,
6
+ BUN_PACKAGE_NAME,
7
+ BUN_PLATFORM_ASSET_INTEGRITIES,
8
+ BUN_RUNTIME_VERSION,
9
+ OMP_NATIVE_PACKAGE_INTEGRITY,
10
+ OMP_NATIVE_PACKAGE_NAME,
11
+ OMP_NATIVE_PLATFORM_ASSET_INTEGRITIES,
12
+ OMP_NATIVE_PLATFORM_PACKAGES,
13
+ OMP_PACKAGE_NAME,
14
+ OMP_SDK_PACKAGE_INTEGRITY,
15
+ OMP_SDK_VERSION,
16
+ } = require('./runtime-identities');
17
+
18
+ function packageTarballUrl(packageName, version) {
19
+ const tarballName = packageName.slice(packageName.lastIndexOf('/') + 1);
20
+ return `https://registry.npmjs.org/${packageName}/-/${tarballName}-${version}.tgz`;
21
+ }
22
+
23
+ function assertLockedPackage(
24
+ packageLock,
25
+ packageName,
26
+ identity,
27
+ lockfileName = 'package-lock.json'
28
+ ) {
29
+ const { version, integrity, optional = false } = identity;
30
+ const locked = packageLock.packages?.[`node_modules/${packageName}`];
31
+ if (!locked) throw new Error(`${lockfileName} is missing ${packageName}`);
32
+ if (locked.version !== version) {
33
+ throw new Error(
34
+ `${lockfileName} ${packageName} version drift: expected ${version}, got ${
35
+ locked.version || 'unknown'
36
+ }`
37
+ );
38
+ }
39
+ if (locked.resolved !== packageTarballUrl(packageName, version)) {
40
+ throw new Error(`${lockfileName} ${packageName} tarball identity drift`);
41
+ }
42
+ if (locked.integrity !== integrity) {
43
+ throw new Error(`${lockfileName} ${packageName} integrity drift`);
44
+ }
45
+ if (optional && locked.optional !== true) {
46
+ throw new Error(`${lockfileName} ${packageName} must remain an optional platform asset`);
47
+ }
48
+ return locked;
49
+ }
50
+
51
+ function publishAllowlistIncludes(files, relativePath) {
52
+ const normalizedPath = relativePath.replaceAll('\\', '/').replace(/^\.\//, '');
53
+ return (files || []).some((entry) => {
54
+ const normalizedEntry = String(entry).replaceAll('\\', '/').replace(/^\.\//, '');
55
+ if (normalizedEntry.endsWith('/')) return normalizedPath.startsWith(normalizedEntry);
56
+ return normalizedEntry === normalizedPath;
57
+ });
58
+ }
59
+
60
+ function assertReleaseIdentity(condition, message) {
61
+ if (!condition) throw new Error(message);
62
+ }
63
+ function lockfileDigest(lockfile) {
64
+ return crypto.createHash('sha256').update(JSON.stringify(lockfile)).digest('hex');
65
+ }
66
+ function sourceDigest(source) {
67
+ return crypto.createHash('sha256').update(source).digest('hex');
68
+ }
69
+
70
+ function runtimeClosureDigest(lockfile) {
71
+ const packages = Object.fromEntries(
72
+ Object.entries(lockfile.packages || {})
73
+ .filter(([packagePath, metadata]) => packagePath === '' || metadata.dev !== true)
74
+ .map(([packagePath, metadata]) => {
75
+ if (packagePath !== '') return [packagePath, metadata];
76
+ const runtimeRoot = { ...metadata };
77
+ delete runtimeRoot.devDependencies;
78
+ return [packagePath, runtimeRoot];
79
+ })
80
+ );
81
+ return lockfileDigest({
82
+ lockfileVersion: lockfile.lockfileVersion,
83
+ requires: lockfile.requires,
84
+ packages,
85
+ });
86
+ }
87
+
88
+ function assertRootSpecs(packageJson, lockfile, lockfileName) {
89
+ const root = lockfile.packages?.[''];
90
+ assertReleaseIdentity(root, `${lockfileName} root package metadata is missing`);
91
+ assertReleaseIdentity(
92
+ packageJson.name === root.name,
93
+ `package.json and ${lockfileName} root package names must match`
94
+ );
95
+ assertReleaseIdentity(
96
+ packageJson.version === root.version,
97
+ `package.json and ${lockfileName} root package versions must match`
98
+ );
99
+ for (const field of ['dependencies', 'optionalDependencies', 'devDependencies']) {
100
+ assertReleaseIdentity(
101
+ lockfileDigest(packageJson[field] || {}) === lockfileDigest(root[field] || {}),
102
+ `${lockfileName} root ${field} must exactly match package.json`
103
+ );
104
+ }
105
+ return root;
106
+ }
107
+
108
+ function validatePinnedRuntimeLock(packageJson, lockfile, lockfileName) {
109
+ assertReleaseIdentity(
110
+ lockfile.lockfileVersion === 3,
111
+ `OMP SDK release assets require ${lockfileName} lockfileVersion 3`
112
+ );
113
+ const rootLock = assertRootSpecs(packageJson, lockfile, lockfileName);
114
+
115
+ for (const [packageName, version] of [
116
+ [OMP_PACKAGE_NAME, OMP_SDK_VERSION],
117
+ [BUN_PACKAGE_NAME, BUN_RUNTIME_VERSION],
118
+ ]) {
119
+ assertReleaseIdentity(
120
+ packageJson.dependencies?.[packageName] === version,
121
+ `package.json must pin ${packageName} exactly to ${version}`
122
+ );
123
+ assertReleaseIdentity(
124
+ rootLock.dependencies?.[packageName] === version,
125
+ `${lockfileName} root must pin ${packageName} exactly to ${version}`
126
+ );
127
+ }
128
+
129
+ const ompLock = assertLockedPackage(
130
+ lockfile,
131
+ OMP_PACKAGE_NAME,
132
+ {
133
+ version: OMP_SDK_VERSION,
134
+ integrity: OMP_SDK_PACKAGE_INTEGRITY,
135
+ },
136
+ lockfileName
137
+ );
138
+ assertReleaseIdentity(
139
+ ompLock.bin?.omp === 'dist/cli.js',
140
+ `${lockfileName} OMP SDK binary metadata drift`
141
+ );
142
+ assertReleaseIdentity(
143
+ ompLock.engines?.bun === '>=1.3.14',
144
+ `${lockfileName} OMP SDK Bun engine metadata drift`
145
+ );
146
+
147
+ const nativeLock = assertLockedPackage(
148
+ lockfile,
149
+ OMP_NATIVE_PACKAGE_NAME,
150
+ {
151
+ version: OMP_SDK_VERSION,
152
+ integrity: OMP_NATIVE_PACKAGE_INTEGRITY,
153
+ },
154
+ lockfileName
155
+ );
156
+ assertReleaseIdentity(
157
+ nativeLock.engines?.bun === '>=1.3.14',
158
+ `${lockfileName} OMP native Bun engine metadata drift`
159
+ );
160
+ const expectedNativePlatformNames = Object.values(OMP_NATIVE_PLATFORM_PACKAGES).sort();
161
+ const lockedNativePlatformNames = Object.keys(nativeLock.optionalDependencies || {}).sort();
162
+ assertReleaseIdentity(
163
+ lockfileDigest(expectedNativePlatformNames) === lockfileDigest(lockedNativePlatformNames),
164
+ `${lockfileName} OMP native platform asset set drift`
165
+ );
166
+ for (const packageName of expectedNativePlatformNames) {
167
+ assertReleaseIdentity(
168
+ nativeLock.optionalDependencies[packageName] === OMP_SDK_VERSION,
169
+ `${lockfileName} OMP natives must pin ${packageName} exactly`
170
+ );
171
+ assertLockedPackage(
172
+ lockfile,
173
+ packageName,
174
+ {
175
+ version: OMP_SDK_VERSION,
176
+ integrity: OMP_NATIVE_PLATFORM_ASSET_INTEGRITIES[packageName],
177
+ optional: true,
178
+ },
179
+ lockfileName
180
+ );
181
+ }
182
+
183
+ const bunLock = assertLockedPackage(
184
+ lockfile,
185
+ BUN_PACKAGE_NAME,
186
+ {
187
+ version: BUN_RUNTIME_VERSION,
188
+ integrity: BUN_PACKAGE_INTEGRITY,
189
+ },
190
+ lockfileName
191
+ );
192
+ assertReleaseIdentity(
193
+ bunLock.bin?.bun === 'bin/bun.exe',
194
+ `${lockfileName} Bun binary metadata drift`
195
+ );
196
+ assertReleaseIdentity(
197
+ bunLock.bin?.bunx === 'bin/bunx.exe',
198
+ `${lockfileName} Bunx binary metadata drift`
199
+ );
200
+
201
+ const expectedBunPlatformNames = Object.keys(BUN_PLATFORM_ASSET_INTEGRITIES).sort();
202
+ const lockedBunPlatformNames = Object.keys(bunLock.optionalDependencies || {}).sort();
203
+ assertReleaseIdentity(
204
+ lockfileDigest(expectedBunPlatformNames) === lockfileDigest(lockedBunPlatformNames),
205
+ `${lockfileName} Bun platform asset set drift`
206
+ );
207
+ for (const packageName of expectedBunPlatformNames) {
208
+ assertReleaseIdentity(
209
+ bunLock.optionalDependencies[packageName] === BUN_RUNTIME_VERSION,
210
+ `${lockfileName} Bun wrapper must pin ${packageName} exactly`
211
+ );
212
+ assertLockedPackage(
213
+ lockfile,
214
+ packageName,
215
+ {
216
+ version: BUN_RUNTIME_VERSION,
217
+ integrity: BUN_PLATFORM_ASSET_INTEGRITIES[packageName],
218
+ optional: true,
219
+ },
220
+ lockfileName
221
+ );
222
+ }
223
+ }
224
+
225
+ module.exports = {
226
+ assertReleaseIdentity,
227
+ lockfileDigest,
228
+ publishAllowlistIncludes,
229
+ runtimeClosureDigest,
230
+ sourceDigest,
231
+ validatePinnedRuntimeLock,
232
+ };
@@ -0,0 +1,105 @@
1
+ 'use strict';
2
+
3
+ const {
4
+ BUN_PLATFORM_PACKAGES,
5
+ BUN_RUNTIME_VERSION,
6
+ HOST_SDK_PLATFORM_KEYS,
7
+ HOST_SUPERVISOR_RELATIVE_PATH,
8
+ OMP_NATIVE_PLATFORM_PACKAGES,
9
+ OMP_SDK_VERSION,
10
+ REQUIRED_OMP_SDK_SOURCES,
11
+ } = require('./runtime-identities');
12
+ const {
13
+ assertReleaseIdentity,
14
+ lockfileDigest,
15
+ publishAllowlistIncludes,
16
+ runtimeClosureDigest,
17
+ sourceDigest,
18
+ validatePinnedRuntimeLock,
19
+ } = require('./runtime-lock');
20
+
21
+ function validateOmpSdkReleaseAssets(packageJson, packageLock, options = {}) {
22
+ const packageShrinkwrap = options.packageShrinkwrap;
23
+ assertReleaseIdentity(packageJson, 'OMP SDK release assets require package.json');
24
+ assertReleaseIdentity(packageLock, 'OMP SDK release assets require package-lock.json');
25
+ assertReleaseIdentity(
26
+ packageShrinkwrap,
27
+ 'OMP SDK release assets require published npm-shrinkwrap.json'
28
+ );
29
+
30
+ validatePinnedRuntimeLock(packageJson, packageLock, 'package-lock.json');
31
+ validatePinnedRuntimeLock(packageJson, packageShrinkwrap, 'npm-shrinkwrap.json');
32
+
33
+ assertReleaseIdentity(
34
+ packageJson.ompSdkHostContainment?.supervisor ===
35
+ HOST_SUPERVISOR_RELATIVE_PATH.replaceAll('\\', '/') &&
36
+ packageJson.ompSdkHostContainment?.protocolVersion === 1 &&
37
+ lockfileDigest(packageJson.ompSdkHostContainment?.platforms || []) ===
38
+ lockfileDigest([...HOST_SDK_PLATFORM_KEYS]),
39
+ 'package.json OMP SDK host containment identity drift'
40
+ );
41
+ const packageLockRuntimeDigest = runtimeClosureDigest(packageLock);
42
+ const shrinkwrapRuntimeDigest = runtimeClosureDigest(packageShrinkwrap);
43
+ assertReleaseIdentity(
44
+ packageLockRuntimeDigest === shrinkwrapRuntimeDigest,
45
+ 'npm-shrinkwrap.json runtime closure identity must exactly match package-lock.json'
46
+ );
47
+ const packageLockIdentityDigest = lockfileDigest(packageLock);
48
+ const shrinkwrapIdentityDigest = lockfileDigest(packageShrinkwrap);
49
+ assertReleaseIdentity(
50
+ packageLockIdentityDigest === shrinkwrapIdentityDigest,
51
+ 'npm-shrinkwrap.json digest must exactly match package-lock.json'
52
+ );
53
+ const packageLockDigest = options.packageLockSource
54
+ ? sourceDigest(options.packageLockSource)
55
+ : packageLockIdentityDigest;
56
+ const shrinkwrapDigest = options.packageShrinkwrapSource
57
+ ? sourceDigest(options.packageShrinkwrapSource)
58
+ : shrinkwrapIdentityDigest;
59
+ assertReleaseIdentity(
60
+ packageLockDigest === shrinkwrapDigest,
61
+ 'published npm-shrinkwrap.json byte digest must exactly match package-lock.json'
62
+ );
63
+ assertReleaseIdentity(
64
+ publishAllowlistIncludes(packageJson.files, 'npm-shrinkwrap.json'),
65
+ 'package.json publish allowlist excludes npm-shrinkwrap.json'
66
+ );
67
+
68
+ const supportedPlatformKeys = [...HOST_SDK_PLATFORM_KEYS].sort();
69
+ assertReleaseIdentity(
70
+ supportedPlatformKeys.every(
71
+ (key) =>
72
+ BUN_PLATFORM_PACKAGES[key] !== undefined && OMP_NATIVE_PLATFORM_PACKAGES[key] !== undefined
73
+ ),
74
+ 'Host OMP SDK runtime platform set must be covered by pinned Bun and OMP native assets'
75
+ );
76
+
77
+ const sourceFiles = options.sourceFiles;
78
+ assertReleaseIdentity(
79
+ Array.isArray(sourceFiles),
80
+ 'OMP SDK release source file identities are required'
81
+ );
82
+ for (const sourceFile of REQUIRED_OMP_SDK_SOURCES) {
83
+ assertReleaseIdentity(
84
+ sourceFiles.includes(sourceFile),
85
+ `OMP SDK release source is missing: ${sourceFile}`
86
+ );
87
+ assertReleaseIdentity(
88
+ publishAllowlistIncludes(packageJson.files, sourceFile),
89
+ `package.json publish allowlist excludes ${sourceFile}`
90
+ );
91
+ }
92
+
93
+ return Object.freeze({
94
+ bunPlatformPackages: Object.freeze(Object.values(BUN_PLATFORM_PACKAGES).sort()),
95
+ bunVersion: BUN_RUNTIME_VERSION,
96
+ ompNativePlatformPackages: Object.freeze(Object.values(OMP_NATIVE_PLATFORM_PACKAGES).sort()),
97
+ ompVersion: OMP_SDK_VERSION,
98
+ runtimeClosureSha256: packageLockRuntimeDigest,
99
+ shrinkwrapSha256: shrinkwrapDigest,
100
+ sourceFiles: REQUIRED_OMP_SDK_SOURCES,
101
+ supportedPlatforms: Object.freeze(supportedPlatformKeys),
102
+ });
103
+ }
104
+
105
+ module.exports = { validateOmpSdkReleaseAssets };
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ const {
4
+ HOST_SUPERVISOR_RELATIVE_PATH,
5
+ BUN_PACKAGE_NAME,
6
+ BUN_PLATFORM_PACKAGES,
7
+ BUN_RUNTIME_VERSION,
8
+ OMP_NATIVE_PACKAGE_NAME,
9
+ OMP_NATIVE_PLATFORM_PACKAGES,
10
+ OMP_PACKAGE_NAME,
11
+ OMP_SDK_VERSION,
12
+ REQUIRED_OMP_SDK_SOURCES,
13
+ SIDECAR_RELATIVE_PATH,
14
+ assertPackageIdentity,
15
+ resolveOmpSdkRuntime,
16
+ } = require('./runtime-identities');
17
+ const { validateOmpSdkReleaseAssets } = require('./runtime-release');
18
+
19
+ module.exports = {
20
+ HOST_SUPERVISOR_RELATIVE_PATH,
21
+ BUN_PACKAGE_NAME,
22
+ BUN_PLATFORM_PACKAGES,
23
+ BUN_RUNTIME_VERSION,
24
+ OMP_NATIVE_PACKAGE_NAME,
25
+ OMP_NATIVE_PLATFORM_PACKAGES,
26
+ OMP_PACKAGE_NAME,
27
+ OMP_SDK_VERSION,
28
+ REQUIRED_OMP_SDK_SOURCES,
29
+ SIDECAR_RELATIVE_PATH,
30
+ assertPackageIdentity,
31
+ resolveOmpSdkRuntime,
32
+ validateOmpSdkReleaseAssets,
33
+ };
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env bun
2
+
3
+ import { closeSync, promises as fs } from 'node:fs';
4
+
5
+ import {
6
+ OMP_SDK_BACKEND_VERSION,
7
+ OMP_SDK_BUN_VERSION,
8
+ OMP_SDK_MAX_REQUEST_BYTES,
9
+ parseOmpSdkProtocolFrame,
10
+ type OmpSdkErrorCategory,
11
+ type OmpSdkErrorCode,
12
+ type OmpSdkProtocolFrame,
13
+ } from '../../src/agent-cli-provider/omp/sdk-protocol';
14
+ import {
15
+ executeOmpSdkSidecar,
16
+ serializeOmpSdkFrame,
17
+ } from '../../src/agent-cli-provider/omp/sdk-sidecar';
18
+
19
+ function safeError(
20
+ runId: string,
21
+ code: OmpSdkErrorCode,
22
+ category: OmpSdkErrorCategory
23
+ ): OmpSdkProtocolFrame {
24
+ return parseOmpSdkProtocolFrame({
25
+ protocolVersion: 1,
26
+ type: 'error',
27
+ runId,
28
+ backend: { id: 'omp-sdk', version: OMP_SDK_BACKEND_VERSION },
29
+ runtime: { name: 'bun', version: OMP_SDK_BUN_VERSION },
30
+ error: { code, category, retryable: false, redacted: true },
31
+ });
32
+ }
33
+
34
+ function runIdFrom(value: unknown): string {
35
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) return 'unknown';
36
+ const runId = (value as Record<string, unknown>).runId;
37
+ return typeof runId === 'string' &&
38
+ /^[A-Za-z0-9][A-Za-z0-9._:-]*$/.test(runId) &&
39
+ Buffer.byteLength(runId) <= 128
40
+ ? runId
41
+ : 'unknown';
42
+ }
43
+
44
+ async function assertPrivateRequest(requestPath: string): Promise<void> {
45
+ const stat = await fs.stat(requestPath);
46
+ if (
47
+ !stat.isFile() ||
48
+ stat.size <= 0 ||
49
+ stat.size > OMP_SDK_MAX_REQUEST_BYTES ||
50
+ (stat.mode & 0o077) !== 0
51
+ ) {
52
+ throw new Error('invalid private request file');
53
+ }
54
+ }
55
+
56
+ const originalConsole = {
57
+ debug: console.debug,
58
+ error: console.error,
59
+ info: console.info,
60
+ log: console.log,
61
+ warn: console.warn,
62
+ };
63
+ const originalStdoutWrite = process.stdout.write.bind(process.stdout);
64
+ const originalStderrWrite = process.stderr.write.bind(process.stderr);
65
+ process.stdout.write = (() => true) as typeof process.stdout.write;
66
+ process.stderr.write = (() => true) as typeof process.stderr.write;
67
+ console.debug = () => undefined;
68
+ console.error = () => undefined;
69
+ console.info = () => undefined;
70
+ console.log = () => undefined;
71
+ console.warn = () => undefined;
72
+
73
+ const abortController = new AbortController();
74
+ const abort = (): void => abortController.abort();
75
+ process.once('SIGINT', abort);
76
+ process.once('SIGTERM', abort);
77
+
78
+ let frame: OmpSdkProtocolFrame;
79
+ let requestPath: string | undefined;
80
+ let request: unknown;
81
+ let removeRequest = false;
82
+ async function main(): Promise<void> {
83
+ try {
84
+ if (process.argv.length !== 3) throw new Error('one request path is required');
85
+ requestPath = process.argv[2];
86
+ if (requestPath === undefined) throw new Error('request path is required');
87
+ await assertPrivateRequest(requestPath);
88
+ removeRequest = true;
89
+ request = JSON.parse(await fs.readFile(requestPath, 'utf8')) as unknown;
90
+ frame = await executeOmpSdkSidecar(request, { signal: abortController.signal });
91
+ } catch {
92
+ try {
93
+ closeSync(3);
94
+ } catch {
95
+ // The credential channel may already have been consumed and closed.
96
+ }
97
+ frame = safeError(runIdFrom(request), 'invalid-request', 'request');
98
+ }
99
+
100
+ if (requestPath !== undefined && removeRequest) {
101
+ try {
102
+ await fs.unlink(requestPath);
103
+ } catch {
104
+ frame = safeError(runIdFrom(request), 'cleanup-error', 'cleanup');
105
+ }
106
+ }
107
+ process.removeListener('SIGINT', abort);
108
+ process.removeListener('SIGTERM', abort);
109
+ if (abortController.signal.aborted) {
110
+ frame = safeError(runIdFrom(request), 'cancelled', 'cancelled');
111
+ }
112
+
113
+ console.debug = originalConsole.debug;
114
+ console.error = originalConsole.error;
115
+ console.info = originalConsole.info;
116
+ console.log = originalConsole.log;
117
+ console.warn = originalConsole.warn;
118
+ process.stdout.write = originalStdoutWrite as typeof process.stdout.write;
119
+ process.stderr.write = originalStderrWrite as typeof process.stderr.write;
120
+ originalStdoutWrite(serializeOmpSdkFrame(frame));
121
+ process.exitCode = frame.type === 'result' ? 0 : 1;
122
+ }
123
+
124
+ void main();
@@ -190,12 +190,17 @@ function normalizeBaselineRename(baseline, change) {
190
190
  fs.mkdirSync(path.dirname(target), { recursive: true });
191
191
  fs.renameSync(source, target);
192
192
  }
193
+ function applyBaselineDeletion(baseline, change) {
194
+ if (change.kind !== 'D') return;
195
+ fs.rmSync(safePath(baseline, change.path), { recursive: true, force: true });
196
+ }
193
197
 
194
198
  function createRequest(repo, baseline, changes, options) {
195
199
  const overlays = [];
196
200
  const files = [];
197
201
  for (const change of changes) {
198
202
  normalizeBaselineRename(baseline, change);
203
+ applyBaselineDeletion(baseline, change);
199
204
  if (change.kind === 'D') {
200
205
  continue;
201
206
  }
@@ -3,6 +3,7 @@
3
3
  const fs = require('fs');
4
4
  const https = require('https');
5
5
  const { execFileSync } = require('child_process');
6
+ const { REQUIRED_OMP_SDK_SOURCES, validateOmpSdkReleaseAssets } = require('./omp/runtime');
6
7
 
7
8
  const RELEASE_ORDER = ['patch', 'minor', 'major'];
8
9
  const REQUIRED_PLUGINS = [
@@ -218,9 +219,25 @@ async function releaseSignal() {
218
219
  async function main() {
219
220
  const packageJson = readJson('package.json');
220
221
  const pluginNames = validateReleaseConfig(packageJson);
222
+ const packageLockSource = fs.readFileSync('package-lock.json');
223
+ const packageLock = JSON.parse(packageLockSource);
224
+ const packageShrinkwrapSource = fs.existsSync('npm-shrinkwrap.json')
225
+ ? fs.readFileSync('npm-shrinkwrap.json')
226
+ : null;
227
+ const packageShrinkwrap = packageShrinkwrapSource ? JSON.parse(packageShrinkwrapSource) : null;
228
+ const sourceFiles = REQUIRED_OMP_SDK_SOURCES.filter((sourceFile) => fs.existsSync(sourceFile));
229
+ const runtimeAssets = validateOmpSdkReleaseAssets(packageJson, packageLock, {
230
+ packageLockSource,
231
+ packageShrinkwrap,
232
+ packageShrinkwrapSource,
233
+ sourceFiles,
234
+ });
221
235
  const signal = await releaseSignal();
222
236
 
223
237
  console.log(`Effective release plugins: ${pluginNames.join(', ')}`);
238
+ console.log(`Published runtime closure SHA-256: ${runtimeAssets.runtimeClosureSha256}`);
239
+ console.log(`Published shrinkwrap SHA-256: ${runtimeAssets.shrinkwrapSha256}`);
240
+ console.log(`Supported OMP SDK platforms: ${runtimeAssets.supportedPlatforms.join(', ')}`);
224
241
  console.log(`Latest release tag: ${signal.latestTag}`);
225
242
  console.log(`Commits since tag: ${signal.commitCount}`);
226
243
  if (signal.prTitle) console.log(`Release PR title: ${signal.prTitle}`);
@@ -241,8 +258,10 @@ if (require.main === module) {
241
258
  }
242
259
 
243
260
  module.exports = {
261
+ REQUIRED_OMP_SDK_SOURCES,
244
262
  analyzeMessage,
245
263
  maxReleaseType,
246
264
  releaseTypeForMessages,
265
+ validateOmpSdkReleaseAssets,
247
266
  validateReleaseConfig,
248
267
  };
@@ -1,4 +1,5 @@
1
1
  import { appendJsonSchemaPrompt } from '../schema';
2
+ import { snapshotDelta } from '../assistant-stream';
2
3
  import { contractError } from '../contract-errors';
3
4
  import {
4
5
  getArray,
@@ -64,10 +65,7 @@ const DEFAULT_LEVEL_MAPPING: Readonly<Record<ModelLevel, LevelModelSpec>> = {
64
65
  level3: { rank: 3, model: null },
65
66
  };
66
67
 
67
- function detectCliFeatures(
68
- meta: AcpAdapterMetadata,
69
- helpText?: string | null
70
- ): AcpCliFeatures {
68
+ function detectCliFeatures(meta: AcpAdapterMetadata, helpText?: string | null): AcpCliFeatures {
71
69
  const help = helpText ?? '';
72
70
  const unknown = !help;
73
71
  return {
@@ -183,17 +181,13 @@ function thinkingSnapshots(state: ProviderParserState): Map<string, string> {
183
181
  return state.assistantThinkingByMessageId;
184
182
  }
185
183
 
186
- function toolCalls(state: ProviderParserState): Map<string, { name: string | null | undefined; input: unknown }> {
184
+ function toolCalls(
185
+ state: ProviderParserState
186
+ ): Map<string, { name: string | null | undefined; input: unknown }> {
187
187
  if (!state.toolCalls) state.toolCalls = new Map();
188
188
  return state.toolCalls;
189
189
  }
190
190
 
191
- function snapshotDelta(previous: string, current: string): string | null {
192
- if (!current || previous === current) return null;
193
- if (current.startsWith(previous)) return current.slice(previous.length) || null;
194
- return current;
195
- }
196
-
197
191
  function resolveChunkSnapshot(previous: string, chunk: string): string {
198
192
  if (!previous) return chunk;
199
193
  if (!chunk || previous === chunk) return previous;
@@ -270,7 +264,9 @@ function parseAssistantChunk(
270
264
  const textByMessageId = textSnapshots(state);
271
265
  const thinkingByMessageId = thinkingSnapshots(state);
272
266
  const nextText = options.textTypes ? joinTextBlocks(content, options.textTypes) : null;
273
- const nextThinking = options.thinkingTypes ? joinTextBlocks(content, options.thinkingTypes) : null;
267
+ const nextThinking = options.thinkingTypes
268
+ ? joinTextBlocks(content, options.thinkingTypes)
269
+ : null;
274
270
 
275
271
  const events: OutputEvent[] = [];
276
272
  if (nextText !== null) {
@@ -331,8 +327,7 @@ function parseToolCallUpdate(
331
327
  update.rawOutput ?? update.output ?? update.partialResult ?? update.content ?? update.result;
332
328
  if (content === undefined) return null;
333
329
  const status = getOptionalString(update, 'status');
334
- const isError =
335
- getBoolean(update, 'isError') ?? (status === 'failed' || status === 'cancelled');
330
+ const isError = getBoolean(update, 'isError') ?? (status === 'failed' || status === 'cancelled');
336
331
  return {
337
332
  type: 'tool_result',
338
333
  toolId,
@@ -361,7 +356,7 @@ function resultFromStopReason(
361
356
  type: 'result',
362
357
  success,
363
358
  result: success ? resultText : null,
364
- error: success ? null : explicitError ?? stopReason ?? 'ACP prompt failed.',
359
+ error: success ? null : (explicitError ?? stopReason ?? 'ACP prompt failed.'),
365
360
  ...(state.usage?.inputTokens === undefined ? {} : { inputTokens: state.usage.inputTokens }),
366
361
  ...(state.usage?.outputTokens === undefined ? {} : { outputTokens: state.usage.outputTokens }),
367
362
  ...(state.usage?.cacheReadInputTokens === undefined
@@ -414,7 +409,10 @@ function parseSessionUpdate(
414
409
  return null;
415
410
  }
416
411
 
417
- function parseRpcObject(parsed: Record<string, unknown>, state: ProviderParserState): ProviderParseResult {
412
+ function parseRpcObject(
413
+ parsed: Record<string, unknown>,
414
+ state: ProviderParserState
415
+ ): ProviderParseResult {
418
416
  const method = getOptionalString(parsed, 'method');
419
417
  if (method === 'session/update') {
420
418
  const params = getRecord(parsed, 'params') ?? {};
@@ -430,7 +428,10 @@ function parseRpcObject(parsed: Record<string, unknown>, state: ProviderParserSt
430
428
  return null;
431
429
  }
432
430
 
433
- function parseEvent(line: string, state: ProviderParserState): OutputEvent | readonly OutputEvent[] | null {
431
+ function parseEvent(
432
+ line: string,
433
+ state: ProviderParserState
434
+ ): OutputEvent | readonly OutputEvent[] | null {
434
435
  const parsed = tryParseJson(line);
435
436
  if (!isRecord(parsed)) return null;
436
437
  return parseRpcObject(parsed, state);