@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.
- package/README.md +23 -17
- package/dist/_contracts/api-key.d.ts +49 -0
- package/dist/_contracts/api-key.js +87 -0
- package/dist/_contracts/bundle-manifest.d.ts +86 -0
- package/dist/_contracts/bundle-manifest.js +157 -0
- package/dist/_contracts/error-codes.d.ts +26 -0
- package/dist/_contracts/error-codes.js +79 -0
- package/dist/_contracts/error-factory.d.ts +32 -0
- package/dist/_contracts/error-factory.js +142 -0
- package/dist/_contracts/event-envelope.d.ts +33 -10
- package/dist/_contracts/event-envelope.js +46 -10
- package/dist/_contracts/event-view.d.ts +123 -0
- package/dist/_contracts/event-view.js +120 -0
- package/dist/_contracts/http.js +12 -3
- package/dist/_contracts/index.d.ts +8 -4
- package/dist/_contracts/index.js +11 -7
- package/dist/_contracts/models.d.ts +15 -0
- package/dist/_contracts/models.js +33 -0
- package/dist/_contracts/operations.d.ts +70 -2
- package/dist/_contracts/operations.js +143 -7
- package/dist/_contracts/run-config.d.ts +35 -10
- package/dist/_contracts/run-config.js +17 -5
- package/dist/_contracts/run-record.d.ts +3 -2
- package/dist/_contracts/runtime-types.d.ts +148 -36
- package/dist/_contracts/runtime-types.js +33 -1
- package/dist/_contracts/sdk-errors.d.ts +61 -2
- package/dist/_contracts/sdk-errors.js +83 -3
- package/dist/_contracts/sdk-secrets.js +31 -6
- package/dist/_contracts/stable.d.ts +14 -0
- package/dist/_contracts/stable.js +14 -0
- package/dist/_contracts/status.d.ts +28 -1
- package/dist/_contracts/status.js +48 -3
- package/dist/_contracts/submission.d.ts +157 -14
- package/dist/_contracts/submission.js +319 -55
- package/dist/_contracts/suggest.d.ts +15 -0
- package/dist/_contracts/suggest.js +54 -0
- package/dist/asset-upload.d.ts +27 -1
- package/dist/asset-upload.js +219 -4
- package/dist/asset-upload.js.map +1 -1
- package/dist/bundle.d.ts +23 -14
- package/dist/bundle.js +39 -20
- package/dist/bundle.js.map +1 -1
- package/dist/canonical-zip.d.ts +68 -0
- package/dist/canonical-zip.js +307 -0
- package/dist/canonical-zip.js.map +1 -0
- package/dist/cli.mjs +1927 -326
- package/dist/cli.mjs.sha256 +1 -1
- package/dist/client.d.ts +273 -70
- package/dist/client.js +885 -335
- package/dist/client.js.map +1 -1
- package/dist/fetch-archive.js +14 -14
- package/dist/fetch-archive.js.map +1 -1
- package/dist/file.d.ts +33 -6
- package/dist/file.js +120 -54
- package/dist/file.js.map +1 -1
- package/dist/index.d.ts +23 -14
- package/dist/index.js +31 -14
- package/dist/index.js.map +1 -1
- package/dist/node-fs.d.ts +26 -9
- package/dist/node-fs.js +13 -38
- package/dist/node-fs.js.map +1 -1
- package/dist/node-walk.d.ts +69 -0
- package/dist/node-walk.js +146 -0
- package/dist/node-walk.js.map +1 -0
- package/dist/retry.d.ts +9 -13
- package/dist/retry.js +18 -17
- package/dist/retry.js.map +1 -1
- package/dist/skill.d.ts +151 -0
- package/dist/skill.js +298 -0
- package/dist/skill.js.map +1 -0
- package/dist/tool.d.ts +14 -2
- package/dist/tool.js +33 -7
- package/dist/tool.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/authentication.md +29 -5
- package/docs/billing.md +6 -0
- package/docs/concepts/agent-tools.md +11 -0
- package/docs/concepts/composition.md +3 -3
- package/docs/defaults.md +1 -0
- package/docs/errors.md +64 -4
- package/docs/events.md +84 -49
- package/docs/limits-and-quotas.md +24 -0
- package/docs/mcp.md +3 -2
- package/docs/networking.md +7 -1
- package/docs/outputs.md +36 -7
- package/docs/provider-runtime-capabilities.md +1 -1
- package/docs/quickstart.md +17 -7
- package/docs/run-config.md +3 -3
- package/docs/secrets.md +14 -0
- package/docs/skills.md +74 -44
- package/docs/vision-skills.md +3 -3
- package/examples/feature-tour.ts +4 -6
- package/examples/spike-settle-latency.ts +125 -0
- package/package.json +4 -3
- package/dist/_contracts/event-guards.d.ts +0 -67
- package/dist/_contracts/event-guards.js +0 -36
- package/dist/skill-tool.d.ts +0 -102
- package/dist/skill-tool.js +0 -190
- package/dist/skill-tool.js.map +0 -1
package/dist/skill-tool.js
DELETED
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
import { TOOL_NAME_PATTERN } from "./_contracts/index.js";
|
|
2
|
-
import { bundleSkillFiles, hashSkillBundle } from "./bundle.js";
|
|
3
|
-
import { fetchSkillArchive } from "./fetch-archive.js";
|
|
4
|
-
import { readDirectoryAsFiles } from "./node-fs.js";
|
|
5
|
-
/**
|
|
6
|
-
* A skill re-expressed as a TOOL. `Tools.fromSkillDir` / `Tools.fromSkillUrl`
|
|
7
|
-
* read a skill folder/zip, lift the tool `name` + `description` from the
|
|
8
|
-
* `SKILL.md` YAML frontmatter, and canonically bundle+hash the bytes. The
|
|
9
|
-
* result rides in the session's `tools` array (next to builtin names and custom
|
|
10
|
-
* {@link Tool} bundles); `client.run` / `openSession` uploads the bundle as an
|
|
11
|
-
* asset before the run lands, and the wire ref becomes a
|
|
12
|
-
* `{ kind:"skill", assetId, name, description }` {@link SkillToolRef}.
|
|
13
|
-
*
|
|
14
|
-
* At run time the model calls the no-arg load-tool to pull the skill's
|
|
15
|
-
* `SKILL.md` body into context; the bundle's files are eagerly staged to
|
|
16
|
-
* `/workspace/skills/<name>/`.
|
|
17
|
-
*
|
|
18
|
-
* Asset deduplication makes the same bytes a no-op upload on subsequent runs.
|
|
19
|
-
* A URL is an ingestion source, not a persistent reference.
|
|
20
|
-
*/
|
|
21
|
-
export class SkillTool {
|
|
22
|
-
#ref;
|
|
23
|
-
#inlineBytes;
|
|
24
|
-
/** Asset id cached after the first use, so reuse skips a re-upload. */
|
|
25
|
-
#assetId;
|
|
26
|
-
/** Internal constructor. Use the `Tools.fromSkill*` factories. */
|
|
27
|
-
constructor(ref, inlineBytes) {
|
|
28
|
-
this.#ref = ref;
|
|
29
|
-
this.#inlineBytes = inlineBytes;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* The wire-level reference. Returns the SDK-private draft shape for
|
|
33
|
-
* un-uploaded skill-tools (kind:"draft", with name + description +
|
|
34
|
-
* contentHash). `client.run` / `openSession` walks these and uploads them
|
|
35
|
-
* before the run lands.
|
|
36
|
-
*/
|
|
37
|
-
get ref() {
|
|
38
|
-
return this.#ref;
|
|
39
|
-
}
|
|
40
|
-
/** True for local-bytes skill-tools that haven't been uploaded yet. */
|
|
41
|
-
get isDraft() {
|
|
42
|
-
return this.#ref.kind === "draft";
|
|
43
|
-
}
|
|
44
|
-
/** Internal: the asset id resolved on a prior use, or undefined. */
|
|
45
|
-
get _cachedAssetId() {
|
|
46
|
-
return this.#assetId;
|
|
47
|
-
}
|
|
48
|
-
/** Internal: remember the asset id resolved for this draft's bytes. */
|
|
49
|
-
_rememberAsset(assetId) {
|
|
50
|
-
this.#assetId = assetId;
|
|
51
|
-
}
|
|
52
|
-
/** Internal: build a draft from an already-loaded skill files map. */
|
|
53
|
-
static async _fromFiles(source, files, nameOverride) {
|
|
54
|
-
const front = extractSkillFrontmatter(source, files);
|
|
55
|
-
const name = nameOverride ?? front.name;
|
|
56
|
-
if (typeof name !== "string" || name.length === 0) {
|
|
57
|
-
throw new Error(`${source}: a skill name is required — pass { name } or add a \`name:\` field to the SKILL.md YAML frontmatter`);
|
|
58
|
-
}
|
|
59
|
-
if (!TOOL_NAME_PATTERN.test(name)) {
|
|
60
|
-
throw new Error(`${source}: name must match ${TOOL_NAME_PATTERN.source}`);
|
|
61
|
-
}
|
|
62
|
-
if (name.includes("__")) {
|
|
63
|
-
throw new Error(`${source}: name must not contain "__"; that separator is reserved for MCP tools`);
|
|
64
|
-
}
|
|
65
|
-
const description = front.description;
|
|
66
|
-
if (typeof description !== "string" || description.trim().length === 0) {
|
|
67
|
-
throw new Error(`${source}: a skill description is required — add a \`description:\` field to the SKILL.md YAML frontmatter`);
|
|
68
|
-
}
|
|
69
|
-
if (description.length > 2048) {
|
|
70
|
-
throw new Error(`${source}: description must be <= 2048 chars`);
|
|
71
|
-
}
|
|
72
|
-
const bundled = bundleSkillFiles(files);
|
|
73
|
-
const contentHash = await hashSkillBundle(bundled.zip);
|
|
74
|
-
const ref = { kind: "draft", name, description, contentHash };
|
|
75
|
-
return new SkillTool(ref, bundled.zip);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Internal: yield the draft's bytes + metadata so `client.run` / `openSession`
|
|
79
|
-
* can upload the asset. Idempotent (non-consuming): a SkillTool is reusable
|
|
80
|
-
* across sessions — the first use caches the resolved asset id (see
|
|
81
|
-
* `_rememberAsset`) so later uses reuse it instead of re-uploading.
|
|
82
|
-
*
|
|
83
|
-
* Returns undefined for already-uploaded skill-tools.
|
|
84
|
-
*/
|
|
85
|
-
_takeDraftBundle() {
|
|
86
|
-
if (this.#ref.kind !== "draft" || !this.#inlineBytes) {
|
|
87
|
-
return undefined;
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
name: this.#ref.name,
|
|
91
|
-
description: this.#ref.description,
|
|
92
|
-
contentHash: this.#ref.contentHash,
|
|
93
|
-
bytes: this.#inlineBytes
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
toJSON() {
|
|
97
|
-
if (this.#ref.kind === "draft") {
|
|
98
|
-
throw new Error("SkillTool: draft skill-tools cannot be JSON-serialised — they only become wire refs when " +
|
|
99
|
-
"aex.run / openSession uploads the bytes as an asset.");
|
|
100
|
-
}
|
|
101
|
-
return this.#ref;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Factory namespace for skill-tools. Each factory reads a skill bundle, lifts
|
|
106
|
-
* `name` + `description` from the `SKILL.md` frontmatter (an explicit `name`
|
|
107
|
-
* argument overrides the frontmatter), and produces a {@link SkillTool} to pass
|
|
108
|
-
* in the session's `tools` array.
|
|
109
|
-
*/
|
|
110
|
-
export const Tools = {
|
|
111
|
-
/**
|
|
112
|
-
* Read a local skill directory and build a skill-tool. The directory must
|
|
113
|
-
* contain `SKILL.md` at its root, whose YAML frontmatter provides the tool
|
|
114
|
-
* `name` (unless overridden via `args.name`) and `description`. Symlinks and
|
|
115
|
-
* non-regular files are skipped. Bun/Node filesystem runtimes only.
|
|
116
|
-
*/
|
|
117
|
-
async fromSkillDir(rootDir, args = {}) {
|
|
118
|
-
const files = await readDirectoryAsFiles(rootDir);
|
|
119
|
-
return SkillTool._fromFiles("Tools.fromSkillDir", files, args.name);
|
|
120
|
-
},
|
|
121
|
-
/**
|
|
122
|
-
* Fetch a zip-archived skill from a URL and build a skill-tool. The archive is
|
|
123
|
-
* downloaded in the SDK process, so the URL is caller-controlled — host the
|
|
124
|
-
* skill yourself and pass a temporary signed URL (e.g. an S3 presigned URL).
|
|
125
|
-
* Its bytes are optionally integrity-checked against `sha256`, unzipped, and
|
|
126
|
-
* reduced to the same files map as `Tools.fromSkillDir`, so a URL-sourced
|
|
127
|
-
* skill and the identical local skill produce the same canonical asset and
|
|
128
|
-
* dedup against each other.
|
|
129
|
-
*
|
|
130
|
-
* The archive must contain `SKILL.md` at its root, or inside a single
|
|
131
|
-
* top-level folder (which is stripped). The signed URL only needs to be valid
|
|
132
|
-
* for this call; `client.run` / `openSession` snapshots the bytes into the run.
|
|
133
|
-
*
|
|
134
|
-
* Universal (Bun / Node 18+ / browser): requires a global `fetch`, or pass one.
|
|
135
|
-
*/
|
|
136
|
-
async fromSkillUrl(url, args = {}) {
|
|
137
|
-
const files = await fetchSkillArchive(url, {
|
|
138
|
-
...(args.sha256 !== undefined ? { sha256: args.sha256 } : {}),
|
|
139
|
-
...(args.timeoutMs !== undefined ? { timeoutMs: args.timeoutMs } : {}),
|
|
140
|
-
...(args.fetch !== undefined ? { fetch: args.fetch } : {})
|
|
141
|
-
});
|
|
142
|
-
return SkillTool._fromFiles("Tools.fromSkillUrl", files, args.name);
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
/**
|
|
146
|
-
* Read `SKILL.md` from a bundle files map and parse its YAML frontmatter for
|
|
147
|
-
* the `name` + `description` fields. Throws when the bundle has no root
|
|
148
|
-
* `SKILL.md` (that is what makes a bundle a skill).
|
|
149
|
-
*/
|
|
150
|
-
function extractSkillFrontmatter(source, files) {
|
|
151
|
-
const raw = files["SKILL.md"];
|
|
152
|
-
if (raw === undefined) {
|
|
153
|
-
throw new Error(`${source}: the skill bundle must contain a SKILL.md at its root`);
|
|
154
|
-
}
|
|
155
|
-
const text = typeof raw === "string" ? raw : new TextDecoder().decode(raw);
|
|
156
|
-
return parseSkillFrontmatter(text);
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Minimal YAML-frontmatter reader: pulls the `name` and `description` scalar
|
|
160
|
-
* values out of the leading `--- … ---` block. Only simple single-line
|
|
161
|
-
* `key: value` entries are supported (surrounding single/double quotes are
|
|
162
|
-
* stripped); anything else is ignored. A skill with no frontmatter yields an
|
|
163
|
-
* empty result and the caller reports the missing field.
|
|
164
|
-
*/
|
|
165
|
-
function parseSkillFrontmatter(text) {
|
|
166
|
-
const src = text.charCodeAt(0) === 0xfeff ? text.slice(1) : text;
|
|
167
|
-
const match = /^---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)/.exec(src);
|
|
168
|
-
if (!match) {
|
|
169
|
-
return {};
|
|
170
|
-
}
|
|
171
|
-
const out = {};
|
|
172
|
-
for (const line of match[1].split(/\r?\n/)) {
|
|
173
|
-
const kv = /^([A-Za-z0-9_-]+)[ \t]*:[ \t]*(.*)$/.exec(line);
|
|
174
|
-
if (!kv)
|
|
175
|
-
continue;
|
|
176
|
-
const key = kv[1].toLowerCase();
|
|
177
|
-
if (key !== "name" && key !== "description")
|
|
178
|
-
continue;
|
|
179
|
-
let value = kv[2].trim();
|
|
180
|
-
if (value.length >= 2 &&
|
|
181
|
-
((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'")))) {
|
|
182
|
-
value = value.slice(1, -1);
|
|
183
|
-
}
|
|
184
|
-
if (value.length > 0) {
|
|
185
|
-
out[key] = value;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return out;
|
|
189
|
-
}
|
|
190
|
-
//# sourceMappingURL=skill-tool.js.map
|
package/dist/skill-tool.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-tool.js","sourceRoot":"","sources":["../src/skill-tool.ts"],"names":[],"mappings":"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"}
|