@aexhq/sdk 0.46.5-canary → 0.51.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 (346) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +38 -0
  3. package/README.md +54 -29
  4. package/dist/client/aex.d.ts +33 -0
  5. package/dist/client/aex.js +108 -0
  6. package/dist/client/aex.js.map +1 -0
  7. package/dist/client/credentials.d.ts +25 -0
  8. package/dist/client/credentials.js +97 -0
  9. package/dist/client/credentials.js.map +1 -0
  10. package/dist/client/routing.d.ts +7 -0
  11. package/dist/client/routing.js +29 -0
  12. package/dist/client/routing.js.map +1 -0
  13. package/dist/downloads/download.d.ts +18 -0
  14. package/dist/downloads/download.js +67 -0
  15. package/dist/downloads/download.js.map +1 -0
  16. package/dist/generated/errors.d.ts +12 -0
  17. package/dist/generated/errors.js +82 -0
  18. package/dist/generated/errors.js.map +1 -0
  19. package/dist/generated/models.d.ts +1392 -0
  20. package/dist/generated/models.js +62 -0
  21. package/dist/generated/models.js.map +1 -0
  22. package/dist/generated/resources.d.ts +710 -0
  23. package/dist/generated/resources.js +582 -0
  24. package/dist/generated/resources.js.map +1 -0
  25. package/dist/generated/routes.d.ts +44 -0
  26. package/dist/generated/routes.js +1905 -0
  27. package/dist/generated/routes.js.map +1 -0
  28. package/dist/index.d.ts +21 -50
  29. package/dist/index.js +14 -62
  30. package/dist/index.js.map +1 -1
  31. package/dist/node/session-file-limits.d.ts +4 -0
  32. package/dist/node/session-file-limits.js +7 -0
  33. package/dist/node/session-file-limits.js.map +1 -0
  34. package/dist/node/session-files.d.ts +80 -0
  35. package/dist/node/session-files.js +254 -0
  36. package/dist/node/session-files.js.map +1 -0
  37. package/dist/observations/stream.d.ts +1 -0
  38. package/dist/observations/stream.js +18 -0
  39. package/dist/observations/stream.js.map +1 -0
  40. package/dist/transport/errors.d.ts +60 -0
  41. package/dist/transport/errors.js +107 -0
  42. package/dist/transport/errors.js.map +1 -0
  43. package/dist/transport/pagination.d.ts +8 -0
  44. package/dist/transport/pagination.js +34 -0
  45. package/dist/transport/pagination.js.map +1 -0
  46. package/dist/transport/retry.d.ts +21 -0
  47. package/dist/transport/retry.js +37 -0
  48. package/dist/transport/retry.js.map +1 -0
  49. package/dist/transport/transport.d.ts +25 -0
  50. package/dist/transport/transport.js +33 -0
  51. package/dist/transport/transport.js.map +1 -0
  52. package/package.json +67 -30
  53. package/dist/_contracts/account-operations.d.ts +0 -101
  54. package/dist/_contracts/account-operations.js +0 -242
  55. package/dist/_contracts/account-types.d.ts +0 -461
  56. package/dist/_contracts/account-types.js +0 -1
  57. package/dist/_contracts/api-key.d.ts +0 -61
  58. package/dist/_contracts/api-key.js +0 -101
  59. package/dist/_contracts/api-routes.d.ts +0 -20
  60. package/dist/_contracts/api-routes.js +0 -109
  61. package/dist/_contracts/archive-limits.d.ts +0 -3
  62. package/dist/_contracts/archive-limits.js +0 -23
  63. package/dist/_contracts/asset-authoring.d.ts +0 -22
  64. package/dist/_contracts/asset-authoring.js +0 -106
  65. package/dist/_contracts/asset-bundle.d.ts +0 -64
  66. package/dist/_contracts/asset-bundle.js +0 -263
  67. package/dist/_contracts/asset-upload-helper.d.ts +0 -31
  68. package/dist/_contracts/asset-upload-helper.js +0 -84
  69. package/dist/_contracts/billing-admission.d.ts +0 -29
  70. package/dist/_contracts/billing-admission.js +0 -28
  71. package/dist/_contracts/bundle-manifest.d.ts +0 -89
  72. package/dist/_contracts/bundle-manifest.js +0 -158
  73. package/dist/_contracts/canonical-sha256.d.ts +0 -8
  74. package/dist/_contracts/canonical-sha256.js +0 -8
  75. package/dist/_contracts/connection-ticket.d.ts +0 -22
  76. package/dist/_contracts/connection-ticket.js +0 -54
  77. package/dist/_contracts/continuation-event.d.ts +0 -31
  78. package/dist/_contracts/continuation-event.js +0 -6
  79. package/dist/_contracts/contract-parse-error.d.ts +0 -12
  80. package/dist/_contracts/contract-parse-error.js +0 -51
  81. package/dist/_contracts/error-codes.d.ts +0 -26
  82. package/dist/_contracts/error-codes.js +0 -116
  83. package/dist/_contracts/error-factory.d.ts +0 -32
  84. package/dist/_contracts/error-factory.js +0 -174
  85. package/dist/_contracts/event-envelope.d.ts +0 -471
  86. package/dist/_contracts/event-envelope.js +0 -501
  87. package/dist/_contracts/event-stream-client.d.ts +0 -122
  88. package/dist/_contracts/event-stream-client.js +0 -445
  89. package/dist/_contracts/event-view.d.ts +0 -44
  90. package/dist/_contracts/event-view.js +0 -69
  91. package/dist/_contracts/failure-class.d.ts +0 -29
  92. package/dist/_contracts/failure-class.js +0 -73
  93. package/dist/_contracts/http.d.ts +0 -135
  94. package/dist/_contracts/http.js +0 -434
  95. package/dist/_contracts/ids.d.ts +0 -66
  96. package/dist/_contracts/ids.js +0 -119
  97. package/dist/_contracts/index.d.ts +0 -42
  98. package/dist/_contracts/index.js +0 -52
  99. package/dist/_contracts/internal.d.ts +0 -55
  100. package/dist/_contracts/internal.js +0 -113
  101. package/dist/_contracts/models.d.ts +0 -30
  102. package/dist/_contracts/models.js +0 -28
  103. package/dist/_contracts/operation-core.d.ts +0 -36
  104. package/dist/_contracts/operation-core.js +0 -70
  105. package/dist/_contracts/operations.d.ts +0 -218
  106. package/dist/_contracts/operations.js +0 -1496
  107. package/dist/_contracts/otlp-projection.d.ts +0 -78
  108. package/dist/_contracts/otlp-projection.js +0 -171
  109. package/dist/_contracts/post-hook.d.ts +0 -31
  110. package/dist/_contracts/post-hook.js +0 -61
  111. package/dist/_contracts/provider-fault.d.ts +0 -34
  112. package/dist/_contracts/provider-fault.js +0 -68
  113. package/dist/_contracts/retry-core.d.ts +0 -29
  114. package/dist/_contracts/retry-core.js +0 -79
  115. package/dist/_contracts/runner-event.d.ts +0 -117
  116. package/dist/_contracts/runner-event.js +0 -172
  117. package/dist/_contracts/runtime-kind.d.ts +0 -60
  118. package/dist/_contracts/runtime-kind.js +0 -70
  119. package/dist/_contracts/runtime-manifest.d.ts +0 -121
  120. package/dist/_contracts/runtime-manifest.js +0 -83
  121. package/dist/_contracts/runtime-security-profile.d.ts +0 -26
  122. package/dist/_contracts/runtime-security-profile.js +0 -73
  123. package/dist/_contracts/runtime-sizes.d.ts +0 -104
  124. package/dist/_contracts/runtime-sizes.js +0 -111
  125. package/dist/_contracts/runtime-types.d.ts +0 -618
  126. package/dist/_contracts/runtime-types.js +0 -58
  127. package/dist/_contracts/schemas/asset-bundle.d.ts +0 -70
  128. package/dist/_contracts/schemas/asset-bundle.js +0 -107
  129. package/dist/_contracts/schemas/asset-ref.d.ts +0 -61
  130. package/dist/_contracts/schemas/asset-ref.js +0 -118
  131. package/dist/_contracts/schemas/bundle-manifest.d.ts +0 -66
  132. package/dist/_contracts/schemas/bundle-manifest.js +0 -77
  133. package/dist/_contracts/schemas/index.d.ts +0 -32
  134. package/dist/_contracts/schemas/index.js +0 -30
  135. package/dist/_contracts/schemas/mcp-server.d.ts +0 -99
  136. package/dist/_contracts/schemas/mcp-server.js +0 -209
  137. package/dist/_contracts/schemas/models.d.ts +0 -29
  138. package/dist/_contracts/schemas/models.js +0 -51
  139. package/dist/_contracts/schemas/numeric.d.ts +0 -18
  140. package/dist/_contracts/schemas/numeric.js +0 -28
  141. package/dist/_contracts/schemas/post-hook.d.ts +0 -45
  142. package/dist/_contracts/schemas/post-hook.js +0 -68
  143. package/dist/_contracts/schemas/response-assets.d.ts +0 -75
  144. package/dist/_contracts/schemas/response-assets.js +0 -81
  145. package/dist/_contracts/schemas/response-billing.d.ts +0 -208
  146. package/dist/_contracts/schemas/response-billing.js +0 -139
  147. package/dist/_contracts/schemas/response-common.d.ts +0 -132
  148. package/dist/_contracts/schemas/response-common.js +0 -162
  149. package/dist/_contracts/schemas/response-identity.d.ts +0 -648
  150. package/dist/_contracts/schemas/response-identity.js +0 -131
  151. package/dist/_contracts/schemas/response-mcp-servers.d.ts +0 -51
  152. package/dist/_contracts/schemas/response-mcp-servers.js +0 -32
  153. package/dist/_contracts/schemas/response-secrets.d.ts +0 -50
  154. package/dist/_contracts/schemas/response-secrets.js +0 -32
  155. package/dist/_contracts/schemas/response-sessions-internal.d.ts +0 -200
  156. package/dist/_contracts/schemas/response-sessions-internal.js +0 -142
  157. package/dist/_contracts/schemas/response-sessions.d.ts +0 -1598
  158. package/dist/_contracts/schemas/response-sessions.js +0 -377
  159. package/dist/_contracts/schemas/response-webhooks.d.ts +0 -76
  160. package/dist/_contracts/schemas/response-webhooks.js +0 -42
  161. package/dist/_contracts/schemas/response-workspace.d.ts +0 -225
  162. package/dist/_contracts/schemas/response-workspace.js +0 -99
  163. package/dist/_contracts/schemas/runtime-kind.d.ts +0 -31
  164. package/dist/_contracts/schemas/runtime-kind.js +0 -29
  165. package/dist/_contracts/schemas/runtime-security-profile.d.ts +0 -28
  166. package/dist/_contracts/schemas/runtime-security-profile.js +0 -26
  167. package/dist/_contracts/schemas/runtime-sizes.d.ts +0 -70
  168. package/dist/_contracts/schemas/runtime-sizes.js +0 -127
  169. package/dist/_contracts/schemas/session-limits.d.ts +0 -34
  170. package/dist/_contracts/schemas/session-limits.js +0 -39
  171. package/dist/_contracts/schemas/session-machine.d.ts +0 -23
  172. package/dist/_contracts/schemas/session-machine.js +0 -24
  173. package/dist/_contracts/schemas/session-request-config.d.ts +0 -58
  174. package/dist/_contracts/schemas/session-request-config.js +0 -134
  175. package/dist/_contracts/schemas/session-webhook.d.ts +0 -11
  176. package/dist/_contracts/schemas/session-webhook.js +0 -38
  177. package/dist/_contracts/schemas/side-effect-audit.d.ts +0 -98
  178. package/dist/_contracts/schemas/side-effect-audit.js +0 -102
  179. package/dist/_contracts/schemas/submission-assets.d.ts +0 -117
  180. package/dist/_contracts/schemas/submission-assets.js +0 -147
  181. package/dist/_contracts/schemas/submission-body.d.ts +0 -251
  182. package/dist/_contracts/schemas/submission-body.js +0 -378
  183. package/dist/_contracts/schemas/submission-environment.d.ts +0 -79
  184. package/dist/_contracts/schemas/submission-environment.js +0 -179
  185. package/dist/_contracts/schemas/submission-request.d.ts +0 -158
  186. package/dist/_contracts/schemas/submission-request.js +0 -49
  187. package/dist/_contracts/schemas/submission-secrets.d.ts +0 -47
  188. package/dist/_contracts/schemas/submission-secrets.js +0 -108
  189. package/dist/_contracts/schemas/wire.d.ts +0 -118
  190. package/dist/_contracts/schemas/wire.js +0 -171
  191. package/dist/_contracts/schemas/workspace-resources.d.ts +0 -50
  192. package/dist/_contracts/schemas/workspace-resources.js +0 -87
  193. package/dist/_contracts/sdk-errors.d.ts +0 -212
  194. package/dist/_contracts/sdk-errors.js +0 -313
  195. package/dist/_contracts/sdk-secrets.d.ts +0 -67
  196. package/dist/_contracts/sdk-secrets.js +0 -427
  197. package/dist/_contracts/session-archive.d.ts +0 -16
  198. package/dist/_contracts/session-archive.js +0 -92
  199. package/dist/_contracts/session-artifacts.d.ts +0 -189
  200. package/dist/_contracts/session-artifacts.js +0 -264
  201. package/dist/_contracts/session-config.d.ts +0 -373
  202. package/dist/_contracts/session-config.js +0 -562
  203. package/dist/_contracts/session-cost-types.d.ts +0 -211
  204. package/dist/_contracts/session-cost-types.js +0 -69
  205. package/dist/_contracts/session-cost.d.ts +0 -8
  206. package/dist/_contracts/session-cost.js +0 -582
  207. package/dist/_contracts/session-custody.d.ts +0 -165
  208. package/dist/_contracts/session-custody.js +0 -345
  209. package/dist/_contracts/session-file-query.d.ts +0 -14
  210. package/dist/_contracts/session-file-query.js +0 -178
  211. package/dist/_contracts/session-record.d.ts +0 -112
  212. package/dist/_contracts/session-record.js +0 -165
  213. package/dist/_contracts/session-retention.d.ts +0 -201
  214. package/dist/_contracts/session-retention.js +0 -450
  215. package/dist/_contracts/side-effect-audit.d.ts +0 -126
  216. package/dist/_contracts/side-effect-audit.js +0 -520
  217. package/dist/_contracts/sse.d.ts +0 -74
  218. package/dist/_contracts/sse.js +0 -227
  219. package/dist/_contracts/stable.d.ts +0 -45
  220. package/dist/_contracts/stable.js +0 -62
  221. package/dist/_contracts/status.d.ts +0 -25
  222. package/dist/_contracts/status.js +0 -57
  223. package/dist/_contracts/submission-limits.d.ts +0 -61
  224. package/dist/_contracts/submission-limits.js +0 -60
  225. package/dist/_contracts/submission.d.ts +0 -547
  226. package/dist/_contracts/submission.js +0 -812
  227. package/dist/_contracts/suggest.d.ts +0 -15
  228. package/dist/_contracts/suggest.js +0 -53
  229. package/dist/_contracts/testing/response-bindings.d.ts +0 -45
  230. package/dist/_contracts/testing/response-bindings.js +0 -256
  231. package/dist/_contracts/testing/wire-conformance-entry.d.ts +0 -10
  232. package/dist/_contracts/testing/wire-conformance-entry.js +0 -8
  233. package/dist/_contracts/testing/wire-conformance.d.ts +0 -169
  234. package/dist/_contracts/testing/wire-conformance.js +0 -276
  235. package/dist/_contracts/turn-trace.d.ts +0 -28
  236. package/dist/_contracts/turn-trace.js +0 -1
  237. package/dist/_contracts/unknown-field-error.d.ts +0 -13
  238. package/dist/_contracts/unknown-field-error.js +0 -21
  239. package/dist/_contracts/value-guards.d.ts +0 -20
  240. package/dist/_contracts/value-guards.js +0 -34
  241. package/dist/_contracts/webhook-verify.d.ts +0 -34
  242. package/dist/_contracts/webhook-verify.js +0 -93
  243. package/dist/_contracts/wire-observer.d.ts +0 -49
  244. package/dist/_contracts/wire-observer.js +0 -34
  245. package/dist/_contracts/workflow-status.d.ts +0 -7
  246. package/dist/_contracts/workflow-status.js +0 -43
  247. package/dist/_contracts/workspace-resources.d.ts +0 -98
  248. package/dist/_contracts/workspace-resources.js +0 -39
  249. package/dist/archive-limits.d.ts +0 -1
  250. package/dist/archive-limits.js +0 -2
  251. package/dist/archive-limits.js.map +0 -1
  252. package/dist/asset-upload.d.ts +0 -47
  253. package/dist/asset-upload.js +0 -269
  254. package/dist/asset-upload.js.map +0 -1
  255. package/dist/bundle.d.ts +0 -9
  256. package/dist/bundle.js +0 -20
  257. package/dist/bundle.js.map +0 -1
  258. package/dist/canonical-zip.d.ts +0 -68
  259. package/dist/canonical-zip.js +0 -355
  260. package/dist/canonical-zip.js.map +0 -1
  261. package/dist/cli.mjs +0 -12048
  262. package/dist/cli.mjs.sha256 +0 -1
  263. package/dist/client-types.d.ts +0 -192
  264. package/dist/client-types.js +0 -2
  265. package/dist/client-types.js.map +0 -1
  266. package/dist/client.d.ts +0 -464
  267. package/dist/client.js +0 -1207
  268. package/dist/client.js.map +0 -1
  269. package/dist/event-projection.d.ts +0 -22
  270. package/dist/event-projection.js +0 -380
  271. package/dist/event-projection.js.map +0 -1
  272. package/dist/fetch-archive.d.ts +0 -16
  273. package/dist/fetch-archive.js +0 -252
  274. package/dist/fetch-archive.js.map +0 -1
  275. package/dist/file.d.ts +0 -96
  276. package/dist/file.js +0 -272
  277. package/dist/file.js.map +0 -1
  278. package/dist/instructions.d.ts +0 -20
  279. package/dist/instructions.js +0 -40
  280. package/dist/instructions.js.map +0 -1
  281. package/dist/legacy-session-provider-fault.d.ts +0 -7
  282. package/dist/legacy-session-provider-fault.js +0 -38
  283. package/dist/legacy-session-provider-fault.js.map +0 -1
  284. package/dist/mcp-server.d.ts +0 -84
  285. package/dist/mcp-server.js +0 -117
  286. package/dist/mcp-server.js.map +0 -1
  287. package/dist/node-fs.d.ts +0 -29
  288. package/dist/node-fs.js +0 -19
  289. package/dist/node-fs.js.map +0 -1
  290. package/dist/node-walk.d.ts +0 -69
  291. package/dist/node-walk.js +0 -151
  292. package/dist/node-walk.js.map +0 -1
  293. package/dist/path-basename.d.ts +0 -5
  294. package/dist/path-basename.js +0 -9
  295. package/dist/path-basename.js.map +0 -1
  296. package/dist/retry.d.ts +0 -70
  297. package/dist/retry.js +0 -155
  298. package/dist/retry.js.map +0 -1
  299. package/dist/secret.d.ts +0 -65
  300. package/dist/secret.js +0 -110
  301. package/dist/secret.js.map +0 -1
  302. package/dist/session-validate.d.ts +0 -100
  303. package/dist/session-validate.js +0 -303
  304. package/dist/session-validate.js.map +0 -1
  305. package/dist/skill.d.ts +0 -99
  306. package/dist/skill.js +0 -169
  307. package/dist/skill.js.map +0 -1
  308. package/dist/submission-wire.d.ts +0 -13
  309. package/dist/submission-wire.js +0 -69
  310. package/dist/submission-wire.js.map +0 -1
  311. package/dist/tool.d.ts +0 -41
  312. package/dist/tool.js +0 -76
  313. package/dist/tool.js.map +0 -1
  314. package/dist/version.d.ts +0 -9
  315. package/dist/version.js +0 -10
  316. package/dist/version.js.map +0 -1
  317. package/docs/authentication.md +0 -125
  318. package/docs/billing.md +0 -164
  319. package/docs/cleanup.md +0 -27
  320. package/docs/concepts/agent-tools.md +0 -47
  321. package/docs/concepts/composition.md +0 -60
  322. package/docs/concepts/providers-and-runtimes.md +0 -121
  323. package/docs/concepts/sessions.md +0 -51
  324. package/docs/concepts/subagents.md +0 -35
  325. package/docs/credentials.md +0 -116
  326. package/docs/defaults.md +0 -51
  327. package/docs/errors.md +0 -258
  328. package/docs/events.md +0 -143
  329. package/docs/files.md +0 -130
  330. package/docs/limits-and-quotas.md +0 -114
  331. package/docs/limits.md +0 -51
  332. package/docs/mcp.md +0 -47
  333. package/docs/networking.md +0 -114
  334. package/docs/provider-runtime-capabilities.md +0 -32
  335. package/docs/public-surface.json +0 -73
  336. package/docs/quickstart.md +0 -135
  337. package/docs/release.md +0 -44
  338. package/docs/retries.md +0 -108
  339. package/docs/secrets.md +0 -141
  340. package/docs/session-config.md +0 -51
  341. package/docs/session-record.md +0 -58
  342. package/docs/skills.md +0 -65
  343. package/docs/telemetry.md +0 -66
  344. package/docs/testing.md +0 -35
  345. package/docs/vision-skills.md +0 -94
  346. package/docs/webhooks.md +0 -143
@@ -0,0 +1,29 @@
1
+ import { AccountToken, WorkspaceApiKey } from "./credentials.js";
2
+ import { AexConfigError } from "../transport/errors.js";
3
+ function validateBaseUrl(value) {
4
+ let url;
5
+ try {
6
+ url = new URL(value);
7
+ }
8
+ catch {
9
+ throw new AexConfigError("base URL must be an absolute HTTPS URL");
10
+ }
11
+ if (url.protocol !== "https:" || url.username || url.password || url.search || url.hash) {
12
+ throw new AexConfigError("base URL must be HTTPS without credentials, query, or fragment");
13
+ }
14
+ return url.toString().replace(/\/$/, "");
15
+ }
16
+ export function resolveRegionalBaseUrl(credential, options) {
17
+ if (options.regionalBaseUrl)
18
+ return validateBaseUrl(options.regionalBaseUrl);
19
+ if (credential instanceof WorkspaceApiKey)
20
+ return credential.regionalBaseUrl();
21
+ if (credential instanceof AccountToken && options.workspaceId) {
22
+ throw new AexConfigError("an account token with workspaceId must resolve placement through workspace_get before regional I/O");
23
+ }
24
+ throw new AexConfigError("an account token requires regionalBaseUrl or workspaceId for regional routes");
25
+ }
26
+ export function resolveCentralBaseUrl(value = "https://api.aex.dev") {
27
+ return validateBaseUrl(value);
28
+ }
29
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/client/routing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAOxD,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,cAAc,CAAC,wCAAwC,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACxF,MAAM,IAAI,cAAc,CAAC,gEAAgE,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAA4B,EAC5B,OAA+B;IAE/B,IAAI,OAAO,CAAC,eAAe;QAAE,OAAO,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7E,IAAI,UAAU,YAAY,eAAe;QAAE,OAAO,UAAU,CAAC,eAAe,EAAE,CAAC;IAC/E,IAAI,UAAU,YAAY,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC9D,MAAM,IAAI,cAAc,CACtB,oGAAoG,CACrG,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,cAAc,CACtB,8EAA8E,CAC/E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAK,GAAG,qBAAqB;IACjE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { DownloadGrant as ContractDownloadGrant } from "../generated/models.js";
2
+ export interface DownloadRange {
3
+ readonly start: number;
4
+ readonly endExclusive: number;
5
+ }
6
+ export type DownloadGrant = ContractDownloadGrant;
7
+ export declare const MAX_SINGLE_GET_BYTES = 5000000000000;
8
+ type FetchLike = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
9
+ export declare function planDownloadRanges(sizeBytes: number, selected?: DownloadRange): readonly DownloadRange[];
10
+ export declare class Download {
11
+ #private;
12
+ readonly grant: DownloadGrant;
13
+ constructor(grant: DownloadGrant, fetchLike?: FetchLike);
14
+ bytes(): Promise<Uint8Array>;
15
+ text(): Promise<string>;
16
+ json<T>(): Promise<T>;
17
+ }
18
+ export {};
@@ -0,0 +1,67 @@
1
+ import { AexConfigError } from "../transport/errors.js";
2
+ export const MAX_SINGLE_GET_BYTES = 5_000_000_000_000;
3
+ export function planDownloadRanges(sizeBytes, selected) {
4
+ if (!Number.isSafeInteger(sizeBytes) || sizeBytes < 0)
5
+ throw new AexConfigError("invalid sizeBytes");
6
+ if (selected) {
7
+ if (!Number.isSafeInteger(selected.start) || !Number.isSafeInteger(selected.endExclusive)
8
+ || selected.start < 0 || selected.endExclusive <= selected.start || selected.endExclusive > sizeBytes) {
9
+ throw new AexConfigError("invalid half-open download range");
10
+ }
11
+ return [selected];
12
+ }
13
+ if (sizeBytes === 0)
14
+ return [];
15
+ const ranges = [];
16
+ for (let start = 0; start < sizeBytes; start += MAX_SINGLE_GET_BYTES) {
17
+ ranges.push({ start, endExclusive: Math.min(sizeBytes, start + MAX_SINGLE_GET_BYTES) });
18
+ }
19
+ return ranges;
20
+ }
21
+ export class Download {
22
+ grant;
23
+ #fetch;
24
+ constructor(grant, fetchLike = globalThis.fetch) {
25
+ this.grant = grant;
26
+ this.#fetch = fetchLike.bind(globalThis);
27
+ }
28
+ async bytes() {
29
+ if (Date.parse(this.grant.expiresAt) <= Date.now()) {
30
+ throw new AexConfigError("download grant expired");
31
+ }
32
+ const sizeBytes = parseCanonicalBytes(this.grant.sizeBytes, "sizeBytes");
33
+ const authorizedBytes = parseCanonicalBytes(this.grant.authorizedBytes, "authorizedBytes");
34
+ if (authorizedBytes > sizeBytes) {
35
+ throw new AexConfigError("download grant authorizes more bytes than the object contains");
36
+ }
37
+ const response = await this.#fetch(this.grant.url, {
38
+ redirect: "error",
39
+ });
40
+ if (!response.ok)
41
+ throw new AexConfigError(`download failed with status ${response.status}`);
42
+ const bytes = new Uint8Array(await response.arrayBuffer());
43
+ if (bytes.byteLength !== authorizedBytes) {
44
+ throw new AexConfigError(`download length mismatch: expected ${authorizedBytes}, received ${bytes.byteLength}`);
45
+ }
46
+ if (authorizedBytes === sizeBytes) {
47
+ const digest = await crypto.subtle.digest("SHA-256", bytes);
48
+ const actual = `sha256:${Array.from(new Uint8Array(digest), (value) => value.toString(16).padStart(2, "0")).join("")}`;
49
+ if (actual !== this.grant.sha256)
50
+ throw new AexConfigError("download digest mismatch");
51
+ }
52
+ return bytes;
53
+ }
54
+ async text() { return new TextDecoder().decode(await this.bytes()); }
55
+ async json() { return JSON.parse(await this.text()); }
56
+ }
57
+ function parseCanonicalBytes(value, field) {
58
+ if (!/^(0|[1-9][0-9]*)$/.test(value)) {
59
+ throw new AexConfigError(`download grant ${field} is not a canonical decimal`);
60
+ }
61
+ const parsed = Number(value);
62
+ if (!Number.isSafeInteger(parsed)) {
63
+ throw new AexConfigError(`download grant ${field} exceeds SDK precision`);
64
+ }
65
+ return parsed;
66
+ }
67
+ //# sourceMappingURL=download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/downloads/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAOxD,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAGtD,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,QAAwB;IAC5E,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,mBAAmB,CAAC,CAAC;IACrG,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;eACpF,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,YAAY,GAAG,SAAS,EAAE,CAAC;YACxG,MAAM,IAAI,cAAc,CAAC,kCAAkC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,oBAAoB,EAAE,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,OAAO,QAAQ;IACV,KAAK,CAAgB;IACrB,MAAM,CAAY;IAE3B,YAAY,KAAoB,EAAE,YAAuB,UAAU,CAAC,KAAK;QACvE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,cAAc,CAAC,wBAAwB,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QAC3F,IAAI,eAAe,GAAG,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,cAAc,CAAC,+DAA+D,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACjD,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,cAAc,CAAC,+BAA+B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;YACzC,MAAM,IAAI,cAAc,CACtB,sCAAsC,eAAe,cAAc,KAAK,CAAC,UAAU,EAAE,CACtF,CAAC;QACJ,CAAC;QACD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,UAAU,KAAK,CAAC,IAAI,CACjC,IAAI,UAAU,CAAC,MAAM,CAAC,EACtB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAC/C,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACb,IAAI,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,MAAM,IAAI,cAAc,CAAC,0BAA0B,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,KAAsB,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,KAAK,CAAC,IAAI,KAAoB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAM,CAAC,CAAC,CAAC;CAC3E;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,KAAa;IACvD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,cAAc,CAAC,kBAAkB,KAAK,6BAA6B,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,cAAc,CAAC,kBAAkB,KAAK,wBAAwB,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The public error vocabulary, projected from the authored contract.
3
+ *
4
+ * `ERROR_METADATA` is keyed by `string` rather than by a closed union: a
5
+ * deployed platform can answer with a code newer than the installed SDK, and
6
+ * the transport decides what to construct from the lookup miss instead of
7
+ * failing to compile.
8
+ */
9
+ export type ErrorClass = "auth" | "conflict" | "internal" | "not_found" | "precondition" | "quota" | "state" | "unavailable" | "validation";
10
+ export declare const ERROR_METADATA: Readonly<Record<string, {
11
+ readonly class: ErrorClass;
12
+ }>>;
@@ -0,0 +1,82 @@
1
+ // @generated by aex-contract-gen; DO NOT EDIT.
2
+ // Contract digest: sha256:dddf87f6715de38e24d77e348f34f1d066254b797719a09a995d660373335a66
3
+ export const ERROR_METADATA = Object.freeze({
4
+ unauthenticated: { class: "auth" },
5
+ forbidden: { class: "auth" },
6
+ insufficient_scope: { class: "auth" },
7
+ token_invalid: { class: "auth" },
8
+ token_revoked: { class: "auth" },
9
+ token_expired: { class: "auth" },
10
+ malformed_token: { class: "auth" },
11
+ authorization_pending: { class: "state" },
12
+ slow_down: { class: "quota" },
13
+ not_found: { class: "not_found" },
14
+ gone: { class: "not_found" },
15
+ idempotency_conflict: { class: "conflict" },
16
+ idempotency_in_flight: { class: "conflict" },
17
+ api_key_secret_unavailable: { class: "conflict" },
18
+ operation_idempotency_conflict: { class: "conflict" },
19
+ invalid_request: { class: "validation" },
20
+ invalid_scope: { class: "validation" },
21
+ invalid_cursor: { class: "validation" },
22
+ invalid_file_selection: { class: "validation" },
23
+ invalid_range: { class: "validation" },
24
+ unsupported_media_type: { class: "validation" },
25
+ payload_too_large: { class: "validation" },
26
+ limit_exceeded: { class: "quota" },
27
+ session_not_idle: { class: "state" },
28
+ session_terminated: { class: "state" },
29
+ workspace_activation_required: { class: "state" },
30
+ workspace_not_live: { class: "state" },
31
+ session_deleting: { class: "state" },
32
+ session_deleted: { class: "not_found" },
33
+ deletion_in_progress: { class: "conflict" },
34
+ resource_conflict: { class: "conflict" },
35
+ last_owner_required: { class: "state" },
36
+ operation_not_cancelable: { class: "state" },
37
+ approval_not_found: { class: "not_found" },
38
+ approval_already_resolved: { class: "conflict" },
39
+ approval_binding_changed: { class: "conflict" },
40
+ file_not_found: { class: "not_found" },
41
+ content_missing: { class: "state" },
42
+ export_not_found: { class: "not_found" },
43
+ export_not_ready: { class: "state" },
44
+ export_expired: { class: "not_found" },
45
+ export_revoked: { class: "not_found" },
46
+ export_capacity: { class: "unavailable" },
47
+ download_grant_expired: { class: "not_found" },
48
+ telemetry_payload_too_large: { class: "validation" },
49
+ invalid_telemetry: { class: "validation" },
50
+ telemetry_quota_exceeded: { class: "quota" },
51
+ telemetry_incomplete: { class: "state" },
52
+ unsupported_export_signal: { class: "validation" },
53
+ invalid_query: { class: "validation" },
54
+ telemetry_query_budget_exhausted: { class: "quota" },
55
+ invalid_metric_aggregation: { class: "validation" },
56
+ invalid_network_policy: { class: "validation" },
57
+ unsupported_package_ecosystem: { class: "validation" },
58
+ package_resolution_failed: { class: "state" },
59
+ package_artifact_unavailable: { class: "state" },
60
+ package_integrity_mismatch: { class: "state" },
61
+ unknown_provider: { class: "validation" },
62
+ unknown_model: { class: "validation" },
63
+ unqualified_provider_model: { class: "state" },
64
+ provider_credential_not_found: { class: "not_found" },
65
+ provider_credential_revoked: { class: "state" },
66
+ invalid_auto_topup_policy: { class: "validation" },
67
+ payment_method_required: { class: "state" },
68
+ authentication_unavailable: { class: "unavailable" },
69
+ account_paused: { class: "state" },
70
+ account_state_unavailable: { class: "unavailable" },
71
+ precondition_failed: { class: "precondition" },
72
+ wrong_workspace_region: { class: "conflict" },
73
+ observability_unavailable: { class: "unavailable" },
74
+ usage_unavailable: { class: "unavailable" },
75
+ rate_limited: { class: "quota" },
76
+ upstream_error: { class: "unavailable" },
77
+ workspace_provision_pending: { class: "unavailable" },
78
+ commit_outcome_unknown: { class: "unavailable" },
79
+ not_implemented: { class: "state" },
80
+ internal_error: { class: "internal" },
81
+ });
82
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/generated/errors.ts"],"names":[],"mappings":"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"}