@aexhq/sdk 0.25.2 → 0.26.1
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/README.md +1 -1
- package/dist/_contracts/connection-ticket.d.ts +2 -2
- package/dist/_contracts/connection-ticket.js +2 -2
- package/dist/_contracts/event-stream-client.d.ts +2 -2
- package/dist/_contracts/event-stream-client.js +2 -2
- package/dist/_contracts/index.d.ts +1 -0
- package/dist/_contracts/index.js +1 -0
- package/dist/_contracts/operations.d.ts +13 -1
- package/dist/_contracts/operations.js +19 -0
- package/dist/_contracts/proxy-protocol.js +1 -1
- package/dist/_contracts/runtime-manifest.d.ts +1 -1
- package/dist/_contracts/runtime-sizes.d.ts +5 -0
- package/dist/_contracts/runtime-sizes.js +3 -1
- package/dist/_contracts/runtime-types.d.ts +18 -0
- package/dist/_contracts/submission.d.ts +22 -0
- package/dist/_contracts/submission.js +38 -0
- package/dist/_contracts/webhook-verify.d.ts +34 -0
- package/dist/_contracts/webhook-verify.js +94 -0
- package/dist/agents-md.d.ts +1 -1
- package/dist/agents-md.js +1 -1
- package/dist/agents-md.js.map +1 -1
- package/dist/asset-upload.js +2 -2
- package/dist/asset-upload.js.map +1 -1
- package/dist/bundle.d.ts +1 -1
- package/dist/bundle.js +2 -2
- package/dist/bundle.js.map +1 -1
- package/dist/cli.mjs +185 -134
- package/dist/cli.mjs.sha256 +1 -1
- package/dist/client.d.ts +22 -1
- package/dist/client.js +18 -0
- package/dist/client.js.map +1 -1
- package/dist/fetch-archive.js +2 -2
- package/dist/fetch-archive.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/node-fs.d.ts +2 -2
- package/dist/node-fs.js +2 -2
- package/dist/skill.d.ts +2 -2
- package/dist/skill.js +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/credentials.md +3 -3
- package/docs/defaults.md +70 -0
- package/docs/limits-and-quotas.md +108 -0
- package/docs/provider-runtime-capabilities.md +1 -1
- package/docs/public-surface.json +1 -1
- package/docs/quickstart.md +1 -1
- package/docs/release.md +69 -101
- package/docs/testing.md +10 -9
- package/docs/vision-skills.md +2 -2
- package/package.json +15 -14
- package/LICENSE +0 -201
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Connection tickets for the event-coordinator WebSocket handshake.
|
|
3
3
|
*
|
|
4
|
-
* A browser/
|
|
4
|
+
* A browser/runtime WebSocket handshake cannot carry an Authorization header,
|
|
5
5
|
* so a subscriber first obtains a short-lived ticket from an authenticated
|
|
6
6
|
* HTTP endpoint, then presents it as a `?ticket=` query parameter on the WS
|
|
7
7
|
* upgrade. The ticket is an HMAC over `${runId}.${channel}.${exp}` keyed by
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* This lives in shared so the coordinator (which verifies) and the API
|
|
12
12
|
* hosted API's ticket broker (which mints, on behalf of a workspace token) use
|
|
13
|
-
* ONE implementation. Pure Web Crypto — identical under Node and workerd.
|
|
13
|
+
* ONE implementation. Pure Web Crypto — identical under Bun, Node, and workerd.
|
|
14
14
|
*/
|
|
15
15
|
export type ConnectionTicketChannel = "event" | "log" | "all";
|
|
16
16
|
/** Mint a `${channel}.${exp}.${mac}` ticket valid for `ttlMs` from `nowMs`. */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Connection tickets for the event-coordinator WebSocket handshake.
|
|
3
3
|
*
|
|
4
|
-
* A browser/
|
|
4
|
+
* A browser/runtime WebSocket handshake cannot carry an Authorization header,
|
|
5
5
|
* so a subscriber first obtains a short-lived ticket from an authenticated
|
|
6
6
|
* HTTP endpoint, then presents it as a `?ticket=` query parameter on the WS
|
|
7
7
|
* upgrade. The ticket is an HMAC over `${runId}.${channel}.${exp}` keyed by
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* This lives in shared so the coordinator (which verifies) and the API
|
|
12
12
|
* hosted API's ticket broker (which mints, on behalf of a workspace token) use
|
|
13
|
-
* ONE implementation. Pure Web Crypto — identical under Node and workerd.
|
|
13
|
+
* ONE implementation. Pure Web Crypto — identical under Bun, Node, and workerd.
|
|
14
14
|
*/
|
|
15
15
|
const DEFAULT_TICKET_TTL_MS = 60_000;
|
|
16
16
|
const encoder = new TextEncoder();
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* whole run): compose {@link filterStream} with the envelope guards, and
|
|
14
14
|
* {@link mapStream} with {@link toAGUI}, on top of this stream.
|
|
15
15
|
*
|
|
16
|
-
* The WebSocket is injectable so the SDK/CLI use the
|
|
17
|
-
* (Node 22+
|
|
16
|
+
* The WebSocket is injectable so the SDK/CLI use the global `WebSocket`
|
|
17
|
+
* (Bun and Node 22+ ship it; no dependency) and tests drive a fake.
|
|
18
18
|
*/
|
|
19
19
|
import type { AexEvent } from "./event-envelope.js";
|
|
20
20
|
/** The slice of the WHATWG WebSocket this client depends on. */
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* whole run): compose {@link filterStream} with the envelope guards, and
|
|
14
14
|
* {@link mapStream} with {@link toAGUI}, on top of this stream.
|
|
15
15
|
*
|
|
16
|
-
* The WebSocket is injectable so the SDK/CLI use the
|
|
17
|
-
* (Node 22+
|
|
16
|
+
* The WebSocket is injectable so the SDK/CLI use the global `WebSocket`
|
|
17
|
+
* (Bun and Node 22+ ship it; no dependency) and tests drive a fake.
|
|
18
18
|
*/
|
|
19
19
|
const isTerminalType = (e) => e.type === "RUN_FINISHED" || e.type === "RUN_ERROR";
|
|
20
20
|
export async function* streamCoordinatorEvents(opts) {
|
|
@@ -23,6 +23,7 @@ export * from "./sdk-secrets.js";
|
|
|
23
23
|
export * from "./sdk-errors.js";
|
|
24
24
|
export * from "./run-config.js";
|
|
25
25
|
export * from "./runtime-types.js";
|
|
26
|
+
export * from "./webhook-verify.js";
|
|
26
27
|
export * from "./http.js";
|
|
27
28
|
export * from "./run-artifacts.js";
|
|
28
29
|
export * as operations from "./operations.js";
|
package/dist/_contracts/index.js
CHANGED
|
@@ -23,6 +23,7 @@ export * from "./sdk-secrets.js";
|
|
|
23
23
|
export * from "./sdk-errors.js";
|
|
24
24
|
export * from "./run-config.js";
|
|
25
25
|
export * from "./runtime-types.js";
|
|
26
|
+
export * from "./webhook-verify.js";
|
|
26
27
|
export * from "./http.js";
|
|
27
28
|
export * from "./run-artifacts.js";
|
|
28
29
|
export * as operations from "./operations.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { HttpClient } from "./http.js";
|
|
2
2
|
import type { RunUnit } from "./run-unit.js";
|
|
3
|
-
import type { AgentsMdRecord, FileRecord, Output, OutputLink, OutputLinkOptions, OutputFileDownload, OutputFileSelector, OutputFileType, OutputQuery, Run, RunEvent, SecretRecord, SecretReveal, Skill, WhoAmI } from "./runtime-types.js";
|
|
3
|
+
import type { AgentsMdRecord, FileRecord, Output, OutputLink, OutputLinkOptions, OutputFileDownload, OutputFileSelector, OutputFileType, OutputQuery, Run, RunEvent, RunWebhookDelivery, SecretRecord, SecretReveal, Skill, WhoAmI } from "./runtime-types.js";
|
|
4
4
|
import type { PlatformRunSubmissionInput } from "./submission.js";
|
|
5
5
|
/**
|
|
6
6
|
* The single source of truth for SDK<->BFF transport. The SDK class
|
|
@@ -58,6 +58,18 @@ export declare function resolveOutputFileSelector(outputs: readonly Output[], se
|
|
|
58
58
|
export declare function downloadOutput(http: HttpClient, runId: string, selector: OutputFileSelector): Promise<OutputFileDownload>;
|
|
59
59
|
export declare function cancelRun(http: HttpClient, runId: string): Promise<void>;
|
|
60
60
|
export declare function deleteRun(http: HttpClient, runId: string): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* List a run's webhook delivery attempts (the per-run delivery ledger). Returns
|
|
63
|
+
* the rows surfaced by `GET /api/runs/:id/webhook-deliveries`; an empty array
|
|
64
|
+
* means the run carried no `webhook` or has not reached a terminal state yet.
|
|
65
|
+
*/
|
|
66
|
+
export declare function getRunWebhookDeliveries(http: HttpClient, runId: string): Promise<readonly RunWebhookDelivery[]>;
|
|
67
|
+
/**
|
|
68
|
+
* Manually re-trigger a run's webhook delivery: resets the row to `pending` and
|
|
69
|
+
* re-sends the frozen payload with the SAME `webhook-id` so the consumer
|
|
70
|
+
* dedupes. Idempotent from the caller's view.
|
|
71
|
+
*/
|
|
72
|
+
export declare function redeliverRunWebhook(http: HttpClient, runId: string, deliveryId: string): Promise<void>;
|
|
61
73
|
/**
|
|
62
74
|
* Delete a workspace asset cache entry. Accepts an `asset_<id>` value,
|
|
63
75
|
* `sha256:<hex>`, or a bare 64-hex digest. Workspace is derived server-side
|
|
@@ -152,6 +152,25 @@ export async function cancelRun(http, runId) {
|
|
|
152
152
|
export async function deleteRun(http, runId) {
|
|
153
153
|
await http.request(`/api/runs/${encodeURIComponent(runId)}`, { method: "DELETE" });
|
|
154
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* List a run's webhook delivery attempts (the per-run delivery ledger). Returns
|
|
157
|
+
* the rows surfaced by `GET /api/runs/:id/webhook-deliveries`; an empty array
|
|
158
|
+
* means the run carried no `webhook` or has not reached a terminal state yet.
|
|
159
|
+
*/
|
|
160
|
+
export async function getRunWebhookDeliveries(http, runId) {
|
|
161
|
+
const result = await http.request(`/api/runs/${encodeURIComponent(runId)}/webhook-deliveries`);
|
|
162
|
+
return Array.isArray(result)
|
|
163
|
+
? result
|
|
164
|
+
: result.deliveries;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Manually re-trigger a run's webhook delivery: resets the row to `pending` and
|
|
168
|
+
* re-sends the frozen payload with the SAME `webhook-id` so the consumer
|
|
169
|
+
* dedupes. Idempotent from the caller's view.
|
|
170
|
+
*/
|
|
171
|
+
export async function redeliverRunWebhook(http, runId, deliveryId) {
|
|
172
|
+
await http.request(`/api/runs/${encodeURIComponent(runId)}/webhook-deliveries/${encodeURIComponent(deliveryId)}/redeliver`, { method: "POST" });
|
|
173
|
+
}
|
|
155
174
|
/**
|
|
156
175
|
* Delete a workspace asset cache entry. Accepts an `asset_<id>` value,
|
|
157
176
|
* `sha256:<hex>`, or a bare 64-hex digest. Workspace is derived server-side
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Wire format between the in-container runtime bridge (mounted at
|
|
2
|
-
// `/mnt/session/uploads/aex/aex`, invoked through `
|
|
2
|
+
// `/mnt/session/uploads/aex/aex`, invoked through `bun`) and
|
|
3
3
|
// the Worker-owned named proxy route
|
|
4
4
|
// (`POST /api/runs/:runId/proxy/:endpointName`).
|
|
5
5
|
//
|
|
@@ -44,7 +44,7 @@ export interface RuntimeManifest {
|
|
|
44
44
|
readonly filesRoot: string;
|
|
45
45
|
/** Parent dir of non-SKILL.md asset mounts: `<assetsRoot>/<skl_id>/<rel-path>`. */
|
|
46
46
|
readonly assetsRoot: string;
|
|
47
|
-
/** Absolute path of the in-container aex runtime bridge (invoke via `
|
|
47
|
+
/** Absolute path of the in-container aex runtime bridge (invoke via `bun`). */
|
|
48
48
|
readonly aexCli: string;
|
|
49
49
|
/** Absolute path of the per-run proxy-endpoints manifest. */
|
|
50
50
|
readonly indexJson: string;
|
|
@@ -14,6 +14,10 @@ export interface RuntimeResources {
|
|
|
14
14
|
* Tokens intentionally remain stable product presets.
|
|
15
15
|
*/
|
|
16
16
|
export declare const RUNTIME_SIZE_PRESETS: {
|
|
17
|
+
readonly "shared-1x-128mb": {
|
|
18
|
+
readonly cpus: 1;
|
|
19
|
+
readonly memoryMb: 128;
|
|
20
|
+
};
|
|
17
21
|
readonly "shared-1x-256mb": {
|
|
18
22
|
readonly cpus: 1;
|
|
19
23
|
readonly memoryMb: 256;
|
|
@@ -90,6 +94,7 @@ export declare const DEFAULT_RUNTIME_SIZE: RuntimeSize;
|
|
|
90
94
|
* resolves to the wire token `"shared-2x-2gb"`.
|
|
91
95
|
*/
|
|
92
96
|
export declare const RuntimeSizes: {
|
|
97
|
+
readonly SHARED_1X_128MB: "shared-1x-128mb";
|
|
93
98
|
readonly SHARED_1X_256MB: "shared-1x-256mb";
|
|
94
99
|
readonly SHARED_1X_512MB: "shared-1x-512mb";
|
|
95
100
|
readonly SHARED_1X_1GB: "shared-1x-1gb";
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* Tokens intentionally remain stable product presets.
|
|
11
11
|
*/
|
|
12
12
|
export const RUNTIME_SIZE_PRESETS = {
|
|
13
|
+
"shared-1x-128mb": { cpus: 1, memoryMb: 128 },
|
|
13
14
|
"shared-1x-256mb": { cpus: 1, memoryMb: 256 },
|
|
14
15
|
"shared-1x-512mb": { cpus: 1, memoryMb: 512 },
|
|
15
16
|
"shared-1x-1gb": { cpus: 1, memoryMb: 1024 },
|
|
@@ -30,12 +31,13 @@ export const RUNTIME_SIZE_PRESETS = {
|
|
|
30
31
|
/** All preset tokens, ordered as declared. Handy for CLI help + validation. */
|
|
31
32
|
export const RUNTIME_SIZES = Object.keys(RUNTIME_SIZE_PRESETS);
|
|
32
33
|
/** Default when `runtimeSize` is omitted. */
|
|
33
|
-
export const DEFAULT_RUNTIME_SIZE = "shared-1x-
|
|
34
|
+
export const DEFAULT_RUNTIME_SIZE = "shared-1x-128mb";
|
|
34
35
|
/**
|
|
35
36
|
* Symbol-style accessors for TS callers. `RuntimeSizes.SHARED_2X_2GB`
|
|
36
37
|
* resolves to the wire token `"shared-2x-2gb"`.
|
|
37
38
|
*/
|
|
38
39
|
export const RuntimeSizes = {
|
|
40
|
+
SHARED_1X_128MB: "shared-1x-128mb",
|
|
39
41
|
SHARED_1X_256MB: "shared-1x-256mb",
|
|
40
42
|
SHARED_1X_512MB: "shared-1x-512mb",
|
|
41
43
|
SHARED_1X_1GB: "shared-1x-1gb",
|
|
@@ -77,6 +77,24 @@ export interface RunEvent {
|
|
|
77
77
|
readonly level?: import("./event-envelope.js").AexLogLevel;
|
|
78
78
|
readonly [key: string]: unknown;
|
|
79
79
|
}
|
|
80
|
+
/** Status of a per-run webhook delivery. Terminal: delivered/exhausted/invalid. */
|
|
81
|
+
export type RunWebhookDeliveryStatus = "pending" | "delivering" | "retrying" | "delivered" | "exhausted" | "invalid";
|
|
82
|
+
/**
|
|
83
|
+
* One row of a run's webhook delivery ledger, as returned by
|
|
84
|
+
* `GET /api/runs/:id/webhook-deliveries`. `id` is the stable `webhook-id`
|
|
85
|
+
* header the consumer dedupes on across retries; the optional fields are
|
|
86
|
+
* populated only once a delivery attempt has been made.
|
|
87
|
+
*/
|
|
88
|
+
export interface RunWebhookDelivery {
|
|
89
|
+
readonly id: string;
|
|
90
|
+
readonly eventType: string;
|
|
91
|
+
readonly status: RunWebhookDeliveryStatus;
|
|
92
|
+
readonly attemptCount: number;
|
|
93
|
+
readonly lastStatusCode?: number;
|
|
94
|
+
readonly lastError?: string;
|
|
95
|
+
readonly nextAttemptAt?: string;
|
|
96
|
+
readonly createdAt: string;
|
|
97
|
+
}
|
|
80
98
|
/**
|
|
81
99
|
* Provider-emitted event payload. Provider-specific fields are passed through
|
|
82
100
|
* structurally so historical events and managed-runner events can be displayed
|
|
@@ -466,6 +466,19 @@ export interface PlatformRunSubmissionRequest {
|
|
|
466
466
|
* so a forged value cannot bypass the cap.
|
|
467
467
|
*/
|
|
468
468
|
readonly parentRunId?: string;
|
|
469
|
+
/**
|
|
470
|
+
* Optional per-run callback URL. The platform delivers exactly the terminal
|
|
471
|
+
* `run.finished` event to this URL at the settle-consistent barrier, signed
|
|
472
|
+
* Standard-Webhooks style. It is a sibling of {@link idempotencyKey} /
|
|
473
|
+
* {@link parentRunId} — an operational/delivery concern, NOT part of the
|
|
474
|
+
* hashed submission brief, so the same idempotency key with a different
|
|
475
|
+
* callback URL never 409s and the field never enters `request_hash`.
|
|
476
|
+
*/
|
|
477
|
+
readonly webhook?: RunWebhookSpec;
|
|
478
|
+
}
|
|
479
|
+
/** Per-run webhook callback. v1: terminal-only; the URL must be https. */
|
|
480
|
+
export interface RunWebhookSpec {
|
|
481
|
+
readonly url: string;
|
|
469
482
|
}
|
|
470
483
|
/**
|
|
471
484
|
* Wire shape posted by the SDK and CLI. `workspaceId` is **omitted by
|
|
@@ -506,6 +519,15 @@ export type PlatformRunSubmissionInput = Omit<PlatformRunSubmissionRequest, "wor
|
|
|
506
519
|
export interface ParseRunSubmissionOptions {
|
|
507
520
|
}
|
|
508
521
|
export declare function parseRunSubmissionRequest(input: unknown, options?: ParseRunSubmissionOptions): PlatformRunSubmissionRequest;
|
|
522
|
+
/**
|
|
523
|
+
* Parse + SSRF-shape-validate the optional per-run `webhook`. The URL must be
|
|
524
|
+
* https with no userinfo (a `user:pass@host` URL is rejected — credentials must
|
|
525
|
+
* not ride in a callback URL). Unknown subfields are rejected so the strict
|
|
526
|
+
* top-level allow-list extends to the nested object. Returns `undefined` when
|
|
527
|
+
* absent. Delivery-time re-resolution + IP-deny checks live server-side; this
|
|
528
|
+
* is the submit-time shape gate.
|
|
529
|
+
*/
|
|
530
|
+
export declare function parseRunWebhook(input: unknown): RunWebhookSpec | undefined;
|
|
509
531
|
export declare function parseRunRegion(input: unknown): RunRegion | undefined;
|
|
510
532
|
export declare function parseRuntimeKind(input: unknown): RuntimeKind | undefined;
|
|
511
533
|
export declare function parseRunProvider(input: unknown): RunProvider;
|
|
@@ -1011,6 +1011,7 @@ export function parseRunSubmissionRequest(input, options = {}) {
|
|
|
1011
1011
|
"postHook",
|
|
1012
1012
|
"proxyEndpoints",
|
|
1013
1013
|
"parentRunId",
|
|
1014
|
+
"webhook",
|
|
1014
1015
|
SECRETS_KEY
|
|
1015
1016
|
]);
|
|
1016
1017
|
for (const key of Object.keys(value)) {
|
|
@@ -1045,6 +1046,7 @@ export function parseRunSubmissionRequest(input, options = {}) {
|
|
|
1045
1046
|
// Lineage parent only. `depth` is NEVER accepted from the wire — the server
|
|
1046
1047
|
// derives it from the parent row (a forged depth must not bypass the cap).
|
|
1047
1048
|
const parentRunId = optionalString(value.parentRunId, "submission.parentRunId");
|
|
1049
|
+
const webhook = parseRunWebhook(value.webhook);
|
|
1048
1050
|
const postHook = parsePostHook(value.postHook, "submission.postHook");
|
|
1049
1051
|
const proxyEndpoints = parseProxyEndpoints(value.proxyEndpoints);
|
|
1050
1052
|
const secrets = parseInlineSecrets(value.secrets);
|
|
@@ -1099,9 +1101,45 @@ export function parseRunSubmissionRequest(input, options = {}) {
|
|
|
1099
1101
|
...(postHook !== undefined ? { postHook } : {}),
|
|
1100
1102
|
...(proxyEndpoints ? { proxyEndpoints } : {}),
|
|
1101
1103
|
...(parentRunId !== undefined ? { parentRunId } : {}),
|
|
1104
|
+
...(webhook !== undefined ? { webhook } : {}),
|
|
1102
1105
|
secrets
|
|
1103
1106
|
};
|
|
1104
1107
|
}
|
|
1108
|
+
/**
|
|
1109
|
+
* Parse + SSRF-shape-validate the optional per-run `webhook`. The URL must be
|
|
1110
|
+
* https with no userinfo (a `user:pass@host` URL is rejected — credentials must
|
|
1111
|
+
* not ride in a callback URL). Unknown subfields are rejected so the strict
|
|
1112
|
+
* top-level allow-list extends to the nested object. Returns `undefined` when
|
|
1113
|
+
* absent. Delivery-time re-resolution + IP-deny checks live server-side; this
|
|
1114
|
+
* is the submit-time shape gate.
|
|
1115
|
+
*/
|
|
1116
|
+
export function parseRunWebhook(input) {
|
|
1117
|
+
if (input === undefined) {
|
|
1118
|
+
return undefined;
|
|
1119
|
+
}
|
|
1120
|
+
const value = requireRecord(input, "webhook");
|
|
1121
|
+
const allowed = new Set(["url"]);
|
|
1122
|
+
for (const key of Object.keys(value)) {
|
|
1123
|
+
if (!allowed.has(key)) {
|
|
1124
|
+
throw new Error(`webhook.${key} is not an allowed field; permitted: ${[...allowed].join(", ")}`);
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
const url = requireString(value.url, "webhook.url");
|
|
1128
|
+
let parsed;
|
|
1129
|
+
try {
|
|
1130
|
+
parsed = new URL(url);
|
|
1131
|
+
}
|
|
1132
|
+
catch {
|
|
1133
|
+
throw new Error(`webhook.url must be a valid absolute URL (got ${JSON.stringify(url)})`);
|
|
1134
|
+
}
|
|
1135
|
+
if (parsed.protocol !== "https:") {
|
|
1136
|
+
throw new Error(`webhook.url must use https (got ${parsed.protocol.replace(/:$/, "")})`);
|
|
1137
|
+
}
|
|
1138
|
+
if (parsed.username !== "" || parsed.password !== "") {
|
|
1139
|
+
throw new Error("webhook.url must not contain userinfo (user:pass@host)");
|
|
1140
|
+
}
|
|
1141
|
+
return { url };
|
|
1142
|
+
}
|
|
1105
1143
|
export function parseRunRegion(input) {
|
|
1106
1144
|
if (input === undefined) {
|
|
1107
1145
|
return undefined;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Customer-side verification for aex run webhooks (Standard Webhooks scheme).
|
|
3
|
+
*
|
|
4
|
+
* aex signs every delivery HMAC-SHA256 over `${webhook-id}.${webhook-timestamp}.${rawBody}`
|
|
5
|
+
* and sends three headers:
|
|
6
|
+
* - `webhook-id` : stable across retries (dedupe key)
|
|
7
|
+
* - `webhook-timestamp` : unix seconds at send time
|
|
8
|
+
* - `webhook-signature` : space-delimited list of `v1,<base64(hmac)>` entries
|
|
9
|
+
* (a list during secret rotation — accept ANY match)
|
|
10
|
+
*
|
|
11
|
+
* The secret is the workspace signing secret surfaced once as `whsec_<base64>`;
|
|
12
|
+
* the HMAC key is the raw bytes after the `whsec_` prefix. Verification accepts
|
|
13
|
+
* the secret with or without the prefix.
|
|
14
|
+
*
|
|
15
|
+
* Pure Web Crypto — identical under Bun, Node, and workerd; this mirrors the
|
|
16
|
+
* `standardwebhooks` library so a customer can verify with either.
|
|
17
|
+
*/
|
|
18
|
+
export interface VerifyAexWebhookInput {
|
|
19
|
+
/** The exact bytes of the request body, as a string (do NOT re-serialize). */
|
|
20
|
+
readonly rawBody: string;
|
|
21
|
+
/** The inbound request headers (case-insensitive lookup). */
|
|
22
|
+
readonly headers: Headers | Readonly<Record<string, string | string[] | undefined>>;
|
|
23
|
+
/** The workspace signing secret, `whsec_<base64>` (or the bare base64). */
|
|
24
|
+
readonly secret: string;
|
|
25
|
+
/** Max allowed clock skew between `webhook-timestamp` and now. Default 300s. */
|
|
26
|
+
readonly toleranceSeconds?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Verify an aex webhook delivery. Returns `true` only when the timestamp is
|
|
30
|
+
* within tolerance AND one of the `v1,<base64>` entries in `webhook-signature`
|
|
31
|
+
* matches the HMAC over `${id}.${timestamp}.${rawBody}`. Constant-time compare;
|
|
32
|
+
* never throws on a bad signature (only on a malformed secret).
|
|
33
|
+
*/
|
|
34
|
+
export declare function verifyAexWebhook(input: VerifyAexWebhookInput): Promise<boolean>;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Customer-side verification for aex run webhooks (Standard Webhooks scheme).
|
|
3
|
+
*
|
|
4
|
+
* aex signs every delivery HMAC-SHA256 over `${webhook-id}.${webhook-timestamp}.${rawBody}`
|
|
5
|
+
* and sends three headers:
|
|
6
|
+
* - `webhook-id` : stable across retries (dedupe key)
|
|
7
|
+
* - `webhook-timestamp` : unix seconds at send time
|
|
8
|
+
* - `webhook-signature` : space-delimited list of `v1,<base64(hmac)>` entries
|
|
9
|
+
* (a list during secret rotation — accept ANY match)
|
|
10
|
+
*
|
|
11
|
+
* The secret is the workspace signing secret surfaced once as `whsec_<base64>`;
|
|
12
|
+
* the HMAC key is the raw bytes after the `whsec_` prefix. Verification accepts
|
|
13
|
+
* the secret with or without the prefix.
|
|
14
|
+
*
|
|
15
|
+
* Pure Web Crypto — identical under Bun, Node, and workerd; this mirrors the
|
|
16
|
+
* `standardwebhooks` library so a customer can verify with either.
|
|
17
|
+
*/
|
|
18
|
+
const encoder = new TextEncoder();
|
|
19
|
+
function headerValue(headers, name) {
|
|
20
|
+
if (headers instanceof Headers) {
|
|
21
|
+
return headers.get(name) ?? undefined;
|
|
22
|
+
}
|
|
23
|
+
const lower = name.toLowerCase();
|
|
24
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
25
|
+
if (key.toLowerCase() === lower) {
|
|
26
|
+
return Array.isArray(value) ? value[0] : value ?? undefined;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
/** Strip the `whsec_` prefix and decode the base64 key material to bytes. */
|
|
32
|
+
function decodeSecret(secret) {
|
|
33
|
+
const material = secret.startsWith("whsec_") ? secret.slice("whsec_".length) : secret;
|
|
34
|
+
const binary = atob(material);
|
|
35
|
+
const bytes = new Uint8Array(binary.length);
|
|
36
|
+
for (let i = 0; i < binary.length; i++)
|
|
37
|
+
bytes[i] = binary.charCodeAt(i);
|
|
38
|
+
return bytes;
|
|
39
|
+
}
|
|
40
|
+
async function hmacBase64(keyBytes, message) {
|
|
41
|
+
const key = await crypto.subtle.importKey("raw", keyBytes, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
42
|
+
const sig = await crypto.subtle.sign("HMAC", key, encoder.encode(message));
|
|
43
|
+
let binary = "";
|
|
44
|
+
const view = new Uint8Array(sig);
|
|
45
|
+
for (let i = 0; i < view.length; i++)
|
|
46
|
+
binary += String.fromCharCode(view[i]);
|
|
47
|
+
return btoa(binary);
|
|
48
|
+
}
|
|
49
|
+
/** Length-then-constant-time comparison of two strings. */
|
|
50
|
+
function timingSafeEqual(a, b) {
|
|
51
|
+
if (a.length !== b.length)
|
|
52
|
+
return false;
|
|
53
|
+
let diff = 0;
|
|
54
|
+
for (let i = 0; i < a.length; i++)
|
|
55
|
+
diff |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
56
|
+
return diff === 0;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Verify an aex webhook delivery. Returns `true` only when the timestamp is
|
|
60
|
+
* within tolerance AND one of the `v1,<base64>` entries in `webhook-signature`
|
|
61
|
+
* matches the HMAC over `${id}.${timestamp}.${rawBody}`. Constant-time compare;
|
|
62
|
+
* never throws on a bad signature (only on a malformed secret).
|
|
63
|
+
*/
|
|
64
|
+
export async function verifyAexWebhook(input) {
|
|
65
|
+
const toleranceSeconds = input.toleranceSeconds ?? 300;
|
|
66
|
+
const id = headerValue(input.headers, "webhook-id");
|
|
67
|
+
const timestamp = headerValue(input.headers, "webhook-timestamp");
|
|
68
|
+
const signatureHeader = headerValue(input.headers, "webhook-signature");
|
|
69
|
+
if (!id || !timestamp || !signatureHeader)
|
|
70
|
+
return false;
|
|
71
|
+
const ts = Number(timestamp);
|
|
72
|
+
if (!Number.isFinite(ts))
|
|
73
|
+
return false;
|
|
74
|
+
const nowSeconds = Math.floor(Date.now() / 1000);
|
|
75
|
+
if (Math.abs(nowSeconds - ts) > toleranceSeconds)
|
|
76
|
+
return false;
|
|
77
|
+
const keyBytes = decodeSecret(input.secret);
|
|
78
|
+
const expected = await hmacBase64(keyBytes, `${id}.${timestamp}.${input.rawBody}`);
|
|
79
|
+
// `webhook-signature` is a space-delimited list of versioned signatures; a
|
|
80
|
+
// single delivery may carry several (current + previous key during rotation).
|
|
81
|
+
for (const entry of signatureHeader.split(" ")) {
|
|
82
|
+
const comma = entry.indexOf(",");
|
|
83
|
+
if (comma === -1)
|
|
84
|
+
continue;
|
|
85
|
+
const version = entry.slice(0, comma);
|
|
86
|
+
const value = entry.slice(comma + 1);
|
|
87
|
+
if (version !== "v1")
|
|
88
|
+
continue;
|
|
89
|
+
if (timingSafeEqual(value, expected))
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=webhook-verify.js.map
|
package/dist/agents-md.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export declare class AgentsMd {
|
|
|
24
24
|
static fromContent(content: string, args: {
|
|
25
25
|
readonly name: string;
|
|
26
26
|
}): Promise<AgentsMd>;
|
|
27
|
-
/** Node
|
|
27
|
+
/** Bun/Node filesystem convenience: read a markdown file from disk. */
|
|
28
28
|
static fromPath(path: string, args: {
|
|
29
29
|
readonly name: string;
|
|
30
30
|
}): Promise<AgentsMd>;
|
package/dist/agents-md.js
CHANGED
|
@@ -46,7 +46,7 @@ export class AgentsMd {
|
|
|
46
46
|
const ref = { kind: "draft", name: args.name, contentHash };
|
|
47
47
|
return new AgentsMd(ref, zip);
|
|
48
48
|
}
|
|
49
|
-
/** Node
|
|
49
|
+
/** Bun/Node filesystem convenience: read a markdown file from disk. */
|
|
50
50
|
static async fromPath(path, args) {
|
|
51
51
|
const content = await readFile(path, "utf8");
|
|
52
52
|
return AgentsMd.fromContent(content, args);
|
package/dist/agents-md.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../src/agents-md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,QAAQ;IACV,IAAI,CAAiC;IACrC,SAAS,CAAyB;IAC3C,SAAS,GAAG,KAAK,CAAC;IAElB,YAAY,GAAmC,EAAE,QAAqB;QACpE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,IAA+B;QACvE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,yCAAyC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7F,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;QAC9E,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../src/agents-md.ts"],"names":[],"mappings":"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"}
|
package/dist/asset-upload.js
CHANGED
|
@@ -138,14 +138,14 @@ async function uploadAssetBuffered(args, actualHex) {
|
|
|
138
138
|
// ---------------------------------------------------------------------------
|
|
139
139
|
/**
|
|
140
140
|
* Compute SHA-256 over `bytes` and return the lowercase hex digest.
|
|
141
|
-
* Uses Web Crypto when available (Node 18+ / browser); the SDK already
|
|
141
|
+
* Uses Web Crypto when available (Bun / Node 18+ / browser); the SDK already
|
|
142
142
|
* requires Web Crypto for `hashSkillBundle`.
|
|
143
143
|
*/
|
|
144
144
|
async function computeSha256Hex(bytes) {
|
|
145
145
|
const subtle = globalThis.crypto?.subtle;
|
|
146
146
|
if (!subtle) {
|
|
147
147
|
throw new Error("uploadAsset: globalThis.crypto.subtle is not available; " +
|
|
148
|
-
"Node 18
|
|
148
|
+
"Bun, Node 18+, or a Web-Crypto-capable runtime is required");
|
|
149
149
|
}
|
|
150
150
|
const copy = new Uint8Array(bytes.byteLength);
|
|
151
151
|
copy.set(bytes);
|
package/dist/asset-upload.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-upload.js","sourceRoot":"","sources":["../src/asset-upload.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"asset-upload.js","sourceRoot":"","sources":["../src/asset-upload.ts"],"names":[],"mappings":"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"}
|
package/dist/bundle.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export declare function bundleToolFiles(files: SkillFiles, manifest: ToolBundleM
|
|
|
40
40
|
* `Skill.fromFiles` / `Skill.fromPath` to populate the
|
|
41
41
|
* `InlineSkillRef.contentHash` field. The hash is advisory — the BFF
|
|
42
42
|
* recomputes server-side after re-canonicalising the zip; a mismatch is
|
|
43
|
-
* rejected. Web-Crypto-only so the SDK works in Node, edge runtimes,
|
|
43
|
+
* rejected. Web-Crypto-only so the SDK works in Bun, Node, edge runtimes,
|
|
44
44
|
* and browsers without polyfills.
|
|
45
45
|
*/
|
|
46
46
|
export declare function hashSkillBundle(zipBytes: Uint8Array): Promise<string>;
|
package/dist/bundle.js
CHANGED
|
@@ -110,13 +110,13 @@ const ZIP_EPOCH = new Date(Date.UTC(1980, 0, 1));
|
|
|
110
110
|
* `Skill.fromFiles` / `Skill.fromPath` to populate the
|
|
111
111
|
* `InlineSkillRef.contentHash` field. The hash is advisory — the BFF
|
|
112
112
|
* recomputes server-side after re-canonicalising the zip; a mismatch is
|
|
113
|
-
* rejected. Web-Crypto-only so the SDK works in Node, edge runtimes,
|
|
113
|
+
* rejected. Web-Crypto-only so the SDK works in Bun, Node, edge runtimes,
|
|
114
114
|
* and browsers without polyfills.
|
|
115
115
|
*/
|
|
116
116
|
export async function hashSkillBundle(zipBytes) {
|
|
117
117
|
const subtle = globalThis.crypto?.subtle;
|
|
118
118
|
if (!subtle) {
|
|
119
|
-
throw new Error("hashSkillBundle: globalThis.crypto.subtle is not available; Node 18
|
|
119
|
+
throw new Error("hashSkillBundle: globalThis.crypto.subtle is not available; Bun, Node 18+, or a Web-Crypto-capable runtime is required");
|
|
120
120
|
}
|
|
121
121
|
// crypto.subtle.digest expects a BufferSource. Pass a freshly-sliced
|
|
122
122
|
// copy to detach from any external Uint8Array view (Web Crypto rejects
|
package/dist/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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"}
|