@arden-hq/loop 0.0.0-stage → 0.1.2
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/LICENSE +202 -0
- package/README.md +121 -2
- package/dist/abort.d.ts +9 -0
- package/dist/abort.d.ts.map +1 -0
- package/dist/abort.js +31 -0
- package/dist/abort.js.map +1 -0
- package/dist/agent/agent.d.ts +48 -0
- package/dist/agent/agent.d.ts.map +1 -0
- package/dist/agent/agent.js +146 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/background-tools.d.ts +51 -0
- package/dist/agent/background-tools.d.ts.map +1 -0
- package/dist/agent/background-tools.js +257 -0
- package/dist/agent/background-tools.js.map +1 -0
- package/dist/agent/budget.d.ts +5 -0
- package/dist/agent/budget.d.ts.map +1 -0
- package/dist/agent/budget.js +48 -0
- package/dist/agent/budget.js.map +1 -0
- package/dist/agent/config.d.ts +61 -0
- package/dist/agent/config.d.ts.map +1 -0
- package/dist/agent/config.js +99 -0
- package/dist/agent/config.js.map +1 -0
- package/dist/agent/guards.d.ts +10 -0
- package/dist/agent/guards.d.ts.map +1 -0
- package/dist/agent/guards.js +136 -0
- package/dist/agent/guards.js.map +1 -0
- package/dist/agent/history-journal.d.ts +18 -0
- package/dist/agent/history-journal.d.ts.map +1 -0
- package/dist/agent/history-journal.js +87 -0
- package/dist/agent/history-journal.js.map +1 -0
- package/dist/agent/history-projection.d.ts +6 -0
- package/dist/agent/history-projection.d.ts.map +1 -0
- package/dist/agent/history-projection.js +62 -0
- package/dist/agent/history-projection.js.map +1 -0
- package/dist/agent/interactions.d.ts +14 -0
- package/dist/agent/interactions.d.ts.map +1 -0
- package/dist/agent/interactions.js +85 -0
- package/dist/agent/interactions.js.map +1 -0
- package/dist/agent/middleware.d.ts +5 -0
- package/dist/agent/middleware.d.ts.map +1 -0
- package/dist/agent/middleware.js +55 -0
- package/dist/agent/middleware.js.map +1 -0
- package/dist/agent/model-output-projection.d.ts +27 -0
- package/dist/agent/model-output-projection.d.ts.map +1 -0
- package/dist/agent/model-output-projection.js +138 -0
- package/dist/agent/model-output-projection.js.map +1 -0
- package/dist/agent/model-output.d.ts +19 -0
- package/dist/agent/model-output.d.ts.map +1 -0
- package/dist/agent/model-output.js +172 -0
- package/dist/agent/model-output.js.map +1 -0
- package/dist/agent/model-turn.d.ts +29 -0
- package/dist/agent/model-turn.d.ts.map +1 -0
- package/dist/agent/model-turn.js +401 -0
- package/dist/agent/model-turn.js.map +1 -0
- package/dist/agent/policy.d.ts +28 -0
- package/dist/agent/policy.d.ts.map +1 -0
- package/dist/agent/policy.js +109 -0
- package/dist/agent/policy.js.map +1 -0
- package/dist/agent/provider-capabilities.d.ts +12 -0
- package/dist/agent/provider-capabilities.d.ts.map +1 -0
- package/dist/agent/provider-capabilities.js +76 -0
- package/dist/agent/provider-capabilities.js.map +1 -0
- package/dist/agent/recovery.d.ts +8 -0
- package/dist/agent/recovery.d.ts.map +1 -0
- package/dist/agent/recovery.js +21 -0
- package/dist/agent/recovery.js.map +1 -0
- package/dist/agent/replies.d.ts +3 -0
- package/dist/agent/replies.d.ts.map +1 -0
- package/dist/agent/replies.js +24 -0
- package/dist/agent/replies.js.map +1 -0
- package/dist/agent/run-state.d.ts +98 -0
- package/dist/agent/run-state.d.ts.map +1 -0
- package/dist/agent/run-state.js +454 -0
- package/dist/agent/run-state.js.map +1 -0
- package/dist/agent/run.d.ts +6 -0
- package/dist/agent/run.d.ts.map +1 -0
- package/dist/agent/run.js +462 -0
- package/dist/agent/run.js.map +1 -0
- package/dist/agent/streamed-call-history.d.ts +20 -0
- package/dist/agent/streamed-call-history.d.ts.map +1 -0
- package/dist/agent/streamed-call-history.js +71 -0
- package/dist/agent/streamed-call-history.js.map +1 -0
- package/dist/agent/streaming-tools.d.ts +23 -0
- package/dist/agent/streaming-tools.d.ts.map +1 -0
- package/dist/agent/streaming-tools.js +67 -0
- package/dist/agent/streaming-tools.js.map +1 -0
- package/dist/agent/structured-output.d.ts +27 -0
- package/dist/agent/structured-output.d.ts.map +1 -0
- package/dist/agent/structured-output.js +26 -0
- package/dist/agent/structured-output.js.map +1 -0
- package/dist/agent/tool-admission.d.ts +18 -0
- package/dist/agent/tool-admission.d.ts.map +1 -0
- package/dist/agent/tool-admission.js +22 -0
- package/dist/agent/tool-admission.js.map +1 -0
- package/dist/contracts/events.d.ts +236 -0
- package/dist/contracts/events.d.ts.map +1 -0
- package/dist/contracts/events.js +13 -0
- package/dist/contracts/events.js.map +1 -0
- package/dist/contracts/messages.d.ts +234 -0
- package/dist/contracts/messages.d.ts.map +1 -0
- package/dist/contracts/messages.js +11 -0
- package/dist/contracts/messages.js.map +1 -0
- package/dist/contracts/provider.d.ts +177 -0
- package/dist/contracts/provider.d.ts.map +1 -0
- package/dist/contracts/provider.js +26 -0
- package/dist/contracts/provider.js.map +1 -0
- package/dist/contracts/tools.d.ts +217 -0
- package/dist/contracts/tools.d.ts.map +1 -0
- package/dist/contracts/tools.js +16 -0
- package/dist/contracts/tools.js.map +1 -0
- package/dist/errors.d.ts +112 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +190 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/concurrency.d.ts +11 -0
- package/dist/internal/concurrency.d.ts.map +1 -0
- package/dist/internal/concurrency.js +86 -0
- package/dist/internal/concurrency.js.map +1 -0
- package/dist/internal/stream.d.ts +25 -0
- package/dist/internal/stream.d.ts.map +1 -0
- package/dist/internal/stream.js +97 -0
- package/dist/internal/stream.js.map +1 -0
- package/dist/internal/validate.d.ts +30 -0
- package/dist/internal/validate.d.ts.map +1 -0
- package/dist/internal/validate.js +480 -0
- package/dist/internal/validate.js.map +1 -0
- package/dist/providers/kit/errors.d.ts +40 -0
- package/dist/providers/kit/errors.d.ts.map +1 -0
- package/dist/providers/kit/errors.js +48 -0
- package/dist/providers/kit/errors.js.map +1 -0
- package/dist/providers/kit/index.d.ts +10 -0
- package/dist/providers/kit/index.d.ts.map +1 -0
- package/dist/providers/kit/index.js +10 -0
- package/dist/providers/kit/index.js.map +1 -0
- package/dist/providers/kit/retry.d.ts +43 -0
- package/dist/providers/kit/retry.d.ts.map +1 -0
- package/dist/providers/kit/retry.js +118 -0
- package/dist/providers/kit/retry.js.map +1 -0
- package/dist/providers/kit/sse.d.ts +22 -0
- package/dist/providers/kit/sse.d.ts.map +1 -0
- package/dist/providers/kit/sse.js +70 -0
- package/dist/providers/kit/sse.js.map +1 -0
- package/dist/providers/openai-responses/citations.d.ts +21 -0
- package/dist/providers/openai-responses/citations.d.ts.map +1 -0
- package/dist/providers/openai-responses/citations.js +65 -0
- package/dist/providers/openai-responses/citations.js.map +1 -0
- package/dist/providers/openai-responses/continuation.d.ts +19 -0
- package/dist/providers/openai-responses/continuation.d.ts.map +1 -0
- package/dist/providers/openai-responses/continuation.js +28 -0
- package/dist/providers/openai-responses/continuation.js.map +1 -0
- package/dist/providers/openai-responses/errors.d.ts +28 -0
- package/dist/providers/openai-responses/errors.d.ts.map +1 -0
- package/dist/providers/openai-responses/errors.js +103 -0
- package/dist/providers/openai-responses/errors.js.map +1 -0
- package/dist/providers/openai-responses/history.d.ts +8 -0
- package/dist/providers/openai-responses/history.d.ts.map +1 -0
- package/dist/providers/openai-responses/history.js +93 -0
- package/dist/providers/openai-responses/history.js.map +1 -0
- package/dist/providers/openai-responses/items.d.ts +106 -0
- package/dist/providers/openai-responses/items.d.ts.map +1 -0
- package/dist/providers/openai-responses/items.js +124 -0
- package/dist/providers/openai-responses/items.js.map +1 -0
- package/dist/providers/openai-responses/parameter-schema.d.ts +11 -0
- package/dist/providers/openai-responses/parameter-schema.d.ts.map +1 -0
- package/dist/providers/openai-responses/parameter-schema.js +186 -0
- package/dist/providers/openai-responses/parameter-schema.js.map +1 -0
- package/dist/providers/openai-responses/provider.d.ts +54 -0
- package/dist/providers/openai-responses/provider.d.ts.map +1 -0
- package/dist/providers/openai-responses/provider.js +270 -0
- package/dist/providers/openai-responses/provider.js.map +1 -0
- package/dist/providers/openai-responses/request.d.ts +41 -0
- package/dist/providers/openai-responses/request.d.ts.map +1 -0
- package/dist/providers/openai-responses/request.js +276 -0
- package/dist/providers/openai-responses/request.js.map +1 -0
- package/dist/providers/openai-responses/response.d.ts +7 -0
- package/dist/providers/openai-responses/response.d.ts.map +1 -0
- package/dist/providers/openai-responses/response.js +354 -0
- package/dist/providers/openai-responses/response.js.map +1 -0
- package/dist/providers/openai-responses/stored-items.d.ts +9 -0
- package/dist/providers/openai-responses/stored-items.d.ts.map +1 -0
- package/dist/providers/openai-responses/stored-items.js +133 -0
- package/dist/providers/openai-responses/stored-items.js.map +1 -0
- package/dist/providers/openai-responses/tool-search.d.ts +12 -0
- package/dist/providers/openai-responses/tool-search.d.ts.map +1 -0
- package/dist/providers/openai-responses/tool-search.js +68 -0
- package/dist/providers/openai-responses/tool-search.js.map +1 -0
- package/dist/providers/openai-responses/tools.d.ts +33 -0
- package/dist/providers/openai-responses/tools.d.ts.map +1 -0
- package/dist/providers/openai-responses/tools.js +53 -0
- package/dist/providers/openai-responses/tools.js.map +1 -0
- package/dist/providers/openai-responses/web-search.d.ts +5 -0
- package/dist/providers/openai-responses/web-search.d.ts.map +1 -0
- package/dist/providers/openai-responses/web-search.js +114 -0
- package/dist/providers/openai-responses/web-search.js.map +1 -0
- package/dist/providers/openai-responses/websocket.d.ts +29 -0
- package/dist/providers/openai-responses/websocket.d.ts.map +1 -0
- package/dist/providers/openai-responses/websocket.js +400 -0
- package/dist/providers/openai-responses/websocket.js.map +1 -0
- package/dist/tools/dispatch.d.ts +65 -0
- package/dist/tools/dispatch.d.ts.map +1 -0
- package/dist/tools/dispatch.js +536 -0
- package/dist/tools/dispatch.js.map +1 -0
- package/dist/tools/display-title.d.ts +18 -0
- package/dist/tools/display-title.d.ts.map +1 -0
- package/dist/tools/display-title.js +50 -0
- package/dist/tools/display-title.js.map +1 -0
- package/dist/tools/search.d.ts +36 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +224 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/tool.d.ts +200 -0
- package/dist/tools/tool.d.ts.map +1 -0
- package/dist/tools/tool.js +275 -0
- package/dist/tools/tool.js.map +1 -0
- package/dist/tools/truncate.d.ts +18 -0
- package/dist/tools/truncate.d.ts.map +1 -0
- package/dist/tools/truncate.js +76 -0
- package/dist/tools/truncate.js.map +1 -0
- package/package.json +67 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/tools/dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ToolDisplayTitle } from "../contracts/tools.js";
|
|
2
|
+
/**
|
|
3
|
+
* Add the host's presentation argument to the model schema, not the validator.
|
|
4
|
+
* The schema lists it as required so the model titles every call; a call that
|
|
5
|
+
* still omits it runs, because the argument is split off before validation.
|
|
6
|
+
*/
|
|
7
|
+
export declare const withToolDisplayTitleParameter: (parameters: Readonly<Record<string, unknown>>, toolName: string, displayTitle: ToolDisplayTitle) => Readonly<Record<string, unknown>>;
|
|
8
|
+
export declare const sanitizeToolDisplayTitle: (value: unknown, displayTitle: ToolDisplayTitle) => string | undefined;
|
|
9
|
+
export interface SplitToolArguments {
|
|
10
|
+
readonly args: Readonly<Record<string, unknown>>;
|
|
11
|
+
readonly displayTitle?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Remove the presentation argument before validation or tool dispatch. A
|
|
15
|
+
* toolset without a display title leaves arguments and titles untouched.
|
|
16
|
+
*/
|
|
17
|
+
export declare const splitToolArguments: (args: Readonly<Record<string, unknown>>, persistedTitle: unknown, displayTitle: ToolDisplayTitle | undefined) => SplitToolArguments;
|
|
18
|
+
//# sourceMappingURL=display-title.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-title.d.ts","sourceRoot":"","sources":["../../src/tools/display-title.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAG7D;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,eAC5B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,YACnC,MAAM,gBACF,gBAAgB,KAC7B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0BlC,CAAA;AAED,eAAO,MAAM,wBAAwB,UAC5B,OAAO,gBACA,gBAAgB,KAC7B,MAAM,GAAG,SAA4D,CAAA;AAExE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAChD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,SACvB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,kBACvB,OAAO,gBACT,gBAAgB,GAAG,SAAS,KACzC,kBAYF,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { toolDisplayTitle } from "@arden-hq/std/text";
|
|
2
|
+
import { isRecord } from "@arden-hq/std/json";
|
|
3
|
+
/**
|
|
4
|
+
* Add the host's presentation argument to the model schema, not the validator.
|
|
5
|
+
* The schema lists it as required so the model titles every call; a call that
|
|
6
|
+
* still omits it runs, because the argument is split off before validation.
|
|
7
|
+
*/
|
|
8
|
+
export const withToolDisplayTitleParameter = (parameters, toolName, displayTitle) => {
|
|
9
|
+
const current = parameters.properties;
|
|
10
|
+
if (current !== undefined && !isRecord(current)) {
|
|
11
|
+
throw new TypeError(`Tool '${toolName}' has non-object JSON Schema properties`);
|
|
12
|
+
}
|
|
13
|
+
const properties = current ?? {};
|
|
14
|
+
if (Object.hasOwn(properties, displayTitle.argument)) {
|
|
15
|
+
throw new TypeError(`Tool '${toolName}' uses reserved argument '${displayTitle.argument}'`);
|
|
16
|
+
}
|
|
17
|
+
const required = parameters.required ?? [];
|
|
18
|
+
if (!Array.isArray(required)) {
|
|
19
|
+
throw new TypeError(`Tool '${toolName}' has a non-array JSON Schema required list`);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
...parameters,
|
|
23
|
+
properties: {
|
|
24
|
+
[displayTitle.argument]: {
|
|
25
|
+
type: "string",
|
|
26
|
+
maxLength: displayTitle.maxLength,
|
|
27
|
+
description: 'What this call is doing, in 2-6 words in the -ing form, naming the specific thing: "Reading the Kev notes", "Searching for RunPod pricing". Shown to the user; it does not change what the tool does.'
|
|
28
|
+
},
|
|
29
|
+
...properties
|
|
30
|
+
},
|
|
31
|
+
required: [displayTitle.argument, ...required]
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export const sanitizeToolDisplayTitle = (value, displayTitle) => toolDisplayTitle(value, displayTitle.maxLength);
|
|
35
|
+
/**
|
|
36
|
+
* Remove the presentation argument before validation or tool dispatch. A
|
|
37
|
+
* toolset without a display title leaves arguments and titles untouched.
|
|
38
|
+
*/
|
|
39
|
+
export const splitToolArguments = (args, persistedTitle, displayTitle) => {
|
|
40
|
+
if (displayTitle === undefined)
|
|
41
|
+
return { args };
|
|
42
|
+
const title = sanitizeToolDisplayTitle(args[displayTitle.argument], displayTitle) ??
|
|
43
|
+
sanitizeToolDisplayTitle(persistedTitle, displayTitle);
|
|
44
|
+
const behaviorArgs = Object.fromEntries(Object.entries(args).filter(([key]) => key !== displayTitle.argument));
|
|
45
|
+
return {
|
|
46
|
+
args: behaviorArgs,
|
|
47
|
+
...(title === undefined ? {} : { displayTitle: title })
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=display-title.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-title.js","sourceRoot":"","sources":["../../src/tools/display-title.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,UAA6C,EAC7C,QAAgB,EAChB,YAA8B,EACK,EAAE;IACrC,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAA;IACrC,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,SAAS,CAAC,SAAS,QAAQ,yCAAyC,CAAC,CAAA;IACjF,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,IAAI,EAAE,CAAA;IAChC,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,SAAS,CAAC,SAAS,QAAQ,6BAA6B,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC7F,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAA;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,SAAS,QAAQ,6CAA6C,CAAC,CAAA;IACrF,CAAC;IACD,OAAO;QACL,GAAG,UAAU;QACb,UAAU,EAAE;YACV,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;gBACvB,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,WAAW,EACT,uMAAuM;aAC1M;YACD,GAAG,UAAU;SACd;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC;KAC/C,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,KAAc,EACd,YAA8B,EACV,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,CAAA;AAOxE;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAuC,EACvC,cAAuB,EACvB,YAA0C,EACtB,EAAE;IACtB,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC/C,MAAM,KAAK,GACT,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;QACnE,wBAAwB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;IACxD,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CACrC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,YAAY,CAAC,QAAQ,CAAC,CACtE,CAAA;IACD,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;KACxD,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ToolDeclaration, ToolMeta, ToolSearch } from "../contracts/tools.js";
|
|
2
|
+
/** One deferred tool as search sees it. */
|
|
3
|
+
export interface ToolSearchDocument {
|
|
4
|
+
readonly declaration: ToolDeclaration;
|
|
5
|
+
readonly meta: ToolMeta;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Returns ordered candidates for one query. Search filters catalog membership,
|
|
9
|
+
* deduplicates, and enforces the primary-match limit before adding companions.
|
|
10
|
+
*/
|
|
11
|
+
export interface ToolSearchStrategy {
|
|
12
|
+
readonly rank: (input: {
|
|
13
|
+
readonly query: string;
|
|
14
|
+
readonly limit: number;
|
|
15
|
+
readonly catalog: ReadonlyArray<ToolSearchDocument>;
|
|
16
|
+
}) => ReadonlyArray<string>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Build the search for one model request. The catalog is the request's
|
|
20
|
+
* deferred tools; `loaded` names the ones already in the conversation.
|
|
21
|
+
*/
|
|
22
|
+
export declare const makeToolSearch: (options: {
|
|
23
|
+
readonly catalog: ReadonlyArray<ToolSearchDocument>;
|
|
24
|
+
readonly loaded: ReadonlySet<string>;
|
|
25
|
+
readonly strategy?: ToolSearchStrategy;
|
|
26
|
+
}) => ToolSearch;
|
|
27
|
+
/**
|
|
28
|
+
* Exact tool names precede residual BM25 hits, preferring hits in named groups;
|
|
29
|
+
* remaining group members follow in name order. `select:a,b` preserves exact
|
|
30
|
+
* selection order. BM25 covers names, groups, descriptions and parameter text.
|
|
31
|
+
* A BM25 result must contain the query's rarest known word,
|
|
32
|
+
* and a long query must also match half its words, so one common word cannot
|
|
33
|
+
* flood the result.
|
|
34
|
+
*/
|
|
35
|
+
export declare const defaultToolSearchStrategy: ToolSearchStrategy;
|
|
36
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElF,2CAA2C;AAC3C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE;QACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAA;KACpD,KAAK,aAAa,CAAC,MAAM,CAAC,CAAA;CAC5B;AAMD;;;GAGG;AACH,eAAO,MAAM,cAAc,YAAa;IACtC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAA;IACnD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;CACvC,KAAG,UAkCH,CAAA;AAqED;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,EAAE,kBAsCvC,CAAA"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
const DEFAULT_TOOL_SEARCH_LIMIT = 8;
|
|
2
|
+
const MAX_TOOL_SEARCH_LIMIT = 20;
|
|
3
|
+
const LISTING_BUDGET = 6_000;
|
|
4
|
+
/**
|
|
5
|
+
* Build the search for one model request. The catalog is the request's
|
|
6
|
+
* deferred tools; `loaded` names the ones already in the conversation.
|
|
7
|
+
*/
|
|
8
|
+
export const makeToolSearch = (options) => {
|
|
9
|
+
const strategy = options.strategy ?? defaultToolSearchStrategy;
|
|
10
|
+
const byName = new Map(options.catalog.map((document) => [document.declaration.name, document]));
|
|
11
|
+
return {
|
|
12
|
+
description: searchDescription(options.catalog),
|
|
13
|
+
parameters: SEARCH_PARAMETERS,
|
|
14
|
+
lookup: (names) => names.flatMap((name) => {
|
|
15
|
+
const document = byName.get(name);
|
|
16
|
+
return document === undefined ? [] : [withInputHints(document)];
|
|
17
|
+
}),
|
|
18
|
+
search: ({ query, limit }) => {
|
|
19
|
+
const bounded = Math.min(Math.max(1, Math.trunc(limit ?? DEFAULT_TOOL_SEARCH_LIMIT)), MAX_TOOL_SEARCH_LIMIT);
|
|
20
|
+
const matched = [
|
|
21
|
+
...new Set(strategy.rank({ query, limit: bounded, catalog: options.catalog }))
|
|
22
|
+
]
|
|
23
|
+
.filter((name) => byName.has(name))
|
|
24
|
+
.slice(0, bounded);
|
|
25
|
+
const companions = matched
|
|
26
|
+
.flatMap((name) => byName.get(name)?.meta.input_sources ?? [])
|
|
27
|
+
.flatMap((source) => source.tools)
|
|
28
|
+
.filter((name) => byName.has(name) && !matched.includes(name) && !options.loaded.has(name));
|
|
29
|
+
return {
|
|
30
|
+
matched,
|
|
31
|
+
tools: [...matched, ...new Set(companions)].flatMap((name) => {
|
|
32
|
+
const document = byName.get(name);
|
|
33
|
+
return document === undefined ? [] : [withInputHints(document)];
|
|
34
|
+
})
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
const SEARCH_PARAMETERS = {
|
|
40
|
+
type: "object",
|
|
41
|
+
properties: {
|
|
42
|
+
query: {
|
|
43
|
+
type: "string",
|
|
44
|
+
description: "Capability keywords, a group name to browse, group plus capability to target it, or `select:name1,name2` for exact names in order. All obey the primary-match limit."
|
|
45
|
+
},
|
|
46
|
+
limit: {
|
|
47
|
+
type: "integer",
|
|
48
|
+
minimum: 1,
|
|
49
|
+
maximum: MAX_TOOL_SEARCH_LIMIT,
|
|
50
|
+
description: `Maximum primary matches (default ${DEFAULT_TOOL_SEARCH_LIMIT}, max ${MAX_TOOL_SEARCH_LIMIT}); required input tools may load in addition.`
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
required: ["query"],
|
|
54
|
+
additionalProperties: false
|
|
55
|
+
};
|
|
56
|
+
const withInputHints = (document) => {
|
|
57
|
+
const sources = document.meta.input_sources ?? [];
|
|
58
|
+
if (sources.length === 0)
|
|
59
|
+
return document.declaration;
|
|
60
|
+
const lines = sources.map((source) => `- ${source.input}: from ${source.tools.join(" or ")}.`);
|
|
61
|
+
return {
|
|
62
|
+
...document.declaration,
|
|
63
|
+
description: `${document.declaration.description}\n\nWhere required inputs come from:\n${lines.join("\n")}`
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
const searchDescription = (catalog) => [
|
|
67
|
+
"Load deferred tools before you call them. Loaded tools stay available for the rest of this conversation.",
|
|
68
|
+
"Search with capability keywords, a group name to browse, group plus capability to prefer matching tools in that group, or `select:name1,name2` for exact names in order.",
|
|
69
|
+
"The primary-match limit applies to every search (default 8, maximum 20); batch larger exact selections. Required input tools may load in addition.",
|
|
70
|
+
"Search whenever the request needs a capability from the listing below; do not ask whether to load it.",
|
|
71
|
+
"Tools already in your tool list are callable directly; never search for them.",
|
|
72
|
+
"",
|
|
73
|
+
"Deferred tools by group:",
|
|
74
|
+
catalogListing(catalog)
|
|
75
|
+
].join("\n");
|
|
76
|
+
const catalogListing = (catalog) => {
|
|
77
|
+
const groups = new Map();
|
|
78
|
+
for (const document of catalog) {
|
|
79
|
+
const group = document.meta.group ?? "other";
|
|
80
|
+
const names = groups.get(group) ?? [];
|
|
81
|
+
names.push(document.declaration.name);
|
|
82
|
+
groups.set(group, names);
|
|
83
|
+
}
|
|
84
|
+
const lines = [...groups.entries()]
|
|
85
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
86
|
+
.map(([group, names]) => `- ${group}: ${[...names].sort().join(", ")}`);
|
|
87
|
+
const full = lines.join("\n");
|
|
88
|
+
if (full.length <= LISTING_BUDGET)
|
|
89
|
+
return full;
|
|
90
|
+
return [...groups.entries()]
|
|
91
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
92
|
+
.map(([group, names]) => `- ${group}: ${names.length} tools`)
|
|
93
|
+
.join("\n");
|
|
94
|
+
};
|
|
95
|
+
const SELECT_PREFIX = "select:";
|
|
96
|
+
const STOP_WORDS = new Set(["a", "an", "and", "for", "of", "or", "the", "to", "tool", "tools"]);
|
|
97
|
+
const BM25_K1 = 1.2;
|
|
98
|
+
const BM25_B = 0.75;
|
|
99
|
+
const NAME_WEIGHT = 3;
|
|
100
|
+
const COVERAGE_QUERY_WORDS = 4;
|
|
101
|
+
/**
|
|
102
|
+
* Exact tool names precede residual BM25 hits, preferring hits in named groups;
|
|
103
|
+
* remaining group members follow in name order. `select:a,b` preserves exact
|
|
104
|
+
* selection order. BM25 covers names, groups, descriptions and parameter text.
|
|
105
|
+
* A BM25 result must contain the query's rarest known word,
|
|
106
|
+
* and a long query must also match half its words, so one common word cannot
|
|
107
|
+
* flood the result.
|
|
108
|
+
*/
|
|
109
|
+
export const defaultToolSearchStrategy = {
|
|
110
|
+
rank: ({ query, catalog }) => {
|
|
111
|
+
const trimmed = query.trim();
|
|
112
|
+
if (trimmed.toLowerCase().startsWith(SELECT_PREFIX)) {
|
|
113
|
+
return trimmed
|
|
114
|
+
.slice(SELECT_PREFIX.length)
|
|
115
|
+
.split(",")
|
|
116
|
+
.map((name) => name.trim())
|
|
117
|
+
.filter((name) => name.length > 0);
|
|
118
|
+
}
|
|
119
|
+
const normalized = trimmed.toLowerCase();
|
|
120
|
+
const words = normalized.split(/[\s,;]+/).filter((word) => word.length > 0);
|
|
121
|
+
const requested = words.map((word) => {
|
|
122
|
+
const exact = catalog.find((document) => document.declaration.name.toLowerCase() === word);
|
|
123
|
+
if (exact !== undefined)
|
|
124
|
+
return { word, exact: [exact.declaration.name], group: [] };
|
|
125
|
+
return {
|
|
126
|
+
word,
|
|
127
|
+
exact: [],
|
|
128
|
+
group: catalog
|
|
129
|
+
.filter((document) => document.meta.group?.toLowerCase() === word)
|
|
130
|
+
.map((document) => document.declaration.name)
|
|
131
|
+
.sort()
|
|
132
|
+
};
|
|
133
|
+
});
|
|
134
|
+
const exact = requested.flatMap((request) => request.exact);
|
|
135
|
+
const group = requested.flatMap((request) => request.group);
|
|
136
|
+
const groupNames = new Set(group);
|
|
137
|
+
const rest = requested
|
|
138
|
+
.filter((request) => request.exact.length === 0 && request.group.length === 0)
|
|
139
|
+
.map((request) => request.word);
|
|
140
|
+
const ranked = rest.length === 0 ? [] : rankBm25({ query: rest.join(" "), catalog });
|
|
141
|
+
return [
|
|
142
|
+
...exact,
|
|
143
|
+
...ranked.filter((name) => groupNames.has(name)),
|
|
144
|
+
...ranked.filter((name) => !groupNames.has(name)),
|
|
145
|
+
...group
|
|
146
|
+
];
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
const rankBm25 = (input) => {
|
|
150
|
+
const documents = input.catalog.map((document) => ({
|
|
151
|
+
name: document.declaration.name,
|
|
152
|
+
terms: documentTerms(document)
|
|
153
|
+
}));
|
|
154
|
+
const frequency = new Map();
|
|
155
|
+
for (const document of documents) {
|
|
156
|
+
for (const term of new Set(document.terms))
|
|
157
|
+
frequency.set(term, (frequency.get(term) ?? 0) + 1);
|
|
158
|
+
}
|
|
159
|
+
const queryTerms = [...new Set(tokenize(input.query))].filter((term) => frequency.has(term));
|
|
160
|
+
if (queryTerms.length === 0)
|
|
161
|
+
return [];
|
|
162
|
+
const rarest = queryTerms.reduce((best, term) => (frequency.get(term) ?? 0) < (frequency.get(best) ?? 0) ? term : best);
|
|
163
|
+
const required = queryTerms.length >= COVERAGE_QUERY_WORDS ? Math.ceil(queryTerms.length / 2) : 1;
|
|
164
|
+
const averageLength = documents.reduce((sum, document) => sum + document.terms.length, 0) /
|
|
165
|
+
Math.max(1, documents.length);
|
|
166
|
+
return documents
|
|
167
|
+
.flatMap((document) => {
|
|
168
|
+
const counts = new Map();
|
|
169
|
+
for (const term of document.terms)
|
|
170
|
+
counts.set(term, (counts.get(term) ?? 0) + 1);
|
|
171
|
+
const present = queryTerms.filter((term) => counts.has(term));
|
|
172
|
+
if (!counts.has(rarest) || present.length < required)
|
|
173
|
+
return [];
|
|
174
|
+
const score = present.reduce((sum, term) => {
|
|
175
|
+
const count = counts.get(term) ?? 0;
|
|
176
|
+
const documentFrequency = frequency.get(term) ?? 0;
|
|
177
|
+
const idf = Math.log(1 + (documents.length - documentFrequency + 0.5) / (documentFrequency + 0.5));
|
|
178
|
+
const norm = BM25_K1 * (1 - BM25_B + (BM25_B * document.terms.length) / averageLength);
|
|
179
|
+
return sum + (idf * count * (BM25_K1 + 1)) / (count + norm);
|
|
180
|
+
}, 0);
|
|
181
|
+
return [{ name: document.name, score }];
|
|
182
|
+
})
|
|
183
|
+
.sort((left, right) => right.score - left.score || left.name.localeCompare(right.name))
|
|
184
|
+
.map((document) => document.name);
|
|
185
|
+
};
|
|
186
|
+
const documentTerms = (document) => {
|
|
187
|
+
const named = tokenize(`${document.declaration.name} ${document.meta.group ?? ""}`);
|
|
188
|
+
return [
|
|
189
|
+
...Array.from({ length: NAME_WEIGHT }, () => named).flat(),
|
|
190
|
+
...tokenize(document.declaration.description),
|
|
191
|
+
...tokenize(schemaText(document.declaration.parameters))
|
|
192
|
+
];
|
|
193
|
+
};
|
|
194
|
+
const schemaText = (schema) => {
|
|
195
|
+
if (typeof schema !== "object" || schema === null)
|
|
196
|
+
return "";
|
|
197
|
+
if (Array.isArray(schema))
|
|
198
|
+
return schema.map(schemaText).join(" ");
|
|
199
|
+
return Object.entries(schema)
|
|
200
|
+
.map(([key, value]) => {
|
|
201
|
+
if (key === "description" && typeof value === "string")
|
|
202
|
+
return value;
|
|
203
|
+
if (key === "properties" && typeof value === "object" && value !== null) {
|
|
204
|
+
return Object.entries(value)
|
|
205
|
+
.map(([property, nested]) => `${property} ${schemaText(nested)}`)
|
|
206
|
+
.join(" ");
|
|
207
|
+
}
|
|
208
|
+
return typeof value === "object" ? schemaText(value) : "";
|
|
209
|
+
})
|
|
210
|
+
.join(" ");
|
|
211
|
+
};
|
|
212
|
+
const tokenize = (text) => (text.toLowerCase().match(/[a-z0-9]+/g) ?? [])
|
|
213
|
+
.filter((word) => word.length > 1 && !STOP_WORDS.has(word))
|
|
214
|
+
.map(stem);
|
|
215
|
+
const stem = (word) => {
|
|
216
|
+
if (word.length > 4 && word.endsWith("ies"))
|
|
217
|
+
return `${word.slice(0, -3)}y`;
|
|
218
|
+
if (word.length > 4 && word.endsWith("ing"))
|
|
219
|
+
return word.slice(0, -3);
|
|
220
|
+
if (word.length > 3 && word.endsWith("s") && !word.endsWith("ss"))
|
|
221
|
+
return word.slice(0, -1);
|
|
222
|
+
return word;
|
|
223
|
+
};
|
|
224
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { ToolExecutionError } from "../errors.js";
|
|
2
|
+
import type { StandardSchemaV1, ChatMessage, JsonObject, ModelContentBlock } from "../contracts/messages.js";
|
|
3
|
+
import { type EndsTurn, type ToolApprovalContext, type ToolCallRequest, type ToolDisplayTitle, type ToolEntry, type ToolInputSource, type ToolPhase, type ToolProgressUpdate, type ToolResult, type Toolset } from "../contracts/tools.js";
|
|
4
|
+
export interface ToolContext<RunCtx = void> {
|
|
5
|
+
/** The owning inference's admission, retained by nested tool effects. */
|
|
6
|
+
readonly beforeExecute?: ToolCallRequest["beforeExecute"];
|
|
7
|
+
readonly toolCallId: string;
|
|
8
|
+
/** Per-call signal, tied to run cancellation. */
|
|
9
|
+
readonly signal: AbortSignal;
|
|
10
|
+
/** Host-confirmed approval replay for this exact call. */
|
|
11
|
+
readonly approval?: ToolApprovalContext;
|
|
12
|
+
/** Typed run-context: session identity, spawn seam, stores. */
|
|
13
|
+
readonly run: RunCtx;
|
|
14
|
+
/** Read-only view of the canonical history at call time. */
|
|
15
|
+
readonly messages: ReadonlyArray<ChatMessage>;
|
|
16
|
+
/**
|
|
17
|
+
* Push a live progress update for this call (a `ToolProgress` stream event).
|
|
18
|
+
* Fire-and-forget: it never throws and is safe to call after the call has
|
|
19
|
+
* settled — late emits are dropped. Parallel tools interleave their
|
|
20
|
+
* progress events in emission order.
|
|
21
|
+
*/
|
|
22
|
+
readonly emit?: (update: ToolProgressUpdate) => void;
|
|
23
|
+
}
|
|
24
|
+
export interface ToolResultOutput {
|
|
25
|
+
/** Model-facing text. */
|
|
26
|
+
readonly result: string;
|
|
27
|
+
/** UI-facing preview (host metadata rides ToolMeta.host). */
|
|
28
|
+
readonly preview?: string;
|
|
29
|
+
readonly data?: Readonly<Record<string, unknown>>;
|
|
30
|
+
/** Extra host metadata merged into the ToolFinished event. */
|
|
31
|
+
readonly host?: Readonly<Record<string, unknown>>;
|
|
32
|
+
/** Becomes the is_meta tool-media envelope. */
|
|
33
|
+
readonly model_content?: ReadonlyArray<ModelContentBlock>;
|
|
34
|
+
}
|
|
35
|
+
/** The card a paused call shows; `presentation` is the host's own shape. */
|
|
36
|
+
export interface ToolApprovalPrompt<Presentation = unknown> {
|
|
37
|
+
readonly preview?: string;
|
|
38
|
+
readonly diff?: string;
|
|
39
|
+
readonly presentation?: Presentation;
|
|
40
|
+
readonly data?: JsonObject;
|
|
41
|
+
}
|
|
42
|
+
/** The metadata keys the loop reads. */
|
|
43
|
+
export interface LoopToolMetadata {
|
|
44
|
+
/**
|
|
45
|
+
* Start in the background at once, so the model continues independent work.
|
|
46
|
+
* Every other call that can run in the background moves there when it
|
|
47
|
+
* outlives the loop's foreground budget.
|
|
48
|
+
*/
|
|
49
|
+
readonly background?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Starts its own long-running job and returns a handle to it (a child Agent,
|
|
52
|
+
* a workflow, a detached process). Its lifecycle already runs outside the
|
|
53
|
+
* turn, so the loop never runs it in the background as well.
|
|
54
|
+
*/
|
|
55
|
+
readonly detached?: boolean;
|
|
56
|
+
/** Executes upstream rather than through the local toolset. */
|
|
57
|
+
readonly hosted?: boolean;
|
|
58
|
+
/** Write lock in the fair read/write group. */
|
|
59
|
+
readonly changes_state?: boolean;
|
|
60
|
+
readonly concurrency_group?: string | null;
|
|
61
|
+
readonly deferred?: boolean;
|
|
62
|
+
/** The namespace a deferred tool is found and loaded under. */
|
|
63
|
+
readonly group?: string;
|
|
64
|
+
/** Tools that produce this tool's required inputs; search loads them with it. */
|
|
65
|
+
readonly input_sources?: ReadonlyArray<ToolInputSource>;
|
|
66
|
+
readonly ends_turn?: EndsTurn;
|
|
67
|
+
/** "ask" pauses every call until the host replays an approval; "always"/"never" are host vocabulary. */
|
|
68
|
+
readonly approval?: "always" | "ask" | "never";
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* A tool's policy bag: the loop's keys plus the host's own. The whole bag
|
|
72
|
+
* rides `ToolMeta.host` on catalog entries and events.
|
|
73
|
+
*/
|
|
74
|
+
export type ToolMetadata<HostMeta extends object = Record<never, never>> = LoopToolMetadata & HostMeta;
|
|
75
|
+
export interface ToolDefinition<S extends StandardSchemaV1, RunCtx, HostMeta extends object = Record<never, never>> {
|
|
76
|
+
readonly name: string;
|
|
77
|
+
readonly description: string;
|
|
78
|
+
/** Standard Schema — zod v4, effect Schema, and valibot all conform. */
|
|
79
|
+
readonly parameters: S;
|
|
80
|
+
/**
|
|
81
|
+
* Authoritative model-facing JSON Schema when the tool source already owns
|
|
82
|
+
* one, as MCP does. Validation still goes through `parameters`.
|
|
83
|
+
*/
|
|
84
|
+
readonly parameterJsonSchema?: Readonly<Record<string, unknown>>;
|
|
85
|
+
/** Policy bag; a tool cannot exist without it. */
|
|
86
|
+
readonly metadata: ToolMetadata<HostMeta>;
|
|
87
|
+
/** Build the exact approval card after arguments validate. */
|
|
88
|
+
readonly approvalPrompt?: (input: StandardSchemaV1.InferOutput<S>, ctx: ToolContext<RunCtx>) => ToolApprovalPrompt | Promise<ToolApprovalPrompt>;
|
|
89
|
+
/**
|
|
90
|
+
* Require approval for this exact validated call even when host settings
|
|
91
|
+
* otherwise approve the tool. Returning undefined keeps the host decision.
|
|
92
|
+
*/
|
|
93
|
+
readonly approvalRequirement?: (input: StandardSchemaV1.InferOutput<S>, ctx: ToolContext<RunCtx>) => ToolApprovalPrompt | undefined | Promise<ToolApprovalPrompt | undefined>;
|
|
94
|
+
readonly execute: (input: StandardSchemaV1.InferOutput<S>, ctx: ToolContext<RunCtx>) => Promise<ToolResultOutput | string>;
|
|
95
|
+
}
|
|
96
|
+
export interface Tool<RunCtx = void, HostMeta extends object = Record<never, never>> {
|
|
97
|
+
readonly definition: ToolDefinition<StandardSchemaV1, RunCtx, HostMeta>;
|
|
98
|
+
/** Catalog entry; the JSON-Schema converter is host-supplied via createToolset. */
|
|
99
|
+
readonly entry: (toJsonSchema: JsonSchemaConverter, displayTitle?: ToolDisplayTitle) => ToolEntry;
|
|
100
|
+
/** Validation, approval gating, and result normalization baked in. */
|
|
101
|
+
readonly execute: (args: Readonly<Record<string, unknown>>, ctx: ToolContext<RunCtx>, options?: ToolExecuteOptions<RunCtx, HostMeta>) => Promise<Required<ToolResult>>;
|
|
102
|
+
}
|
|
103
|
+
/** Host decision for one tool: "deny" hides and refuses, "ask" pauses. */
|
|
104
|
+
export type ToolApprovalDecision = "approve" | "ask" | "deny";
|
|
105
|
+
/** One validated call on its way to `execute`. */
|
|
106
|
+
export interface ToolApprovalCall<RunCtx, HostMeta extends object = Record<never, never>> {
|
|
107
|
+
readonly definition: ToolDefinition<StandardSchemaV1, RunCtx, HostMeta>;
|
|
108
|
+
/** The validated arguments. */
|
|
109
|
+
readonly input: unknown;
|
|
110
|
+
readonly ctx: ToolContext<RunCtx>;
|
|
111
|
+
/** The host's decision for this tool, or the tool's own `approval: "ask"`. */
|
|
112
|
+
readonly decision: "approve" | "ask";
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The host's approval policy for one validated call. It may pause (throw
|
|
116
|
+
* `PauseRequested`), run the call through `execute` — with any context, for
|
|
117
|
+
* example one carrying an approval the host granted itself — and shape the
|
|
118
|
+
* normalized result. Without a gate the loop pauses an "ask" call, or a call
|
|
119
|
+
* whose `approvalRequirement` returns a card, until an approval is replayed.
|
|
120
|
+
*/
|
|
121
|
+
export type ToolApprovalGate<RunCtx, HostMeta extends object = Record<never, never>> = (call: ToolApprovalCall<RunCtx, HostMeta>, execute: (ctx: ToolContext<RunCtx>) => Promise<Required<ToolResult>>) => Promise<Required<ToolResult>>;
|
|
122
|
+
/** What a toolset hands one call: the host's decision for the tool and its gate. */
|
|
123
|
+
export interface ToolExecuteOptions<RunCtx, HostMeta extends object = Record<never, never>> {
|
|
124
|
+
/** Defaults to the tool's own `approval: "ask"`, else "approve". */
|
|
125
|
+
readonly decision?: "approve" | "ask";
|
|
126
|
+
readonly gate?: ToolApprovalGate<RunCtx, HostMeta>;
|
|
127
|
+
/** Recheck the owning inference after approval, before the effect begins. */
|
|
128
|
+
readonly beforeExecute?: ToolCallRequest["beforeExecute"];
|
|
129
|
+
/** Where the call is, for the loop's foreground budget (`ToolCallRequest.phase`). */
|
|
130
|
+
readonly phase?: (phase: ToolPhase) => void;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Any Standard-Schema→JSON-Schema function. The `never` parameter makes this
|
|
134
|
+
* contravariantly permissive: `z.toJSONSchema`, effect's `JSONSchema.make`,
|
|
135
|
+
* and hand-written converters all assign without casts; the loop only ever
|
|
136
|
+
* calls it with the schemas the host itself registered.
|
|
137
|
+
*/
|
|
138
|
+
export type JsonSchemaConverter = (schema: never) => object;
|
|
139
|
+
/**
|
|
140
|
+
* The ONE place the converter's contravariant `never` parameter is bridged to
|
|
141
|
+
* a real schema — internally the loop only hands it schemas the host itself
|
|
142
|
+
* registered, so the cast is honest here and nowhere else.
|
|
143
|
+
*/
|
|
144
|
+
export declare const applyJsonSchemaConverter: (converter: JsonSchemaConverter, schema: StandardSchemaV1) => Record<string, unknown>;
|
|
145
|
+
export interface CreateToolsetOptions<RunCtx = void, HostMeta extends object = Record<never, never>> {
|
|
146
|
+
/** Host supplies the Standard-Schema→JSON-Schema conversion ONCE (e.g. zod's `z.toJSONSchema` or effect's `JSONSchema.make` — no casts needed). */
|
|
147
|
+
readonly toJsonSchema: JsonSchemaConverter;
|
|
148
|
+
/** Default mapper for plain execute throws. */
|
|
149
|
+
readonly onExecuteError?: (error: unknown, request: ToolCallRequest) => ToolExecutionError;
|
|
150
|
+
/**
|
|
151
|
+
* Names this toolset advertises and executes. Tools outside the scope stay
|
|
152
|
+
* metadata-resolvable (the recovery seam) but refuse execution.
|
|
153
|
+
*/
|
|
154
|
+
readonly scope?: Iterable<string>;
|
|
155
|
+
/**
|
|
156
|
+
* Dynamic per-tool approval decisions (host settings) for the named tools,
|
|
157
|
+
* snapshotted at every entries() call (every advertised name) and execute()
|
|
158
|
+
* call (the called name only): "deny" hides the tool and refuses execution;
|
|
159
|
+
* "ask" reaches the approval gate, which by default throws PauseRequested
|
|
160
|
+
* until the host replays an approval. Hosts that persist pauses durably
|
|
161
|
+
* replay the recorded approval as request.approval and must not gate again
|
|
162
|
+
* themselves.
|
|
163
|
+
*/
|
|
164
|
+
readonly approvals?: (run: RunCtx, names: ReadonlyArray<string>) => Readonly<Record<string, ToolApprovalDecision>> | Promise<Readonly<Record<string, ToolApprovalDecision>>>;
|
|
165
|
+
/** The host's approval policy for each validated call (see `ToolApprovalGate`). */
|
|
166
|
+
readonly approvalGate?: ToolApprovalGate<RunCtx, HostMeta>;
|
|
167
|
+
/**
|
|
168
|
+
* The model-facing text when a call is refused: `scope` — outside this
|
|
169
|
+
* run's scope; `denied` — an approval decision of "deny". A host that
|
|
170
|
+
* declares tools a run may not call uses it to say what to do instead.
|
|
171
|
+
*/
|
|
172
|
+
readonly refusal?: (name: string, reason: "scope" | "denied") => string;
|
|
173
|
+
/** Opt-in display-title argument; the returned Toolset carries it for the agent. */
|
|
174
|
+
readonly displayTitle?: ToolDisplayTitle;
|
|
175
|
+
/**
|
|
176
|
+
* Central output truncation (`truncateToolResult`), applied to every
|
|
177
|
+
* result's model-facing text after `execute` and before the loop's result
|
|
178
|
+
* normalization. `preview` and `data` are untouched. File spill of the full
|
|
179
|
+
* output stays host-side — the lib touches no filesystem; hosts that want
|
|
180
|
+
* opencode-style "full output saved to X" behavior write the untruncated
|
|
181
|
+
* text themselves (e.g. in a toolCallMiddleware) and append their own hint.
|
|
182
|
+
* Applies to the model-facing `content` text only; `model_content` blocks
|
|
183
|
+
* (tool media) are not truncated — cap those in the tool itself.
|
|
184
|
+
*/
|
|
185
|
+
readonly truncate?: {
|
|
186
|
+
readonly maxBytes: number;
|
|
187
|
+
readonly maxLines?: number;
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/** `data.outcome` of a call its schema rejected: the tool never ran. */
|
|
191
|
+
export declare const INVALID_ARGUMENTS_OUTCOME = "invalid_arguments";
|
|
192
|
+
/** Wrap one co-located definition with validation and approval gating. */
|
|
193
|
+
export declare const createTool: <S extends StandardSchemaV1, RunCtx = void, HostMeta extends object = Record<never, never>>(definition: ToolDefinition<S, RunCtx, HostMeta>) => Tool<RunCtx, HostMeta>;
|
|
194
|
+
/**
|
|
195
|
+
* Bind a tool list into a per-run Toolset. The returned factory replaces
|
|
196
|
+
* per-call dependency provisioning: call it once per run with the typed run
|
|
197
|
+
* context.
|
|
198
|
+
*/
|
|
199
|
+
export declare const createToolset: <RunCtx, HostMeta extends object = Record<never, never>>(tools: ReadonlyArray<Tool<RunCtx, HostMeta>>, options: CreateToolsetOptions<RunCtx, HostMeta>) => ((run: RunCtx) => Toolset);
|
|
200
|
+
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/tools/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,iBAAiB,EAClB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,eAAe,EAEpB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,OAAO,EACb,MAAM,uBAAuB,CAAA;AAM9B,MAAM,WAAW,WAAW,CAAC,MAAM,GAAG,IAAI;IACxC,yEAAyE;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAA;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAA;IACvC,+DAA+D;IAC/D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAA;CACrD;AAED,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACjD,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACjD,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;CAC1D;AAED,4EAA4E;AAC5E,MAAM,WAAW,kBAAkB,CAAC,YAAY,GAAG,OAAO;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAC3B;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,iFAAiF;IACjF,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;IACvD,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;IAC7B,wGAAwG;IACxG,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAA;CAC/C;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,gBAAgB,GACzF,QAAQ,CAAA;AAEV,MAAM,WAAW,cAAc,CAC7B,CAAC,SAAS,gBAAgB,EAC1B,MAAM,EACN,QAAQ,SAAS,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IAE9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IACtB;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAChE,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;IACzC,8DAA8D;IAC9D,QAAQ,CAAC,cAAc,CAAC,EAAE,CACxB,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,EACtC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,KACrB,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACrD;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAC7B,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,EACtC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,KACrB,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAA;IAC7E,QAAQ,CAAC,OAAO,EAAE,CAChB,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,EACtC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,KACrB,OAAO,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAA;CACxC;AAED,MAAM,WAAW,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,QAAQ,SAAS,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IACjF,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IACvE,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,YAAY,CAAC,EAAE,gBAAgB,KAAK,SAAS,CAAA;IACjG,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,CAChB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACvC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,EACxB,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;CACnC;AAED,0EAA0E;AAC1E,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,CAAA;AAE7D,kDAAkD;AAClD,MAAM,WAAW,gBAAgB,CAAC,MAAM,EAAE,QAAQ,SAAS,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IACtF,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IACvE,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,KAAK,CAAA;CACrC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAAC,MAAM,EAAE,QAAQ,SAAS,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CACrF,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,EACxC,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;AAElC,oFAAoF;AACpF,MAAM,WAAW,kBAAkB,CAAC,MAAM,EAAE,QAAQ,SAAS,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IACxF,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,CAAA;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAClD,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAA;IACzD,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;CAC5C;AAED;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,KAAK,KAAK,MAAM,CAAA;AAE3D;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,cACxB,mBAAmB,UACtB,gBAAgB,KACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CACqD,CAAA;AAE9E,MAAM,WAAW,oBAAoB,CACnC,MAAM,GAAG,IAAI,EACb,QAAQ,SAAS,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IAE9C,mJAAmJ;IACnJ,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAA;IAC1C,+CAA+C;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,KAAK,kBAAkB,CAAA;IAC1F;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACjC;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAE1B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,GAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAA;IAC3D,mFAAmF;IACnF,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC1D;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,QAAQ,KAAK,MAAM,CAAA;IACvE,oFAAoF;IACpF,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAA;IACxC;;;;;;;;;OASG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9E;AAoCD,wEAAwE;AACxE,eAAO,MAAM,yBAAyB,sBAAsB,CAAA;AAiF5D,0EAA0E;AAC1E,eAAO,MAAM,UAAU,GACrB,CAAC,SAAS,gBAAgB,EAC1B,MAAM,GAAG,IAAI,EACb,QAAQ,SAAS,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,cAElC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAC9C,IAAI,CAAC,MAAM,EAAE,QAAQ,CAsEvB,CAAA;AAUD;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,EAAE,QAAQ,SAAS,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,SAC3E,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,WACnC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAC9C,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CA0G3B,CAAA"}
|