@aexhq/sdk 0.38.1 → 0.40.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.
Files changed (100) hide show
  1. package/README.md +23 -17
  2. package/dist/_contracts/api-key.d.ts +49 -0
  3. package/dist/_contracts/api-key.js +87 -0
  4. package/dist/_contracts/bundle-manifest.d.ts +86 -0
  5. package/dist/_contracts/bundle-manifest.js +157 -0
  6. package/dist/_contracts/error-codes.d.ts +26 -0
  7. package/dist/_contracts/error-codes.js +79 -0
  8. package/dist/_contracts/error-factory.d.ts +32 -0
  9. package/dist/_contracts/error-factory.js +142 -0
  10. package/dist/_contracts/event-envelope.d.ts +33 -10
  11. package/dist/_contracts/event-envelope.js +46 -10
  12. package/dist/_contracts/event-view.d.ts +123 -0
  13. package/dist/_contracts/event-view.js +120 -0
  14. package/dist/_contracts/http.js +12 -3
  15. package/dist/_contracts/index.d.ts +8 -4
  16. package/dist/_contracts/index.js +11 -7
  17. package/dist/_contracts/models.d.ts +15 -0
  18. package/dist/_contracts/models.js +33 -0
  19. package/dist/_contracts/operations.d.ts +70 -2
  20. package/dist/_contracts/operations.js +143 -7
  21. package/dist/_contracts/run-config.d.ts +35 -10
  22. package/dist/_contracts/run-config.js +17 -5
  23. package/dist/_contracts/run-record.d.ts +3 -2
  24. package/dist/_contracts/runtime-types.d.ts +148 -36
  25. package/dist/_contracts/runtime-types.js +33 -1
  26. package/dist/_contracts/sdk-errors.d.ts +61 -2
  27. package/dist/_contracts/sdk-errors.js +83 -3
  28. package/dist/_contracts/sdk-secrets.js +31 -6
  29. package/dist/_contracts/stable.d.ts +14 -0
  30. package/dist/_contracts/stable.js +14 -0
  31. package/dist/_contracts/status.d.ts +28 -1
  32. package/dist/_contracts/status.js +48 -3
  33. package/dist/_contracts/submission.d.ts +157 -14
  34. package/dist/_contracts/submission.js +319 -55
  35. package/dist/_contracts/suggest.d.ts +15 -0
  36. package/dist/_contracts/suggest.js +54 -0
  37. package/dist/asset-upload.d.ts +27 -1
  38. package/dist/asset-upload.js +219 -4
  39. package/dist/asset-upload.js.map +1 -1
  40. package/dist/bundle.d.ts +23 -14
  41. package/dist/bundle.js +39 -20
  42. package/dist/bundle.js.map +1 -1
  43. package/dist/canonical-zip.d.ts +68 -0
  44. package/dist/canonical-zip.js +307 -0
  45. package/dist/canonical-zip.js.map +1 -0
  46. package/dist/cli.mjs +1927 -326
  47. package/dist/cli.mjs.sha256 +1 -1
  48. package/dist/client.d.ts +273 -70
  49. package/dist/client.js +885 -335
  50. package/dist/client.js.map +1 -1
  51. package/dist/fetch-archive.js +14 -14
  52. package/dist/fetch-archive.js.map +1 -1
  53. package/dist/file.d.ts +33 -6
  54. package/dist/file.js +120 -54
  55. package/dist/file.js.map +1 -1
  56. package/dist/index.d.ts +23 -14
  57. package/dist/index.js +31 -14
  58. package/dist/index.js.map +1 -1
  59. package/dist/node-fs.d.ts +26 -9
  60. package/dist/node-fs.js +13 -38
  61. package/dist/node-fs.js.map +1 -1
  62. package/dist/node-walk.d.ts +69 -0
  63. package/dist/node-walk.js +146 -0
  64. package/dist/node-walk.js.map +1 -0
  65. package/dist/retry.d.ts +9 -13
  66. package/dist/retry.js +18 -17
  67. package/dist/retry.js.map +1 -1
  68. package/dist/skill.d.ts +151 -0
  69. package/dist/skill.js +298 -0
  70. package/dist/skill.js.map +1 -0
  71. package/dist/tool.d.ts +14 -2
  72. package/dist/tool.js +33 -7
  73. package/dist/tool.js.map +1 -1
  74. package/dist/version.d.ts +1 -1
  75. package/dist/version.js +1 -1
  76. package/docs/authentication.md +29 -5
  77. package/docs/billing.md +6 -0
  78. package/docs/concepts/agent-tools.md +11 -0
  79. package/docs/concepts/composition.md +3 -3
  80. package/docs/defaults.md +1 -0
  81. package/docs/errors.md +64 -4
  82. package/docs/events.md +84 -49
  83. package/docs/limits-and-quotas.md +24 -0
  84. package/docs/mcp.md +3 -2
  85. package/docs/networking.md +7 -1
  86. package/docs/outputs.md +36 -7
  87. package/docs/provider-runtime-capabilities.md +1 -1
  88. package/docs/quickstart.md +17 -7
  89. package/docs/run-config.md +3 -3
  90. package/docs/secrets.md +14 -0
  91. package/docs/skills.md +74 -44
  92. package/docs/vision-skills.md +3 -3
  93. package/examples/feature-tour.ts +4 -6
  94. package/examples/spike-settle-latency.ts +125 -0
  95. package/package.json +4 -3
  96. package/dist/_contracts/event-guards.d.ts +0 -67
  97. package/dist/_contracts/event-guards.js +0 -36
  98. package/dist/skill-tool.d.ts +0 -102
  99. package/dist/skill-tool.js +0 -190
  100. package/dist/skill-tool.js.map +0 -1
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Node/Bun-only directory walk with fidelity capture + `.aexignore` filtering.
3
+ *
4
+ * Shared by `File.fromPath` (customer files) and `readDirectoryWithFidelity`
5
+ * (skills/tools). Captures, in ONE deterministic walk:
6
+ * - regular files (bytes),
7
+ * - executable bits (`mode & 0o111` → normalised 0o755 bucket, listed in `exec`),
8
+ * - symlinks (raw `readlink` target, verbatim — the SDK captures faithfully; the
9
+ * container restore decides whether a target may be recreated),
10
+ * - dropped non-regular files (FIFO / socket / char / block device) — never
11
+ * silently vanished, surfaced in `dropped`.
12
+ *
13
+ * Ignore semantics are gitignore-compatible via the `ignore` package: always-on
14
+ * built-in {@link DEFAULT_IGNORES} (`.git/`, `node_modules/`, …), `.gitignore`
15
+ * honored only when opted in, root `.aexignore` on by default and highest
16
+ * precedence, plus programmatic `extraPatterns`. The ignored SET is a pure
17
+ * function of the layered patterns + the sorted path list, so the resulting
18
+ * bundle is deterministic. An ignored directory is pruned wholesale (never
19
+ * descended) — `node_modules` is never walked.
20
+ *
21
+ * Node-only: imports `node:fs` + `ignore`. Browser callers pass pre-built maps to
22
+ * the bundlers and never reach this module.
23
+ */
24
+ import { type BundleSymlink } from "./_contracts/index.js";
25
+ /** Caller-facing ignore controls, threaded from `File.fromPath` / `Tool.fromPath` / skill factories. */
26
+ export interface IgnoreOptions {
27
+ /** Apply the always-on built-in {@link DEFAULT_IGNORES}. Default true. */
28
+ readonly useDefaults?: boolean;
29
+ /** Also honor the root `.gitignore`. Default false (least-surprise: no silent data loss). */
30
+ readonly useGitignore?: boolean;
31
+ /** Honor the root `.aexignore`. Default true. */
32
+ readonly useAexignore?: boolean;
33
+ /** Extra patterns appended LAST (highest precedence). */
34
+ readonly extraPatterns?: readonly string[];
35
+ }
36
+ /**
37
+ * Always-on ignore defaults (unless `useDefaults:false`): VCS metadata, dependency
38
+ * caches, editor/OS cruft, plus the two aex control files (`.aexignore` and the
39
+ * reserved sidecar). `.gitignore` itself is real repo content and is NOT excluded.
40
+ */
41
+ export declare const DEFAULT_IGNORES: readonly string[];
42
+ export interface WalkedEntry {
43
+ /** Forward-slash bundle-relative path. */
44
+ readonly rel: string;
45
+ /** Absolute on-disk path (for lazy reads on the streaming path). */
46
+ readonly absPath: string;
47
+ /** Raw byte size from `stat` (drives the small-vs-streaming path decision). */
48
+ readonly size: number;
49
+ }
50
+ export interface WalkResult {
51
+ /** Regular-file descriptors (bytes NOT yet read), globally sorted by `rel`. */
52
+ readonly entries: WalkedEntry[];
53
+ /** Bundle-relative paths that restore executable (0o755). Sorted. */
54
+ readonly exec: string[];
55
+ /** Captured symlinks (raw target). Sorted by path. */
56
+ readonly symlinks: BundleSymlink[];
57
+ /** Non-regular files skipped (FIFO/socket/device), for a non-silent summary. Sorted. */
58
+ readonly dropped: string[];
59
+ /** Count of files/dirs excluded by the ignore layers (surfaced, not silent). */
60
+ readonly ignoredCount: number;
61
+ /** Sum of `entries[i].size` — the total raw input size. */
62
+ readonly totalSize: number;
63
+ }
64
+ /**
65
+ * Walk `rootDir`, capturing files + fidelity metadata + applying the ignore
66
+ * layers. Deterministic: each directory level is read then processed in sorted
67
+ * order, and the returned metadata arrays are sorted.
68
+ */
69
+ export declare function walkDirectory(rootDir: string, options?: IgnoreOptions): Promise<WalkResult>;
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Node/Bun-only directory walk with fidelity capture + `.aexignore` filtering.
3
+ *
4
+ * Shared by `File.fromPath` (customer files) and `readDirectoryWithFidelity`
5
+ * (skills/tools). Captures, in ONE deterministic walk:
6
+ * - regular files (bytes),
7
+ * - executable bits (`mode & 0o111` → normalised 0o755 bucket, listed in `exec`),
8
+ * - symlinks (raw `readlink` target, verbatim — the SDK captures faithfully; the
9
+ * container restore decides whether a target may be recreated),
10
+ * - dropped non-regular files (FIFO / socket / char / block device) — never
11
+ * silently vanished, surfaced in `dropped`.
12
+ *
13
+ * Ignore semantics are gitignore-compatible via the `ignore` package: always-on
14
+ * built-in {@link DEFAULT_IGNORES} (`.git/`, `node_modules/`, …), `.gitignore`
15
+ * honored only when opted in, root `.aexignore` on by default and highest
16
+ * precedence, plus programmatic `extraPatterns`. The ignored SET is a pure
17
+ * function of the layered patterns + the sorted path list, so the resulting
18
+ * bundle is deterministic. An ignored directory is pruned wholesale (never
19
+ * descended) — `node_modules` is never walked.
20
+ *
21
+ * Node-only: imports `node:fs` + `ignore`. Browser callers pass pre-built maps to
22
+ * the bundlers and never reach this module.
23
+ */
24
+ import { readFile, readdir, readlink, stat } from "node:fs/promises";
25
+ import { join, posix, relative, sep } from "node:path";
26
+ import ignore from "ignore";
27
+ import { MAX_SYMLINK_TARGET_LENGTH, RESERVED_META_ENTRY } from "./_contracts/index.js";
28
+ /**
29
+ * Always-on ignore defaults (unless `useDefaults:false`): VCS metadata, dependency
30
+ * caches, editor/OS cruft, plus the two aex control files (`.aexignore` and the
31
+ * reserved sidecar). `.gitignore` itself is real repo content and is NOT excluded.
32
+ */
33
+ export const DEFAULT_IGNORES = [
34
+ ".git/",
35
+ ".hg/",
36
+ ".svn/",
37
+ "node_modules/",
38
+ "__pycache__/",
39
+ "*.pyc",
40
+ "*.pyo",
41
+ ".DS_Store",
42
+ "Thumbs.db"
43
+ ];
44
+ /** aex control files always excluded from bundle content (regardless of `useDefaults`). */
45
+ const CONTROL_IGNORES = [".aexignore", RESERVED_META_ENTRY];
46
+ /** Read a root-level ignore control file's patterns (CRLF-normalised), or [] when absent. */
47
+ async function readIgnoreFile(rootDir, name) {
48
+ try {
49
+ const raw = await readFile(join(rootDir, name), "utf8");
50
+ return raw.replace(/\r\n/g, "\n").split("\n");
51
+ }
52
+ catch {
53
+ return [];
54
+ }
55
+ }
56
+ /** Build the layered ignore matcher (last layer wins, git semantics). */
57
+ async function buildIgnore(rootDir, options) {
58
+ const ig = ignore();
59
+ if (options?.useDefaults !== false)
60
+ ig.add([...DEFAULT_IGNORES]);
61
+ ig.add([...CONTROL_IGNORES]);
62
+ if (options?.useGitignore === true)
63
+ ig.add(await readIgnoreFile(rootDir, ".gitignore"));
64
+ if (options?.useAexignore !== false)
65
+ ig.add(await readIgnoreFile(rootDir, ".aexignore"));
66
+ if (options?.extraPatterns && options.extraPatterns.length > 0)
67
+ ig.add([...options.extraPatterns]);
68
+ return ig;
69
+ }
70
+ function toPosixRel(rootDir, full) {
71
+ const rel = relative(rootDir, full);
72
+ return sep === "/" ? rel : rel.split(sep).join(posix.sep);
73
+ }
74
+ /**
75
+ * Walk `rootDir`, capturing files + fidelity metadata + applying the ignore
76
+ * layers. Deterministic: each directory level is read then processed in sorted
77
+ * order, and the returned metadata arrays are sorted.
78
+ */
79
+ export async function walkDirectory(rootDir, options) {
80
+ const ig = await buildIgnore(rootDir, options);
81
+ const entries = [];
82
+ const exec = [];
83
+ const symlinks = [];
84
+ const dropped = [];
85
+ let ignoredCount = 0;
86
+ let totalSize = 0;
87
+ const visit = async (currentDir) => {
88
+ const dirents = await readdir(currentDir, { withFileTypes: true });
89
+ // Sort each level for a deterministic ignored-set + walk order.
90
+ dirents.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
91
+ for (const dirent of dirents) {
92
+ const full = join(currentDir, dirent.name);
93
+ const rel = toPosixRel(rootDir, full);
94
+ if (dirent.isSymbolicLink()) {
95
+ if (ig.ignores(rel)) {
96
+ ignoredCount += 1;
97
+ continue;
98
+ }
99
+ const target = await readlink(full);
100
+ if (target.includes("\0")) {
101
+ throw new Error(`File.fromPath: symlink ${JSON.stringify(rel)} target contains a NUL byte`);
102
+ }
103
+ if (target.length > MAX_SYMLINK_TARGET_LENGTH) {
104
+ throw new Error(`File.fromPath: symlink ${JSON.stringify(rel)} target exceeds ${MAX_SYMLINK_TARGET_LENGTH} bytes`);
105
+ }
106
+ symlinks.push({ path: rel, target });
107
+ continue;
108
+ }
109
+ if (dirent.isDirectory()) {
110
+ // Directory pruning (git-correct + fast): an ignored dir is never descended.
111
+ if (ig.ignores(`${rel}/`)) {
112
+ ignoredCount += 1;
113
+ continue;
114
+ }
115
+ await visit(full);
116
+ continue;
117
+ }
118
+ if (!dirent.isFile()) {
119
+ // FIFO / socket / char / block device — skipped, never silently vanished.
120
+ dropped.push(rel);
121
+ continue;
122
+ }
123
+ if (ig.ignores(rel)) {
124
+ ignoredCount += 1;
125
+ continue;
126
+ }
127
+ const st = await stat(full);
128
+ entries.push({ rel, absPath: full, size: st.size });
129
+ totalSize += st.size;
130
+ if ((st.mode & 0o111) !== 0)
131
+ exec.push(rel);
132
+ }
133
+ };
134
+ await visit(rootDir);
135
+ // Global lexicographic order (per-level sort is NOT globally sorted across the
136
+ // tree, e.g. `a.txt` vs `a/b.txt`), matching the canonical zip entry order.
137
+ entries.sort((a, b) => byString(a.rel, b.rel));
138
+ exec.sort(byString);
139
+ symlinks.sort((a, b) => byString(a.path, b.path));
140
+ dropped.sort(byString);
141
+ return { entries, exec, symlinks, dropped, ignoredCount, totalSize };
142
+ }
143
+ function byString(a, b) {
144
+ return a < b ? -1 : a > b ? 1 : 0;
145
+ }
146
+ //# sourceMappingURL=node-walk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-walk.js","sourceRoot":"","sources":["../src/node-walk.ts"],"names":[],"mappings":"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"}
package/dist/retry.d.ts CHANGED
@@ -19,7 +19,8 @@
19
19
  * supplies it) an upstream {@link ProviderFault}. All other exhausted retries
20
20
  * fall through to the transport's usual `AexApiError` / network rejection.
21
21
  */
22
- import { AexApiError, type FetchLike } from "./_contracts/index.js";
22
+ import { AexRateLimitError as AexRateLimitErrorBase, isRateLimited, type FetchLike } from "./_contracts/index.js";
23
+ export { isRateLimited };
23
24
  /**
24
25
  * HTTP statuses that are transient and worth retrying. The billable submits
25
26
  * carry an idempotency key, so re-issuing them is safe. Everything not in this
@@ -104,16 +105,14 @@ export interface ProviderFault {
104
105
  /** True when a {@link ProviderFault} represents a "back off and retry" signal. */
105
106
  export declare function isThrottleFault(fault: ProviderFault): boolean;
106
107
  /**
107
- * Structured throttle error. Extends {@link AexApiError} so existing
108
- * `catch (err instanceof AexApiError)` sites keep working, while callers that
109
- * want the details narrow with {@link isRateLimited} and read `retryAfterMs`,
110
- * `attempts`, `source`, and `providerFault`. The `message` is a fixed,
111
- * non-leaky summary it never echoes the raw error body (which is still
112
- * available, redacted, on `.body`).
108
+ * Structured throttle error. Extends the contracts {@link AexRateLimitErrorBase}
109
+ * (the SINGLE rate-limit class the wire→exception factory also throws, so
110
+ * `isRateLimited` recognises BOTH no split-brain) and enriches it with the
111
+ * retry-layer detail: `attempts`, `source`, and an upstream `providerFault`.
112
+ * `retryAfterMs` is inherited. The `message` is a fixed, non-leaky summary it
113
+ * never echoes the raw error body (which is still available, redacted, on `.body`).
113
114
  */
114
- export declare class AexRateLimitError extends AexApiError {
115
- /** Milliseconds the server/provider asked us to wait, when known. */
116
- readonly retryAfterMs?: number;
115
+ export declare class AexRateLimitError extends AexRateLimitErrorBase {
117
116
  /** How many attempts were made before giving up. */
118
117
  readonly attempts: number;
119
118
  /** Whether the throttle came from the aex API plane or the upstream provider. */
@@ -130,8 +129,6 @@ export declare class AexRateLimitError extends AexApiError {
130
129
  readonly message?: string;
131
130
  });
132
131
  }
133
- /** Type guard for {@link AexRateLimitError}. */
134
- export declare function isRateLimited(err: unknown): err is AexRateLimitError;
135
132
  /**
136
133
  * Best-effort parse of an unknown value into a {@link ProviderFault}. Tolerant
137
134
  * of two shapes so the SDK consumes the runtime fault the moment it starts
@@ -159,4 +156,3 @@ export interface RetryDeps {
159
156
  * an exhausted rate-limit/overloaded status, throws {@link AexRateLimitError}.
160
157
  */
161
158
  export declare function withRetry(fetchImpl: FetchLike, retry: RetryOptions | false | undefined, deps?: RetryDeps): FetchLike;
162
- export {};
package/dist/retry.js CHANGED
@@ -19,7 +19,11 @@
19
19
  * supplies it) an upstream {@link ProviderFault}. All other exhausted retries
20
20
  * fall through to the transport's usual `AexApiError` / network rejection.
21
21
  */
22
- import { AexApiError, AexNetworkError } from "./_contracts/index.js";
22
+ import { AexNetworkError, AexRateLimitError as AexRateLimitErrorBase, isRateLimited } from "./_contracts/index.js";
23
+ // The rate-limit guard is SINGLE-SOURCED in `@aexhq/contracts` (Wave 0 moved it
24
+ // there), so the wire→exception factory (`apiErrorFromResponse`) and this
25
+ // retry-layer error are recognised by the SAME `isRateLimited` — no split-brain.
26
+ export { isRateLimited };
23
27
  /**
24
28
  * HTTP statuses that are transient and worth retrying. The billable submits
25
29
  * carry an idempotency key, so re-issuing them is safe. Everything not in this
@@ -94,16 +98,14 @@ export function isThrottleFault(fault) {
94
98
  return THROTTLE_KINDS.has(fault.kind);
95
99
  }
96
100
  /**
97
- * Structured throttle error. Extends {@link AexApiError} so existing
98
- * `catch (err instanceof AexApiError)` sites keep working, while callers that
99
- * want the details narrow with {@link isRateLimited} and read `retryAfterMs`,
100
- * `attempts`, `source`, and `providerFault`. The `message` is a fixed,
101
- * non-leaky summary it never echoes the raw error body (which is still
102
- * available, redacted, on `.body`).
101
+ * Structured throttle error. Extends the contracts {@link AexRateLimitErrorBase}
102
+ * (the SINGLE rate-limit class the wire→exception factory also throws, so
103
+ * `isRateLimited` recognises BOTH no split-brain) and enriches it with the
104
+ * retry-layer detail: `attempts`, `source`, and an upstream `providerFault`.
105
+ * `retryAfterMs` is inherited. The `message` is a fixed, non-leaky summary it
106
+ * never echoes the raw error body (which is still available, redacted, on `.body`).
103
107
  */
104
- export class AexRateLimitError extends AexApiError {
105
- /** Milliseconds the server/provider asked us to wait, when known. */
106
- retryAfterMs;
108
+ export class AexRateLimitError extends AexRateLimitErrorBase {
107
109
  /** How many attempts were made before giving up. */
108
110
  attempts;
109
111
  /** Whether the throttle came from the aex API plane or the upstream provider. */
@@ -111,19 +113,18 @@ export class AexRateLimitError extends AexApiError {
111
113
  /** The upstream provider fault, when the throttle originated there. */
112
114
  providerFault;
113
115
  constructor(args) {
114
- super(args.status, args.message ?? defaultThrottleMessage(args), args.body);
116
+ super({
117
+ status: args.status,
118
+ message: args.message ?? defaultThrottleMessage(args),
119
+ body: args.body,
120
+ ...(args.retryAfterMs !== undefined ? { retryAfterMs: args.retryAfterMs } : {})
121
+ });
115
122
  this.attempts = args.attempts;
116
123
  this.source = args.source ?? "api";
117
- if (args.retryAfterMs !== undefined)
118
- this.retryAfterMs = args.retryAfterMs;
119
124
  if (args.providerFault !== undefined)
120
125
  this.providerFault = args.providerFault;
121
126
  }
122
127
  }
123
- /** Type guard for {@link AexRateLimitError}. */
124
- export function isRateLimited(err) {
125
- return err instanceof AexRateLimitError;
126
- }
127
128
  function defaultThrottleMessage(args) {
128
129
  const who = args.source === "provider" ? "upstream provider" : "aex API";
129
130
  const label = args.status === 529 ? "overloaded" : "rate limit reached";
package/dist/retry.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ import { type FetchLike, type SkillRef } 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 FIRST-CLASS, workspace-scoped, by-name bundle of instructional /
6
+ * executable content (`SKILL.md` at the bundle root plus any supporting files).
7
+ * It is DISTINCT from a {@link Tool}: skills are passed on the session's separate
8
+ * `skills:` input, not `tools:`, and a run gets a single `skills` meta-tool
9
+ * (list/load) rather than one load-tool per skill.
10
+ *
11
+ * Lifecycle mirrors `Secret` promotion, but keyed to a workspace name:
12
+ * - The `Skill.from*` factories read a bundle, lift `name` + `description` from
13
+ * the `SKILL.md` YAML frontmatter (an explicit `{ name }` overrides), and
14
+ * canonically zip + hash the bytes → a DRAFT skill.
15
+ * - `skill.upload(client)` UPSERTS the workspace skill by name: it stages the
16
+ * bytes to the content-addressed asset store (presign/finalize) and PUTs the
17
+ * registry entry. Identical bytes are a no-op. Returns an uploaded `Skill`
18
+ * whose wire ref is `{ kind:"skill", name }` (BY NAME — no assetId, no hash).
19
+ * - Passing a DRAFT skill in `skills:` auto-upserts it on submit (same
20
+ * ergonomic as a draft `Tool` / `File`).
21
+ *
22
+ * Binding is by name and mutable: a re-upload under the same name changes what
23
+ * every future run referencing that name sees.
24
+ */
25
+ export declare class Skill {
26
+ #private;
27
+ /** Internal constructor. Use the `Skill.from*` factories. */
28
+ private constructor();
29
+ /** The wire ref: `{ kind:"skill", name }` once uploaded, or the draft shape before. */
30
+ get ref(): SkillRef | DraftSkillRef;
31
+ /** True for a local-bytes skill that has not been upserted to the workspace yet. */
32
+ get isDraft(): boolean;
33
+ get name(): string;
34
+ get description(): string;
35
+ /** Internal: the workspace name this instance already upserted, or undefined. */
36
+ get _cachedName(): string | undefined;
37
+ /** Internal: remember that this instance's bytes were upserted under `name`. */
38
+ _rememberUpload(name: string): void;
39
+ /**
40
+ * Read a local skill directory. It must contain `SKILL.md` at its root, whose
41
+ * YAML frontmatter supplies `description` and (unless `args.name` is given)
42
+ * `name`. When neither an explicit name nor a frontmatter name is present, the
43
+ * slugified directory basename is used.
44
+ *
45
+ * The directory is walked with FIDELITY (the same walk `File.fromPath` uses):
46
+ * `.aexignore` + the always-on defaults (`.git/`, `node_modules/`, …) prune the
47
+ * upload — so a skill dir carrying `node_modules` no longer ships it — and
48
+ * executable bits + symlinks are captured into a `.aexmeta.json` sidecar
49
+ * (emitted only when such metadata exists, so a pure-content skill dir stays
50
+ * byte-identical → dedup continuity). Bun/Node filesystem runtimes only.
51
+ */
52
+ static fromDir(rootDir: string, args?: {
53
+ readonly name?: string;
54
+ readonly ignore?: IgnoreOptions;
55
+ }): Promise<Skill>;
56
+ /**
57
+ * Fetch a zip-archived skill from a URL. The archive is downloaded in the SDK
58
+ * process (caller-controlled URL — no SSRF surface), optionally integrity-checked
59
+ * against `sha256`, and reduced to the same files map as `Skill.fromDir` (a
60
+ * single wrapping top-level folder is stripped). It must expose `SKILL.md` at
61
+ * the root. The signed URL only needs to be valid for this call.
62
+ */
63
+ static fromUrl(url: string, args?: {
64
+ readonly name?: string;
65
+ readonly sha256?: string;
66
+ readonly timeoutMs?: number;
67
+ readonly fetch?: FetchLike;
68
+ }): Promise<Skill>;
69
+ /**
70
+ * Build a draft skill from an in-memory files map (path -> string | bytes).
71
+ * Requires a root `SKILL.md`. Universal (no filesystem access). An optional
72
+ * `meta` (exec bits + symlinks) is threaded to the bundler for callers that
73
+ * carry fidelity metadata alongside a hand-built map; omit it and a plain map
74
+ * stays byte-identical to the pre-fidelity output.
75
+ */
76
+ static fromFiles(args: {
77
+ readonly name?: string;
78
+ readonly files: SkillFiles;
79
+ readonly meta?: BundleMeta;
80
+ }): Promise<Skill>;
81
+ /** Convenience: build a single-file skill from a `SKILL.md` string. */
82
+ static fromContent(skillMd: string, args?: {
83
+ readonly name?: string;
84
+ }): Promise<Skill>;
85
+ /**
86
+ * Build a draft skill from an already-zipped bundle. The zip is unpacked to a
87
+ * files map (directory entries dropped), then re-canonicalised so a
88
+ * `fromBytes` skill and the identical `fromDir` / `fromFiles` skill dedup by
89
+ * content hash. Requires `SKILL.md` at the archive root.
90
+ */
91
+ static fromBytes(args: {
92
+ readonly name?: string;
93
+ readonly zip: Uint8Array;
94
+ }): Promise<Skill>;
95
+ /**
96
+ * UPSERT this skill into the workspace registry by name and return an uploaded
97
+ * `Skill` whose ref is `{ kind:"skill", name }`. Two steps: stage the bytes to
98
+ * the content-addressed asset store (dedup makes identical bytes a no-op PUT),
99
+ * then PUT the registry entry (identical `contentHash` ⇒ server no-op). Reusing
100
+ * the SAME instance across submits skips both round-trips.
101
+ *
102
+ * Throws on an already-uploaded (non-draft) skill, mirroring `Tool.upload`.
103
+ */
104
+ upload(client: SkillUploader): Promise<Skill>;
105
+ /**
106
+ * Internal: yield the draft's bytes + metadata so `client.run` / `openSession`
107
+ * can auto-upsert it. Non-consuming: a Skill is reusable across sessions — the
108
+ * first use caches the resolved name so later uses skip the round-trip. Returns
109
+ * undefined for an already-uploaded skill.
110
+ */
111
+ _takeDraftBundle(): {
112
+ name: string;
113
+ description: string;
114
+ contentHash: string;
115
+ bytes: Uint8Array;
116
+ } | undefined;
117
+ toJSON(): SkillRef;
118
+ }
119
+ /**
120
+ * SDK-internal draft marker. Never reaches the wire; `skill.upload` /
121
+ * `run` / `openSession` converts it to a by-name {@link SkillRef} once the bytes
122
+ * are upserted.
123
+ */
124
+ export interface DraftSkillRef {
125
+ readonly kind: "draft";
126
+ readonly name: string;
127
+ readonly description: string;
128
+ readonly contentHash: string;
129
+ }
130
+ /**
131
+ * Minimal client surface `skill.upload` needs to upsert a workspace skill.
132
+ * `Aex` satisfies it; defined structurally here so `skill.ts` does not import
133
+ * `client.ts` (which would be circular — `client.ts` imports `Skill`).
134
+ */
135
+ export interface SkillUploader {
136
+ _uploadAsset(args: {
137
+ readonly bytes: Uint8Array;
138
+ readonly hash: string;
139
+ readonly contentType?: string;
140
+ }): Promise<{
141
+ readonly assetId: string;
142
+ }>;
143
+ _upsertSkill(args: {
144
+ readonly name: string;
145
+ readonly contentHash: string;
146
+ readonly description: string;
147
+ readonly sizeBytes: number;
148
+ }): Promise<{
149
+ readonly updated: boolean;
150
+ }>;
151
+ }