@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/README.md +2 -2
- package/dist/_contracts/internal.d.ts +1 -0
- package/dist/_contracts/internal.js +8 -0
- package/dist/_contracts/provider-support.d.ts +12 -6
- package/dist/_contracts/provider-support.js +25 -8
- package/dist/_contracts/submission.d.ts +37 -28
- package/dist/_contracts/submission.js +33 -70
- package/dist/cli.mjs +26 -12
- package/dist/cli.mjs.sha256 +1 -1
- package/dist/client.d.ts +7 -6
- package/dist/client.js +364 -51
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/docs/cleanup.md +1 -1
- package/docs/credentials.md +7 -11
- package/docs/outputs.md +1 -1
- package/docs/provider-runtime-capabilities.md +6 -6
- package/docs/quickstart.md +4 -4
- package/docs/release.md +18 -12
- package/docs/run-config.md +1 -1
- package/docs/skills.md +2 -2
- package/package.json +2 -2
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 {
|
|
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;
|
|
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
package/dist/version.js
CHANGED
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,
|
|
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: {
|
|
21
|
+
secrets: { apiKey: process.env.ANTHROPIC_API_KEY! }
|
|
22
22
|
});
|
|
23
23
|
```
|
|
24
24
|
|
package/docs/credentials.md
CHANGED
|
@@ -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
|
|
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
|
-
|
|
11
|
+
A run targets exactly one provider (selected by `provider`, default `anthropic`), so the key is a single flat field:
|
|
12
12
|
|
|
13
|
-
|
|
|
13
|
+
| Field | Required secret |
|
|
14
14
|
| --- | --- |
|
|
15
|
-
|
|
|
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
|
-
|
|
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
|
-
|
|
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: {
|
|
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: {
|
|
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
|
|
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
|
|
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
|
|
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
|
|
package/docs/quickstart.md
CHANGED
|
@@ -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: {
|
|
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: {
|
|
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
|
|
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: {
|
|
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
|
|
16
|
-
`packages/
|
|
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
|
|
23
|
-
publishing. A failed release is fixed by bumping to a higher version and
|
|
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
|
|
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
|
-
|
|
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:
|
package/docs/run-config.md
CHANGED
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: {
|
|
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: {
|
|
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.
|
|
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.
|
|
29
|
+
"@aexhq/contracts": "0.13.10"
|
|
30
30
|
},
|
|
31
31
|
"engines": {
|
|
32
32
|
"node": ">=20"
|