@aexhq/sdk 0.46.5-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
package/dist/session-validate.js
DELETED
|
@@ -1,303 +0,0 @@
|
|
|
1
|
-
import { containsSecretLikeValue, redactString, SessionConfigValidationError } from "./_contracts/index.js";
|
|
2
|
-
const SESSION_CREATE_KEYS = [
|
|
3
|
-
"model", "system", "assets", "mcpServers", "fileCapture",
|
|
4
|
-
"builtinTools", "outputMode", "responseFormat", "approvalGate", "metadata",
|
|
5
|
-
"idempotencyKey", "environment", "runtime", "overrides", "webhook"
|
|
6
|
-
];
|
|
7
|
-
const SESSION_START_KEYS = [
|
|
8
|
-
...SESSION_CREATE_KEYS,
|
|
9
|
-
"message", "deleteAfter", "messageIdempotencyKey", "stream"
|
|
10
|
-
];
|
|
11
|
-
const START_CONTROL_KEYS = [
|
|
12
|
-
"timeoutMs", "webSocketFactory", "idleTimeoutMs", "pingIntervalMs", "throwOnFailure"
|
|
13
|
-
];
|
|
14
|
-
const SESSION_SEND_KEYS = [
|
|
15
|
-
"webSocketFactory", "idleTimeoutMs", "pingIntervalMs", "idempotencyKey"
|
|
16
|
-
];
|
|
17
|
-
const SESSION_STREAM_KEYS = [
|
|
18
|
-
"webSocketFactory", "idleTimeoutMs", "pingIntervalMs"
|
|
19
|
-
];
|
|
20
|
-
const SESSION_OVERRIDE_KEYS = [
|
|
21
|
-
"idleTtl", "timeout", "maxSpendUsd", "maxTurns"
|
|
22
|
-
];
|
|
23
|
-
const SESSION_RUNTIME_KEYS = ["kind", "size"];
|
|
24
|
-
const FILE_CAPTURE_KEYS = [
|
|
25
|
-
"allowedDirs", "deniedDirs", "captureTimeoutMs", "maxFileBytes", "maxTotalBytes", "maxFiles"
|
|
26
|
-
];
|
|
27
|
-
const SESSION_WEBHOOK_KEYS = ["url"];
|
|
28
|
-
const SESSION_ENVIRONMENT_KEYS = [
|
|
29
|
-
"networking", "packages", "variables", "secrets"
|
|
30
|
-
];
|
|
31
|
-
const PLATFORM_NETWORKING_KEYS = [
|
|
32
|
-
"mode", "allowedHosts"
|
|
33
|
-
];
|
|
34
|
-
const PLATFORM_PACKAGE_INPUT_KEYS = [
|
|
35
|
-
"name", "version"
|
|
36
|
-
];
|
|
37
|
-
const TEXT_RESPONSE_FORMAT_KEYS = ["kind"];
|
|
38
|
-
const JSON_SCHEMA_RESPONSE_FORMAT_KEYS = [
|
|
39
|
-
"kind", "schema", "strict", "name"
|
|
40
|
-
];
|
|
41
|
-
const APPROVAL_GATE_KEYS = ["tools"];
|
|
42
|
-
const ASSET_CATEGORY_KEYS = [
|
|
43
|
-
"files", "skills", "tools", "instructions"
|
|
44
|
-
];
|
|
45
|
-
const ASSET_ITEM_KEYS = {
|
|
46
|
-
files: [
|
|
47
|
-
"kind", "resourceId", "version", "assetId", "contentHash", "createdAt", "updatedAt",
|
|
48
|
-
"sizeBytes", "contentType", "name", "mountPath"
|
|
49
|
-
],
|
|
50
|
-
skills: [
|
|
51
|
-
"kind", "resourceId", "version", "assetId", "contentHash", "createdAt", "updatedAt",
|
|
52
|
-
"sizeBytes", "contentType", "name", "description"
|
|
53
|
-
],
|
|
54
|
-
tools: [
|
|
55
|
-
"kind", "resourceId", "version", "assetId", "contentHash", "createdAt", "updatedAt",
|
|
56
|
-
"sizeBytes", "contentType", "name", "description", "input_schema", "entry"
|
|
57
|
-
],
|
|
58
|
-
instructions: [
|
|
59
|
-
"kind", "resourceId", "version", "assetId", "contentHash", "createdAt", "updatedAt",
|
|
60
|
-
"sizeBytes", "contentType", "name"
|
|
61
|
-
]
|
|
62
|
-
};
|
|
63
|
-
const VALIDATION_DIAGNOSTIC_MAX_LENGTH = 512;
|
|
64
|
-
const VALIDATION_DIAGNOSTIC_SOURCE_MAX_LENGTH = 4_096;
|
|
65
|
-
const VALIDATION_DIAGNOSTIC_MAX_TOKENS = 64;
|
|
66
|
-
const VALIDATION_DIAGNOSTIC_MAX_TOKEN_LENGTH = 1_024;
|
|
67
|
-
function fallbackValidationDiagnostic(field) {
|
|
68
|
-
return `underlying validator rejected ${field}; diagnostic redacted`;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Produce lossy diagnostic prose without retaining the caught value, its
|
|
72
|
-
* properties, stack, or causal chain. Any uncertainty falls back to field-only
|
|
73
|
-
* evidence rather than risking caller data in diagnostic-aware logging.
|
|
74
|
-
*/
|
|
75
|
-
function safeValidationDiagnostic(caught, field, policy) {
|
|
76
|
-
const fallback = fallbackValidationDiagnostic(field);
|
|
77
|
-
if (policy.kind === "redacted")
|
|
78
|
-
return fallback;
|
|
79
|
-
try {
|
|
80
|
-
const values = Array.from(policy.rejectedValues);
|
|
81
|
-
if (values.length > VALIDATION_DIAGNOSTIC_MAX_TOKENS)
|
|
82
|
-
return fallback;
|
|
83
|
-
const tokens = values.filter((value) => typeof value === "string" && value.length > 0);
|
|
84
|
-
if (tokens.some((token) => token.length > VALIDATION_DIAGNOSTIC_MAX_TOKEN_LENGTH))
|
|
85
|
-
return fallback;
|
|
86
|
-
const raw = typeof caught === "string"
|
|
87
|
-
? caught
|
|
88
|
-
: caught instanceof Error
|
|
89
|
-
? caught.message
|
|
90
|
-
: undefined;
|
|
91
|
-
if (!raw)
|
|
92
|
-
return fallback;
|
|
93
|
-
let diagnostic = raw.slice(0, VALIDATION_DIAGNOSTIC_SOURCE_MAX_LENGTH);
|
|
94
|
-
for (const token of tokens) {
|
|
95
|
-
diagnostic = diagnostic.split(token).join("<redacted-value>");
|
|
96
|
-
}
|
|
97
|
-
diagnostic = diagnostic.replace(/[\u0000-\u001f\u007f-\u009f]+/g, " ");
|
|
98
|
-
diagnostic = redactString(diagnostic).trim();
|
|
99
|
-
if (diagnostic.length === 0 ||
|
|
100
|
-
containsSecretLikeValue(diagnostic) ||
|
|
101
|
-
tokens.some((token) => diagnostic.includes(token))) {
|
|
102
|
-
return fallback;
|
|
103
|
-
}
|
|
104
|
-
return diagnostic.length <= VALIDATION_DIAGNOSTIC_MAX_LENGTH
|
|
105
|
-
? diagnostic
|
|
106
|
-
: `${diagnostic.slice(0, VALIDATION_DIAGNOSTIC_MAX_LENGTH - 3)}...`;
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
return fallback;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
function validationDiagnosticError(message) {
|
|
113
|
-
const diagnostic = new Error(message);
|
|
114
|
-
Object.defineProperty(diagnostic, "name", {
|
|
115
|
-
configurable: true,
|
|
116
|
-
value: "SessionConfigDiagnosticError"
|
|
117
|
-
});
|
|
118
|
-
return diagnostic;
|
|
119
|
-
}
|
|
120
|
-
/** Package-private catch-and-translate owner for canonical session validators. */
|
|
121
|
-
export function validatedSessionConfig(surface, field, message, validate, policy) {
|
|
122
|
-
try {
|
|
123
|
-
return validate();
|
|
124
|
-
}
|
|
125
|
-
catch (caught) {
|
|
126
|
-
throw configError(surface, field, message, validationDiagnosticError(safeValidationDiagnostic(caught, field, policy)));
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Package-private factory for SDK validation errors. `details.field` is the only
|
|
131
|
-
* stable machine-readable payload; messages are human guidance and may change.
|
|
132
|
-
*/
|
|
133
|
-
export function configError(surface, field, message, cause) {
|
|
134
|
-
return new SessionConfigValidationError(`${surface}: ${message}`, { field }, cause === undefined ? undefined : { cause });
|
|
135
|
-
}
|
|
136
|
-
export function normaliseSessionInput(input, surface, field) {
|
|
137
|
-
if (typeof input === "string") {
|
|
138
|
-
if (!input) {
|
|
139
|
-
throw configError(surface, field, `${field} must be a non-empty string`);
|
|
140
|
-
}
|
|
141
|
-
if (!input.trim()) {
|
|
142
|
-
throw configError(surface, field, `${field} must contain non-whitespace text`);
|
|
143
|
-
}
|
|
144
|
-
return input;
|
|
145
|
-
}
|
|
146
|
-
if (!Array.isArray(input) || input.length === 0) {
|
|
147
|
-
throw configError(surface, field, `${field} must be a non-empty string or string array`);
|
|
148
|
-
}
|
|
149
|
-
for (const segment of input) {
|
|
150
|
-
if (typeof segment !== "string" || !segment) {
|
|
151
|
-
throw configError(surface, field, `${field} segments must be non-empty strings`);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if (input.every((segment) => !segment.trim())) {
|
|
155
|
-
throw configError(surface, field, `${field} must contain non-whitespace text`);
|
|
156
|
-
}
|
|
157
|
-
return [...input];
|
|
158
|
-
}
|
|
159
|
-
export function assertSupportedSessionFields(options, surface, allowStartFields) {
|
|
160
|
-
const record = options;
|
|
161
|
-
const allowed = new Set(allowStartFields ? SESSION_START_KEYS : SESSION_CREATE_KEYS);
|
|
162
|
-
const guidance = {
|
|
163
|
-
runtimeSize: "use runtime.size",
|
|
164
|
-
runtimeKind: "use runtime.kind",
|
|
165
|
-
secretEnv: "use environment.secrets",
|
|
166
|
-
provider: "the serving provider is the model slug's creator prefix, e.g. model: \"anthropic/claude-haiku-4-5\"",
|
|
167
|
-
apiKeys: "model access is served on the aex managed gateway; you no longer supply a provider key",
|
|
168
|
-
parentSessionId: "subagent lineage is assigned by the platform",
|
|
169
|
-
message: "sessions are created without a first message; use Aex.start or session.messages.send",
|
|
170
|
-
prompt: "use message",
|
|
171
|
-
instructions: "publish Instructions through aex.workspace.instructions and pass the returned ref in assets.instructions"
|
|
172
|
-
};
|
|
173
|
-
for (const field of Object.keys(record)) {
|
|
174
|
-
if (!allowed.has(field)) {
|
|
175
|
-
const detail = guidance[field];
|
|
176
|
-
throw configError(surface, field, `${field} is not a supported option${detail === undefined ? "" : `; ${detail}`}`);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
const overrides = record.overrides;
|
|
180
|
-
if (overrides && typeof overrides === "object" && !Array.isArray(overrides)) {
|
|
181
|
-
const overrideRecord = overrides;
|
|
182
|
-
if (Object.prototype.hasOwnProperty.call(overrideRecord, "idleSuspendAfter")) {
|
|
183
|
-
throw configError(surface, "overrides.idleSuspendAfter", "overrides.idleSuspendAfter is not a supported option; use overrides.idleTtl.");
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
const runtime = record.runtime;
|
|
187
|
-
if (runtime !== undefined) {
|
|
188
|
-
if (typeof runtime !== "object" || runtime === null || Array.isArray(runtime)) {
|
|
189
|
-
throw configError(surface, "runtime", "runtime must be an object like { kind, size }");
|
|
190
|
-
}
|
|
191
|
-
for (const key of Object.keys(runtime)) {
|
|
192
|
-
if (!SESSION_RUNTIME_KEYS.includes(key)) {
|
|
193
|
-
throw configError(surface, `runtime.${key}`, `runtime.${key} is not a supported option; use runtime.kind or runtime.size`);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
assertStructuredSessionFields(record, surface, allowStartFields);
|
|
198
|
-
}
|
|
199
|
-
export function assertSupportedSessionSendOptions(options, surface, allowIdempotencyKey = true) {
|
|
200
|
-
const record = options;
|
|
201
|
-
if (!record || typeof record !== "object")
|
|
202
|
-
return;
|
|
203
|
-
const allowed = new Set(allowIdempotencyKey ? SESSION_SEND_KEYS : SESSION_STREAM_KEYS);
|
|
204
|
-
for (const field of Object.keys(record)) {
|
|
205
|
-
if (allowed.has(field))
|
|
206
|
-
continue;
|
|
207
|
-
const guidance = field === "from"
|
|
208
|
-
? "use session.events.list(), stream(), or streamEnvelopes() for replay"
|
|
209
|
-
: field === "signal"
|
|
210
|
-
? "use session.cancel() / session.suspend() for remote control"
|
|
211
|
-
: undefined;
|
|
212
|
-
throw configError(surface, field, `${field} is not a supported option${guidance === undefined ? "" : `; ${guidance}`}`);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
export function assertStartSessionOptions(options, surface) {
|
|
216
|
-
assertAllowedObjectFields(options, surface, "options", START_CONTROL_KEYS);
|
|
217
|
-
}
|
|
218
|
-
function assertStructuredSessionFields(record, surface, allowStartFields) {
|
|
219
|
-
const overrides = assertAllowedObjectFields(record.overrides, surface, "overrides", SESSION_OVERRIDE_KEYS);
|
|
220
|
-
void overrides;
|
|
221
|
-
assertAssetsFields(record.assets, surface);
|
|
222
|
-
assertAllowedObjectFields(record.fileCapture, surface, "fileCapture", FILE_CAPTURE_KEYS);
|
|
223
|
-
assertEnvironmentFields(record.environment, surface);
|
|
224
|
-
assertAllowedObjectFields(record.webhook, surface, "webhook", SESSION_WEBHOOK_KEYS);
|
|
225
|
-
const responseFormat = assertRecord(record.responseFormat, surface, "responseFormat");
|
|
226
|
-
if (responseFormat !== undefined) {
|
|
227
|
-
const allowed = responseFormat.kind === "text"
|
|
228
|
-
? TEXT_RESPONSE_FORMAT_KEYS
|
|
229
|
-
: JSON_SCHEMA_RESPONSE_FORMAT_KEYS;
|
|
230
|
-
assertAllowedKeys(responseFormat, surface, "responseFormat", allowed);
|
|
231
|
-
}
|
|
232
|
-
assertAllowedObjectFields(record.approvalGate, surface, "approvalGate", APPROVAL_GATE_KEYS);
|
|
233
|
-
if (allowStartFields) {
|
|
234
|
-
assertAllowedObjectFields(record.stream, surface, "stream", SESSION_STREAM_KEYS);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
function assertAssetsFields(value, surface) {
|
|
238
|
-
const assets = assertAllowedObjectFields(value, surface, "assets", ASSET_CATEGORY_KEYS);
|
|
239
|
-
if (assets === undefined)
|
|
240
|
-
return;
|
|
241
|
-
// Workspace publish methods return records that extend the reusable ref with
|
|
242
|
-
// immutable metadata. Accept those records directly so publish -> session is ergonomic.
|
|
243
|
-
for (const category of ASSET_CATEGORY_KEYS) {
|
|
244
|
-
const allowed = ASSET_ITEM_KEYS[category];
|
|
245
|
-
const entries = assets[category];
|
|
246
|
-
if (entries === undefined)
|
|
247
|
-
continue;
|
|
248
|
-
if (!Array.isArray(entries)) {
|
|
249
|
-
throw configError(surface, `assets.${category}`, `assets.${category} must be an array`);
|
|
250
|
-
}
|
|
251
|
-
entries.forEach((entry, index) => {
|
|
252
|
-
const field = `assets.${category}[${index}]`;
|
|
253
|
-
const item = assertRecord(entry, surface, field);
|
|
254
|
-
if (item !== undefined)
|
|
255
|
-
assertAllowedKeys(item, surface, field, allowed);
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
function assertEnvironmentFields(value, surface) {
|
|
260
|
-
const environment = assertAllowedObjectFields(value, surface, "environment", SESSION_ENVIRONMENT_KEYS);
|
|
261
|
-
if (environment === undefined)
|
|
262
|
-
return;
|
|
263
|
-
assertAllowedObjectFields(environment.networking, surface, "environment.networking", PLATFORM_NETWORKING_KEYS);
|
|
264
|
-
for (const field of ["variables", "secrets"]) {
|
|
265
|
-
assertRecord(environment[field], surface, `environment.${field}`);
|
|
266
|
-
}
|
|
267
|
-
const packages = environment.packages;
|
|
268
|
-
if (packages === undefined)
|
|
269
|
-
return;
|
|
270
|
-
if (!Array.isArray(packages)) {
|
|
271
|
-
throw configError(surface, "environment.packages", "environment.packages must be an array");
|
|
272
|
-
}
|
|
273
|
-
packages.forEach((entry, index) => {
|
|
274
|
-
const field = `environment.packages[${index}]`;
|
|
275
|
-
const item = assertRecord(entry, surface, field);
|
|
276
|
-
if (item !== undefined)
|
|
277
|
-
assertAllowedKeys(item, surface, field, PLATFORM_PACKAGE_INPUT_KEYS);
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
export function assertAllowedObjectFields(value, surface, field, allowed) {
|
|
281
|
-
const record = assertRecord(value, surface, field);
|
|
282
|
-
if (record !== undefined)
|
|
283
|
-
assertAllowedKeys(record, surface, field, allowed);
|
|
284
|
-
return record;
|
|
285
|
-
}
|
|
286
|
-
function assertRecord(value, surface, field) {
|
|
287
|
-
if (value === undefined)
|
|
288
|
-
return undefined;
|
|
289
|
-
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
290
|
-
throw configError(surface, field, `${field} must be an object`);
|
|
291
|
-
}
|
|
292
|
-
return value;
|
|
293
|
-
}
|
|
294
|
-
function assertAllowedKeys(record, surface, field, allowed) {
|
|
295
|
-
const allowedSet = new Set(allowed);
|
|
296
|
-
for (const key of Object.keys(record)) {
|
|
297
|
-
if (allowedSet.has(key))
|
|
298
|
-
continue;
|
|
299
|
-
const nested = `${field}.${key}`;
|
|
300
|
-
throw configError(surface, nested, `${nested} is not a supported option`);
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
//# sourceMappingURL=session-validate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-validate.js","sourceRoot":"","sources":["../src/session-validate.ts"],"names":[],"mappings":"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"}
|
package/dist/skill.d.ts
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { type FetchLike } from "./_contracts/index.js";
|
|
2
|
-
import { type BundleMeta, type SkillFiles } from "./bundle.js";
|
|
3
|
-
import type { IgnoreOptions } from "./node-walk.js";
|
|
4
|
-
/**
|
|
5
|
-
* A Skill is a draft workspace bundle of instructional /
|
|
6
|
-
* executable content (`SKILL.md` at the bundle root plus any supporting files).
|
|
7
|
-
* It is distinct from a {@link Tool}: a session gets a single `skills` meta-tool
|
|
8
|
-
* (list/load) rather than one load-tool per skill.
|
|
9
|
-
*
|
|
10
|
-
* Factories read, canonically bundle, and hash local content. Publish the draft
|
|
11
|
-
* with `aex.workspace.skills.publish(skill)`, then pin the returned immutable
|
|
12
|
-
* resource ref in `assets.skills`.
|
|
13
|
-
*/
|
|
14
|
-
export declare class Skill {
|
|
15
|
-
#private;
|
|
16
|
-
/** Internal constructor. Use the `Skill.from*` factories. */
|
|
17
|
-
private constructor();
|
|
18
|
-
/** Draft identity and canonical content hash. */
|
|
19
|
-
get ref(): DraftSkillRef;
|
|
20
|
-
/** True for a local-bytes skill that has not been upserted to the workspace yet. */
|
|
21
|
-
get isDraft(): boolean;
|
|
22
|
-
get name(): string;
|
|
23
|
-
get description(): string;
|
|
24
|
-
/**
|
|
25
|
-
* Read a local skill directory. It must contain `SKILL.md` at its root, whose
|
|
26
|
-
* YAML frontmatter supplies `description` and (unless `args.name` is given)
|
|
27
|
-
* `name`. When neither an explicit name nor a frontmatter name is present, the
|
|
28
|
-
* slugified directory basename is used.
|
|
29
|
-
*
|
|
30
|
-
* The directory is walked with FIDELITY (the same walk `File.fromPath` uses):
|
|
31
|
-
* `.aexignore` + the always-on defaults (`.git/`, `node_modules/`, …) prune the
|
|
32
|
-
* upload — so a skill dir carrying `node_modules` no longer ships it — and
|
|
33
|
-
* executable bits + symlinks are captured into a `.aexmeta.json` sidecar
|
|
34
|
-
* (emitted only when such metadata exists, so a pure-content skill dir stays
|
|
35
|
-
* byte-identical → dedup continuity). Bun/Node filesystem runtimes only.
|
|
36
|
-
*/
|
|
37
|
-
static fromDir(rootDir: string, args?: {
|
|
38
|
-
readonly name?: string;
|
|
39
|
-
readonly ignore?: IgnoreOptions;
|
|
40
|
-
}): Promise<Skill>;
|
|
41
|
-
/**
|
|
42
|
-
* Fetch a zip-archived skill from a URL. The archive is downloaded in the SDK
|
|
43
|
-
* process (caller-controlled URL — no SSRF surface), optionally integrity-checked
|
|
44
|
-
* against `sha256`, and reduced to the same files map as `Skill.fromDir` (a
|
|
45
|
-
* single wrapping top-level folder is stripped). It must expose `SKILL.md` at
|
|
46
|
-
* the root. The signed URL only needs to be valid for this call.
|
|
47
|
-
*/
|
|
48
|
-
static fromUrl(url: string, args?: {
|
|
49
|
-
readonly name?: string;
|
|
50
|
-
readonly sha256?: string;
|
|
51
|
-
readonly timeoutMs?: number;
|
|
52
|
-
readonly fetch?: FetchLike;
|
|
53
|
-
}): Promise<Skill>;
|
|
54
|
-
/**
|
|
55
|
-
* Build a draft skill from an in-memory files map (path -> string | bytes).
|
|
56
|
-
* Requires a root `SKILL.md`. Universal (no filesystem access). An optional
|
|
57
|
-
* `meta` (exec bits + symlinks) is threaded to the bundler for callers that
|
|
58
|
-
* carry fidelity metadata alongside a hand-built map; omit it and a plain map
|
|
59
|
-
* stays byte-identical to the pre-fidelity output.
|
|
60
|
-
*/
|
|
61
|
-
static fromFiles(args: {
|
|
62
|
-
readonly name?: string;
|
|
63
|
-
readonly files: SkillFiles;
|
|
64
|
-
readonly meta?: BundleMeta;
|
|
65
|
-
}): Promise<Skill>;
|
|
66
|
-
/** Convenience: build a single-file skill from a `SKILL.md` string. */
|
|
67
|
-
static fromContent(skillMd: string, args?: {
|
|
68
|
-
readonly name?: string;
|
|
69
|
-
}): Promise<Skill>;
|
|
70
|
-
/**
|
|
71
|
-
* Build a draft skill from an already-zipped bundle. The zip is unpacked to a
|
|
72
|
-
* files map (directory entries dropped), then re-canonicalised so a
|
|
73
|
-
* `fromBytes` skill and the identical `fromDir` / `fromFiles` skill dedup by
|
|
74
|
-
* content hash. Requires `SKILL.md` at the archive root.
|
|
75
|
-
*/
|
|
76
|
-
static fromBytes(args: {
|
|
77
|
-
readonly name?: string;
|
|
78
|
-
readonly zip: Uint8Array;
|
|
79
|
-
}): Promise<Skill>;
|
|
80
|
-
/**
|
|
81
|
-
* Internal: yield the draft bytes and metadata to the workspace publisher.
|
|
82
|
-
*/
|
|
83
|
-
_takeDraftBundle(): {
|
|
84
|
-
name: string;
|
|
85
|
-
description: string;
|
|
86
|
-
contentHash: string;
|
|
87
|
-
bytes: Uint8Array;
|
|
88
|
-
};
|
|
89
|
-
toJSON(): never;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* SDK-internal draft marker. It never reaches the session wire directly.
|
|
93
|
-
*/
|
|
94
|
-
export interface DraftSkillRef {
|
|
95
|
-
readonly kind: "draft";
|
|
96
|
-
readonly name: string;
|
|
97
|
-
readonly description: string;
|
|
98
|
-
readonly contentHash: string;
|
|
99
|
-
}
|
package/dist/skill.js
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { SKILL_BUNDLE_LIMITS } from "./_contracts/index.js";
|
|
2
|
-
import { deriveSkillName, extractSkillFrontmatter } from "./_contracts/internal.js";
|
|
3
|
-
import { bundleSkillFiles, hashSkillBundle, splitSkillBundleMetadata } from "./bundle.js";
|
|
4
|
-
import { fetchSkillArchive } from "./fetch-archive.js";
|
|
5
|
-
import { readDirectoryWithFidelity } from "./node-fs.js";
|
|
6
|
-
import { unzipSync } from "fflate";
|
|
7
|
-
import { assertArchiveCompressedSize, assertArchiveExpandedSize } from "./archive-limits.js";
|
|
8
|
-
import { crossPlatformBasename } from "./path-basename.js";
|
|
9
|
-
/**
|
|
10
|
-
* A Skill is a draft workspace bundle of instructional /
|
|
11
|
-
* executable content (`SKILL.md` at the bundle root plus any supporting files).
|
|
12
|
-
* It is distinct from a {@link Tool}: a session gets a single `skills` meta-tool
|
|
13
|
-
* (list/load) rather than one load-tool per skill.
|
|
14
|
-
*
|
|
15
|
-
* Factories read, canonically bundle, and hash local content. Publish the draft
|
|
16
|
-
* with `aex.workspace.skills.publish(skill)`, then pin the returned immutable
|
|
17
|
-
* resource ref in `assets.skills`.
|
|
18
|
-
*/
|
|
19
|
-
export class Skill {
|
|
20
|
-
#ref;
|
|
21
|
-
#description;
|
|
22
|
-
#bundleBytes;
|
|
23
|
-
/** Internal constructor. Use the `Skill.from*` factories. */
|
|
24
|
-
constructor(ref, description, bundleBytes) {
|
|
25
|
-
this.#ref = ref;
|
|
26
|
-
this.#description = description;
|
|
27
|
-
this.#bundleBytes = bundleBytes;
|
|
28
|
-
}
|
|
29
|
-
/** Draft identity and canonical content hash. */
|
|
30
|
-
get ref() {
|
|
31
|
-
return this.#ref;
|
|
32
|
-
}
|
|
33
|
-
/** True for a local-bytes skill that has not been upserted to the workspace yet. */
|
|
34
|
-
get isDraft() {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
get name() {
|
|
38
|
-
return this.#ref.name;
|
|
39
|
-
}
|
|
40
|
-
get description() {
|
|
41
|
-
return this.#description;
|
|
42
|
-
}
|
|
43
|
-
// --- factories (source symmetry with File / Instructions / Tool) --------------
|
|
44
|
-
/**
|
|
45
|
-
* Read a local skill directory. It must contain `SKILL.md` at its root, whose
|
|
46
|
-
* YAML frontmatter supplies `description` and (unless `args.name` is given)
|
|
47
|
-
* `name`. When neither an explicit name nor a frontmatter name is present, the
|
|
48
|
-
* slugified directory basename is used.
|
|
49
|
-
*
|
|
50
|
-
* The directory is walked with FIDELITY (the same walk `File.fromPath` uses):
|
|
51
|
-
* `.aexignore` + the always-on defaults (`.git/`, `node_modules/`, …) prune the
|
|
52
|
-
* upload — so a skill dir carrying `node_modules` no longer ships it — and
|
|
53
|
-
* executable bits + symlinks are captured into a `.aexmeta.json` sidecar
|
|
54
|
-
* (emitted only when such metadata exists, so a pure-content skill dir stays
|
|
55
|
-
* byte-identical → dedup continuity). Bun/Node filesystem runtimes only.
|
|
56
|
-
*/
|
|
57
|
-
static async fromDir(rootDir, args = {}) {
|
|
58
|
-
const { files, meta } = await readDirectoryWithFidelity(rootDir, args.ignore);
|
|
59
|
-
return Skill.#fromFiles("Skill.fromDir", files, args.name, crossPlatformBasename(rootDir), meta);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Fetch a zip-archived skill from a URL. The archive is downloaded in the SDK
|
|
63
|
-
* process (caller-controlled URL — no SSRF surface), optionally integrity-checked
|
|
64
|
-
* against `sha256`, and reduced to the same files map as `Skill.fromDir` (a
|
|
65
|
-
* single wrapping top-level folder is stripped). It must expose `SKILL.md` at
|
|
66
|
-
* the root. The signed URL only needs to be valid for this call.
|
|
67
|
-
*/
|
|
68
|
-
static async fromUrl(url, args = {}) {
|
|
69
|
-
const { files, meta } = await fetchSkillArchive(url, {
|
|
70
|
-
...(args.sha256 !== undefined ? { sha256: args.sha256 } : {}),
|
|
71
|
-
...(args.timeoutMs !== undefined ? { timeoutMs: args.timeoutMs } : {}),
|
|
72
|
-
...(args.fetch !== undefined ? { fetch: args.fetch } : {})
|
|
73
|
-
});
|
|
74
|
-
// A URL has no reliable directory basename, so no slug fallback.
|
|
75
|
-
return Skill.#fromFiles("Skill.fromUrl", files, args.name, undefined, meta);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Build a draft skill from an in-memory files map (path -> string | bytes).
|
|
79
|
-
* Requires a root `SKILL.md`. Universal (no filesystem access). An optional
|
|
80
|
-
* `meta` (exec bits + symlinks) is threaded to the bundler for callers that
|
|
81
|
-
* carry fidelity metadata alongside a hand-built map; omit it and a plain map
|
|
82
|
-
* stays byte-identical to the pre-fidelity output.
|
|
83
|
-
*/
|
|
84
|
-
static async fromFiles(args) {
|
|
85
|
-
if (!args || typeof args !== "object" || args.files === undefined) {
|
|
86
|
-
throw new Error("Skill.fromFiles: { files } is required");
|
|
87
|
-
}
|
|
88
|
-
return Skill.#fromFiles("Skill.fromFiles", args.files, args.name, undefined, args.meta);
|
|
89
|
-
}
|
|
90
|
-
/** Convenience: build a single-file skill from a `SKILL.md` string. */
|
|
91
|
-
static async fromContent(skillMd, args = {}) {
|
|
92
|
-
if (typeof skillMd !== "string" || skillMd.length === 0) {
|
|
93
|
-
throw new Error("Skill.fromContent: skillMd must be a non-empty string");
|
|
94
|
-
}
|
|
95
|
-
return Skill.#fromFiles("Skill.fromContent", { "SKILL.md": skillMd }, args.name, undefined);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Build a draft skill from an already-zipped bundle. The zip is unpacked to a
|
|
99
|
-
* files map (directory entries dropped), then re-canonicalised so a
|
|
100
|
-
* `fromBytes` skill and the identical `fromDir` / `fromFiles` skill dedup by
|
|
101
|
-
* content hash. Requires `SKILL.md` at the archive root.
|
|
102
|
-
*/
|
|
103
|
-
static async fromBytes(args) {
|
|
104
|
-
if (!args || !(args.zip instanceof Uint8Array) || args.zip.byteLength === 0) {
|
|
105
|
-
throw new Error("Skill.fromBytes: { zip } must be a non-empty Uint8Array");
|
|
106
|
-
}
|
|
107
|
-
assertArchiveCompressedSize(args.zip.byteLength, "Skill.fromBytes");
|
|
108
|
-
let entries;
|
|
109
|
-
let fileCount = 0;
|
|
110
|
-
let expandedBytes = 0;
|
|
111
|
-
try {
|
|
112
|
-
entries = unzipSync(args.zip, {
|
|
113
|
-
filter: (entry) => {
|
|
114
|
-
if (/[\\/]$/.test(entry.name))
|
|
115
|
-
return false;
|
|
116
|
-
fileCount += 1;
|
|
117
|
-
if (fileCount > SKILL_BUNDLE_LIMITS.maxFiles + 1) {
|
|
118
|
-
throw new Error(`Skill.fromBytes exceeds the ${SKILL_BUNDLE_LIMITS.maxFiles}-entry limit plus one control record`);
|
|
119
|
-
}
|
|
120
|
-
expandedBytes += entry.originalSize;
|
|
121
|
-
assertArchiveExpandedSize(expandedBytes, "Skill.fromBytes");
|
|
122
|
-
return true;
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
catch (err) {
|
|
127
|
-
throw new Error(`Skill.fromBytes: could not unzip the bundle (expected a .zip): ${err.message}`);
|
|
128
|
-
}
|
|
129
|
-
const files = {};
|
|
130
|
-
for (const [rawPath, bytes] of Object.entries(entries)) {
|
|
131
|
-
const path = rawPath.replace(/\\/g, "/");
|
|
132
|
-
if (path.endsWith("/"))
|
|
133
|
-
continue; // directory entry
|
|
134
|
-
files[path] = bytes;
|
|
135
|
-
}
|
|
136
|
-
const parsed = splitSkillBundleMetadata(files, "Skill.fromBytes");
|
|
137
|
-
return Skill.#fromFiles("Skill.fromBytes", parsed.files, args.name, undefined, parsed.meta);
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Internal: yield the draft bytes and metadata to the workspace publisher.
|
|
141
|
-
*/
|
|
142
|
-
_takeDraftBundle() {
|
|
143
|
-
return {
|
|
144
|
-
name: this.#ref.name,
|
|
145
|
-
description: this.#ref.description,
|
|
146
|
-
contentHash: this.#ref.contentHash,
|
|
147
|
-
bytes: this.#bundleBytes
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
toJSON() {
|
|
151
|
-
throw new Error("Skill drafts cannot be submitted directly; publish with aex.workspace.skills.publish(...)");
|
|
152
|
-
}
|
|
153
|
-
static async #fromFiles(source, files, explicitName, dirBasename, meta) {
|
|
154
|
-
const front = extractSkillFrontmatter(source, files);
|
|
155
|
-
const name = deriveSkillName(source, front.name, explicitName, dirBasename);
|
|
156
|
-
const description = front.description;
|
|
157
|
-
if (typeof description !== "string" || description.trim().length === 0) {
|
|
158
|
-
throw new Error(`${source}: a skill description is required — add a \`description:\` field to the SKILL.md YAML frontmatter`);
|
|
159
|
-
}
|
|
160
|
-
if (description.length > 2048) {
|
|
161
|
-
throw new Error(`${source}: description must be <= 2048 chars`);
|
|
162
|
-
}
|
|
163
|
-
const bundled = bundleSkillFiles(files, meta);
|
|
164
|
-
const contentHash = await hashSkillBundle(bundled.zip);
|
|
165
|
-
const ref = { kind: "draft", name, description, contentHash };
|
|
166
|
-
return new Skill(ref, description, bundled.zip);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
//# sourceMappingURL=skill.js.map
|
package/dist/skill.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { McpServerRef, PlatformEnvironmentInput, PlatformMcpServerSecret, PlatformSubmission, SessionRetentionPolicy } from "./_contracts/index.js";
|
|
2
|
-
import type { SessionCreateOptions, SessionEnvironmentOptions } from "./client-types.js";
|
|
3
|
-
import { McpServer } from "./mcp-server.js";
|
|
4
|
-
export declare function fileCaptureForWire(fileCapture: SessionCreateOptions["fileCapture"]): PlatformSubmission["fileCapture"] | undefined;
|
|
5
|
-
export declare function sessionRetentionForWire(options: SessionCreateOptions): SessionRetentionPolicy;
|
|
6
|
-
export declare function sessionEnvironmentForWire(environment: SessionEnvironmentOptions | undefined): PlatformEnvironmentInput | undefined;
|
|
7
|
-
export declare function mergeMcpServers(inputs: readonly McpServer[], explicitSecrets: readonly PlatformMcpServerSecret[]): {
|
|
8
|
-
submissionMcpServers: ReadonlyArray<McpServerRef | {
|
|
9
|
-
readonly kind: "workspace";
|
|
10
|
-
readonly id: string;
|
|
11
|
-
}>;
|
|
12
|
-
mergedMcpSecrets: readonly PlatformMcpServerSecret[];
|
|
13
|
-
};
|