@the-open-engine/zeroshot 6.29.0 → 6.30.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 (347) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/cli/index.js +2 -4
  3. package/lib/agent-cli-provider/adapters/codex.d.ts.map +1 -1
  4. package/lib/agent-cli-provider/adapters/codex.js +0 -1
  5. package/lib/agent-cli-provider/adapters/codex.js.map +1 -1
  6. package/lib/agent-cli-provider/contract-actions.d.ts +1 -1
  7. package/lib/agent-cli-provider/contract-actions.d.ts.map +1 -1
  8. package/lib/agent-cli-provider/contract-actions.js +5 -5
  9. package/lib/agent-cli-provider/contract-actions.js.map +1 -1
  10. package/lib/agent-cli-provider/contract-invoke.d.ts +1 -1
  11. package/lib/agent-cli-provider/contract-invoke.d.ts.map +1 -1
  12. package/lib/agent-cli-provider/contract-invoke.js +2 -2
  13. package/lib/agent-cli-provider/contract-invoke.js.map +1 -1
  14. package/lib/agent-cli-provider/contract-support.d.ts +1 -1
  15. package/lib/agent-cli-provider/contract-support.d.ts.map +1 -1
  16. package/lib/agent-cli-provider/contract-support.js +2 -2
  17. package/lib/agent-cli-provider/contract-support.js.map +1 -1
  18. package/lib/agent-cli-provider/contract.d.ts +1 -0
  19. package/lib/agent-cli-provider/contract.d.ts.map +1 -1
  20. package/lib/agent-cli-provider/contract.js +1 -1
  21. package/lib/agent-cli-provider/contract.js.map +1 -1
  22. package/lib/agent-cli-provider/index.d.ts +1 -1
  23. package/lib/agent-cli-provider/index.d.ts.map +1 -1
  24. package/lib/agent-cli-provider/index.js +2 -1
  25. package/lib/agent-cli-provider/index.js.map +1 -1
  26. package/lib/agent-cli-provider/provider-registry.d.ts +1 -0
  27. package/lib/agent-cli-provider/provider-registry.d.ts.map +1 -1
  28. package/lib/agent-cli-provider/provider-registry.js +4 -0
  29. package/lib/agent-cli-provider/provider-registry.js.map +1 -1
  30. package/lib/agent-cli-provider/single-agent-runtime.d.ts +3 -3
  31. package/lib/agent-cli-provider/single-agent-runtime.d.ts.map +1 -1
  32. package/lib/agent-cli-provider/single-agent-runtime.js +22 -48
  33. package/lib/agent-cli-provider/single-agent-runtime.js.map +1 -1
  34. package/lib/cluster/client.cjs +30 -7
  35. package/lib/cluster/client.d.cts +52 -0
  36. package/lib/cluster/client.d.mts +52 -0
  37. package/lib/cluster/client.d.ts +4 -6
  38. package/lib/cluster/client.mjs +32 -9
  39. package/lib/cluster/connection-state.cjs +25 -0
  40. package/lib/cluster/connection-state.d.cts +13 -0
  41. package/lib/cluster/connection-state.d.mts +13 -0
  42. package/lib/cluster/connection-state.d.ts +13 -0
  43. package/lib/cluster/connection-state.mjs +21 -0
  44. package/lib/{target/hosted-run/contracts.js → cluster/connection-types.cjs} +0 -1
  45. package/lib/cluster/connection-types.d.cts +33 -0
  46. package/lib/cluster/connection-types.d.mts +33 -0
  47. package/lib/cluster/connection-types.d.ts +33 -0
  48. package/lib/cluster/connection-types.mjs +1 -0
  49. package/lib/cluster/connection.cjs +18 -46
  50. package/lib/cluster/connection.d.cts +26 -0
  51. package/lib/cluster/connection.d.mts +26 -0
  52. package/lib/cluster/connection.d.ts +7 -25
  53. package/lib/cluster/connection.mjs +12 -42
  54. package/lib/cluster/errors.cjs +9 -1
  55. package/lib/cluster/errors.d.cts +29 -0
  56. package/lib/cluster/errors.d.mts +29 -0
  57. package/lib/cluster/errors.d.ts +4 -0
  58. package/lib/cluster/errors.mjs +7 -0
  59. package/lib/cluster/frames.d.cts +12 -0
  60. package/lib/cluster/frames.d.mts +12 -0
  61. package/lib/cluster/generated/protocol-schema.d.cts +1 -0
  62. package/lib/cluster/generated/protocol-schema.d.mts +1 -0
  63. package/lib/cluster/generated/protocol.d.cts +781 -0
  64. package/lib/cluster/generated/protocol.d.mts +781 -0
  65. package/lib/cluster/index.cjs +2 -2
  66. package/lib/cluster/index.d.cts +13 -0
  67. package/lib/cluster/index.d.mts +13 -0
  68. package/lib/cluster/index.d.ts +3 -3
  69. package/lib/cluster/index.mjs +2 -2
  70. package/lib/cluster/json-source.cjs +1 -0
  71. package/lib/cluster/json-source.d.cts +5 -0
  72. package/lib/cluster/json-source.d.mts +5 -0
  73. package/lib/cluster/json-source.d.ts +1 -0
  74. package/lib/cluster/json-source.mjs +1 -0
  75. package/lib/cluster/payload-value.cjs +1 -0
  76. package/lib/cluster/payload-value.d.cts +8 -0
  77. package/lib/cluster/payload-value.d.mts +8 -0
  78. package/lib/cluster/payload-value.d.ts +1 -0
  79. package/lib/cluster/payload-value.mjs +1 -0
  80. package/lib/cluster/queue.d.cts +15 -0
  81. package/lib/cluster/queue.d.mts +15 -0
  82. package/lib/cluster/socket.cjs +8 -0
  83. package/lib/cluster/socket.d.cts +13 -0
  84. package/lib/cluster/socket.d.mts +13 -0
  85. package/lib/cluster/socket.d.ts +2 -0
  86. package/lib/cluster/socket.mjs +7 -0
  87. package/lib/cluster/subscriptions.d.cts +73 -0
  88. package/lib/cluster/subscriptions.d.mts +73 -0
  89. package/lib/cluster/subscriptions.d.ts +5 -1
  90. package/lib/cluster/validators.cjs +1 -0
  91. package/lib/cluster/validators.d.cts +7 -0
  92. package/lib/cluster/validators.d.mts +7 -0
  93. package/lib/cluster/validators.d.ts +1 -0
  94. package/lib/cluster/validators.mjs +1 -0
  95. package/lib/cluster-worker/engine-adapter-common.js +37 -0
  96. package/lib/cluster-worker/engine-adapter.js +24 -30
  97. package/lib/cluster-worker/engine-start.js +59 -0
  98. package/lib/cluster-worker/index.js +49 -67
  99. package/lib/cluster-worker/profiles.js +1 -42
  100. package/lib/cluster-worker/runtime-dependencies.js +49 -0
  101. package/lib/cluster-worker/runtime-support.js +2 -34
  102. package/lib/cluster-worker/terminal-normalizer.js +9 -10
  103. package/lib/hosted-session/authority.cjs +61 -0
  104. package/lib/hosted-session/authority.d.cts +3 -0
  105. package/lib/hosted-session/authority.d.mts +3 -0
  106. package/lib/hosted-session/authority.d.ts +3 -0
  107. package/lib/hosted-session/authority.mjs +57 -0
  108. package/lib/hosted-session/coordinator.cjs +78 -51
  109. package/lib/hosted-session/coordinator.d.cts +11 -0
  110. package/lib/hosted-session/coordinator.d.mts +11 -0
  111. package/lib/hosted-session/coordinator.d.ts +4 -2
  112. package/lib/hosted-session/coordinator.mjs +75 -51
  113. package/lib/hosted-session/errors.cjs +25 -0
  114. package/lib/hosted-session/errors.d.cts +10 -0
  115. package/lib/hosted-session/errors.d.mts +10 -0
  116. package/lib/hosted-session/errors.d.ts +10 -0
  117. package/lib/hosted-session/errors.mjs +19 -0
  118. package/lib/hosted-session/index.cjs +4 -1
  119. package/lib/hosted-session/index.d.cts +2 -0
  120. package/lib/hosted-session/index.d.mts +2 -0
  121. package/lib/hosted-session/index.d.ts +2 -2
  122. package/lib/hosted-session/index.mjs +1 -1
  123. package/lib/hosted-session/reconnecting-watch.cjs +131 -0
  124. package/lib/hosted-session/reconnecting-watch.d.cts +13 -0
  125. package/lib/hosted-session/reconnecting-watch.d.mts +13 -0
  126. package/lib/hosted-session/reconnecting-watch.d.ts +13 -0
  127. package/lib/hosted-session/reconnecting-watch.mjs +127 -0
  128. package/lib/hosted-session/types.d.cts +32 -0
  129. package/lib/hosted-session/types.d.mts +32 -0
  130. package/lib/hosted-session/types.d.ts +19 -7
  131. package/lib/hosted-target/access-url.cjs +44 -0
  132. package/lib/hosted-target/access-url.d.cts +2 -0
  133. package/lib/hosted-target/access-url.d.mts +2 -0
  134. package/lib/hosted-target/access-url.d.ts +2 -0
  135. package/lib/hosted-target/access-url.mjs +41 -0
  136. package/lib/hosted-target/adapter-request.cjs +12 -0
  137. package/lib/hosted-target/adapter-request.d.cts +17 -0
  138. package/lib/hosted-target/adapter-request.d.mts +17 -0
  139. package/lib/hosted-target/adapter-request.d.ts +17 -0
  140. package/lib/hosted-target/adapter-request.mjs +9 -0
  141. package/lib/hosted-target/adapter-types.cjs +2 -0
  142. package/lib/hosted-target/adapter-types.d.cts +27 -0
  143. package/lib/hosted-target/adapter-types.d.mts +27 -0
  144. package/lib/hosted-target/adapter-types.d.ts +27 -0
  145. package/lib/hosted-target/adapter-types.mjs +1 -0
  146. package/lib/hosted-target/bounds.cjs +10 -0
  147. package/lib/hosted-target/bounds.d.cts +7 -0
  148. package/lib/hosted-target/bounds.d.mts +7 -0
  149. package/lib/hosted-target/bounds.d.ts +7 -0
  150. package/lib/hosted-target/bounds.mjs +7 -0
  151. package/lib/hosted-target/capsule-error-response.cjs +76 -0
  152. package/lib/hosted-target/capsule-error-response.d.cts +2 -0
  153. package/lib/hosted-target/capsule-error-response.d.mts +2 -0
  154. package/lib/hosted-target/capsule-error-response.d.ts +2 -0
  155. package/lib/hosted-target/capsule-error-response.mjs +73 -0
  156. package/lib/hosted-target/errors.cjs +88 -0
  157. package/lib/hosted-target/errors.d.cts +36 -0
  158. package/lib/hosted-target/errors.d.mts +36 -0
  159. package/lib/hosted-target/errors.d.ts +36 -0
  160. package/lib/hosted-target/errors.mjs +75 -0
  161. package/lib/hosted-target/index.cjs +16 -0
  162. package/lib/hosted-target/index.d.cts +3 -0
  163. package/lib/hosted-target/index.d.mts +3 -0
  164. package/lib/hosted-target/index.d.ts +3 -0
  165. package/lib/hosted-target/index.mjs +2 -0
  166. package/lib/hosted-target/response-validation.cjs +169 -0
  167. package/lib/hosted-target/response-validation.d.cts +5 -0
  168. package/lib/hosted-target/response-validation.d.mts +5 -0
  169. package/lib/hosted-target/response-validation.d.ts +5 -0
  170. package/lib/hosted-target/response-validation.mjs +163 -0
  171. package/lib/hosted-target/retry-executor.cjs +51 -0
  172. package/lib/hosted-target/retry-executor.d.cts +8 -0
  173. package/lib/hosted-target/retry-executor.d.mts +8 -0
  174. package/lib/hosted-target/retry-executor.d.ts +8 -0
  175. package/lib/hosted-target/retry-executor.mjs +48 -0
  176. package/lib/hosted-target/retry.cjs +78 -0
  177. package/lib/hosted-target/retry.d.cts +9 -0
  178. package/lib/hosted-target/retry.d.mts +9 -0
  179. package/lib/hosted-target/retry.d.ts +9 -0
  180. package/lib/hosted-target/retry.mjs +73 -0
  181. package/lib/hosted-target/target-adapter.cjs +10 -0
  182. package/lib/hosted-target/target-adapter.d.cts +3 -0
  183. package/lib/hosted-target/target-adapter.d.mts +3 -0
  184. package/lib/hosted-target/target-adapter.d.ts +3 -0
  185. package/lib/hosted-target/target-adapter.mjs +7 -0
  186. package/lib/hosted-target/types.cjs +4 -0
  187. package/lib/hosted-target/types.d.cts +50 -0
  188. package/lib/hosted-target/types.d.mts +50 -0
  189. package/lib/hosted-target/types.d.ts +50 -0
  190. package/lib/hosted-target/types.mjs +1 -0
  191. package/lib/hosted-target/zero-cloud-v1-adapter.cjs +185 -0
  192. package/lib/hosted-target/zero-cloud-v1-adapter.d.cts +13 -0
  193. package/lib/hosted-target/zero-cloud-v1-adapter.d.mts +13 -0
  194. package/lib/hosted-target/zero-cloud-v1-adapter.d.ts +13 -0
  195. package/lib/hosted-target/zero-cloud-v1-adapter.mjs +181 -0
  196. package/lib/start-cluster.js +3 -3
  197. package/lib/target/bounded-response.cjs +51 -0
  198. package/lib/target/bounded-response.d.cts +1 -0
  199. package/lib/target/bounded-response.d.mts +1 -0
  200. package/lib/target/bounded-response.d.ts +1 -0
  201. package/lib/target/bounded-response.js +51 -0
  202. package/lib/target/bounded-response.mjs +48 -0
  203. package/lib/target/credential-lock.js +1 -3
  204. package/lib/target/credential-store.js +9 -4
  205. package/lib/target/device-flow.cjs +213 -0
  206. package/lib/target/device-flow.d.cts +54 -0
  207. package/lib/target/device-flow.d.mts +54 -0
  208. package/lib/target/device-flow.d.ts +26 -14
  209. package/lib/target/device-flow.js +162 -58
  210. package/lib/target/device-flow.mjs +203 -0
  211. package/lib/target/discovery-errors.cjs +10 -0
  212. package/lib/target/discovery-errors.d.cts +3 -0
  213. package/lib/target/discovery-errors.d.mts +3 -0
  214. package/lib/target/discovery-errors.d.ts +3 -0
  215. package/lib/target/discovery-errors.js +10 -0
  216. package/lib/target/discovery-errors.mjs +6 -0
  217. package/lib/target/discovery-sections.cjs +191 -0
  218. package/lib/target/discovery-sections.d.cts +52 -0
  219. package/lib/target/discovery-sections.d.mts +52 -0
  220. package/lib/target/discovery-sections.d.ts +52 -0
  221. package/lib/target/discovery-sections.js +191 -0
  222. package/lib/target/discovery-sections.mjs +179 -0
  223. package/lib/target/discovery-validation.cjs +109 -0
  224. package/lib/target/discovery-validation.d.cts +28 -0
  225. package/lib/target/discovery-validation.d.mts +28 -0
  226. package/lib/target/discovery-validation.d.ts +28 -0
  227. package/lib/target/discovery-validation.js +109 -0
  228. package/lib/target/discovery-validation.mjs +99 -0
  229. package/lib/target/discovery.cjs +112 -0
  230. package/lib/target/discovery.d.cts +74 -0
  231. package/lib/target/discovery.d.mts +74 -0
  232. package/lib/target/discovery.d.ts +67 -5
  233. package/lib/target/discovery.js +94 -79
  234. package/lib/target/discovery.mjs +105 -0
  235. package/lib/target/index.d.ts +6 -6
  236. package/lib/target/index.js +36 -36
  237. package/lib/target/oauth-http.d.ts +2 -0
  238. package/lib/target/oauth-http.js +25 -0
  239. package/lib/target/refresh-exchange.d.ts +11 -0
  240. package/lib/target/refresh-exchange.js +24 -0
  241. package/lib/target/refresh-revocation.d.ts +8 -0
  242. package/lib/target/refresh-revocation.js +19 -0
  243. package/lib/target/route-template.cjs +85 -0
  244. package/lib/target/route-template.d.cts +7 -0
  245. package/lib/target/route-template.d.mts +7 -0
  246. package/lib/target/route-template.d.ts +7 -0
  247. package/lib/target/route-template.js +85 -0
  248. package/lib/target/route-template.mjs +81 -0
  249. package/lib/target/session-errors.d.ts +4 -0
  250. package/lib/target/session-errors.js +12 -0
  251. package/lib/target/session-verification.d.ts +10 -0
  252. package/lib/target/session-verification.js +42 -0
  253. package/lib/target/target-registry.d.ts +7 -3
  254. package/lib/target/target-registry.js +41 -10
  255. package/lib/target/target-session-manager.d.ts +48 -0
  256. package/lib/target/target-session-manager.js +226 -0
  257. package/lib/target/target-session.d.ts +39 -32
  258. package/lib/target/target-session.js +63 -151
  259. package/lib/target/token-response.cjs +51 -0
  260. package/lib/target/token-response.d.cts +7 -0
  261. package/lib/target/token-response.d.mts +7 -0
  262. package/lib/target/token-response.d.ts +7 -0
  263. package/lib/target/token-response.js +51 -0
  264. package/lib/target/token-response.mjs +48 -0
  265. package/package.json +14 -7
  266. package/protocol/openengine-cluster/v1/worker.schema.json +171 -9
  267. package/scripts/build-cluster.js +23 -3
  268. package/scripts/opcore-introduced-check.js +0 -2
  269. package/src/agent-cli-provider/adapters/codex.ts +0 -1
  270. package/src/agent-cli-provider/contract-actions.ts +9 -5
  271. package/src/agent-cli-provider/contract-invoke.ts +3 -2
  272. package/src/agent-cli-provider/contract-support.ts +12 -6
  273. package/src/agent-cli-provider/contract.ts +6 -1
  274. package/src/agent-cli-provider/index.ts +1 -0
  275. package/src/agent-cli-provider/provider-registry.ts +4 -0
  276. package/src/agent-cli-provider/single-agent-runtime.ts +32 -45
  277. package/src/cluster/client.ts +42 -15
  278. package/src/cluster/connection-state.ts +33 -0
  279. package/src/cluster/connection-types.ts +28 -0
  280. package/src/cluster/connection.ts +37 -68
  281. package/src/cluster/errors.ts +5 -0
  282. package/src/cluster/index.ts +3 -1
  283. package/src/cluster/json-source.ts +1 -0
  284. package/src/cluster/payload-value.ts +1 -0
  285. package/src/cluster/socket.ts +13 -0
  286. package/src/cluster/subscriptions.ts +7 -2
  287. package/src/cluster/validators.ts +1 -0
  288. package/src/cluster/ws.d.ts +1 -1
  289. package/src/hosted-session/authority.ts +77 -0
  290. package/src/hosted-session/coordinator.ts +113 -56
  291. package/src/hosted-session/errors.ts +21 -0
  292. package/src/hosted-session/index.ts +14 -2
  293. package/src/hosted-session/reconnecting-watch.ts +148 -0
  294. package/src/hosted-session/types.ts +22 -8
  295. package/src/hosted-target/access-url.ts +46 -0
  296. package/src/hosted-target/adapter-request.ts +28 -0
  297. package/src/hosted-target/adapter-types.ts +39 -0
  298. package/src/hosted-target/bounds.ts +1 -0
  299. package/src/hosted-target/capsule-error-response.ts +107 -0
  300. package/src/hosted-target/errors.ts +36 -35
  301. package/src/hosted-target/index.ts +10 -23
  302. package/src/hosted-target/response-validation.ts +170 -62
  303. package/src/hosted-target/retry-executor.ts +62 -0
  304. package/src/hosted-target/retry.ts +47 -11
  305. package/src/hosted-target/target-adapter.ts +12 -8
  306. package/src/hosted-target/types.ts +19 -18
  307. package/src/hosted-target/zero-cloud-v1-adapter.ts +229 -316
  308. package/src/isolation-manager.js +1 -16
  309. package/src/target/bounded-response.ts +68 -0
  310. package/src/target/credential-lock.ts +1 -3
  311. package/src/target/credential-store.ts +14 -10
  312. package/src/target/device-flow.ts +209 -85
  313. package/src/target/discovery-errors.ts +6 -0
  314. package/src/target/discovery-sections.ts +251 -0
  315. package/src/target/discovery-validation.ts +144 -0
  316. package/src/target/discovery.ts +163 -97
  317. package/src/target/index.ts +15 -11
  318. package/src/target/oauth-http.ts +27 -0
  319. package/src/target/refresh-exchange.ts +36 -0
  320. package/src/target/refresh-revocation.ts +29 -0
  321. package/src/target/route-template.ts +105 -0
  322. package/src/target/session-errors.ts +9 -0
  323. package/src/target/session-verification.ts +51 -0
  324. package/src/target/target-registry.ts +60 -27
  325. package/src/target/target-session-manager.ts +285 -0
  326. package/src/target/target-session.ts +105 -226
  327. package/src/target/token-response.ts +62 -0
  328. package/docker/zeroshot-oecp/Cargo.toml +0 -12
  329. package/docker/zeroshot-oecp/Dockerfile +0 -65
  330. package/docker/zeroshot-oecp/src/main.rs +0 -32
  331. package/lib/target/bounded-json.d.ts +0 -6
  332. package/lib/target/bounded-json.js +0 -43
  333. package/lib/target/hosted-run/client.d.ts +0 -26
  334. package/lib/target/hosted-run/client.js +0 -158
  335. package/lib/target/hosted-run/commands.d.ts +0 -4
  336. package/lib/target/hosted-run/commands.js +0 -113
  337. package/lib/target/hosted-run/contracts.d.ts +0 -49
  338. package/lib/target/hosted-run/input.d.ts +0 -5
  339. package/lib/target/hosted-run/input.js +0 -200
  340. package/lib/target/hosted-run.d.ts +0 -4
  341. package/lib/target/hosted-run.js +0 -12
  342. package/src/target/bounded-json.ts +0 -48
  343. package/src/target/hosted-run/client.ts +0 -198
  344. package/src/target/hosted-run/commands.ts +0 -140
  345. package/src/target/hosted-run/contracts.ts +0 -53
  346. package/src/target/hosted-run/input.ts +0 -199
  347. package/src/target/hosted-run.ts +0 -8
@@ -1,163 +1,75 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LoginRequiredError = void 0;
3
+ exports.TargetSessionManager = exports.LoginRequiredError = void 0;
4
4
  exports.targetLogin = targetLogin;
5
5
  exports.refreshAccessToken = refreshAccessToken;
6
6
  exports.getAccessTokenProvider = getAccessTokenProvider;
7
7
  exports.revokeAndCleanup = revokeAndCleanup;
8
- const device_flow_ts_1 = require("./device-flow.js");
9
- const credential_store_ts_1 = require("./credential-store.js");
10
- const target_registry_ts_1 = require("./target-registry.js");
11
- class LoginRequiredError extends Error {
12
- targetName;
13
- constructor(targetName) {
14
- super(`Login required. Run: zeroshot target login ${targetName}`);
15
- this.name = 'LoginRequiredError';
16
- this.targetName = targetName;
17
- }
8
+ const target_session_manager_js_1 = require("./target-session-manager.js");
9
+ var target_session_manager_js_2 = require("./target-session-manager.js");
10
+ Object.defineProperty(exports, "LoginRequiredError", { enumerable: true, get: function () { return target_session_manager_js_2.LoginRequiredError; } });
11
+ Object.defineProperty(exports, "TargetSessionManager", { enumerable: true, get: function () { return target_session_manager_js_2.TargetSessionManager; } });
12
+ function transientSettings(targetName, target) {
13
+ const state = {
14
+ _targets: { [targetName]: target },
15
+ };
16
+ return {
17
+ load: () => state,
18
+ mutate: (mutator) => mutator(state),
19
+ };
18
20
  }
19
- exports.LoginRequiredError = LoginRequiredError;
20
- async function targetLogin(targetName, target, credentialStore, acquireLock, settings, deps) {
21
- const { http, clock, browserOpener, stderr, discoveryEndpoints } = deps;
22
- const { deviceAuthorizationEndpoint, tokenEndpoint, clientId } = discoveryEndpoints;
23
- const codeResponse = await (0, device_flow_ts_1.requestDeviceCode)(deviceAuthorizationEndpoint, clientId, http);
24
- stderr.write(`\nOpen this URL to authorize:\n ${codeResponse.verification_uri}\n\nEnter code: ${codeResponse.user_code}\n\n`);
25
- if (codeResponse.verification_uri_complete) {
26
- try {
27
- await browserOpener.open(codeResponse.verification_uri_complete);
28
- }
29
- catch {
30
- // Browser open is best-effort
31
- }
32
- }
33
- const tokenResponse = await (0, device_flow_ts_1.pollForToken)(tokenEndpoint, clientId, codeResponse.device_code, codeResponse.interval, codeResponse.expires_in, http, clock, undefined, { token: target.deviceToken, label: 'Zeroshot CLI' });
34
- if (!tokenResponse.organization) {
35
- throw new device_flow_ts_1.UnboundSessionError(codeResponse.verification_uri);
36
- }
37
- const serviceKey = (0, credential_store_ts_1.targetServiceKey)(target.id);
38
- const release = await acquireLock();
39
- try {
40
- await credentialStore.set(serviceKey, credential_store_ts_1.TARGET_ACCOUNT, tokenResponse.refresh_token);
41
- }
42
- finally {
43
- await release();
44
- }
45
- (0, target_registry_ts_1.updateTargetOrganization)(targetName, tokenResponse.organization, settings);
46
- return { organization: tokenResponse.organization };
21
+ function legacyManager(init) {
22
+ const clock = init.clock ?? init.deps.clock ?? { now: () => Date.now() };
23
+ return new target_session_manager_js_1.TargetSessionManager({
24
+ targetName: init.targetName,
25
+ target: init.target,
26
+ credentialStore: init.credentialStore,
27
+ acquireLock: init.acquireLock,
28
+ settings: init.deps.settings ?? transientSettings(init.targetName, init.target),
29
+ deps: {
30
+ http: init.deps.http,
31
+ clock,
32
+ browserOpener: { open: () => Promise.resolve() },
33
+ stderr: { write: () => undefined },
34
+ discoveryEndpoints: init.deps.discoveryEndpoints,
35
+ },
36
+ });
47
37
  }
48
- async function refreshAccessToken(targetName, target, credentialStore, acquireLock, deps) {
49
- const { http, discoveryEndpoints } = deps;
50
- const { tokenEndpoint, revocationEndpoint, clientId } = discoveryEndpoints;
51
- const serviceKey = (0, credential_store_ts_1.targetServiceKey)(target.id);
52
- const release = await acquireLock();
53
- try {
54
- const currentRefreshToken = await credentialStore.get(serviceKey, credential_store_ts_1.TARGET_ACCOUNT);
55
- if (!currentRefreshToken) {
56
- throw new LoginRequiredError(targetName);
57
- }
58
- const body = new URLSearchParams({
59
- grant_type: 'refresh_token',
60
- refresh_token: currentRefreshToken,
61
- client_id: clientId,
62
- audience: 'capsule',
63
- });
64
- let tokenResponse;
65
- const response = await http.fetch(tokenEndpoint, {
66
- method: 'POST',
67
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
68
- body: body.toString(),
69
- redirect: 'error',
70
- });
71
- if (!response.ok) {
72
- const errorBody = (await response.json().catch(() => ({ error: 'unknown' })));
73
- if (errorBody.error === 'invalid_grant') {
74
- await credentialStore.delete(serviceKey, credential_store_ts_1.TARGET_ACCOUNT);
75
- throw new LoginRequiredError(targetName);
76
- }
77
- throw new Error(`Token refresh failed (${response.status}): ${errorBody.error}`);
78
- }
79
- tokenResponse = (await response.json());
80
- try {
81
- await credentialStore.set(serviceKey, credential_store_ts_1.TARGET_ACCOUNT, tokenResponse.refresh_token);
82
- }
83
- catch {
84
- await bestEffortRevoke(tokenResponse.refresh_token, revocationEndpoint, clientId, http);
85
- await credentialStore.delete(serviceKey, credential_store_ts_1.TARGET_ACCOUNT);
86
- throw new LoginRequiredError(targetName);
87
- }
88
- return { accessToken: tokenResponse.access_token, expiresIn: tokenResponse.expires_in };
89
- }
90
- finally {
91
- await release();
92
- }
38
+ function targetLogin(...args) {
39
+ const [targetName, target, credentialStore, acquireLock, settings, deps] = args;
40
+ return new target_session_manager_js_1.TargetSessionManager({
41
+ targetName,
42
+ target,
43
+ credentialStore,
44
+ acquireLock,
45
+ settings,
46
+ deps,
47
+ }).login();
93
48
  }
94
- async function bestEffortRevoke(token, revocationEndpoint, clientId, http) {
95
- if (!revocationEndpoint)
96
- return;
97
- try {
98
- const body = new URLSearchParams({
99
- token,
100
- client_id: clientId,
101
- token_type_hint: 'refresh_token',
102
- });
103
- await http.fetch(revocationEndpoint, {
104
- method: 'POST',
105
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
106
- body: body.toString(),
107
- redirect: 'error',
108
- });
109
- }
110
- catch {
111
- // Best-effort
112
- }
49
+ async function refreshAccessToken(...args) {
50
+ const [targetName, target, credentialStore, acquireLock, deps, clock] = args;
51
+ return legacyManager({
52
+ targetName,
53
+ target,
54
+ credentialStore,
55
+ acquireLock,
56
+ deps,
57
+ ...(clock === undefined ? {} : { clock }),
58
+ }).getAccessTokenWithLifetime('capsule');
113
59
  }
114
- function getAccessTokenProvider(targetName, target, credentialStore, acquireLock, deps, clock = { now: () => Date.now() }) {
115
- let cachedToken = null;
116
- let expiresAt = 0;
117
- return {
118
- async getAccessToken(_signal) {
119
- if (cachedToken && clock.now() < expiresAt - 30_000) {
120
- return cachedToken;
121
- }
122
- const result = await refreshAccessToken(targetName, target, credentialStore, acquireLock, deps);
123
- cachedToken = result.accessToken;
124
- expiresAt = clock.now() + result.expiresIn * 1000;
125
- return result.accessToken;
126
- },
127
- };
60
+ function getAccessTokenProvider(...args) {
61
+ const [targetName, target, credentialStore, acquireLock, deps, clock] = args;
62
+ return legacyManager({
63
+ targetName,
64
+ target,
65
+ credentialStore,
66
+ acquireLock,
67
+ deps,
68
+ ...(clock === undefined ? {} : { clock }),
69
+ }).tokenProvider('capsule');
128
70
  }
129
- async function revokeAndCleanup(target, credentialStore, acquireLock, deps, force) {
130
- const { http, discoveryEndpoints } = deps;
131
- const { revocationEndpoint, clientId } = discoveryEndpoints;
132
- const serviceKey = (0, credential_store_ts_1.targetServiceKey)(target.id);
133
- const release = await acquireLock();
134
- try {
135
- const refreshToken = await credentialStore.get(serviceKey, credential_store_ts_1.TARGET_ACCOUNT);
136
- if (refreshToken && revocationEndpoint) {
137
- const body = new URLSearchParams({
138
- token: refreshToken,
139
- client_id: clientId,
140
- token_type_hint: 'refresh_token',
141
- });
142
- try {
143
- const response = await http.fetch(revocationEndpoint, {
144
- method: 'POST',
145
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
146
- body: body.toString(),
147
- redirect: 'error',
148
- });
149
- if (!response.ok && !force) {
150
- throw new Error(`Remote revocation failed (${response.status}). Use --force to remove anyway.`);
151
- }
152
- }
153
- catch (err) {
154
- if (!force)
155
- throw err;
156
- }
157
- }
158
- await credentialStore.delete(serviceKey, credential_store_ts_1.TARGET_ACCOUNT);
159
- }
160
- finally {
161
- await release();
162
- }
71
+ function revokeAndCleanup(...args) {
72
+ const [target, credentialStore, acquireLock, deps, force] = args;
73
+ const targetName = deps.targetName ?? target.id;
74
+ return legacyManager({ targetName, target, credentialStore, acquireLock, deps }).revoke(force);
163
75
  }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseTokenResponse = parseTokenResponse;
4
+ const MAX_TOKEN_BYTES = 16 * 1024;
5
+ const TOKEN_RESPONSE_FIELDS = [
6
+ 'access_token',
7
+ 'refresh_token',
8
+ 'token_type',
9
+ 'expires_in',
10
+ 'refresh_expires_in',
11
+ 'scope',
12
+ ];
13
+ function boundedString(value, maxBytes) {
14
+ return typeof value === 'string' && value.length > 0 &&
15
+ new TextEncoder().encode(value).byteLength <= maxBytes;
16
+ }
17
+ function tokenFieldsValid(token) {
18
+ const fields = Object.keys(token);
19
+ return fields.length === TOKEN_RESPONSE_FIELDS.length &&
20
+ fields.every((key) => TOKEN_RESPONSE_FIELDS.includes(key));
21
+ }
22
+ function tokenLifetimesValid(token) {
23
+ return Number.isSafeInteger(token.expires_in) &&
24
+ token.expires_in > 0 &&
25
+ token.expires_in <= 86_400 &&
26
+ Number.isSafeInteger(token.refresh_expires_in) &&
27
+ token.refresh_expires_in > 0 &&
28
+ token.refresh_expires_in <= 31_536_000;
29
+ }
30
+ function tokenStringsValid(token) {
31
+ return boundedString(token.access_token, MAX_TOKEN_BYTES) &&
32
+ boundedString(token.refresh_token, MAX_TOKEN_BYTES) &&
33
+ token.token_type === 'Bearer' &&
34
+ boundedString(token.scope, 512) &&
35
+ !/[\u0000-\u001f\u007f]/.test(token.scope);
36
+ }
37
+ function parseTokenResponse(value) {
38
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
39
+ throw new Error('Token response is malformed');
40
+ }
41
+ const token = value;
42
+ if (!tokenFieldsValid(token) || !tokenLifetimesValid(token) || !tokenStringsValid(token)) {
43
+ throw new Error('Token response is malformed');
44
+ }
45
+ return Object.freeze({
46
+ access_token: token.access_token,
47
+ refresh_token: token.refresh_token,
48
+ token_type: 'Bearer',
49
+ expires_in: token.expires_in,
50
+ });
51
+ }
@@ -0,0 +1,7 @@
1
+ export interface TokenResponse {
2
+ readonly access_token: string;
3
+ readonly refresh_token: string;
4
+ readonly token_type: 'Bearer';
5
+ readonly expires_in: number;
6
+ }
7
+ export declare function parseTokenResponse(value: unknown): TokenResponse;
@@ -0,0 +1,7 @@
1
+ export interface TokenResponse {
2
+ readonly access_token: string;
3
+ readonly refresh_token: string;
4
+ readonly token_type: 'Bearer';
5
+ readonly expires_in: number;
6
+ }
7
+ export declare function parseTokenResponse(value: unknown): TokenResponse;
@@ -0,0 +1,7 @@
1
+ export interface TokenResponse {
2
+ readonly access_token: string;
3
+ readonly refresh_token: string;
4
+ readonly token_type: 'Bearer';
5
+ readonly expires_in: number;
6
+ }
7
+ export declare function parseTokenResponse(value: unknown): TokenResponse;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseTokenResponse = parseTokenResponse;
4
+ const MAX_TOKEN_BYTES = 16 * 1024;
5
+ const TOKEN_RESPONSE_FIELDS = [
6
+ 'access_token',
7
+ 'refresh_token',
8
+ 'token_type',
9
+ 'expires_in',
10
+ 'refresh_expires_in',
11
+ 'scope',
12
+ ];
13
+ function boundedString(value, maxBytes) {
14
+ return typeof value === 'string' && value.length > 0 &&
15
+ new TextEncoder().encode(value).byteLength <= maxBytes;
16
+ }
17
+ function tokenFieldsValid(token) {
18
+ const fields = Object.keys(token);
19
+ return fields.length === TOKEN_RESPONSE_FIELDS.length &&
20
+ fields.every((key) => TOKEN_RESPONSE_FIELDS.includes(key));
21
+ }
22
+ function tokenLifetimesValid(token) {
23
+ return Number.isSafeInteger(token.expires_in) &&
24
+ token.expires_in > 0 &&
25
+ token.expires_in <= 86_400 &&
26
+ Number.isSafeInteger(token.refresh_expires_in) &&
27
+ token.refresh_expires_in > 0 &&
28
+ token.refresh_expires_in <= 31_536_000;
29
+ }
30
+ function tokenStringsValid(token) {
31
+ return boundedString(token.access_token, MAX_TOKEN_BYTES) &&
32
+ boundedString(token.refresh_token, MAX_TOKEN_BYTES) &&
33
+ token.token_type === 'Bearer' &&
34
+ boundedString(token.scope, 512) &&
35
+ !/[\u0000-\u001f\u007f]/.test(token.scope);
36
+ }
37
+ function parseTokenResponse(value) {
38
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
39
+ throw new Error('Token response is malformed');
40
+ }
41
+ const token = value;
42
+ if (!tokenFieldsValid(token) || !tokenLifetimesValid(token) || !tokenStringsValid(token)) {
43
+ throw new Error('Token response is malformed');
44
+ }
45
+ return Object.freeze({
46
+ access_token: token.access_token,
47
+ refresh_token: token.refresh_token,
48
+ token_type: 'Bearer',
49
+ expires_in: token.expires_in,
50
+ });
51
+ }
@@ -0,0 +1,48 @@
1
+ const MAX_TOKEN_BYTES = 16 * 1024;
2
+ const TOKEN_RESPONSE_FIELDS = [
3
+ 'access_token',
4
+ 'refresh_token',
5
+ 'token_type',
6
+ 'expires_in',
7
+ 'refresh_expires_in',
8
+ 'scope',
9
+ ];
10
+ function boundedString(value, maxBytes) {
11
+ return typeof value === 'string' && value.length > 0 &&
12
+ new TextEncoder().encode(value).byteLength <= maxBytes;
13
+ }
14
+ function tokenFieldsValid(token) {
15
+ const fields = Object.keys(token);
16
+ return fields.length === TOKEN_RESPONSE_FIELDS.length &&
17
+ fields.every((key) => TOKEN_RESPONSE_FIELDS.includes(key));
18
+ }
19
+ function tokenLifetimesValid(token) {
20
+ return Number.isSafeInteger(token.expires_in) &&
21
+ token.expires_in > 0 &&
22
+ token.expires_in <= 86_400 &&
23
+ Number.isSafeInteger(token.refresh_expires_in) &&
24
+ token.refresh_expires_in > 0 &&
25
+ token.refresh_expires_in <= 31_536_000;
26
+ }
27
+ function tokenStringsValid(token) {
28
+ return boundedString(token.access_token, MAX_TOKEN_BYTES) &&
29
+ boundedString(token.refresh_token, MAX_TOKEN_BYTES) &&
30
+ token.token_type === 'Bearer' &&
31
+ boundedString(token.scope, 512) &&
32
+ !/[\u0000-\u001f\u007f]/.test(token.scope);
33
+ }
34
+ export function parseTokenResponse(value) {
35
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
36
+ throw new Error('Token response is malformed');
37
+ }
38
+ const token = value;
39
+ if (!tokenFieldsValid(token) || !tokenLifetimesValid(token) || !tokenStringsValid(token)) {
40
+ throw new Error('Token response is malformed');
41
+ }
42
+ return Object.freeze({
43
+ access_token: token.access_token,
44
+ refresh_token: token.refresh_token,
45
+ token_type: 'Bearer',
46
+ expires_in: token.expires_in,
47
+ });
48
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@the-open-engine/zeroshot",
3
- "version": "6.29.0",
3
+ "version": "6.30.0",
4
4
  "description": "Multi-agent orchestration engine for Claude, Codex, and Gemini",
5
5
  "main": "src/orchestrator.js",
6
6
  "bin": {
@@ -44,20 +44,20 @@
44
44
  "typecheck:agent-cli-provider": "tsc --project tsconfig.agent-cli-provider.json",
45
45
  "typecheck:hosted-target": "tsc --project tsconfig.hosted-target.json",
46
46
  "typecheck:hosted-session": "tsc --project tsconfig.hosted-session.json",
47
- "test:hosted-target": "node --test tests/hosted-target/*.test.ts",
47
+ "test:hosted-target": "npm run build:cluster && node --test tests/hosted-target/*.test.ts",
48
48
  "test:target": "npm run build:agent-cli-provider && npm run build:target && node --test tests/target/*.test.ts",
49
49
  "typecheck:target": "tsc --project tsconfig.target.json",
50
50
  "typecheck:cluster": "tsc --project tsconfig.cluster.json",
51
51
  "lint:agent-cli-provider": "eslint \"src/agent-cli-provider/**/*.ts\" \"tests/agent-cli-provider/**/*.ts\"",
52
52
  "build:agent-cli-provider": "tsc --project tsconfig.agent-cli-provider.build.json",
53
53
  "build:target": "tsc --project tsconfig.target.build.json",
54
- "build:cluster": "npm run protocol:generate && tsc --project tsconfig.cluster.cjs.json && tsc --project tsconfig.cluster.esm.json && tsc --project tsconfig.hosted-session.cjs.json && tsc --project tsconfig.hosted-session.esm.json && node scripts/build-cluster.js",
54
+ "build:cluster": "npm run protocol:generate && tsc --project tsconfig.cluster.cjs.json && tsc --project tsconfig.cluster.esm.json && tsc --project tsconfig.hosted-target.cjs.json && tsc --project tsconfig.hosted-target.esm.json && tsc --project tsconfig.hosted-session.cjs.json && tsc --project tsconfig.hosted-session.esm.json && node scripts/build-cluster.js",
55
55
  "test:agent-cli-provider": "node --test tests/agent-cli-provider/*.test.js",
56
56
  "test:omp": "npm run build:agent-cli-provider && node --test tests/agent-cli-provider/omp-*.test.js && node tests/run-tests.js tests/omp-rpc-watcher.test.js tests/omp-isolation-capability.test.js tests/omp-docker-auth.test.js tests/omp-docker-fresh-only.test.js",
57
57
  "test:providers:live": "npm run build:agent-cli-provider && node scripts/live-provider-smoke.js",
58
58
  "check:agent-cli-provider": "npm run check:agent-cli-provider:ci",
59
59
  "check:agent-cli-provider:ci": "npm run typecheck:agent-cli-provider && npm run lint:agent-cli-provider && npm run build:agent-cli-provider && npm run test:agent-cli-provider",
60
- "test:cluster-client": "npm run build:cluster && node --test tests/cluster/client.test.js tests/cluster/parity.test.js tests/cluster/architecture.test.js tests/cluster/verifier-regressions.test.js tests/cluster/request-validation.test.js tests/hosted-session/coordinator.test.js",
60
+ "test:cluster-client": "npm run build:cluster && node --test tests/cluster/client.test.js tests/cluster/client-lifecycle.test.js tests/cluster/parity.test.js tests/cluster/architecture.test.js tests/cluster/verifier-regressions.test.js tests/cluster/request-validation.test.js tests/hosted-session/coordinator.test.js tests/hosted-session/coordinator-cancellation.test.js",
61
61
  "test:cluster-package": "npm run build:agent-cli-provider && npm run build:cluster && npm run build:target && node --test tests/cluster/package.test.js",
62
62
  "dev:link": "npm link",
63
63
  "opcore:status": "opcore status --repo . --json",
@@ -77,6 +77,7 @@
77
77
  "protocol:generate": "node scripts/generate-cluster-types.js",
78
78
  "protocol:check": "cargo run -p openengine-cluster-testkit --bin generate-cluster-protocol -- --check && node scripts/generate-cluster-types.js --check",
79
79
  "rust:distribution:check": "node scripts/rust-distribution.js check-repository",
80
+ "hosted-oecp:image:check": "node scripts/hosted-oecp-image.js check",
80
81
  "rust:check": "cargo fmt --all -- --check && cargo clippy --workspace --all-targets -- -D warnings && cargo test --workspace",
81
82
  "deadcode": "ts-prune --skip node_modules",
82
83
  "deadcode:files": "unimported",
@@ -157,16 +158,22 @@
157
158
  "files": [
158
159
  "src/",
159
160
  "lib/",
160
- "!src/target/register-hosted-commands.ts",
161
- "!lib/target/register-hosted-commands.js",
162
- "!lib/target/register-hosted-commands.d.ts",
163
161
  "bin/",
164
162
  "cli/",
165
163
  "task-lib/",
166
164
  "cluster-templates/",
167
165
  "cluster-hooks/",
168
166
  "docker/",
167
+ "!docker/zeroshot-oecp/",
169
168
  "scripts/",
169
+ "!scripts/hosted-oecp-image.js",
170
+ "!scripts/hosted-oecp-image-commands.js",
171
+ "!scripts/hosted-oecp-image-smoke.js",
172
+ "!scripts/hosted-oecp-manifest.js",
173
+ "!scripts/hosted-oecp-smoke-capability.js",
174
+ "!scripts/hosted-oecp-smoke-client.js",
175
+ "!scripts/hosted-oecp-smoke-codex.mjs",
176
+ "!scripts/hosted-oecp-smoke-fixture.js",
170
177
  "protocol/openengine-cluster/v1/worker.schema.json",
171
178
  "docs/openengine-cluster-protocol/v1/legacy-worker.md",
172
179
  "README.md",