@vinhnt-sdk/tools 0.1.1 → 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.
Files changed (131) hide show
  1. package/README.md +179 -0
  2. package/dist/agent-provider.d.ts +30 -0
  3. package/dist/agent-provider.d.ts.map +1 -0
  4. package/dist/agent-provider.js +35 -0
  5. package/dist/agent-provider.js.map +1 -0
  6. package/dist/define-tool.d.ts +6 -1
  7. package/dist/define-tool.d.ts.map +1 -1
  8. package/dist/define-tool.js +8 -5
  9. package/dist/define-tool.js.map +1 -1
  10. package/dist/definitions.d.ts +12 -1
  11. package/dist/definitions.d.ts.map +1 -1
  12. package/dist/definitions.js +2 -1
  13. package/dist/definitions.js.map +1 -1
  14. package/dist/description-lint.d.ts +2 -0
  15. package/dist/description-lint.d.ts.map +1 -1
  16. package/dist/description-lint.js.map +1 -1
  17. package/dist/diff.d.ts +2 -0
  18. package/dist/diff.d.ts.map +1 -1
  19. package/dist/diff.js +1 -0
  20. package/dist/diff.js.map +1 -1
  21. package/dist/file-history.d.ts +4 -0
  22. package/dist/file-history.d.ts.map +1 -1
  23. package/dist/file-history.js +3 -1
  24. package/dist/file-history.js.map +1 -1
  25. package/dist/file-tools.d.ts +45 -12
  26. package/dist/file-tools.d.ts.map +1 -1
  27. package/dist/file-tools.js +112 -37
  28. package/dist/file-tools.js.map +1 -1
  29. package/dist/git-tools.d.ts +5 -1
  30. package/dist/git-tools.d.ts.map +1 -1
  31. package/dist/git-tools.js +7 -2
  32. package/dist/git-tools.js.map +1 -1
  33. package/dist/history-hook.d.ts +2 -1
  34. package/dist/history-hook.d.ts.map +1 -1
  35. package/dist/history-hook.js +4 -3
  36. package/dist/history-hook.js.map +1 -1
  37. package/dist/image-tools.d.ts +13 -3
  38. package/dist/image-tools.d.ts.map +1 -1
  39. package/dist/image-tools.js +64 -14
  40. package/dist/image-tools.js.map +1 -1
  41. package/dist/index.d.ts +41 -43
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +40 -26
  44. package/dist/index.js.map +1 -1
  45. package/dist/json-schema.d.ts +3 -0
  46. package/dist/json-schema.d.ts.map +1 -1
  47. package/dist/kill-tree.d.ts +36 -0
  48. package/dist/kill-tree.d.ts.map +1 -0
  49. package/dist/kill-tree.js +80 -0
  50. package/dist/kill-tree.js.map +1 -0
  51. package/dist/lazy-registry.d.ts +5 -3
  52. package/dist/lazy-registry.d.ts.map +1 -1
  53. package/dist/lazy-registry.js +3 -1
  54. package/dist/lazy-registry.js.map +1 -1
  55. package/dist/policy.d.ts +1 -0
  56. package/dist/policy.d.ts.map +1 -1
  57. package/dist/provider.d.ts.map +1 -1
  58. package/dist/provider.js +2 -1
  59. package/dist/provider.js.map +1 -1
  60. package/dist/providers/builtin-provider.d.ts.map +1 -1
  61. package/dist/providers/builtin-provider.js +1 -4
  62. package/dist/providers/builtin-provider.js.map +1 -1
  63. package/dist/providers/file-loader.d.ts +20 -2
  64. package/dist/providers/file-loader.d.ts.map +1 -1
  65. package/dist/providers/file-loader.js +46 -6
  66. package/dist/providers/file-loader.js.map +1 -1
  67. package/dist/providers/index.d.ts +0 -4
  68. package/dist/providers/index.d.ts.map +1 -1
  69. package/dist/providers/index.js +0 -3
  70. package/dist/providers/index.js.map +1 -1
  71. package/dist/question-tool.d.ts +9 -3
  72. package/dist/question-tool.d.ts.map +1 -1
  73. package/dist/question-tool.js +5 -1
  74. package/dist/question-tool.js.map +1 -1
  75. package/dist/read-tracker.d.ts +10 -1
  76. package/dist/read-tracker.d.ts.map +1 -1
  77. package/dist/read-tracker.js +38 -8
  78. package/dist/read-tracker.js.map +1 -1
  79. package/dist/registry.d.ts +3 -0
  80. package/dist/registry.d.ts.map +1 -1
  81. package/dist/registry.js +8 -2
  82. package/dist/registry.js.map +1 -1
  83. package/dist/saga.d.ts +32 -0
  84. package/dist/saga.d.ts.map +1 -0
  85. package/dist/saga.js +65 -0
  86. package/dist/saga.js.map +1 -0
  87. package/dist/sandbox.d.ts +2 -0
  88. package/dist/sandbox.d.ts.map +1 -1
  89. package/dist/sandbox.js +10 -43
  90. package/dist/sandbox.js.map +1 -1
  91. package/dist/search-tools.d.ts +3 -1
  92. package/dist/search-tools.d.ts.map +1 -1
  93. package/dist/search-tools.js +7 -3
  94. package/dist/search-tools.js.map +1 -1
  95. package/dist/shell-parser.js +1 -0
  96. package/dist/shell-parser.js.map +1 -1
  97. package/dist/shell-tool.d.ts +11 -4
  98. package/dist/shell-tool.d.ts.map +1 -1
  99. package/dist/shell-tool.js +16 -9
  100. package/dist/shell-tool.js.map +1 -1
  101. package/dist/skill-provider.d.ts +21 -0
  102. package/dist/skill-provider.d.ts.map +1 -0
  103. package/dist/skill-provider.js +28 -0
  104. package/dist/skill-provider.js.map +1 -0
  105. package/dist/todo-tool.d.ts +2 -1
  106. package/dist/todo-tool.d.ts.map +1 -1
  107. package/dist/todo-tool.js +2 -1
  108. package/dist/todo-tool.js.map +1 -1
  109. package/dist/tool-sandbox.d.ts +19 -0
  110. package/dist/tool-sandbox.d.ts.map +1 -0
  111. package/dist/tool-sandbox.js +100 -0
  112. package/dist/tool-sandbox.js.map +1 -0
  113. package/dist/tool-search.d.ts +6 -3
  114. package/dist/tool-search.d.ts.map +1 -1
  115. package/dist/tool-search.js +2 -1
  116. package/dist/tool-search.js.map +1 -1
  117. package/dist/types.d.ts +2 -0
  118. package/dist/types.d.ts.map +1 -1
  119. package/dist/validate.d.ts +8 -3
  120. package/dist/validate.d.ts.map +1 -1
  121. package/dist/validate.js +8 -3
  122. package/dist/validate.js.map +1 -1
  123. package/dist/web-search-tool.d.ts +10 -5
  124. package/dist/web-search-tool.d.ts.map +1 -1
  125. package/dist/web-search-tool.js +8 -5
  126. package/dist/web-search-tool.js.map +1 -1
  127. package/dist/web-tools.d.ts +8 -3
  128. package/dist/web-tools.d.ts.map +1 -1
  129. package/dist/web-tools.js +7 -2
  130. package/dist/web-tools.js.map +1 -1
  131. package/package.json +15 -13
@@ -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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"}
@@ -1,14 +1,17 @@
1
- import type { ToolRegistry } from "./registry.js";
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
- export declare function createToolSearchTool(registry: ToolRegistry): import("./definitions.js").ToolDefinition<ToolSearchInput, {
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,eAAe,CAAC;AAOlD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY;aACX,gBAAgB,EAAE;GAuCjE"}
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"}
@@ -1,9 +1,10 @@
1
1
  import { z } from "zod";
2
- import { defineTool } from "./define-tool.js";
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",
@@ -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,kBAAkB,CAAC;AAG9C,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;AAaH,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"}
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: {
@@ -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"}
@@ -1,9 +1,14 @@
1
- import { z } from "zod";
2
- import { VntError } from "@vinhnt-sdk/schema";
3
- export declare class ToolInputError extends VntError {
1
+ import type { z } from "zod";
2
+ import { ToolInputError as SchemaToolInputError } from "@vinhnt-sdk/schema";
3
+ /** Thrown when tool input fails Zod validation. */
4
+ export declare class ToolInputError extends SchemaToolInputError {
4
5
  readonly toolId: string;
6
+ readonly code = "TOOL_INPUT_ERROR";
7
+ readonly retryable = false;
5
8
  constructor(toolId: string, issues: z.ZodIssue[]);
6
9
  }
10
+ /** Validate tool input against a Zod schema, throwing {@link ToolInputError} on failure. */
7
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. */
8
13
  export declare function createValidator<T>(toolId: string, schema: z.ZodSchema<T>): (input: unknown) => T;
9
14
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAY,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,qBAAa,cAAe,SAAQ,QAAQ;aAExB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAMvB;AAED,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,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"}
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,14 +1,18 @@
1
1
  import { ZodError } from "zod";
2
- import { VntError } from "@vinhnt-sdk/schema";
3
- export class ToolInputError extends VntError {
2
+ import { ToolInputError as SchemaToolInputError } from "@vinhnt-sdk/schema";
3
+ /** Thrown when tool input fails Zod validation. */
4
+ export class ToolInputError extends SchemaToolInputError {
4
5
  toolId;
6
+ code = "TOOL_INPUT_ERROR";
7
+ retryable = false;
5
8
  constructor(toolId, issues) {
6
9
  const details = issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
7
- super(`Validation failed for tool "${toolId}": ${details}`);
10
+ super(toolId, details);
8
11
  this.toolId = toolId;
9
12
  this.name = "ToolInputError";
10
13
  }
11
14
  }
15
+ /** Validate tool input against a Zod schema, throwing {@link ToolInputError} on failure. */
12
16
  export function validateInput(toolId, schema, input) {
13
17
  try {
14
18
  return schema.parse(input);
@@ -20,6 +24,7 @@ export function validateInput(toolId, schema, input) {
20
24
  throw err;
21
25
  }
22
26
  }
27
+ /** Create a reusable validator bound to a tool id. */
23
28
  export function createValidator(toolId, schema) {
24
29
  return (input) => validateInput(toolId, schema, input);
25
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAExB;IADlB,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,+BAA+B,MAAM,MAAM,OAAO,EAAE,CAAC,CAAC;QAJ5C,WAAM,GAAN,MAAM,CAAQ;QAK9B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,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,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
+ {"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
- export declare function createWebSearchTool(config: WebSearchToolConfig): import("./definitions.js").ToolDefinition<{
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":"AAYA,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;;aAC/E,YAAY,EAAE;aACd,MAAM;YACP,MAAM;GA4CjB"}
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"}
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
- import { defineTool } from "./define-tool.js";
2
+ import { defineTool } from "@vinhnt-sdk/tools";
3
+ import { NetworkError } from "@vinhnt-sdk/schema";
3
4
  const WebSearchSchema = z.object({
4
5
  query: z.string().min(1),
5
6
  numResults: z.number().int().positive().optional(),
@@ -13,6 +14,7 @@ const WebSearchSchema = z.object({
13
14
  * User override được qua baseUrl option.
14
15
  */
15
16
  export const DEFAULT_TAVILY_URL = "https://api.tavily.com/search";
17
+ /** Default Serper (Google Search) API URL. */
16
18
  export const DEFAULT_SERPER_URL = "https://google.serper.dev/search";
17
19
  /**
18
20
  * Tavily search provider adapter — convenience only.
@@ -41,7 +43,7 @@ export class TavilySearchProvider {
41
43
  });
42
44
  if (!response.ok) {
43
45
  const text = await response.text().catch(() => "");
44
- throw new Error(`Tavily API error: HTTP ${response.status}${text ? ` — ${text}` : ""}`);
46
+ throw new NetworkError(`Tavily API error: HTTP ${response.status}${text ? ` — ${text}` : ""}`);
45
47
  }
46
48
  return response.json();
47
49
  }
@@ -73,7 +75,7 @@ export class SerperSearchProvider {
73
75
  });
74
76
  if (!response.ok) {
75
77
  const text = await response.text().catch(() => "");
76
- throw new Error(`Serper API error: HTTP ${response.status}${text ? ` — ${text}` : ""}`);
78
+ throw new NetworkError(`Serper API error: HTTP ${response.status}${text ? ` — ${text}` : ""}`);
77
79
  }
78
80
  const data = (await response.json());
79
81
  return {
@@ -86,6 +88,7 @@ export class SerperSearchProvider {
86
88
  };
87
89
  }
88
90
  }
91
+ /** Create the `web_search` tool backed by a {@link WebSearchProvider}. */
89
92
  export function createWebSearchTool(config) {
90
93
  return defineTool({
91
94
  name: "web_search",
@@ -106,8 +109,8 @@ export function createWebSearchTool(config) {
106
109
  const timeout = setTimeout(() => controller.abort(), config.timeout ?? 15000);
107
110
  try {
108
111
  const data = await config.provider.search(v.query, {
109
- numResults: v.numResults ?? config.defaultNumResults,
110
- searchDepth: v.searchDepth,
112
+ numResults: v.numResults ?? config.defaultNumResults ?? 5,
113
+ ...(v.searchDepth !== undefined ? { searchDepth: v.searchDepth } : {}),
111
114
  });
112
115
  return {
113
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":"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"}
1
+ {"version":3,"file":"web-search-tool.js","sourceRoot":"","sources":["../src/web-search-tool.ts"],"names":[],"mappings":"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"}
@@ -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
- export declare function createWebFetchTool(config?: WebFetchToolConfig): import("./definitions.js").ToolDefinition<{
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
@@ -1 +1 @@
1
- {"version":3,"file":"web-tools.d.ts","sourceRoot":"","sources":["../src/web-tools.ts"],"names":[],"mappings":"AAUA,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;WAoCzF"}
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,11 +1,16 @@
1
1
  import { z } from "zod";
2
- import { defineTool } from "./define-tool.js";
2
+ import { defineTool } from "@vinhnt-sdk/tools";
3
3
  import { sanitizeForLLM } from "@vinhnt-sdk/security";
4
+ import { NetworkError } from "@vinhnt-sdk/schema";
4
5
  const WebFetchSchema = z.object({
5
6
  url: z.string().url().or(z.string().min(1)),
6
7
  format: z.enum(["markdown", "text", "html"]).optional(),
7
8
  timeout: z.number().positive().optional(),
8
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
+ */
9
14
  export function createWebFetchTool(config) {
10
15
  return defineTool({
11
16
  name: "web_fetch",
@@ -30,7 +35,7 @@ export function createWebFetchTool(config) {
30
35
  headers: { "User-Agent": "VNT-Agent/0.1" },
31
36
  });
32
37
  if (!response.ok) {
33
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
38
+ throw new NetworkError(`HTTP ${response.status}: ${response.statusText}`);
34
39
  }
35
40
  const text = await response.text();
36
41
  const maxSize = config?.maxResponseSize ?? 524_288;
@@ -1 +1 @@
1
- {"version":3,"file":"web-tools.js","sourceRoot":"","sources":["../src/web-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-tools.js","sourceRoot":"","sources":["../src/web-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vinhnt-sdk/tools",
3
- "version": "0.1.1",
4
- "description": "Built-in tools for vinhnt-sdk — file, shell, git, web, search, image, and more",
3
+ "version": "0.1.3",
4
+ "description": "Built-in tools for VNT Agent — file, shell, git, web, search, image, and more",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
@@ -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",
@@ -23,12 +25,12 @@
23
25
  },
24
26
  "repository": {
25
27
  "type": "git",
26
- "url": "https://github.com/nguyen-thanh-vinh/vinhnt-sdk.git",
28
+ "url": "https://github.com/vinhnt-develop/vinhnt-sdk.git",
27
29
  "directory": "packages/tools"
28
30
  },
29
- "homepage": "https://github.com/nguyen-thanh-vinh/vinhnt-sdk/tree/main/packages/tools",
31
+ "homepage": "https://github.com/vinhnt-develop/vinhnt-sdk/tree/main/packages/tools",
30
32
  "bugs": {
31
- "url": "https://github.com/nguyen-thanh-vinh/vinhnt-sdk/issues"
33
+ "url": "https://github.com/vinhnt-develop/vinhnt-sdk/issues"
32
34
  },
33
35
  "keywords": [
34
36
  "vnt",
@@ -44,15 +46,15 @@
44
46
  },
45
47
  "dependencies": {
46
48
  "zod": "^4.4.3",
47
- "@vinhnt-sdk/schema": "0.1.1",
48
- "@vinhnt-sdk/security": "0.1.1"
49
- },
50
- "peerDependencies": {
51
- "@vinhnt-sdk/core": "0.1.1"
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
- "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){}\""
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",
58
+ "lint": "eslint ."
57
59
  }
58
60
  }