@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.
- package/LICENSE +201 -0
- package/NOTICE +38 -0
- package/README.md +23 -31
- package/dist/client/aex.d.ts +33 -0
- package/dist/client/aex.js +98 -0
- package/dist/client/aex.js.map +1 -0
- package/dist/client/credentials.d.ts +25 -0
- package/dist/client/credentials.js +97 -0
- package/dist/client/credentials.js.map +1 -0
- package/dist/client/routing.d.ts +7 -0
- package/dist/client/routing.js +29 -0
- package/dist/client/routing.js.map +1 -0
- package/dist/downloads/download.d.ts +25 -0
- package/dist/downloads/download.js +53 -0
- package/dist/downloads/download.js.map +1 -0
- package/dist/generated/errors.d.ts +12 -0
- package/dist/generated/errors.js +81 -0
- package/dist/generated/errors.js.map +1 -0
- package/dist/generated/resources.d.ts +730 -0
- package/dist/generated/resources.js +606 -0
- package/dist/generated/resources.js.map +1 -0
- package/dist/generated/routes.d.ts +42 -0
- package/dist/generated/routes.js +2101 -0
- package/dist/generated/routes.js.map +1 -0
- package/dist/index.d.ts +20 -50
- package/dist/index.js +11 -62
- package/dist/index.js.map +1 -1
- package/dist/observations/stream.d.ts +1 -0
- package/dist/observations/stream.js +18 -0
- package/dist/observations/stream.js.map +1 -0
- package/dist/transport/errors.d.ts +60 -0
- package/dist/transport/errors.js +107 -0
- package/dist/transport/errors.js.map +1 -0
- package/dist/transport/pagination.d.ts +8 -0
- package/dist/transport/pagination.js +34 -0
- package/dist/transport/pagination.js.map +1 -0
- package/dist/transport/retry.d.ts +21 -0
- package/dist/transport/retry.js +37 -0
- package/dist/transport/retry.js.map +1 -0
- package/dist/transport/transport.d.ts +25 -0
- package/dist/transport/transport.js +28 -0
- package/dist/transport/transport.js.map +1 -0
- package/package.json +63 -30
- package/dist/_contracts/account-operations.d.ts +0 -101
- package/dist/_contracts/account-operations.js +0 -242
- package/dist/_contracts/account-types.d.ts +0 -461
- package/dist/_contracts/account-types.js +0 -1
- package/dist/_contracts/api-key.d.ts +0 -61
- package/dist/_contracts/api-key.js +0 -101
- package/dist/_contracts/api-routes.d.ts +0 -20
- package/dist/_contracts/api-routes.js +0 -109
- package/dist/_contracts/archive-limits.d.ts +0 -3
- package/dist/_contracts/archive-limits.js +0 -23
- package/dist/_contracts/asset-authoring.d.ts +0 -22
- package/dist/_contracts/asset-authoring.js +0 -106
- package/dist/_contracts/asset-bundle.d.ts +0 -64
- package/dist/_contracts/asset-bundle.js +0 -263
- package/dist/_contracts/asset-upload-helper.d.ts +0 -31
- package/dist/_contracts/asset-upload-helper.js +0 -84
- package/dist/_contracts/billing-admission.d.ts +0 -29
- package/dist/_contracts/billing-admission.js +0 -28
- package/dist/_contracts/bundle-manifest.d.ts +0 -89
- package/dist/_contracts/bundle-manifest.js +0 -158
- package/dist/_contracts/canonical-sha256.d.ts +0 -8
- package/dist/_contracts/canonical-sha256.js +0 -8
- package/dist/_contracts/connection-ticket.d.ts +0 -22
- package/dist/_contracts/connection-ticket.js +0 -54
- package/dist/_contracts/continuation-event.d.ts +0 -31
- package/dist/_contracts/continuation-event.js +0 -6
- package/dist/_contracts/contract-parse-error.d.ts +0 -12
- package/dist/_contracts/contract-parse-error.js +0 -51
- package/dist/_contracts/error-codes.d.ts +0 -26
- package/dist/_contracts/error-codes.js +0 -116
- package/dist/_contracts/error-factory.d.ts +0 -32
- package/dist/_contracts/error-factory.js +0 -174
- package/dist/_contracts/event-envelope.d.ts +0 -471
- package/dist/_contracts/event-envelope.js +0 -501
- package/dist/_contracts/event-stream-client.d.ts +0 -122
- package/dist/_contracts/event-stream-client.js +0 -445
- package/dist/_contracts/event-view.d.ts +0 -44
- package/dist/_contracts/event-view.js +0 -69
- package/dist/_contracts/failure-class.d.ts +0 -29
- package/dist/_contracts/failure-class.js +0 -73
- package/dist/_contracts/http.d.ts +0 -135
- package/dist/_contracts/http.js +0 -434
- package/dist/_contracts/ids.d.ts +0 -66
- package/dist/_contracts/ids.js +0 -119
- package/dist/_contracts/index.d.ts +0 -42
- package/dist/_contracts/index.js +0 -52
- package/dist/_contracts/internal.d.ts +0 -55
- package/dist/_contracts/internal.js +0 -113
- package/dist/_contracts/models.d.ts +0 -30
- package/dist/_contracts/models.js +0 -28
- package/dist/_contracts/operation-core.d.ts +0 -36
- package/dist/_contracts/operation-core.js +0 -70
- package/dist/_contracts/operations.d.ts +0 -218
- package/dist/_contracts/operations.js +0 -1496
- package/dist/_contracts/otlp-projection.d.ts +0 -78
- package/dist/_contracts/otlp-projection.js +0 -171
- package/dist/_contracts/post-hook.d.ts +0 -31
- package/dist/_contracts/post-hook.js +0 -61
- package/dist/_contracts/provider-fault.d.ts +0 -34
- package/dist/_contracts/provider-fault.js +0 -68
- package/dist/_contracts/retry-core.d.ts +0 -29
- package/dist/_contracts/retry-core.js +0 -79
- package/dist/_contracts/runner-event.d.ts +0 -117
- package/dist/_contracts/runner-event.js +0 -172
- package/dist/_contracts/runtime-kind.d.ts +0 -60
- package/dist/_contracts/runtime-kind.js +0 -70
- package/dist/_contracts/runtime-manifest.d.ts +0 -121
- package/dist/_contracts/runtime-manifest.js +0 -83
- package/dist/_contracts/runtime-security-profile.d.ts +0 -26
- package/dist/_contracts/runtime-security-profile.js +0 -73
- package/dist/_contracts/runtime-sizes.d.ts +0 -104
- package/dist/_contracts/runtime-sizes.js +0 -111
- package/dist/_contracts/runtime-types.d.ts +0 -618
- package/dist/_contracts/runtime-types.js +0 -58
- package/dist/_contracts/schemas/asset-bundle.d.ts +0 -70
- package/dist/_contracts/schemas/asset-bundle.js +0 -107
- package/dist/_contracts/schemas/asset-ref.d.ts +0 -61
- package/dist/_contracts/schemas/asset-ref.js +0 -118
- package/dist/_contracts/schemas/bundle-manifest.d.ts +0 -66
- package/dist/_contracts/schemas/bundle-manifest.js +0 -77
- package/dist/_contracts/schemas/index.d.ts +0 -32
- package/dist/_contracts/schemas/index.js +0 -30
- package/dist/_contracts/schemas/mcp-server.d.ts +0 -99
- package/dist/_contracts/schemas/mcp-server.js +0 -209
- package/dist/_contracts/schemas/models.d.ts +0 -29
- package/dist/_contracts/schemas/models.js +0 -51
- package/dist/_contracts/schemas/numeric.d.ts +0 -18
- package/dist/_contracts/schemas/numeric.js +0 -28
- package/dist/_contracts/schemas/post-hook.d.ts +0 -45
- package/dist/_contracts/schemas/post-hook.js +0 -68
- package/dist/_contracts/schemas/response-assets.d.ts +0 -75
- package/dist/_contracts/schemas/response-assets.js +0 -81
- package/dist/_contracts/schemas/response-billing.d.ts +0 -208
- package/dist/_contracts/schemas/response-billing.js +0 -139
- package/dist/_contracts/schemas/response-common.d.ts +0 -132
- package/dist/_contracts/schemas/response-common.js +0 -162
- package/dist/_contracts/schemas/response-identity.d.ts +0 -648
- package/dist/_contracts/schemas/response-identity.js +0 -131
- package/dist/_contracts/schemas/response-mcp-servers.d.ts +0 -51
- package/dist/_contracts/schemas/response-mcp-servers.js +0 -32
- package/dist/_contracts/schemas/response-secrets.d.ts +0 -50
- package/dist/_contracts/schemas/response-secrets.js +0 -32
- package/dist/_contracts/schemas/response-sessions-internal.d.ts +0 -200
- package/dist/_contracts/schemas/response-sessions-internal.js +0 -142
- package/dist/_contracts/schemas/response-sessions.d.ts +0 -1598
- package/dist/_contracts/schemas/response-sessions.js +0 -377
- package/dist/_contracts/schemas/response-webhooks.d.ts +0 -76
- package/dist/_contracts/schemas/response-webhooks.js +0 -42
- package/dist/_contracts/schemas/response-workspace.d.ts +0 -225
- package/dist/_contracts/schemas/response-workspace.js +0 -99
- package/dist/_contracts/schemas/runtime-kind.d.ts +0 -31
- package/dist/_contracts/schemas/runtime-kind.js +0 -29
- package/dist/_contracts/schemas/runtime-security-profile.d.ts +0 -28
- package/dist/_contracts/schemas/runtime-security-profile.js +0 -26
- package/dist/_contracts/schemas/runtime-sizes.d.ts +0 -70
- package/dist/_contracts/schemas/runtime-sizes.js +0 -127
- package/dist/_contracts/schemas/session-limits.d.ts +0 -34
- package/dist/_contracts/schemas/session-limits.js +0 -39
- package/dist/_contracts/schemas/session-machine.d.ts +0 -23
- package/dist/_contracts/schemas/session-machine.js +0 -24
- package/dist/_contracts/schemas/session-request-config.d.ts +0 -58
- package/dist/_contracts/schemas/session-request-config.js +0 -134
- package/dist/_contracts/schemas/session-webhook.d.ts +0 -11
- package/dist/_contracts/schemas/session-webhook.js +0 -38
- package/dist/_contracts/schemas/side-effect-audit.d.ts +0 -98
- package/dist/_contracts/schemas/side-effect-audit.js +0 -102
- package/dist/_contracts/schemas/submission-assets.d.ts +0 -117
- package/dist/_contracts/schemas/submission-assets.js +0 -147
- package/dist/_contracts/schemas/submission-body.d.ts +0 -251
- package/dist/_contracts/schemas/submission-body.js +0 -378
- package/dist/_contracts/schemas/submission-environment.d.ts +0 -79
- package/dist/_contracts/schemas/submission-environment.js +0 -179
- package/dist/_contracts/schemas/submission-request.d.ts +0 -158
- package/dist/_contracts/schemas/submission-request.js +0 -49
- package/dist/_contracts/schemas/submission-secrets.d.ts +0 -47
- package/dist/_contracts/schemas/submission-secrets.js +0 -108
- package/dist/_contracts/schemas/wire.d.ts +0 -118
- package/dist/_contracts/schemas/wire.js +0 -171
- package/dist/_contracts/schemas/workspace-resources.d.ts +0 -50
- package/dist/_contracts/schemas/workspace-resources.js +0 -87
- package/dist/_contracts/sdk-errors.d.ts +0 -212
- package/dist/_contracts/sdk-errors.js +0 -313
- package/dist/_contracts/sdk-secrets.d.ts +0 -67
- package/dist/_contracts/sdk-secrets.js +0 -427
- package/dist/_contracts/session-archive.d.ts +0 -16
- package/dist/_contracts/session-archive.js +0 -92
- package/dist/_contracts/session-artifacts.d.ts +0 -189
- package/dist/_contracts/session-artifacts.js +0 -264
- package/dist/_contracts/session-config.d.ts +0 -373
- package/dist/_contracts/session-config.js +0 -562
- package/dist/_contracts/session-cost-types.d.ts +0 -211
- package/dist/_contracts/session-cost-types.js +0 -69
- package/dist/_contracts/session-cost.d.ts +0 -8
- package/dist/_contracts/session-cost.js +0 -582
- package/dist/_contracts/session-custody.d.ts +0 -165
- package/dist/_contracts/session-custody.js +0 -345
- package/dist/_contracts/session-file-query.d.ts +0 -14
- package/dist/_contracts/session-file-query.js +0 -178
- package/dist/_contracts/session-record.d.ts +0 -112
- package/dist/_contracts/session-record.js +0 -165
- package/dist/_contracts/session-retention.d.ts +0 -201
- package/dist/_contracts/session-retention.js +0 -450
- package/dist/_contracts/side-effect-audit.d.ts +0 -126
- package/dist/_contracts/side-effect-audit.js +0 -520
- package/dist/_contracts/sse.d.ts +0 -74
- package/dist/_contracts/sse.js +0 -227
- package/dist/_contracts/stable.d.ts +0 -45
- package/dist/_contracts/stable.js +0 -62
- package/dist/_contracts/status.d.ts +0 -25
- package/dist/_contracts/status.js +0 -57
- package/dist/_contracts/submission-limits.d.ts +0 -61
- package/dist/_contracts/submission-limits.js +0 -60
- package/dist/_contracts/submission.d.ts +0 -547
- package/dist/_contracts/submission.js +0 -812
- package/dist/_contracts/suggest.d.ts +0 -15
- package/dist/_contracts/suggest.js +0 -53
- package/dist/_contracts/testing/response-bindings.d.ts +0 -45
- package/dist/_contracts/testing/response-bindings.js +0 -256
- package/dist/_contracts/testing/wire-conformance-entry.d.ts +0 -10
- package/dist/_contracts/testing/wire-conformance-entry.js +0 -8
- package/dist/_contracts/testing/wire-conformance.d.ts +0 -169
- package/dist/_contracts/testing/wire-conformance.js +0 -276
- package/dist/_contracts/turn-trace.d.ts +0 -28
- package/dist/_contracts/turn-trace.js +0 -1
- package/dist/_contracts/unknown-field-error.d.ts +0 -13
- package/dist/_contracts/unknown-field-error.js +0 -21
- package/dist/_contracts/value-guards.d.ts +0 -20
- package/dist/_contracts/value-guards.js +0 -34
- package/dist/_contracts/webhook-verify.d.ts +0 -34
- package/dist/_contracts/webhook-verify.js +0 -93
- package/dist/_contracts/wire-observer.d.ts +0 -49
- package/dist/_contracts/wire-observer.js +0 -34
- package/dist/_contracts/workflow-status.d.ts +0 -7
- package/dist/_contracts/workflow-status.js +0 -43
- package/dist/_contracts/workspace-resources.d.ts +0 -98
- package/dist/_contracts/workspace-resources.js +0 -39
- package/dist/archive-limits.d.ts +0 -1
- package/dist/archive-limits.js +0 -2
- package/dist/archive-limits.js.map +0 -1
- package/dist/asset-upload.d.ts +0 -47
- package/dist/asset-upload.js +0 -269
- package/dist/asset-upload.js.map +0 -1
- package/dist/bundle.d.ts +0 -9
- package/dist/bundle.js +0 -20
- package/dist/bundle.js.map +0 -1
- package/dist/canonical-zip.d.ts +0 -68
- package/dist/canonical-zip.js +0 -355
- package/dist/canonical-zip.js.map +0 -1
- package/dist/cli.mjs +0 -12048
- package/dist/cli.mjs.sha256 +0 -1
- package/dist/client-types.d.ts +0 -192
- package/dist/client-types.js +0 -2
- package/dist/client-types.js.map +0 -1
- package/dist/client.d.ts +0 -464
- package/dist/client.js +0 -1207
- package/dist/client.js.map +0 -1
- package/dist/event-projection.d.ts +0 -22
- package/dist/event-projection.js +0 -380
- package/dist/event-projection.js.map +0 -1
- package/dist/fetch-archive.d.ts +0 -16
- package/dist/fetch-archive.js +0 -252
- package/dist/fetch-archive.js.map +0 -1
- package/dist/file.d.ts +0 -96
- package/dist/file.js +0 -272
- package/dist/file.js.map +0 -1
- package/dist/instructions.d.ts +0 -20
- package/dist/instructions.js +0 -40
- package/dist/instructions.js.map +0 -1
- package/dist/legacy-session-provider-fault.d.ts +0 -7
- package/dist/legacy-session-provider-fault.js +0 -38
- package/dist/legacy-session-provider-fault.js.map +0 -1
- package/dist/mcp-server.d.ts +0 -84
- package/dist/mcp-server.js +0 -117
- package/dist/mcp-server.js.map +0 -1
- package/dist/node-fs.d.ts +0 -29
- package/dist/node-fs.js +0 -19
- package/dist/node-fs.js.map +0 -1
- package/dist/node-walk.d.ts +0 -69
- package/dist/node-walk.js +0 -151
- package/dist/node-walk.js.map +0 -1
- package/dist/path-basename.d.ts +0 -5
- package/dist/path-basename.js +0 -9
- package/dist/path-basename.js.map +0 -1
- package/dist/retry.d.ts +0 -70
- package/dist/retry.js +0 -155
- package/dist/retry.js.map +0 -1
- package/dist/secret.d.ts +0 -65
- package/dist/secret.js +0 -110
- package/dist/secret.js.map +0 -1
- package/dist/session-validate.d.ts +0 -100
- package/dist/session-validate.js +0 -303
- package/dist/session-validate.js.map +0 -1
- package/dist/skill.d.ts +0 -99
- package/dist/skill.js +0 -169
- package/dist/skill.js.map +0 -1
- package/dist/submission-wire.d.ts +0 -13
- package/dist/submission-wire.js +0 -69
- package/dist/submission-wire.js.map +0 -1
- package/dist/tool.d.ts +0 -41
- package/dist/tool.js +0 -76
- package/dist/tool.js.map +0 -1
- package/dist/version.d.ts +0 -9
- package/dist/version.js +0 -10
- package/dist/version.js.map +0 -1
- package/docs/authentication.md +0 -125
- package/docs/billing.md +0 -164
- package/docs/cleanup.md +0 -27
- package/docs/concepts/agent-tools.md +0 -47
- package/docs/concepts/composition.md +0 -60
- package/docs/concepts/providers-and-runtimes.md +0 -121
- package/docs/concepts/sessions.md +0 -51
- package/docs/concepts/subagents.md +0 -35
- package/docs/credentials.md +0 -116
- package/docs/defaults.md +0 -51
- package/docs/errors.md +0 -258
- package/docs/events.md +0 -143
- package/docs/files.md +0 -130
- package/docs/limits-and-quotas.md +0 -114
- package/docs/limits.md +0 -51
- package/docs/mcp.md +0 -47
- package/docs/networking.md +0 -114
- package/docs/provider-runtime-capabilities.md +0 -32
- package/docs/public-surface.json +0 -73
- package/docs/quickstart.md +0 -135
- package/docs/release.md +0 -44
- package/docs/retries.md +0 -108
- package/docs/secrets.md +0 -141
- package/docs/session-config.md +0 -51
- package/docs/session-record.md +0 -58
- package/docs/skills.md +0 -65
- package/docs/telemetry.md +0 -66
- package/docs/testing.md +0 -35
- package/docs/vision-skills.md +0 -94
- 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;
|