@the-open-engine/zeroshot 6.30.1 → 6.31.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 (318) hide show
  1. package/lib/agent-cli-provider/adapters/acp.d.ts.map +1 -1
  2. package/lib/agent-cli-provider/adapters/acp.js +7 -11
  3. package/lib/agent-cli-provider/adapters/acp.js.map +1 -1
  4. package/lib/agent-cli-provider/adapters/omp-policy.d.ts +4 -0
  5. package/lib/agent-cli-provider/adapters/omp-policy.d.ts.map +1 -0
  6. package/lib/agent-cli-provider/adapters/omp-policy.js +47 -0
  7. package/lib/agent-cli-provider/adapters/omp-policy.js.map +1 -0
  8. package/lib/agent-cli-provider/adapters/omp.d.ts.map +1 -1
  9. package/lib/agent-cli-provider/adapters/omp.js +8 -158
  10. package/lib/agent-cli-provider/adapters/omp.js.map +1 -1
  11. package/lib/agent-cli-provider/adapters/pi.d.ts.map +1 -1
  12. package/lib/agent-cli-provider/adapters/pi.js +12 -124
  13. package/lib/agent-cli-provider/adapters/pi.js.map +1 -1
  14. package/lib/agent-cli-provider/assistant-stream.d.ts +27 -0
  15. package/lib/agent-cli-provider/assistant-stream.d.ts.map +1 -0
  16. package/lib/agent-cli-provider/assistant-stream.js +119 -0
  17. package/lib/agent-cli-provider/assistant-stream.js.map +1 -0
  18. package/lib/agent-cli-provider/contract-actions.d.ts.map +1 -1
  19. package/lib/agent-cli-provider/contract-actions.js +42 -1
  20. package/lib/agent-cli-provider/contract-actions.js.map +1 -1
  21. package/lib/agent-cli-provider/contract-invoke.d.ts.map +1 -1
  22. package/lib/agent-cli-provider/contract-invoke.js +68 -38
  23. package/lib/agent-cli-provider/contract-invoke.js.map +1 -1
  24. package/lib/agent-cli-provider/contract-support.d.ts +5 -6
  25. package/lib/agent-cli-provider/contract-support.d.ts.map +1 -1
  26. package/lib/agent-cli-provider/contract-support.js +99 -6
  27. package/lib/agent-cli-provider/contract-support.js.map +1 -1
  28. package/lib/agent-cli-provider/index.d.ts +8 -6
  29. package/lib/agent-cli-provider/index.d.ts.map +1 -1
  30. package/lib/agent-cli-provider/index.js +34 -10
  31. package/lib/agent-cli-provider/index.js.map +1 -1
  32. package/lib/agent-cli-provider/omp/auth-policy.d.ts +31 -0
  33. package/lib/agent-cli-provider/omp/auth-policy.d.ts.map +1 -0
  34. package/lib/agent-cli-provider/omp/auth-policy.js +98 -0
  35. package/lib/agent-cli-provider/omp/auth-policy.js.map +1 -0
  36. package/lib/agent-cli-provider/{omp-release.d.ts → omp/release.d.ts} +1 -1
  37. package/lib/agent-cli-provider/omp/release.d.ts.map +1 -0
  38. package/lib/agent-cli-provider/{omp-release.js → omp/release.js} +1 -1
  39. package/lib/agent-cli-provider/omp/release.js.map +1 -0
  40. package/lib/agent-cli-provider/{omp-rpc-bounds.d.ts → omp/rpc-bounds.d.ts} +1 -1
  41. package/lib/agent-cli-provider/omp/rpc-bounds.d.ts.map +1 -0
  42. package/lib/agent-cli-provider/{omp-rpc-bounds.js → omp/rpc-bounds.js} +1 -1
  43. package/lib/agent-cli-provider/omp/rpc-bounds.js.map +1 -0
  44. package/lib/agent-cli-provider/omp/rpc-driver-channel.d.ts +19 -0
  45. package/lib/agent-cli-provider/omp/rpc-driver-channel.d.ts.map +1 -0
  46. package/lib/agent-cli-provider/omp/rpc-driver-channel.js +109 -0
  47. package/lib/agent-cli-provider/omp/rpc-driver-channel.js.map +1 -0
  48. package/lib/agent-cli-provider/omp/rpc-driver-dispatch.d.ts +27 -0
  49. package/lib/agent-cli-provider/omp/rpc-driver-dispatch.d.ts.map +1 -0
  50. package/lib/agent-cli-provider/omp/rpc-driver-dispatch.js +135 -0
  51. package/lib/agent-cli-provider/omp/rpc-driver-dispatch.js.map +1 -0
  52. package/lib/agent-cli-provider/omp/rpc-driver-runner.d.ts +3 -0
  53. package/lib/agent-cli-provider/omp/rpc-driver-runner.d.ts.map +1 -0
  54. package/lib/agent-cli-provider/omp/rpc-driver-runner.js +205 -0
  55. package/lib/agent-cli-provider/omp/rpc-driver-runner.js.map +1 -0
  56. package/lib/agent-cli-provider/omp/rpc-driver-state.d.ts +80 -0
  57. package/lib/agent-cli-provider/omp/rpc-driver-state.d.ts.map +1 -0
  58. package/lib/agent-cli-provider/omp/rpc-driver-state.js +86 -0
  59. package/lib/agent-cli-provider/omp/rpc-driver-state.js.map +1 -0
  60. package/lib/agent-cli-provider/omp/rpc-driver.d.ts +3 -0
  61. package/lib/agent-cli-provider/omp/rpc-driver.d.ts.map +1 -0
  62. package/lib/agent-cli-provider/omp/rpc-driver.js +6 -0
  63. package/lib/agent-cli-provider/omp/rpc-driver.js.map +1 -0
  64. package/lib/agent-cli-provider/omp/rpc-event-lines.d.ts +8 -0
  65. package/lib/agent-cli-provider/omp/rpc-event-lines.d.ts.map +1 -0
  66. package/lib/agent-cli-provider/omp/rpc-event-lines.js +59 -0
  67. package/lib/agent-cli-provider/omp/rpc-event-lines.js.map +1 -0
  68. package/lib/agent-cli-provider/omp/rpc-events.d.ts +16 -0
  69. package/lib/agent-cli-provider/omp/rpc-events.d.ts.map +1 -0
  70. package/lib/agent-cli-provider/omp/rpc-events.js +115 -0
  71. package/lib/agent-cli-provider/omp/rpc-events.js.map +1 -0
  72. package/lib/agent-cli-provider/{omp-rpc-protocol.d.ts → omp/rpc-protocol-contract.d.ts} +1 -13
  73. package/lib/agent-cli-provider/omp/rpc-protocol-contract.d.ts.map +1 -0
  74. package/lib/agent-cli-provider/omp/rpc-protocol-contract.js +54 -0
  75. package/lib/agent-cli-provider/omp/rpc-protocol-contract.js.map +1 -0
  76. package/lib/agent-cli-provider/omp/rpc-protocol.d.ts +15 -0
  77. package/lib/agent-cli-provider/omp/rpc-protocol.d.ts.map +1 -0
  78. package/lib/agent-cli-provider/omp/rpc-protocol.js +208 -0
  79. package/lib/agent-cli-provider/omp/rpc-protocol.js.map +1 -0
  80. package/lib/agent-cli-provider/{omp-rpc-session.d.ts → omp/rpc-session.d.ts} +1 -1
  81. package/lib/agent-cli-provider/omp/rpc-session.d.ts.map +1 -0
  82. package/lib/agent-cli-provider/{omp-rpc-session.js → omp/rpc-session.js} +1 -1
  83. package/lib/agent-cli-provider/omp/rpc-session.js.map +1 -0
  84. package/lib/agent-cli-provider/omp/sdk-contract.d.ts +34 -0
  85. package/lib/agent-cli-provider/omp/sdk-contract.d.ts.map +1 -0
  86. package/lib/agent-cli-provider/omp/sdk-contract.js +81 -0
  87. package/lib/agent-cli-provider/omp/sdk-contract.js.map +1 -0
  88. package/lib/agent-cli-provider/omp/sdk-process-credentials.d.ts +6 -0
  89. package/lib/agent-cli-provider/omp/sdk-process-credentials.d.ts.map +1 -0
  90. package/lib/agent-cli-provider/omp/sdk-process-credentials.js +44 -0
  91. package/lib/agent-cli-provider/omp/sdk-process-credentials.js.map +1 -0
  92. package/lib/agent-cli-provider/omp/sdk-process-error.d.ts +5 -0
  93. package/lib/agent-cli-provider/omp/sdk-process-error.d.ts.map +1 -0
  94. package/lib/agent-cli-provider/omp/sdk-process-error.js +13 -0
  95. package/lib/agent-cli-provider/omp/sdk-process-error.js.map +1 -0
  96. package/lib/agent-cli-provider/omp/sdk-process-io.d.ts +18 -0
  97. package/lib/agent-cli-provider/omp/sdk-process-io.d.ts.map +1 -0
  98. package/lib/agent-cli-provider/omp/sdk-process-io.js +80 -0
  99. package/lib/agent-cli-provider/omp/sdk-process-io.js.map +1 -0
  100. package/lib/agent-cli-provider/omp/sdk-process-private-runtime.d.ts +51 -0
  101. package/lib/agent-cli-provider/omp/sdk-process-private-runtime.d.ts.map +1 -0
  102. package/lib/agent-cli-provider/omp/sdk-process-private-runtime.js +154 -0
  103. package/lib/agent-cli-provider/omp/sdk-process-private-runtime.js.map +1 -0
  104. package/lib/agent-cli-provider/omp/sdk-process-result.d.ts +26 -0
  105. package/lib/agent-cli-provider/omp/sdk-process-result.d.ts.map +1 -0
  106. package/lib/agent-cli-provider/omp/sdk-process-result.js +117 -0
  107. package/lib/agent-cli-provider/omp/sdk-process-result.js.map +1 -0
  108. package/lib/agent-cli-provider/omp/sdk-process-runner.d.ts +7 -0
  109. package/lib/agent-cli-provider/omp/sdk-process-runner.d.ts.map +1 -0
  110. package/lib/agent-cli-provider/omp/sdk-process-runner.js +204 -0
  111. package/lib/agent-cli-provider/omp/sdk-process-runner.js.map +1 -0
  112. package/lib/agent-cli-provider/omp/sdk-protocol-collector.d.ts +3 -0
  113. package/lib/agent-cli-provider/omp/sdk-protocol-collector.d.ts.map +1 -0
  114. package/lib/agent-cli-provider/omp/sdk-protocol-collector.js +145 -0
  115. package/lib/agent-cli-provider/omp/sdk-protocol-collector.js.map +1 -0
  116. package/lib/agent-cli-provider/omp/sdk-protocol-frame.d.ts +4 -0
  117. package/lib/agent-cli-provider/omp/sdk-protocol-frame.d.ts.map +1 -0
  118. package/lib/agent-cli-provider/omp/sdk-protocol-frame.js +183 -0
  119. package/lib/agent-cli-provider/omp/sdk-protocol-frame.js.map +1 -0
  120. package/lib/agent-cli-provider/omp/sdk-protocol-request.d.ts +8 -0
  121. package/lib/agent-cli-provider/omp/sdk-protocol-request.d.ts.map +1 -0
  122. package/lib/agent-cli-provider/omp/sdk-protocol-request.js +170 -0
  123. package/lib/agent-cli-provider/omp/sdk-protocol-request.js.map +1 -0
  124. package/lib/agent-cli-provider/omp/sdk-protocol-result.d.ts +5 -0
  125. package/lib/agent-cli-provider/omp/sdk-protocol-result.d.ts.map +1 -0
  126. package/lib/agent-cli-provider/omp/sdk-protocol-result.js +74 -0
  127. package/lib/agent-cli-provider/omp/sdk-protocol-result.js.map +1 -0
  128. package/lib/agent-cli-provider/omp/sdk-protocol-types.d.ts +94 -0
  129. package/lib/agent-cli-provider/omp/sdk-protocol-types.d.ts.map +1 -0
  130. package/lib/agent-cli-provider/omp/sdk-protocol-types.js +54 -0
  131. package/lib/agent-cli-provider/omp/sdk-protocol-types.js.map +1 -0
  132. package/lib/agent-cli-provider/omp/sdk-protocol-value.d.ts +18 -0
  133. package/lib/agent-cli-provider/omp/sdk-protocol-value.d.ts.map +1 -0
  134. package/lib/agent-cli-provider/omp/sdk-protocol-value.js +229 -0
  135. package/lib/agent-cli-provider/omp/sdk-protocol-value.js.map +1 -0
  136. package/lib/agent-cli-provider/omp/sdk-protocol.d.ts +7 -0
  137. package/lib/agent-cli-provider/omp/sdk-protocol.d.ts.map +1 -0
  138. package/lib/agent-cli-provider/omp/sdk-protocol.js +28 -0
  139. package/lib/agent-cli-provider/omp/sdk-protocol.js.map +1 -0
  140. package/lib/agent-cli-provider/omp/sdk-runtime.d.ts +29 -0
  141. package/lib/agent-cli-provider/omp/sdk-runtime.d.ts.map +1 -0
  142. package/lib/agent-cli-provider/omp/sdk-runtime.js +110 -0
  143. package/lib/agent-cli-provider/omp/sdk-runtime.js.map +1 -0
  144. package/lib/agent-cli-provider/omp/sdk-settings-auth.d.ts +3 -0
  145. package/lib/agent-cli-provider/omp/sdk-settings-auth.d.ts.map +1 -0
  146. package/lib/agent-cli-provider/omp/sdk-settings-auth.js +86 -0
  147. package/lib/agent-cli-provider/omp/sdk-settings-auth.js.map +1 -0
  148. package/lib/agent-cli-provider/omp/sdk-settings-constants.d.ts +26 -0
  149. package/lib/agent-cli-provider/omp/sdk-settings-constants.d.ts.map +1 -0
  150. package/lib/agent-cli-provider/omp/sdk-settings-constants.js +148 -0
  151. package/lib/agent-cli-provider/omp/sdk-settings-constants.js.map +1 -0
  152. package/lib/agent-cli-provider/omp/sdk-settings-model-fields.d.ts +5 -0
  153. package/lib/agent-cli-provider/omp/sdk-settings-model-fields.d.ts.map +1 -0
  154. package/lib/agent-cli-provider/omp/sdk-settings-model-fields.js +198 -0
  155. package/lib/agent-cli-provider/omp/sdk-settings-model-fields.js.map +1 -0
  156. package/lib/agent-cli-provider/omp/sdk-settings-model.d.ts +4 -0
  157. package/lib/agent-cli-provider/omp/sdk-settings-model.d.ts.map +1 -0
  158. package/lib/agent-cli-provider/omp/sdk-settings-model.js +163 -0
  159. package/lib/agent-cli-provider/omp/sdk-settings-model.js.map +1 -0
  160. package/lib/agent-cli-provider/omp/sdk-settings-normalize.d.ts +18 -0
  161. package/lib/agent-cli-provider/omp/sdk-settings-normalize.d.ts.map +1 -0
  162. package/lib/agent-cli-provider/omp/sdk-settings-normalize.js +148 -0
  163. package/lib/agent-cli-provider/omp/sdk-settings-normalize.js.map +1 -0
  164. package/lib/agent-cli-provider/omp/sdk-settings-selector.d.ts +3 -0
  165. package/lib/agent-cli-provider/omp/sdk-settings-selector.d.ts.map +1 -0
  166. package/lib/agent-cli-provider/omp/sdk-settings-selector.js +22 -0
  167. package/lib/agent-cli-provider/omp/sdk-settings-selector.js.map +1 -0
  168. package/lib/agent-cli-provider/omp/sdk-settings-types.d.ts +68 -0
  169. package/lib/agent-cli-provider/omp/sdk-settings-types.d.ts.map +1 -0
  170. package/lib/agent-cli-provider/omp/sdk-settings-types.js +19 -0
  171. package/lib/agent-cli-provider/omp/sdk-settings-types.js.map +1 -0
  172. package/lib/agent-cli-provider/omp/sdk-settings-values.d.ts +14 -0
  173. package/lib/agent-cli-provider/omp/sdk-settings-values.d.ts.map +1 -0
  174. package/lib/agent-cli-provider/omp/sdk-settings-values.js +112 -0
  175. package/lib/agent-cli-provider/omp/sdk-settings-values.js.map +1 -0
  176. package/lib/agent-cli-provider/omp/sdk-settings.d.ts +5 -0
  177. package/lib/agent-cli-provider/omp/sdk-settings.d.ts.map +1 -0
  178. package/lib/agent-cli-provider/omp/sdk-settings.js +16 -0
  179. package/lib/agent-cli-provider/omp/sdk-settings.js.map +1 -0
  180. package/lib/agent-cli-provider/omp/sdk-sidecar-context.d.ts +11 -0
  181. package/lib/agent-cli-provider/omp/sdk-sidecar-context.d.ts.map +1 -0
  182. package/lib/agent-cli-provider/omp/sdk-sidecar-context.js +171 -0
  183. package/lib/agent-cli-provider/omp/sdk-sidecar-context.js.map +1 -0
  184. package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.d.ts +5 -0
  185. package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.d.ts.map +1 -0
  186. package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.js +94 -0
  187. package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.js.map +1 -0
  188. package/lib/agent-cli-provider/omp/sdk-sidecar-execute.d.ts +5 -0
  189. package/lib/agent-cli-provider/omp/sdk-sidecar-execute.d.ts.map +1 -0
  190. package/lib/agent-cli-provider/omp/sdk-sidecar-execute.js +175 -0
  191. package/lib/agent-cli-provider/omp/sdk-sidecar-execute.js.map +1 -0
  192. package/lib/agent-cli-provider/omp/sdk-sidecar-output.d.ts +5 -0
  193. package/lib/agent-cli-provider/omp/sdk-sidecar-output.d.ts.map +1 -0
  194. package/lib/agent-cli-provider/omp/sdk-sidecar-output.js +216 -0
  195. package/lib/agent-cli-provider/omp/sdk-sidecar-output.js.map +1 -0
  196. package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.d.ts +11 -0
  197. package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.d.ts.map +1 -0
  198. package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.js +265 -0
  199. package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.js.map +1 -0
  200. package/lib/agent-cli-provider/omp/sdk-sidecar-types.d.ts +148 -0
  201. package/lib/agent-cli-provider/omp/sdk-sidecar-types.d.ts.map +1 -0
  202. package/lib/agent-cli-provider/omp/sdk-sidecar-types.js +84 -0
  203. package/lib/agent-cli-provider/omp/sdk-sidecar-types.js.map +1 -0
  204. package/lib/agent-cli-provider/omp/sdk-sidecar.d.ts +4 -0
  205. package/lib/agent-cli-provider/omp/sdk-sidecar.d.ts.map +1 -0
  206. package/lib/agent-cli-provider/omp/sdk-sidecar.js +9 -0
  207. package/lib/agent-cli-provider/omp/sdk-sidecar.js.map +1 -0
  208. package/lib/agent-cli-provider/process-runner.d.ts +1 -0
  209. package/lib/agent-cli-provider/process-runner.d.ts.map +1 -1
  210. package/lib/agent-cli-provider/process-runner.js +19 -6
  211. package/lib/agent-cli-provider/process-runner.js.map +1 -1
  212. package/lib/agent-cli-provider/provider-registry.d.ts +18 -4
  213. package/lib/agent-cli-provider/provider-registry.d.ts.map +1 -1
  214. package/lib/agent-cli-provider/provider-registry.js +21 -7
  215. package/lib/agent-cli-provider/provider-registry.js.map +1 -1
  216. package/lib/agent-cli-provider/single-agent-runtime.d.ts +10 -1
  217. package/lib/agent-cli-provider/single-agent-runtime.d.ts.map +1 -1
  218. package/lib/agent-cli-provider/single-agent-runtime.js +378 -11
  219. package/lib/agent-cli-provider/single-agent-runtime.js.map +1 -1
  220. package/lib/agent-cli-provider/types.d.ts +110 -2
  221. package/lib/agent-cli-provider/types.d.ts.map +1 -1
  222. package/lib/agent-cli-provider/types.js.map +1 -1
  223. package/npm-shrinkwrap.json +18116 -0
  224. package/package.json +16 -3
  225. package/scripts/omp/bun-ffi.d.ts +28 -0
  226. package/scripts/omp/host-supervisor-cleanup.ts +100 -0
  227. package/scripts/omp/host-supervisor-launch.ts +38 -0
  228. package/scripts/omp/host-supervisor-native.ts +181 -0
  229. package/scripts/omp/host-supervisor-tracker.ts +258 -0
  230. package/scripts/omp/host-supervisor.ts +298 -0
  231. package/scripts/omp/promise-gate.ts +13 -0
  232. package/scripts/omp/runtime-identities.js +283 -0
  233. package/scripts/omp/runtime-lock.js +232 -0
  234. package/scripts/omp/runtime-release.js +105 -0
  235. package/scripts/omp/runtime.js +33 -0
  236. package/scripts/omp/sidecar.ts +124 -0
  237. package/scripts/opcore-introduced-check.js +5 -0
  238. package/scripts/release-preflight.js +19 -0
  239. package/src/agent-cli-provider/adapters/acp.ts +18 -17
  240. package/src/agent-cli-provider/adapters/omp-policy.ts +45 -0
  241. package/src/agent-cli-provider/adapters/omp.ts +9 -155
  242. package/src/agent-cli-provider/adapters/pi.ts +15 -145
  243. package/src/agent-cli-provider/assistant-stream.ts +155 -0
  244. package/src/agent-cli-provider/contract-actions.ts +14 -2
  245. package/src/agent-cli-provider/contract-invoke.ts +77 -40
  246. package/src/agent-cli-provider/contract-support.ts +83 -12
  247. package/src/agent-cli-provider/index.ts +60 -5
  248. package/src/agent-cli-provider/omp/auth-policy.ts +126 -0
  249. package/src/agent-cli-provider/omp/rpc-driver-channel.ts +144 -0
  250. package/src/agent-cli-provider/omp/rpc-driver-dispatch.ts +177 -0
  251. package/src/agent-cli-provider/omp/rpc-driver-runner.ts +199 -0
  252. package/src/agent-cli-provider/omp/rpc-driver-state.ts +165 -0
  253. package/src/agent-cli-provider/omp/rpc-driver.ts +8 -0
  254. package/src/agent-cli-provider/omp/rpc-event-lines.ts +58 -0
  255. package/src/agent-cli-provider/omp/rpc-events.ts +154 -0
  256. package/src/agent-cli-provider/omp/rpc-protocol-contract.ts +77 -0
  257. package/src/agent-cli-provider/{omp-rpc-protocol.ts → omp/rpc-protocol.ts} +9 -111
  258. package/src/agent-cli-provider/omp/sdk-contract.ts +123 -0
  259. package/src/agent-cli-provider/omp/sdk-process-credentials.ts +55 -0
  260. package/src/agent-cli-provider/omp/sdk-process-error.ts +9 -0
  261. package/src/agent-cli-provider/omp/sdk-process-io.ts +92 -0
  262. package/src/agent-cli-provider/omp/sdk-process-private-runtime.ts +249 -0
  263. package/src/agent-cli-provider/omp/sdk-process-result.ts +181 -0
  264. package/src/agent-cli-provider/omp/sdk-process-runner.ts +281 -0
  265. package/src/agent-cli-provider/omp/sdk-protocol-collector.ts +140 -0
  266. package/src/agent-cli-provider/omp/sdk-protocol-frame.ts +260 -0
  267. package/src/agent-cli-provider/omp/sdk-protocol-request.ts +181 -0
  268. package/src/agent-cli-provider/omp/sdk-protocol-result.ts +80 -0
  269. package/src/agent-cli-provider/omp/sdk-protocol-types.ts +156 -0
  270. package/src/agent-cli-provider/omp/sdk-protocol-value.ts +234 -0
  271. package/src/agent-cli-provider/omp/sdk-protocol.ts +46 -0
  272. package/src/agent-cli-provider/omp/sdk-runtime.ts +159 -0
  273. package/src/agent-cli-provider/omp/sdk-settings-auth.ts +78 -0
  274. package/src/agent-cli-provider/omp/sdk-settings-constants.ts +147 -0
  275. package/src/agent-cli-provider/omp/sdk-settings-model-fields.ts +233 -0
  276. package/src/agent-cli-provider/omp/sdk-settings-model.ts +238 -0
  277. package/src/agent-cli-provider/omp/sdk-settings-normalize.ts +242 -0
  278. package/src/agent-cli-provider/omp/sdk-settings-selector.ts +28 -0
  279. package/src/agent-cli-provider/omp/sdk-settings-types.ts +88 -0
  280. package/src/agent-cli-provider/omp/sdk-settings-values.ts +118 -0
  281. package/src/agent-cli-provider/omp/sdk-settings.ts +33 -0
  282. package/src/agent-cli-provider/omp/sdk-sidecar-context.ts +199 -0
  283. package/src/agent-cli-provider/omp/sdk-sidecar-credentials.ts +100 -0
  284. package/src/agent-cli-provider/omp/sdk-sidecar-execute.ts +201 -0
  285. package/src/agent-cli-provider/omp/sdk-sidecar-output.ts +235 -0
  286. package/src/agent-cli-provider/omp/sdk-sidecar-runtime.ts +244 -0
  287. package/src/agent-cli-provider/omp/sdk-sidecar-types.ts +173 -0
  288. package/src/agent-cli-provider/omp/sdk-sidecar.ts +3 -0
  289. package/src/agent-cli-provider/process-runner.ts +22 -8
  290. package/src/agent-cli-provider/provider-registry.ts +29 -10
  291. package/src/agent-cli-provider/single-agent-runtime.ts +444 -18
  292. package/src/agent-cli-provider/types.ts +131 -3
  293. package/src/command-cleanup-ownership.js +15 -0
  294. package/task-lib/omp-sdk-runtime.js +8 -0
  295. package/task-lib/runner.js +121 -40
  296. package/task-lib/sdk-watcher.js +154 -0
  297. package/lib/agent-cli-provider/omp-release.d.ts.map +0 -1
  298. package/lib/agent-cli-provider/omp-release.js.map +0 -1
  299. package/lib/agent-cli-provider/omp-rpc-bounds.d.ts.map +0 -1
  300. package/lib/agent-cli-provider/omp-rpc-bounds.js.map +0 -1
  301. package/lib/agent-cli-provider/omp-rpc-driver.d.ts +0 -40
  302. package/lib/agent-cli-provider/omp-rpc-driver.d.ts.map +0 -1
  303. package/lib/agent-cli-provider/omp-rpc-driver.js +0 -519
  304. package/lib/agent-cli-provider/omp-rpc-driver.js.map +0 -1
  305. package/lib/agent-cli-provider/omp-rpc-events.d.ts +0 -28
  306. package/lib/agent-cli-provider/omp-rpc-events.d.ts.map +0 -1
  307. package/lib/agent-cli-provider/omp-rpc-events.js +0 -264
  308. package/lib/agent-cli-provider/omp-rpc-events.js.map +0 -1
  309. package/lib/agent-cli-provider/omp-rpc-protocol.d.ts.map +0 -1
  310. package/lib/agent-cli-provider/omp-rpc-protocol.js +0 -272
  311. package/lib/agent-cli-provider/omp-rpc-protocol.js.map +0 -1
  312. package/lib/agent-cli-provider/omp-rpc-session.d.ts.map +0 -1
  313. package/lib/agent-cli-provider/omp-rpc-session.js.map +0 -1
  314. package/src/agent-cli-provider/omp-rpc-driver.ts +0 -639
  315. package/src/agent-cli-provider/omp-rpc-events.ts +0 -318
  316. /package/src/agent-cli-provider/{omp-release.ts → omp/release.ts} +0 -0
  317. /package/src/agent-cli-provider/{omp-rpc-bounds.ts → omp/rpc-bounds.ts} +0 -0
  318. /package/src/agent-cli-provider/{omp-rpc-session.ts → omp/rpc-session.ts} +0 -0
@@ -0,0 +1,298 @@
1
+ /// <reference path="./bun-ffi.d.ts" />
2
+
3
+ import { spawn, type ChildProcess } from 'node:child_process';
4
+ import { closeSync } from 'node:fs';
5
+ import { ptr } from 'bun:ffi';
6
+
7
+ import {
8
+ awaitOutcome,
9
+ cleanupOwned,
10
+ holdOwnershipUntilEmpty,
11
+ type SemanticOutcome,
12
+ } from './host-supervisor-cleanup';
13
+ import { childOutcome, launchProtectedSidecar } from './host-supervisor-launch';
14
+ import {
15
+ EINTR,
16
+ POLLERR,
17
+ POLLHUP,
18
+ POLLIN,
19
+ POLLNVAL,
20
+ PR_GET_CHILD_SUBREAPER,
21
+ PR_SET_CHILD_SUBREAPER,
22
+ PR_SET_DUMPABLE,
23
+ errno,
24
+ installSupervisorProtection,
25
+ libc,
26
+ native,
27
+ pidfdOpen,
28
+ pidfdSendSignal,
29
+ } from './host-supervisor-native';
30
+ import {
31
+ closeTrackedIdentities,
32
+ discoverOwnedProcesses,
33
+ initializeProcessTracker,
34
+ processIdentity,
35
+ trackSemanticRoot,
36
+ } from './host-supervisor-tracker';
37
+ import { promiseGate } from './promise-gate';
38
+
39
+ const PROTOCOL_VERSION = 1;
40
+ const DISCOVERY_INTERVAL_MS = 5;
41
+ const DEFAULT_GRACE_MS = 250;
42
+ const DEFAULT_MAX_TRACKED_IDENTITIES = 4_096;
43
+ const DEFAULT_REAP_TIMEOUT_MS = 2_000;
44
+
45
+ type SignalName = NodeJS.Signals | null;
46
+
47
+ let semanticStarted = false;
48
+ let cancellationRequested = false;
49
+ let trackingUncertain = false;
50
+ let supervisorStartTime: string | undefined;
51
+ let discoveryTimer: NodeJS.Timeout | undefined;
52
+ let ownerPidfd: number | undefined;
53
+ let ownerPollDescriptor: Buffer | undefined;
54
+ let semanticChild: ChildProcess | undefined;
55
+ const cancellationGate = promiseGate<void>();
56
+ const ownerPidAtStart = process.ppid;
57
+
58
+ function requestCancellation(): void {
59
+ cancellationRequested = true;
60
+ cancellationGate.resolve();
61
+ }
62
+
63
+ function emit(value: object): void {
64
+ process.stdout.write(`${JSON.stringify(value)}\n`);
65
+ }
66
+
67
+ function errorAttestation(
68
+ code: 'capability-unavailable' | 'cleanup-uncertain' | 'invalid-invocation'
69
+ ): void {
70
+ emit({
71
+ protocolVersion: PROTOCOL_VERSION,
72
+ type: 'cleanup-attestation',
73
+ status: 'error',
74
+ code,
75
+ semanticStarted,
76
+ });
77
+ }
78
+
79
+ function assertCapability(): void {
80
+ if (process.platform !== 'linux' || !['x64', 'arm64'].includes(process.arch)) {
81
+ throw new Error('unsupported Linux supervisor platform');
82
+ }
83
+ const selfIdentity = processIdentity(process.pid);
84
+ if (selfIdentity === undefined) throw new Error('supervisor process identity unavailable');
85
+ supervisorStartTime = selfIdentity.startTime;
86
+ if (native.prctl(PR_SET_CHILD_SUBREAPER, 1, 0, 0, 0) !== 0) {
87
+ throw new Error('PR_SET_CHILD_SUBREAPER unavailable');
88
+ }
89
+ const observed = new Uint32Array(1);
90
+ if (native.prctl(PR_GET_CHILD_SUBREAPER, ptr(observed), 0, 0, 0) !== 0 || observed[0] !== 1) {
91
+ throw new Error('child subreaper state could not be attested');
92
+ }
93
+ if (native.prctl(PR_SET_DUMPABLE, 0, 0, 0, 0) !== 0) {
94
+ throw new Error('supervisor signal hardening unavailable');
95
+ }
96
+ const selfPidfd = pidfdOpen(process.pid);
97
+ if (selfPidfd < 0) throw new Error('pidfd_open unavailable');
98
+ try {
99
+ if (pidfdSendSignal(selfPidfd, 0) !== 0) {
100
+ throw new Error('pidfd_send_signal unavailable');
101
+ }
102
+ } finally {
103
+ native.close(selfPidfd);
104
+ }
105
+ const ownerBefore = processIdentity(ownerPidAtStart);
106
+ if (ownerPidAtStart <= 1 || ownerBefore === undefined) {
107
+ throw new Error('parent process identity unavailable');
108
+ }
109
+ ownerPidfd = pidfdOpen(ownerPidAtStart);
110
+ const ownerAfter = processIdentity(ownerPidAtStart);
111
+ if (
112
+ ownerPidfd < 0 ||
113
+ ownerAfter?.startTime !== ownerBefore.startTime ||
114
+ process.ppid !== ownerPidAtStart
115
+ ) {
116
+ if (ownerPidfd >= 0) native.close(ownerPidfd);
117
+ ownerPidfd = undefined;
118
+ throw new Error('parent pidfd ownership unavailable');
119
+ }
120
+ ownerPollDescriptor = Buffer.alloc(8);
121
+ ownerPollDescriptor.writeInt32LE(ownerPidfd, 0);
122
+ ownerPollDescriptor.writeInt16LE(POLLIN, 4);
123
+ }
124
+
125
+ function ownerProcessExited(): boolean {
126
+ if (process.ppid !== ownerPidAtStart) return true;
127
+ if (ownerPidfd === undefined || ownerPollDescriptor === undefined) {
128
+ throw new Error('parent pidfd poll state unavailable');
129
+ }
130
+ ownerPollDescriptor.writeInt16LE(0, 6);
131
+ const result = native.poll(ptr(ownerPollDescriptor), 1, 0);
132
+ if (result < 0) {
133
+ if (errno() === EINTR) return false;
134
+ throw new Error('parent pidfd poll failed');
135
+ }
136
+ const events = ownerPollDescriptor.readInt16LE(6);
137
+ return result > 0 && (events & (POLLIN | POLLERR | POLLHUP | POLLNVAL)) !== 0;
138
+ }
139
+
140
+ async function main(): Promise<void> {
141
+ if (process.argv[2] === '--launch-protected') {
142
+ try {
143
+ await launchProtectedSidecar();
144
+ } catch {
145
+ process.exitCode = 70;
146
+ }
147
+ return;
148
+ }
149
+ process.once('SIGTERM', requestCancellation);
150
+ process.once('SIGINT', requestCancellation);
151
+ try {
152
+ assertCapability();
153
+ } catch {
154
+ errorAttestation('capability-unavailable');
155
+ process.exitCode = 70;
156
+ return;
157
+ }
158
+ if (process.argv[2] === '--probe') {
159
+ try {
160
+ installSupervisorProtection(ownerPidAtStart);
161
+ } catch {
162
+ errorAttestation('capability-unavailable');
163
+ process.exitCode = 70;
164
+ return;
165
+ }
166
+ emit({
167
+ protocolVersion: PROTOCOL_VERSION,
168
+ type: 'cleanup-attestation',
169
+ status: 'clean',
170
+ mode: 'linux-subreaper-pidfd',
171
+ subreaper: true,
172
+ pidfd: true,
173
+ terminalBuffered: true,
174
+ ownedProcessCount: 0,
175
+ cancelled: false,
176
+ semantic: { exitCode: 0, signal: null },
177
+ });
178
+ return;
179
+ }
180
+ const [sidecarPath, requestPath, graceSource, reapSource, identityCapSource] =
181
+ process.argv.slice(2);
182
+ const graceMs = Number(graceSource ?? DEFAULT_GRACE_MS);
183
+ const reapTimeoutMs = Number(reapSource ?? DEFAULT_REAP_TIMEOUT_MS);
184
+ const identityCap = Number(identityCapSource ?? DEFAULT_MAX_TRACKED_IDENTITIES);
185
+ if (
186
+ !sidecarPath ||
187
+ !requestPath ||
188
+ !Number.isSafeInteger(graceMs) ||
189
+ graceMs < 0 ||
190
+ !Number.isSafeInteger(reapTimeoutMs) ||
191
+ reapTimeoutMs <= 0 ||
192
+ !Number.isSafeInteger(identityCap) ||
193
+ identityCap < 8 ||
194
+ identityCap > DEFAULT_MAX_TRACKED_IDENTITIES
195
+ ) {
196
+ errorAttestation('invalid-invocation');
197
+ process.exitCode = 64;
198
+ return;
199
+ }
200
+ initializeProcessTracker(supervisorStartTime as string, identityCap);
201
+
202
+ let outcomePromise: Promise<SemanticOutcome>;
203
+ try {
204
+ semanticChild = spawn(
205
+ process.execPath,
206
+ [
207
+ process.argv[1] as string,
208
+ '--launch-protected',
209
+ String(process.pid),
210
+ sidecarPath,
211
+ requestPath,
212
+ ],
213
+ {
214
+ cwd: process.cwd(),
215
+ detached: true,
216
+ env: process.env,
217
+ shell: false,
218
+ stdio: ['ignore', 4, 'inherit', 3],
219
+ windowsHide: true,
220
+ }
221
+ );
222
+ semanticStarted = true;
223
+ if (semanticChild.pid === undefined || semanticChild.pid <= 1) {
224
+ throw new Error('semantic PID unavailable');
225
+ }
226
+ outcomePromise = childOutcome(semanticChild);
227
+ if (!trackSemanticRoot(semanticChild.pid)) {
228
+ const fastOutcome = await awaitOutcome(outcomePromise, Date.now() + 100);
229
+ if (fastOutcome === undefined) throw new Error('semantic PID identity unavailable');
230
+ }
231
+ discoveryTimer = setInterval(() => {
232
+ try {
233
+ if (ownerProcessExited()) requestCancellation();
234
+ discoverOwnedProcesses();
235
+ } catch {
236
+ trackingUncertain = true;
237
+ requestCancellation();
238
+ try {
239
+ semanticChild?.kill('SIGTERM');
240
+ } catch {
241
+ // Cleanup remains fail-closed and cannot attest clean after tracking uncertainty.
242
+ }
243
+ }
244
+ }, DISCOVERY_INTERVAL_MS);
245
+ discoveryTimer.unref();
246
+ } catch {
247
+ if (semanticStarted) await holdOwnershipUntilEmpty();
248
+ errorAttestation('cleanup-uncertain');
249
+ process.exitCode = 70;
250
+ return;
251
+ }
252
+
253
+ let outcome: SemanticOutcome | undefined;
254
+ try {
255
+ const first = await Promise.race([
256
+ outcomePromise.then((value) => ({ kind: 'outcome' as const, value })),
257
+ cancellationGate.promise.then(() => ({ kind: 'cancel' as const })),
258
+ ]);
259
+ if (first.kind === 'outcome') outcome = first.value;
260
+ outcome = await cleanupOwned(
261
+ semanticChild.pid as number,
262
+ outcome === undefined ? outcomePromise : Promise.resolve(outcome),
263
+ cancellationRequested ? graceMs : 0,
264
+ reapTimeoutMs
265
+ );
266
+ if (trackingUncertain) throw new Error('owned process tracking became uncertain');
267
+ emit({
268
+ protocolVersion: PROTOCOL_VERSION,
269
+ type: 'cleanup-attestation',
270
+ status: 'clean',
271
+ mode: 'linux-subreaper-pidfd',
272
+ subreaper: true,
273
+ pidfd: true,
274
+ terminalBuffered: true,
275
+ ownedProcessCount: 0,
276
+ cancelled: cancellationRequested,
277
+ semantic: outcome,
278
+ });
279
+ } catch {
280
+ await holdOwnershipUntilEmpty();
281
+ errorAttestation('cleanup-uncertain');
282
+ process.exitCode = 70;
283
+ } finally {
284
+ clearInterval(discoveryTimer);
285
+ process.removeListener('SIGTERM', requestCancellation);
286
+ process.removeListener('SIGINT', requestCancellation);
287
+ closeTrackedIdentities();
288
+ if (ownerPidfd !== undefined) native.close(ownerPidfd);
289
+ libc.close();
290
+ try {
291
+ closeSync(3);
292
+ } catch {
293
+ // Credential input may already be closed by the semantic child lifecycle.
294
+ }
295
+ }
296
+ }
297
+
298
+ void main();
@@ -0,0 +1,13 @@
1
+ export interface PromiseGate<T> {
2
+ readonly promise: Promise<T>;
3
+ readonly resolve: (value: T | PromiseLike<T>) => void;
4
+ readonly reject: (reason?: unknown) => void;
5
+ }
6
+
7
+ interface PromiseConstructorWithResolvers extends PromiseConstructor {
8
+ withResolvers<T>(): PromiseGate<T>;
9
+ }
10
+
11
+ export function promiseGate<T>(): PromiseGate<T> {
12
+ return (Promise as PromiseConstructorWithResolvers).withResolvers<T>();
13
+ }
@@ -0,0 +1,283 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const { execFileSync } = require('child_process');
6
+
7
+ const OMP_PACKAGE_NAME = '@oh-my-pi/pi-coding-agent';
8
+ const OMP_SDK_VERSION = '17.2.1';
9
+ const BUN_PACKAGE_NAME = 'bun';
10
+ const BUN_RUNTIME_VERSION = '1.3.14';
11
+ const SIDECAR_RELATIVE_PATH = path.join('scripts', 'omp', 'sidecar.ts');
12
+ const HOST_SUPERVISOR_RELATIVE_PATH = path.join('scripts', 'omp', 'host-supervisor.ts');
13
+ const HOST_SDK_PLATFORM_KEYS = Object.freeze(['linux:arm64', 'linux:x64']);
14
+
15
+ const BUN_PLATFORM_PACKAGES = Object.freeze({
16
+ 'darwin:arm64': '@oven/bun-darwin-aarch64',
17
+ 'darwin:x64': '@oven/bun-darwin-x64',
18
+ 'linux:arm64': '@oven/bun-linux-aarch64',
19
+ 'linux:x64': '@oven/bun-linux-x64',
20
+ 'win32:x64': '@oven/bun-windows-x64',
21
+ });
22
+ const OMP_NATIVE_PACKAGE_NAME = '@oh-my-pi/pi-natives';
23
+ const OMP_NATIVE_PLATFORM_PACKAGES = Object.freeze({
24
+ 'darwin:arm64': '@oh-my-pi/pi-natives-darwin-arm64',
25
+ 'darwin:x64': '@oh-my-pi/pi-natives-darwin-x64',
26
+ 'linux:arm64': '@oh-my-pi/pi-natives-linux-arm64',
27
+ 'linux:x64': '@oh-my-pi/pi-natives-linux-x64',
28
+ 'win32:x64': '@oh-my-pi/pi-natives-win32-x64',
29
+ });
30
+ const REQUIRED_OMP_SDK_SOURCES = Object.freeze([
31
+ 'scripts/omp/runtime.js',
32
+ 'scripts/omp/runtime-identities.js',
33
+ 'scripts/omp/runtime-lock.js',
34
+ 'scripts/omp/runtime-release.js',
35
+ 'scripts/omp/bun-ffi.d.ts',
36
+ 'scripts/omp/host-supervisor-cleanup.ts',
37
+ 'scripts/omp/host-supervisor-launch.ts',
38
+ 'scripts/omp/host-supervisor-native.ts',
39
+ 'scripts/omp/host-supervisor-tracker.ts',
40
+ 'scripts/omp/promise-gate.ts',
41
+ SIDECAR_RELATIVE_PATH.replaceAll('\\', '/'),
42
+ HOST_SUPERVISOR_RELATIVE_PATH.replaceAll('\\', '/'),
43
+ ]);
44
+ const OMP_SDK_PACKAGE_INTEGRITY =
45
+ 'sha512-Mg1IVCTyxZ+FnYd7AJtqxYEQClfPssgxF1airlFcm4d8j09cfuabh17n+3eprLL3/Un9fe3MOXha1NqICoY4Bg==';
46
+ const BUN_PACKAGE_INTEGRITY =
47
+ 'sha512-aB6GVd42x1Y5ie1K16SF+oLGtgSkwX9hgoDdIW88pjvfTccU8F1vfpoOt34QLv0dZ1v3XimtaxPlZUG81Gx9Zg==';
48
+ const OMP_NATIVE_PACKAGE_INTEGRITY =
49
+ 'sha512-74BJXOPPnTKPGG65p6pXIlh1sODwLCntSFh/5sp9GzZN+hcrwTF7kxJGscw2Ky5tQLle7EczlduPALpLOaE0gg==';
50
+ const OMP_NATIVE_PLATFORM_ASSET_INTEGRITIES = Object.freeze({
51
+ '@oh-my-pi/pi-natives-darwin-arm64':
52
+ 'sha512-V7FcEF/+d/WFTumucykmWwc8fsHzoGYBM0ZvLM3FJMWTl/j+OGe/3ZubsACgdLccKYr2CC61ygXH2RByK8T+HA==',
53
+ '@oh-my-pi/pi-natives-darwin-x64':
54
+ 'sha512-INODXqftsj1z3/x4Y/ajHbMY7MFRfUmplnvZc9HoSkmnWW6190frTlX2ZcQYUy7PUDlHCefkePaSGKbyy9HO2g==',
55
+ '@oh-my-pi/pi-natives-linux-arm64':
56
+ 'sha512-t1pIfLQp+L7QGR396fPaxvMArm0URjR5PfD3tU6F0VY4HMaS+cSBoLngh0na7SGk+EXnAz1X84kWTrb+Pz7K9w==',
57
+ '@oh-my-pi/pi-natives-linux-x64':
58
+ 'sha512-lhJNgkBbMO2wzyAn3zsWtrkZk3UpiSz5lAIpTEHRjZlc/0WwoJ2BTfyg26omROd5Ejio128lmeukM0RuobCTbw==',
59
+ '@oh-my-pi/pi-natives-win32-x64':
60
+ 'sha512-N1PZh3E8cyqQMgNfEQbNcneVTUd+1blUpILZDQr+YUraaECr2DdJg350kdFrPHMLKpgKrjaeKj4zn+V/Sx3zRw==',
61
+ });
62
+ const BUN_PLATFORM_ASSET_INTEGRITIES = Object.freeze({
63
+ '@oven/bun-darwin-aarch64':
64
+ 'sha512-Omj20SuiHBOUjUBIyqtkNjSUIjOtEOJwmbix/ZyFH4BaQ6OZTaaRWIR4TjHVz0yadHgli6lLTiAh1uarnvD49A==',
65
+ '@oven/bun-darwin-x64':
66
+ 'sha512-FFj3QdU/OhlDyZOJ8CWfN5eWLpRlT4qjZg7lMQi7jA6GuoY5ajlO1zWLP/MuHYRSbXQUvV52RejNi8DVnAp13w==',
67
+ '@oven/bun-darwin-x64-baseline':
68
+ 'sha512-OSfsTZstc898HHElhU4NccaBGOSSDn5VfahiVTnidZ9B/+wb7WTyfZJaBeJcfjwJ9H2W9uTh2TGtl3UfcXgV9g==',
69
+ '@oven/bun-freebsd-aarch64':
70
+ 'sha512-LIKrXaFxAHybVO5Pf+9XP2FHUj/5APvXTUKk9dqHm5iFz4oH+W24cmhjkJirNujh9hKeTyrpWSe3no9JZKowIw==',
71
+ '@oven/bun-freebsd-x64':
72
+ 'sha512-uwD+fGUH1ADpIF3B1U2jWzzb20QwRLZfj5QZ28GUCGrAJ/nTmWrD6YYGsblCY1wuhldRez3lU40AyuvSCyLYmw==',
73
+ '@oven/bun-linux-aarch64':
74
+ 'sha512-X5SsPZHs+iYO8R/efIcRtc7gT2Q2DgPfliCxEkx4cXBumwkw0c/EsHMNwH3EgGpCDaZ7IYVPhpCG/xBOQHEwZw==',
75
+ '@oven/bun-linux-aarch64-android':
76
+ 'sha512-y4kq5b85lsrmFb9Xvi4w9mA5IEFJkLMrSmYn06q24KjL9rUWDWO3VFZEtteZxUN5+ec3Zm5S8OnJw1umaCbVjA==',
77
+ '@oven/bun-linux-aarch64-musl':
78
+ 'sha512-jmqOA92Cd1NL/1XBd4bFkJLxQ86K0RW7ohxS2qzzAvuitO4JiIxjjTeCspoU44zCozH72HpfZfUE2On31OjnWA==',
79
+ '@oven/bun-linux-x64':
80
+ 'sha512-7OVTAKvwfPmSbIV1HpdOoVVx5VRc427GuPPne93N6vk4eQBPId9nXmZDh9/zGaKPdbVjVtQSZafWQoUjx38Utw==',
81
+ '@oven/bun-linux-x64-android':
82
+ 'sha512-qe9e1d+3VAEU7nAA2ol9Jvmy/o99PVMSgZhHn7Q/9O3YcDrfEqyQ8zm4zoe5qTEo8HZH0dN03Le0Ys2eQPs7eg==',
83
+ '@oven/bun-linux-x64-baseline':
84
+ 'sha512-q/8EdOC0yUE8FPeoOVq8/Pw5I9/tJaYmUfO/uDUAREx8IUnOJH1RJ5A3BjFqre8pvJoiZA9AovPJq5FnNNjSxA==',
85
+ '@oven/bun-linux-x64-musl':
86
+ 'sha512-GBCB/k/sIqcr06eTNgg7g46qiUv35Jasx4XiccJ/n7RGqrE4RWUD/XJBbWFprVPjvqd59+QtSnS99XGqvftHfg==',
87
+ '@oven/bun-linux-x64-musl-baseline':
88
+ 'sha512-n6iE71G4lQE4XkrZhQQcL5YUlxDbnq6nqV7zeQi33PMsLT/0kYE+RvHOtBWZ3w0wMdXZfINmp63hIb9ijUBGtw==',
89
+ '@oven/bun-windows-aarch64':
90
+ 'sha512-T7s3x/BsVKQObGU6QDkZeI6wKynzqGbBH1yI77jrrj5siElclxr3DQrDIk8CV4G5/SJq2HHq4kpLyYY2DKCSmA==',
91
+ '@oven/bun-windows-x64':
92
+ 'sha512-mUFWL3BoYkNpjd8e9PqROiFF/1Xeotq20mABJsiQH62jM1g5zqWh4khw1RZ6bX8Q8fWvlPaxG1PjofkmjUi3vg==',
93
+ '@oven/bun-windows-x64-baseline':
94
+ 'sha512-uIjLUC1S9DWgICzuoMba7vurBJnBruE4S5CxnvmZkdqWVXRzx1Rgu636HoH+k0qeaQCFh3jeG3JQ1y6fRHv0sw==',
95
+ });
96
+
97
+ function defaultReadPackageMetadata(packageName, packageRoot) {
98
+ const packageSegments = packageName.split('/');
99
+ let directory = path.resolve(packageRoot);
100
+
101
+ while (true) {
102
+ const packageJsonPath = path.join(
103
+ directory,
104
+ 'node_modules',
105
+ ...packageSegments,
106
+ 'package.json'
107
+ );
108
+ if (fs.existsSync(packageJsonPath)) {
109
+ return {
110
+ packageJsonPath,
111
+ manifest: JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')),
112
+ };
113
+ }
114
+
115
+ const parent = path.dirname(directory);
116
+ if (parent === directory) break;
117
+ directory = parent;
118
+ }
119
+
120
+ throw new Error(`Required local package ${packageName} is not installed`);
121
+ }
122
+
123
+ function defaultReadRuntimeVersion(executable) {
124
+ return execFileSync(executable, ['--version'], {
125
+ encoding: 'utf8',
126
+ stdio: ['ignore', 'pipe', 'pipe'],
127
+ windowsHide: true,
128
+ }).trim();
129
+ }
130
+ function defaultReadContainmentProbe(executable, supervisorPath) {
131
+ return execFileSync(executable, [supervisorPath, '--probe'], {
132
+ encoding: 'utf8',
133
+ stdio: ['ignore', 'pipe', 'pipe'],
134
+ windowsHide: true,
135
+ });
136
+ }
137
+
138
+ function assertPackageIdentity(packageName, expectedVersion, metadata) {
139
+ if (!metadata || typeof metadata !== 'object') {
140
+ throw new Error(`Unable to read installed metadata for ${packageName}`);
141
+ }
142
+ if (!metadata.manifest || metadata.manifest.name !== packageName) {
143
+ throw new Error(`Installed package identity for ${packageName} is invalid`);
144
+ }
145
+ if (metadata.manifest.version !== expectedVersion) {
146
+ throw new Error(
147
+ `Installed ${packageName} version drift: expected ${expectedVersion}, got ${
148
+ metadata.manifest.version || 'unknown'
149
+ }`
150
+ );
151
+ }
152
+ if (typeof metadata.packageJsonPath !== 'string' || metadata.packageJsonPath.length === 0) {
153
+ throw new Error(`Installed package path for ${packageName} is invalid`);
154
+ }
155
+ }
156
+
157
+ function resolveOmpSdkRuntime(options = {}) {
158
+ const runtimeOptions = Object.assign(
159
+ {
160
+ packageRoot: path.join(__dirname, '..', '..'),
161
+ platform: process.platform,
162
+ arch: process.arch,
163
+ fileExists: fs.existsSync,
164
+ readRuntimeVersion: defaultReadRuntimeVersion,
165
+ readContainmentProbe: defaultReadContainmentProbe,
166
+ },
167
+ options
168
+ );
169
+ const packageRoot = path.resolve(runtimeOptions.packageRoot);
170
+ const { platform, arch, fileExists, readRuntimeVersion, readContainmentProbe } = runtimeOptions;
171
+ const readPackageMetadata = runtimeOptions.readPackageMetadata
172
+ ? runtimeOptions.readPackageMetadata
173
+ : (name) => defaultReadPackageMetadata(name, packageRoot);
174
+
175
+ const platformKey = `${platform}:${arch}`;
176
+ if (!HOST_SDK_PLATFORM_KEYS.includes(platformKey)) {
177
+ throw new Error(`Unsupported OMP SDK host runtime platform: ${platform}/${arch}`);
178
+ }
179
+ const bunPlatformPackage = BUN_PLATFORM_PACKAGES[platformKey];
180
+ const ompNativePlatformPackage = OMP_NATIVE_PLATFORM_PACKAGES[platformKey];
181
+ if (!bunPlatformPackage || !ompNativePlatformPackage) {
182
+ throw new Error(`Unsupported OMP SDK host runtime platform: ${platform}/${arch}`);
183
+ }
184
+
185
+ const ompMetadata = readPackageMetadata(OMP_PACKAGE_NAME);
186
+ const ompNativeMetadata = readPackageMetadata(OMP_NATIVE_PACKAGE_NAME);
187
+ const ompNativePlatformMetadata = readPackageMetadata(ompNativePlatformPackage);
188
+ const bunMetadata = readPackageMetadata(BUN_PACKAGE_NAME);
189
+ const bunPlatformMetadata = readPackageMetadata(bunPlatformPackage);
190
+ assertPackageIdentity(OMP_PACKAGE_NAME, OMP_SDK_VERSION, ompMetadata);
191
+ assertPackageIdentity(OMP_NATIVE_PACKAGE_NAME, OMP_SDK_VERSION, ompNativeMetadata);
192
+ assertPackageIdentity(ompNativePlatformPackage, OMP_SDK_VERSION, ompNativePlatformMetadata);
193
+ assertPackageIdentity(BUN_PACKAGE_NAME, BUN_RUNTIME_VERSION, bunMetadata);
194
+ assertPackageIdentity(bunPlatformPackage, BUN_RUNTIME_VERSION, bunPlatformMetadata);
195
+
196
+ const ompPackagePath = path.dirname(ompMetadata.packageJsonPath);
197
+ const ompEntryPath = path.join(ompPackagePath, 'src', 'index.ts');
198
+ if (!fileExists(ompEntryPath)) {
199
+ throw new Error(`Pinned OMP SDK entry source is missing: ${ompEntryPath}`);
200
+ }
201
+
202
+ const bunPackagePath = path.dirname(bunMetadata.packageJsonPath);
203
+ const bunExecutable = path.join(bunPackagePath, 'bin', 'bun.exe');
204
+ if (!fileExists(bunExecutable)) {
205
+ throw new Error(`Pinned Bun executable is missing: ${bunExecutable}`);
206
+ }
207
+
208
+ let observedBunVersion;
209
+ try {
210
+ observedBunVersion = String(readRuntimeVersion(bunExecutable)).trim();
211
+ } catch (error) {
212
+ throw new Error(`Unable to attest pinned Bun executable: ${error.message}`);
213
+ }
214
+ if (observedBunVersion !== BUN_RUNTIME_VERSION) {
215
+ throw new Error(
216
+ `Bun executable version drift: expected ${BUN_RUNTIME_VERSION}, got ${
217
+ observedBunVersion || 'unknown'
218
+ }`
219
+ );
220
+ }
221
+
222
+ const sidecarPath = path.join(packageRoot, SIDECAR_RELATIVE_PATH);
223
+ if (!fileExists(sidecarPath)) {
224
+ throw new Error(`OMP SDK sidecar is missing: ${sidecarPath}`);
225
+ }
226
+ const hostSupervisorPath = path.join(packageRoot, HOST_SUPERVISOR_RELATIVE_PATH);
227
+ if (!fileExists(hostSupervisorPath)) {
228
+ throw new Error(`OMP SDK host supervisor is missing: ${hostSupervisorPath}`);
229
+ }
230
+ let containmentProbe;
231
+ try {
232
+ containmentProbe = JSON.parse(
233
+ String(readContainmentProbe(bunExecutable, hostSupervisorPath)).trim()
234
+ );
235
+ } catch (error) {
236
+ throw new Error(`Unable to attest Linux subreaper/pidfd containment: ${error.message}`);
237
+ }
238
+ if (
239
+ containmentProbe?.protocolVersion !== 1 ||
240
+ containmentProbe?.type !== 'cleanup-attestation' ||
241
+ containmentProbe?.status !== 'clean' ||
242
+ containmentProbe?.mode !== 'linux-subreaper-pidfd' ||
243
+ containmentProbe?.subreaper !== true ||
244
+ containmentProbe?.pidfd !== true ||
245
+ containmentProbe?.ownedProcessCount !== 0
246
+ ) {
247
+ throw new Error('Linux subreaper/pidfd containment probe returned invalid evidence');
248
+ }
249
+ return Object.freeze({
250
+ bunExecutable,
251
+ bunPackagePath,
252
+ bunPlatformPackage,
253
+ bunPlatformPackagePath: path.dirname(bunPlatformMetadata.packageJsonPath),
254
+ bunVersion: BUN_RUNTIME_VERSION,
255
+ ompNativePackagePath: path.dirname(ompNativeMetadata.packageJsonPath),
256
+ ompNativePlatformPackage,
257
+ ompNativePlatformPackagePath: path.dirname(ompNativePlatformMetadata.packageJsonPath),
258
+ ompEntryPath,
259
+ ompVersion: OMP_SDK_VERSION,
260
+ hostSupervisorPath,
261
+ sidecarPath,
262
+ });
263
+ }
264
+ module.exports = {
265
+ BUN_PACKAGE_INTEGRITY,
266
+ BUN_PACKAGE_NAME,
267
+ BUN_PLATFORM_ASSET_INTEGRITIES,
268
+ BUN_PLATFORM_PACKAGES,
269
+ BUN_RUNTIME_VERSION,
270
+ HOST_SDK_PLATFORM_KEYS,
271
+ HOST_SUPERVISOR_RELATIVE_PATH,
272
+ OMP_NATIVE_PACKAGE_INTEGRITY,
273
+ OMP_NATIVE_PACKAGE_NAME,
274
+ OMP_NATIVE_PLATFORM_ASSET_INTEGRITIES,
275
+ OMP_NATIVE_PLATFORM_PACKAGES,
276
+ OMP_PACKAGE_NAME,
277
+ OMP_SDK_PACKAGE_INTEGRITY,
278
+ OMP_SDK_VERSION,
279
+ REQUIRED_OMP_SDK_SOURCES,
280
+ SIDECAR_RELATIVE_PATH,
281
+ assertPackageIdentity,
282
+ resolveOmpSdkRuntime,
283
+ };