@aexhq/sdk 0.46.4-canary → 0.50.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 (337) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +38 -0
  3. package/README.md +23 -31
  4. package/dist/client/aex.d.ts +33 -0
  5. package/dist/client/aex.js +98 -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 +25 -0
  14. package/dist/downloads/download.js +53 -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 +81 -0
  18. package/dist/generated/errors.js.map +1 -0
  19. package/dist/generated/resources.d.ts +730 -0
  20. package/dist/generated/resources.js +606 -0
  21. package/dist/generated/resources.js.map +1 -0
  22. package/dist/generated/routes.d.ts +42 -0
  23. package/dist/generated/routes.js +2101 -0
  24. package/dist/generated/routes.js.map +1 -0
  25. package/dist/index.d.ts +20 -50
  26. package/dist/index.js +11 -62
  27. package/dist/index.js.map +1 -1
  28. package/dist/observations/stream.d.ts +1 -0
  29. package/dist/observations/stream.js +18 -0
  30. package/dist/observations/stream.js.map +1 -0
  31. package/dist/transport/errors.d.ts +60 -0
  32. package/dist/transport/errors.js +107 -0
  33. package/dist/transport/errors.js.map +1 -0
  34. package/dist/transport/pagination.d.ts +8 -0
  35. package/dist/transport/pagination.js +34 -0
  36. package/dist/transport/pagination.js.map +1 -0
  37. package/dist/transport/retry.d.ts +21 -0
  38. package/dist/transport/retry.js +37 -0
  39. package/dist/transport/retry.js.map +1 -0
  40. package/dist/transport/transport.d.ts +25 -0
  41. package/dist/transport/transport.js +28 -0
  42. package/dist/transport/transport.js.map +1 -0
  43. package/package.json +63 -30
  44. package/dist/_contracts/account-operations.d.ts +0 -101
  45. package/dist/_contracts/account-operations.js +0 -242
  46. package/dist/_contracts/account-types.d.ts +0 -461
  47. package/dist/_contracts/account-types.js +0 -1
  48. package/dist/_contracts/api-key.d.ts +0 -61
  49. package/dist/_contracts/api-key.js +0 -101
  50. package/dist/_contracts/api-routes.d.ts +0 -20
  51. package/dist/_contracts/api-routes.js +0 -109
  52. package/dist/_contracts/archive-limits.d.ts +0 -3
  53. package/dist/_contracts/archive-limits.js +0 -23
  54. package/dist/_contracts/asset-authoring.d.ts +0 -22
  55. package/dist/_contracts/asset-authoring.js +0 -106
  56. package/dist/_contracts/asset-bundle.d.ts +0 -64
  57. package/dist/_contracts/asset-bundle.js +0 -263
  58. package/dist/_contracts/asset-upload-helper.d.ts +0 -31
  59. package/dist/_contracts/asset-upload-helper.js +0 -84
  60. package/dist/_contracts/billing-admission.d.ts +0 -29
  61. package/dist/_contracts/billing-admission.js +0 -28
  62. package/dist/_contracts/bundle-manifest.d.ts +0 -89
  63. package/dist/_contracts/bundle-manifest.js +0 -158
  64. package/dist/_contracts/canonical-sha256.d.ts +0 -8
  65. package/dist/_contracts/canonical-sha256.js +0 -8
  66. package/dist/_contracts/connection-ticket.d.ts +0 -22
  67. package/dist/_contracts/connection-ticket.js +0 -54
  68. package/dist/_contracts/continuation-event.d.ts +0 -31
  69. package/dist/_contracts/continuation-event.js +0 -6
  70. package/dist/_contracts/contract-parse-error.d.ts +0 -12
  71. package/dist/_contracts/contract-parse-error.js +0 -51
  72. package/dist/_contracts/error-codes.d.ts +0 -26
  73. package/dist/_contracts/error-codes.js +0 -116
  74. package/dist/_contracts/error-factory.d.ts +0 -32
  75. package/dist/_contracts/error-factory.js +0 -174
  76. package/dist/_contracts/event-envelope.d.ts +0 -471
  77. package/dist/_contracts/event-envelope.js +0 -501
  78. package/dist/_contracts/event-stream-client.d.ts +0 -122
  79. package/dist/_contracts/event-stream-client.js +0 -445
  80. package/dist/_contracts/event-view.d.ts +0 -44
  81. package/dist/_contracts/event-view.js +0 -69
  82. package/dist/_contracts/failure-class.d.ts +0 -29
  83. package/dist/_contracts/failure-class.js +0 -73
  84. package/dist/_contracts/http.d.ts +0 -135
  85. package/dist/_contracts/http.js +0 -434
  86. package/dist/_contracts/ids.d.ts +0 -66
  87. package/dist/_contracts/ids.js +0 -119
  88. package/dist/_contracts/index.d.ts +0 -42
  89. package/dist/_contracts/index.js +0 -52
  90. package/dist/_contracts/internal.d.ts +0 -55
  91. package/dist/_contracts/internal.js +0 -113
  92. package/dist/_contracts/models.d.ts +0 -30
  93. package/dist/_contracts/models.js +0 -28
  94. package/dist/_contracts/operation-core.d.ts +0 -36
  95. package/dist/_contracts/operation-core.js +0 -70
  96. package/dist/_contracts/operations.d.ts +0 -218
  97. package/dist/_contracts/operations.js +0 -1496
  98. package/dist/_contracts/otlp-projection.d.ts +0 -78
  99. package/dist/_contracts/otlp-projection.js +0 -171
  100. package/dist/_contracts/post-hook.d.ts +0 -31
  101. package/dist/_contracts/post-hook.js +0 -61
  102. package/dist/_contracts/provider-fault.d.ts +0 -34
  103. package/dist/_contracts/provider-fault.js +0 -68
  104. package/dist/_contracts/retry-core.d.ts +0 -29
  105. package/dist/_contracts/retry-core.js +0 -79
  106. package/dist/_contracts/runner-event.d.ts +0 -117
  107. package/dist/_contracts/runner-event.js +0 -172
  108. package/dist/_contracts/runtime-kind.d.ts +0 -60
  109. package/dist/_contracts/runtime-kind.js +0 -70
  110. package/dist/_contracts/runtime-manifest.d.ts +0 -121
  111. package/dist/_contracts/runtime-manifest.js +0 -83
  112. package/dist/_contracts/runtime-security-profile.d.ts +0 -26
  113. package/dist/_contracts/runtime-security-profile.js +0 -73
  114. package/dist/_contracts/runtime-sizes.d.ts +0 -104
  115. package/dist/_contracts/runtime-sizes.js +0 -111
  116. package/dist/_contracts/runtime-types.d.ts +0 -618
  117. package/dist/_contracts/runtime-types.js +0 -58
  118. package/dist/_contracts/schemas/asset-bundle.d.ts +0 -70
  119. package/dist/_contracts/schemas/asset-bundle.js +0 -107
  120. package/dist/_contracts/schemas/asset-ref.d.ts +0 -61
  121. package/dist/_contracts/schemas/asset-ref.js +0 -118
  122. package/dist/_contracts/schemas/bundle-manifest.d.ts +0 -66
  123. package/dist/_contracts/schemas/bundle-manifest.js +0 -77
  124. package/dist/_contracts/schemas/index.d.ts +0 -32
  125. package/dist/_contracts/schemas/index.js +0 -30
  126. package/dist/_contracts/schemas/mcp-server.d.ts +0 -99
  127. package/dist/_contracts/schemas/mcp-server.js +0 -209
  128. package/dist/_contracts/schemas/models.d.ts +0 -29
  129. package/dist/_contracts/schemas/models.js +0 -51
  130. package/dist/_contracts/schemas/numeric.d.ts +0 -18
  131. package/dist/_contracts/schemas/numeric.js +0 -28
  132. package/dist/_contracts/schemas/post-hook.d.ts +0 -45
  133. package/dist/_contracts/schemas/post-hook.js +0 -68
  134. package/dist/_contracts/schemas/response-assets.d.ts +0 -75
  135. package/dist/_contracts/schemas/response-assets.js +0 -81
  136. package/dist/_contracts/schemas/response-billing.d.ts +0 -208
  137. package/dist/_contracts/schemas/response-billing.js +0 -139
  138. package/dist/_contracts/schemas/response-common.d.ts +0 -132
  139. package/dist/_contracts/schemas/response-common.js +0 -162
  140. package/dist/_contracts/schemas/response-identity.d.ts +0 -648
  141. package/dist/_contracts/schemas/response-identity.js +0 -131
  142. package/dist/_contracts/schemas/response-mcp-servers.d.ts +0 -51
  143. package/dist/_contracts/schemas/response-mcp-servers.js +0 -32
  144. package/dist/_contracts/schemas/response-secrets.d.ts +0 -50
  145. package/dist/_contracts/schemas/response-secrets.js +0 -32
  146. package/dist/_contracts/schemas/response-sessions-internal.d.ts +0 -200
  147. package/dist/_contracts/schemas/response-sessions-internal.js +0 -142
  148. package/dist/_contracts/schemas/response-sessions.d.ts +0 -1598
  149. package/dist/_contracts/schemas/response-sessions.js +0 -377
  150. package/dist/_contracts/schemas/response-webhooks.d.ts +0 -76
  151. package/dist/_contracts/schemas/response-webhooks.js +0 -42
  152. package/dist/_contracts/schemas/response-workspace.d.ts +0 -225
  153. package/dist/_contracts/schemas/response-workspace.js +0 -99
  154. package/dist/_contracts/schemas/runtime-kind.d.ts +0 -31
  155. package/dist/_contracts/schemas/runtime-kind.js +0 -29
  156. package/dist/_contracts/schemas/runtime-security-profile.d.ts +0 -28
  157. package/dist/_contracts/schemas/runtime-security-profile.js +0 -26
  158. package/dist/_contracts/schemas/runtime-sizes.d.ts +0 -70
  159. package/dist/_contracts/schemas/runtime-sizes.js +0 -127
  160. package/dist/_contracts/schemas/session-limits.d.ts +0 -34
  161. package/dist/_contracts/schemas/session-limits.js +0 -39
  162. package/dist/_contracts/schemas/session-machine.d.ts +0 -23
  163. package/dist/_contracts/schemas/session-machine.js +0 -24
  164. package/dist/_contracts/schemas/session-request-config.d.ts +0 -58
  165. package/dist/_contracts/schemas/session-request-config.js +0 -134
  166. package/dist/_contracts/schemas/session-webhook.d.ts +0 -11
  167. package/dist/_contracts/schemas/session-webhook.js +0 -38
  168. package/dist/_contracts/schemas/side-effect-audit.d.ts +0 -98
  169. package/dist/_contracts/schemas/side-effect-audit.js +0 -102
  170. package/dist/_contracts/schemas/submission-assets.d.ts +0 -117
  171. package/dist/_contracts/schemas/submission-assets.js +0 -147
  172. package/dist/_contracts/schemas/submission-body.d.ts +0 -251
  173. package/dist/_contracts/schemas/submission-body.js +0 -378
  174. package/dist/_contracts/schemas/submission-environment.d.ts +0 -79
  175. package/dist/_contracts/schemas/submission-environment.js +0 -179
  176. package/dist/_contracts/schemas/submission-request.d.ts +0 -158
  177. package/dist/_contracts/schemas/submission-request.js +0 -49
  178. package/dist/_contracts/schemas/submission-secrets.d.ts +0 -47
  179. package/dist/_contracts/schemas/submission-secrets.js +0 -108
  180. package/dist/_contracts/schemas/wire.d.ts +0 -118
  181. package/dist/_contracts/schemas/wire.js +0 -171
  182. package/dist/_contracts/schemas/workspace-resources.d.ts +0 -50
  183. package/dist/_contracts/schemas/workspace-resources.js +0 -87
  184. package/dist/_contracts/sdk-errors.d.ts +0 -212
  185. package/dist/_contracts/sdk-errors.js +0 -313
  186. package/dist/_contracts/sdk-secrets.d.ts +0 -67
  187. package/dist/_contracts/sdk-secrets.js +0 -427
  188. package/dist/_contracts/session-archive.d.ts +0 -16
  189. package/dist/_contracts/session-archive.js +0 -92
  190. package/dist/_contracts/session-artifacts.d.ts +0 -189
  191. package/dist/_contracts/session-artifacts.js +0 -264
  192. package/dist/_contracts/session-config.d.ts +0 -373
  193. package/dist/_contracts/session-config.js +0 -562
  194. package/dist/_contracts/session-cost-types.d.ts +0 -211
  195. package/dist/_contracts/session-cost-types.js +0 -69
  196. package/dist/_contracts/session-cost.d.ts +0 -8
  197. package/dist/_contracts/session-cost.js +0 -582
  198. package/dist/_contracts/session-custody.d.ts +0 -165
  199. package/dist/_contracts/session-custody.js +0 -345
  200. package/dist/_contracts/session-file-query.d.ts +0 -14
  201. package/dist/_contracts/session-file-query.js +0 -178
  202. package/dist/_contracts/session-record.d.ts +0 -112
  203. package/dist/_contracts/session-record.js +0 -165
  204. package/dist/_contracts/session-retention.d.ts +0 -201
  205. package/dist/_contracts/session-retention.js +0 -450
  206. package/dist/_contracts/side-effect-audit.d.ts +0 -126
  207. package/dist/_contracts/side-effect-audit.js +0 -520
  208. package/dist/_contracts/sse.d.ts +0 -74
  209. package/dist/_contracts/sse.js +0 -227
  210. package/dist/_contracts/stable.d.ts +0 -45
  211. package/dist/_contracts/stable.js +0 -62
  212. package/dist/_contracts/status.d.ts +0 -25
  213. package/dist/_contracts/status.js +0 -57
  214. package/dist/_contracts/submission-limits.d.ts +0 -61
  215. package/dist/_contracts/submission-limits.js +0 -60
  216. package/dist/_contracts/submission.d.ts +0 -547
  217. package/dist/_contracts/submission.js +0 -812
  218. package/dist/_contracts/suggest.d.ts +0 -15
  219. package/dist/_contracts/suggest.js +0 -53
  220. package/dist/_contracts/testing/response-bindings.d.ts +0 -45
  221. package/dist/_contracts/testing/response-bindings.js +0 -256
  222. package/dist/_contracts/testing/wire-conformance-entry.d.ts +0 -10
  223. package/dist/_contracts/testing/wire-conformance-entry.js +0 -8
  224. package/dist/_contracts/testing/wire-conformance.d.ts +0 -169
  225. package/dist/_contracts/testing/wire-conformance.js +0 -276
  226. package/dist/_contracts/turn-trace.d.ts +0 -28
  227. package/dist/_contracts/turn-trace.js +0 -1
  228. package/dist/_contracts/unknown-field-error.d.ts +0 -13
  229. package/dist/_contracts/unknown-field-error.js +0 -21
  230. package/dist/_contracts/value-guards.d.ts +0 -20
  231. package/dist/_contracts/value-guards.js +0 -34
  232. package/dist/_contracts/webhook-verify.d.ts +0 -34
  233. package/dist/_contracts/webhook-verify.js +0 -93
  234. package/dist/_contracts/wire-observer.d.ts +0 -49
  235. package/dist/_contracts/wire-observer.js +0 -34
  236. package/dist/_contracts/workflow-status.d.ts +0 -7
  237. package/dist/_contracts/workflow-status.js +0 -43
  238. package/dist/_contracts/workspace-resources.d.ts +0 -98
  239. package/dist/_contracts/workspace-resources.js +0 -39
  240. package/dist/archive-limits.d.ts +0 -1
  241. package/dist/archive-limits.js +0 -2
  242. package/dist/archive-limits.js.map +0 -1
  243. package/dist/asset-upload.d.ts +0 -47
  244. package/dist/asset-upload.js +0 -269
  245. package/dist/asset-upload.js.map +0 -1
  246. package/dist/bundle.d.ts +0 -9
  247. package/dist/bundle.js +0 -20
  248. package/dist/bundle.js.map +0 -1
  249. package/dist/canonical-zip.d.ts +0 -68
  250. package/dist/canonical-zip.js +0 -355
  251. package/dist/canonical-zip.js.map +0 -1
  252. package/dist/cli.mjs +0 -12048
  253. package/dist/cli.mjs.sha256 +0 -1
  254. package/dist/client-types.d.ts +0 -192
  255. package/dist/client-types.js +0 -2
  256. package/dist/client-types.js.map +0 -1
  257. package/dist/client.d.ts +0 -464
  258. package/dist/client.js +0 -1207
  259. package/dist/client.js.map +0 -1
  260. package/dist/event-projection.d.ts +0 -22
  261. package/dist/event-projection.js +0 -380
  262. package/dist/event-projection.js.map +0 -1
  263. package/dist/fetch-archive.d.ts +0 -16
  264. package/dist/fetch-archive.js +0 -252
  265. package/dist/fetch-archive.js.map +0 -1
  266. package/dist/file.d.ts +0 -96
  267. package/dist/file.js +0 -272
  268. package/dist/file.js.map +0 -1
  269. package/dist/instructions.d.ts +0 -20
  270. package/dist/instructions.js +0 -40
  271. package/dist/instructions.js.map +0 -1
  272. package/dist/legacy-session-provider-fault.d.ts +0 -7
  273. package/dist/legacy-session-provider-fault.js +0 -38
  274. package/dist/legacy-session-provider-fault.js.map +0 -1
  275. package/dist/mcp-server.d.ts +0 -84
  276. package/dist/mcp-server.js +0 -117
  277. package/dist/mcp-server.js.map +0 -1
  278. package/dist/node-fs.d.ts +0 -29
  279. package/dist/node-fs.js +0 -19
  280. package/dist/node-fs.js.map +0 -1
  281. package/dist/node-walk.d.ts +0 -69
  282. package/dist/node-walk.js +0 -151
  283. package/dist/node-walk.js.map +0 -1
  284. package/dist/path-basename.d.ts +0 -5
  285. package/dist/path-basename.js +0 -9
  286. package/dist/path-basename.js.map +0 -1
  287. package/dist/retry.d.ts +0 -70
  288. package/dist/retry.js +0 -155
  289. package/dist/retry.js.map +0 -1
  290. package/dist/secret.d.ts +0 -65
  291. package/dist/secret.js +0 -110
  292. package/dist/secret.js.map +0 -1
  293. package/dist/session-validate.d.ts +0 -100
  294. package/dist/session-validate.js +0 -303
  295. package/dist/session-validate.js.map +0 -1
  296. package/dist/skill.d.ts +0 -99
  297. package/dist/skill.js +0 -169
  298. package/dist/skill.js.map +0 -1
  299. package/dist/submission-wire.d.ts +0 -13
  300. package/dist/submission-wire.js +0 -69
  301. package/dist/submission-wire.js.map +0 -1
  302. package/dist/tool.d.ts +0 -41
  303. package/dist/tool.js +0 -76
  304. package/dist/tool.js.map +0 -1
  305. package/dist/version.d.ts +0 -9
  306. package/dist/version.js +0 -10
  307. package/dist/version.js.map +0 -1
  308. package/docs/authentication.md +0 -125
  309. package/docs/billing.md +0 -164
  310. package/docs/cleanup.md +0 -27
  311. package/docs/concepts/agent-tools.md +0 -47
  312. package/docs/concepts/composition.md +0 -60
  313. package/docs/concepts/providers-and-runtimes.md +0 -121
  314. package/docs/concepts/sessions.md +0 -51
  315. package/docs/concepts/subagents.md +0 -35
  316. package/docs/credentials.md +0 -116
  317. package/docs/defaults.md +0 -51
  318. package/docs/errors.md +0 -258
  319. package/docs/events.md +0 -143
  320. package/docs/files.md +0 -130
  321. package/docs/limits-and-quotas.md +0 -114
  322. package/docs/limits.md +0 -51
  323. package/docs/mcp.md +0 -47
  324. package/docs/networking.md +0 -114
  325. package/docs/provider-runtime-capabilities.md +0 -32
  326. package/docs/public-surface.json +0 -73
  327. package/docs/quickstart.md +0 -135
  328. package/docs/release.md +0 -44
  329. package/docs/retries.md +0 -108
  330. package/docs/secrets.md +0 -141
  331. package/docs/session-config.md +0 -51
  332. package/docs/session-record.md +0 -58
  333. package/docs/skills.md +0 -65
  334. package/docs/telemetry.md +0 -66
  335. package/docs/testing.md +0 -35
  336. package/docs/vision-skills.md +0 -94
  337. package/docs/webhooks.md +0 -143
@@ -1,165 +0,0 @@
1
- import type { ProviderName } from "./submission.js";
2
- export declare const CUSTODY_MANIFEST_SCHEMA_VERSION = 1;
3
- export declare const CUSTODY_REDACTION_SCANNER_VERSION = 1;
4
- export declare const CUSTODY_MANIFEST_KIND = "aex.custody_manifest.v1";
5
- export declare const CUSTODY_MANIFEST_CONTENT_TYPE = "application/json; charset=utf-8";
6
- export declare const CUSTODY_MANIFEST_SESSION_REL_PATH = "metadata/custody.json";
7
- export declare const CUSTODY_SECRET_CLASSES: readonly ["provider_api_key", "mcp_credential", "proxy_endpoint_auth", "runner_bearer", "managed_system_credential"];
8
- export type CustodySecretClass = (typeof CUSTODY_SECRET_CLASSES)[number];
9
- export declare const CUSTODY_RESOURCE_CLASSES: readonly ["runtime_machine", "proxy_token", "execution_secret", "event_archive", "session_file", "session_log", "session_asset"];
10
- export type CustodyResourceClass = (typeof CUSTODY_RESOURCE_CLASSES)[number];
11
- export declare const CUSTODY_EXPOSURE_SURFACES: readonly ["aex_vault", "aex_kv", "host_env", "host_file", "dashboard_proxy", "api_provider_proxy", "api_mcp_proxy", "session_artifact_store", "coordinator_event_archive"];
12
- export type CustodyExposureSurface = (typeof CUSTODY_EXPOSURE_SURFACES)[number];
13
- export declare const CUSTODY_EXPOSURE_ACCESS_KINDS: readonly ["stored", "injected", "proxied", "replicated", "observed", "unknown"];
14
- export type CustodyExposureAccessKind = (typeof CUSTODY_EXPOSURE_ACCESS_KINDS)[number];
15
- export declare const CUSTODY_EXPOSURE_STATUSES: readonly ["exposed", "revoked", "retained", "failed", "not_applicable"];
16
- export type CustodyExposureStatus = (typeof CUSTODY_EXPOSURE_STATUSES)[number];
17
- export declare const CUSTODY_DISPOSITION_STATUSES: readonly ["destroyed", "revoked", "not_found", "retained_by_policy", "cleanup_failed", "parked_for_operator", "pending", "not_applicable"];
18
- export type CustodyDispositionStatus = (typeof CUSTODY_DISPOSITION_STATUSES)[number];
19
- export declare const CUSTODY_CLEANUP_STATUSES: readonly ["succeeded", "partial", "failed", "retained", "pending"];
20
- export type CustodyCleanupStatus = (typeof CUSTODY_CLEANUP_STATUSES)[number];
21
- export declare const CUSTODY_EVIDENCE_SOURCES: readonly ["session_row", "runtime_manifest", "terminal_event", "cleanup_step", "file_capture", "proxy_audit", "provider_cleanup_summary"];
22
- export type CustodyEvidenceSource = (typeof CUSTODY_EVIDENCE_SOURCES)[number];
23
- export declare const CUSTODY_MANIFEST_EXCLUDED_VALUE_CLASSES: readonly ["raw_secret_values", "bearer_hashes", "provider_response_bodies", "signed_urls", "object_store_keys", "vault_ids", "private_resource_handles"];
24
- export type CustodyManifestExcludedValueClass = (typeof CUSTODY_MANIFEST_EXCLUDED_VALUE_CLASSES)[number];
25
- export interface CustodyManifestSessionV1 {
26
- readonly sessionId: string;
27
- readonly workspaceId: string;
28
- readonly provider: ProviderName | string;
29
- readonly terminalStatus: string;
30
- readonly createdAt?: string;
31
- readonly terminalAt?: string;
32
- }
33
- export interface CustodyManifestExposureV1 {
34
- readonly surface: CustodyExposureSurface | string;
35
- readonly access: CustodyExposureAccessKind;
36
- readonly status?: CustodyExposureStatus;
37
- readonly count?: number;
38
- readonly firstExposedAt?: string;
39
- readonly lastExposedAt?: string;
40
- readonly revokedAt?: string;
41
- }
42
- export interface CustodyManifestDispositionV1 {
43
- readonly status: CustodyDispositionStatus;
44
- readonly reason?: string;
45
- readonly decidedAt?: string;
46
- readonly errorClass?: string;
47
- readonly followUpRequired?: boolean;
48
- }
49
- export interface CustodyManifestEvidenceSummaryV1 {
50
- readonly source: CustodyEvidenceSource | string;
51
- readonly status?: string;
52
- readonly observedAt?: string;
53
- readonly count?: number;
54
- readonly errorClass?: string;
55
- }
56
- export interface CustodyManifestSecretClassV1 {
57
- readonly class: CustodySecretClass | string;
58
- readonly present: boolean;
59
- readonly count: number;
60
- readonly exposures: readonly CustodyManifestExposureV1[];
61
- readonly disposition: CustodyManifestDispositionV1;
62
- readonly evidence?: readonly CustodyManifestEvidenceSummaryV1[];
63
- }
64
- export interface CustodyManifestResourceClassV1 {
65
- readonly class: CustodyResourceClass | string;
66
- readonly count: number;
67
- readonly exposures: readonly CustodyManifestExposureV1[];
68
- readonly disposition: CustodyManifestDispositionV1;
69
- readonly evidence?: readonly CustodyManifestEvidenceSummaryV1[];
70
- }
71
- export interface CustodyManifestCleanupV1 {
72
- readonly status: CustodyCleanupStatus;
73
- readonly startedAt?: string;
74
- readonly finishedAt?: string;
75
- readonly errorClass?: string;
76
- readonly followUpRequiredCount?: number;
77
- }
78
- export interface CustodyManifestSummaryV1 {
79
- readonly secretClassCount: number;
80
- readonly secretInstanceCount: number;
81
- readonly resourceClassCount: number;
82
- readonly resourceInstanceCount: number;
83
- readonly exposureCount: number;
84
- readonly revokedExposureCount: number;
85
- readonly retainedCount: number;
86
- readonly cleanupFailedCount: number;
87
- readonly parkedForOperatorCount: number;
88
- readonly pendingCount: number;
89
- readonly followUpRequiredCount: number;
90
- readonly dispositionCounts: Readonly<Partial<Record<CustodyDispositionStatus, number>>>;
91
- }
92
- export interface CustodyManifestRedactionV1 {
93
- readonly policy: "metadata_only";
94
- readonly scannerVersion: typeof CUSTODY_REDACTION_SCANNER_VERSION;
95
- readonly excludes: readonly CustodyManifestExcludedValueClass[];
96
- }
97
- export interface CustodyManifestV1 {
98
- readonly schemaVersion: typeof CUSTODY_MANIFEST_SCHEMA_VERSION;
99
- readonly kind: typeof CUSTODY_MANIFEST_KIND;
100
- readonly generatedAt: string;
101
- readonly finalizedAt?: string;
102
- readonly session: CustodyManifestSessionV1;
103
- readonly secrets: readonly CustodyManifestSecretClassV1[];
104
- readonly resources: readonly CustodyManifestResourceClassV1[];
105
- readonly cleanup: CustodyManifestCleanupV1;
106
- readonly summary: CustodyManifestSummaryV1;
107
- readonly redaction: CustodyManifestRedactionV1;
108
- }
109
- export type CustodyManifestSessionInput = CustodyManifestSessionV1;
110
- export type CustodyManifestExposureInput = CustodyManifestExposureV1;
111
- export type CustodyManifestDispositionInput = CustodyManifestDispositionV1;
112
- export type CustodyManifestEvidenceSummaryInput = CustodyManifestEvidenceSummaryV1;
113
- export type CustodyManifestCleanupInput = CustodyManifestCleanupV1;
114
- export interface CustodyManifestSecretClassInput extends Omit<CustodyManifestSecretClassV1, "count" | "exposures"> {
115
- readonly count?: number;
116
- readonly exposures?: readonly CustodyManifestExposureInput[];
117
- }
118
- export interface CustodyManifestResourceClassInput extends Omit<CustodyManifestResourceClassV1, "count" | "exposures"> {
119
- readonly count?: number;
120
- readonly exposures?: readonly CustodyManifestExposureInput[];
121
- }
122
- export interface CustodyManifestInput {
123
- readonly generatedAt: string;
124
- readonly finalizedAt?: string;
125
- readonly session: CustodyManifestSessionInput;
126
- readonly secrets?: readonly CustodyManifestSecretClassInput[];
127
- readonly resources?: readonly CustodyManifestResourceClassInput[];
128
- readonly cleanup?: CustodyManifestCleanupInput;
129
- }
130
- export interface CustodyManifestWriteObject {
131
- readonly key: string;
132
- readonly contentType: typeof CUSTODY_MANIFEST_CONTENT_TYPE;
133
- readonly manifest: CustodyManifestV1;
134
- }
135
- export interface CustodyManifestObjectStore {
136
- putCustodyManifestObject(object: CustodyManifestWriteObject): Promise<void>;
137
- }
138
- export interface CustodyManifestWriteResult {
139
- readonly status: "written";
140
- readonly schemaVersion: typeof CUSTODY_MANIFEST_SCHEMA_VERSION;
141
- readonly sessionId: string;
142
- readonly workspaceId: string;
143
- readonly key: string;
144
- readonly writtenAt: string;
145
- }
146
- export interface CustodyManifestWriter {
147
- writeCustodyManifest(input: CustodyManifestInput): Promise<CustodyManifestWriteResult>;
148
- }
149
- export type CustodyRedactionReason = "forbidden_field_name" | "uninspectable_value" | "bearer_token" | "provider_key" | "signed_url" | "object_store_key" | "vault_id" | "private_resource_handle" | "high_entropy_token";
150
- export interface CustodyRedactionFinding {
151
- readonly path: string;
152
- readonly reason: CustodyRedactionReason;
153
- readonly valueLength?: number;
154
- }
155
- export declare class CustodyManifestRedactionError extends Error {
156
- readonly code = "custody_manifest_not_public_safe";
157
- readonly findings: readonly CustodyRedactionFinding[];
158
- constructor(findings: readonly CustodyRedactionFinding[]);
159
- }
160
- export declare function custodyManifestObjectKey(sessionId: string): string;
161
- export declare function createCustodyManifestWriter(store: CustodyManifestObjectStore): CustodyManifestWriter;
162
- export declare function writeCustodyManifest(store: CustodyManifestObjectStore, input: CustodyManifestInput): Promise<CustodyManifestWriteResult>;
163
- export declare function buildCustodyManifest(input: CustodyManifestInput): CustodyManifestV1;
164
- export declare function scanCustodyPayloadForSensitiveValues(input: unknown): readonly CustodyRedactionFinding[];
165
- export declare function assertPublicSafeCustodyPayload(input: unknown): void;
@@ -1,345 +0,0 @@
1
- import { createForbiddenFieldNamePredicate, isPlatformContentDigest, privateResourceHandlePattern, PUBLIC_SAFE_SECRET_PATTERNS, scanPublicSafePayload } from "./sdk-secrets.js";
2
- export const CUSTODY_MANIFEST_SCHEMA_VERSION = 1;
3
- export const CUSTODY_REDACTION_SCANNER_VERSION = 1;
4
- export const CUSTODY_MANIFEST_KIND = "aex.custody_manifest.v1";
5
- export const CUSTODY_MANIFEST_CONTENT_TYPE = "application/json; charset=utf-8";
6
- export const CUSTODY_MANIFEST_SESSION_REL_PATH = "metadata/custody.json";
7
- export const CUSTODY_SECRET_CLASSES = [
8
- "provider_api_key",
9
- "mcp_credential",
10
- "proxy_endpoint_auth",
11
- "runner_bearer",
12
- "managed_system_credential"
13
- ];
14
- export const CUSTODY_RESOURCE_CLASSES = [
15
- "runtime_machine",
16
- "proxy_token",
17
- "execution_secret",
18
- "event_archive",
19
- "session_file",
20
- "session_log",
21
- "session_asset"
22
- ];
23
- export const CUSTODY_EXPOSURE_SURFACES = [
24
- "aex_vault",
25
- "aex_kv",
26
- "host_env",
27
- "host_file",
28
- "dashboard_proxy",
29
- "api_provider_proxy",
30
- "api_mcp_proxy",
31
- "session_artifact_store",
32
- "coordinator_event_archive"
33
- ];
34
- export const CUSTODY_EXPOSURE_ACCESS_KINDS = [
35
- "stored",
36
- "injected",
37
- "proxied",
38
- "replicated",
39
- "observed",
40
- "unknown"
41
- ];
42
- export const CUSTODY_EXPOSURE_STATUSES = [
43
- "exposed",
44
- "revoked",
45
- "retained",
46
- "failed",
47
- "not_applicable"
48
- ];
49
- export const CUSTODY_DISPOSITION_STATUSES = [
50
- "destroyed",
51
- "revoked",
52
- "not_found",
53
- "retained_by_policy",
54
- "cleanup_failed",
55
- "parked_for_operator",
56
- "pending",
57
- "not_applicable"
58
- ];
59
- export const CUSTODY_CLEANUP_STATUSES = [
60
- "succeeded",
61
- "partial",
62
- "failed",
63
- "retained",
64
- "pending"
65
- ];
66
- export const CUSTODY_EVIDENCE_SOURCES = [
67
- "session_row",
68
- "runtime_manifest",
69
- "terminal_event",
70
- "cleanup_step",
71
- "file_capture",
72
- "proxy_audit",
73
- "provider_cleanup_summary"
74
- ];
75
- export const CUSTODY_MANIFEST_EXCLUDED_VALUE_CLASSES = [
76
- "raw_secret_values",
77
- "bearer_hashes",
78
- "provider_response_bodies",
79
- "signed_urls",
80
- "object_store_keys",
81
- "vault_ids",
82
- "private_resource_handles"
83
- ];
84
- export class CustodyManifestRedactionError extends Error {
85
- code = "custody_manifest_not_public_safe";
86
- findings;
87
- constructor(findings) {
88
- super(`custody manifest contains non-public custody data at ${formatFindingPaths(findings)}`);
89
- this.name = "CustodyManifestRedactionError";
90
- this.findings = Object.freeze([...findings]);
91
- }
92
- }
93
- export function custodyManifestObjectKey(sessionId) {
94
- assertSafeIdentifier(sessionId, "sessionId");
95
- return `sessions/${sessionId}/${CUSTODY_MANIFEST_SESSION_REL_PATH}`;
96
- }
97
- export function createCustodyManifestWriter(store) {
98
- return {
99
- async writeCustodyManifest(input) {
100
- return writeCustodyManifest(store, input);
101
- }
102
- };
103
- }
104
- export async function writeCustodyManifest(store, input) {
105
- const manifest = buildCustodyManifest(input);
106
- const key = custodyManifestObjectKey(manifest.session.sessionId);
107
- await store.putCustodyManifestObject({
108
- key,
109
- contentType: CUSTODY_MANIFEST_CONTENT_TYPE,
110
- manifest
111
- });
112
- return Object.freeze({
113
- status: "written",
114
- schemaVersion: CUSTODY_MANIFEST_SCHEMA_VERSION,
115
- sessionId: manifest.session.sessionId,
116
- workspaceId: manifest.session.workspaceId,
117
- key,
118
- writtenAt: manifest.finalizedAt ?? manifest.generatedAt
119
- });
120
- }
121
- export function buildCustodyManifest(input) {
122
- const secrets = Object.freeze((input.secrets ?? []).map(normalizeSecretClass));
123
- const resources = Object.freeze((input.resources ?? []).map(normalizeResourceClass));
124
- const cleanup = normalizeCleanup(input.cleanup);
125
- const manifest = Object.freeze({
126
- schemaVersion: CUSTODY_MANIFEST_SCHEMA_VERSION,
127
- kind: CUSTODY_MANIFEST_KIND,
128
- generatedAt: assertTimestamp(input.generatedAt, "generatedAt"),
129
- ...(input.finalizedAt ? { finalizedAt: assertTimestamp(input.finalizedAt, "finalizedAt") } : {}),
130
- session: normalizeSession(input.session),
131
- secrets,
132
- resources,
133
- cleanup,
134
- summary: buildCustodySummary(secrets, resources, cleanup),
135
- redaction: Object.freeze({
136
- policy: "metadata_only",
137
- scannerVersion: CUSTODY_REDACTION_SCANNER_VERSION,
138
- excludes: Object.freeze([...CUSTODY_MANIFEST_EXCLUDED_VALUE_CLASSES])
139
- })
140
- });
141
- assertPublicSafeCustodyPayload(manifest);
142
- return manifest;
143
- }
144
- export function scanCustodyPayloadForSensitiveValues(input) {
145
- return scanPublicSafePayload(input, {
146
- patterns: custodyStringPatterns,
147
- isForbiddenFieldName: isForbiddenCustodyFieldName,
148
- isPatternExempt: ({ reason, match }) => reason === "high_entropy_token" && isPlatformContentDigest(match)
149
- });
150
- }
151
- export function assertPublicSafeCustodyPayload(input) {
152
- const findings = scanCustodyPayloadForSensitiveValues(input);
153
- if (findings.length > 0) {
154
- throw new CustodyManifestRedactionError(findings);
155
- }
156
- }
157
- function normalizeSession(input) {
158
- return Object.freeze({
159
- sessionId: assertSafeIdentifier(input.sessionId, "session.sessionId"),
160
- workspaceId: assertSafeIdentifier(input.workspaceId, "session.workspaceId"),
161
- provider: assertSafeMetadataString(input.provider, "session.provider"),
162
- terminalStatus: assertSafeMetadataString(input.terminalStatus, "session.terminalStatus"),
163
- ...(input.createdAt ? { createdAt: assertTimestamp(input.createdAt, "session.createdAt") } : {}),
164
- ...(input.terminalAt ? { terminalAt: assertTimestamp(input.terminalAt, "session.terminalAt") } : {})
165
- });
166
- }
167
- function normalizeSecretClass(input) {
168
- const count = nonNegativeInteger(input.count ?? (input.present ? 1 : 0), "secret.count");
169
- return Object.freeze({
170
- class: assertSafeMetadataString(input.class, "secret.class"),
171
- present: input.present,
172
- count,
173
- exposures: Object.freeze((input.exposures ?? []).map(normalizeExposure)),
174
- disposition: normalizeDisposition(input.disposition),
175
- ...(input.evidence ? { evidence: Object.freeze(input.evidence.map(normalizeEvidence)) } : {})
176
- });
177
- }
178
- function normalizeResourceClass(input) {
179
- const count = nonNegativeInteger(input.count ?? 1, "resource.count");
180
- return Object.freeze({
181
- class: assertSafeMetadataString(input.class, "resource.class"),
182
- count,
183
- exposures: Object.freeze((input.exposures ?? []).map(normalizeExposure)),
184
- disposition: normalizeDisposition(input.disposition),
185
- ...(input.evidence ? { evidence: Object.freeze(input.evidence.map(normalizeEvidence)) } : {})
186
- });
187
- }
188
- function normalizeExposure(input) {
189
- return Object.freeze({
190
- surface: assertSafeMetadataString(input.surface, "exposure.surface"),
191
- access: input.access,
192
- ...(input.status ? { status: input.status } : {}),
193
- ...(input.count !== undefined ? { count: nonNegativeInteger(input.count, "exposure.count") } : {}),
194
- ...(input.firstExposedAt
195
- ? { firstExposedAt: assertTimestamp(input.firstExposedAt, "exposure.firstExposedAt") }
196
- : {}),
197
- ...(input.lastExposedAt
198
- ? { lastExposedAt: assertTimestamp(input.lastExposedAt, "exposure.lastExposedAt") }
199
- : {}),
200
- ...(input.revokedAt ? { revokedAt: assertTimestamp(input.revokedAt, "exposure.revokedAt") } : {})
201
- });
202
- }
203
- function normalizeDisposition(input) {
204
- return Object.freeze({
205
- status: input.status,
206
- ...(input.reason ? { reason: assertSafeMetadataString(input.reason, "disposition.reason") } : {}),
207
- ...(input.decidedAt ? { decidedAt: assertTimestamp(input.decidedAt, "disposition.decidedAt") } : {}),
208
- ...(input.errorClass ? { errorClass: assertSafeMetadataString(input.errorClass, "disposition.errorClass") } : {}),
209
- ...(input.followUpRequired !== undefined ? { followUpRequired: input.followUpRequired } : {})
210
- });
211
- }
212
- function normalizeEvidence(input) {
213
- return Object.freeze({
214
- source: assertSafeMetadataString(input.source, "evidence.source"),
215
- ...(input.status ? { status: assertSafeMetadataString(input.status, "evidence.status") } : {}),
216
- ...(input.observedAt ? { observedAt: assertTimestamp(input.observedAt, "evidence.observedAt") } : {}),
217
- ...(input.count !== undefined ? { count: nonNegativeInteger(input.count, "evidence.count") } : {}),
218
- ...(input.errorClass ? { errorClass: assertSafeMetadataString(input.errorClass, "evidence.errorClass") } : {})
219
- });
220
- }
221
- function normalizeCleanup(input) {
222
- if (!input) {
223
- return Object.freeze({ status: "pending" });
224
- }
225
- return Object.freeze({
226
- status: input.status,
227
- ...(input.startedAt ? { startedAt: assertTimestamp(input.startedAt, "cleanup.startedAt") } : {}),
228
- ...(input.finishedAt ? { finishedAt: assertTimestamp(input.finishedAt, "cleanup.finishedAt") } : {}),
229
- ...(input.errorClass ? { errorClass: assertSafeMetadataString(input.errorClass, "cleanup.errorClass") } : {}),
230
- ...(input.followUpRequiredCount !== undefined
231
- ? {
232
- followUpRequiredCount: nonNegativeInteger(input.followUpRequiredCount, "cleanup.followUpRequiredCount")
233
- }
234
- : {})
235
- });
236
- }
237
- function buildCustodySummary(secrets, resources, cleanup) {
238
- const records = [...secrets, ...resources];
239
- const dispositionCounts = {};
240
- let exposureCount = 0;
241
- let revokedExposureCount = 0;
242
- let followUpRequiredCount = cleanup.followUpRequiredCount ?? 0;
243
- for (const record of records) {
244
- dispositionCounts[record.disposition.status] = (dispositionCounts[record.disposition.status] ?? 0) + 1;
245
- exposureCount += record.exposures.length;
246
- revokedExposureCount += record.exposures.filter((exposure) => exposure.status === "revoked").length;
247
- if (record.disposition.followUpRequired) {
248
- followUpRequiredCount++;
249
- }
250
- }
251
- return Object.freeze({
252
- secretClassCount: secrets.length,
253
- secretInstanceCount: secrets.reduce((sum, record) => sum + record.count, 0),
254
- resourceClassCount: resources.length,
255
- resourceInstanceCount: resources.reduce((sum, record) => sum + record.count, 0),
256
- exposureCount,
257
- revokedExposureCount,
258
- retainedCount: dispositionCounts.retained_by_policy ?? 0,
259
- cleanupFailedCount: dispositionCounts.cleanup_failed ?? 0,
260
- parkedForOperatorCount: dispositionCounts.parked_for_operator ?? 0,
261
- pendingCount: dispositionCounts.pending ?? 0,
262
- followUpRequiredCount,
263
- dispositionCounts: Object.freeze({ ...dispositionCounts })
264
- });
265
- }
266
- function normalizeSummary(input) {
267
- return Object.freeze({
268
- secretClassCount: nonNegativeInteger(input.secretClassCount, "summary.secretClassCount"),
269
- secretInstanceCount: nonNegativeInteger(input.secretInstanceCount, "summary.secretInstanceCount"),
270
- resourceClassCount: nonNegativeInteger(input.resourceClassCount, "summary.resourceClassCount"),
271
- resourceInstanceCount: nonNegativeInteger(input.resourceInstanceCount, "summary.resourceInstanceCount"),
272
- exposureCount: nonNegativeInteger(input.exposureCount, "summary.exposureCount"),
273
- revokedExposureCount: nonNegativeInteger(input.revokedExposureCount, "summary.revokedExposureCount"),
274
- retainedCount: nonNegativeInteger(input.retainedCount, "summary.retainedCount"),
275
- cleanupFailedCount: nonNegativeInteger(input.cleanupFailedCount, "summary.cleanupFailedCount"),
276
- parkedForOperatorCount: nonNegativeInteger(input.parkedForOperatorCount, "summary.parkedForOperatorCount"),
277
- pendingCount: nonNegativeInteger(input.pendingCount, "summary.pendingCount"),
278
- followUpRequiredCount: nonNegativeInteger(input.followUpRequiredCount, "summary.followUpRequiredCount"),
279
- dispositionCounts: Object.freeze(Object.fromEntries(Object.entries(input.dispositionCounts).map(([key, value]) => [
280
- key,
281
- nonNegativeInteger(value, `summary.dispositionCounts.${key}`)
282
- ])))
283
- });
284
- }
285
- const custodyStringPatterns = Object.freeze([
286
- ...PUBLIC_SAFE_SECRET_PATTERNS,
287
- privateResourceHandlePattern([
288
- "machine",
289
- "agent",
290
- "resource",
291
- "handle",
292
- "token_hash",
293
- "bearer_hash"
294
- ])
295
- ]);
296
- const isForbiddenCustodyFieldName = createForbiddenFieldNamePredicate([
297
- "apiKey",
298
- "apiKeys",
299
- "secretValue",
300
- "bearerHash",
301
- "signedUrl",
302
- "objectStoreKey",
303
- "objectKey",
304
- "vaultId",
305
- "providerResponseBody",
306
- "responseBody",
307
- "privateResourceHandle",
308
- "resourceHandle",
309
- "rawBody"
310
- ]);
311
- function assertSafeIdentifier(value, field) {
312
- assertNonEmptyString(value, field);
313
- if (!/^[A-Za-z0-9._:-]+$/.test(value)) {
314
- throw new Error(`custody manifest ${field} must be an opaque identifier without path separators`);
315
- }
316
- assertPublicSafeCustodyPayload(value);
317
- return value;
318
- }
319
- function assertSafeMetadataString(value, field) {
320
- assertNonEmptyString(value, field);
321
- assertPublicSafeCustodyPayload(value);
322
- return value;
323
- }
324
- function assertNonEmptyString(value, field) {
325
- if (typeof value !== "string" || value.trim().length === 0) {
326
- throw new Error(`custody manifest ${field} must be a non-empty string`);
327
- }
328
- }
329
- function assertTimestamp(value, field) {
330
- assertSafeMetadataString(value, field);
331
- const ms = Date.parse(value);
332
- if (!Number.isFinite(ms)) {
333
- throw new Error(`custody manifest ${field} must be an ISO timestamp string`);
334
- }
335
- return value;
336
- }
337
- function nonNegativeInteger(value, field) {
338
- if (!Number.isSafeInteger(value) || value < 0) {
339
- throw new Error(`custody manifest ${field} must be a non-negative safe integer`);
340
- }
341
- return value;
342
- }
343
- function formatFindingPaths(findings) {
344
- return findings.map((finding) => `${finding.path} (${finding.reason})`).join(", ");
345
- }
@@ -1,14 +0,0 @@
1
- import type { SessionFile, SessionFilePathSelector, SessionFileQuery, SessionFileSelector, SessionFileType } from "./runtime-types.js";
2
- /** Package-private path-selector guard shared by transport orchestration. */
3
- export declare function isPathSelector(selector: SessionFileSelector): selector is SessionFilePathSelector;
4
- export declare function resolveSessionFileSelector(files: readonly SessionFile[], selector: SessionFilePathSelector, sessionId?: string): SessionFile;
5
- export declare function filterSessionFiles(files: readonly SessionFile[], query: SessionFileQuery): readonly SessionFile[];
6
- /**
7
- * The single filename-matcher for cross-session / per-session file SEARCH. A
8
- * string is a case-insensitive SUBSTRING match; a RegExp is tested as given (and
9
- * reset to `lastIndex = 0` so a reused `/g` regex is safe). Sharing this SSoT is
10
- * what closes the T16 crash class: session-file search no longer assumes `filename`
11
- * is a string and passes a RegExp into `escapeRegExp(...).replace(...)`.
12
- */
13
- export declare function toFilenameMatcher(filename: string | RegExp): (name: string) => boolean;
14
- export declare function classifySessionFile(file: Pick<SessionFile, "filename" | "contentType">): SessionFileType;