@aexhq/sdk 0.13.10 → 0.15.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/README.md CHANGED
@@ -30,6 +30,7 @@ aex cancel <run-id> --api-token …
30
30
  aex delete <run-id> --api-token …
31
31
  aex whoami --api-token …
32
32
  aex skills <upload|list|get|delete> [flags] --api-token …
33
+ aex delete-asset <assetId|hash> --api-token …
33
34
  ```
34
35
 
35
36
  The SDK class and the CLI are backed by the same public `@aexhq/contracts` operations module — any read or write you can do through one, you can do through the other, against the same durable run records. The same npm package also ships the in-container `aex` CLI as its `bin` entry; managed runs mount that CLI inside the runner so skills can call `aex proxy …` against the per-run manifest. See [product capabilities and boundaries](docs/product-boundaries.md).
@@ -102,7 +103,7 @@ Stream events live with `aex.stream(runId)`:
102
103
 
103
104
  ```ts
104
105
  for await (const event of aex.stream(runId)) {
105
- if (event.type === "agent.message") {
106
+ if (event.type === "TEXT_MESSAGE_CONTENT") {
106
107
  // typed event helpers live under `aex`'s event guard exports.
107
108
  }
108
109
  }
@@ -428,9 +428,11 @@ export function rejectStdioMcpShape(record) {
428
428
  /**
429
429
  * Reasons an IP-literal host should be refused. Returns null when the
430
430
  * literal is a routable public address (or not an IP literal at all — name
431
- * resolution is the caller's concern). Single source of truth for the
432
- * numeric-range deny-list so the shared MCP parser, the Worker BYOK proxy
433
- * handlers, and `submission.parseProxyBaseUrl` classify the same bytes.
431
+ * resolution is the caller's concern). This in-package copy of the
432
+ * numeric-range deny-list is kept byte-identical to
433
+ * platform/packages/shared/src/blueprint.ts by the contract-parity gate, so
434
+ * the shared MCP parser, the Worker BYOK proxy handlers, and
435
+ * `submission.parseProxyBaseUrl` all classify the same bytes.
434
436
  *
435
437
  * `host` is the already-bracket-stripped, lowercased hostname.
436
438
  *
package/dist/client.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { HttpClient, type AexEvent, type AgentsMdRecord, type CredentialMode, type DebugSink, type FetchLike, type FileRecord, type Output, type OutputMode, type PlatformSubmission, type PlatformInlineSecrets, type PlatformProxyEndpoint, type PlatformProxyEndpointAuth, type Run, type RunEvent, type RunProvider, type RunUnit, type RuntimeSize, type RuntimeKind, type SignedOutputLink, type Skill as SkillRecord, type WhoAmI } from "./_contracts/index.js";
2
2
  import { AgentsMd } from "./agents-md.js";
3
+ import { type UploadedAsset } from "./asset-upload.js";
3
4
  import { File } from "./file.js";
4
5
  import { McpServer } from "./mcp-server.js";
5
6
  import { ProxyEndpoint } from "./proxy-endpoint.js";
@@ -275,10 +276,10 @@ export declare class AgentExecutor {
275
276
  * NOTE (tech-debt): this is part of the legacy workspace-skill upload
276
277
  * surface (`SkillsClient` + `operations.createSkillBundle` + the TUS
277
278
  * chunked path in asset-upload.ts). The live submit path materializes
278
- * inline skills via `uploadAsset` instead; `Skill` no longer
279
- * exposes `.upload()`/`.fromId()`. This surface is retained pending a
280
- * deliberate deprecation pass (it still threads into the CLI host
281
- * commands), tracked in the remediation plan as item 4a.
279
+ * inline skills via `uploadAsset` instead; `Skill.upload(client)`
280
+ * pre-stages a draft explicitly for reuse. This surface is retained
281
+ * pending a deliberate deprecation pass (it still threads into the CLI
282
+ * host commands), tracked in the remediation plan as item 4a.
282
283
  */
283
284
  _uploadSkillBundle(args: {
284
285
  readonly name: string;
@@ -302,6 +303,17 @@ export declare class AgentExecutor {
302
303
  readonly name: string;
303
304
  readonly bytes: Uint8Array;
304
305
  }): Promise<FileRecord>;
306
+ /**
307
+ * Internal: materialize raw bytes to the content-addressable asset store
308
+ * (`/assets/presign` → PUT → `/assets/finalize`). Used by `Skill.upload(this)`
309
+ * to pre-upload a draft skill bundle so a later run carries only a plain
310
+ * `kind:"asset"` ref. NOT part of the public API.
311
+ */
312
+ _uploadAsset(args: {
313
+ readonly bytes: Uint8Array;
314
+ readonly hash: string;
315
+ readonly contentType?: string;
316
+ }): Promise<UploadedAsset>;
305
317
  /**
306
318
  * Submit a run and wait for it to reach a terminal state. Returns the
307
319
  * final `Run` record. For long-running flows, prefer `submitRun` +
@@ -317,15 +329,12 @@ export declare class AgentExecutor {
317
329
  * before sending so credentials never enter the hashed submission or
318
330
  * the run snapshot.
319
331
  *
320
- * Unstaged inline skills (`Skill.fromFiles` / `Skill.fromPath`
321
- * without a prior `.upload`) are accepted: the SDK switches to a
322
- * multipart body that carries the canonical zip bytes alongside the
323
- * JSON submission. The dashboard BFF ingests each one through the
324
- * standard workspace-skill upload pipeline (dedup by content hash;
325
- * upload via the existing two-phase pending ready flow) and
326
- * rewrites the run's `skills[]` to reference the resulting `skl_*`
327
- * ids. The bytes persist on aex; the user can browse and
328
- * download the resulting workspace skill from the dashboard.
332
+ * Unstaged inline skills / agentsMd / files (`Skill.fromFiles` /
333
+ * `Skill.fromPath` / `AgentsMd.fromContent` / `File.fromBytes` without a
334
+ * prior `.upload`) are auto-uploaded to the content-addressable asset
335
+ * store (`/assets/presign` PUT `/assets/finalize`) before `POST /runs`,
336
+ * deduped by content hash, and referenced in the submission as plain
337
+ * `{ kind:"asset" }` refs identical to a pre-staged `.upload(client)`.
329
338
  */
330
339
  submitRun(options: SubmitRunOptions): Promise<string>;
331
340
  getRun(runId: string): Promise<Run>;