@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,450 +0,0 @@
1
- import { isTerminalSessionWorkflowStatus } from "./workflow-status.js";
2
- import { createForbiddenFieldNamePredicate, privateResourceHandlePattern, PUBLIC_SAFE_SECRET_PATTERNS, scanPublicSafePayload } from "./sdk-secrets.js";
3
- export const SESSION_RETENTION_SCHEMA_VERSION = 1;
4
- export const SESSION_DELETION_MANIFEST_KIND = "aex.session_deletion_manifest.v1";
5
- export const SESSION_DELETION_JOB_KIND = "aex.session_deletion_job.v1";
6
- export const SESSION_DELETION_MANIFEST_CONTENT_TYPE = "application/json; charset=utf-8";
7
- export const SESSION_RETENTION_REDACTION_SCANNER_VERSION = 1;
8
- export const SESSION_DELETION_REASONS = ["manual_delete", "retention_gc"];
9
- export const SESSION_DELETION_MANIFEST_MODES = ["dry_run", "final"];
10
- export const SESSION_DELETION_CANDIDATE_STATUSES = ["selected", "blocked"];
11
- export const SESSION_DELETION_BLOCKERS = [
12
- "non_terminal",
13
- "retention_policy_disabled",
14
- "missing_terminal_at",
15
- "unexpired",
16
- "held",
17
- "retention_exempt",
18
- "unresolved_cleanup",
19
- "unresolved_custody"
20
- ];
21
- export const SESSION_DELETION_COUNT_CLASSES = [
22
- "object_store_objects",
23
- "files",
24
- "logs",
25
- "events",
26
- "assets",
27
- "db_event_rows",
28
- "db_file_rows",
29
- "capture_failures",
30
- "storage_samples",
31
- "custody_manifests"
32
- ];
33
- export const SESSION_DELETION_COUNT_STATUSES = ["counted", "not_counted", "partial", "failed"];
34
- export const SESSION_DELETION_JOB_STATUSES = [
35
- "queued",
36
- "planning",
37
- "blocked",
38
- "manifest_written",
39
- "deleting",
40
- "delete_failed",
41
- "completed",
42
- "failed"
43
- ];
44
- export const SESSION_DELETION_PROOF_STATUSES = [
45
- "not_started",
46
- "running",
47
- "completed",
48
- "failed"
49
- ];
50
- export const SESSION_DELETION_WRITE_STATUSES = ["not_written", "written", "write_failed"];
51
- export const SESSION_RETENTION_EXCLUDED_VALUE_CLASSES = [
52
- "raw_paths",
53
- "object_keys",
54
- "filenames",
55
- "object_sizes",
56
- "hashes",
57
- "provider_ids",
58
- "vault_ids",
59
- "resource_ids",
60
- "resource_handles",
61
- "signed_urls"
62
- ];
63
- export class SessionRetentionValidationError extends Error {
64
- code = "session_retention_contract_invalid";
65
- constructor(message) {
66
- super(message);
67
- this.name = "SessionRetentionValidationError";
68
- }
69
- }
70
- export class SessionRetentionRedactionError extends Error {
71
- code = "session_retention_payload_not_public_safe";
72
- findings;
73
- constructor(findings) {
74
- super(`session retention payload contains non-public data at ${formatFindingPaths(findings)}`);
75
- this.name = "SessionRetentionRedactionError";
76
- this.findings = Object.freeze([...findings]);
77
- }
78
- }
79
- export function createSessionDeletionManifestWriter(store) {
80
- return {
81
- async writeSessionDeletionManifest(input) {
82
- return writeSessionDeletionManifest(store, input);
83
- }
84
- };
85
- }
86
- export async function writeSessionDeletionManifest(store, input) {
87
- const manifest = buildSessionDeletionManifest(input);
88
- await store.putSessionDeletionManifestObject({
89
- sessionId: manifest.session.sessionId,
90
- workspaceId: manifest.session.workspaceId,
91
- contentType: SESSION_DELETION_MANIFEST_CONTENT_TYPE,
92
- manifest
93
- });
94
- return Object.freeze({
95
- status: "written",
96
- schemaVersion: SESSION_RETENTION_SCHEMA_VERSION,
97
- sessionId: manifest.session.sessionId,
98
- workspaceId: manifest.session.workspaceId,
99
- writtenAt: manifest.generatedAt,
100
- mode: manifest.mode
101
- });
102
- }
103
- export function buildSessionRetentionPolicy(input = {}) {
104
- if (input.automaticDeletion) {
105
- if (input.retentionDays === undefined) {
106
- throw new SessionRetentionValidationError("automatic retention deletion requires an explicit positive retentionDays value");
107
- }
108
- return Object.freeze({
109
- mode: "delete_after_days",
110
- manualDelete: "enabled",
111
- automaticDeletion: "enabled",
112
- retentionDays: positiveInteger(input.retentionDays, "policy.retentionDays")
113
- });
114
- }
115
- if (input.retentionDays !== undefined) {
116
- throw new SessionRetentionValidationError("retentionDays is not allowed when automatic retention deletion is disabled");
117
- }
118
- return Object.freeze({
119
- mode: "retain_indefinitely",
120
- manualDelete: "enabled",
121
- automaticDeletion: "disabled"
122
- });
123
- }
124
- export function evaluateSessionDeletionCandidate(input) {
125
- const now = assertTimestamp(input.now, "candidate.now");
126
- const session = normalizeCandidateSession(input.session);
127
- const policy = normalizePolicy(input.policy);
128
- const blockers = [];
129
- addSessionBlockers(blockers, session, now);
130
- let eligibleAt;
131
- if (input.reason === "retention_gc") {
132
- if (policy.mode !== "delete_after_days" || policy.retentionDays === undefined) {
133
- blockers.push(blocker("retention_policy_disabled", now));
134
- }
135
- else if (!session.terminalAt) {
136
- blockers.push(blocker("missing_terminal_at", now));
137
- }
138
- else {
139
- eligibleAt = addDaysIso(session.terminalAt, policy.retentionDays);
140
- if (Date.parse(now) < Date.parse(eligibleAt)) {
141
- blockers.push(blocker("unexpired", now));
142
- }
143
- }
144
- }
145
- else {
146
- eligibleAt = now;
147
- }
148
- return Object.freeze({
149
- status: blockers.length === 0 ? "selected" : "blocked",
150
- reason: input.reason,
151
- evaluatedAt: now,
152
- ...(eligibleAt ? { eligibleAt } : {}),
153
- blockers: Object.freeze(blockers)
154
- });
155
- }
156
- export function buildSessionDeletionManifest(input) {
157
- const candidate = input.candidate ??
158
- evaluateSessionDeletionCandidate({
159
- session: input.session,
160
- reason: input.request.reason,
161
- now: input.generatedAt,
162
- ...(input.policy ? { policy: input.policy } : {})
163
- });
164
- const normalizedCandidate = normalizeCandidate(candidate);
165
- const session = normalizeManifestSession(input.session, normalizedCandidate.eligibleAt);
166
- const summary = buildSessionDeletionSummary(input.counts ?? [], normalizedCandidate);
167
- const manifest = Object.freeze({
168
- schemaVersion: SESSION_RETENTION_SCHEMA_VERSION,
169
- kind: SESSION_DELETION_MANIFEST_KIND,
170
- generatedAt: assertTimestamp(input.generatedAt, "manifest.generatedAt"),
171
- mode: input.mode,
172
- session,
173
- request: normalizeRequest(input.request),
174
- candidate: normalizedCandidate,
175
- summary,
176
- redaction: Object.freeze({
177
- policy: "counts_status_timestamps_only",
178
- scannerVersion: SESSION_RETENTION_REDACTION_SCANNER_VERSION,
179
- excludes: Object.freeze([...SESSION_RETENTION_EXCLUDED_VALUE_CLASSES])
180
- })
181
- });
182
- assertPublicSafeSessionRetentionPayload(manifest);
183
- return manifest;
184
- }
185
- export function assertSessionDeletionOrder(proof) {
186
- const manifest = normalizeManifestProof(proof.manifest);
187
- const purge = normalizePurgeProof(proof.purge);
188
- const purgeStarted = purge.status === "running" || purge.status === "completed" || purge.status === "failed";
189
- if (purgeStarted && manifest.status !== "written") {
190
- throw new SessionRetentionValidationError("session deletion cannot purge assets before the deletion manifest is written");
191
- }
192
- if (purgeStarted && manifest.mode !== "final") {
193
- throw new SessionRetentionValidationError("session deletion cannot purge assets from a dry-run deletion manifest");
194
- }
195
- }
196
- export function buildSessionDeletionJob(input) {
197
- assertSessionDeletionOrder(input.order);
198
- const job = Object.freeze({
199
- schemaVersion: SESSION_RETENTION_SCHEMA_VERSION,
200
- kind: SESSION_DELETION_JOB_KIND,
201
- jobId: assertSafeIdentifier(input.jobId, "job.jobId"),
202
- sessionId: assertSafeIdentifier(input.sessionId, "job.sessionId"),
203
- workspaceId: assertSafeIdentifier(input.workspaceId, "job.workspaceId"),
204
- reason: input.reason,
205
- mode: input.mode,
206
- status: input.status,
207
- createdAt: assertTimestamp(input.createdAt, "job.createdAt"),
208
- ...(input.updatedAt ? { updatedAt: assertTimestamp(input.updatedAt, "job.updatedAt") } : {}),
209
- order: normalizeOrderProof(input.order),
210
- ...(input.candidate ? { candidate: normalizeCandidate(input.candidate) } : {}),
211
- ...(input.summary ? { summary: normalizeSummary(input.summary) } : {})
212
- });
213
- assertPublicSafeSessionRetentionPayload(job);
214
- return job;
215
- }
216
- export function scanSessionRetentionPayloadForSensitiveValues(input) {
217
- return scanPublicSafePayload(input, {
218
- patterns: retentionStringPatterns,
219
- isForbiddenFieldName: isForbiddenRetentionFieldName
220
- });
221
- }
222
- export function assertPublicSafeSessionRetentionPayload(input) {
223
- const findings = scanSessionRetentionPayloadForSensitiveValues(input);
224
- if (findings.length > 0) {
225
- throw new SessionRetentionRedactionError(findings);
226
- }
227
- }
228
- function normalizePolicy(input) {
229
- if (!input) {
230
- return buildSessionRetentionPolicy();
231
- }
232
- if ("mode" in input) {
233
- if (input.mode === "delete_after_days") {
234
- if (input.retentionDays === undefined) {
235
- throw new SessionRetentionValidationError("delete_after_days retention policy requires an explicit retentionDays value");
236
- }
237
- return buildSessionRetentionPolicy({
238
- automaticDeletion: true,
239
- retentionDays: input.retentionDays
240
- });
241
- }
242
- if (input.retentionDays !== undefined) {
243
- throw new SessionRetentionValidationError("retain_indefinitely retention policy cannot include retentionDays");
244
- }
245
- return buildSessionRetentionPolicy();
246
- }
247
- return buildSessionRetentionPolicy(input);
248
- }
249
- function normalizeCandidateSession(input) {
250
- return Object.freeze({
251
- sessionId: assertSafeIdentifier(input.sessionId, "session.sessionId"),
252
- workspaceId: assertSafeIdentifier(input.workspaceId, "session.workspaceId"),
253
- status: assertSafeMetadataString(input.status, "session.status"),
254
- ...(input.createdAt ? { createdAt: assertTimestamp(input.createdAt, "session.createdAt") } : {}),
255
- ...(input.terminalAt ? { terminalAt: assertTimestamp(input.terminalAt, "session.terminalAt") } : {}),
256
- ...(input.held !== undefined ? { held: input.held } : {}),
257
- ...(input.retentionExempt !== undefined ? { retentionExempt: input.retentionExempt } : {}),
258
- ...(input.unresolvedCleanup !== undefined ? { unresolvedCleanup: input.unresolvedCleanup } : {}),
259
- ...(input.unresolvedCustody !== undefined ? { unresolvedCustody: input.unresolvedCustody } : {})
260
- });
261
- }
262
- function normalizeManifestSession(input, eligibleAt) {
263
- const session = normalizeCandidateSession(input);
264
- return Object.freeze({
265
- sessionId: session.sessionId,
266
- workspaceId: session.workspaceId,
267
- status: session.status,
268
- ...(session.createdAt ? { createdAt: session.createdAt } : {}),
269
- ...(session.terminalAt ? { terminalAt: session.terminalAt } : {}),
270
- ...(eligibleAt ? { eligibleAt: assertTimestamp(eligibleAt, "session.eligibleAt") } : {})
271
- });
272
- }
273
- function normalizeRequest(input) {
274
- return Object.freeze({
275
- reason: input.reason,
276
- actorClass: input.actorClass
277
- });
278
- }
279
- function normalizeCandidate(input) {
280
- return Object.freeze({
281
- status: input.status,
282
- reason: input.reason,
283
- evaluatedAt: assertTimestamp(input.evaluatedAt, "candidate.evaluatedAt"),
284
- ...(input.eligibleAt ? { eligibleAt: assertTimestamp(input.eligibleAt, "candidate.eligibleAt") } : {}),
285
- blockers: Object.freeze(input.blockers.map(normalizeBlocker))
286
- });
287
- }
288
- function normalizeBlocker(input) {
289
- return Object.freeze({
290
- code: input.code,
291
- observedAt: assertTimestamp(input.observedAt, "candidate.blocker.observedAt")
292
- });
293
- }
294
- function normalizeCount(input) {
295
- return Object.freeze({
296
- class: assertSafeMetadataString(input.class, "summary.count.class"),
297
- count: nonNegativeInteger(input.count, "summary.count.count"),
298
- status: input.status,
299
- ...(input.countedAt ? { countedAt: assertTimestamp(input.countedAt, "summary.count.countedAt") } : {}),
300
- ...(input.errorClass ? { errorClass: assertSafeMetadataString(input.errorClass, "summary.count.errorClass") } : {})
301
- });
302
- }
303
- function buildSessionDeletionSummary(input, candidate) {
304
- const counts = Object.freeze(input.map(normalizeCount));
305
- return Object.freeze({
306
- totalCount: counts.reduce((sum, item) => sum + item.count, 0),
307
- failedCountClasses: counts.filter((item) => item.status === "failed").length,
308
- partialCountClasses: counts.filter((item) => item.status === "partial").length,
309
- blockerCount: candidate.blockers.length,
310
- counts
311
- });
312
- }
313
- function normalizeSummary(input) {
314
- return Object.freeze({
315
- totalCount: nonNegativeInteger(input.totalCount, "summary.totalCount"),
316
- failedCountClasses: nonNegativeInteger(input.failedCountClasses, "summary.failedCountClasses"),
317
- partialCountClasses: nonNegativeInteger(input.partialCountClasses, "summary.partialCountClasses"),
318
- blockerCount: nonNegativeInteger(input.blockerCount, "summary.blockerCount"),
319
- counts: Object.freeze(input.counts.map(normalizeCount))
320
- });
321
- }
322
- function normalizeOrderProof(input) {
323
- return Object.freeze({
324
- manifest: normalizeManifestProof(input.manifest),
325
- purge: normalizePurgeProof(input.purge)
326
- });
327
- }
328
- function normalizeManifestProof(input) {
329
- return Object.freeze({
330
- status: input.status,
331
- ...(input.mode ? { mode: input.mode } : {}),
332
- ...(input.writtenAt ? { writtenAt: assertTimestamp(input.writtenAt, "proof.manifest.writtenAt") } : {})
333
- });
334
- }
335
- function normalizePurgeProof(input) {
336
- return Object.freeze({
337
- status: input.status,
338
- ...(input.startedAt ? { startedAt: assertTimestamp(input.startedAt, "proof.purge.startedAt") } : {}),
339
- ...(input.completedAt ? { completedAt: assertTimestamp(input.completedAt, "proof.purge.completedAt") } : {}),
340
- ...(input.deletedObjectCount !== undefined
341
- ? { deletedObjectCount: nonNegativeInteger(input.deletedObjectCount, "proof.purge.deletedObjectCount") }
342
- : {})
343
- });
344
- }
345
- function addSessionBlockers(blockers, session, observedAt) {
346
- if (!isTerminalStatusLike(session.status)) {
347
- blockers.push(blocker("non_terminal", observedAt));
348
- }
349
- if (session.held) {
350
- blockers.push(blocker("held", observedAt));
351
- }
352
- if (session.retentionExempt) {
353
- blockers.push(blocker("retention_exempt", observedAt));
354
- }
355
- if (session.unresolvedCleanup) {
356
- blockers.push(blocker("unresolved_cleanup", observedAt));
357
- }
358
- if (session.unresolvedCustody) {
359
- blockers.push(blocker("unresolved_custody", observedAt));
360
- }
361
- }
362
- function blocker(code, observedAt) {
363
- return Object.freeze({ code, observedAt });
364
- }
365
- function isTerminalStatusLike(status) {
366
- return isTerminalSessionWorkflowStatus(status);
367
- }
368
- function addDaysIso(timestamp, days) {
369
- const start = Date.parse(assertTimestamp(timestamp, "candidate.session.terminalAt"));
370
- const end = start + positiveInteger(days, "policy.retentionDays") * 24 * 60 * 60 * 1000;
371
- return new Date(end).toISOString();
372
- }
373
- const retentionStringPatterns = Object.freeze([
374
- ...PUBLIC_SAFE_SECRET_PATTERNS,
375
- privateResourceHandlePattern(["machine", "resource", "handle", "provider", "asset"]),
376
- Object.freeze({
377
- reason: "hash_like_value",
378
- regex: /\b(?:sha256|hash)[:_-][A-Fa-f0-9]{16,}\b/
379
- })
380
- ]);
381
- const isForbiddenRetentionFieldName = createForbiddenFieldNamePredicate([
382
- "path",
383
- "paths",
384
- "objectKey",
385
- "objectKeys",
386
- "objectStoreKey",
387
- "objectStoreKeys",
388
- "fileName",
389
- "filename",
390
- "filenames",
391
- "size",
392
- "sizes",
393
- "bytes",
394
- "byteCount",
395
- "hash",
396
- "hashes",
397
- "providerId",
398
- "providerIds",
399
- "vaultId",
400
- "vaultIds",
401
- "resourceId",
402
- "resourceIds",
403
- "handle",
404
- "handles",
405
- "signedUrl",
406
- "signedUrls",
407
- "url",
408
- "urls"
409
- ]);
410
- function assertSafeIdentifier(value, field) {
411
- assertNonEmptyString(value, field);
412
- if (!/^[A-Za-z0-9._:-]+$/.test(value)) {
413
- throw new SessionRetentionValidationError(`session retention ${field} must be an opaque identifier without path separators`);
414
- }
415
- assertPublicSafeSessionRetentionPayload(value);
416
- return value;
417
- }
418
- function assertSafeMetadataString(value, field) {
419
- assertNonEmptyString(value, field);
420
- assertPublicSafeSessionRetentionPayload(value);
421
- return value;
422
- }
423
- function assertNonEmptyString(value, field) {
424
- if (typeof value !== "string" || value.trim().length === 0) {
425
- throw new SessionRetentionValidationError(`session retention ${field} must be a non-empty string`);
426
- }
427
- }
428
- function assertTimestamp(value, field) {
429
- assertSafeMetadataString(value, field);
430
- const ms = Date.parse(value);
431
- if (!Number.isFinite(ms)) {
432
- throw new SessionRetentionValidationError(`session retention ${field} must be an ISO timestamp string`);
433
- }
434
- return value;
435
- }
436
- function nonNegativeInteger(value, field) {
437
- if (!Number.isSafeInteger(value) || value < 0) {
438
- throw new SessionRetentionValidationError(`session retention ${field} must be a non-negative safe integer`);
439
- }
440
- return value;
441
- }
442
- function positiveInteger(value, field) {
443
- if (!Number.isSafeInteger(value) || value <= 0) {
444
- throw new SessionRetentionValidationError(`session retention ${field} must be a positive safe integer`);
445
- }
446
- return value;
447
- }
448
- function formatFindingPaths(findings) {
449
- return findings.map((finding) => `${finding.path} (${finding.reason})`).join(", ");
450
- }
@@ -1,126 +0,0 @@
1
- import type { ProviderName } from "./submission.js";
2
- export declare const SIDE_EFFECT_AUDIT_SCHEMA_VERSION = 1;
3
- export declare const SIDE_EFFECT_AUDIT_REDACTION_SCANNER_VERSION = 1;
4
- export declare const SIDE_EFFECT_AUDIT_KIND = "aex.side_effect_audit.v1";
5
- export declare const SIDE_EFFECT_AUDIT_ACTIONS: readonly ["session.submit.accepted", "session.submit.rejected", "session.cancel.requested", "session.delete.requested", "session.delete.completed", "session.delete.failed", "session.download.requested", "session.file.downloaded", "session.log.downloaded", "session.event.downloaded", "workspace.asset.uploaded", "workspace.asset.deleted", "proxy.endpoint.called", "mcp.credential.accessed", "mcp.proxy.called", "provider.proxy.called", "custody.manifest.written", "custody.transition.recorded", "runtime.cleanup.completed", "runtime.cleanup.failed", "terminal_redrive.attempted", "terminal_redrive.completed", "api_key.created", "api_key.deleted", "api_key.used"];
6
- export type SideEffectAuditAction = (typeof SIDE_EFFECT_AUDIT_ACTIONS)[number];
7
- export declare const SIDE_EFFECT_AUDIT_ACTOR_PRINCIPAL_TYPES: readonly ["user", "api_key", "system", "runtime"];
8
- export type SideEffectAuditActorPrincipalType = (typeof SIDE_EFFECT_AUDIT_ACTOR_PRINCIPAL_TYPES)[number];
9
- export declare const SIDE_EFFECT_AUDIT_SOURCE_PLANES: readonly ["dashboard", "api", "runtime", "system"];
10
- export type SideEffectAuditSourcePlane = (typeof SIDE_EFFECT_AUDIT_SOURCE_PLANES)[number];
11
- export declare const SIDE_EFFECT_AUDIT_AUTHENTICATION_KINDS: readonly ["dashboard_auth", "api_key", "runner_token", "system"];
12
- export type SideEffectAuditAuthenticationKind = (typeof SIDE_EFFECT_AUDIT_AUTHENTICATION_KINDS)[number];
13
- export declare const SIDE_EFFECT_AUDIT_TARGET_TYPES: readonly ["workspace", "session", "proxy_endpoint", "mcp_credential", "mcp_proxy", "provider_proxy", "file_archive", "session_file", "session_log", "session_event_stream", "workspace_asset", "custody_manifest", "custody_transition", "cleanup", "deletion", "terminal_redrive", "api_key"];
14
- export type SideEffectAuditTargetType = (typeof SIDE_EFFECT_AUDIT_TARGET_TYPES)[number];
15
- export declare const SIDE_EFFECT_AUDIT_OUTCOMES: readonly ["accepted", "rejected", "succeeded", "failed", "denied", "canceled", "pending"];
16
- export type SideEffectAuditOutcome = (typeof SIDE_EFFECT_AUDIT_OUTCOMES)[number];
17
- export declare const SIDE_EFFECT_AUDIT_COUNT_NAMES: readonly ["requestBytes", "responseBytes", "durationMs", "attemptCount", "retryCount", "fileCount", "logCount", "eventCount", "assetCount", "proxyCallCount", "mcpCallCount", "providerProxyCallCount", "secretClassCount", "resourceClassCount", "deletedObjectCount", "retainedObjectCount", "failedObjectCount", "quotaRequestedUnits", "quotaRemainingUnits", "reservationCount"];
18
- export type SideEffectAuditCountName = (typeof SIDE_EFFECT_AUDIT_COUNT_NAMES)[number];
19
- export declare const SIDE_EFFECT_AUDIT_TIMESTAMP_NAMES: readonly ["startedAt", "finishedAt", "observedAt", "decidedAt", "deletedAt", "terminalAt", "expiresAt"];
20
- export type SideEffectAuditTimestampName = (typeof SIDE_EFFECT_AUDIT_TIMESTAMP_NAMES)[number];
21
- export declare const SIDE_EFFECT_AUDIT_METADATA_EXCLUDED_VALUE_CLASSES: readonly ["headers", "bodies", "raw_urls", "raw_paths", "query_strings", "provider_response_bodies", "signed_urls", "object_store_keys", "vault_ids", "resource_handles", "bearer_hashes", "secret_values", "customer_or_agent_identity", "private_pricing_or_provider_deployment"];
22
- export type SideEffectAuditMetadataExcludedValueClass = (typeof SIDE_EFFECT_AUDIT_METADATA_EXCLUDED_VALUE_CLASSES)[number];
23
- export interface SideEffectAuditPrincipalV1 {
24
- readonly type: SideEffectAuditActorPrincipalType;
25
- /**
26
- * Existing platform principal reference such as app-user id or API-token id.
27
- * This is not an agent id, customer end-user id, provider session id, or
28
- * stateful identity primitive.
29
- */
30
- readonly ref?: string;
31
- }
32
- export interface SideEffectAuditActorV1 {
33
- readonly principal: SideEffectAuditPrincipalV1;
34
- readonly sourcePlane: SideEffectAuditSourcePlane;
35
- readonly authenticatedBy?: SideEffectAuditAuthenticationKind;
36
- }
37
- export interface SideEffectAuditTargetV1 {
38
- readonly type: SideEffectAuditTargetType;
39
- readonly id?: string;
40
- readonly name?: string;
41
- }
42
- export interface SideEffectAuditCorrelationV1 {
43
- readonly requestId?: string;
44
- readonly operationId?: string;
45
- readonly eventId?: string;
46
- readonly parentAuditId?: string;
47
- readonly sourceAuditId?: string;
48
- readonly idempotencyKeyRef?: string;
49
- }
50
- export interface SideEffectAuditStatusMetadataV1 {
51
- readonly status?: string;
52
- readonly statusCode?: number;
53
- readonly errorClass?: string;
54
- readonly denialReason?: string;
55
- readonly followUpRequired?: boolean;
56
- }
57
- export interface SideEffectAuditDimensionsMetadataV1 {
58
- readonly provider?: ProviderName | string;
59
- readonly namespace?: "metadata" | "events" | "logs" | "files" | "archive";
60
- readonly method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
61
- readonly surface?: string;
62
- }
63
- export interface SideEffectAuditRedactionMetadataV1 {
64
- readonly policy: "metadata_only";
65
- readonly scannerVersion: typeof SIDE_EFFECT_AUDIT_REDACTION_SCANNER_VERSION;
66
- readonly excludes: readonly SideEffectAuditMetadataExcludedValueClass[];
67
- }
68
- export interface SideEffectAuditMetadataV1 {
69
- readonly status?: SideEffectAuditStatusMetadataV1;
70
- readonly counts?: Readonly<Partial<Record<SideEffectAuditCountName, number>>>;
71
- readonly timestamps?: Readonly<Partial<Record<SideEffectAuditTimestampName, string>>>;
72
- readonly dimensions?: SideEffectAuditDimensionsMetadataV1;
73
- readonly redaction: SideEffectAuditRedactionMetadataV1;
74
- }
75
- export interface SideEffectAuditEventV1 {
76
- readonly schemaVersion: typeof SIDE_EFFECT_AUDIT_SCHEMA_VERSION;
77
- readonly kind: typeof SIDE_EFFECT_AUDIT_KIND;
78
- readonly auditId?: string;
79
- readonly workspaceId: string;
80
- readonly sessionId?: string;
81
- readonly action: SideEffectAuditAction;
82
- readonly outcome: SideEffectAuditOutcome;
83
- readonly observedAt: string;
84
- readonly actor: SideEffectAuditActorV1;
85
- readonly target: SideEffectAuditTargetV1;
86
- readonly correlation?: SideEffectAuditCorrelationV1;
87
- readonly metadata: SideEffectAuditMetadataV1;
88
- }
89
- export type SideEffectAuditPrincipalInput = SideEffectAuditPrincipalV1;
90
- export type SideEffectAuditActorInput = SideEffectAuditActorV1;
91
- export type SideEffectAuditTargetInput = SideEffectAuditTargetV1;
92
- export type SideEffectAuditCorrelationInput = SideEffectAuditCorrelationV1;
93
- export type SideEffectAuditMetadataInput = Omit<SideEffectAuditMetadataV1, "redaction"> & {
94
- readonly redaction?: never;
95
- };
96
- export type SideEffectAuditEventInput = Omit<SideEffectAuditEventV1, "schemaVersion" | "kind" | "metadata"> & {
97
- readonly metadata?: SideEffectAuditMetadataInput;
98
- };
99
- export interface SideEffectAuditSessionScopedInput {
100
- readonly workspaceId: string;
101
- readonly sessionId: string;
102
- readonly observedAt: string;
103
- readonly actor: SideEffectAuditActorInput;
104
- readonly correlation?: SideEffectAuditCorrelationInput;
105
- readonly metadata?: SideEffectAuditMetadataInput;
106
- }
107
- export type SideEffectAuditRedactionReason = "forbidden_field_name" | "uninspectable_value" | "bearer_token" | "provider_key" | "signed_url" | "object_store_key" | "vault_id" | "private_resource_handle" | "raw_url" | "raw_path" | "high_entropy_token";
108
- export interface SideEffectAuditRedactionFinding {
109
- readonly path: string;
110
- readonly reason: SideEffectAuditRedactionReason;
111
- readonly valueLength?: number;
112
- }
113
- export declare class SideEffectAuditRedactionError extends Error {
114
- readonly code = "side_effect_audit_not_public_safe";
115
- readonly findings: readonly SideEffectAuditRedactionFinding[];
116
- constructor(findings: readonly SideEffectAuditRedactionFinding[]);
117
- }
118
- export declare function buildSideEffectAuditEvent(input: SideEffectAuditEventInput): SideEffectAuditEventV1;
119
- export declare function buildSessionDeletionRequestedAuditEvent(input: SideEffectAuditSessionScopedInput): SideEffectAuditEventV1;
120
- export declare function buildSessionDeletionCompletedAuditEvent(input: SideEffectAuditSessionScopedInput): SideEffectAuditEventV1;
121
- export declare function buildSessionDeletionFailedAuditEvent(input: SideEffectAuditSessionScopedInput): SideEffectAuditEventV1;
122
- export declare function buildSessionDownloadRequestedAuditEvent(input: SideEffectAuditSessionScopedInput): SideEffectAuditEventV1;
123
- export declare function buildCustodyManifestWrittenAuditEvent(input: SideEffectAuditSessionScopedInput): SideEffectAuditEventV1;
124
- export declare function redactSideEffectAuditMetadata(input: SideEffectAuditMetadataInput, action?: SideEffectAuditAction): SideEffectAuditMetadataV1;
125
- export declare function scanSideEffectAuditPayloadForSensitiveValues(input: unknown): readonly SideEffectAuditRedactionFinding[];
126
- export declare function assertPublicSafeSideEffectAuditPayload(input: unknown): void;