stitchkit 0.39.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/client.d.ts +7 -0
- package/dist/browser/client.d.ts.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/contract/factory.d.ts +3 -3
- package/dist/contract/factory.d.ts.map +1 -1
- package/dist/{index-y5scd1cr.js → index-p1x65gk7.js} +17 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -11
- package/dist/tools/execute.d.ts +8 -4
- package/dist/tools/execute.d.ts.map +1 -1
- package/dist/tools/invoker.d.ts +11 -7
- package/dist/tools/invoker.d.ts.map +1 -1
- package/dist/tools.d.ts +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +30 -18
- package/llms-full.txt +85 -14
- package/package.json +1 -1
package/dist/browser/client.d.ts
CHANGED
|
@@ -61,9 +61,14 @@ type PrefixKeys<C> = C extends {
|
|
|
61
61
|
type ClientForContract<C, Configs> = C extends ContractDef<infer E, infer S> ? S extends keyof Configs ? ScopedHttpClient<E, ScopedKeys<PrefixKeys<Configs[S]>>> : never : never;
|
|
62
62
|
type UnionToIntersection<U> = (U extends unknown ? (value: U) => void : never) extends (value: infer I) => void ? I : never;
|
|
63
63
|
type ScopedNamespace<R, Configs> = UnionToIntersection<ClientForContract<RegistryContract<R>, Configs>>;
|
|
64
|
+
type UrlBuilderForContract<C, Configs> = C extends ContractDef<infer E, infer S> ? S extends keyof Configs ? ScopedUrlBuilder<E, ScopedKeys<PrefixKeys<Configs[S]>>> : never : never;
|
|
65
|
+
type ScopedUrlNamespace<R, Configs> = UnionToIntersection<UrlBuilderForContract<RegistryContract<R>, Configs>>;
|
|
64
66
|
export type ScopedClientRegistry<T extends Record<string, ClientRegistryValue>, Configs> = {
|
|
65
67
|
[P in keyof T]: ScopedNamespace<T[P], Configs>;
|
|
66
68
|
};
|
|
69
|
+
export type ScopedUrlBuilderRegistry<T extends Record<string, ClientRegistryValue>, Configs> = {
|
|
70
|
+
[P in keyof T]: ScopedUrlNamespace<T[P], Configs>;
|
|
71
|
+
};
|
|
67
72
|
/** Build one client registry routed by contract scope; arrays compose a namespace. */
|
|
68
73
|
export declare function createScopedClients<const T extends Record<string, ClientRegistryValue>, const Configs extends ScopeClientConfigs<RegistryScope<T[keyof T]>>>(contracts: T, configOrClient: ClientConfig | HttpAdapter, scopeConfigs: Configs): ScopedClientRegistry<T, Configs>;
|
|
69
74
|
/** Base URL source for synchronous contract URL builders. */
|
|
@@ -74,5 +79,7 @@ export declare function createUrlBuilder<T extends Record<string, EndpointDef>,
|
|
|
74
79
|
export declare function createUrlBuilders<T extends Record<string, ContractDef<Record<string, EndpointDef>, string>>, const K extends string = never>(contracts: T, source: UrlBuilderConfig, contractConfig?: ContractClientConfig<K>): {
|
|
75
80
|
[P in keyof T]: ScopedUrlBuilder<T[P]['endpoints'], ScopedKeys<K>>;
|
|
76
81
|
};
|
|
82
|
+
/** Build one URL registry routed by contract scope; arrays compose a namespace. */
|
|
83
|
+
export declare function createScopedUrlBuilders<const T extends Record<string, ClientRegistryValue>, const Configs extends ScopeClientConfigs<RegistryScope<T[keyof T]>>>(contracts: T, source: UrlBuilderConfig, scopeConfigs: Configs): ScopedUrlBuilderRegistry<T, Configs>;
|
|
77
84
|
export {};
|
|
78
85
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/browser/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/browser/client.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import type { ContractDef, EndpointDef } from './define';
|
|
24
24
|
/** A `defineContract` whose `scope` is required and typed to `TScope`. */
|
|
25
|
-
export type ScopedDefineContract<TScope extends string> = <const T extends Record<string, EndpointDef>>(meta: {
|
|
25
|
+
export type ScopedDefineContract<TScope extends string> = <const TContractScope extends TScope, const T extends Record<string, EndpointDef>>(meta: {
|
|
26
26
|
prefix: string;
|
|
27
|
-
scope:
|
|
27
|
+
scope: TContractScope;
|
|
28
28
|
meta?: Record<string, unknown>;
|
|
29
|
-
}, endpoints: T) => ContractDef<T,
|
|
29
|
+
}, endpoints: T) => ContractDef<T, TContractScope>;
|
|
30
30
|
/**
|
|
31
31
|
* Build a `defineContract` that requires a `scope` from the application's own
|
|
32
32
|
* union. Call once per app and re-export the returned `defineContract`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/contract/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGzD,0EAA0E;AAC1E,MAAM,MAAM,oBAAoB,CAAC,MAAM,SAAS,MAAM,IAAI,CACxD,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAE3C,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/contract/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGzD,0EAA0E;AAC1E,MAAM,MAAM,oBAAoB,CAAC,MAAM,SAAS,MAAM,IAAI,CACxD,KAAK,CAAC,cAAc,SAAS,MAAM,EACnC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAE3C,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAC/E,SAAS,EAAE,CAAC,KACT,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AAEpC;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,SAAS,MAAM,KAAK;IAC9D,cAAc,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;CAC9C,CAiBA"}
|
|
@@ -6,9 +6,12 @@ import {
|
|
|
6
6
|
isWithinDir
|
|
7
7
|
} from "./index-x3fcszf8.js";
|
|
8
8
|
import {
|
|
9
|
+
AppError,
|
|
10
|
+
STITCH_ERROR_STATUS,
|
|
9
11
|
formatZodError,
|
|
10
12
|
getRequestContext,
|
|
11
13
|
isRecord,
|
|
14
|
+
isStitchErrorCode,
|
|
12
15
|
isUnsafeKey,
|
|
13
16
|
normalizeError,
|
|
14
17
|
runWithRequestContext,
|
|
@@ -449,14 +452,26 @@ function mergeSchemas(paramsSchema, inputSchema) {
|
|
|
449
452
|
}
|
|
450
453
|
|
|
451
454
|
// src/tools/execute.ts
|
|
455
|
+
var normalizedToolErrors = new WeakMap;
|
|
452
456
|
function toolResultFromError(err) {
|
|
453
457
|
const appErr = normalizeError(err);
|
|
454
|
-
|
|
458
|
+
const result = {
|
|
455
459
|
ok: false,
|
|
456
460
|
code: appErr.code,
|
|
457
461
|
details: appErr.details ?? { message: appErr.message },
|
|
458
462
|
...appErr.hint && { hint: appErr.hint }
|
|
459
463
|
};
|
|
464
|
+
normalizedToolErrors.set(result, appErr);
|
|
465
|
+
return result;
|
|
466
|
+
}
|
|
467
|
+
function toolErrorFromResult(result) {
|
|
468
|
+
const retained = normalizedToolErrors.get(result);
|
|
469
|
+
if (retained)
|
|
470
|
+
return retained;
|
|
471
|
+
const details = isRecord(result.details) ? result.details : undefined;
|
|
472
|
+
const message = typeof details?.message === "string" ? details.message : result.code;
|
|
473
|
+
const status = isStitchErrorCode(result.code) ? STITCH_ERROR_STATUS[result.code] : 500;
|
|
474
|
+
return new AppError(result.code, message, status, details, result.hint);
|
|
460
475
|
}
|
|
461
476
|
async function executeToolMethod(method, toolName, rawArgs, context, hooks, lifecycle, coerceJson = false, onOutputStrip, extension) {
|
|
462
477
|
return inToolCallContext({ source: context.source, toolName, method }, () => runToolMethod(method, toolName, rawArgs, context, hooks, lifecycle, coerceJson, onOutputStrip, extension));
|
|
@@ -1594,4 +1609,4 @@ function safeInputSchema(tool) {
|
|
|
1594
1609
|
return tool.presentationSchema;
|
|
1595
1610
|
}
|
|
1596
1611
|
|
|
1597
|
-
export { coerceJsonArgs, toolResultFromError, executeToolMethod, assertToolName, assertUniqueToolName, flattenToolJsonSchema, buildToolPresentationSchema, isObjectPresentationSchema, presentationMetadata, collectTools, createToolRunner, formatToolError, fetchGuarded, readCapped, writeDownload, parseCliArgs, DEFAULT_EXIT_CODES, emitResult, pollUntil, pollUntilDone, createCli };
|
|
1612
|
+
export { coerceJsonArgs, toolResultFromError, toolErrorFromResult, executeToolMethod, assertToolName, assertUniqueToolName, flattenToolJsonSchema, buildToolPresentationSchema, isObjectPresentationSchema, presentationMetadata, collectTools, createToolRunner, formatToolError, fetchGuarded, readCapped, writeDownload, parseCliArgs, DEFAULT_EXIT_CODES, emitResult, pollUntil, pollUntilDone, createCli };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { type ClientConfig, type ClientContract, type ClientRegistryValue, type ContractClientConfig, contractEndpointMatchers, createClient, createClients, createScopedClients, createUrlBuilder, createUrlBuilders, type PathPrefixArgs, type RegistryScope, type ScopeClientConfigs, type ScopedClientRegistry, type UrlBuilderConfig, } from './browser/client';
|
|
1
|
+
export { type ClientConfig, type ClientContract, type ClientRegistryValue, type ContractClientConfig, contractEndpointMatchers, createClient, createClients, createScopedClients, createScopedUrlBuilders, createUrlBuilder, createUrlBuilders, type PathPrefixArgs, type RegistryScope, type ScopeClientConfigs, type ScopedClientRegistry, type ScopedUrlBuilderRegistry, type UrlBuilderConfig, } from './browser/client';
|
|
2
2
|
export { ApiError, type ApiEvent, type ApiEventListener, type ConfiguredHttpClient, createHttpClient, type HeaderProvider, type HttpClient, type HttpClientConfig, type RequestOptions, type UnauthorizedMatcher, } from './browser/http';
|
|
3
3
|
export type { SocketEventMap, SocketIOClient, SocketIOClientConfig, } from './browser/socket-io';
|
|
4
4
|
export { createSocketIOClient } from './browser/socket-io';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,QAAQ,EACR,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClE,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,QAAQ,EACR,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClE,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -461,32 +461,34 @@ function createClient(contract, configOrClient, contractConfig) {
|
|
|
461
461
|
function createClients(contracts, configOrClient, contractConfig) {
|
|
462
462
|
return mapObject(contracts, (_key, contract) => createClient(contract, configOrClient, contractConfig));
|
|
463
463
|
}
|
|
464
|
-
function
|
|
464
|
+
function buildScopedRegistry(contracts, scopeConfigs, surfaceName, build) {
|
|
465
465
|
const registry = {};
|
|
466
466
|
for (const [namespace, value] of Object.entries(contracts)) {
|
|
467
467
|
const list = Array.isArray(value) ? value : [value];
|
|
468
|
-
const
|
|
468
|
+
const surface = {};
|
|
469
469
|
for (const contract of list) {
|
|
470
470
|
const scope = contract.meta.scope;
|
|
471
471
|
if (!scope) {
|
|
472
|
-
throw new Error(`Contract in
|
|
472
|
+
throw new Error(`Contract in ${surfaceName} namespace "${namespace}" has no scope`);
|
|
473
473
|
}
|
|
474
|
-
const scopeConfig =
|
|
474
|
+
const scopeConfig = scopeConfigs[scope];
|
|
475
475
|
if (!scopeConfig) {
|
|
476
|
-
throw new Error(`Missing
|
|
476
|
+
throw new Error(`Missing ${surfaceName} config for scope: ${scope}`);
|
|
477
477
|
}
|
|
478
|
-
const
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
throw new Error(`Client namespace "${namespace}" has duplicate method: ${methodName}`);
|
|
478
|
+
for (const [methodName, method] of Object.entries(build(contract, scopeConfig))) {
|
|
479
|
+
if (Object.hasOwn(surface, methodName)) {
|
|
480
|
+
throw new Error(`${surfaceName[0]?.toUpperCase()}${surfaceName.slice(1)} namespace "${namespace}" has duplicate method: ${methodName}`);
|
|
482
481
|
}
|
|
483
|
-
|
|
482
|
+
surface[methodName] = method;
|
|
484
483
|
}
|
|
485
484
|
}
|
|
486
|
-
registry[namespace] =
|
|
485
|
+
registry[namespace] = surface;
|
|
487
486
|
}
|
|
488
487
|
return registry;
|
|
489
488
|
}
|
|
489
|
+
function createScopedClients(contracts, configOrClient, scopeConfigs) {
|
|
490
|
+
return buildScopedRegistry(contracts, scopeConfigs, "client", (contract, config) => createClient(contract, configOrClient, config));
|
|
491
|
+
}
|
|
490
492
|
function isHttpAdapter(value) {
|
|
491
493
|
return typeof value === "object" && "get" in value && typeof value.get === "function";
|
|
492
494
|
}
|
|
@@ -605,6 +607,9 @@ function createUrlBuilder(contract, source, contractConfig) {
|
|
|
605
607
|
function createUrlBuilders(contracts, source, contractConfig) {
|
|
606
608
|
return mapObject(contracts, (_key, contract) => createUrlBuilder(contract, source, contractConfig));
|
|
607
609
|
}
|
|
610
|
+
function createScopedUrlBuilders(contracts, source, scopeConfigs) {
|
|
611
|
+
return buildScopedRegistry(contracts, scopeConfigs, "URL builder", (contract, config) => createUrlBuilder(contract, source, config));
|
|
612
|
+
}
|
|
608
613
|
// src/retained.ts
|
|
609
614
|
function createRetainedTopics() {
|
|
610
615
|
const last = {};
|
|
@@ -815,6 +820,7 @@ export {
|
|
|
815
820
|
createUrlBuilder,
|
|
816
821
|
createTraceContext,
|
|
817
822
|
createSocketIOClient,
|
|
823
|
+
createScopedUrlBuilders,
|
|
818
824
|
createScopedClients,
|
|
819
825
|
createRetainedTopics,
|
|
820
826
|
createHttpClient,
|
package/dist/tools/execute.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ZodType, z } from 'zod';
|
|
2
|
-
import type
|
|
2
|
+
import { AppError, type RuntimeContext, type TransportSource } from '../contract';
|
|
3
3
|
import type { OperationIdentity } from '../server/types';
|
|
4
4
|
export type ToolResult = {
|
|
5
5
|
ok: true;
|
|
@@ -10,6 +10,9 @@ export type ToolResult = {
|
|
|
10
10
|
details?: unknown;
|
|
11
11
|
hint?: string;
|
|
12
12
|
};
|
|
13
|
+
type ToolFailure = Extract<ToolResult, {
|
|
14
|
+
ok: false;
|
|
15
|
+
}>;
|
|
13
16
|
export interface ToolCallContext {
|
|
14
17
|
source: TransportSource;
|
|
15
18
|
[key: string]: unknown;
|
|
@@ -114,9 +117,9 @@ export interface ToolArgumentExtension {
|
|
|
114
117
|
* `AppError` becomes a tool error. Shared by `executeToolMethod` and both
|
|
115
118
|
* transport mounts so every tool error has one shape.
|
|
116
119
|
*/
|
|
117
|
-
export declare function toolResultFromError(err: unknown):
|
|
118
|
-
|
|
119
|
-
|
|
120
|
+
export declare function toolResultFromError(err: unknown): ToolFailure;
|
|
121
|
+
/** Recover the normalized AppError behind one canonical failed tool result. */
|
|
122
|
+
export declare function toolErrorFromResult(result: ToolFailure): AppError;
|
|
120
123
|
export declare function executeToolMethod(method: ToolOperation, toolName: string, rawArgs: Record<string, unknown>, context: ToolCallContext, hooks?: ToolCallHooks, lifecycle?: ToolLifecycle, coerceJson?: boolean, onOutputStrip?: (paths: string[]) => void, extension?: ToolArgumentExtension): Promise<ToolResult>;
|
|
121
124
|
/**
|
|
122
125
|
* Run `body` in a request context forked for one tool call — the shared rule,
|
|
@@ -133,4 +136,5 @@ export declare function inToolCallContext<T>(call: {
|
|
|
133
136
|
toolName: string;
|
|
134
137
|
method: OperationIdentity;
|
|
135
138
|
}, body: () => Promise<T>): Promise<T>;
|
|
139
|
+
export {};
|
|
136
140
|
//# sourceMappingURL=execute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/tools/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/tools/execute.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/invoker.d.ts
CHANGED
|
@@ -1,29 +1,33 @@
|
|
|
1
1
|
import { type Transport, type TransportSource } from '../contract';
|
|
2
2
|
import type { ServiceDef } from '../server/types';
|
|
3
|
-
import type
|
|
3
|
+
import { type ToolCallContext, type ToolCallHooks, type ToolLifecycle, type ToolResult } from './execute';
|
|
4
4
|
import { type ToolExtend } from './mount';
|
|
5
5
|
export type ToolInvokerTransport = Exclude<Transport, 'HTTP'>;
|
|
6
6
|
/** Configuration for a compiled in-process contract-tool dispatcher. */
|
|
7
7
|
export interface ToolInvokerConfig {
|
|
8
8
|
/** Existing exposure policy to honour. Required: there is no bypass-all mode. */
|
|
9
9
|
transport: ToolInvokerTransport;
|
|
10
|
-
/** Actual call source written to handler context and audit. Default: `internal`. */
|
|
11
|
-
source?: TransportSource;
|
|
12
|
-
context?: Omit<ToolCallContext, 'source'>;
|
|
13
|
-
hooks?: ToolCallHooks;
|
|
14
|
-
lifecycle?: ToolLifecycle;
|
|
15
10
|
extend?: ToolExtend;
|
|
16
11
|
/** Compiles the same presentation surface as the chosen mount. */
|
|
17
12
|
flattenUnionInput?: boolean;
|
|
18
13
|
/** Coerce JSON-stringified arrays/objects in tool arguments. Default: true. */
|
|
19
14
|
coerceJsonArgs?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** Runtime state for one in-process invocation; never retained by the registry. */
|
|
17
|
+
export interface ToolInvocationOptions {
|
|
18
|
+
/** Actual call source written to handler context and audit. Default: `internal`. */
|
|
19
|
+
source?: TransportSource;
|
|
20
|
+
context?: Omit<ToolCallContext, 'source'>;
|
|
21
|
+
hooks?: ToolCallHooks;
|
|
22
|
+
lifecycle?: ToolLifecycle;
|
|
20
23
|
/** Report output keys removed by contract validation. */
|
|
21
24
|
onOutputStrip?: (toolName: string, paths: string[]) => void;
|
|
22
25
|
}
|
|
23
26
|
/** A name-indexed dispatcher compiled once and executed by the shared tool runner. */
|
|
24
27
|
export interface ToolInvoker {
|
|
25
28
|
readonly names: readonly string[];
|
|
26
|
-
invoke(name: string, args: Record<string, unknown
|
|
29
|
+
invoke(name: string, args: Record<string, unknown>, options?: ToolInvocationOptions): Promise<ToolResult>;
|
|
30
|
+
invokeOrThrow(name: string, args: Record<string, unknown>, options?: ToolInvocationOptions): Promise<unknown>;
|
|
27
31
|
}
|
|
28
32
|
/**
|
|
29
33
|
* Compile contract tools into an in-process invoker without mounting an SDK.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoker.d.ts","sourceRoot":"","sources":["../../src/tools/invoker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"invoker.d.ts","sourceRoot":"","sources":["../../src/tools/invoker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAEhB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAsD,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAG9F,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAE9D,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+EAA+E;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,yDAAyD;IACzD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC7D;AAED,sFAAsF;AACtF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,UAAU,CAAC,CAAC;IACvB,aAAa,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,UAAU,GAAG,SAAS,UAAU,EAAE,EAC5C,MAAM,EAAE,iBAAiB,GACxB,WAAW,CA2Db"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type { CliWaitConfig } from './tools/cli-wait';
|
|
|
7
7
|
export { coerceJsonArgs } from './tools/coerce';
|
|
8
8
|
export type { AfterToolCallOptions, BeforeToolCallOptions, ErrorHintFn, ToolCallContext, ToolCallHooks, ToolErrorOptions, ToolLifecycle, ToolOperation, ToolResult, } from './tools/execute';
|
|
9
9
|
export { flattenToolJsonSchema, type ToolPresentationSchema, } from './tools/flatten';
|
|
10
|
-
export { createToolInvoker, type ToolInvoker, type ToolInvokerConfig, type ToolInvokerTransport, } from './tools/invoker';
|
|
10
|
+
export { createToolInvoker, type ToolInvocationOptions, type ToolInvoker, type ToolInvokerConfig, type ToolInvokerTransport, } from './tools/invoker';
|
|
11
11
|
export { listToolNames, type ToolNameEntry } from './tools/list-names';
|
|
12
12
|
export { buildToolManifest, type ToolManifestEntry } from './tools/manifest';
|
|
13
13
|
export { buildMcpServer, type IncompatibleSchemaPolicy, type McpMountConfig, type McpSchemaValidationConfig, type McpServerBuildConfig, mountMcp, mountMcpResource, type ValidateMcpSchemasConfig, validateMcpSchemas, } from './tools/mcp';
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.js
CHANGED
|
@@ -22,9 +22,10 @@ import {
|
|
|
22
22
|
pollUntil,
|
|
23
23
|
presentationMetadata,
|
|
24
24
|
readCapped,
|
|
25
|
+
toolErrorFromResult,
|
|
25
26
|
toolResultFromError,
|
|
26
27
|
writeDownload
|
|
27
|
-
} from "./index-
|
|
28
|
+
} from "./index-p1x65gk7.js";
|
|
28
29
|
import {
|
|
29
30
|
toJsonSchema
|
|
30
31
|
} from "./index-frfyw9fa.js";
|
|
@@ -188,25 +189,36 @@ function createToolInvoker(services, config) {
|
|
|
188
189
|
}
|
|
189
190
|
}
|
|
190
191
|
const names = Object.freeze([...tools.keys()].sort());
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
})
|
|
192
|
+
const operation = (name) => {
|
|
193
|
+
const tool2 = tools.get(name);
|
|
194
|
+
if (tool2)
|
|
195
|
+
return tool2;
|
|
196
|
+
throw new AppError("NOT_FOUND", `Unknown tool: ${name}`, 404, {
|
|
197
|
+
available: names
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
const run = (name, args, options = {}) => {
|
|
201
|
+
const runTool = createToolRunner({
|
|
202
|
+
source: options.source ?? "internal",
|
|
203
|
+
context: options.context,
|
|
204
|
+
hooks: options.hooks,
|
|
205
|
+
lifecycle: options.lifecycle,
|
|
206
|
+
extend: config.extend,
|
|
207
|
+
coerceJsonArgs: config.coerceJsonArgs,
|
|
208
|
+
onOutputStrip: options.onOutputStrip
|
|
209
|
+
});
|
|
210
|
+
return runTool(operation(name), args);
|
|
211
|
+
};
|
|
200
212
|
return Object.freeze({
|
|
201
213
|
names,
|
|
202
|
-
invoke(name, args) {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
return
|
|
214
|
+
invoke(name, args, options) {
|
|
215
|
+
return run(name, args, options);
|
|
216
|
+
},
|
|
217
|
+
async invokeOrThrow(name, args, options) {
|
|
218
|
+
const result = await run(name, args, options);
|
|
219
|
+
if (!result.ok)
|
|
220
|
+
throw toolErrorFromResult(result);
|
|
221
|
+
return result.data;
|
|
210
222
|
}
|
|
211
223
|
});
|
|
212
224
|
}
|
package/llms-full.txt
CHANGED
|
@@ -531,11 +531,13 @@ the endpoint is public (fail-open). If every contract in your app must be scoped
|
|
|
531
531
|
// app: one line, once
|
|
532
532
|
export const { defineContract } = createContractFactory<'public' | 'user' | 'admin'>()
|
|
533
533
|
|
|
534
|
-
// scope is
|
|
534
|
+
// scope is mandatory, checked against the union and retained as the 'user' literal
|
|
535
535
|
export const users = defineContract({ prefix: 'users', scope: 'user' }, { … })
|
|
536
536
|
```
|
|
537
537
|
|
|
538
|
-
The vocabulary is yours;
|
|
538
|
+
The vocabulary is yours; each returned `ContractDef` retains its concrete scope
|
|
539
|
+
literal, so scope-aware registries select the exact config without another
|
|
540
|
+
wrapper.
|
|
539
541
|
|
|
540
542
|
## One source of truth
|
|
541
543
|
|
|
@@ -1432,7 +1434,7 @@ URL, not a fetched response. `createUrlBuilder` derives those URLs from the same
|
|
|
1432
1434
|
contract path planner used by both typed-client transports:
|
|
1433
1435
|
|
|
1434
1436
|
```ts
|
|
1435
|
-
import { createUrlBuilder, createUrlBuilders } from 'stitchkit'
|
|
1437
|
+
import { createScopedUrlBuilders, createUrlBuilder, createUrlBuilders } from 'stitchkit'
|
|
1436
1438
|
|
|
1437
1439
|
const mediaUrls = createUrlBuilder(media, http, {
|
|
1438
1440
|
stripPrefixKeys: ['tenantId'],
|
|
@@ -1453,6 +1455,33 @@ const beaconUrl = mediaUrls.track({ tenantId: 't_123' })
|
|
|
1453
1455
|
const urls = createUrlBuilders({ media, exports }, http)
|
|
1454
1456
|
```
|
|
1455
1457
|
|
|
1458
|
+
When contracts use different dynamic prefixes, route the registry by the same
|
|
1459
|
+
literal `contract.meta.scope` model as `createScopedClients`:
|
|
1460
|
+
|
|
1461
|
+
```ts
|
|
1462
|
+
const urls = createScopedUrlBuilders(
|
|
1463
|
+
{
|
|
1464
|
+
assets: publicAssets,
|
|
1465
|
+
media: [tenantFiles, tenantMetadata], // one composed namespace
|
|
1466
|
+
},
|
|
1467
|
+
http,
|
|
1468
|
+
{
|
|
1469
|
+
public: {},
|
|
1470
|
+
tenant: {
|
|
1471
|
+
stripPrefixKeys: ['tenantId'],
|
|
1472
|
+
pathPrefix: ({ tenantId }) => `tenants/${tenantId}`,
|
|
1473
|
+
},
|
|
1474
|
+
},
|
|
1475
|
+
)
|
|
1476
|
+
|
|
1477
|
+
urls.assets.logo()
|
|
1478
|
+
urls.media.file({ tenantId: 't1', fileId: 'f' })
|
|
1479
|
+
```
|
|
1480
|
+
|
|
1481
|
+
Every reachable scope needs a config. A missing config or duplicate method in a
|
|
1482
|
+
composed namespace fails while the registry is built; URL generation itself
|
|
1483
|
+
continues to use the same request planner as `createClient`.
|
|
1484
|
+
|
|
1456
1485
|
Every HTTP-exposed endpoint appears on a URL builder, including body, multipart
|
|
1457
1486
|
and raw-response operations. Path and scoped-prefix keys are consumed by the
|
|
1458
1487
|
path. `GET` and `DELETE` input becomes the query string, including repeated keys
|
|
@@ -1693,26 +1722,39 @@ import { createToolInvoker } from 'stitchkit/tools'
|
|
|
1693
1722
|
|
|
1694
1723
|
const invoker = createToolInvoker(services, {
|
|
1695
1724
|
transport: 'AGENT', // required exposure policy
|
|
1725
|
+
})
|
|
1726
|
+
|
|
1727
|
+
const result = await invoker.invoke('update_entity', args, {
|
|
1696
1728
|
source: 'internal', // default; audit names the real call source
|
|
1697
1729
|
context: { identity },
|
|
1698
1730
|
lifecycle,
|
|
1699
1731
|
hooks,
|
|
1700
1732
|
})
|
|
1701
1733
|
|
|
1702
|
-
|
|
1703
|
-
|
|
1734
|
+
// Composition path: validated data or the exact normalized AppError.
|
|
1735
|
+
const data = await invoker.invokeOrThrow('update_entity', args, {
|
|
1736
|
+
context: { identity },
|
|
1737
|
+
lifecycle,
|
|
1738
|
+
hooks,
|
|
1739
|
+
})
|
|
1704
1740
|
```
|
|
1705
1741
|
|
|
1706
1742
|
`transport` is required and uses the exact existing `MCP`, `AGENT` or `CLI`
|
|
1707
1743
|
exposure rules; there is no internal bypass mode. The immutable name lookup is
|
|
1708
|
-
compiled once.
|
|
1709
|
-
|
|
1744
|
+
compiled once. Call-specific identity, context, lifecycle and hooks are passed
|
|
1745
|
+
to `invoke` / `invokeOrThrow`, so one registry can safely serve parallel and
|
|
1746
|
+
recursive calls without retaining request state. Every invocation gets a fresh
|
|
1747
|
+
tool-call context and runs the same extension resolution, input/output
|
|
1710
1748
|
validation, lifecycle, hooks and output-strip reporter as mounted tools.
|
|
1711
1749
|
|
|
1712
1750
|
`invoke` returns the canonical discriminated `ToolResult`, not an AI SDK or MCP
|
|
1713
|
-
presentation envelope.
|
|
1714
|
-
|
|
1715
|
-
|
|
1751
|
+
presentation envelope. `invokeOrThrow` returns validated data and throws the
|
|
1752
|
+
runner's normalized `AppError` on failure, preserving an application error's
|
|
1753
|
+
code, status, message, details and hint without reconstructing it from the
|
|
1754
|
+
model-safe envelope. Unexpected throws remain scrubbed. An unknown name throws
|
|
1755
|
+
`AppError('NOT_FOUND')` before the runner because there is no operation identity
|
|
1756
|
+
against which hooks could run. Duplicate and provider-invalid names fail when
|
|
1757
|
+
the invoker is created.
|
|
1716
1758
|
|
|
1717
1759
|
## MCP — `createMcpHandler`
|
|
1718
1760
|
|
|
@@ -4059,6 +4101,32 @@ current one *up to* your target, and apply each snippet.
|
|
|
4059
4101
|
|
|
4060
4102
|
## Unreleased breaking migrations
|
|
4061
4103
|
|
|
4104
|
+
`createToolInvoker` now separates immutable registry preparation from per-call
|
|
4105
|
+
runtime state. Move source/context/lifecycle/hooks/output-strip reporting from
|
|
4106
|
+
the factory config to the third invocation argument. Use `invokeOrThrow` when a
|
|
4107
|
+
nested operation should preserve the normalized `AppError` instead of returning
|
|
4108
|
+
a model-facing failure envelope:
|
|
4109
|
+
|
|
4110
|
+
```ts
|
|
4111
|
+
// before
|
|
4112
|
+
const invoker = createToolInvoker(services, {
|
|
4113
|
+
transport: 'AGENT', context: { identity }, lifecycle, hooks,
|
|
4114
|
+
})
|
|
4115
|
+
const result = await invoker.invoke(name, args)
|
|
4116
|
+
|
|
4117
|
+
// after
|
|
4118
|
+
const invoker = createToolInvoker(services, { transport: 'AGENT' })
|
|
4119
|
+
const result = await invoker.invoke(name, args, {
|
|
4120
|
+
context: { identity }, lifecycle, hooks,
|
|
4121
|
+
})
|
|
4122
|
+
const data = await invoker.invokeOrThrow(name, args, {
|
|
4123
|
+
context: { identity }, lifecycle, hooks,
|
|
4124
|
+
})
|
|
4125
|
+
```
|
|
4126
|
+
|
|
4127
|
+
There is no static runtime-config overload: request identity must not be retained
|
|
4128
|
+
by a reusable compiled registry.
|
|
4129
|
+
|
|
4062
4130
|
Entity cache handlers now require the cached list shape and CRUD policies. Move
|
|
4063
4131
|
`listKey` under `list`, make detail keys event-aware, and state the list-item
|
|
4064
4132
|
identity/projection explicitly:
|
|
@@ -4356,8 +4424,10 @@ The browser-and-server entrypoint. Re-exports everything from
|
|
|
4356
4424
|
| `createClient` | function | build a typed client from a contract — [guide](../guide/client.md#createclient) |
|
|
4357
4425
|
| `createClients` | function | build one exact typed client per contract from a registry; accepts the same scoped config and transports as `createClient` |
|
|
4358
4426
|
| `createScopedClients` | function | build one registry routed by contract scope; arrays compose contracts into one namespace |
|
|
4359
|
-
| `
|
|
4427
|
+
| `createScopedUrlBuilders` | function | build one URL registry routed by contract scope; arrays compose contracts into one namespace |
|
|
4428
|
+
| `ScopeClientConfigs` | _type_ | per-scope routing configuration consumed by scoped clients and URL builders |
|
|
4360
4429
|
| `ScopedClientRegistry` | _type_ | exact composed registry returned by `createScopedClients` |
|
|
4430
|
+
| `ScopedUrlBuilderRegistry` | _type_ | exact composed registry returned by `createScopedUrlBuilders` |
|
|
4361
4431
|
| `ClientRegistryValue` | _type_ | one contract or a contract array composing one client namespace |
|
|
4362
4432
|
| `ClientContract` | _type_ | HTTP-client-compatible contract value used by scoped registries |
|
|
4363
4433
|
| `RegistryScope` | _type_ | contract-scope union inferred from a scoped client registry value |
|
|
@@ -4418,7 +4488,7 @@ from the root `stitchkit`.
|
|
|
4418
4488
|
| Export | Kind | Summary |
|
|
4419
4489
|
|--------|------|---------|
|
|
4420
4490
|
| `defineContract` | function | declare a contract — [guide](../guide/contracts.md#definecontract) |
|
|
4421
|
-
| `createContractFactory` | function | a `defineContract` with a required
|
|
4491
|
+
| `createContractFactory` | function | a `defineContract` with a required allowed scope that retains each concrete literal — [guide](../guide/contracts.md#scope) |
|
|
4422
4492
|
| `ScopedDefineContract` | _type_ | the `defineContract` `createContractFactory` returns |
|
|
4423
4493
|
| `ALL_TRANSPORTS` | constant | `['HTTP', 'MCP', 'AGENT', 'CLI']` |
|
|
4424
4494
|
| `ContractDef` | _type_ | a defined contract |
|
|
@@ -4727,8 +4797,9 @@ Server-only. Turns contracts into MCP and AI-agent tools. Needs the
|
|
|
4727
4797
|
| `ToolErrorOptions` | _type_ | `{ toolName, error, context, endpoint }` for a thrown handler-path value |
|
|
4728
4798
|
| `ErrorHintFn` | _type_ | `(toolName, errorCode) => string \| null` — a per-tool recovery hint, shared by every mount |
|
|
4729
4799
|
| `ToolResult` | _type_ | the result of one tool call |
|
|
4730
|
-
| `ToolInvoker` | _type_ | immutable compiled dispatcher (`names
|
|
4731
|
-
| `ToolInvokerConfig` | _type_ | exposure
|
|
4800
|
+
| `ToolInvoker` | _type_ | immutable compiled dispatcher (`names`, envelope `invoke`, throwing `invokeOrThrow`) |
|
|
4801
|
+
| `ToolInvokerConfig` | _type_ | compile-time exposure, extension and presentation options |
|
|
4802
|
+
| `ToolInvocationOptions` | _type_ | per-call source, context, lifecycle, hooks and output-strip reporter |
|
|
4732
4803
|
| `ToolInvokerTransport` | _type_ | invoker exposure policy: `MCP \| AGENT \| CLI` |
|
|
4733
4804
|
| `ToolCallContext` | _type_ | the context every tool hook receives — `{ source }` plus whatever the mount's `context` added |
|
|
4734
4805
|
| `ViewFileOptions` | _type_ | options for `mountViewFile` |
|
package/package.json
CHANGED