@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
package/dist/file.js CHANGED
@@ -1,7 +1,9 @@
1
- import { readdir, readFile, stat } from "node:fs/promises";
2
- import { join, relative } from "node:path";
3
- import { DEFAULT_FILE_MOUNT_PATH, assertValidMountPath } from "./_contracts/index.js";
1
+ import { createReadStream } from "node:fs";
2
+ import { readFile, stat } from "node:fs/promises";
3
+ import { DEFAULT_FILE_MOUNT_PATH, RESERVED_META_ENTRY, assertValidMountPath, bundleManifestIsEmpty, serializeBundleManifest } from "./_contracts/index.js";
4
4
  import { hashSkillBundle } from "./bundle.js";
5
+ import { frameCanonicalZipSync, streamBundleZip } from "./canonical-zip.js";
6
+ import { walkDirectory } from "./node-walk.js";
5
7
  import { zipSync } from "fflate";
6
8
  /**
7
9
  * File — arbitrary bytes (single file or zipped folder) delivered to
@@ -19,6 +21,15 @@ import { zipSync } from "fflate";
19
21
  * `subtitles.srt` becomes `/workspace/subtitles.srt`, a folder lands its entries
20
22
  * under `/workspace/`. The resolved path is surfaced back on the Run record.
21
23
  *
24
+ * FIDELITY: a directory walk captures executable bits and symlinks into a
25
+ * `.aexmeta.json` sidecar (emitted only when such metadata exists, so a
26
+ * pure-content bundle stays byte-identical → dedup continuity), and honors
27
+ * `.aexignore` (gitignore-compatible) plus always-on defaults (`.git/`,
28
+ * `node_modules/`). SCALE: a large input (total raw size over the streaming
29
+ * threshold, `File.fromPath` only) is uploaded via a streaming two-pass
30
+ * multipart flow that holds only one entry + one part in memory, lifting the
31
+ * old ~2 GiB in-memory ceiling.
32
+ *
22
33
  * `client.run` / `openSession` materializes the bytes to the hosted asset store
23
34
  * before the run lands; the wire ref becomes `kind:"asset"`. Repeat uploads of the
24
35
  * same bytes are deduped.
@@ -26,11 +37,14 @@ import { zipSync } from "fflate";
26
37
  export class File {
27
38
  #ref;
28
39
  #bytes;
40
+ /** Large-input streaming driver — re-runs the deterministic canonical-zip framer per pass. */
41
+ #drive;
29
42
  /** Asset id cached after the first use, so reuse skips a re-upload. */
30
43
  #assetId;
31
- constructor(ref, bytes) {
44
+ constructor(ref, bytes, drive) {
32
45
  this.#ref = ref;
33
46
  this.#bytes = bytes;
47
+ this.#drive = drive;
34
48
  }
35
49
  get ref() {
36
50
  return this.#ref;
@@ -82,42 +96,83 @@ export class File {
82
96
  * preserves its real basename (with extension) as the sole zip entry, so the
83
97
  * agent finds it at `<mountPath>/<basename>` after unzip. Directories walk
84
98
  * recursively into a canonical zip (sorted relative paths, deterministic
85
- * mtime), landing each entry under `<mountPath>/`. `mountPath` defaults to
86
- * `/workspace`. The optional `name` is only the storage slug (dedup label);
87
- * it never affects the on-disk filename.
99
+ * mtime), landing each entry under `<mountPath>/`. Executable bits + symlinks
100
+ * are captured into a `.aexmeta.json` sidecar; `.aexignore` (+ defaults) prune
101
+ * the walk. `mountPath` defaults to `/workspace`. The optional `name` is only
102
+ * the storage slug (dedup label); it never affects the on-disk filename.
88
103
  */
89
104
  static async fromPath(path, args) {
90
105
  const stats = await stat(path);
91
106
  const mountPath = resolveMountPath(args?.mountPath, "File.fromPath");
92
107
  // `name` is only the storage slug (dedup label), never the on-disk filename.
93
- // Slugify a provided name so the stored slug stays DNS-clean; derive from the
94
- // basename when omitted.
95
108
  const slug = args?.name !== undefined ? slugFromFilename(args.name) : inferNameFromPath(path);
96
- let zip;
97
- if (stats.isDirectory()) {
98
- zip = await buildDirZip(path);
109
+ return stats.isDirectory()
110
+ ? File.#fromDirectory(path, slug, mountPath, args?.ignore)
111
+ : File.#fromSingleFile(path, slug, mountPath, stats.size, (stats.mode & 0o111) !== 0);
112
+ }
113
+ /** Directory branch: walk + fidelity sidecar + small/streaming path selection. */
114
+ static async #fromDirectory(path, slug, mountPath, ignore) {
115
+ const walk = await walkDirectory(path, ignore);
116
+ if (walk.entries.length === 0 && walk.symlinks.length === 0) {
117
+ throw new Error(`File.fromPath: directory ${JSON.stringify(path)} is empty (no regular files or symlinks)`);
99
118
  }
100
- else {
101
- const bytes = await readFile(path);
102
- const basename = path.replace(/\\/g, "/").replace(/\/+$/, "").split("/").at(-1) ?? "";
103
- const filename = sanitiseFilename(basename) ?? `${slug}`;
104
- zip = zipSync({ [filename]: [bytes, { mtime: ZIP_EPOCH }] }, { level: 6 });
119
+ const meta = { exec: walk.exec, symlinks: walk.symlinks };
120
+ const sidecar = bundleManifestIsEmpty(meta)
121
+ ? undefined
122
+ : serializeBundleManifest({ v: 1, exec: walk.exec, symlinks: walk.symlinks });
123
+ if (walk.totalSize <= SMALL_UPLOAD_THRESHOLD_BYTES) {
124
+ // Small: read all bytes and build the canonical zip in memory (single PUT).
125
+ const ordered = [];
126
+ for (const entry of walk.entries) {
127
+ ordered.push([entry.rel, new Uint8Array(await readFile(entry.absPath))]);
128
+ }
129
+ if (sidecar)
130
+ ordered.push([RESERVED_META_ENTRY, sidecar]);
131
+ const zip = frameCanonicalZipSync(ordered);
132
+ const contentHash = await hashSkillBundle(zip);
133
+ return new File({ kind: "draft", name: slug, contentHash, mountPath }, zip);
105
134
  }
106
- const contentHash = await hashSkillBundle(zip);
107
- const ref = {
108
- kind: "draft",
109
- name: slug,
110
- contentHash,
111
- mountPath
112
- };
113
- return new File(ref, zip);
135
+ // Large: stream the canonical zip (never materialize the whole bundle).
136
+ const sources = buildEntrySources(walk.entries, sidecar);
137
+ const drive = (sink) => streamBundleZip(sources, sink);
138
+ return new File({ kind: "draft", name: slug, mountPath }, undefined, drive);
139
+ }
140
+ /** Single-file branch: preserve the basename; capture the +x bit; small/streaming by size. */
141
+ static async #fromSingleFile(path, slug, mountPath, size, isExecutable) {
142
+ const basename = path.replace(/\\/g, "/").replace(/\/+$/, "").split("/").at(-1) ?? "";
143
+ const filename = sanitiseFilename(basename) ?? `${slug}`;
144
+ const sidecar = isExecutable
145
+ ? serializeBundleManifest({ v: 1, exec: [filename], symlinks: [] })
146
+ : undefined;
147
+ if (size <= SMALL_UPLOAD_THRESHOLD_BYTES) {
148
+ const bytes = new Uint8Array(await readFile(path));
149
+ const ordered = [[filename, bytes]];
150
+ if (sidecar)
151
+ ordered.push([RESERVED_META_ENTRY, sidecar]);
152
+ const zip = frameCanonicalZipSync(ordered);
153
+ const contentHash = await hashSkillBundle(zip);
154
+ return new File({ kind: "draft", name: slug, contentHash, mountPath }, zip);
155
+ }
156
+ const sources = [
157
+ {
158
+ name: filename,
159
+ size,
160
+ read: async () => new Uint8Array(await readFile(path)),
161
+ openStream: () => fileByteStream(path)
162
+ }
163
+ ];
164
+ if (sidecar)
165
+ sources.push({ name: RESERVED_META_ENTRY, size: sidecar.length, read: () => sidecar });
166
+ const drive = (sink) => streamBundleZip(sources, sink);
167
+ return new File({ kind: "draft", name: slug, mountPath }, undefined, drive);
114
168
  }
115
169
  /**
116
170
  * Internal: yield the draft's zipped bytes + metadata so
117
- * `client.run` / `openSession` can upload it as an asset.
171
+ * `client.run` / `openSession` can upload it as an asset (single PUT).
172
+ * Returns undefined for a streaming (large) draft — use {@link _takeDraftStream}.
118
173
  */
119
174
  _takeDraftBundle() {
120
- if (this.#ref.kind !== "draft" || !this.#bytes) {
175
+ if (this.#ref.kind !== "draft" || !this.#bytes || this.#ref.contentHash === undefined) {
121
176
  return undefined;
122
177
  }
123
178
  return {
@@ -127,6 +182,16 @@ export class File {
127
182
  mountPath: this.#ref.mountPath
128
183
  };
129
184
  }
185
+ /**
186
+ * Internal: yield the draft's canonical-zip stream driver so `client.run` can
187
+ * upload it via the streaming multipart flow. Returns undefined for the small
188
+ * (in-memory) draft — use {@link _takeDraftBundle}.
189
+ */
190
+ _takeDraftStream() {
191
+ if (this.#ref.kind !== "draft" || !this.#drive)
192
+ return undefined;
193
+ return { name: this.#ref.name, mountPath: this.#ref.mountPath, drive: this.#drive };
194
+ }
130
195
  toJSON() {
131
196
  if (this.#ref.kind === "draft") {
132
197
  throw new Error("File: draft Files cannot be JSON-serialised — they only become wire refs when " +
@@ -137,6 +202,34 @@ export class File {
137
202
  }
138
203
  const ZIP_EPOCH = new Date(Date.UTC(1980, 0, 1));
139
204
  const WORKSPACE_NAME_RE = /^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/;
205
+ /**
206
+ * Total raw input size (via `stat`, before reading bytes) above which
207
+ * `File.fromPath` streams the upload instead of building the whole zip in
208
+ * memory. A pure performance/simplicity switch, NOT a correctness boundary — the
209
+ * streaming framer is byte-identical to the in-memory `zipSync` for Canonical A,
210
+ * so a bundle at the threshold dedups either way.
211
+ */
212
+ const SMALL_UPLOAD_THRESHOLD_BYTES = 64 * 1024 * 1024;
213
+ /** Build lazy zip entry sources from walked descriptors, appending the sidecar LAST. */
214
+ function buildEntrySources(entries, sidecar) {
215
+ const sources = entries.map((entry) => ({
216
+ name: entry.rel,
217
+ size: entry.size,
218
+ read: async () => new Uint8Array(await readFile(entry.absPath)),
219
+ openStream: () => fileByteStream(entry.absPath)
220
+ }));
221
+ if (sidecar) {
222
+ sources.push({ name: RESERVED_META_ENTRY, size: sidecar.length, read: () => sidecar });
223
+ }
224
+ return sources;
225
+ }
226
+ /** Async-iterate a file's bytes in native stream chunks (for Canonical-B giant entries). */
227
+ async function* fileByteStream(absPath) {
228
+ const stream = createReadStream(absPath);
229
+ for await (const chunk of stream) {
230
+ yield chunk;
231
+ }
232
+ }
140
233
  /**
141
234
  * Resolve + validate a caller-supplied `mountPath`, defaulting to `/workspace`.
142
235
  * Shares {@link assertValidMountPath} with the contracts parser so the SDK and
@@ -185,31 +278,4 @@ function inferNameFromPath(path) {
185
278
  const base = normalised.split("/").at(-1) ?? "";
186
279
  return slugFromFilename(base);
187
280
  }
188
- async function buildDirZip(dirPath) {
189
- const files = [];
190
- await walkDir(dirPath, dirPath, files);
191
- if (files.length === 0) {
192
- throw new Error(`File.fromPath: directory ${JSON.stringify(dirPath)} is empty (no regular files)`);
193
- }
194
- files.sort((a, b) => (a.rel < b.rel ? -1 : a.rel > b.rel ? 1 : 0));
195
- const zippable = {};
196
- for (const { rel, bytes } of files) {
197
- zippable[rel] = [bytes, { mtime: ZIP_EPOCH }];
198
- }
199
- return zipSync(zippable, { level: 6 });
200
- }
201
- async function walkDir(base, current, result) {
202
- const entries = await readdir(current, { withFileTypes: true });
203
- for (const entry of entries) {
204
- const fullPath = join(current, entry.name);
205
- if (entry.isDirectory()) {
206
- await walkDir(base, fullPath, result);
207
- }
208
- else if (entry.isFile()) {
209
- const bytes = await readFile(fullPath);
210
- const rel = relative(base, fullPath).replace(/\\/g, "/");
211
- result.push({ rel, bytes: new Uint8Array(bytes) });
212
- }
213
- }
214
- }
215
281
  //# sourceMappingURL=file.js.map
package/dist/file.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,37 +1,46 @@
1
1
  /**
2
2
  * Public surface of the `aex` SDK.
3
3
  *
4
- * `Aex` is the single SDK client. Composition primitives are `Tool` / `Tools`
5
- * (skill-tools), `McpServer`, `AgentsMd`, `File`, and `Secret`. Everything else
6
- * is types, errors, and event type guards re-exported from `@aexhq/contracts`.
4
+ * `Aex` is the single SDK client. Composition primitives are `Tool`, `Skill`,
5
+ * `McpServer`, `AgentsMd`, `File`, and `Secret`. Everything else is types,
6
+ * errors, and event type guards re-exported from `@aexhq/contracts`.
7
7
  */
8
- export { Aex, AgentsMdClient, FilesClient, SecretsClient, SessionClient, SessionHandle, SessionTurnStream } from "./client.js";
9
- export type { AexOptions, Message, OutputDownloadOptions, OutputFilePathMatch, OutputFilePathSelector, OutputFileSelector, OutputLinkSelector, RunCollectOptions, RunResult, SessionCreateOptions, SessionEnvironmentOptions, SessionEvents, SessionInput, SessionMessages, SessionOutputs, SessionOverrides, SessionRunOptions, SessionRunResult, SessionSendOptions, SessionTurnResult, SessionWebhooks, StreamEventsOptions, WaitForRunOptions } from "./client.js";
8
+ export { Aex, AgentsMdClient, ChildRunHandle, FilesClient, OutputsClient, SecretsClient, SessionClient, SessionHandle, SessionTurnStream, SkillsClient } from "./client.js";
9
+ export type { AexOptions, BatchOptions, Message, OutputDownloadOptions, OutputFilePathMatch, OutputFilePathSelector, OutputFileSelector, OutputLinkSelector, PerSessionOutputSearchQuery, RunCollectOptions, RunEvents, RunOutputs, RunResult, SessionCreateOptions, SessionEnvironmentOptions, SessionEvents, SessionInput, SessionMessages, SessionOutputs, SessionOverrides, SessionRunOptions, SessionRunResult, SessionSendOptions, SessionTerminalRead, SessionTurnResult, SessionWebhooks, SettleAwait, StreamEventsOptions, SubmitResult, WaitForRunOptions } from "./client.js";
10
10
  export { Tool } from "./tool.js";
11
- export { SkillTool, Tools } from "./skill-tool.js";
11
+ export { Skill } from "./skill.js";
12
12
  export { AgentsMd } from "./agents-md.js";
13
13
  export { File } from "./file.js";
14
14
  export { McpServer } from "./mcp-server.js";
15
15
  export { Secret } from "./secret.js";
16
16
  export type { SecretEnvSubmissionEntry } from "./secret.js";
17
17
  export { bundleSkillFiles, hashSkillBundle } from "./bundle.js";
18
- export type { BundledSkill, BundledTool, SkillFiles, ToolBundleManifest } from "./bundle.js";
19
- export { AexApiError, AexError, AexNetworkError, CleanupError, CredentialValidationError, ProviderError, RunConfigValidationError, RunStateError } from "./_contracts/index.js";
18
+ export type { BundledSkill, BundledTool, BundleMeta, SkillFiles, ToolBundleManifest } from "./bundle.js";
19
+ export { AEX_API_ERROR_CODES, AEX_API_ERROR_MESSAGES, AEX_API_ERROR_REMEDIES, AexApiError, AexAuthError, AexError, AexIdempotencyConflictError, AexNetworkError, AexNotFoundError, CleanupError, CredentialValidationError, ProviderError, RunConfigValidationError, RunStateError, apiErrorFromResponse, isAexApiErrorCode, isAuthError, isIdempotencyConflict, isInsufficientScope, isNotFound } from "./_contracts/index.js";
20
+ export type { AexApiErrorCode } from "./_contracts/index.js";
20
21
  export { AexRateLimitError, isRateLimited, isThrottleFault, parseProviderFault } from "./retry.js";
21
22
  export type { ProviderFault, RetryOptions } from "./retry.js";
22
- export { MCP_SERVER_NAME_PATTERN, SKILL_BUNDLE_LIMITS, SkillBundleValidationError, normaliseSkillBundlePath, validateSkillBundleEntry, validateSkillBundleManifest } from "./_contracts/index.js";
23
- export type { AssetRef, AgentsMdRef, FileRef, McpServerRef, SkillBundleEntry, SkillBundleManifest, SkillToolRef, ToolInputSchema, ToolRef } from "./_contracts/index.js";
24
- export type { AgentsMdRecord as AgentsMdRecordWire, BillingCheckoutPlanKey, BillingCheckoutRequest, BillingHostedSession, BillingLedgerEntry, BillingLedgerPage, BillingLedgerQuery, BillingPortalRequest, BillingSummary, FileRecord as FileRecordWire, Output, OutputFileType, OutputLink, OutputLinkOptions, OutputQuery, OutputSearchQuery, OutputSearchHit, OutputSearchPage, OutputText, ProviderEvent, ReadOutputTextOptions, Run, Session, SessionEvent, SessionListPage, SessionListQuery, SessionRetentionPolicy, SessionStatus, SessionSummary, SessionTurn, RunRecordArchiveFileV1, RunRecordArchiveFileRoleV1, RunRecordArchiveNamespaceV1, RunRecordCostV1, RunRecordDownloadErrorV1, RunRecordFileStatusV1, RunRecordManifestV1, RunRecordMetadataV1, RunRecordNamespaceV1, RunRecordSubmissionSnapshotV1, RunRecordV1, RunEvent, RunWebhookDelivery, RunWebhookDeliveryStatus, RuntimeManifest, SecretRecord, UsageSummary, WebhookSigningSecret, WhoAmI } from "./_contracts/index.js";
23
+ export { MCP_SERVER_NAME_PATTERN, SKILL_BUNDLE_LIMITS, SKILL_NAME_PATTERN, SKILL_RESERVED_NAMES, SkillBundleValidationError, normaliseSkillBundlePath, validateSkillBundleEntry, validateSkillBundleManifest } from "./_contracts/index.js";
24
+ export type { AssetRef, AgentsMdRef, FileRef, McpServerRef, SkillBundleEntry, SkillBundleManifest, SkillRecord as SkillRecordWire, SkillRef, ToolInputSchema, ToolRef } from "./_contracts/index.js";
25
+ export type { AgentsMdRecord as AgentsMdRecordWire, BillingCheckoutPlanKey, BillingCheckoutRequest, BillingHostedSession, BillingLedgerEntry, BillingLedgerPage, BillingLedgerQuery, BillingPortalRequest, BillingSummary, FileRecord as FileRecordWire, Output, OutputFileType, OutputLink, OutputLinkOptions, OutputQuery, OutputSearchQuery, OutputSearchHit, OutputSearchPage, OutputText, ProviderEvent, ReadOutputTextOptions, Run, Session, SessionEvent, SessionListPage, SessionListQuery, SessionRetentionPolicy, SessionStatus, SessionSummary, SessionTurn, RunRecordArchiveFileV1, RunRecordArchiveFileRoleV1, RunRecordArchiveNamespaceV1, RunRecordCostV1, RunRecordDownloadErrorV1, RunRecordFileStatusV1, RunRecordManifestV1, RunRecordMetadataV1, RunRecordNamespaceV1, RunRecordSubmissionSnapshotV1, RunRecordV1, RunWebhookDelivery, RunWebhookDeliveryStatus, RuntimeManifest, SecretRecord, UsageSummary, WebhookSigningSecret, WhoAmI } from "./_contracts/index.js";
25
26
  export type { PlatformInlineSecrets as InlineSecrets, PlatformMcpServerSecret as McpServerSecret, PlatformEnvironment as RunEnvironment, PlatformRunSubmissionRequest, RunLimits, RunWebhookSpec, } from "./_contracts/index.js";
26
27
  export { CUSTODY_MANIFEST_SCHEMA_VERSION, RUN_RECORD_MANIFEST_SCHEMA_VERSION, RUN_RECORD_SCHEMA_VERSION, DEFAULT_RUNTIME_SIZE, RUNTIME_SIZE_PRESETS, RUNTIME_SIZES } from "./_contracts/index.js";
27
28
  export { RuntimeSizes as Sizes } from "./_contracts/index.js";
28
29
  export type { RuntimeResources, RuntimeSize } from "./_contracts/index.js";
29
30
  export { BUILTIN_TOOL_NAMES, BuiltinTools, DEFAULT_BUILTIN_TOOLS, resolveBuiltinToolNames } from "./_contracts/index.js";
30
31
  export type { BuiltinToolName } from "./_contracts/index.js";
31
- export { DEFAULT_RUN_PROVIDER, RUN_MODELS, RUN_MODELS_BY_PROVIDER, MODEL_PROVIDER_IDS, Models, providerForModel, providersForModel, resolveProviderModelId, isRunModel, parseRunModel, Providers, RUN_PROVIDERS } from "./_contracts/index.js";
32
+ export { DEFAULT_RUN_PROVIDER, RUN_MODELS, RUN_MODELS_BY_PROVIDER, MODEL_PROVIDER_IDS, Models, providerForModel, providersForModel, resolveModelProvider, resolveProviderModelId, isRunModel, parseRunModel, Providers, RUN_PROVIDERS, suggest } from "./_contracts/index.js";
32
33
  export type { RunModel, RunProvider } from "./_contracts/index.js";
33
- export { AEX_RUN_SETTLED_NAME, isCustom, isEventChannel, isFromSource, isLog, isRunError, isRunFinished, isRunSettled, isRunStarted, isRunTerminal, isTextMessage, isToolCallResult, isToolCallStart } from "./_contracts/index.js";
34
- export type { RunFinishedRunEvent, TextMessageRunEvent, ToolCallResultRunEvent, ToolCallStartRunEvent } from "./_contracts/index.js";
34
+ export { usageFromProviderUsage } from "./_contracts/index.js";
35
+ export type { BatchItemResult, BatchResult, ChildRunRef, ResolvableRunRef, RunOutcome, RunRefusalReason, SettledResult } from "./_contracts/index.js";
36
+ export { SESSION_STATUSES, SESSION_TERMINAL_OUTCOMES, isTerminalSessionStatus } from "./_contracts/index.js";
37
+ export type { SessionTerminalOutcome } from "./_contracts/index.js";
38
+ export { PLANE_BASE_URLS, parseApiKey } from "./_contracts/index.js";
39
+ export type { ApiKeyPlane, ParsedApiKey } from "./_contracts/index.js";
40
+ export { RESPONSE_FORMAT_KINDS, STREAMABLE_SHAPES, isStreamableProvider, parseApprovalGate, parseResponseFormat } from "./_contracts/index.js";
41
+ export type { ApprovalGate, ResponseFormat, ResponseFormatKind, StreamableShape } from "./_contracts/index.js";
42
+ export { AEX_RUN_SETTLED_NAME } from "./_contracts/index.js";
43
+ export type { AexEventView, TextMessageEventView, ToolCallResultEventView, ToolCallStartEventView } from "./_contracts/index.js";
35
44
  export { SecretString, redactSecrets } from "./_contracts/index.js";
36
45
  export { verifyAexWebhook } from "./_contracts/index.js";
37
46
  export type { VerifyAexWebhookInput } from "./_contracts/index.js";
package/dist/index.js CHANGED
@@ -1,21 +1,23 @@
1
1
  /**
2
2
  * Public surface of the `aex` SDK.
3
3
  *
4
- * `Aex` is the single SDK client. Composition primitives are `Tool` / `Tools`
5
- * (skill-tools), `McpServer`, `AgentsMd`, `File`, and `Secret`. Everything else
6
- * is types, errors, and event type guards re-exported from `@aexhq/contracts`.
4
+ * `Aex` is the single SDK client. Composition primitives are `Tool`, `Skill`,
5
+ * `McpServer`, `AgentsMd`, `File`, and `Secret`. Everything else is types,
6
+ * errors, and event type guards re-exported from `@aexhq/contracts`.
7
7
  */
8
- export { Aex, AgentsMdClient, FilesClient, SecretsClient, SessionClient, SessionHandle, SessionTurnStream } from "./client.js";
8
+ export { Aex, AgentsMdClient, ChildRunHandle, FilesClient, OutputsClient, SecretsClient, SessionClient, SessionHandle, SessionTurnStream, SkillsClient } from "./client.js";
9
9
  // Composition primitives
10
10
  export { Tool } from "./tool.js";
11
- export { SkillTool, Tools } from "./skill-tool.js";
11
+ export { Skill } from "./skill.js";
12
12
  export { AgentsMd } from "./agents-md.js";
13
13
  export { File } from "./file.js";
14
14
  export { McpServer } from "./mcp-server.js";
15
15
  export { Secret } from "./secret.js";
16
16
  export { bundleSkillFiles, hashSkillBundle } from "./bundle.js";
17
- // Errors
18
- export { AexApiError, AexError, AexNetworkError, CleanupError, CredentialValidationError, ProviderError, RunConfigValidationError, RunStateError } from "./_contracts/index.js";
17
+ // Errors. One wire→exception factory (`apiErrorFromResponse`) + a stable
18
+ // `apiCode` on every `AexApiError`; typed subclasses (`AexAuthError` /
19
+ // `AexIdempotencyConflictError` / `AexNotFoundError`) each narrow with a guard.
20
+ export { AEX_API_ERROR_CODES, AEX_API_ERROR_MESSAGES, AEX_API_ERROR_REMEDIES, AexApiError, AexAuthError, AexError, AexIdempotencyConflictError, AexNetworkError, AexNotFoundError, CleanupError, CredentialValidationError, ProviderError, RunConfigValidationError, RunStateError, apiErrorFromResponse, isAexApiErrorCode, isAuthError, isIdempotencyConflict, isInsufficientScope, isNotFound } from "./_contracts/index.js";
19
21
  // Built-in transport resilience. Every BFF request is retried on transient
20
22
  // failures (429/5xx/529 + network errors) with bounded backoff + jitter,
21
23
  // honoring `Retry-After`; tune or disable via the client's `retry` option.
@@ -23,7 +25,7 @@ export { AexApiError, AexError, AexNetworkError, CleanupError, CredentialValidat
23
25
  // `isRateLimited`), which can carry an upstream `ProviderFault`.
24
26
  export { AexRateLimitError, isRateLimited, isThrottleFault, parseProviderFault } from "./retry.js";
25
27
  // Skill-bundle / MCP wire types
26
- export { MCP_SERVER_NAME_PATTERN, SKILL_BUNDLE_LIMITS, SkillBundleValidationError, normaliseSkillBundlePath, validateSkillBundleEntry, validateSkillBundleManifest } from "./_contracts/index.js";
28
+ export { MCP_SERVER_NAME_PATTERN, SKILL_BUNDLE_LIMITS, SKILL_NAME_PATTERN, SKILL_RESERVED_NAMES, SkillBundleValidationError, normaliseSkillBundlePath, validateSkillBundleEntry, validateSkillBundleManifest } from "./_contracts/index.js";
27
29
  // Runtime sizing — the closed set of valid managed runtime presets.
28
30
  // Prefer the `Sizes` symbol const (e.g. `Sizes.SHARED_2X_8GB`)
29
31
  // so an invalid token is a compile error, not a runtime 400.
@@ -36,12 +38,27 @@ export { RuntimeSizes as Sizes } from "./_contracts/index.js";
36
38
  export { BUILTIN_TOOL_NAMES, BuiltinTools, DEFAULT_BUILTIN_TOOLS, resolveBuiltinToolNames } from "./_contracts/index.js";
37
39
  // Provider/model surface. Provider choice decides the upstream model route;
38
40
  // execution uses the managed path.
39
- export { DEFAULT_RUN_PROVIDER, RUN_MODELS, RUN_MODELS_BY_PROVIDER, MODEL_PROVIDER_IDS, Models, providerForModel, providersForModel, resolveProviderModelId, isRunModel, parseRunModel, Providers, RUN_PROVIDERS } from "./_contracts/index.js";
40
- // Event guards. The lifecycle/channel guards (isRunStarted/isRunError/isCustom/
41
- // isLog/…) operate on the coordinator `AexEvent` envelope; isTextMessage /
42
- // isToolCallStart / isToolCallResult / isRunFinished narrow the loose `RunEvent`
43
- // snapshot shape `listEvents` / `RunResult.events` return, typing `.data`.
44
- export { AEX_RUN_SETTLED_NAME, isCustom, isEventChannel, isFromSource, isLog, isRunError, isRunFinished, isRunSettled, isRunStarted, isRunTerminal, isTextMessage, isToolCallResult, isToolCallStart } from "./_contracts/index.js";
41
+ export { DEFAULT_RUN_PROVIDER, RUN_MODELS, RUN_MODELS_BY_PROVIDER, MODEL_PROVIDER_IDS, Models, providerForModel, providersForModel, resolveModelProvider, resolveProviderModelId, isRunModel, parseRunModel, Providers, RUN_PROVIDERS, suggest } from "./_contracts/index.js";
42
+ // Unified settled-result / batch / typed-decode / lineage surface (WS3/WS8/WS10).
43
+ export { usageFromProviderUsage } from "./_contracts/index.js";
44
+ // Status vocabulary (WS1): the terminal-outcome half + guard, bound to the run
45
+ // outcome SSoT. The bare session `error` is retired — a failed turn is `failed`.
46
+ export { SESSION_STATUSES, SESSION_TERMINAL_OUTCOMES, isTerminalSessionStatus } from "./_contracts/index.js";
47
+ // Self-describing API-key codec + plane routing (WS11): the constructor parses
48
+ // the key to derive the plane baseUrl and fail fast on a plane mismatch.
49
+ export { PLANE_BASE_URLS, parseApiKey } from "./_contracts/index.js";
50
+ // Structured-output (schema-decode), HITL approval-gate, and the streaming
51
+ // capability model (WS9/WS10).
52
+ export { RESPONSE_FORMAT_KINDS, STREAMABLE_SHAPES, isStreamableProvider, parseApprovalGate, parseResponseFormat } from "./_contracts/index.js";
53
+ // Event methods. Every event the SDK yields — the turn stream (`session.send()`),
54
+ // `session.events().list()`, `session.events().streamEnvelopes()`, and
55
+ // `RunResult.events` — is an `AexEventView`: the coordinator envelope enriched
56
+ // with one type-guard METHOD per standardized event type, so a consumer branches
57
+ // with `event.isTextMessage()` / `event.isToolCallStart()` / `event.isRunError()`
58
+ // / … instead of a free-function guard or a raw `event.type === "…"` compare.
59
+ // `isTextMessage()` / `isToolCallStart()` / `isToolCallResult()` additionally
60
+ // NARROW `event.data` to that type's fields (e.g. `event.data.text` is `string`).
61
+ export { AEX_RUN_SETTLED_NAME } from "./_contracts/index.js";
45
62
  // Secret utilities
46
63
  export { SecretString, redactSecrets } from "./_contracts/index.js";
47
64
  // Webhook verification — customers verify inbound run webhooks (Standard
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,GAAG,EACH,cAAc,EACd,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AA2BrB,yBAAyB;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACnD,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,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGhE,SAAS;AACT,OAAO,EACL,WAAW,EACX,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,wBAAwB,EACxB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,qEAAqE;AACrE,iEAAiE;AACjE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGnG,gCAAgC;AAChC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC5B,MAAM,kBAAkB,CAAC;AA6E1B,oEAAoE;AACpE,+DAA+D;AAC/D,6DAA6D;AAC7D,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzD,8EAA8E;AAC9E,oFAAoF;AACpF,wEAAwE;AACxE,8EAA8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAGpH,4EAA4E;AAC5E,mCAAmC;AACnC,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,sBAAsB,EACtB,kBAAkB,EAClB,MAAM,EACN,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACd,MAAM,kBAAkB,CAAC;AAM1B,gFAAgF;AAChF,2EAA2E;AAC3E,iFAAiF;AACjF,2EAA2E;AAC3E,OAAO,EACL,oBAAoB,EACpB,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,KAAK,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAQ1B,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE/D,yEAAyE;AACzE,6EAA6E;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/node-fs.d.ts CHANGED
@@ -1,12 +1,29 @@
1
- import type { SkillFiles } from "./bundle.js";
1
+ import type { BundleMeta } from "./bundle.js";
2
+ import { type IgnoreOptions } from "./node-walk.js";
2
3
  /**
3
- * Walk a local directory and load every regular file into an in-memory
4
- * `SkillFiles` map. Symlinks and non-regular files are skipped (a
5
- * symlink that points outside the root would still be skipped because
6
- * we use `lstat` semantics). Paths are normalised to forward-slash
7
- * relative form so they can flow into `bundleSkillFiles` directly.
4
+ * Fidelity-aware read of a local skill/tool directory into an in-memory files map
5
+ * plus its bundle metadata. Delegates to the shared {@link walkDirectory} (the
6
+ * SAME fidelity walk `File.fromPath` uses), so skills/tools now honor `.aexignore`
7
+ * + the always-on defaults (`.git/`, `node_modules/`, ), capture executable bits
8
+ * + symlinks into `meta` (destined for the `.aexmeta.json` sidecar), and never
9
+ * silently vanish a non-regular file (surfaced in `dropped`).
8
10
  *
9
- * Bun/Node filesystem runtimes only. Browser callers should use
10
- * `bundleSkillFiles` with a pre-built files map instead.
11
+ * INVARIANT: for a directory with NO exec bits, NO symlinks, and NO ignored paths,
12
+ * `meta` is empty the downstream bundler emits NO sidecar, so the bundle bytes
13
+ * are byte-identical to the pre-fidelity `readDirectoryAsFiles` output (dedup
14
+ * continuity). Only metadata (or an `.aexignore`/ignored path) changes the bytes.
15
+ *
16
+ * Bun/Node filesystem runtimes only. Browser callers pass a pre-built files map to
17
+ * `bundleSkillFiles` / `bundleToolFiles` directly and never reach this module.
11
18
  */
12
- export declare function readDirectoryAsFiles(rootDir: string): Promise<SkillFiles>;
19
+ export interface DirectoryBundle {
20
+ /** Regular-file bytes, keyed by forward-slash bundle-relative path. */
21
+ readonly files: Record<string, Uint8Array>;
22
+ /** Exec bits + symlinks → the `.aexmeta.json` sidecar (empty ⇒ no sidecar emitted). */
23
+ readonly meta: BundleMeta;
24
+ /** Non-regular files skipped (FIFO/socket/device) — never silently vanished. Sorted. */
25
+ readonly dropped: readonly string[];
26
+ /** Count of paths pruned by the ignore layers (`.aexignore` + defaults). */
27
+ readonly ignoredCount: number;
28
+ }
29
+ export declare function readDirectoryWithFidelity(rootDir: string, ignore?: IgnoreOptions): Promise<DirectoryBundle>;
package/dist/node-fs.js CHANGED
@@ -1,44 +1,19 @@
1
- import { readFile, readdir, stat } from "node:fs/promises";
2
- import { join, posix, relative, sep } from "node:path";
3
- /**
4
- * Walk a local directory and load every regular file into an in-memory
5
- * `SkillFiles` map. Symlinks and non-regular files are skipped (a
6
- * symlink that points outside the root would still be skipped because
7
- * we use `lstat` semantics). Paths are normalised to forward-slash
8
- * relative form so they can flow into `bundleSkillFiles` directly.
9
- *
10
- * Bun/Node filesystem runtimes only. Browser callers should use
11
- * `bundleSkillFiles` with a pre-built files map instead.
12
- */
13
- export async function readDirectoryAsFiles(rootDir) {
1
+ import { readFile } from "node:fs/promises";
2
+ import { walkDirectory } from "./node-walk.js";
3
+ export async function readDirectoryWithFidelity(rootDir, ignore) {
14
4
  if (typeof rootDir !== "string" || !rootDir) {
15
- throw new Error("readDirectoryAsFiles: rootDir is required");
16
- }
17
- const rootStat = await stat(rootDir);
18
- if (!rootStat.isDirectory()) {
19
- throw new Error(`readDirectoryAsFiles: ${rootDir} is not a directory`);
5
+ throw new Error("readDirectoryWithFidelity: rootDir is required");
20
6
  }
7
+ const walk = await walkDirectory(rootDir, ignore);
21
8
  const files = {};
22
- await walk(rootDir, rootDir, files);
23
- return files;
24
- }
25
- async function walk(rootDir, currentDir, out) {
26
- const entries = await readdir(currentDir, { withFileTypes: true });
27
- for (const dirent of entries) {
28
- const full = join(currentDir, dirent.name);
29
- if (dirent.isSymbolicLink()) {
30
- continue;
31
- }
32
- if (dirent.isDirectory()) {
33
- await walk(rootDir, full, out);
34
- continue;
35
- }
36
- if (!dirent.isFile()) {
37
- continue;
38
- }
39
- const rel = relative(rootDir, full);
40
- const posixPath = sep === "/" ? rel : rel.split(sep).join(posix.sep);
41
- out[posixPath] = await readFile(full);
9
+ for (const entry of walk.entries) {
10
+ files[entry.rel] = new Uint8Array(await readFile(entry.absPath));
42
11
  }
12
+ return {
13
+ files,
14
+ meta: { exec: walk.exec, symlinks: walk.symlinks },
15
+ dropped: walk.dropped,
16
+ ignoredCount: walk.ignoredCount
17
+ };
43
18
  }
44
19
  //# sourceMappingURL=node-fs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-fs.js","sourceRoot":"","sources":["../src/node-fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGvD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAe;IACxD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,qBAAqB,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,KAAK,GAA+B,EAAE,CAAC;IAC7C,MAAM,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,OAAe,EAAE,UAAkB,EAAE,GAA+B;IACtF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrE,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"node-fs.js","sourceRoot":"","sources":["../src/node-fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAsB,MAAM,gBAAgB,CAAC;AA6BnE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAAe,EAAE,MAAsB;IACrF,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,KAAK,GAA+B,EAAE,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO;QACL,KAAK;QACL,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;QAClD,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC;AACJ,CAAC"}