@vinhnt-sdk/tools 0.1.2 → 0.1.3
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/agent-provider.d.ts +30 -0
- package/dist/agent-provider.d.ts.map +1 -0
- package/dist/agent-provider.js +35 -0
- package/dist/agent-provider.js.map +1 -0
- package/dist/define-tool.d.ts +6 -1
- package/dist/define-tool.d.ts.map +1 -1
- package/dist/define-tool.js +8 -5
- package/dist/define-tool.js.map +1 -1
- package/dist/definitions.d.ts +12 -1
- package/dist/definitions.d.ts.map +1 -1
- package/dist/definitions.js +2 -1
- package/dist/definitions.js.map +1 -1
- package/dist/description-lint.d.ts +2 -0
- package/dist/description-lint.d.ts.map +1 -1
- package/dist/description-lint.js.map +1 -1
- package/dist/diff.d.ts +2 -0
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +1 -0
- package/dist/diff.js.map +1 -1
- package/dist/file-history.d.ts +4 -0
- package/dist/file-history.d.ts.map +1 -1
- package/dist/file-history.js +1 -0
- package/dist/file-history.js.map +1 -1
- package/dist/file-tools.d.ts +45 -12
- package/dist/file-tools.d.ts.map +1 -1
- package/dist/file-tools.js +104 -30
- package/dist/file-tools.js.map +1 -1
- package/dist/git-tools.d.ts +5 -1
- package/dist/git-tools.d.ts.map +1 -1
- package/dist/git-tools.js +7 -2
- package/dist/git-tools.js.map +1 -1
- package/dist/history-hook.d.ts +2 -1
- package/dist/history-hook.d.ts.map +1 -1
- package/dist/history-hook.js +4 -3
- package/dist/history-hook.js.map +1 -1
- package/dist/image-tools.d.ts +13 -3
- package/dist/image-tools.d.ts.map +1 -1
- package/dist/image-tools.js +62 -13
- package/dist/image-tools.js.map +1 -1
- package/dist/index.d.ts +38 -230
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -131
- package/dist/index.js.map +1 -1
- package/dist/json-schema.d.ts +3 -0
- package/dist/json-schema.d.ts.map +1 -1
- package/dist/kill-tree.d.ts +36 -0
- package/dist/kill-tree.d.ts.map +1 -0
- package/dist/kill-tree.js +80 -0
- package/dist/kill-tree.js.map +1 -0
- package/dist/lazy-registry.d.ts +5 -3
- package/dist/lazy-registry.d.ts.map +1 -1
- package/dist/lazy-registry.js +1 -0
- package/dist/lazy-registry.js.map +1 -1
- package/dist/policy.d.ts +1 -0
- package/dist/policy.d.ts.map +1 -1
- package/dist/providers/builtin-provider.d.ts.map +1 -1
- package/dist/providers/builtin-provider.js +1 -4
- package/dist/providers/builtin-provider.js.map +1 -1
- package/dist/providers/file-loader.d.ts +20 -2
- package/dist/providers/file-loader.d.ts.map +1 -1
- package/dist/providers/file-loader.js +46 -6
- package/dist/providers/file-loader.js.map +1 -1
- package/dist/providers/index.d.ts +0 -4
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +0 -3
- package/dist/providers/index.js.map +1 -1
- package/dist/question-tool.d.ts +9 -3
- package/dist/question-tool.d.ts.map +1 -1
- package/dist/question-tool.js +5 -1
- package/dist/question-tool.js.map +1 -1
- package/dist/read-tracker.d.ts +10 -1
- package/dist/read-tracker.d.ts.map +1 -1
- package/dist/read-tracker.js +38 -8
- package/dist/read-tracker.js.map +1 -1
- package/dist/registry.d.ts +3 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +8 -2
- package/dist/registry.js.map +1 -1
- package/dist/saga.d.ts +32 -0
- package/dist/saga.d.ts.map +1 -0
- package/dist/saga.js +65 -0
- package/dist/saga.js.map +1 -0
- package/dist/sandbox.d.ts +2 -0
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +10 -43
- package/dist/sandbox.js.map +1 -1
- package/dist/search-tools.d.ts +3 -1
- package/dist/search-tools.d.ts.map +1 -1
- package/dist/search-tools.js +7 -3
- package/dist/search-tools.js.map +1 -1
- package/dist/shell-parser.js +1 -0
- package/dist/shell-parser.js.map +1 -1
- package/dist/shell-tool.d.ts +11 -4
- package/dist/shell-tool.d.ts.map +1 -1
- package/dist/shell-tool.js +16 -9
- package/dist/shell-tool.js.map +1 -1
- package/dist/skill-provider.d.ts +21 -0
- package/dist/skill-provider.d.ts.map +1 -0
- package/dist/skill-provider.js +28 -0
- package/dist/skill-provider.js.map +1 -0
- package/dist/todo-tool.d.ts +2 -1
- package/dist/todo-tool.d.ts.map +1 -1
- package/dist/todo-tool.js +2 -1
- package/dist/todo-tool.js.map +1 -1
- package/dist/tool-sandbox.d.ts +19 -0
- package/dist/tool-sandbox.d.ts.map +1 -0
- package/dist/tool-sandbox.js +100 -0
- package/dist/tool-sandbox.js.map +1 -0
- package/dist/tool-search.d.ts +6 -3
- package/dist/tool-search.d.ts.map +1 -1
- package/dist/tool-search.js +2 -1
- package/dist/tool-search.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/validate.d.ts +4 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +3 -0
- package/dist/validate.js.map +1 -1
- package/dist/web-search-tool.d.ts +10 -5
- package/dist/web-search-tool.d.ts.map +1 -1
- package/dist/web-search-tool.js +5 -3
- package/dist/web-search-tool.js.map +1 -1
- package/dist/web-tools.d.ts +8 -3
- package/dist/web-tools.d.ts.map +1 -1
- package/dist/web-tools.js +5 -1
- package/dist/web-tools.js.map +1 -1
- package/package.json +10 -9
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SkillToolProvider — Provides skill-related tools.
|
|
3
|
+
*
|
|
4
|
+
* This is a metadata provider that declares skill tools exist.
|
|
5
|
+
* Actual tool creation happens in the composition root to avoid circular dependencies.
|
|
6
|
+
*/
|
|
7
|
+
export class SkillToolProvider {
|
|
8
|
+
id = "skills";
|
|
9
|
+
name = "Skill Tools";
|
|
10
|
+
description = "Skill management tools: load, search, create";
|
|
11
|
+
_tools = [];
|
|
12
|
+
get tools() {
|
|
13
|
+
return this._tools;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Add tools externally (called by composition root).
|
|
17
|
+
*/
|
|
18
|
+
addTools(tools) {
|
|
19
|
+
this._tools.push(...tools);
|
|
20
|
+
}
|
|
21
|
+
register(_registry) {
|
|
22
|
+
// Registration is handled by ToolProviderRegistry
|
|
23
|
+
}
|
|
24
|
+
unregister(_registry) {
|
|
25
|
+
this._tools = [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=skill-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-provider.js","sourceRoot":"","sources":["../src/skill-provider.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACnB,EAAE,GAAG,QAAQ,CAAC;IACd,IAAI,GAAG,aAAa,CAAC;IACrB,WAAW,GAAG,8CAA8C,CAAC;IAE9D,MAAM,GAAqB,EAAE,CAAC;IAEtC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAuB;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,SAAuB;QAC9B,kDAAkD;IACpD,CAAC;IAED,UAAU,CAAC,SAAuB;QAChC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;CACF"}
|
package/dist/todo-tool.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
/** Create the `todowrite` tool managing a structured task list with priorities and status. */
|
|
2
|
+
export declare function createTodoWriteTool(): import("@vinhnt-sdk/tools").ToolDefinition<unknown, unknown>;
|
|
2
3
|
//# sourceMappingURL=todo-tool.d.ts.map
|
package/dist/todo-tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todo-tool.d.ts","sourceRoot":"","sources":["../src/todo-tool.ts"],"names":[],"mappings":"AAeA,wBAAgB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"todo-tool.d.ts","sourceRoot":"","sources":["../src/todo-tool.ts"],"names":[],"mappings":"AAeA,8FAA8F;AAC9F,wBAAgB,mBAAmB,iEAmHlC"}
|
package/dist/todo-tool.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { defineTool } from "
|
|
2
|
+
import { defineTool } from "@vinhnt-sdk/tools";
|
|
3
3
|
const store = new Map();
|
|
4
4
|
let nextId = 1;
|
|
5
|
+
/** Create the `todowrite` tool managing a structured task list with priorities and status. */
|
|
5
6
|
export function createTodoWriteTool() {
|
|
6
7
|
// The todo tool intentionally keeps loose runtime validation (returns
|
|
7
8
|
// `{ error }` results instead of throwing), so its schema is untyped and
|
package/dist/todo-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todo-tool.js","sourceRoot":"","sources":["../src/todo-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"todo-tool.js","sourceRoot":"","sources":["../src/todo-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ToolDefinition, ToolContext } from "@vinhnt-sdk/tools";
|
|
2
|
+
import { type SandboxConfig, type ProcessSandbox } from "@vinhnt-sdk/sandbox";
|
|
3
|
+
/**
|
|
4
|
+
* Create a process sandbox using the scopes wired into `@vinhnt-sdk/tools`
|
|
5
|
+
* (`host` and `process`). Unavailable scopes throw `SandboxUnavailableError`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createSandbox(config: SandboxConfig): ProcessSandbox;
|
|
8
|
+
/** Create a minimal ToolContext from an AbortSignal (for backward compat) */
|
|
9
|
+
export declare function signalToToolContext(signal?: AbortSignal): ToolContext;
|
|
10
|
+
/**
|
|
11
|
+
* Executes tool definitions with a default timeout applied on top of the
|
|
12
|
+
* caller's abort signal, aborting the tool when either fires.
|
|
13
|
+
*/
|
|
14
|
+
export declare class ToolSandbox {
|
|
15
|
+
private readonly config;
|
|
16
|
+
constructor(config?: SandboxConfig);
|
|
17
|
+
execute(tool: ToolDefinition, input: unknown, ctx: ToolContext): Promise<unknown>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=tool-sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-sandbox.d.ts","sourceRoot":"","sources":["../src/tool-sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAA+E,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAc3J;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAEnE;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,CAkBrE;AAED;;;GAGG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,GAAE,aAA4C;IAE3E,OAAO,CACX,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,CAAC;CAcpB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { createSandbox as baseCreateSandbox, createHostSandbox, createProcessSandbox } from "@vinhnt-sdk/sandbox";
|
|
2
|
+
/**
|
|
3
|
+
* Backends wired for `@vinhnt-sdk/tools` consumers.
|
|
4
|
+
*
|
|
5
|
+
* `host` and `process` are available out of the box. Scopes without a backend
|
|
6
|
+
* (e.g. `container`) are fail-closed: requesting them throws
|
|
7
|
+
* `SandboxUnavailableError` instead of silently downgrading.
|
|
8
|
+
*/
|
|
9
|
+
const TOOLS_SANDBOX_BACKENDS = {
|
|
10
|
+
host: createHostSandbox,
|
|
11
|
+
process: createProcessSandbox,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Create a process sandbox using the scopes wired into `@vinhnt-sdk/tools`
|
|
15
|
+
* (`host` and `process`). Unavailable scopes throw `SandboxUnavailableError`.
|
|
16
|
+
*/
|
|
17
|
+
export function createSandbox(config) {
|
|
18
|
+
return baseCreateSandbox(config, TOOLS_SANDBOX_BACKENDS);
|
|
19
|
+
}
|
|
20
|
+
/** Create a minimal ToolContext from an AbortSignal (for backward compat) */
|
|
21
|
+
export function signalToToolContext(signal) {
|
|
22
|
+
const ctrl = signal ? new AbortController() : new AbortController();
|
|
23
|
+
if (signal) {
|
|
24
|
+
signal.addEventListener("abort", () => ctrl.abort(signal.reason), { once: true });
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
sessionId: "",
|
|
28
|
+
runId: "",
|
|
29
|
+
agentId: "",
|
|
30
|
+
agentName: "",
|
|
31
|
+
signal: ctrl.signal,
|
|
32
|
+
env: {},
|
|
33
|
+
// RV-41: fail-closed default — no gate in this loose context means a tool's
|
|
34
|
+
// `ask` must reject rather than self-approve.
|
|
35
|
+
ask: async () => "reject",
|
|
36
|
+
metadata: () => { },
|
|
37
|
+
setCompensation: () => { },
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Executes tool definitions with a default timeout applied on top of the
|
|
42
|
+
* caller's abort signal, aborting the tool when either fires.
|
|
43
|
+
*/
|
|
44
|
+
export class ToolSandbox {
|
|
45
|
+
config;
|
|
46
|
+
constructor(config = { defaultTimeoutMs: 30_000 }) {
|
|
47
|
+
this.config = config;
|
|
48
|
+
}
|
|
49
|
+
async execute(tool, input, ctx) {
|
|
50
|
+
const timeout = new AbortController();
|
|
51
|
+
const timer = setTimeout(() => timeout.abort(), this.config.defaultTimeoutMs);
|
|
52
|
+
const combinedSignal = combineSignals(ctx.signal, timeout.signal);
|
|
53
|
+
const augmentedCtx = { ...ctx, signal: combinedSignal };
|
|
54
|
+
try {
|
|
55
|
+
const result = await raceAbort(tool.execute(input, augmentedCtx), combinedSignal);
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
clearTimeout(timer);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// Internal helpers
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
function raceAbort(promise, signal) {
|
|
67
|
+
if (signal.aborted) {
|
|
68
|
+
return Promise.reject(new DOMException(signal.reason ?? "Aborted", "AbortError"));
|
|
69
|
+
}
|
|
70
|
+
return new Promise((resolve, reject) => {
|
|
71
|
+
const onAbort = () => {
|
|
72
|
+
reject(new DOMException(signal.reason ?? "Timed out", "AbortError"));
|
|
73
|
+
};
|
|
74
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
75
|
+
promise.then((val) => {
|
|
76
|
+
signal.removeEventListener("abort", onAbort);
|
|
77
|
+
resolve(val);
|
|
78
|
+
}, (err) => {
|
|
79
|
+
signal.removeEventListener("abort", onAbort);
|
|
80
|
+
reject(err);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
function combineSignals(...signals) {
|
|
85
|
+
const valid = signals.filter((s) => s !== undefined);
|
|
86
|
+
if (valid.length === 0)
|
|
87
|
+
return new AbortController().signal;
|
|
88
|
+
if (valid.length === 1)
|
|
89
|
+
return valid[0];
|
|
90
|
+
const controller = new AbortController();
|
|
91
|
+
for (const s of valid) {
|
|
92
|
+
if (s.aborted) {
|
|
93
|
+
controller.abort(s.reason);
|
|
94
|
+
return controller.signal;
|
|
95
|
+
}
|
|
96
|
+
s.addEventListener("abort", () => controller.abort(s.reason), { once: true });
|
|
97
|
+
}
|
|
98
|
+
return controller.signal;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=tool-sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-sandbox.js","sourceRoot":"","sources":["../src/tool-sandbox.ts"],"names":[],"mappings":"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"}
|
package/dist/tool-search.d.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import type { ToolRegistry } from "
|
|
1
|
+
import type { ToolRegistry } from "@vinhnt-sdk/tools";
|
|
2
|
+
/** Input for the `search_tools` tool. */
|
|
2
3
|
export interface ToolSearchInput {
|
|
3
4
|
query: string;
|
|
4
|
-
tags?: string[];
|
|
5
|
+
tags?: string[] | undefined;
|
|
5
6
|
}
|
|
7
|
+
/** A found tool in `search_tools` results. */
|
|
6
8
|
export interface ToolSearchResult {
|
|
7
9
|
id: string;
|
|
8
10
|
description: string;
|
|
9
11
|
tags: readonly string[];
|
|
10
12
|
}
|
|
11
|
-
|
|
13
|
+
/** Create the `search_tools` tool that searches registered tools by query or tags. */
|
|
14
|
+
export declare function createToolSearchTool(registry: ToolRegistry): import("@vinhnt-sdk/tools").ToolDefinition<ToolSearchInput, {
|
|
12
15
|
results: ToolSearchResult[];
|
|
13
16
|
}>;
|
|
14
17
|
//# sourceMappingURL=tool-search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-search.d.ts","sourceRoot":"","sources":["../src/tool-search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"tool-search.d.ts","sourceRoot":"","sources":["../src/tool-search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOtD,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7B;AAED,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY;aACX,gBAAgB,EAAE;GAuCjE"}
|
package/dist/tool-search.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { defineTool } from "
|
|
2
|
+
import { defineTool } from "@vinhnt-sdk/tools";
|
|
3
3
|
const ToolSearchSchema = z.object({
|
|
4
4
|
query: z.string().min(1),
|
|
5
5
|
tags: z.array(z.string()).optional(),
|
|
6
6
|
});
|
|
7
|
+
/** Create the `search_tools` tool that searches registered tools by query or tags. */
|
|
7
8
|
export function createToolSearchTool(registry) {
|
|
8
9
|
return defineTool({
|
|
9
10
|
name: "search_tools",
|
package/dist/tool-search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-search.js","sourceRoot":"","sources":["../src/tool-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"tool-search.js","sourceRoot":"","sources":["../src/tool-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAeH,sFAAsF;AACtF,MAAM,UAAU,oBAAoB,CAAC,QAAsB;IACzD,OAAO,UAAU,CAAmD;QAClE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,iFAAiF;QAC9F,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,gBAAgB;QACvB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAE;gBACnG,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE;aAClF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;QACD,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAExC,MAAM,OAAO,GAAG,QAAQ;iBACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBACf,MAAM,YAAY,GAChB,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACrC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,CAAC,YAAY;oBAAE,OAAO,KAAK,CAAC;gBAChC,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;oBACjC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1D,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;iBACZ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACd,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;aACtB,CAAC,CAAC,CAAC;YAEN,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;KACF,CAAC,CAAC,YAAY,EAAE,CAAC;AACpB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ToolDefinition } from "./definitions.js";
|
|
2
|
+
/** Result of a tool execution. */
|
|
2
3
|
export type ToolExecutionResult = {
|
|
3
4
|
status: "success";
|
|
4
5
|
output: unknown;
|
|
@@ -9,6 +10,7 @@ export type ToolExecutionResult = {
|
|
|
9
10
|
status: "error";
|
|
10
11
|
error: string;
|
|
11
12
|
};
|
|
13
|
+
/** Lifecycle hook that can intercept a tool call before and after execution. */
|
|
12
14
|
export interface ToolHook {
|
|
13
15
|
readonly id: string;
|
|
14
16
|
pre?(params: {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GACnE,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAA;KAAE,GACjG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;CACvC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,kCAAkC;AAClC,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,gFAAgF;AAChF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GACnE,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAA;KAAE,GACjG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;CACvC"}
|
package/dist/validate.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
1
|
+
import type { z } from "zod";
|
|
2
2
|
import { ToolInputError as SchemaToolInputError } from "@vinhnt-sdk/schema";
|
|
3
|
+
/** Thrown when tool input fails Zod validation. */
|
|
3
4
|
export declare class ToolInputError extends SchemaToolInputError {
|
|
4
5
|
readonly toolId: string;
|
|
5
6
|
readonly code = "TOOL_INPUT_ERROR";
|
|
6
7
|
readonly retryable = false;
|
|
7
8
|
constructor(toolId: string, issues: z.ZodIssue[]);
|
|
8
9
|
}
|
|
10
|
+
/** Validate tool input against a Zod schema, throwing {@link ToolInputError} on failure. */
|
|
9
11
|
export declare function validateInput<T>(toolId: string, schema: z.ZodSchema<T>, input: unknown): T;
|
|
12
|
+
/** Create a reusable validator bound to a tool id. */
|
|
10
13
|
export declare function createValidator<T>(toolId: string, schema: z.ZodSchema<T>): (input: unknown) => T;
|
|
11
14
|
//# sourceMappingURL=validate.d.ts.map
|
package/dist/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAC,MAAM,KAAK,CAAC;AAE5B,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,mDAAmD;AACnD,qBAAa,cAAe,SAAQ,oBAAoB;aAKpC,MAAM,EAAE,MAAM;IAJhC,SAAyB,IAAI,sBAAsB;IACnD,SAAyB,SAAS,SAAS;gBAGzB,MAAM,EAAE,MAAM,EAC9B,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAMvB;AAED,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAS1F;AAED,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAEhG"}
|
package/dist/validate.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ZodError } from "zod";
|
|
2
2
|
import { ToolInputError as SchemaToolInputError } from "@vinhnt-sdk/schema";
|
|
3
|
+
/** Thrown when tool input fails Zod validation. */
|
|
3
4
|
export class ToolInputError extends SchemaToolInputError {
|
|
4
5
|
toolId;
|
|
5
6
|
code = "TOOL_INPUT_ERROR";
|
|
@@ -11,6 +12,7 @@ export class ToolInputError extends SchemaToolInputError {
|
|
|
11
12
|
this.name = "ToolInputError";
|
|
12
13
|
}
|
|
13
14
|
}
|
|
15
|
+
/** Validate tool input against a Zod schema, throwing {@link ToolInputError} on failure. */
|
|
14
16
|
export function validateInput(toolId, schema, input) {
|
|
15
17
|
try {
|
|
16
18
|
return schema.parse(input);
|
|
@@ -22,6 +24,7 @@ export function validateInput(toolId, schema, input) {
|
|
|
22
24
|
throw err;
|
|
23
25
|
}
|
|
24
26
|
}
|
|
27
|
+
/** Create a reusable validator bound to a tool id. */
|
|
25
28
|
export function createValidator(toolId, schema) {
|
|
26
29
|
return (input) => validateInput(toolId, schema, input);
|
|
27
30
|
}
|
package/dist/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,mDAAmD;AACnD,MAAM,OAAO,cAAe,SAAQ,oBAAoB;IAKpC;IAJO,IAAI,GAAG,kBAAkB,CAAC;IAC1B,SAAS,GAAG,KAAK,CAAC;IAE3C,YACkB,MAAc,EAC9B,MAAoB;QAEpB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAJP,WAAM,GAAN,MAAM,CAAQ;QAK9B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,4FAA4F;AAC5F,MAAM,UAAU,aAAa,CAAI,MAAc,EAAE,MAAsB,EAAE,KAAc;IACrF,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,eAAe,CAAI,MAAc,EAAE,MAAsB;IACvE,OAAO,CAAC,KAAc,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
/** A single web search result. */
|
|
1
2
|
export interface SearchResult {
|
|
2
3
|
title: string;
|
|
3
4
|
url: string;
|
|
4
5
|
content: string;
|
|
5
6
|
score: number;
|
|
6
7
|
}
|
|
8
|
+
/** Response of a web search: ranked results plus an optional synthesized answer. */
|
|
7
9
|
export interface WebSearchResponse {
|
|
8
10
|
results: SearchResult[];
|
|
9
11
|
answer?: string;
|
|
@@ -19,6 +21,7 @@ export interface WebSearchProvider {
|
|
|
19
21
|
searchDepth?: "basic" | "advanced";
|
|
20
22
|
}): Promise<WebSearchResponse>;
|
|
21
23
|
}
|
|
24
|
+
/** Configuration for the {@link createWebSearchTool} tool. */
|
|
22
25
|
export interface WebSearchToolConfig {
|
|
23
26
|
/**
|
|
24
27
|
* Web search provider — injectable dependency.
|
|
@@ -35,6 +38,7 @@ export interface WebSearchToolConfig {
|
|
|
35
38
|
* User override được qua baseUrl option.
|
|
36
39
|
*/
|
|
37
40
|
export declare const DEFAULT_TAVILY_URL = "https://api.tavily.com/search";
|
|
41
|
+
/** Default Serper (Google Search) API URL. */
|
|
38
42
|
export declare const DEFAULT_SERPER_URL = "https://google.serper.dev/search";
|
|
39
43
|
/**
|
|
40
44
|
* Tavily search provider adapter — convenience only.
|
|
@@ -72,13 +76,14 @@ export declare class SerperSearchProvider implements WebSearchProvider {
|
|
|
72
76
|
numResults?: number;
|
|
73
77
|
}): Promise<WebSearchResponse>;
|
|
74
78
|
}
|
|
75
|
-
|
|
79
|
+
/** Create the `web_search` tool backed by a {@link WebSearchProvider}. */
|
|
80
|
+
export declare function createWebSearchTool(config: WebSearchToolConfig): import("@vinhnt-sdk/tools").ToolDefinition<{
|
|
76
81
|
query: string;
|
|
77
|
-
numResults?: number;
|
|
78
|
-
searchDepth?: "basic" | "advanced";
|
|
82
|
+
numResults?: number | undefined;
|
|
83
|
+
searchDepth?: "basic" | "advanced" | undefined;
|
|
79
84
|
}, {
|
|
80
85
|
results: SearchResult[];
|
|
81
|
-
answer?: string;
|
|
82
|
-
error?: string;
|
|
86
|
+
answer?: string | undefined;
|
|
87
|
+
error?: string | undefined;
|
|
83
88
|
}>;
|
|
84
89
|
//# sourceMappingURL=web-search-tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-search-tool.d.ts","sourceRoot":"","sources":["../src/web-search-tool.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;KACpC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,kCAAkC,CAAC;AAClE,eAAO,MAAM,kBAAkB,qCAAqC,CAAC;AAErE;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IAC5D,IAAI,SAAY;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAM9E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACpC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;KACpC,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAmB/B;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IAC5D,IAAI,SAAY;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAM9E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACpC,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA4B/B;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB;WAClC,MAAM;iBAAe,MAAM;kBAAgB,OAAO,GAAG,UAAU;;
|
|
1
|
+
{"version":3,"file":"web-search-tool.d.ts","sourceRoot":"","sources":["../src/web-search-tool.ts"],"names":[],"mappings":"AAaA,kCAAkC;AAClC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oFAAoF;AACpF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;KACpC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChC;AAED,8DAA8D;AAC9D,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,kCAAkC,CAAC;AAClE,8CAA8C;AAC9C,eAAO,MAAM,kBAAkB,qCAAqC,CAAC;AAErE;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IAC5D,IAAI,SAAY;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAM9E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACpC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;KACpC,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAmB/B;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IAC5D,IAAI,SAAY;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAM9E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACpC,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA4B/B;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB;WAClC,MAAM;iBAAe,MAAM,GAAG,SAAS;kBAAgB,OAAO,GAAG,UAAU,GAAG,SAAS;;aACvG,YAAY,EAAE;aACd,MAAM,GAAG,SAAS;YACnB,MAAM,GAAG,SAAS;GA4C7B"}
|
package/dist/web-search-tool.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { defineTool } from "
|
|
2
|
+
import { defineTool } from "@vinhnt-sdk/tools";
|
|
3
3
|
import { NetworkError } from "@vinhnt-sdk/schema";
|
|
4
4
|
const WebSearchSchema = z.object({
|
|
5
5
|
query: z.string().min(1),
|
|
@@ -14,6 +14,7 @@ const WebSearchSchema = z.object({
|
|
|
14
14
|
* User override được qua baseUrl option.
|
|
15
15
|
*/
|
|
16
16
|
export const DEFAULT_TAVILY_URL = "https://api.tavily.com/search";
|
|
17
|
+
/** Default Serper (Google Search) API URL. */
|
|
17
18
|
export const DEFAULT_SERPER_URL = "https://google.serper.dev/search";
|
|
18
19
|
/**
|
|
19
20
|
* Tavily search provider adapter — convenience only.
|
|
@@ -87,6 +88,7 @@ export class SerperSearchProvider {
|
|
|
87
88
|
};
|
|
88
89
|
}
|
|
89
90
|
}
|
|
91
|
+
/** Create the `web_search` tool backed by a {@link WebSearchProvider}. */
|
|
90
92
|
export function createWebSearchTool(config) {
|
|
91
93
|
return defineTool({
|
|
92
94
|
name: "web_search",
|
|
@@ -107,8 +109,8 @@ export function createWebSearchTool(config) {
|
|
|
107
109
|
const timeout = setTimeout(() => controller.abort(), config.timeout ?? 15000);
|
|
108
110
|
try {
|
|
109
111
|
const data = await config.provider.search(v.query, {
|
|
110
|
-
numResults: v.numResults ?? config.defaultNumResults,
|
|
111
|
-
searchDepth: v.searchDepth,
|
|
112
|
+
numResults: v.numResults ?? config.defaultNumResults ?? 5,
|
|
113
|
+
...(v.searchDepth !== undefined ? { searchDepth: v.searchDepth } : {}),
|
|
112
114
|
});
|
|
113
115
|
return {
|
|
114
116
|
results: data.results.map((r) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-search-tool.js","sourceRoot":"","sources":["../src/web-search-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"web-search-tool.js","sourceRoot":"","sources":["../src/web-search-tool.ts"],"names":[],"mappings":"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"}
|
package/dist/web-tools.d.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
+
/** Configuration for the {@link createWebFetchTool} tool. */
|
|
1
2
|
export interface WebFetchToolConfig {
|
|
2
3
|
/** Maximum response size in bytes (default: 524288) */
|
|
3
4
|
maxResponseSize?: number;
|
|
4
5
|
}
|
|
5
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Create the `web_fetch` tool that fetches a URL and returns its content as
|
|
8
|
+
* text (HTML is stripped unless `format: "html"`), truncated to the max size.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createWebFetchTool(config?: WebFetchToolConfig): import("@vinhnt-sdk/tools").ToolDefinition<{
|
|
6
11
|
url: string;
|
|
7
|
-
format?: "markdown" | "text" | "html";
|
|
8
|
-
timeout?: number;
|
|
12
|
+
format?: "markdown" | "text" | "html" | undefined;
|
|
13
|
+
timeout?: number | undefined;
|
|
9
14
|
}, string>;
|
|
10
15
|
//# sourceMappingURL=web-tools.d.ts.map
|
package/dist/web-tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-tools.d.ts","sourceRoot":"","sources":["../src/web-tools.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,kBAAkB;SACnC,MAAM;aAAW,UAAU,GAAG,MAAM,GAAG,MAAM;cAAY,MAAM;
|
|
1
|
+
{"version":3,"file":"web-tools.d.ts","sourceRoot":"","sources":["../src/web-tools.ts"],"names":[],"mappings":"AAWA,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,kBAAkB;SACnC,MAAM;aAAW,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;cAAY,MAAM,GAAG,SAAS;WAoCjH"}
|
package/dist/web-tools.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { defineTool } from "
|
|
2
|
+
import { defineTool } from "@vinhnt-sdk/tools";
|
|
3
3
|
import { sanitizeForLLM } from "@vinhnt-sdk/security";
|
|
4
4
|
import { NetworkError } from "@vinhnt-sdk/schema";
|
|
5
5
|
const WebFetchSchema = z.object({
|
|
@@ -7,6 +7,10 @@ const WebFetchSchema = z.object({
|
|
|
7
7
|
format: z.enum(["markdown", "text", "html"]).optional(),
|
|
8
8
|
timeout: z.number().positive().optional(),
|
|
9
9
|
});
|
|
10
|
+
/**
|
|
11
|
+
* Create the `web_fetch` tool that fetches a URL and returns its content as
|
|
12
|
+
* text (HTML is stripped unless `format: "html"`), truncated to the max size.
|
|
13
|
+
*/
|
|
10
14
|
export function createWebFetchTool(config) {
|
|
11
15
|
return defineTool({
|
|
12
16
|
name: "web_fetch",
|
package/dist/web-tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-tools.js","sourceRoot":"","sources":["../src/web-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"web-tools.js","sourceRoot":"","sources":["../src/web-tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vinhnt-sdk/tools",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Built-in tools for VNT Agent — file, shell, git, web, search, image, and more",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
"exports": {
|
|
10
10
|
".": {
|
|
11
11
|
"types": "./dist/index.d.ts",
|
|
12
|
-
"import": "./dist/index.js"
|
|
13
|
-
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./package.json": "./package.json"
|
|
14
16
|
},
|
|
15
17
|
"files": [
|
|
16
18
|
"dist",
|
|
@@ -44,16 +46,15 @@
|
|
|
44
46
|
},
|
|
45
47
|
"dependencies": {
|
|
46
48
|
"zod": "^4.4.3",
|
|
47
|
-
"@vinhnt-sdk/
|
|
48
|
-
"@vinhnt-sdk/
|
|
49
|
-
|
|
50
|
-
"peerDependencies": {
|
|
51
|
-
"@vinhnt-sdk/core": "0.1.2"
|
|
49
|
+
"@vinhnt-sdk/sandbox": "0.1.3",
|
|
50
|
+
"@vinhnt-sdk/schema": "0.1.3",
|
|
51
|
+
"@vinhnt-sdk/security": "0.1.3"
|
|
52
52
|
},
|
|
53
53
|
"scripts": {
|
|
54
54
|
"build": "tsc -b",
|
|
55
55
|
"typecheck": "tsc --noEmit",
|
|
56
56
|
"clean": "node -e \"try{require('fs').rmSync('dist',{recursive:true,force:true})}catch(e){}\" && node -e \"try{require('fs').rmSync('tsconfig.tsbuildinfo',{force:true})}catch(e){}\"",
|
|
57
|
-
"test": "vitest run"
|
|
57
|
+
"test": "vitest run",
|
|
58
|
+
"lint": "eslint ."
|
|
58
59
|
}
|
|
59
60
|
}
|