@execbox/core 0.2.0 → 0.3.1

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
@@ -5,6 +5,8 @@ Executor-agnostic core for guest JavaScript that can call host tools directly or
5
5
  [![npm version](https://img.shields.io/npm/v/%40execbox%2Fcore?style=flat-square)](https://www.npmjs.com/package/@execbox/core)
6
6
  [![License](https://img.shields.io/github/license/aallam/execbox?style=flat-square)](https://github.com/aallam/execbox/blob/main/LICENSE)
7
7
 
8
+ Docs: https://execbox.aallam.com
9
+
8
10
  ## What You Get
9
11
 
10
12
  - Resolve host tools into deterministic guest namespaces with name sanitization.
@@ -48,7 +50,7 @@ Swap in `@execbox/remote` when you want the same API but a caller-managed remote
48
50
  ## Security Posture
49
51
 
50
52
  - Execbox gives you fresh execution state, JSON-only tool boundaries, schema validation, timeout handling, memory limits, and bounded logs.
51
- - Execbox does not give you a hard security boundary for hostile code by itself. The actual boundary depends on which executor you pair it with.
53
+ - Hard isolation depends on the executor and deployment boundary you pair with `@execbox/core`.
52
54
  - Providers are explicit capability grants. Every tool you expose is authority you are handing to guest code.
53
55
  - In the default deployment model, provider and MCP tool definitions are controlled by the application, not by the end user.
54
56
  - Third-party MCP integrations should be reviewed as dependency-trust decisions, not folded into the primary end-user attacker model.
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Public TypeScript declarations for this package entrypoint.
4
+ */
1
5
  import { ZodRawShape, ZodTypeAny } from "zod";
2
6
 
3
7
  //#region src/types.d.ts
@@ -171,12 +175,24 @@ declare function extractProviderManifests(providers: ResolvedToolProvider[]): Pr
171
175
  declare function createToolCallDispatcher(providers: ResolvedToolProvider[], signal: AbortSignal): (call: ToolCall) => Promise<ToolCallResult>;
172
176
  //#endregion
173
177
  //#region src/executor/executor.d.ts
178
+ /**
179
+ * Optional pooling controls for executor implementations that can reuse
180
+ * host-side shells while still creating a fresh guest runtime per execution.
181
+ */
182
+ interface ExecutorPoolOptions {
183
+ idleTimeoutMs?: number;
184
+ maxSize: number;
185
+ minSize?: number;
186
+ prewarm?: boolean | number;
187
+ }
174
188
  /**
175
189
  * Executes JavaScript against one or more resolved tool providers.
176
190
  */
177
191
  interface Executor {
178
192
  execute(code: string, providers: ResolvedToolProvider[], options?: ExecutionOptions): Promise<ExecuteResult>;
193
+ dispose?(): Promise<void> | void;
194
+ prewarm?(count?: number): Promise<void>;
179
195
  }
180
196
  //#endregion
181
- export { ToolExecutionContext as _, ProviderToolManifest as a, TypegenToolDescriptor as b, createToolCallDispatcher as c, ExecuteErrorCode as d, ExecuteResult as f, ToolDescriptor as g, ResolvedToolProvider as h, ProviderManifest as i, extractProviderManifests as l, ResolvedToolDescriptor as m, ExecutionOptions as n, ToolCall as o, JsonSchema as p, ExecutorRuntimeOptions as r, ToolCallResult as s, Executor as t, ExecuteError as u, ToolProvider as v, ToolSchema as y };
182
- //# sourceMappingURL=executor-DcnjQGwA.d.cts.map
197
+ export { ToolDescriptor as _, ProviderManifest as a, ToolSchema as b, ToolCallResult as c, ExecuteError as d, ExecuteErrorCode as f, ResolvedToolProvider as g, ResolvedToolDescriptor as h, ExecutorRuntimeOptions as i, createToolCallDispatcher as l, JsonSchema as m, ExecutorPoolOptions as n, ProviderToolManifest as o, ExecuteResult as p, ExecutionOptions as r, ToolCall as s, Executor as t, extractProviderManifests as u, ToolExecutionContext as v, TypegenToolDescriptor as x, ToolProvider as y };
198
+ //# sourceMappingURL=executor-B_GaIEgz.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor-B_GaIEgz.d.cts","names":[],"sources":["../src/types.ts","../src/runner.ts","../src/executor/executor.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Public TypeScript declarations for this package entrypoint.
4
+ */
1
5
  import { ZodRawShape, ZodTypeAny } from "zod";
2
6
 
3
7
  //#region src/types.d.ts
@@ -171,12 +175,24 @@ declare function extractProviderManifests(providers: ResolvedToolProvider[]): Pr
171
175
  declare function createToolCallDispatcher(providers: ResolvedToolProvider[], signal: AbortSignal): (call: ToolCall) => Promise<ToolCallResult>;
172
176
  //#endregion
173
177
  //#region src/executor/executor.d.ts
178
+ /**
179
+ * Optional pooling controls for executor implementations that can reuse
180
+ * host-side shells while still creating a fresh guest runtime per execution.
181
+ */
182
+ interface ExecutorPoolOptions {
183
+ idleTimeoutMs?: number;
184
+ maxSize: number;
185
+ minSize?: number;
186
+ prewarm?: boolean | number;
187
+ }
174
188
  /**
175
189
  * Executes JavaScript against one or more resolved tool providers.
176
190
  */
177
191
  interface Executor {
178
192
  execute(code: string, providers: ResolvedToolProvider[], options?: ExecutionOptions): Promise<ExecuteResult>;
193
+ dispose?(): Promise<void> | void;
194
+ prewarm?(count?: number): Promise<void>;
179
195
  }
180
196
  //#endregion
181
- export { ToolExecutionContext as _, ProviderToolManifest as a, TypegenToolDescriptor as b, createToolCallDispatcher as c, ExecuteErrorCode as d, ExecuteResult as f, ToolDescriptor as g, ResolvedToolProvider as h, ProviderManifest as i, extractProviderManifests as l, ResolvedToolDescriptor as m, ExecutionOptions as n, ToolCall as o, JsonSchema as p, ExecutorRuntimeOptions as r, ToolCallResult as s, Executor as t, ExecuteError as u, ToolProvider as v, ToolSchema as y };
182
- //# sourceMappingURL=executor-C0lf5vWT.d.ts.map
197
+ export { ToolDescriptor as _, ProviderManifest as a, ToolSchema as b, ToolCallResult as c, ExecuteError as d, ExecuteErrorCode as f, ResolvedToolProvider as g, ResolvedToolDescriptor as h, ExecutorRuntimeOptions as i, createToolCallDispatcher as l, JsonSchema as m, ExecutorPoolOptions as n, ProviderToolManifest as o, ExecuteResult as p, ExecutionOptions as r, ToolCall as s, Executor as t, extractProviderManifests as u, ToolExecutionContext as v, TypegenToolDescriptor as x, ToolProvider as y };
198
+ //# sourceMappingURL=executor-DgNzFGsH.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor-DgNzFGsH.d.ts","names":[],"sources":["../src/types.ts","../src/runner.ts","../src/executor/executor.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_resolveProvider = require('./resolveProvider-CixOjPKp.cjs');
1
+ const require_resolveProvider = require('./resolveProvider-Dt30Su4V.cjs');
2
2
  let acorn = require("acorn");
3
3
 
4
4
  //#region src/executor/shared.ts
package/dist/index.d.cts CHANGED
@@ -1,4 +1,8 @@
1
- import { _ as ToolExecutionContext, a as ProviderToolManifest, b as TypegenToolDescriptor, c as createToolCallDispatcher, d as ExecuteErrorCode, f as ExecuteResult, g as ToolDescriptor, h as ResolvedToolProvider, i as ProviderManifest, l as extractProviderManifests, m as ResolvedToolDescriptor, n as ExecutionOptions, o as ToolCall, p as JsonSchema, r as ExecutorRuntimeOptions, s as ToolCallResult, t as Executor, u as ExecuteError, v as ToolProvider, y as ToolSchema } from "./executor-DcnjQGwA.cjs";
1
+ /**
2
+ * @packageDocumentation
3
+ * Public TypeScript declarations for this package entrypoint.
4
+ */
5
+ import { _ as ToolDescriptor, a as ProviderManifest, b as ToolSchema, c as ToolCallResult, d as ExecuteError, f as ExecuteErrorCode, g as ResolvedToolProvider, h as ResolvedToolDescriptor, i as ExecutorRuntimeOptions, l as createToolCallDispatcher, m as JsonSchema, n as ExecutorPoolOptions, o as ProviderToolManifest, p as ExecuteResult, r as ExecutionOptions, s as ToolCall, t as Executor, u as extractProviderManifests, v as ToolExecutionContext, x as TypegenToolDescriptor, y as ToolProvider } from "./executor-B_GaIEgz.cjs";
2
6
 
3
7
  //#region src/executor/shared.d.ts
4
8
 
@@ -101,5 +105,5 @@ declare function resolveProvider(provider: ToolProvider): ResolvedToolProvider;
101
105
  */
102
106
  declare function generateTypesFromJsonSchema(providerName: string, tools: Record<string, TypegenToolDescriptor>): string;
103
107
  //#endregion
104
- export { type ExecuteError, type ExecuteErrorCode, ExecuteFailure, type ExecuteResult, type ExecutionOptions, type Executor, type ExecutorRuntimeOptions, type JsonSchema, type ProviderManifest, type ProviderToolManifest, type ResolvedToolDescriptor, type ResolvedToolProvider, type ToolCall, type ToolCallResult, type ToolDescriptor, type ToolExecutionContext, type ToolProvider, type ToolSchema, type TypegenToolDescriptor, assertValidIdentifier, createExecutionContext, createTimeoutExecuteResult, createToolCallDispatcher, extractProviderManifests, formatConsoleLine, generateTypesFromJsonSchema, getExecutionTimeoutMessage, isExecuteFailure, isJsonSerializable, isKnownExecuteErrorCode, isReservedWord, isValidIdentifier, normalizeCode, normalizeThrownMessage, normalizeThrownName, resolveProvider, sanitizeIdentifier, sanitizeToolName, serializePropertyName, truncateLogs };
108
+ export { type ExecuteError, type ExecuteErrorCode, ExecuteFailure, type ExecuteResult, type ExecutionOptions, type Executor, type ExecutorPoolOptions, type ExecutorRuntimeOptions, type JsonSchema, type ProviderManifest, type ProviderToolManifest, type ResolvedToolDescriptor, type ResolvedToolProvider, type ToolCall, type ToolCallResult, type ToolDescriptor, type ToolExecutionContext, type ToolProvider, type ToolSchema, type TypegenToolDescriptor, assertValidIdentifier, createExecutionContext, createTimeoutExecuteResult, createToolCallDispatcher, extractProviderManifests, formatConsoleLine, generateTypesFromJsonSchema, getExecutionTimeoutMessage, isExecuteFailure, isJsonSerializable, isKnownExecuteErrorCode, isReservedWord, isValidIdentifier, normalizeCode, normalizeThrownMessage, normalizeThrownName, resolveProvider, sanitizeIdentifier, sanitizeToolName, serializePropertyName, truncateLogs };
105
109
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/executor/shared.ts","../src/identifier.ts","../src/normalize.ts","../src/sanitize.ts","../src/errors.ts","../src/provider/resolveProvider.ts","../src/typegen/jsonSchema.ts"],"sourcesContent":[],"mappings":";;;;;;AAyBA;AASgB,iBATA,uBAAA,CAS0B,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IAP9B,gBAO8B;AAO1C;AAeA;AAkBA;AAkBgB,iBA1DA,0BAAA,CAAA,CA2DN,EAIP,MAAA;AAYH;AA8CA;;iBAlHgB,0BAAA,uBAA4C;;ACG5D;AAOA;AAOgB,iBDFA,sBAAA,CCEqB,KAAA,EAAA,OAAA,CAAA,EAAA,MAAA;AAYrC;AAsBA;;iBDlBgB,mBAAA;;AE5ChB;;iBF8DgB,sBAAA,SACN,oFAIP;;AG5FH;;iBHwGgB,YAAA;;AIxGhB;;AAMoB,iBJgJJ,iBAAA,CIhJI,MAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA;;;;;;AJcJ,iBCmBA,iBAAA,CDjBJ,KAAA,EAAA,MAAA,CAAA,EAAgB,OAAA;AAO5B;AAOA;AAeA;AAkBgB,iBCvBA,cAAA,CDuBmB,KAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAkBnC;AAiBA;AA8CA;iBCjGgB,qBAAA;;;AAdhB;AAOgB,iBAmBA,kBAAA,CAnBc,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AAO9B;AAYA;AAsBA;iBAAgB,qBAAA;;;;;;ADnEA,iBEKA,aAAA,CFLuB,MAE3B,EAAA,MAAA,CAAA,EAAA,MAAgB;;;;;;AAFZ,iBGpBA,gBAAA,CHsBJ,IAAA,EAAA,MAAA,CAAA,EAAA,MAAgB;;;;;AAF5B;AASgB,cI7BH,cAAA,SAAuB,KAAA,CJ6BM;EAO1B,IAAA,EInCR,gBJmCQ;EAeA;AAkBhB;AAkBA;EAiBgB,WAAA,CAAA,IAAY,EIlGR,gBJkGQ,EAAA,OAAA,EAAA,MAAA;AA8C5B;;;;AC/GgB,iBGvBA,gBAAA,CHuBiB,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IGvB0B,cHuB1B;AAOjC;AAOA;AAYA;AAsBgB,iBGhEA,kBAAA,CHgEqB,KAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EG9D7B,GH8D6B,CAAA,MAAA,CAAA,EAAA,IAAA,CAAA,EG7D/B,OH6D+B,CAAA,MAAA,CAAA,CAAA,EAAA,OAAA;;;;;ADnErC;AASgB,iBKUA,eAAA,CLV0B,QAAA,EKUA,YLVA,CAAA,EKUe,oBLVf;;;AAsB1C;AAkBA;AAkBA;AAiBgB,iBMLA,2BAAA,CNKY,YAAA,EAAA,MAAA,EAAA,KAAA,EMHnB,MNGmB,CAAA,MAAA,EMHJ,qBNGI,CAAA,CAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/executor/shared.ts","../src/identifier.ts","../src/normalize.ts","../src/sanitize.ts","../src/errors.ts","../src/provider/resolveProvider.ts","../src/typegen/jsonSchema.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AAyBA,CAAA,CAAA;AASgB,OAAA,CAAA,QAAA,CATA,uBAAA,CAS0B,KAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,EAAA,CAP9B,gBAO8B;AAO1C,CAAA,CAAA;AAeA,CAAA,CAAA,CAAA,OAAA,CAAA,GAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,MAAA,CAAA,QAAA,CAAA,eAAA;AAkBA,CAAA,CAAA;AAkBgB,OAAA,CAAA,QAAA,CA1DA,0BAAA,CAAA,CA2DN,CAAA,CAIP,MAAA;AAYH,CAAA,CAAA;AA8CA,CAAA,CAAA,CAAA,OAAA,CAAA,GAAA,CAAA,SAAA,CAAA,OAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,CAAA,GAAA,CAAA,SAAA,CAAA,YAAA;;iBAlHgB,0BAAA,uBAA4C;;ACoB5D,CAAA,CAAA,CAAA,UAAA,CAAA,EAAA,CAAA,OAAA,CAAA,MAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,KAAA,CAAA,QAAA,CAAA,OAAA;AAOA,CAAA,CAAA;AAOgB,OAAA,CAAA,QAAA,CDnBA,sBAAA,CCmBqB,KAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,MAAA;AAYrC,CAAA,CAAA;AAqBA,CAAA,CAAA,CAAA,OAAA,CAAA,GAAA,CAAA,MAAA,CAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,EAAA,CAAA,SAAA;;iBDlCgB,mBAAA;;AE5ChB,CAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAA,QAAA,CAAA,IAAA,CAAA,SAAA,CAAA,OAAA,CAAA,MAAA,CAAA,EAAA,CAAA,QAAA,CAAA,IAAA,CAAA,QAAA;;iBF8DgB,sBAAA,SACN,oFAIP;;AG5FH,CAAA,CAAA,CAAA,SAAA,CAAA,QAAA,CAAA,IAAA,CAAA,EAAA,CAAA,GAAA,CAAA,UAAA,CAAA,IAAA,CAAA,GAAA,CAAA,SAAA,CAAA,MAAA;;iBHwGgB,YAAA;;AIxGhB,CAAA,CAAA,CAAA,OAAA,CAAA,KAAA,CAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,IAAA;;AAMoB,OAAA,CAAA,QAAA,CJgJJ,iBAAA,CIhJI,MAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA;;;;;;AJcJ,OAAA,CAAA,QAAA,CCoCA,iBAAA,CDlCJ,KAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAgB,OAAA;AAO5B,CAAA,CAAA;AAOA,CAAA,CAAA,CAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA;AAeA,CAAA,CAAA;AAkBgB,OAAA,CAAA,QAAA,CCNA,cAAA,CDMmB,KAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,OAAA;AAkBnC,CAAA,CAAA;AAiBA,CAAA,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,GAAA,CAAA,KAAA,CAAA,MAAA,CAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAAA,IAAA,CAAA,UAAA,CAAA,UAAA;AA8CA,CAAA,CAAA;iBChFgB,qBAAA;;;AAdhB,CAAA,CAAA;AAOgB,OAAA,CAAA,QAAA,CAmBA,kBAAA,CAnBc,KAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,MAAA;AAO9B,CAAA,CAAA;AAYA,CAAA,CAAA,CAAA,OAAA,CAAA,GAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAAA,IAAA,CAAA,UAAA,CAAA,IAAA,CAAA,QAAA,CAAA,CAAA,SAAA,CAAA,EAAA,CAAA,CAAA,CAAA,MAAA,CAAA,OAAA;AAqBA,CAAA,CAAA;iBAAgB,qBAAA;;;;;;ADnFA,OAAA,CAAA,QAAA,CEKA,aAAA,CFLuB,MAE3B,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,MAAgB;;;;;;AAFZ,OAAA,CAAA,QAAA,CGpBA,gBAAA,CHsBJ,IAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,MAAgB;;;;;AAF5B,CAAA,CAAA;AASgB,OAAA,CAAA,KAAA,CI7BH,cAAA,CAAA,OAAA,CAAuB,KAAA,CJ6BM;EAO1B,IAAA,CAAA,CInCR,gBJmCQ;EAeA,CAAA,CAAA;AAkBhB,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,UAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA,CAAA,OAAA,CAAA,QAAA,CAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,IAAA;AAkBA,CAAA,CAAA,CAAA,CAAA;EAiBgB,WAAA,CAAA,IAAY,CAAA,CIlGR,gBJkGQ,CAAA,CAAA,OAAA,CAAA,CAAA,MAAA,CAAA;AA8C5B;;;;AC9FgB,OAAA,CAAA,QAAA,CGxCA,gBAAA,CHwCiB,KAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,EAAA,CGxC0B,cHwC1B;AAOjC,CAAA,CAAA;AAOA,CAAA,CAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,GAAA,CAAA,EAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,CAAA,KAAA,CAAA,QAAA;AAYA,CAAA,CAAA;AAqBgB,OAAA,CAAA,QAAA,CGhFA,kBAAA,CHgFqB,KAAA,CAAA,CAAA,OAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CG9E7B,GH8E6B,CAAA,MAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CG7E/B,OH6E+B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA;;;;;ADnFrC,CAAA,CAAA;AASgB,OAAA,CAAA,QAAA,CKUA,eAAA,CLV0B,QAAA,CAAA,CKUA,YLVA,CAAA,CAAA,CKUe,oBLVf;;;AAsB1C,CAAA,CAAA;AAkBA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,IAAA,CAAA,OAAA;AAkBA,CAAA,CAAA;AAiBgB,OAAA,CAAA,QAAA,CMLA,2BAAA,CNKY,YAAA,CAAA,CAAA,MAAA,CAAA,CAAA,KAAA,CAAA,CMHnB,MNGmB,CAAA,MAAA,CAAA,CMHJ,qBNGI,CAAA,CAAA,CAAA,CAAA,MAAA"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,8 @@
1
- import { _ as ToolExecutionContext, a as ProviderToolManifest, b as TypegenToolDescriptor, c as createToolCallDispatcher, d as ExecuteErrorCode, f as ExecuteResult, g as ToolDescriptor, h as ResolvedToolProvider, i as ProviderManifest, l as extractProviderManifests, m as ResolvedToolDescriptor, n as ExecutionOptions, o as ToolCall, p as JsonSchema, r as ExecutorRuntimeOptions, s as ToolCallResult, t as Executor, u as ExecuteError, v as ToolProvider, y as ToolSchema } from "./executor-C0lf5vWT.js";
1
+ /**
2
+ * @packageDocumentation
3
+ * Public TypeScript declarations for this package entrypoint.
4
+ */
5
+ import { _ as ToolDescriptor, a as ProviderManifest, b as ToolSchema, c as ToolCallResult, d as ExecuteError, f as ExecuteErrorCode, g as ResolvedToolProvider, h as ResolvedToolDescriptor, i as ExecutorRuntimeOptions, l as createToolCallDispatcher, m as JsonSchema, n as ExecutorPoolOptions, o as ProviderToolManifest, p as ExecuteResult, r as ExecutionOptions, s as ToolCall, t as Executor, u as extractProviderManifests, v as ToolExecutionContext, x as TypegenToolDescriptor, y as ToolProvider } from "./executor-DgNzFGsH.js";
2
6
 
3
7
  //#region src/executor/shared.d.ts
4
8
 
@@ -101,5 +105,5 @@ declare function resolveProvider(provider: ToolProvider): ResolvedToolProvider;
101
105
  */
102
106
  declare function generateTypesFromJsonSchema(providerName: string, tools: Record<string, TypegenToolDescriptor>): string;
103
107
  //#endregion
104
- export { type ExecuteError, type ExecuteErrorCode, ExecuteFailure, type ExecuteResult, type ExecutionOptions, type Executor, type ExecutorRuntimeOptions, type JsonSchema, type ProviderManifest, type ProviderToolManifest, type ResolvedToolDescriptor, type ResolvedToolProvider, type ToolCall, type ToolCallResult, type ToolDescriptor, type ToolExecutionContext, type ToolProvider, type ToolSchema, type TypegenToolDescriptor, assertValidIdentifier, createExecutionContext, createTimeoutExecuteResult, createToolCallDispatcher, extractProviderManifests, formatConsoleLine, generateTypesFromJsonSchema, getExecutionTimeoutMessage, isExecuteFailure, isJsonSerializable, isKnownExecuteErrorCode, isReservedWord, isValidIdentifier, normalizeCode, normalizeThrownMessage, normalizeThrownName, resolveProvider, sanitizeIdentifier, sanitizeToolName, serializePropertyName, truncateLogs };
108
+ export { type ExecuteError, type ExecuteErrorCode, ExecuteFailure, type ExecuteResult, type ExecutionOptions, type Executor, type ExecutorPoolOptions, type ExecutorRuntimeOptions, type JsonSchema, type ProviderManifest, type ProviderToolManifest, type ResolvedToolDescriptor, type ResolvedToolProvider, type ToolCall, type ToolCallResult, type ToolDescriptor, type ToolExecutionContext, type ToolProvider, type ToolSchema, type TypegenToolDescriptor, assertValidIdentifier, createExecutionContext, createTimeoutExecuteResult, createToolCallDispatcher, extractProviderManifests, formatConsoleLine, generateTypesFromJsonSchema, getExecutionTimeoutMessage, isExecuteFailure, isJsonSerializable, isKnownExecuteErrorCode, isReservedWord, isValidIdentifier, normalizeCode, normalizeThrownMessage, normalizeThrownName, resolveProvider, sanitizeIdentifier, sanitizeToolName, serializePropertyName, truncateLogs };
105
109
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/executor/shared.ts","../src/identifier.ts","../src/normalize.ts","../src/sanitize.ts","../src/errors.ts","../src/provider/resolveProvider.ts","../src/typegen/jsonSchema.ts"],"sourcesContent":[],"mappings":";;;;;;AAyBA;AASgB,iBATA,uBAAA,CAS0B,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IAP9B,gBAO8B;AAO1C;AAeA;AAkBA;AAkBgB,iBA1DA,0BAAA,CAAA,CA2DN,EAIP,MAAA;AAYH;AA8CA;;iBAlHgB,0BAAA,uBAA4C;;ACG5D;AAOA;AAOgB,iBDFA,sBAAA,CCEqB,KAAA,EAAA,OAAA,CAAA,EAAA,MAAA;AAYrC;AAsBA;;iBDlBgB,mBAAA;;AE5ChB;;iBF8DgB,sBAAA,SACN,oFAIP;;AG5FH;;iBHwGgB,YAAA;;AIxGhB;;AAMoB,iBJgJJ,iBAAA,CIhJI,MAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA;;;;;;AJcJ,iBCmBA,iBAAA,CDjBJ,KAAA,EAAA,MAAA,CAAA,EAAA,OAAgB;AAO5B;AAOA;AAeA;AAkBgB,iBCvBA,cAAA,CDuBmB,KAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAkBnC;AAiBA;AA8CA;iBCjGgB,qBAAA;;;AAdhB;AAOgB,iBAmBA,kBAAA,CAnBc,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AAO9B;AAYA;AAsBA;iBAAgB,qBAAA;;;;;;ADnEA,iBEKA,aAAA,CFLuB,MAE3B,EAAA,MAAA,CAAA,EAAA,MAAgB;;;;;;AAFZ,iBGpBA,gBAAA,CHoBuB,IAE3B,EAAA,MAAA,CAAA,EAAA,MAAgB;;;;;AAF5B;AASgB,cI7BH,cAAA,SAAuB,KAAA,CJ6BM;EAO1B,IAAA,EInCR,gBJmCQ;EAeA;AAkBhB;AAkBA;EAiBgB,WAAA,CAAA,IAAY,EIlGR,gBJkGQ,EAAA,OAAA,EAAA,MAAA;AA8C5B;;;;AC/GgB,iBGvBA,gBAAA,CHuBiB,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IGvB0B,cHuB1B;AAOjC;AAOA;AAYA;AAsBgB,iBGhEA,kBAAA,CHgEqB,KAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EG9D7B,GH8D6B,CAAA,MAAA,CAAA,EAAA,IAAA,CAAA,EG7D/B,OH6D+B,CAAA,MAAA,CAAA,CAAA,EAAA,OAAA;;;;;ADnErC;AASgB,iBKUA,eAAA,CLV0B,QAAA,EKUA,YLVA,CAAA,EKUe,oBLVf;;;AAsB1C;AAkBA;AAkBA;AAiBgB,iBMLA,2BAAA,CNKY,YAAA,EAAA,MAAA,EAAA,KAAA,EMHnB,MNGmB,CAAA,MAAA,EMHJ,qBNGI,CAAA,CAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/executor/shared.ts","../src/identifier.ts","../src/normalize.ts","../src/sanitize.ts","../src/errors.ts","../src/provider/resolveProvider.ts","../src/typegen/jsonSchema.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { c as isJsonSerializable, d as isReservedWord, f as isValidIdentifier, l as sanitizeToolName, m as serializePropertyName, n as generateTypesFromJsonSchema, o as ExecuteFailure, p as sanitizeIdentifier, s as isExecuteFailure, t as resolveProvider, u as assertValidIdentifier } from "./resolveProvider-CUxAvFCK.js";
1
+ import { c as isJsonSerializable, d as isReservedWord, f as isValidIdentifier, l as sanitizeToolName, m as serializePropertyName, n as generateTypesFromJsonSchema, o as ExecuteFailure, p as sanitizeIdentifier, s as isExecuteFailure, t as resolveProvider, u as assertValidIdentifier } from "./resolveProvider-Cqe2G7Dc.js";
2
2
  import { parse } from "acorn";
3
3
 
4
4
  //#region src/executor/shared.ts
@@ -1,4 +1,4 @@
1
- const require_resolveProvider = require('../resolveProvider-CixOjPKp.cjs');
1
+ const require_resolveProvider = require('../resolveProvider-Dt30Su4V.cjs');
2
2
  let zod = require("zod");
3
3
  zod = require_resolveProvider.__toESM(zod);
4
4
  let __modelcontextprotocol_sdk_server_mcp_js = require("@modelcontextprotocol/sdk/server/mcp.js");
@@ -1,4 +1,8 @@
1
- import { h as ResolvedToolProvider, t as Executor } from "../executor-DcnjQGwA.cjs";
1
+ /**
2
+ * @packageDocumentation
3
+ * Public TypeScript declarations for this package entrypoint.
4
+ */
5
+ import { d as ExecuteError, f as ExecuteErrorCode, g as ResolvedToolProvider, h as ResolvedToolDescriptor, i as ExecutorRuntimeOptions, m as JsonSchema, p as ExecuteResult, r as ExecutionOptions, t as Executor, v as ToolExecutionContext } from "../executor-B_GaIEgz.cjs";
2
6
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
7
  import { Implementation } from "@modelcontextprotocol/sdk/types.js";
4
8
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
@@ -81,5 +85,5 @@ interface CodeMcpServerOptions extends CreateMcpToolProviderOptions {
81
85
  */
82
86
  declare function codeMcpServer(source: McpToolSource, options: CodeMcpServerOptions): Promise<McpServer>;
83
87
  //#endregion
84
- export { type CodeMcpServerOptions, type CreateMcpToolProviderOptions, type McpToolClientSource, type McpToolProviderHandle, type McpToolServerSource, type McpToolSource, codeMcpServer, createMcpToolProvider, getMcpToolSourceServerInfo, openMcpToolProvider };
88
+ export { type CodeMcpServerOptions, type CreateMcpToolProviderOptions, type ExecuteError, type ExecuteErrorCode, type ExecuteResult, type ExecutionOptions, type Executor, type ExecutorRuntimeOptions, type JsonSchema, type McpToolClientSource, type McpToolProviderHandle, type McpToolServerSource, type McpToolSource, type ResolvedToolDescriptor, type ResolvedToolProvider, type ToolExecutionContext, codeMcpServer, createMcpToolProvider, getMcpToolSourceServerInfo, openMcpToolProvider };
85
89
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/mcp/createMcpToolProvider.ts","../../src/mcp/codeMcpServer.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAYA;AAQY,KARA,mBAAA,GAQmB;EAQnB,MAAA,EAfF,MAeE;EAUI,UAAA,CAAA,EAxBD,cAwBC;AAiBhB,CAAA;AAUA;;;AAMe,KAnDH,mBAAA,GAmDG;EAAO,MAAA,EAlDZ,SAkDY;EAqEA,UAAA,CAAA,EAtHP,cAsH0B;CAC/B;;;;AAEA,KAnHE,aAAA,GAAgB,mBAmHlB,GAnHwC,mBAmHxC;AAsDV;;;AAGW,iBAlKK,0BAAA,CAkKL,MAAA,EAjKD,aAiKC,CAAA,EAhKR,cAgKQ,GAAA,SAAA;;;;UAjJM,4BAAA;;ECxCA,SAAA,CAAA,EAAA,MAAA;EAEL;EAEG,UAAA,CAAA,EDwCA,cCxCA;;;AAqLf;;AAEW,UDzIM,qBAAA,CCyIN;EACA;EAAR,QAAA,EDxIS,oBCwIT;EAAO;eDtIK;;eAEA;;;;;iBAqEO,mBAAA,SACZ,yBACC,+BACR,QAAQ;;;;iBAsDW,qBAAA,SACZ,+BACC,+BACR,QAAQ;;;;;AA5LX;AAQY,UCLK,oBAAA,SAA6B,4BDOjB,CAAA;EAMjB;EAUI,QAAA,ECrBJ,QDqBI;EAiBC;EAUA,UAAA,CAAA,EC9CF,cD8CuB;EAE1B;EAEG,YAAA,CAAA,EAAA,MAAA;EAEA;EAAO,IAAA,CAAA,EAAA,MAAA,GAAA,QAAA,GAAA,OAAA;EAqEA;EACZ,KAAA,CAAA,EAAA;IACC,OAAA,CAAA,EAAA,MAAA;IACA,MAAA,CAAA,EAAA,MAAA;IAAR,MAAA,CAAA,EAAA,MAAA;EAAO,CAAA;AAsDV;;;;AAGG,iBCAmB,aAAA,CDAnB,MAAA,ECCO,aDDP,EAAA,OAAA,ECEQ,oBDFR,CAAA,ECGA,ODHA,CCGQ,SDHR,CAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/mcp/createMcpToolProvider.ts","../../src/mcp/codeMcpServer.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
- import { h as ResolvedToolProvider, t as Executor } from "../executor-C0lf5vWT.js";
1
+ /**
2
+ * @packageDocumentation
3
+ * Public TypeScript declarations for this package entrypoint.
4
+ */
5
+ import { d as ExecuteError, f as ExecuteErrorCode, g as ResolvedToolProvider, h as ResolvedToolDescriptor, i as ExecutorRuntimeOptions, m as JsonSchema, p as ExecuteResult, r as ExecutionOptions, t as Executor, v as ToolExecutionContext } from "../executor-DgNzFGsH.js";
2
6
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
7
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
4
8
  import { Implementation } from "@modelcontextprotocol/sdk/types.js";
@@ -81,5 +85,5 @@ interface CodeMcpServerOptions extends CreateMcpToolProviderOptions {
81
85
  */
82
86
  declare function codeMcpServer(source: McpToolSource, options: CodeMcpServerOptions): Promise<McpServer>;
83
87
  //#endregion
84
- export { type CodeMcpServerOptions, type CreateMcpToolProviderOptions, type McpToolClientSource, type McpToolProviderHandle, type McpToolServerSource, type McpToolSource, codeMcpServer, createMcpToolProvider, getMcpToolSourceServerInfo, openMcpToolProvider };
88
+ export { type CodeMcpServerOptions, type CreateMcpToolProviderOptions, type ExecuteError, type ExecuteErrorCode, type ExecuteResult, type ExecutionOptions, type Executor, type ExecutorRuntimeOptions, type JsonSchema, type McpToolClientSource, type McpToolProviderHandle, type McpToolServerSource, type McpToolSource, type ResolvedToolDescriptor, type ResolvedToolProvider, type ToolExecutionContext, codeMcpServer, createMcpToolProvider, getMcpToolSourceServerInfo, openMcpToolProvider };
85
89
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/mcp/createMcpToolProvider.ts","../../src/mcp/codeMcpServer.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAYA;AAQY,KARA,mBAAA,GAQmB;EAQnB,MAAA,EAfF,MAeE;EAUI,UAAA,CAAA,EAxBD,cAwBC;AAiBhB,CAAA;AAUA;;;AAMe,KAnDH,mBAAA,GAmDG;EAAO,MAAA,EAlDZ,SAkDY;EAqEA,UAAA,CAAA,EAtHP,cAsH0B;CAC/B;;;;AAEA,KAnHE,aAAA,GAAgB,mBAmHlB,GAnHwC,mBAmHxC;AAsDV;;;AAGW,iBAlKK,0BAAA,CAkKL,MAAA,EAjKD,aAiKC,CAAA,EAhKR,cAgKQ,GAAA,SAAA;;;;UAjJM,4BAAA;;ECxCA,SAAA,CAAA,EAAA,MAAA;EAEL;EAEG,UAAA,CAAA,EDwCA,cCxCA;;;AAqLf;;AAEW,UDzIM,qBAAA,CCyIN;EACA;EAAR,QAAA,EDxIS,oBCwIT;EAAO;eDtIK;;eAEA;;;;;iBAqEO,mBAAA,SACZ,yBACC,+BACR,QAAQ;;;;iBAsDW,qBAAA,SACZ,+BACC,+BACR,QAAQ;;;;;AA5LX;AAQY,UCLK,oBAAA,SAA6B,4BDOjB,CAAA;EAMjB;EAUI,QAAA,ECrBJ,QDqBI;EAiBC;EAUA,UAAA,CAAA,EC9CF,cD8CuB;EAE1B;EAEG,YAAA,CAAA,EAAA,MAAA;EAEA;EAAO,IAAA,CAAA,EAAA,MAAA,GAAA,QAAA,GAAA,OAAA;EAqEA;EACZ,KAAA,CAAA,EAAA;IACC,OAAA,CAAA,EAAA,MAAA;IACA,MAAA,CAAA,EAAA,MAAA;IAAR,MAAA,CAAA,EAAA,MAAA;EAAO,CAAA;AAsDV;;;;AAGG,iBCAmB,aAAA,CDAnB,MAAA,ECCO,aDDP,EAAA,OAAA,ECEQ,oBDFR,CAAA,ECGA,ODHA,CCGQ,SDHR,CAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/mcp/createMcpToolProvider.ts","../../src/mcp/codeMcpServer.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/mcp/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as renderNamespaceDeclaration, i as renderDocComment, r as schemaToType, t as resolveProvider } from "../resolveProvider-CUxAvFCK.js";
1
+ import { a as renderNamespaceDeclaration, i as renderDocComment, r as schemaToType, t as resolveProvider } from "../resolveProvider-Cqe2G7Dc.js";
2
2
  import * as z from "zod";
3
3
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
4
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
@@ -42,6 +42,14 @@ const RESERVED_WORDS = new Set([
42
42
  "with",
43
43
  "yield"
44
44
  ]);
45
+ const UNDERSCORE_CHAR_CODE = 95;
46
+ function trimEdgeUnderscores(value) {
47
+ let start = 0;
48
+ let end = value.length;
49
+ while (start < end && value.charCodeAt(start) === UNDERSCORE_CHAR_CODE) start += 1;
50
+ while (end > start && value.charCodeAt(end - 1) === UNDERSCORE_CHAR_CODE) end -= 1;
51
+ return value.slice(start, end);
52
+ }
45
53
  /**
46
54
  * Returns whether the value is a valid JavaScript identifier.
47
55
  */
@@ -64,8 +72,8 @@ function assertValidIdentifier(value, label = "identifier") {
64
72
  * Converts a raw identifier-like value into a safe JavaScript identifier.
65
73
  */
66
74
  function sanitizeIdentifier(value) {
67
- const sanitized = value.trim().replace(/[^A-Za-z0-9_$]+/g, "_").replace(/^_+|_+$/g, "");
68
- let safeName = sanitized.length > 0 ? sanitized : "_";
75
+ const trimmed = trimEdgeUnderscores(value.trim().replace(/[^A-Za-z0-9_$]+/g, "_"));
76
+ let safeName = trimmed.length > 0 ? trimmed : "_";
69
77
  if (/^[0-9]/.test(safeName)) safeName = `_${safeName}`;
70
78
  if (isReservedWord(safeName)) safeName = `${safeName}_`;
71
79
  return safeName;
@@ -335,4 +343,4 @@ function resolveProvider(provider) {
335
343
 
336
344
  //#endregion
337
345
  export { renderNamespaceDeclaration as a, isJsonSerializable as c, isReservedWord as d, isValidIdentifier as f, renderDocComment as i, sanitizeToolName as l, serializePropertyName as m, generateTypesFromJsonSchema as n, ExecuteFailure as o, sanitizeIdentifier as p, schemaToType as r, isExecuteFailure as s, resolveProvider as t, assertValidIdentifier as u };
338
- //# sourceMappingURL=resolveProvider-CUxAvFCK.js.map
346
+ //# sourceMappingURL=resolveProvider-Cqe2G7Dc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveProvider-Cqe2G7Dc.js","names":["isRecord","lines: string[]","originalToSafeName: Record<string, string>","safeToOriginalName: Record<string, string>","resolvedTools: Record<string, ResolvedToolDescriptor>","typegenTools: Record<string, TypegenToolDescriptor>"],"sources":["../src/identifier.ts","../src/sanitize.ts","../src/errors.ts","../src/schema/normalizeSchema.ts","../src/typegen/render.ts","../src/typegen/jsonSchema.ts","../src/provider/resolveProvider.ts"],"sourcesContent":["const RESERVED_WORDS = new Set([\n \"await\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"enum\",\n \"export\",\n \"extends\",\n \"false\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"null\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"true\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n]);\n\nconst UNDERSCORE_CHAR_CODE = 95;\n\nfunction trimEdgeUnderscores(value: string): string {\n let start = 0;\n let end = value.length;\n\n while (start < end && value.charCodeAt(start) === UNDERSCORE_CHAR_CODE) {\n start += 1;\n }\n\n while (end > start && value.charCodeAt(end - 1) === UNDERSCORE_CHAR_CODE) {\n end -= 1;\n }\n\n return value.slice(start, end);\n}\n\n/**\n * Returns whether the value is a valid JavaScript identifier.\n */\nexport function isValidIdentifier(value: string): boolean {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value);\n}\n\n/**\n * Returns whether the identifier is reserved in JavaScript source.\n */\nexport function isReservedWord(value: string): boolean {\n return RESERVED_WORDS.has(value);\n}\n\n/**\n * Throws when the value cannot be used as a bare JavaScript identifier.\n */\nexport function assertValidIdentifier(\n value: string,\n label = \"identifier\",\n): void {\n if (!isValidIdentifier(value) || isReservedWord(value)) {\n throw new Error(`Invalid ${label}: ${value}`);\n }\n}\n\n/**\n * Converts a raw identifier-like value into a safe JavaScript identifier.\n */\nexport function sanitizeIdentifier(value: string): string {\n const sanitized = value.trim().replace(/[^A-Za-z0-9_$]+/g, \"_\");\n\n const trimmed = trimEdgeUnderscores(sanitized);\n\n let safeName = trimmed.length > 0 ? trimmed : \"_\";\n\n if (/^[0-9]/.test(safeName)) {\n safeName = `_${safeName}`;\n }\n\n if (isReservedWord(safeName)) {\n safeName = `${safeName}_`;\n }\n\n return safeName;\n}\n\n/**\n * Renders the name as a bare identifier when possible, otherwise as a string literal.\n */\nexport function serializePropertyName(name: string): string {\n return isValidIdentifier(name) ? name : JSON.stringify(name);\n}\n","import { sanitizeIdentifier } from \"./identifier\";\n\n/**\n * Converts a raw tool name into a safe JavaScript identifier.\n */\nexport function sanitizeToolName(name: string): string {\n return sanitizeIdentifier(name);\n}\n","import type { ExecuteErrorCode } from \"./types\";\n\n/**\n * Structured failure used internally to propagate executor and tool errors.\n */\nexport class ExecuteFailure extends Error {\n code: ExecuteErrorCode;\n\n /**\n * Creates a structured failure with a trusted executor or tool error code.\n */\n constructor(code: ExecuteErrorCode, message: string) {\n super(message);\n this.code = code;\n this.name = \"ExecuteFailure\";\n }\n}\n\n/**\n * Returns whether a thrown value is an {@link ExecuteFailure}.\n */\nexport function isExecuteFailure(value: unknown): value is ExecuteFailure {\n return value instanceof ExecuteFailure;\n}\n\n/**\n * Returns whether a value can be serialized through the JSON-only host/guest boundary.\n */\nexport function isJsonSerializable(\n value: unknown,\n active = new Set<object>(),\n memo = new WeakSet<object>(),\n): boolean {\n if (value === null) {\n return true;\n }\n\n switch (typeof value) {\n case \"string\":\n case \"boolean\":\n return true;\n case \"number\":\n return Number.isFinite(value);\n case \"bigint\":\n case \"function\":\n case \"symbol\":\n case \"undefined\":\n return false;\n case \"object\": {\n const objectValue = value as object;\n\n if (memo.has(objectValue)) {\n return true;\n }\n\n if (active.has(objectValue)) {\n return false;\n }\n\n active.add(objectValue);\n let isSerializable = false;\n\n try {\n if (Array.isArray(value)) {\n isSerializable = value.every((item) =>\n isJsonSerializable(item, active, memo),\n );\n return isSerializable;\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return false;\n }\n\n isSerializable = Object.values(value).every((item) =>\n isJsonSerializable(item, active, memo),\n );\n return isSerializable;\n } finally {\n active.delete(objectValue);\n if (isSerializable) {\n memo.add(objectValue);\n }\n }\n }\n }\n\n return false;\n}\n","import * as zod from \"zod\";\nimport type { ZodRawShape, ZodTypeAny } from \"zod\";\n\nimport type { JsonSchema, ToolSchema } from \"../types\";\n\nconst z = \"z\" in zod && typeof zod.z === \"object\" ? zod.z : zod;\nconst toJsonSchema =\n (\"toJSONSchema\" in zod ? zod.toJSONSchema : undefined) ??\n (\"toJSONSchema\" in z ? z.toJSONSchema : undefined);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isZodSchema(value: unknown): value is ZodTypeAny {\n return isRecord(value) && typeof value.safeParse === \"function\";\n}\n\nfunction isZodRawShape(value: unknown): value is ZodRawShape {\n return (\n isRecord(value) &&\n Object.keys(value).length > 0 &&\n Object.values(value).every(isZodSchema)\n );\n}\n\nfunction normalizeZodSchema(schema: ZodTypeAny): JsonSchema {\n if (typeof toJsonSchema !== \"function\") {\n throw new Error(\"Installed zod package does not expose toJSONSchema\");\n }\n\n const jsonSchema = toJsonSchema(schema) as JsonSchema & {\n $schema?: string;\n };\n\n if (\"$schema\" in jsonSchema) {\n const { $schema: _ignored, ...rest } = jsonSchema;\n return rest;\n }\n\n return jsonSchema;\n}\n\n/**\n * Normalizes supported tool schema inputs to the JSON Schema form used internally.\n */\nexport function normalizeToolSchema(\n schema: ToolSchema | undefined,\n phase: \"input\" | \"output\",\n toolName: string,\n): JsonSchema | undefined {\n if (schema === undefined) {\n return undefined;\n }\n\n if (isZodSchema(schema)) {\n return normalizeZodSchema(schema);\n }\n\n if (isZodRawShape(schema)) {\n return normalizeZodSchema(z.object(schema));\n }\n\n if (isRecord(schema)) {\n return schema;\n }\n\n throw new Error(\n `Unsupported ${phase} schema for tool ${toolName}. Expected JSON Schema, a Zod schema, or an MCP-style Zod shape.`,\n );\n}\n","/**\n * Indents each line of the given string by a specified number of levels.\n */\nexport function indent(value: string, level = 1): string {\n return value\n .split(\"\\n\")\n .map((line) => `${\" \".repeat(level)}${line}`)\n .join(\"\\n\");\n}\n\n/**\n * Renders a short TSDoc-style block when documentation is available.\n */\nexport function renderDocComment(lines: string[]): string {\n if (lines.length === 0) {\n return \"\";\n }\n\n return [\"/**\", ...lines.map((line) => ` * ${line}`), \" */\"].join(\"\\n\");\n}\n\n/**\n * Renders a namespace declaration with optional members.\n */\nexport function renderNamespaceDeclaration(\n name: string,\n members: string[],\n): string {\n if (members.length === 0) {\n return `declare namespace ${name} {}`;\n }\n\n return `declare namespace ${name} {\\n${indent(members.join(\"\\n\\n\"))}\\n}`;\n}\n","import { isValidIdentifier, serializePropertyName } from \"../identifier\";\nimport type { JsonSchema, TypegenToolDescriptor } from \"../types\";\nimport { indent, renderDocComment, renderNamespaceDeclaration } from \"./render\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport { indent } from \"./render\";\n\n/**\n * Converts a supported JSON Schema fragment into a TypeScript type expression.\n */\nexport function schemaToType(\n schema: JsonSchema | undefined,\n level = 0,\n): string {\n if (!schema) {\n return \"unknown\";\n }\n\n if (\n \"allOf\" in schema ||\n \"anyOf\" in schema ||\n \"oneOf\" in schema ||\n \"$ref\" in schema ||\n Array.isArray(schema.type)\n ) {\n return \"unknown\";\n }\n\n switch (schema.type) {\n case \"string\":\n return \"string\";\n case \"number\":\n case \"integer\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"null\":\n return \"null\";\n case \"array\": {\n const itemType = schemaToType(\n isRecord(schema.items) ? (schema.items as JsonSchema) : undefined,\n level + 1,\n );\n\n if (isValidIdentifier(itemType)) {\n return `${itemType}[]`;\n }\n\n return `Array<${itemType}>`;\n }\n case \"object\": {\n const properties = isRecord(schema.properties) ? schema.properties : {};\n const required = new Set(\n Array.isArray(schema.required)\n ? schema.required.filter(\n (value): value is string => typeof value === \"string\",\n )\n : [],\n );\n const entries = Object.entries(properties);\n\n if (entries.length === 0) {\n return \"Record<string, unknown>\";\n }\n\n const lines = entries.map(([name, propertySchema]) => {\n const propertyType = schemaToType(\n isRecord(propertySchema) ? (propertySchema as JsonSchema) : undefined,\n level + 1,\n );\n const optionalToken = required.has(name) ? \"\" : \"?\";\n return `${serializePropertyName(name)}${optionalToken}: ${propertyType};`;\n });\n\n return `{\\n${indent(lines.join(\"\\n\"), level + 1)}\\n${\" \".repeat(level)}}`;\n }\n default:\n return \"unknown\";\n }\n}\n\nfunction formatToolDeclaration(\n name: string,\n tool: TypegenToolDescriptor,\n): string {\n const lines: string[] = [];\n const comment = tool.description ? renderDocComment([tool.description]) : \"\";\n if (comment) {\n lines.push(comment);\n }\n\n const inputType = schemaToType(tool.inputSchema);\n const outputType = schemaToType(tool.outputSchema);\n lines.push(`function ${name}(input: ${inputType}): Promise<${outputType}>;`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates a namespace declaration for a provider's tool schemas.\n */\nexport function generateTypesFromJsonSchema(\n providerName: string,\n tools: Record<string, TypegenToolDescriptor>,\n): string {\n return renderNamespaceDeclaration(\n providerName,\n Object.entries(tools).map(([name, tool]) =>\n formatToolDeclaration(name, tool),\n ),\n );\n}\n","import Ajv, { type AnySchemaObject, type ValidateFunction } from \"ajv\";\n\nimport {\n ExecuteFailure,\n isExecuteFailure,\n isJsonSerializable,\n} from \"../errors\";\nimport { assertValidIdentifier } from \"../identifier\";\nimport { sanitizeToolName } from \"../sanitize\";\nimport { normalizeToolSchema } from \"../schema/normalizeSchema\";\nimport { generateTypesFromJsonSchema } from \"../typegen/jsonSchema\";\nimport type {\n JsonSchema,\n ResolvedToolDescriptor,\n ResolvedToolProvider,\n ToolExecutionContext,\n ToolProvider,\n TypegenToolDescriptor,\n} from \"../types\";\n\nconst DEFAULT_PROVIDER_NAME = \"codemode\";\nfunction assertValidNamespace(name: string): void {\n assertValidIdentifier(name, \"provider namespace\");\n}\n\nfunction compileValidator(\n ajv: Ajv,\n schema: JsonSchema | undefined,\n): ValidateFunction | undefined {\n return schema ? ajv.compile(schema as AnySchemaObject) : undefined;\n}\n\nfunction formatValidationMessage(\n ajv: Ajv,\n phase: \"input\" | \"output\",\n toolName: string,\n validator: ValidateFunction,\n): string {\n return `Invalid ${phase} for tool ${toolName}: ${ajv.errorsText(validator.errors)}`;\n}\n\n/**\n * Resolves a tool provider into the validated, sanitized shape consumed by executors.\n */\nexport function resolveProvider(provider: ToolProvider): ResolvedToolProvider {\n const name = provider.name ?? DEFAULT_PROVIDER_NAME;\n assertValidNamespace(name);\n\n // strict: false allows schemas with extra keywords (e.g. Zod-generated $schema)\n // that don't conform to the strict JSON Schema vocabulary.\n const ajv = new Ajv({\n allErrors: true,\n strict: false,\n });\n\n const originalToSafeName: Record<string, string> = {};\n const safeToOriginalName: Record<string, string> = {};\n const usedSafeNames = new Set<string>();\n const resolvedTools: Record<string, ResolvedToolDescriptor> = {};\n const typegenTools: Record<string, TypegenToolDescriptor> = {};\n\n for (const [originalName, descriptor] of Object.entries(provider.tools)) {\n const baseSafeName = sanitizeToolName(originalName);\n let safeName = baseSafeName;\n let suffix = 2;\n\n while (usedSafeNames.has(safeName)) {\n safeName = `${baseSafeName}__${suffix}`;\n suffix += 1;\n }\n\n usedSafeNames.add(safeName);\n originalToSafeName[originalName] = safeName;\n safeToOriginalName[safeName] = originalName;\n\n const inputSchema = normalizeToolSchema(\n descriptor.inputSchema,\n \"input\",\n originalName,\n );\n const outputSchema = normalizeToolSchema(\n descriptor.outputSchema,\n \"output\",\n originalName,\n );\n const inputValidator = compileValidator(ajv, inputSchema);\n const outputValidator = compileValidator(ajv, outputSchema);\n\n resolvedTools[safeName] = {\n description: descriptor.description,\n execute: async (\n input: unknown,\n context: ToolExecutionContext,\n ): Promise<unknown> => {\n if (inputValidator && !inputValidator(input)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(ajv, \"input\", originalName, inputValidator),\n );\n }\n\n try {\n const result = await descriptor.execute(input, context);\n\n if (!isJsonSerializable(result)) {\n throw new ExecuteFailure(\n \"serialization_error\",\n `Tool ${originalName} returned a non-serializable value`,\n );\n }\n\n if (outputValidator && !outputValidator(result)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(\n ajv,\n \"output\",\n originalName,\n outputValidator,\n ),\n );\n }\n\n return result;\n } catch (error) {\n if (isExecuteFailure(error)) {\n throw error;\n }\n\n throw new ExecuteFailure(\n \"tool_error\",\n error instanceof Error\n ? error.message\n : `Tool ${originalName} failed`,\n );\n }\n },\n inputSchema,\n originalName,\n outputSchema,\n safeName,\n };\n\n typegenTools[safeName] = {\n description: descriptor.description,\n inputSchema,\n outputSchema,\n };\n }\n\n return {\n name,\n originalToSafeName,\n safeToOriginalName,\n tools: resolvedTools,\n types: provider.types ?? generateTypesFromJsonSchema(name, typegenTools),\n };\n}\n"],"mappings":"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"}
@@ -71,6 +71,14 @@ const RESERVED_WORDS = new Set([
71
71
  "with",
72
72
  "yield"
73
73
  ]);
74
+ const UNDERSCORE_CHAR_CODE = 95;
75
+ function trimEdgeUnderscores(value) {
76
+ let start = 0;
77
+ let end = value.length;
78
+ while (start < end && value.charCodeAt(start) === UNDERSCORE_CHAR_CODE) start += 1;
79
+ while (end > start && value.charCodeAt(end - 1) === UNDERSCORE_CHAR_CODE) end -= 1;
80
+ return value.slice(start, end);
81
+ }
74
82
  /**
75
83
  * Returns whether the value is a valid JavaScript identifier.
76
84
  */
@@ -93,8 +101,8 @@ function assertValidIdentifier(value, label = "identifier") {
93
101
  * Converts a raw identifier-like value into a safe JavaScript identifier.
94
102
  */
95
103
  function sanitizeIdentifier(value) {
96
- const sanitized = value.trim().replace(/[^A-Za-z0-9_$]+/g, "_").replace(/^_+|_+$/g, "");
97
- let safeName = sanitized.length > 0 ? sanitized : "_";
104
+ const trimmed = trimEdgeUnderscores(value.trim().replace(/[^A-Za-z0-9_$]+/g, "_"));
105
+ let safeName = trimmed.length > 0 ? trimmed : "_";
98
106
  if (/^[0-9]/.test(safeName)) safeName = `_${safeName}`;
99
107
  if (isReservedWord(safeName)) safeName = `${safeName}_`;
100
108
  return safeName;
@@ -453,4 +461,4 @@ Object.defineProperty(exports, 'serializePropertyName', {
453
461
  return serializePropertyName;
454
462
  }
455
463
  });
456
- //# sourceMappingURL=resolveProvider-CixOjPKp.cjs.map
464
+ //# sourceMappingURL=resolveProvider-Dt30Su4V.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveProvider-Dt30Su4V.cjs","names":["isRecord","lines: string[]","ajv","Ajv","originalToSafeName: Record<string, string>","safeToOriginalName: Record<string, string>","resolvedTools: Record<string, ResolvedToolDescriptor>","typegenTools: Record<string, TypegenToolDescriptor>"],"sources":["../src/identifier.ts","../src/sanitize.ts","../src/errors.ts","../src/schema/normalizeSchema.ts","../src/typegen/render.ts","../src/typegen/jsonSchema.ts","../src/provider/resolveProvider.ts"],"sourcesContent":["const RESERVED_WORDS = new Set([\n \"await\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"enum\",\n \"export\",\n \"extends\",\n \"false\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"null\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"true\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n]);\n\nconst UNDERSCORE_CHAR_CODE = 95;\n\nfunction trimEdgeUnderscores(value: string): string {\n let start = 0;\n let end = value.length;\n\n while (start < end && value.charCodeAt(start) === UNDERSCORE_CHAR_CODE) {\n start += 1;\n }\n\n while (end > start && value.charCodeAt(end - 1) === UNDERSCORE_CHAR_CODE) {\n end -= 1;\n }\n\n return value.slice(start, end);\n}\n\n/**\n * Returns whether the value is a valid JavaScript identifier.\n */\nexport function isValidIdentifier(value: string): boolean {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value);\n}\n\n/**\n * Returns whether the identifier is reserved in JavaScript source.\n */\nexport function isReservedWord(value: string): boolean {\n return RESERVED_WORDS.has(value);\n}\n\n/**\n * Throws when the value cannot be used as a bare JavaScript identifier.\n */\nexport function assertValidIdentifier(\n value: string,\n label = \"identifier\",\n): void {\n if (!isValidIdentifier(value) || isReservedWord(value)) {\n throw new Error(`Invalid ${label}: ${value}`);\n }\n}\n\n/**\n * Converts a raw identifier-like value into a safe JavaScript identifier.\n */\nexport function sanitizeIdentifier(value: string): string {\n const sanitized = value.trim().replace(/[^A-Za-z0-9_$]+/g, \"_\");\n\n const trimmed = trimEdgeUnderscores(sanitized);\n\n let safeName = trimmed.length > 0 ? trimmed : \"_\";\n\n if (/^[0-9]/.test(safeName)) {\n safeName = `_${safeName}`;\n }\n\n if (isReservedWord(safeName)) {\n safeName = `${safeName}_`;\n }\n\n return safeName;\n}\n\n/**\n * Renders the name as a bare identifier when possible, otherwise as a string literal.\n */\nexport function serializePropertyName(name: string): string {\n return isValidIdentifier(name) ? name : JSON.stringify(name);\n}\n","import { sanitizeIdentifier } from \"./identifier\";\n\n/**\n * Converts a raw tool name into a safe JavaScript identifier.\n */\nexport function sanitizeToolName(name: string): string {\n return sanitizeIdentifier(name);\n}\n","import type { ExecuteErrorCode } from \"./types\";\n\n/**\n * Structured failure used internally to propagate executor and tool errors.\n */\nexport class ExecuteFailure extends Error {\n code: ExecuteErrorCode;\n\n /**\n * Creates a structured failure with a trusted executor or tool error code.\n */\n constructor(code: ExecuteErrorCode, message: string) {\n super(message);\n this.code = code;\n this.name = \"ExecuteFailure\";\n }\n}\n\n/**\n * Returns whether a thrown value is an {@link ExecuteFailure}.\n */\nexport function isExecuteFailure(value: unknown): value is ExecuteFailure {\n return value instanceof ExecuteFailure;\n}\n\n/**\n * Returns whether a value can be serialized through the JSON-only host/guest boundary.\n */\nexport function isJsonSerializable(\n value: unknown,\n active = new Set<object>(),\n memo = new WeakSet<object>(),\n): boolean {\n if (value === null) {\n return true;\n }\n\n switch (typeof value) {\n case \"string\":\n case \"boolean\":\n return true;\n case \"number\":\n return Number.isFinite(value);\n case \"bigint\":\n case \"function\":\n case \"symbol\":\n case \"undefined\":\n return false;\n case \"object\": {\n const objectValue = value as object;\n\n if (memo.has(objectValue)) {\n return true;\n }\n\n if (active.has(objectValue)) {\n return false;\n }\n\n active.add(objectValue);\n let isSerializable = false;\n\n try {\n if (Array.isArray(value)) {\n isSerializable = value.every((item) =>\n isJsonSerializable(item, active, memo),\n );\n return isSerializable;\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return false;\n }\n\n isSerializable = Object.values(value).every((item) =>\n isJsonSerializable(item, active, memo),\n );\n return isSerializable;\n } finally {\n active.delete(objectValue);\n if (isSerializable) {\n memo.add(objectValue);\n }\n }\n }\n }\n\n return false;\n}\n","import * as zod from \"zod\";\nimport type { ZodRawShape, ZodTypeAny } from \"zod\";\n\nimport type { JsonSchema, ToolSchema } from \"../types\";\n\nconst z = \"z\" in zod && typeof zod.z === \"object\" ? zod.z : zod;\nconst toJsonSchema =\n (\"toJSONSchema\" in zod ? zod.toJSONSchema : undefined) ??\n (\"toJSONSchema\" in z ? z.toJSONSchema : undefined);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isZodSchema(value: unknown): value is ZodTypeAny {\n return isRecord(value) && typeof value.safeParse === \"function\";\n}\n\nfunction isZodRawShape(value: unknown): value is ZodRawShape {\n return (\n isRecord(value) &&\n Object.keys(value).length > 0 &&\n Object.values(value).every(isZodSchema)\n );\n}\n\nfunction normalizeZodSchema(schema: ZodTypeAny): JsonSchema {\n if (typeof toJsonSchema !== \"function\") {\n throw new Error(\"Installed zod package does not expose toJSONSchema\");\n }\n\n const jsonSchema = toJsonSchema(schema) as JsonSchema & {\n $schema?: string;\n };\n\n if (\"$schema\" in jsonSchema) {\n const { $schema: _ignored, ...rest } = jsonSchema;\n return rest;\n }\n\n return jsonSchema;\n}\n\n/**\n * Normalizes supported tool schema inputs to the JSON Schema form used internally.\n */\nexport function normalizeToolSchema(\n schema: ToolSchema | undefined,\n phase: \"input\" | \"output\",\n toolName: string,\n): JsonSchema | undefined {\n if (schema === undefined) {\n return undefined;\n }\n\n if (isZodSchema(schema)) {\n return normalizeZodSchema(schema);\n }\n\n if (isZodRawShape(schema)) {\n return normalizeZodSchema(z.object(schema));\n }\n\n if (isRecord(schema)) {\n return schema;\n }\n\n throw new Error(\n `Unsupported ${phase} schema for tool ${toolName}. Expected JSON Schema, a Zod schema, or an MCP-style Zod shape.`,\n );\n}\n","/**\n * Indents each line of the given string by a specified number of levels.\n */\nexport function indent(value: string, level = 1): string {\n return value\n .split(\"\\n\")\n .map((line) => `${\" \".repeat(level)}${line}`)\n .join(\"\\n\");\n}\n\n/**\n * Renders a short TSDoc-style block when documentation is available.\n */\nexport function renderDocComment(lines: string[]): string {\n if (lines.length === 0) {\n return \"\";\n }\n\n return [\"/**\", ...lines.map((line) => ` * ${line}`), \" */\"].join(\"\\n\");\n}\n\n/**\n * Renders a namespace declaration with optional members.\n */\nexport function renderNamespaceDeclaration(\n name: string,\n members: string[],\n): string {\n if (members.length === 0) {\n return `declare namespace ${name} {}`;\n }\n\n return `declare namespace ${name} {\\n${indent(members.join(\"\\n\\n\"))}\\n}`;\n}\n","import { isValidIdentifier, serializePropertyName } from \"../identifier\";\nimport type { JsonSchema, TypegenToolDescriptor } from \"../types\";\nimport { indent, renderDocComment, renderNamespaceDeclaration } from \"./render\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport { indent } from \"./render\";\n\n/**\n * Converts a supported JSON Schema fragment into a TypeScript type expression.\n */\nexport function schemaToType(\n schema: JsonSchema | undefined,\n level = 0,\n): string {\n if (!schema) {\n return \"unknown\";\n }\n\n if (\n \"allOf\" in schema ||\n \"anyOf\" in schema ||\n \"oneOf\" in schema ||\n \"$ref\" in schema ||\n Array.isArray(schema.type)\n ) {\n return \"unknown\";\n }\n\n switch (schema.type) {\n case \"string\":\n return \"string\";\n case \"number\":\n case \"integer\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"null\":\n return \"null\";\n case \"array\": {\n const itemType = schemaToType(\n isRecord(schema.items) ? (schema.items as JsonSchema) : undefined,\n level + 1,\n );\n\n if (isValidIdentifier(itemType)) {\n return `${itemType}[]`;\n }\n\n return `Array<${itemType}>`;\n }\n case \"object\": {\n const properties = isRecord(schema.properties) ? schema.properties : {};\n const required = new Set(\n Array.isArray(schema.required)\n ? schema.required.filter(\n (value): value is string => typeof value === \"string\",\n )\n : [],\n );\n const entries = Object.entries(properties);\n\n if (entries.length === 0) {\n return \"Record<string, unknown>\";\n }\n\n const lines = entries.map(([name, propertySchema]) => {\n const propertyType = schemaToType(\n isRecord(propertySchema) ? (propertySchema as JsonSchema) : undefined,\n level + 1,\n );\n const optionalToken = required.has(name) ? \"\" : \"?\";\n return `${serializePropertyName(name)}${optionalToken}: ${propertyType};`;\n });\n\n return `{\\n${indent(lines.join(\"\\n\"), level + 1)}\\n${\" \".repeat(level)}}`;\n }\n default:\n return \"unknown\";\n }\n}\n\nfunction formatToolDeclaration(\n name: string,\n tool: TypegenToolDescriptor,\n): string {\n const lines: string[] = [];\n const comment = tool.description ? renderDocComment([tool.description]) : \"\";\n if (comment) {\n lines.push(comment);\n }\n\n const inputType = schemaToType(tool.inputSchema);\n const outputType = schemaToType(tool.outputSchema);\n lines.push(`function ${name}(input: ${inputType}): Promise<${outputType}>;`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates a namespace declaration for a provider's tool schemas.\n */\nexport function generateTypesFromJsonSchema(\n providerName: string,\n tools: Record<string, TypegenToolDescriptor>,\n): string {\n return renderNamespaceDeclaration(\n providerName,\n Object.entries(tools).map(([name, tool]) =>\n formatToolDeclaration(name, tool),\n ),\n );\n}\n","import Ajv, { type AnySchemaObject, type ValidateFunction } from \"ajv\";\n\nimport {\n ExecuteFailure,\n isExecuteFailure,\n isJsonSerializable,\n} from \"../errors\";\nimport { assertValidIdentifier } from \"../identifier\";\nimport { sanitizeToolName } from \"../sanitize\";\nimport { normalizeToolSchema } from \"../schema/normalizeSchema\";\nimport { generateTypesFromJsonSchema } from \"../typegen/jsonSchema\";\nimport type {\n JsonSchema,\n ResolvedToolDescriptor,\n ResolvedToolProvider,\n ToolExecutionContext,\n ToolProvider,\n TypegenToolDescriptor,\n} from \"../types\";\n\nconst DEFAULT_PROVIDER_NAME = \"codemode\";\nfunction assertValidNamespace(name: string): void {\n assertValidIdentifier(name, \"provider namespace\");\n}\n\nfunction compileValidator(\n ajv: Ajv,\n schema: JsonSchema | undefined,\n): ValidateFunction | undefined {\n return schema ? ajv.compile(schema as AnySchemaObject) : undefined;\n}\n\nfunction formatValidationMessage(\n ajv: Ajv,\n phase: \"input\" | \"output\",\n toolName: string,\n validator: ValidateFunction,\n): string {\n return `Invalid ${phase} for tool ${toolName}: ${ajv.errorsText(validator.errors)}`;\n}\n\n/**\n * Resolves a tool provider into the validated, sanitized shape consumed by executors.\n */\nexport function resolveProvider(provider: ToolProvider): ResolvedToolProvider {\n const name = provider.name ?? DEFAULT_PROVIDER_NAME;\n assertValidNamespace(name);\n\n // strict: false allows schemas with extra keywords (e.g. Zod-generated $schema)\n // that don't conform to the strict JSON Schema vocabulary.\n const ajv = new Ajv({\n allErrors: true,\n strict: false,\n });\n\n const originalToSafeName: Record<string, string> = {};\n const safeToOriginalName: Record<string, string> = {};\n const usedSafeNames = new Set<string>();\n const resolvedTools: Record<string, ResolvedToolDescriptor> = {};\n const typegenTools: Record<string, TypegenToolDescriptor> = {};\n\n for (const [originalName, descriptor] of Object.entries(provider.tools)) {\n const baseSafeName = sanitizeToolName(originalName);\n let safeName = baseSafeName;\n let suffix = 2;\n\n while (usedSafeNames.has(safeName)) {\n safeName = `${baseSafeName}__${suffix}`;\n suffix += 1;\n }\n\n usedSafeNames.add(safeName);\n originalToSafeName[originalName] = safeName;\n safeToOriginalName[safeName] = originalName;\n\n const inputSchema = normalizeToolSchema(\n descriptor.inputSchema,\n \"input\",\n originalName,\n );\n const outputSchema = normalizeToolSchema(\n descriptor.outputSchema,\n \"output\",\n originalName,\n );\n const inputValidator = compileValidator(ajv, inputSchema);\n const outputValidator = compileValidator(ajv, outputSchema);\n\n resolvedTools[safeName] = {\n description: descriptor.description,\n execute: async (\n input: unknown,\n context: ToolExecutionContext,\n ): Promise<unknown> => {\n if (inputValidator && !inputValidator(input)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(ajv, \"input\", originalName, inputValidator),\n );\n }\n\n try {\n const result = await descriptor.execute(input, context);\n\n if (!isJsonSerializable(result)) {\n throw new ExecuteFailure(\n \"serialization_error\",\n `Tool ${originalName} returned a non-serializable value`,\n );\n }\n\n if (outputValidator && !outputValidator(result)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(\n ajv,\n \"output\",\n originalName,\n outputValidator,\n ),\n );\n }\n\n return result;\n } catch (error) {\n if (isExecuteFailure(error)) {\n throw error;\n }\n\n throw new ExecuteFailure(\n \"tool_error\",\n error instanceof Error\n ? error.message\n : `Tool ${originalName} failed`,\n );\n }\n },\n inputSchema,\n originalName,\n outputSchema,\n safeName,\n };\n\n typegenTools[safeName] = {\n description: descriptor.description,\n inputSchema,\n outputSchema,\n };\n }\n\n return {\n name,\n originalToSafeName,\n safeToOriginalName,\n tools: resolvedTools,\n types: provider.types ?? generateTypesFromJsonSchema(name, typegenTools),\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@execbox/core",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Core execution contract, provider resolution, and MCP adapters.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -12,12 +12,18 @@
12
12
  "types": "./dist/index.d.ts",
13
13
  "exports": {
14
14
  ".": {
15
- "types": "./dist/index.d.ts",
15
+ "types": {
16
+ "import": "./dist/index.d.ts",
17
+ "require": "./dist/index.d.cts"
18
+ },
16
19
  "import": "./dist/index.js",
17
20
  "require": "./dist/index.cjs"
18
21
  },
19
22
  "./mcp": {
20
- "types": "./dist/mcp/index.d.ts",
23
+ "types": {
24
+ "import": "./dist/mcp/index.d.ts",
25
+ "require": "./dist/mcp/index.d.cts"
26
+ },
21
27
  "import": "./dist/mcp/index.js",
22
28
  "require": "./dist/mcp/index.cjs"
23
29
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor-C0lf5vWT.d.ts","names":[],"sources":["../src/types.ts","../src/runner.ts","../src/executor/executor.ts"],"sourcesContent":[],"mappings":";;;;;;AAKA;AAKY,KALA,UAAA,GAAa,MAKH,CAAA,MAAA,EAAA,OAAA,CAAA;;;;AAAwC,KAAlD,UAAA,GAAa,UAAqC,GAAxB,UAAwB,GAAX,WAAW;AAK9D;AAYA;AAUA;AAiBiB,KAvCL,gBAAA,GAuCyB,SAE3B,GAAA,cAAW,GAAA,kBAAA,GAAA,YAAA,GAAA,eAAA,GAAA,qBAAA,GAAA,gBAAA;AAYrB;;;AAUa,UAnDI,YAAA,CAmDJ;EACN;EAAO,IAAA,EAlDN,gBAkDM;EAMG;EAYA,OAAA,EAAA,MAAA;;;;;AAYoD,KAxEzD,aAwEyD,CAAA,IAAA,OAAA,CAAA,GAAA;EAMpD,UAAA,EAAA,MAAA;EAIK,IAAA,EAAA,MAAA,EAAA;EAEA,EAAA,EAAA,IAAA;EAEE,MAAA,EAjFV,CAiFU;CAAf,GAAA;EAAM,UAAA,EAAA,MAAA;EAQH,KAAA,EArFC,YAqFD;EACV,IAAA,EAAA,MAAA,EAAA;EADkC,EAAA,EAAA,KAAA;CAIrB;;;;UAjFE,oBAAA;;UAEP;ECzCO;EASA,YAAA,EAAA,MAAgB;EAShB;EAUA,YAAA,EAAA,MAAiB;EAOjB;EASL,gBAAA,EAAc,MAAA;AA2B1B;AAsBA;;;AAGU,UD3CO,cAAA,CC2CP;EAAqB;EAAR,WAAA,CAAA,EAAA,MAAA;EAAO;gBDvCd;;iBAEC;EEpEA;EAGF,OAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EFqEF,oBErEE,EAAA,GFsER,OEtEQ,CAAA,OAAA,CAAA,GAAA,OAAA;;;;;UF4EE,YAAA;;;;SAIR,eAAe;;;;;;;UAQP,sBAAA;;;;gBAID;;iBAEC;;;;;;qCAMoB,yBAAyB;;;;;UAM7C,oBAAA;;;;sBAIK;;sBAEA;;SAEb,eAAe;;;;;;;KAQZ,qBAAA,GAAwB,KAClC,0EAGA,QAAQ,KAAK;;;;;AAlIf;AAKY,UCKK,oBAAA,CDLK;EAAG,WAAA,CAAA,EAAA,MAAA;EAAa,YAAA,EAAA,MAAA;EAAa,QAAA,EAAA,MAAA;;AAKnD;AAYA;AAUA;AAiBiB,UC9BA,gBAAA,CD8BoB;EAcpB,IAAA,EAAA,MAAA;EAID,KAAA,EC9CP,MD8CO,CAAA,MAAA,EC9CQ,oBD8CR,CAAA;EAEC,KAAA,EAAA,MAAA;;;;AAWjB;AAYiB,UChEA,sBAAA,CDgEsB;EAIvB,WAAA,CAAA,EAAA,MAAA;EAEC,WAAA,CAAA,EAAA,MAAA;EAMoB,gBAAA,CAAA,EAAA,MAAA;EAAyB,SAAA,CAAA,EAAA,MAAA;;AAM9D;;;AAQwB,UChFP,gBAAA,SAAyB,sBDgFlB,CAAA;EAAf,MAAA,CAAA,EC/EE,WD+EF;;AAQT;;;AAIe,UCrFE,QAAA,CDqFF;EAAL,KAAA,EAAA,OAAA;EAAR,YAAA,EAAA,MAAA;EAAO,YAAA,EAAA,MAAA;;;;ACxHT;AASiB,KAmCL,cAAA,GAnCqB;EAShB,EAAA,EAAA,IAAA;EAUA,MAAA,EAAA,OAAA;AAOjB,CAAA,GAAiB;EASL,KAAA,EAMC,YANa;EA2BV,EAAA,EAAA,KAAA;AAsBhB,CAAA;;;;AAG+B,iBAzBf,wBAAA,CAyBe,SAAA,EAxBlB,oBAwBkB,EAAA,CAAA,EAvB5B,gBAuB4B,EAAA;;;;iBAHf,wBAAA,YACH,gCACH,qBACA,aAAa,QAAQ;;;;AD1G/B;AAKA;AAAyB,UEJR,QAAA,CFIQ;EAAa,OAAA,CAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EEDvB,oBFCuB,EAAA,EAAA,OAAA,CAAA,EEAxB,gBFAwB,CAAA,EECjC,OFDiC,CECzB,aFDyB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor-DcnjQGwA.d.cts","names":[],"sources":["../src/types.ts","../src/runner.ts","../src/executor/executor.ts"],"sourcesContent":[],"mappings":";;;;;;AAKA;AAKY,KALA,UAAA,GAAa,MAKH,CAAA,MAAA,EAAA,OAAA,CAAA;;;;AAAwC,KAAlD,UAAA,GAAa,UAAqC,GAAxB,UAAwB,GAAX,WAAW;AAK9D;AAYA;AAUA;AAiBiB,KAvCL,gBAAA,GAuCyB,SAE3B,GAAA,cAAW,GAAA,kBAAA,GAAA,YAAA,GAAA,eAAA,GAAA,qBAAA,GAAA,gBAAA;AAYrB;;;AAUa,UAnDI,YAAA,CAmDJ;EACN;EAAO,IAAA,EAlDN,gBAkDM;EAMG;EAYA,OAAA,EAAA,MAAA;;;;;AAYoD,KAxEzD,aAwEyD,CAAA,IAAA,OAAA,CAAA,GAAA;EAMpD,UAAA,EAAA,MAAA;EAIK,IAAA,EAAA,MAAA,EAAA;EAEA,EAAA,EAAA,IAAA;EAEE,MAAA,EAjFV,CAiFU;CAAf,GAAA;EAAM,UAAA,EAAA,MAAA;EAQH,KAAA,EArFC,YAqFD;EACV,IAAA,EAAA,MAAA,EAAA;EADkC,EAAA,EAAA,KAAA;CAIrB;;;;UAjFE,oBAAA;;UAEP;ECzCO;EASA,YAAA,EAAA,MAAgB;EAShB;EAUA,YAAA,EAAA,MAAiB;EAOjB;EASL,gBAAA,EAAc,MAAA;AA2B1B;AAsBA;;;AAGU,UD3CO,cAAA,CC2CP;EAAqB;EAAR,WAAA,CAAA,EAAA,MAAA;EAAO;gBDvCd;;iBAEC;EEpEA;EAGF,OAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EFqEF,oBErEE,EAAA,GFsER,OEtEQ,CAAA,OAAA,CAAA,GAAA,OAAA;;;;;UF4EE,YAAA;;;;SAIR,eAAe;;;;;;;UAQP,sBAAA;;;;gBAID;;iBAEC;;;;;;qCAMoB,yBAAyB;;;;;UAM7C,oBAAA;;;;sBAIK;;sBAEA;;SAEb,eAAe;;;;;;;KAQZ,qBAAA,GAAwB,KAClC,0EAGA,QAAQ,KAAK;;;;;AAlIf;AAKY,UCKK,oBAAA,CDLK;EAAG,WAAA,CAAA,EAAA,MAAA;EAAa,YAAA,EAAA,MAAA;EAAa,QAAA,EAAA,MAAA;;AAKnD;AAYA;AAUA;AAiBiB,UC9BA,gBAAA,CD8BoB;EAcpB,IAAA,EAAA,MAAA;EAID,KAAA,EC9CP,MD8CO,CAAA,MAAA,EC9CQ,oBD8CR,CAAA;EAEC,KAAA,EAAA,MAAA;;;;AAWjB;AAYiB,UChEA,sBAAA,CDgEsB;EAIvB,WAAA,CAAA,EAAA,MAAA;EAEC,WAAA,CAAA,EAAA,MAAA;EAMoB,gBAAA,CAAA,EAAA,MAAA;EAAyB,SAAA,CAAA,EAAA,MAAA;;AAM9D;;;AAQwB,UChFP,gBAAA,SAAyB,sBDgFlB,CAAA;EAAf,MAAA,CAAA,EC/EE,WD+EF;;AAQT;;;AAIe,UCrFE,QAAA,CDqFF;EAAL,KAAA,EAAA,OAAA;EAAR,YAAA,EAAA,MAAA;EAAO,YAAA,EAAA,MAAA;;;;ACxHT;AASiB,KAmCL,cAAA,GAnCqB;EAShB,EAAA,EAAA,IAAA;EAUA,MAAA,EAAA,OAAA;AAOjB,CAAA,GAAiB;EASL,KAAA,EAMC,YANa;EA2BV,EAAA,EAAA,KAAA;AAsBhB,CAAA;;;;AAG+B,iBAzBf,wBAAA,CAyBe,SAAA,EAxBlB,oBAwBkB,EAAA,CAAA,EAvB5B,gBAuB4B,EAAA;;;;iBAHf,wBAAA,YACH,gCACH,qBACA,aAAa,QAAQ;;;;AD1G/B;AAKA;AAAyB,UEJR,QAAA,CFIQ;EAAa,OAAA,CAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EEDvB,oBFCuB,EAAA,EAAA,OAAA,CAAA,EEAxB,gBFAwB,CAAA,EECjC,OFDiC,CECzB,aFDyB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveProvider-CUxAvFCK.js","names":["isRecord","lines: string[]","originalToSafeName: Record<string, string>","safeToOriginalName: Record<string, string>","resolvedTools: Record<string, ResolvedToolDescriptor>","typegenTools: Record<string, TypegenToolDescriptor>"],"sources":["../src/identifier.ts","../src/sanitize.ts","../src/errors.ts","../src/schema/normalizeSchema.ts","../src/typegen/render.ts","../src/typegen/jsonSchema.ts","../src/provider/resolveProvider.ts"],"sourcesContent":["const RESERVED_WORDS = new Set([\n \"await\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"enum\",\n \"export\",\n \"extends\",\n \"false\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"null\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"true\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n]);\n\n/**\n * Returns whether the value is a valid JavaScript identifier.\n */\nexport function isValidIdentifier(value: string): boolean {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value);\n}\n\n/**\n * Returns whether the identifier is reserved in JavaScript source.\n */\nexport function isReservedWord(value: string): boolean {\n return RESERVED_WORDS.has(value);\n}\n\n/**\n * Throws when the value cannot be used as a bare JavaScript identifier.\n */\nexport function assertValidIdentifier(\n value: string,\n label = \"identifier\",\n): void {\n if (!isValidIdentifier(value) || isReservedWord(value)) {\n throw new Error(`Invalid ${label}: ${value}`);\n }\n}\n\n/**\n * Converts a raw identifier-like value into a safe JavaScript identifier.\n */\nexport function sanitizeIdentifier(value: string): string {\n const sanitized = value\n .trim()\n .replace(/[^A-Za-z0-9_$]+/g, \"_\")\n .replace(/^_+|_+$/g, \"\");\n\n let safeName = sanitized.length > 0 ? sanitized : \"_\";\n\n if (/^[0-9]/.test(safeName)) {\n safeName = `_${safeName}`;\n }\n\n if (isReservedWord(safeName)) {\n safeName = `${safeName}_`;\n }\n\n return safeName;\n}\n\n/**\n * Renders the name as a bare identifier when possible, otherwise as a string literal.\n */\nexport function serializePropertyName(name: string): string {\n return isValidIdentifier(name) ? name : JSON.stringify(name);\n}\n","import { sanitizeIdentifier } from \"./identifier\";\n\n/**\n * Converts a raw tool name into a safe JavaScript identifier.\n */\nexport function sanitizeToolName(name: string): string {\n return sanitizeIdentifier(name);\n}\n","import type { ExecuteErrorCode } from \"./types\";\n\n/**\n * Structured failure used internally to propagate executor and tool errors.\n */\nexport class ExecuteFailure extends Error {\n code: ExecuteErrorCode;\n\n /**\n * Creates a structured failure with a trusted executor or tool error code.\n */\n constructor(code: ExecuteErrorCode, message: string) {\n super(message);\n this.code = code;\n this.name = \"ExecuteFailure\";\n }\n}\n\n/**\n * Returns whether a thrown value is an {@link ExecuteFailure}.\n */\nexport function isExecuteFailure(value: unknown): value is ExecuteFailure {\n return value instanceof ExecuteFailure;\n}\n\n/**\n * Returns whether a value can be serialized through the JSON-only host/guest boundary.\n */\nexport function isJsonSerializable(\n value: unknown,\n active = new Set<object>(),\n memo = new WeakSet<object>(),\n): boolean {\n if (value === null) {\n return true;\n }\n\n switch (typeof value) {\n case \"string\":\n case \"boolean\":\n return true;\n case \"number\":\n return Number.isFinite(value);\n case \"bigint\":\n case \"function\":\n case \"symbol\":\n case \"undefined\":\n return false;\n case \"object\": {\n const objectValue = value as object;\n\n if (memo.has(objectValue)) {\n return true;\n }\n\n if (active.has(objectValue)) {\n return false;\n }\n\n active.add(objectValue);\n let isSerializable = false;\n\n try {\n if (Array.isArray(value)) {\n isSerializable = value.every((item) =>\n isJsonSerializable(item, active, memo),\n );\n return isSerializable;\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return false;\n }\n\n isSerializable = Object.values(value).every((item) =>\n isJsonSerializable(item, active, memo),\n );\n return isSerializable;\n } finally {\n active.delete(objectValue);\n if (isSerializable) {\n memo.add(objectValue);\n }\n }\n }\n }\n\n return false;\n}\n","import * as zod from \"zod\";\nimport type { ZodRawShape, ZodTypeAny } from \"zod\";\n\nimport type { JsonSchema, ToolSchema } from \"../types\";\n\nconst z = \"z\" in zod && typeof zod.z === \"object\" ? zod.z : zod;\nconst toJsonSchema =\n (\"toJSONSchema\" in zod ? zod.toJSONSchema : undefined) ??\n (\"toJSONSchema\" in z ? z.toJSONSchema : undefined);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isZodSchema(value: unknown): value is ZodTypeAny {\n return isRecord(value) && typeof value.safeParse === \"function\";\n}\n\nfunction isZodRawShape(value: unknown): value is ZodRawShape {\n return (\n isRecord(value) &&\n Object.keys(value).length > 0 &&\n Object.values(value).every(isZodSchema)\n );\n}\n\nfunction normalizeZodSchema(schema: ZodTypeAny): JsonSchema {\n if (typeof toJsonSchema !== \"function\") {\n throw new Error(\"Installed zod package does not expose toJSONSchema\");\n }\n\n const jsonSchema = toJsonSchema(schema) as JsonSchema & {\n $schema?: string;\n };\n\n if (\"$schema\" in jsonSchema) {\n const { $schema: _ignored, ...rest } = jsonSchema;\n return rest;\n }\n\n return jsonSchema;\n}\n\n/**\n * Normalizes supported tool schema inputs to the JSON Schema form used internally.\n */\nexport function normalizeToolSchema(\n schema: ToolSchema | undefined,\n phase: \"input\" | \"output\",\n toolName: string,\n): JsonSchema | undefined {\n if (schema === undefined) {\n return undefined;\n }\n\n if (isZodSchema(schema)) {\n return normalizeZodSchema(schema);\n }\n\n if (isZodRawShape(schema)) {\n return normalizeZodSchema(z.object(schema));\n }\n\n if (isRecord(schema)) {\n return schema;\n }\n\n throw new Error(\n `Unsupported ${phase} schema for tool ${toolName}. Expected JSON Schema, a Zod schema, or an MCP-style Zod shape.`,\n );\n}\n","/**\n * Indents each line of the given string by a specified number of levels.\n */\nexport function indent(value: string, level = 1): string {\n return value\n .split(\"\\n\")\n .map((line) => `${\" \".repeat(level)}${line}`)\n .join(\"\\n\");\n}\n\n/**\n * Renders a short TSDoc-style block when documentation is available.\n */\nexport function renderDocComment(lines: string[]): string {\n if (lines.length === 0) {\n return \"\";\n }\n\n return [\"/**\", ...lines.map((line) => ` * ${line}`), \" */\"].join(\"\\n\");\n}\n\n/**\n * Renders a namespace declaration with optional members.\n */\nexport function renderNamespaceDeclaration(\n name: string,\n members: string[],\n): string {\n if (members.length === 0) {\n return `declare namespace ${name} {}`;\n }\n\n return `declare namespace ${name} {\\n${indent(members.join(\"\\n\\n\"))}\\n}`;\n}\n","import { isValidIdentifier, serializePropertyName } from \"../identifier\";\nimport type { JsonSchema, TypegenToolDescriptor } from \"../types\";\nimport { indent, renderDocComment, renderNamespaceDeclaration } from \"./render\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport { indent } from \"./render\";\n\n/**\n * Converts a supported JSON Schema fragment into a TypeScript type expression.\n */\nexport function schemaToType(\n schema: JsonSchema | undefined,\n level = 0,\n): string {\n if (!schema) {\n return \"unknown\";\n }\n\n if (\n \"allOf\" in schema ||\n \"anyOf\" in schema ||\n \"oneOf\" in schema ||\n \"$ref\" in schema ||\n Array.isArray(schema.type)\n ) {\n return \"unknown\";\n }\n\n switch (schema.type) {\n case \"string\":\n return \"string\";\n case \"number\":\n case \"integer\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"null\":\n return \"null\";\n case \"array\": {\n const itemType = schemaToType(\n isRecord(schema.items) ? (schema.items as JsonSchema) : undefined,\n level + 1,\n );\n\n if (isValidIdentifier(itemType)) {\n return `${itemType}[]`;\n }\n\n return `Array<${itemType}>`;\n }\n case \"object\": {\n const properties = isRecord(schema.properties) ? schema.properties : {};\n const required = new Set(\n Array.isArray(schema.required)\n ? schema.required.filter(\n (value): value is string => typeof value === \"string\",\n )\n : [],\n );\n const entries = Object.entries(properties);\n\n if (entries.length === 0) {\n return \"Record<string, unknown>\";\n }\n\n const lines = entries.map(([name, propertySchema]) => {\n const propertyType = schemaToType(\n isRecord(propertySchema) ? (propertySchema as JsonSchema) : undefined,\n level + 1,\n );\n const optionalToken = required.has(name) ? \"\" : \"?\";\n return `${serializePropertyName(name)}${optionalToken}: ${propertyType};`;\n });\n\n return `{\\n${indent(lines.join(\"\\n\"), level + 1)}\\n${\" \".repeat(level)}}`;\n }\n default:\n return \"unknown\";\n }\n}\n\nfunction formatToolDeclaration(\n name: string,\n tool: TypegenToolDescriptor,\n): string {\n const lines: string[] = [];\n const comment = tool.description ? renderDocComment([tool.description]) : \"\";\n if (comment) {\n lines.push(comment);\n }\n\n const inputType = schemaToType(tool.inputSchema);\n const outputType = schemaToType(tool.outputSchema);\n lines.push(`function ${name}(input: ${inputType}): Promise<${outputType}>;`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates a namespace declaration for a provider's tool schemas.\n */\nexport function generateTypesFromJsonSchema(\n providerName: string,\n tools: Record<string, TypegenToolDescriptor>,\n): string {\n return renderNamespaceDeclaration(\n providerName,\n Object.entries(tools).map(([name, tool]) =>\n formatToolDeclaration(name, tool),\n ),\n );\n}\n","import Ajv, { type AnySchemaObject, type ValidateFunction } from \"ajv\";\n\nimport {\n ExecuteFailure,\n isExecuteFailure,\n isJsonSerializable,\n} from \"../errors\";\nimport { assertValidIdentifier } from \"../identifier\";\nimport { sanitizeToolName } from \"../sanitize\";\nimport { normalizeToolSchema } from \"../schema/normalizeSchema\";\nimport { generateTypesFromJsonSchema } from \"../typegen/jsonSchema\";\nimport type {\n JsonSchema,\n ResolvedToolDescriptor,\n ResolvedToolProvider,\n ToolExecutionContext,\n ToolProvider,\n TypegenToolDescriptor,\n} from \"../types\";\n\nconst DEFAULT_PROVIDER_NAME = \"codemode\";\nfunction assertValidNamespace(name: string): void {\n assertValidIdentifier(name, \"provider namespace\");\n}\n\nfunction compileValidator(\n ajv: Ajv,\n schema: JsonSchema | undefined,\n): ValidateFunction | undefined {\n return schema ? ajv.compile(schema as AnySchemaObject) : undefined;\n}\n\nfunction formatValidationMessage(\n ajv: Ajv,\n phase: \"input\" | \"output\",\n toolName: string,\n validator: ValidateFunction,\n): string {\n return `Invalid ${phase} for tool ${toolName}: ${ajv.errorsText(validator.errors)}`;\n}\n\n/**\n * Resolves a tool provider into the validated, sanitized shape consumed by executors.\n */\nexport function resolveProvider(provider: ToolProvider): ResolvedToolProvider {\n const name = provider.name ?? DEFAULT_PROVIDER_NAME;\n assertValidNamespace(name);\n\n // strict: false allows schemas with extra keywords (e.g. Zod-generated $schema)\n // that don't conform to the strict JSON Schema vocabulary.\n const ajv = new Ajv({\n allErrors: true,\n strict: false,\n });\n\n const originalToSafeName: Record<string, string> = {};\n const safeToOriginalName: Record<string, string> = {};\n const usedSafeNames = new Set<string>();\n const resolvedTools: Record<string, ResolvedToolDescriptor> = {};\n const typegenTools: Record<string, TypegenToolDescriptor> = {};\n\n for (const [originalName, descriptor] of Object.entries(provider.tools)) {\n const baseSafeName = sanitizeToolName(originalName);\n let safeName = baseSafeName;\n let suffix = 2;\n\n while (usedSafeNames.has(safeName)) {\n safeName = `${baseSafeName}__${suffix}`;\n suffix += 1;\n }\n\n usedSafeNames.add(safeName);\n originalToSafeName[originalName] = safeName;\n safeToOriginalName[safeName] = originalName;\n\n const inputSchema = normalizeToolSchema(\n descriptor.inputSchema,\n \"input\",\n originalName,\n );\n const outputSchema = normalizeToolSchema(\n descriptor.outputSchema,\n \"output\",\n originalName,\n );\n const inputValidator = compileValidator(ajv, inputSchema);\n const outputValidator = compileValidator(ajv, outputSchema);\n\n resolvedTools[safeName] = {\n description: descriptor.description,\n execute: async (\n input: unknown,\n context: ToolExecutionContext,\n ): Promise<unknown> => {\n if (inputValidator && !inputValidator(input)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(ajv, \"input\", originalName, inputValidator),\n );\n }\n\n try {\n const result = await descriptor.execute(input, context);\n\n if (!isJsonSerializable(result)) {\n throw new ExecuteFailure(\n \"serialization_error\",\n `Tool ${originalName} returned a non-serializable value`,\n );\n }\n\n if (outputValidator && !outputValidator(result)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(\n ajv,\n \"output\",\n originalName,\n outputValidator,\n ),\n );\n }\n\n return result;\n } catch (error) {\n if (isExecuteFailure(error)) {\n throw error;\n }\n\n throw new ExecuteFailure(\n \"tool_error\",\n error instanceof Error\n ? error.message\n : `Tool ${originalName} failed`,\n );\n }\n },\n inputSchema,\n originalName,\n outputSchema,\n safeName,\n };\n\n typegenTools[safeName] = {\n description: descriptor.description,\n inputSchema,\n outputSchema,\n };\n }\n\n return {\n name,\n originalToSafeName,\n safeToOriginalName,\n tools: resolvedTools,\n types: provider.types ?? generateTypesFromJsonSchema(name, typegenTools),\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveProvider-CixOjPKp.cjs","names":["isRecord","lines: string[]","ajv","Ajv","originalToSafeName: Record<string, string>","safeToOriginalName: Record<string, string>","resolvedTools: Record<string, ResolvedToolDescriptor>","typegenTools: Record<string, TypegenToolDescriptor>"],"sources":["../src/identifier.ts","../src/sanitize.ts","../src/errors.ts","../src/schema/normalizeSchema.ts","../src/typegen/render.ts","../src/typegen/jsonSchema.ts","../src/provider/resolveProvider.ts"],"sourcesContent":["const RESERVED_WORDS = new Set([\n \"await\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"enum\",\n \"export\",\n \"extends\",\n \"false\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"null\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"true\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n]);\n\n/**\n * Returns whether the value is a valid JavaScript identifier.\n */\nexport function isValidIdentifier(value: string): boolean {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value);\n}\n\n/**\n * Returns whether the identifier is reserved in JavaScript source.\n */\nexport function isReservedWord(value: string): boolean {\n return RESERVED_WORDS.has(value);\n}\n\n/**\n * Throws when the value cannot be used as a bare JavaScript identifier.\n */\nexport function assertValidIdentifier(\n value: string,\n label = \"identifier\",\n): void {\n if (!isValidIdentifier(value) || isReservedWord(value)) {\n throw new Error(`Invalid ${label}: ${value}`);\n }\n}\n\n/**\n * Converts a raw identifier-like value into a safe JavaScript identifier.\n */\nexport function sanitizeIdentifier(value: string): string {\n const sanitized = value\n .trim()\n .replace(/[^A-Za-z0-9_$]+/g, \"_\")\n .replace(/^_+|_+$/g, \"\");\n\n let safeName = sanitized.length > 0 ? sanitized : \"_\";\n\n if (/^[0-9]/.test(safeName)) {\n safeName = `_${safeName}`;\n }\n\n if (isReservedWord(safeName)) {\n safeName = `${safeName}_`;\n }\n\n return safeName;\n}\n\n/**\n * Renders the name as a bare identifier when possible, otherwise as a string literal.\n */\nexport function serializePropertyName(name: string): string {\n return isValidIdentifier(name) ? name : JSON.stringify(name);\n}\n","import { sanitizeIdentifier } from \"./identifier\";\n\n/**\n * Converts a raw tool name into a safe JavaScript identifier.\n */\nexport function sanitizeToolName(name: string): string {\n return sanitizeIdentifier(name);\n}\n","import type { ExecuteErrorCode } from \"./types\";\n\n/**\n * Structured failure used internally to propagate executor and tool errors.\n */\nexport class ExecuteFailure extends Error {\n code: ExecuteErrorCode;\n\n /**\n * Creates a structured failure with a trusted executor or tool error code.\n */\n constructor(code: ExecuteErrorCode, message: string) {\n super(message);\n this.code = code;\n this.name = \"ExecuteFailure\";\n }\n}\n\n/**\n * Returns whether a thrown value is an {@link ExecuteFailure}.\n */\nexport function isExecuteFailure(value: unknown): value is ExecuteFailure {\n return value instanceof ExecuteFailure;\n}\n\n/**\n * Returns whether a value can be serialized through the JSON-only host/guest boundary.\n */\nexport function isJsonSerializable(\n value: unknown,\n active = new Set<object>(),\n memo = new WeakSet<object>(),\n): boolean {\n if (value === null) {\n return true;\n }\n\n switch (typeof value) {\n case \"string\":\n case \"boolean\":\n return true;\n case \"number\":\n return Number.isFinite(value);\n case \"bigint\":\n case \"function\":\n case \"symbol\":\n case \"undefined\":\n return false;\n case \"object\": {\n const objectValue = value as object;\n\n if (memo.has(objectValue)) {\n return true;\n }\n\n if (active.has(objectValue)) {\n return false;\n }\n\n active.add(objectValue);\n let isSerializable = false;\n\n try {\n if (Array.isArray(value)) {\n isSerializable = value.every((item) =>\n isJsonSerializable(item, active, memo),\n );\n return isSerializable;\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return false;\n }\n\n isSerializable = Object.values(value).every((item) =>\n isJsonSerializable(item, active, memo),\n );\n return isSerializable;\n } finally {\n active.delete(objectValue);\n if (isSerializable) {\n memo.add(objectValue);\n }\n }\n }\n }\n\n return false;\n}\n","import * as zod from \"zod\";\nimport type { ZodRawShape, ZodTypeAny } from \"zod\";\n\nimport type { JsonSchema, ToolSchema } from \"../types\";\n\nconst z = \"z\" in zod && typeof zod.z === \"object\" ? zod.z : zod;\nconst toJsonSchema =\n (\"toJSONSchema\" in zod ? zod.toJSONSchema : undefined) ??\n (\"toJSONSchema\" in z ? z.toJSONSchema : undefined);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isZodSchema(value: unknown): value is ZodTypeAny {\n return isRecord(value) && typeof value.safeParse === \"function\";\n}\n\nfunction isZodRawShape(value: unknown): value is ZodRawShape {\n return (\n isRecord(value) &&\n Object.keys(value).length > 0 &&\n Object.values(value).every(isZodSchema)\n );\n}\n\nfunction normalizeZodSchema(schema: ZodTypeAny): JsonSchema {\n if (typeof toJsonSchema !== \"function\") {\n throw new Error(\"Installed zod package does not expose toJSONSchema\");\n }\n\n const jsonSchema = toJsonSchema(schema) as JsonSchema & {\n $schema?: string;\n };\n\n if (\"$schema\" in jsonSchema) {\n const { $schema: _ignored, ...rest } = jsonSchema;\n return rest;\n }\n\n return jsonSchema;\n}\n\n/**\n * Normalizes supported tool schema inputs to the JSON Schema form used internally.\n */\nexport function normalizeToolSchema(\n schema: ToolSchema | undefined,\n phase: \"input\" | \"output\",\n toolName: string,\n): JsonSchema | undefined {\n if (schema === undefined) {\n return undefined;\n }\n\n if (isZodSchema(schema)) {\n return normalizeZodSchema(schema);\n }\n\n if (isZodRawShape(schema)) {\n return normalizeZodSchema(z.object(schema));\n }\n\n if (isRecord(schema)) {\n return schema;\n }\n\n throw new Error(\n `Unsupported ${phase} schema for tool ${toolName}. Expected JSON Schema, a Zod schema, or an MCP-style Zod shape.`,\n );\n}\n","/**\n * Indents each line of the given string by a specified number of levels.\n */\nexport function indent(value: string, level = 1): string {\n return value\n .split(\"\\n\")\n .map((line) => `${\" \".repeat(level)}${line}`)\n .join(\"\\n\");\n}\n\n/**\n * Renders a short TSDoc-style block when documentation is available.\n */\nexport function renderDocComment(lines: string[]): string {\n if (lines.length === 0) {\n return \"\";\n }\n\n return [\"/**\", ...lines.map((line) => ` * ${line}`), \" */\"].join(\"\\n\");\n}\n\n/**\n * Renders a namespace declaration with optional members.\n */\nexport function renderNamespaceDeclaration(\n name: string,\n members: string[],\n): string {\n if (members.length === 0) {\n return `declare namespace ${name} {}`;\n }\n\n return `declare namespace ${name} {\\n${indent(members.join(\"\\n\\n\"))}\\n}`;\n}\n","import { isValidIdentifier, serializePropertyName } from \"../identifier\";\nimport type { JsonSchema, TypegenToolDescriptor } from \"../types\";\nimport { indent, renderDocComment, renderNamespaceDeclaration } from \"./render\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport { indent } from \"./render\";\n\n/**\n * Converts a supported JSON Schema fragment into a TypeScript type expression.\n */\nexport function schemaToType(\n schema: JsonSchema | undefined,\n level = 0,\n): string {\n if (!schema) {\n return \"unknown\";\n }\n\n if (\n \"allOf\" in schema ||\n \"anyOf\" in schema ||\n \"oneOf\" in schema ||\n \"$ref\" in schema ||\n Array.isArray(schema.type)\n ) {\n return \"unknown\";\n }\n\n switch (schema.type) {\n case \"string\":\n return \"string\";\n case \"number\":\n case \"integer\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"null\":\n return \"null\";\n case \"array\": {\n const itemType = schemaToType(\n isRecord(schema.items) ? (schema.items as JsonSchema) : undefined,\n level + 1,\n );\n\n if (isValidIdentifier(itemType)) {\n return `${itemType}[]`;\n }\n\n return `Array<${itemType}>`;\n }\n case \"object\": {\n const properties = isRecord(schema.properties) ? schema.properties : {};\n const required = new Set(\n Array.isArray(schema.required)\n ? schema.required.filter(\n (value): value is string => typeof value === \"string\",\n )\n : [],\n );\n const entries = Object.entries(properties);\n\n if (entries.length === 0) {\n return \"Record<string, unknown>\";\n }\n\n const lines = entries.map(([name, propertySchema]) => {\n const propertyType = schemaToType(\n isRecord(propertySchema) ? (propertySchema as JsonSchema) : undefined,\n level + 1,\n );\n const optionalToken = required.has(name) ? \"\" : \"?\";\n return `${serializePropertyName(name)}${optionalToken}: ${propertyType};`;\n });\n\n return `{\\n${indent(lines.join(\"\\n\"), level + 1)}\\n${\" \".repeat(level)}}`;\n }\n default:\n return \"unknown\";\n }\n}\n\nfunction formatToolDeclaration(\n name: string,\n tool: TypegenToolDescriptor,\n): string {\n const lines: string[] = [];\n const comment = tool.description ? renderDocComment([tool.description]) : \"\";\n if (comment) {\n lines.push(comment);\n }\n\n const inputType = schemaToType(tool.inputSchema);\n const outputType = schemaToType(tool.outputSchema);\n lines.push(`function ${name}(input: ${inputType}): Promise<${outputType}>;`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates a namespace declaration for a provider's tool schemas.\n */\nexport function generateTypesFromJsonSchema(\n providerName: string,\n tools: Record<string, TypegenToolDescriptor>,\n): string {\n return renderNamespaceDeclaration(\n providerName,\n Object.entries(tools).map(([name, tool]) =>\n formatToolDeclaration(name, tool),\n ),\n );\n}\n","import Ajv, { type AnySchemaObject, type ValidateFunction } from \"ajv\";\n\nimport {\n ExecuteFailure,\n isExecuteFailure,\n isJsonSerializable,\n} from \"../errors\";\nimport { assertValidIdentifier } from \"../identifier\";\nimport { sanitizeToolName } from \"../sanitize\";\nimport { normalizeToolSchema } from \"../schema/normalizeSchema\";\nimport { generateTypesFromJsonSchema } from \"../typegen/jsonSchema\";\nimport type {\n JsonSchema,\n ResolvedToolDescriptor,\n ResolvedToolProvider,\n ToolExecutionContext,\n ToolProvider,\n TypegenToolDescriptor,\n} from \"../types\";\n\nconst DEFAULT_PROVIDER_NAME = \"codemode\";\nfunction assertValidNamespace(name: string): void {\n assertValidIdentifier(name, \"provider namespace\");\n}\n\nfunction compileValidator(\n ajv: Ajv,\n schema: JsonSchema | undefined,\n): ValidateFunction | undefined {\n return schema ? ajv.compile(schema as AnySchemaObject) : undefined;\n}\n\nfunction formatValidationMessage(\n ajv: Ajv,\n phase: \"input\" | \"output\",\n toolName: string,\n validator: ValidateFunction,\n): string {\n return `Invalid ${phase} for tool ${toolName}: ${ajv.errorsText(validator.errors)}`;\n}\n\n/**\n * Resolves a tool provider into the validated, sanitized shape consumed by executors.\n */\nexport function resolveProvider(provider: ToolProvider): ResolvedToolProvider {\n const name = provider.name ?? DEFAULT_PROVIDER_NAME;\n assertValidNamespace(name);\n\n // strict: false allows schemas with extra keywords (e.g. Zod-generated $schema)\n // that don't conform to the strict JSON Schema vocabulary.\n const ajv = new Ajv({\n allErrors: true,\n strict: false,\n });\n\n const originalToSafeName: Record<string, string> = {};\n const safeToOriginalName: Record<string, string> = {};\n const usedSafeNames = new Set<string>();\n const resolvedTools: Record<string, ResolvedToolDescriptor> = {};\n const typegenTools: Record<string, TypegenToolDescriptor> = {};\n\n for (const [originalName, descriptor] of Object.entries(provider.tools)) {\n const baseSafeName = sanitizeToolName(originalName);\n let safeName = baseSafeName;\n let suffix = 2;\n\n while (usedSafeNames.has(safeName)) {\n safeName = `${baseSafeName}__${suffix}`;\n suffix += 1;\n }\n\n usedSafeNames.add(safeName);\n originalToSafeName[originalName] = safeName;\n safeToOriginalName[safeName] = originalName;\n\n const inputSchema = normalizeToolSchema(\n descriptor.inputSchema,\n \"input\",\n originalName,\n );\n const outputSchema = normalizeToolSchema(\n descriptor.outputSchema,\n \"output\",\n originalName,\n );\n const inputValidator = compileValidator(ajv, inputSchema);\n const outputValidator = compileValidator(ajv, outputSchema);\n\n resolvedTools[safeName] = {\n description: descriptor.description,\n execute: async (\n input: unknown,\n context: ToolExecutionContext,\n ): Promise<unknown> => {\n if (inputValidator && !inputValidator(input)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(ajv, \"input\", originalName, inputValidator),\n );\n }\n\n try {\n const result = await descriptor.execute(input, context);\n\n if (!isJsonSerializable(result)) {\n throw new ExecuteFailure(\n \"serialization_error\",\n `Tool ${originalName} returned a non-serializable value`,\n );\n }\n\n if (outputValidator && !outputValidator(result)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(\n ajv,\n \"output\",\n originalName,\n outputValidator,\n ),\n );\n }\n\n return result;\n } catch (error) {\n if (isExecuteFailure(error)) {\n throw error;\n }\n\n throw new ExecuteFailure(\n \"tool_error\",\n error instanceof Error\n ? error.message\n : `Tool ${originalName} failed`,\n );\n }\n },\n inputSchema,\n originalName,\n outputSchema,\n safeName,\n };\n\n typegenTools[safeName] = {\n description: descriptor.description,\n inputSchema,\n outputSchema,\n };\n }\n\n return {\n name,\n originalToSafeName,\n safeToOriginalName,\n tools: resolvedTools,\n types: provider.types ?? generateTypesFromJsonSchema(name, typegenTools),\n };\n}\n"],"mappings":"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"}