@aexhq/sdk 0.13.8 → 0.13.10

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/dist/index.d.ts CHANGED
@@ -21,7 +21,7 @@ export { AexApiError, AexError, CleanupError, CredentialValidationError, Provide
21
21
  export { MCP_SERVER_NAME_PATTERN, SKILL_BUNDLE_LIMITS, SkillBundleValidationError, buildPlatformAllowedHosts, normaliseSkillBundlePath, validateSkillBundleEntry, validateSkillBundleManifest, validateProxyAuth } from "./_contracts/index.js";
22
22
  export type { AssetRef, AgentsMdRef, FileRef, McpServerRef, SkillBundleEntry, SkillBundleManifest, SkillRef } from "./_contracts/index.js";
23
23
  export type { AgentsMdRecord as AgentsMdRecordWire, FileRecord as FileRecordWire, Output, ProviderEvent, Run, RunRecordArchiveFileV1, RunRecordArchiveFileRoleV1, RunRecordArchiveNamespaceV1, RunRecordCostV1, RunRecordDownloadErrorV1, RunRecordFileStatusV1, RunRecordManifestV1, RunRecordMetadataV1, RunRecordNamespaceV1, RunRecordSubmissionSnapshotV1, RunRecordV1, RunEvent, RuntimeManifest, RuntimeProvider, SignedOutputLink, Skill as SkillRecord, UsageSummary, WhoAmI } from "./_contracts/index.js";
24
- export type { PlatformAnthropicSecrets as AnthropicSecrets, PlatformInlineSecrets as InlineSecrets, PlatformMcpServerSecret as McpServerSecret, PlatformProxyEndpoint, PlatformProxyEndpointAuth, PlatformProxyAuthValue as ProxyAuthValue, PlatformEnvironment as RunEnvironment, PlatformRunSubmissionRequest, ProxyAuthShape, ProxyMethod, ProxyResponseMode } from "./_contracts/index.js";
24
+ export type { PlatformInlineSecrets as InlineSecrets, PlatformMcpServerSecret as McpServerSecret, PlatformProxyEndpoint, PlatformProxyEndpointAuth, PlatformProxyAuthValue as ProxyAuthValue, PlatformEnvironment as RunEnvironment, PlatformRunSubmissionRequest, ProxyAuthShape, ProxyMethod, ProxyResponseMode } from "./_contracts/index.js";
25
25
  export { CUSTODY_MANIFEST_SCHEMA_VERSION, RUN_RECORD_MANIFEST_SCHEMA_VERSION, RUN_RECORD_SCHEMA_VERSION, DEFAULT_RUNTIME_SIZE, RUNTIME_SIZE_PRESETS, RUNTIME_SIZES, RuntimeSizes } from "./_contracts/index.js";
26
26
  export type { RuntimeResources, RuntimeSize } from "./_contracts/index.js";
27
27
  export { CREDENTIAL_MODES, DEFAULT_CREDENTIAL_MODE, collectManagedUnsupportedFeatures, DEFAULT_RUN_PROVIDER, RUN_PROVIDERS, RUNTIME_KINDS, RUNTIME_VALIDATION_CODES, RuntimeValidationError, selectRuntime } from "./_contracts/index.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAYvF,yBAAyB;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGhE,SAAS;AACT,OAAO,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,yBAAyB;AACzB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AA0D1B,oEAAoE;AACpE,6EAA6E;AAC7E,6DAA6D;AAC7D,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACb,MAAM,kBAAkB,CAAC;AAG1B,gEAAgE;AAChE,mEAAmE;AACnE,sDAAsD;AACtD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,iCAAiC,EACjC,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAQ1B,sCAAsC;AACtC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,KAAK,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAYvF,yBAAyB;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGhE,SAAS;AACT,OAAO,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,yBAAyB;AACzB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAyD1B,oEAAoE;AACpE,6EAA6E;AAC7E,6DAA6D;AAC7D,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACb,MAAM,kBAAkB,CAAC;AAG1B,gEAAgE;AAChE,mEAAmE;AACnE,sDAAsD;AACtD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,iCAAiC,EACjC,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAQ1B,sCAAsC;AACtC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,KAAK,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/version.d.ts CHANGED
@@ -6,4 +6,4 @@
6
6
  *
7
7
  * Used by the (future) User-Agent header on outbound SDK requests.
8
8
  */
9
- export declare const SDK_VERSION = "0.13.8";
9
+ export declare const SDK_VERSION = "0.13.10";
package/dist/version.js CHANGED
@@ -6,5 +6,5 @@
6
6
  *
7
7
  * Used by the (future) User-Agent header on outbound SDK requests.
8
8
  */
9
- export const SDK_VERSION = "0.13.8";
9
+ export const SDK_VERSION = "0.13.10";
10
10
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC"}
package/docs/cleanup.md CHANGED
@@ -18,7 +18,7 @@ retention field is rejected if supplied.
18
18
  const runId = await aex.submitRun({
19
19
  model: "claude-haiku-4-5",
20
20
  prompt: "...",
21
- secrets: { anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! } }
21
+ secrets: { apiKey: process.env.ANTHROPIC_API_KEY! }
22
22
  });
23
23
  ```
24
24
 
@@ -6,19 +6,15 @@ title: Credentials
6
6
 
7
7
  aex does not store provider keys or MCP credential values across runs.
8
8
 
9
- The caller passes a workspace-scoped SDK token and exactly one matching provider key inline on every `submitRun` call. aex holds the bundle in run-scoped custody for the run lifecycle and attempts terminal cleanup/revocation for the aex-controlled references. MCP credentials and proxy endpoint auth values travel the same way.
9
+ The caller passes a workspace-scoped SDK token and the provider key inline on every `submitRun` call. aex holds the bundle in run-scoped custody for the run lifecycle and attempts terminal cleanup/revocation for the aex-controlled references. MCP credentials and proxy endpoint auth values travel the same way.
10
10
 
11
- Provider keys are coupled to the submitted `provider`:
11
+ A run targets exactly one provider (selected by `provider`, default `anthropic`), so the key is a single flat field:
12
12
 
13
- | `provider` | Required secret |
13
+ | Field | Required secret |
14
14
  | --- | --- |
15
- | `anthropic` | `secrets.anthropic.apiKey` |
16
- | `deepseek` | `secrets.deepseek.apiKey` |
17
- | `openai` | `secrets.openai.apiKey` |
18
- | `gemini` | `secrets.gemini.apiKey` |
19
- | `mistral` | `secrets.mistral.apiKey` |
15
+ | Provider API key | `secrets.apiKey` |
20
16
 
21
- Supplying a key for any other provider is rejected at submission time.
17
+ The same `secrets.apiKey` carries the BYOK key for whichever `provider` the run selects.
22
18
 
23
19
  MCP credential types:
24
20
 
@@ -81,7 +77,7 @@ const runId = await aex.submitRun({
81
77
  prompt: "…",
82
78
  proxyEndpoints,
83
79
  secrets: {
84
- anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! },
80
+ apiKey: process.env.ANTHROPIC_API_KEY!,
85
81
  proxyEndpointAuth
86
82
  }
87
83
  });
@@ -117,7 +113,7 @@ const runId = await aex.submitRun({
117
113
  model: "claude-haiku-4-5",
118
114
  prompt: "…",
119
115
  proxyEndpoints,
120
- secrets: { anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! } }
116
+ secrets: { apiKey: process.env.ANTHROPIC_API_KEY! }
121
117
  });
122
118
  ```
123
119
 
package/docs/outputs.md CHANGED
@@ -12,7 +12,7 @@ Every run produces durable metadata (status, events, snapshots, cleanup state) a
12
12
  const runId = await aex.submitRun({
13
13
  model: "claude-haiku-4-5",
14
14
  prompt: "Produce a report and save it as a file.",
15
- secrets: { anthropic: { apiKey } }
15
+ secrets: { apiKey }
16
16
  });
17
17
 
18
18
  await aex.wait(runId);
@@ -18,8 +18,8 @@ Status vocabulary: `supported`, `live-unverified`, `rejected`.
18
18
 
19
19
  | Provider | Wire value | Status | Docs | Evidence |
20
20
  | --- | --- | --- | --- | --- |
21
- | [Anthropic](#anthropic) | `anthropic` | supported | [Credentials](credentials.md); [Events](events.md) | [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts); [Installed-SDK live user matrix](../../../apps/user-tests/test/live/live-sdk-comprehensive.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts) |
22
- | [DeepSeek](#deepseek) | `deepseek` | supported | [Credentials](credentials.md); [Events](events.md) | [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts); [Installed-SDK live user matrix](../../../apps/user-tests/test/live/live-sdk-comprehensive.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts) |
21
+ | [Anthropic](#anthropic) | `anthropic` | supported | [Credentials](credentials.md); [Events](events.md) | [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts); [Installed-SDK Anthropic live user test](../../../apps/user-tests/test/live/live-sdk-anthropic-managed.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts) |
22
+ | [DeepSeek](#deepseek) | `deepseek` | supported | [Credentials](credentials.md); [Events](events.md) | [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts); [Installed-SDK DeepSeek live user test](../../../apps/user-tests/test/live/live-sdk-deepseek.test.ts); [Installed-SDK DeepSeek comprehensive live user matrix](../../../apps/user-tests/test/live/live-sdk-comprehensive.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts) |
23
23
  | [OpenAI](#openai) | `openai` | live-unverified | [Credentials](credentials.md); [Events](events.md) | [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts) |
24
24
  | [Gemini](#gemini) | `gemini` | live-unverified | [Credentials](credentials.md); [Events](events.md) | [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts) |
25
25
  | [Mistral](#mistral) | `mistral` | live-unverified | [Credentials](credentials.md); [Events](events.md) | [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts) |
@@ -38,8 +38,8 @@ Status vocabulary: `supported`, `live-unverified`, `rejected`.
38
38
 
39
39
  | Provider | Runtime | Status | Ownership | Enforcement path | Evidence |
40
40
  | --- | --- | --- | --- | --- | --- |
41
- | `anthropic` | `managed` | supported | supported | submission parser + managed dispatch | [Installed-SDK live user matrix](../../../apps/user-tests/test/live/live-sdk-comprehensive.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts) |
42
- | `deepseek` | `managed` | supported | supported | submission parser + managed dispatch | [Installed-SDK live user matrix](../../../apps/user-tests/test/live/live-sdk-comprehensive.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts) |
41
+ | `anthropic` | `managed` | supported | supported | submission parser + managed dispatch | [Installed-SDK Anthropic live user test](../../../apps/user-tests/test/live/live-sdk-anthropic-managed.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts) |
42
+ | `deepseek` | `managed` | supported | supported | submission parser + managed dispatch | [Installed-SDK DeepSeek live user test](../../../apps/user-tests/test/live/live-sdk-deepseek.test.ts); [Installed-SDK DeepSeek comprehensive live user matrix](../../../apps/user-tests/test/live/live-sdk-comprehensive.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts) |
43
43
  | `openai` | `managed` | live-unverified | live-unverified | submission parser + managed dispatch | [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts) |
44
44
  | `gemini` | `managed` | live-unverified | live-unverified | submission parser + managed dispatch | [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts) |
45
45
  | `mistral` | `managed` | live-unverified | live-unverified | submission parser + managed dispatch | [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts) |
@@ -68,7 +68,7 @@ Notes:
68
68
  - Public status: supported
69
69
  - Auto route: `managed`
70
70
  - Docs: [Credentials](credentials.md); [Events](events.md)
71
- - Evidence: [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts); [Installed-SDK live user matrix](../../../apps/user-tests/test/live/live-sdk-comprehensive.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts)
71
+ - Evidence: [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts); [Installed-SDK Anthropic live user test](../../../apps/user-tests/test/live/live-sdk-anthropic-managed.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts)
72
72
 
73
73
  ### DeepSeek
74
74
 
@@ -76,7 +76,7 @@ Notes:
76
76
  - Public status: supported
77
77
  - Auto route: `managed`
78
78
  - Docs: [Credentials](credentials.md); [Events](events.md)
79
- - Evidence: [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts); [Installed-SDK live user matrix](../../../apps/user-tests/test/live/live-sdk-comprehensive.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts)
79
+ - Evidence: [Submission parser and routing parity](../../contracts/test/submission.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts); [Generated matrix freshness](../../../scripts/validate/capability-matrix.test.ts); [Installed-SDK DeepSeek live user test](../../../apps/user-tests/test/live/live-sdk-deepseek.test.ts); [Installed-SDK DeepSeek comprehensive live user matrix](../../../apps/user-tests/test/live/live-sdk-comprehensive.test.ts); [Runtime support validator](../../contracts/test/runtime-support.test.ts)
80
80
 
81
81
  ### OpenAI
82
82
 
@@ -19,7 +19,7 @@ const aex = new AgentExecutor({
19
19
  const runId = await aex.submitRun({
20
20
  model: "claude-haiku-4-5",
21
21
  prompt: "Write a short answer about agent-first SDK design.",
22
- secrets: { anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! } }
22
+ secrets: { apiKey: process.env.ANTHROPIC_API_KEY! }
23
23
  });
24
24
 
25
25
  const run = await aex.wait(runId);
@@ -39,7 +39,7 @@ function summarise(topic: string) {
39
39
 
40
40
  const runId = await aex.submitRun({
41
41
  ...summarise("agent-first SDK design"),
42
- secrets: { anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! } }
42
+ secrets: { apiKey: process.env.ANTHROPIC_API_KEY! }
43
43
  });
44
44
  ```
45
45
 
@@ -65,7 +65,7 @@ Every kind of thing you want to ship at run time has exactly one right primitive
65
65
  | Non-secret paths or config (`BROLL_STORE`, mode flags) | `environment.envVars` | Mounted as `RUNTIME.env` / `RUNTIME.json`; `__KEY__` substitution in agent-facing markdown; echoed back as `run.runtimeManifest.envVars` |
66
66
  | Upstream HTTPS API keys (TMDB, Brave, Tavily, …) | `ProxyEndpoint` | Credentials live server-side; aex proxy injects them on outbound calls. The key never enters the container. |
67
67
  | MCP server credentials | `secrets.mcpServers` | Held in run-scoped custody, attached per run |
68
- | Provider API key | `secrets.<provider>.apiKey` | Required on every `submitRun`; held in run-scoped custody, matching `provider` |
68
+ | Provider API key | `secrets.apiKey` | Required on every `submitRun`; held in run-scoped custody. Carries the BYOK key for the selected `provider` |
69
69
  | Non-secret reference data folders (transcripts, persona docs, PDFs) | `File.fromPath('./customer-folder/')` | Materialized under `files/<f_id>/<name>` in the run workspace by default and described in the agent-facing instructions |
70
70
  | Executable skill code (a `.pyz` wrapper, scripts, prompts) | `Skill.fromPath('./skills/my-skill/')` | Mounted under `skills/<name>/`; the bundle's `SKILL.md` is composed into the agent's instructions |
71
71
  | Agent instructions file | `AgentsMd.fromPath('./AGENTS.md')` | Prepended as the first user turn |
@@ -96,7 +96,7 @@ async function submitWithRetry() {
96
96
  model: "claude-haiku-4-5",
97
97
  prompt: "...",
98
98
  idempotencyKey,
99
- secrets: { anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! } }
99
+ secrets: { apiKey: process.env.ANTHROPIC_API_KEY! }
100
100
  });
101
101
  } catch (err) {
102
102
  if (err instanceof Error && err.message.includes("network")) continue;
package/docs/release.md CHANGED
@@ -12,16 +12,18 @@ repository on a clean `main` branch unless tags are added deliberately later.
12
12
 
13
13
  ## How to ship a release
14
14
 
15
- 1. Bump both `packages/sdk/package.json#version` and
16
- `packages/sdk/src/version.ts` to the next semver.
15
+ 1. Bump the publishable package manifests to the next shared semver:
16
+ `packages/contracts/package.json`, `packages/conformance/package.json`,
17
+ `packages/cli/package.json`, and `packages/sdk/package.json`. Also update
18
+ `packages/sdk/src/version.ts` to match.
17
19
  2. Land the change on `main` with any companion code or docs.
18
20
  3. Confirm CI is green.
19
21
  4. Run the **Release** workflow from `main` and choose the npm dist-tag
20
22
  (`latest` or `next`).
21
23
 
22
- If `@aexhq/sdk@<version>` already exists on npm, the release workflow fails before
23
- publishing. A failed release is fixed by bumping to a higher version and running
24
- the workflow again.
24
+ If any package at `<version>` already exists on npm, the release workflow fails
25
+ before publishing. A failed release is fixed by bumping to a higher version and
26
+ running the workflow again.
25
27
 
26
28
  ## Release pipeline
27
29
 
@@ -29,7 +31,9 @@ The workflow has two jobs:
29
31
 
30
32
  1. **`publish`** runs on Ubuntu in the protected `npm-release` environment:
31
33
  - `pnpm install --frozen-lockfile`
32
- - npm version availability check for `packages/sdk/package.json#version`
34
+ - npm version availability checks for `@aexhq/contracts`,
35
+ `@aexhq/conformance`, `@aexhq/cli`, and `@aexhq/sdk` at
36
+ `packages/sdk/package.json#version`
33
37
  - `pnpm lint`
34
38
  - `pnpm test`
35
39
  - `pnpm run docs:build`
@@ -37,7 +41,8 @@ The workflow has two jobs:
37
41
  - `pnpm --filter @aexhq/sdk pack`
38
42
  - `pnpm run test:user:offline` against the packed tarball
39
43
  - a final npm version availability check
40
- - `pnpm publish --provenance --no-git-checks --access public`
44
+ - `pnpm publish --provenance --no-git-checks --access public` for
45
+ `@aexhq/contracts`, `@aexhq/conformance`, `@aexhq/cli`, and `@aexhq/sdk`
41
46
  2. **`post-publish-user-tests`** waits for npm registry visibility, then runs
42
47
  `pnpm run test:user:offline` against the published version on Ubuntu and
43
48
  Windows.
@@ -69,17 +74,18 @@ with no workspace access:
69
74
 
70
75
  ## Repository setup
71
76
 
72
- Configure npm Trusted Publishing for this repository:
77
+ Set `NPM_TOKEN` in the protected GitHub `npm-release` environment. The token must
78
+ have publish rights for all four packages. The workflow still publishes with
79
+ provenance.
80
+
81
+ Trusted Publishing can replace the token after every package exists on npm and
82
+ the trusted publisher is configured for each package:
73
83
 
74
84
  - **Organization or user**: `aexhq`
75
85
  - **Repository**: `aex`
76
86
  - **Workflow filename**: `release.yml`
77
87
  - **Environment name**: `npm-release`
78
88
 
79
- Protect the GitHub `npm-release` environment with the reviewers or deployment
80
- rules you want before enabling real publishes. No `NPM_TOKEN` secret is
81
- required when Trusted Publishing is configured.
82
-
83
89
  ## Local checklist
84
90
 
85
91
  Before dispatching a release, the same public-safe checks can be run locally:
@@ -36,7 +36,7 @@ function summarise(topic: string) {
36
36
 
37
37
  await aex.submitRun({
38
38
  ...summarise("agent-first SDK design"),
39
- secrets: { anthropic: { apiKey } }
39
+ secrets: { apiKey }
40
40
  });
41
41
  ```
42
42
 
package/docs/skills.md CHANGED
@@ -45,7 +45,7 @@ const aex = new AgentExecutor({ apiToken });
45
45
  await aex.submitRun({
46
46
  model, prompt,
47
47
  skills: [await Skill.fromFiles({ name: "rules", files })],
48
- secrets: { anthropic: { apiKey } }
48
+ secrets: { apiKey }
49
49
  });
50
50
  ```
51
51
 
@@ -110,7 +110,7 @@ await aex.submitRun({
110
110
  skills: [
111
111
  await Skill.fromUrl(signedUrl, { name: "rules", sha256: "sha256:<hex>" })
112
112
  ],
113
- secrets: { anthropic: { apiKey } }
113
+ secrets: { apiKey }
114
114
  });
115
115
  ```
116
116
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aexhq/sdk",
3
- "version": "0.13.8",
3
+ "version": "0.13.10",
4
4
  "description": "TypeScript SDK for running autonomous agent sessions across providers (Anthropic, OpenAI, DeepSeek, Gemini, Mistral) behind one interface.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -26,7 +26,7 @@
26
26
  "examples"
27
27
  ],
28
28
  "devDependencies": {
29
- "@aexhq/contracts": "0.13.8"
29
+ "@aexhq/contracts": "0.13.10"
30
30
  },
31
31
  "engines": {
32
32
  "node": ">=20"