@the-open-engine/zeroshot 6.30.2 → 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,45 @@
1
+ export const OMP_CREDENTIAL_ENV_KEYS: readonly string[] = [
2
+ 'AIMLAPI_API_KEY', 'AI_GATEWAY_API_KEY', 'ALIBABA_CODING_PLAN_API_KEY', 'ALIBABA_TOKEN_PLAN_API_KEY',
3
+ 'ANTHROPIC_API_KEY', 'ANTHROPIC_FOUNDRY_API_KEY', 'ANTHROPIC_OAUTH_TOKEN', 'ANTHROPIC_SEARCH_API_KEY',
4
+ 'AWS_ACCESS_KEY_ID', 'AWS_BEARER_TOKEN_BEDROCK', 'AWS_SECRET_ACCESS_KEY', 'AZURE_OPENAI_API_KEY',
5
+ 'BAILIAN_TOKEN_PLAN_API_KEY', 'BRAVE_API_KEY', 'CEREBRAS_API_KEY', 'CLAUDE_CODE_CLIENT_CERT',
6
+ 'CLAUDE_CODE_CLIENT_KEY', 'CLOUDFLARE_AI_GATEWAY_API_KEY', 'COPILOT_GITHUB_TOKEN', 'CURSOR_ACCESS_TOKEN',
7
+ 'DEEPSEEK_API_KEY', 'EXA_API_KEY', 'FIREPASS_API_KEY', 'FIREWORKS_API_KEY', 'GEMINI_API_KEY', 'GH_TOKEN',
8
+ 'GITHUB_TOKEN', 'GITLAB_TOKEN', 'GOOGLE_API_KEY', 'GOOGLE_APPLICATION_CREDENTIALS', 'GOOGLE_CLOUD_API_KEY',
9
+ 'GROQ_API_KEY', 'HF_TOKEN', 'HUGGINGFACE_HUB_TOKEN', 'JINA_API_KEY', 'KAGI_API_KEY', 'KILO_API_KEY',
10
+ 'KIMI_SEARCH_API_KEY', 'LITELLM_API_KEY', 'LLAMA_CPP_API_KEY', 'LM_STUDIO_API_KEY', 'MINIMAX_API_KEY',
11
+ 'MINIMAX_CODE_API_KEY', 'MINIMAX_CODE_CN_API_KEY', 'MISTRAL_API_KEY', 'MOONSHOT_API_KEY',
12
+ 'MOONSHOT_SEARCH_API_KEY', 'NANO_GPT_API_KEY', 'NOVITA_API_KEY', 'NVIDIA_API_KEY', 'OLLAMA_API_KEY',
13
+ 'OLLAMA_CLOUD_API_KEY', 'OMP_AUTH_BROKER_TOKEN', 'OPENAI_API_KEY', 'OPENCODE_API_KEY', 'OPENROUTER_API_KEY',
14
+ 'PARALLEL_API_KEY', 'PERPLEXITY_API_KEY', 'PERPLEXITY_COOKIES', 'QIANFAN_API_KEY', 'QWEN_OAUTH_TOKEN',
15
+ 'QWEN_PORTAL_API_KEY', 'SEARXNG_BASIC_PASSWORD', 'SEARXNG_TOKEN', 'SILICONFLOW_API_KEY',
16
+ 'SILICONFLOW_CN_API_KEY', 'SMITHERY_API_KEY', 'SYNTHETIC_API_KEY', 'TAVILY_API_KEY',
17
+ 'TOGETHER_API_KEY', 'UMANS_AI_CODING_PLAN_API_KEY', 'VENICE_API_KEY', 'VLLM_API_KEY',
18
+ 'WAFER_SERVERLESS_API_KEY', 'XAI_API_KEY', 'XAI_OAUTH_TOKEN', 'XIAOMI_API_KEY',
19
+ 'XIAOMI_TOKEN_PLAN_AMS_API_KEY', 'XIAOMI_TOKEN_PLAN_CN_API_KEY', 'XIAOMI_TOKEN_PLAN_SGP_API_KEY',
20
+ 'ZAI_API_KEY', 'ZENMUX_API_KEY', 'ZHIPU_API_KEY',
21
+ ];
22
+
23
+ export const OMP_RETRYABLE_PATTERNS: readonly RegExp[] = [
24
+ /\brate(?:[_ -]?limit| limited)\b/i, /\bquota\b/i, /\bresource[_ -]?exhausted\b/i,
25
+ /\btemporar(?:y|ily)\b/i, /\boverloaded\b/i, /\bservice unavailable\b/i,
26
+ ];
27
+
28
+ export const OMP_PERMANENT_PATTERNS: readonly RegExp[] = [
29
+ /\bunsupported-protocol\b/i, /\bunsupported-limits\b/i, /\bunsupported-provider-cli\b/i,
30
+ /\bunsupported-ui-method\b/i, /\bunsupported-capability\b/i, /\bunsafe-config\b/i,
31
+ /\bmalformed-response\b/i, /\bmalformed-extension-ui-request\b/i, /\bmalformed-host-tool-call\b/i,
32
+ /\bmalformed-host-uri-request\b/i, /\bextension-error\b/i, /\blocal-only-prompt\b/i,
33
+ /\blifetime-request-id-exceeded\b/i, /\bpending-request-exceeded\b/i, /\bspawn-hook-failed\b/i,
34
+ /\bphysical-frame-too-large\b/i, /\bmalformed-physical-frame\b/i, /\binvalid-chunk-metadata\b/i,
35
+ /\binvalid-chunk-data\b/i, /\bchunk-sequence-must-start-at-zero\b/i, /\bchunk-sequence-mismatch\b/i,
36
+ /\bchunk-sequence-exceeds-declared-length\b/i, /\bchunk-sequence-length-mismatch\b/i,
37
+ /\bmalformed-json-in-reassembled-frame\b/i, /\bnon-object-reassembled-frame\b/i,
38
+ /\binvalid-utf8-in-reassembled-frame\b/i, /\binflight-reassembly-bytes-exceeded\b/i,
39
+ /\binterleaved-chunk-sequence\b/i, /\binterrupted-chunk-sequence\b/i,
40
+ /\bincomplete-physical-frame\b/i, /\bincomplete-chunk-sequence\b/i, /\boutbound-frame-too-large\b/i,
41
+ /\bpre-negotiation-rpc-chunk\b/i, /\b[\w-]+-bound-exceeded\b/i, /\bno available authenticated\b/i,
42
+ /\bno keyless model\b/i, /\bno valid authentication\b/i, /\bmissing api key\b/i,
43
+ /\brun\s*\/login\b/i, /\bunknown option\b/i, /\bfailed to load\b/i,
44
+ /\bcannot find module\b/i, /\bno such file or directory\b/i,
45
+ ];
@@ -2,9 +2,9 @@ import { contractError } from '../contract-errors';
2
2
  import { UnsupportedProviderCapabilityError } from '../errors';
3
3
  import { appendJsonSchemaPrompt } from '../schema';
4
4
  import { isRecord, unknownToMessage } from '../json';
5
- import { OMP_REMEDIATION, OMP_SUPPORTED_VERSION } from '../omp-release';
6
- import { parseNormalizedOmpRpcEventLine } from '../omp-rpc-events';
7
- import type { OmpSessionLaunch } from '../omp-rpc-session';
5
+ import { OMP_REMEDIATION, OMP_SUPPORTED_VERSION } from '../omp/release';
6
+ import { parseNormalizedOmpRpcEventLine } from '../omp/rpc-events';
7
+ import type { OmpSessionLaunch } from '../omp/rpc-session';
8
8
  import {
9
9
  InvalidProviderModelError,
10
10
  type BuildProviderCommandOptions,
@@ -29,6 +29,11 @@ import {
29
29
  resolveModelSpecWithConfig,
30
30
  warning,
31
31
  } from './common';
32
+ import {
33
+ OMP_CREDENTIAL_ENV_KEYS,
34
+ OMP_PERMANENT_PATTERNS,
35
+ OMP_RETRYABLE_PATTERNS,
36
+ } from './omp-policy';
32
37
 
33
38
  interface OmpConfigOverlay {
34
39
  readonly dir: string;
@@ -65,99 +70,7 @@ const LEVEL_MAPPING: Readonly<Record<ModelLevel, LevelModelSpec>> = {
65
70
  level3: { rank: 3, model: '@slow' },
66
71
  };
67
72
 
68
- // Verified against tagged v17.2.1 source: docs/environment-variables.md ("Model/provider
69
- // authentication", "GitHub/Copilot tokens", "Auth broker", web-search credentials, Bedrock,
70
- // Azure, Vertex sections) plus docs/providers.md's provider/env-var map. This is the full
71
- // official host credential inventory OMP itself resolves credentials from — distinct from
72
- // (and broader than) any narrower automatic Docker env-passthrough allowlist — because OMP
73
- // routes to 70+ downstream model/search providers and every one of their credential env vars
74
- // must be detected and redacted from Zeroshot logs/output, not just the handful Zeroshot's
75
- // own cluster config commonly sets.
76
- const CREDENTIAL_ENV_KEYS: readonly string[] = [
77
- 'AIMLAPI_API_KEY',
78
- 'AI_GATEWAY_API_KEY',
79
- 'ALIBABA_CODING_PLAN_API_KEY',
80
- 'ALIBABA_TOKEN_PLAN_API_KEY',
81
- 'ANTHROPIC_API_KEY',
82
- 'ANTHROPIC_FOUNDRY_API_KEY',
83
- 'ANTHROPIC_OAUTH_TOKEN',
84
- 'ANTHROPIC_SEARCH_API_KEY',
85
- 'AWS_ACCESS_KEY_ID',
86
- 'AWS_BEARER_TOKEN_BEDROCK',
87
- 'AWS_SECRET_ACCESS_KEY',
88
- 'AZURE_OPENAI_API_KEY',
89
- 'BAILIAN_TOKEN_PLAN_API_KEY',
90
- 'BRAVE_API_KEY',
91
- 'CEREBRAS_API_KEY',
92
- 'CLAUDE_CODE_CLIENT_CERT',
93
- 'CLAUDE_CODE_CLIENT_KEY',
94
- 'CLOUDFLARE_AI_GATEWAY_API_KEY',
95
- 'COPILOT_GITHUB_TOKEN',
96
- 'CURSOR_ACCESS_TOKEN',
97
- 'DEEPSEEK_API_KEY',
98
- 'EXA_API_KEY',
99
- 'FIREPASS_API_KEY',
100
- 'FIREWORKS_API_KEY',
101
- 'GEMINI_API_KEY',
102
- 'GH_TOKEN',
103
- 'GITHUB_TOKEN',
104
- 'GITLAB_TOKEN',
105
- 'GOOGLE_API_KEY',
106
- 'GOOGLE_APPLICATION_CREDENTIALS',
107
- 'GOOGLE_CLOUD_API_KEY',
108
- 'GROQ_API_KEY',
109
- 'HF_TOKEN',
110
- 'HUGGINGFACE_HUB_TOKEN',
111
- 'JINA_API_KEY',
112
- 'KAGI_API_KEY',
113
- 'KILO_API_KEY',
114
- 'KIMI_SEARCH_API_KEY',
115
- 'LITELLM_API_KEY',
116
- 'LLAMA_CPP_API_KEY',
117
- 'LM_STUDIO_API_KEY',
118
- 'MINIMAX_API_KEY',
119
- 'MINIMAX_CODE_API_KEY',
120
- 'MINIMAX_CODE_CN_API_KEY',
121
- 'MISTRAL_API_KEY',
122
- 'MOONSHOT_API_KEY',
123
- 'MOONSHOT_SEARCH_API_KEY',
124
- 'NANO_GPT_API_KEY',
125
- 'NOVITA_API_KEY',
126
- 'NVIDIA_API_KEY',
127
- 'OLLAMA_API_KEY',
128
- 'OLLAMA_CLOUD_API_KEY',
129
- 'OMP_AUTH_BROKER_TOKEN',
130
- 'OPENAI_API_KEY',
131
- 'OPENCODE_API_KEY',
132
- 'OPENROUTER_API_KEY',
133
- 'PARALLEL_API_KEY',
134
- 'PERPLEXITY_API_KEY',
135
- 'PERPLEXITY_COOKIES',
136
- 'QIANFAN_API_KEY',
137
- 'QWEN_OAUTH_TOKEN',
138
- 'QWEN_PORTAL_API_KEY',
139
- 'SEARXNG_BASIC_PASSWORD',
140
- 'SEARXNG_TOKEN',
141
- 'SILICONFLOW_API_KEY',
142
- 'SILICONFLOW_CN_API_KEY',
143
- 'SMITHERY_API_KEY',
144
- 'SYNTHETIC_API_KEY',
145
- 'TAVILY_API_KEY',
146
- 'TOGETHER_API_KEY',
147
- 'UMANS_AI_CODING_PLAN_API_KEY',
148
- 'VENICE_API_KEY',
149
- 'VLLM_API_KEY',
150
- 'WAFER_SERVERLESS_API_KEY',
151
- 'XAI_API_KEY',
152
- 'XAI_OAUTH_TOKEN',
153
- 'XIAOMI_API_KEY',
154
- 'XIAOMI_TOKEN_PLAN_AMS_API_KEY',
155
- 'XIAOMI_TOKEN_PLAN_CN_API_KEY',
156
- 'XIAOMI_TOKEN_PLAN_SGP_API_KEY',
157
- 'ZAI_API_KEY',
158
- 'ZENMUX_API_KEY',
159
- 'ZHIPU_API_KEY',
160
- ];
73
+ const CREDENTIAL_ENV_KEYS = OMP_CREDENTIAL_ENV_KEYS;
161
74
 
162
75
  const VERSION_TOKEN_PATTERN = /(?<![\w.])17\.2\.1(?![\w.])/;
163
76
  const MODEL_ID_PATTERN = /^@?[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/u;
@@ -335,66 +248,7 @@ function validateModelId(modelId: string | null | undefined): string | null | un
335
248
  return modelId;
336
249
  }
337
250
 
338
- const OMP_RETRYABLE_PATTERNS: readonly RegExp[] = [
339
- /\brate(?:[_ -]?limit| limited)\b/i,
340
- /\bquota\b/i,
341
- /\bresource[_ -]?exhausted\b/i,
342
- /\btemporar(?:y|ily)\b/i,
343
- /\boverloaded\b/i,
344
- /\bservice unavailable\b/i,
345
- ];
346
251
 
347
- const OMP_PERMANENT_PATTERNS: readonly RegExp[] = [
348
- // Driver stopReason tokens (see omp-rpc-driver.ts) that always indicate a permanent,
349
- // non-retryable failure: bad binary/protocol/version/limits/selector/config, malformed or
350
- // over-bound frames, and missing auth/model evidence.
351
- /\bunsupported-protocol\b/i,
352
- /\bunsupported-limits\b/i,
353
- /\bunsupported-provider-cli\b/i,
354
- /\bunsupported-ui-method\b/i,
355
- /\bunsupported-capability\b/i,
356
- /\bunsafe-config\b/i,
357
- /\bmalformed-response\b/i,
358
- /\bmalformed-extension-ui-request\b/i,
359
- /\bmalformed-host-tool-call\b/i,
360
- /\bmalformed-host-uri-request\b/i,
361
- /\bextension-error\b/i,
362
- /\blocal-only-prompt\b/i,
363
- /\blifetime-request-id-exceeded\b/i,
364
- /\bpending-request-exceeded\b/i,
365
- /\bspawn-hook-failed\b/i,
366
- // Frame decoder codes (omp-rpc-protocol.ts OmpRpcProtocolError.code values) — every one of
367
- // these means the wire traffic itself is invalid or out-of-bounds, never a transient condition.
368
- /\bphysical-frame-too-large\b/i,
369
- /\bmalformed-physical-frame\b/i,
370
- /\binvalid-chunk-metadata\b/i,
371
- /\binvalid-chunk-data\b/i,
372
- /\bchunk-sequence-must-start-at-zero\b/i,
373
- /\bchunk-sequence-mismatch\b/i,
374
- /\bchunk-sequence-exceeds-declared-length\b/i,
375
- /\bchunk-sequence-length-mismatch\b/i,
376
- /\bmalformed-json-in-reassembled-frame\b/i,
377
- /\bnon-object-reassembled-frame\b/i,
378
- /\binvalid-utf8-in-reassembled-frame\b/i,
379
- /\binflight-reassembly-bytes-exceeded\b/i,
380
- /\binterleaved-chunk-sequence\b/i,
381
- /\binterrupted-chunk-sequence\b/i,
382
- /\bincomplete-physical-frame\b/i,
383
- /\bincomplete-chunk-sequence\b/i,
384
- /\boutbound-frame-too-large\b/i,
385
- /\bpre-negotiation-rpc-chunk\b/i,
386
- /\b[\w-]+-bound-exceeded\b/i,
387
- // Auth/model absence and permission/usage errors surfaced verbatim in OMP output.
388
- /\bno available authenticated\b/i,
389
- /\bno keyless model\b/i,
390
- /\bno valid authentication\b/i,
391
- /\bmissing api key\b/i,
392
- /\brun\s*\/login\b/i,
393
- /\bunknown option\b/i,
394
- /\bfailed to load\b/i,
395
- /\bcannot find module\b/i,
396
- /\bno such file or directory\b/i,
397
- ];
398
252
 
399
253
  function classifyError(error: unknown): ErrorClassification {
400
254
  const message = unknownToMessage(error);
@@ -1,16 +1,15 @@
1
1
  import { appendJsonSchemaPrompt } from '../schema';
2
2
  import { contractError } from '../contract-errors';
3
3
  import {
4
- getArray,
5
- getBoolean,
6
- getNumber,
7
- getOptionalString,
8
- getRecord,
9
- getString,
10
- isRecord,
11
- tryParseJson,
12
- unknownToMessage,
13
- } from '../json';
4
+ emitAssistantSnapshot,
5
+ parseAssistantDelta,
6
+ parseToolExecutionEnd,
7
+ parseToolExecutionStart,
8
+ parseToolExecutionUpdate,
9
+ parseTurnEndResult,
10
+ resetAssistantSnapshot,
11
+ } from '../assistant-stream';
12
+ import { getRecord, getString, isRecord, tryParseJson, unknownToMessage } from '../json';
14
13
  import {
15
14
  type BuildProviderCommandOptions,
16
15
  type CommandSpec,
@@ -152,138 +151,13 @@ function createPiState(): ProviderParserState {
152
151
  };
153
152
  }
154
153
 
155
- function assistantSnapshot(message: Record<string, unknown>): { text: string; thinking: string } {
156
- if (getString(message, 'role') !== 'assistant') return { text: '', thinking: '' };
157
-
158
- let text = '';
159
- let thinking = '';
160
- for (const item of getArray(message, 'content')) {
161
- if (!isRecord(item)) continue;
162
- const type = getString(item, 'type');
163
- if (type === 'text') {
164
- text += getString(item, 'text') ?? '';
165
- } else if (type === 'thinking') {
166
- thinking += getString(item, 'thinking') ?? '';
167
- }
168
- }
169
-
170
- return { text, thinking };
171
- }
172
-
173
- function snapshotDelta(previous: string, current: string): string | null {
174
- if (!current) return null;
175
- if (previous === current) return null;
176
- if (current.startsWith(previous)) return current.slice(previous.length) || null;
177
- return current;
178
- }
179
-
180
- function emitAssistantSnapshot(
181
- message: Record<string, unknown>,
182
- state: ProviderParserState
183
- ): readonly OutputEvent[] {
184
- const snapshot = assistantSnapshot(message);
185
- const events: OutputEvent[] = [];
186
-
187
- const textDelta = snapshotDelta(state.lastAssistantText ?? '', snapshot.text);
188
- if (textDelta) events.push({ type: 'text', text: textDelta });
189
- state.lastAssistantText = snapshot.text;
190
-
191
- const thinkingDelta = snapshotDelta(state.lastAssistantThinking ?? '', snapshot.thinking);
192
- if (thinkingDelta) events.push({ type: 'thinking', text: thinkingDelta });
193
- state.lastAssistantThinking = snapshot.thinking;
194
-
195
- return events;
196
- }
197
-
198
- function parseAssistantEvent(
199
- event: Record<string, unknown>,
200
- state: ProviderParserState
201
- ): OutputEvent | null {
202
- const type = getString(event, 'type');
203
- if (type === 'text_delta') {
204
- const delta = getString(event, 'delta');
205
- if (!delta) return null;
206
- state.lastAssistantText += delta;
207
- return { type: 'text', text: delta };
208
- }
209
- if (type === 'thinking_delta') {
210
- const delta = getString(event, 'delta');
211
- if (!delta) return null;
212
- state.lastAssistantThinking += delta;
213
- return { type: 'thinking', text: delta };
214
- }
215
- return null;
216
- }
217
-
218
- function parseToolExecutionStart(
219
- event: Record<string, unknown>,
220
- state: ProviderParserState
221
- ): OutputEvent {
222
- const toolId = getOptionalString(event, 'toolCallId');
223
- state.lastToolId = toolId;
224
- return {
225
- type: 'tool_call',
226
- toolName: getOptionalString(event, 'toolName'),
227
- toolId,
228
- input: event.args ?? {},
229
- };
230
- }
231
-
232
- function parseToolExecutionUpdate(
233
- event: Record<string, unknown>,
234
- state: ProviderParserState
235
- ): OutputEvent | null {
236
- const toolId = getOptionalString(event, 'toolCallId') ?? state.lastToolId;
237
- if (toolId !== undefined) state.lastToolId = toolId;
238
- if (!Object.prototype.hasOwnProperty.call(event, 'partialResult')) return null;
239
- return {
240
- type: 'tool_result',
241
- toolId,
242
- content: event.partialResult,
243
- isError: false,
244
- };
245
- }
246
-
247
- function parseToolExecutionEnd(
248
- event: Record<string, unknown>,
249
- state: ProviderParserState
250
- ): OutputEvent {
251
- const toolId = getOptionalString(event, 'toolCallId') ?? state.lastToolId;
252
- return {
253
- type: 'tool_result',
254
- toolId,
255
- content: event.result ?? '',
256
- isError: getBoolean(event, 'isError') ?? false,
257
- };
258
- }
259
-
260
- function parseTurnEnd(
154
+ function parsePiTurnEnd(
261
155
  event: Record<string, unknown>,
262
156
  state: ProviderParserState
263
157
  ): readonly OutputEvent[] {
264
158
  const message = getRecord(event, 'message');
265
- const events: OutputEvent[] = [];
266
- if (message !== null) {
267
- events.push(...emitAssistantSnapshot(message, state));
268
- }
269
-
270
- const usage = message ? getRecord(message, 'usage') ?? {} : {};
271
- const stopReason = message ? getString(message, 'stopReason') : null;
272
- const errorMessage = message ? getString(message, 'errorMessage') : null;
273
- const snapshot = message ? assistantSnapshot(message) : { text: '', thinking: '' };
274
- const success = stopReason !== 'error' && stopReason !== 'aborted' && !errorMessage;
275
- events.push({
276
- type: 'result',
277
- success,
278
- result: success ? snapshot.text || null : null,
279
- error: success ? null : (errorMessage ?? stopReason ?? 'Pi turn failed'),
280
- inputTokens: getNumber(usage, 'input') ?? 0,
281
- outputTokens: getNumber(usage, 'output') ?? 0,
282
- cacheReadInputTokens: getNumber(usage, 'cacheRead') ?? 0,
283
- cacheCreationInputTokens: getNumber(usage, 'cacheWrite') ?? 0,
284
- cost: getRecord(usage, 'cost') ?? null,
285
- modelUsage: usage,
286
- });
159
+ const events = message === null ? [] : [...emitAssistantSnapshot(message, state)];
160
+ events.push(parseTurnEndResult(event, { failureMessage: 'Pi turn failed' }));
287
161
  return events;
288
162
  }
289
163
 
@@ -293,18 +167,14 @@ function parseMessageEvent(
293
167
  state: ProviderParserState
294
168
  ): readonly OutputEvent[] | OutputEvent | null | undefined {
295
169
  if (type === 'message_start') {
296
- const message = getRecord(event, 'message');
297
- if (message !== null && getString(message, 'role') === 'assistant') {
298
- state.lastAssistantText = '';
299
- state.lastAssistantThinking = '';
300
- }
170
+ resetAssistantSnapshot(getRecord(event, 'message'), state);
301
171
  return null;
302
172
  }
303
173
 
304
174
  if (type === 'message_update') {
305
175
  const assistantMessageEvent = getRecord(event, 'assistantMessageEvent');
306
176
  if (assistantMessageEvent !== null) {
307
- const assistantEvent = parseAssistantEvent(assistantMessageEvent, state);
177
+ const assistantEvent = parseAssistantDelta(assistantMessageEvent, state);
308
178
  if (assistantEvent !== null) return assistantEvent;
309
179
  }
310
180
  const message = getRecord(event, 'message');
@@ -343,7 +213,7 @@ function parseEvent(
343
213
  const toolEvent = parseToolEvent(type, parsed, state);
344
214
  if (toolEvent !== undefined) return toolEvent;
345
215
 
346
- if (type === 'turn_end') return parseTurnEnd(parsed, state);
216
+ if (type === 'turn_end') return parsePiTurnEnd(parsed, state);
347
217
  return null;
348
218
  }
349
219
 
@@ -0,0 +1,155 @@
1
+ import {
2
+ getArray,
3
+ getBoolean,
4
+ getNumber,
5
+ getOptionalString,
6
+ getRecord,
7
+ getString,
8
+ isRecord,
9
+ } from './json';
10
+ import type { OutputEvent, ResultEvent } from './types';
11
+ export interface AssistantStreamState {
12
+ lastAssistantText?: string | undefined;
13
+ lastAssistantThinking?: string | undefined;
14
+ lastToolId?: string | null | undefined;
15
+ }
16
+
17
+ export interface AssistantSnapshot {
18
+ readonly text: string;
19
+ readonly thinking: string;
20
+ }
21
+
22
+ export function assistantSnapshot(message: Record<string, unknown>): AssistantSnapshot {
23
+ if (getString(message, 'role') !== 'assistant') return { text: '', thinking: '' };
24
+
25
+ let text = '';
26
+ let thinking = '';
27
+ for (const item of getArray(message, 'content')) {
28
+ if (!isRecord(item)) continue;
29
+ const type = getString(item, 'type');
30
+ if (type === 'text') text += getString(item, 'text') ?? '';
31
+ else if (type === 'thinking') thinking += getString(item, 'thinking') ?? '';
32
+ }
33
+ return { text, thinking };
34
+ }
35
+
36
+ export function snapshotDelta(previous: string, current: string): string | null {
37
+ if (!current || previous === current) return null;
38
+ if (current.startsWith(previous)) return current.slice(previous.length) || null;
39
+ return current;
40
+ }
41
+
42
+ export function resetAssistantSnapshot(
43
+ message: Record<string, unknown> | null,
44
+ state: AssistantStreamState
45
+ ): void {
46
+ if (message !== null && getString(message, 'role') === 'assistant') {
47
+ state.lastAssistantText = '';
48
+ state.lastAssistantThinking = '';
49
+ }
50
+ }
51
+
52
+ export function parseAssistantDelta(
53
+ event: Record<string, unknown>,
54
+ state: AssistantStreamState
55
+ ): OutputEvent | null {
56
+ const type = getString(event, 'type');
57
+ const delta = getString(event, 'delta');
58
+ if (!delta) return null;
59
+ if (type === 'text_delta') {
60
+ state.lastAssistantText = (state.lastAssistantText ?? '') + delta;
61
+ return { type: 'text', text: delta };
62
+ }
63
+ if (type === 'thinking_delta') {
64
+ state.lastAssistantThinking = (state.lastAssistantThinking ?? '') + delta;
65
+ return { type: 'thinking', text: delta };
66
+ }
67
+ return null;
68
+ }
69
+
70
+ export interface AssistantSnapshotOptions {
71
+ readonly retainPreviousOnEmpty?: boolean;
72
+ }
73
+
74
+ export function emitAssistantSnapshot(
75
+ message: Record<string, unknown>,
76
+ state: AssistantStreamState,
77
+ options: AssistantSnapshotOptions = {}
78
+ ): readonly OutputEvent[] {
79
+ const snapshot = assistantSnapshot(message);
80
+ const events: OutputEvent[] = [];
81
+ const textDelta = snapshotDelta(state.lastAssistantText ?? '', snapshot.text);
82
+ if (textDelta) events.push({ type: 'text', text: textDelta });
83
+ if (!options.retainPreviousOnEmpty || snapshot.text) state.lastAssistantText = snapshot.text;
84
+ const thinkingDelta = snapshotDelta(state.lastAssistantThinking ?? '', snapshot.thinking);
85
+ if (thinkingDelta) events.push({ type: 'thinking', text: thinkingDelta });
86
+ if (!options.retainPreviousOnEmpty || snapshot.thinking) {
87
+ state.lastAssistantThinking = snapshot.thinking;
88
+ }
89
+ return events;
90
+ }
91
+
92
+ export function parseToolExecutionStart(
93
+ event: Record<string, unknown>,
94
+ state: AssistantStreamState
95
+ ): OutputEvent {
96
+ const toolId = getOptionalString(event, 'toolCallId');
97
+ state.lastToolId = toolId;
98
+ return {
99
+ type: 'tool_call',
100
+ toolName: getOptionalString(event, 'toolName'),
101
+ toolId,
102
+ input: event.args ?? {},
103
+ };
104
+ }
105
+
106
+ export function parseToolExecutionUpdate(
107
+ event: Record<string, unknown>,
108
+ state: AssistantStreamState
109
+ ): OutputEvent | null {
110
+ const toolId = getOptionalString(event, 'toolCallId') ?? state.lastToolId;
111
+ if (toolId !== undefined) state.lastToolId = toolId;
112
+ if (!Object.prototype.hasOwnProperty.call(event, 'partialResult')) return null;
113
+ return { type: 'tool_result', toolId, content: event.partialResult, isError: false };
114
+ }
115
+
116
+ export function parseToolExecutionEnd(
117
+ event: Record<string, unknown>,
118
+ state: AssistantStreamState
119
+ ): OutputEvent {
120
+ return {
121
+ type: 'tool_result',
122
+ toolId: getOptionalString(event, 'toolCallId') ?? state.lastToolId,
123
+ content: event.result ?? '',
124
+ isError: getBoolean(event, 'isError') ?? false,
125
+ };
126
+ }
127
+
128
+ export interface TurnEndOptions {
129
+ readonly failureMessage: string;
130
+ readonly resultFallback?: string | null;
131
+ }
132
+
133
+ export function parseTurnEndResult(
134
+ event: Record<string, unknown>,
135
+ options: TurnEndOptions
136
+ ): ResultEvent {
137
+ const message = getRecord(event, 'message');
138
+ const usage = message ? (getRecord(message, 'usage') ?? {}) : {};
139
+ const stopReason = message ? getString(message, 'stopReason') : null;
140
+ const errorMessage = message ? getString(message, 'errorMessage') : null;
141
+ const snapshot = message ? assistantSnapshot(message) : { text: '', thinking: '' };
142
+ const success = stopReason !== 'error' && stopReason !== 'aborted' && !errorMessage;
143
+ return {
144
+ type: 'result',
145
+ success,
146
+ result: success ? snapshot.text || options.resultFallback || null : null,
147
+ error: success ? null : (errorMessage ?? stopReason ?? options.failureMessage),
148
+ inputTokens: getNumber(usage, 'input') ?? 0,
149
+ outputTokens: getNumber(usage, 'output') ?? 0,
150
+ cacheReadInputTokens: getNumber(usage, 'cacheRead') ?? 0,
151
+ cacheCreationInputTokens: getNumber(usage, 'cacheWrite') ?? 0,
152
+ cost: getRecord(usage, 'cost') ?? null,
153
+ modelUsage: usage,
154
+ };
155
+ }
@@ -1,3 +1,5 @@
1
+ import * as fs from 'node:fs';
2
+
1
3
  import { classifyProviderError } from './adapters';
2
4
  import { envRedactions, commandRedactions } from './contract-env';
3
5
  import { contractError } from './contract-errors';
@@ -15,7 +17,7 @@ import {
15
17
  schemaMode,
16
18
  type RequestData,
17
19
  } from './contract-support';
18
- import { extractErrorStatus } from './errors';
20
+ import { extractErrorStatus, UnsupportedProviderCapabilityError } from './errors';
19
21
  import { probeRuntimeProviderCli } from './single-agent-runtime';
20
22
  import { getString, isRecord, unknownToMessage } from './json';
21
23
  import type { ErrorClassification } from './types';
@@ -25,7 +27,17 @@ function runBuildCommand(
25
27
  request: RequestData,
26
28
  runtimeSettings?: Record<string, unknown>
27
29
  ): ContractEnvelope {
28
- const { adapter, commandSpec, options } = buildCommandSpec(request, runtimeSettings);
30
+ const prepared = buildCommandSpec(request, runtimeSettings);
31
+ if (prepared.invoke.parser === 'omp-sdk-ndjson') {
32
+ const privateRoot = prepared.privateArtifacts?.root;
33
+ if (privateRoot !== undefined) fs.rmSync(privateRoot, { recursive: true, force: true });
34
+ throw new UnsupportedProviderCapabilityError(
35
+ 'omp',
36
+ 'buildCommand',
37
+ 'OMP SDK invocations cannot be exported by build-command because invoke owns the private request, minimal environment, protocol, containment, and cleanup. Use invoke instead.'
38
+ );
39
+ }
40
+ const { adapter, commandSpec, options } = prepared;
29
41
  const webSearch = {
30
42
  requested: options.webSearch === true,
31
43
  effective: options.webSearch === true && options.cliFeatures?.supportsWebSearch === true,