@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.
- package/README.md +179 -0
- 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 +3 -1
- 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 +112 -37
- 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 +64 -14
- package/dist/image-tools.js.map +1 -1
- package/dist/index.d.ts +41 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -26
- 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 +3 -1
- 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/provider.d.ts.map +1 -1
- package/dist/provider.js +2 -1
- package/dist/provider.js.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 +8 -3
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +8 -3
- 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 +8 -5
- 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 +7 -2
- package/dist/web-tools.js.map +1 -1
- 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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"}
|
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,9 +1,14 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
|
|
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
|
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,14 +1,18 @@
|
|
|
1
1
|
import { ZodError } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
|
|
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(
|
|
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
|
}
|
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":"
|
|
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,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { defineTool } from "
|
|
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
|
|
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
|
|
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":"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":"
|
|
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 "
|
|
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
|
|
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;
|
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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vinhnt-sdk/tools",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Built-in tools for
|
|
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/
|
|
28
|
+
"url": "https://github.com/vinhnt-develop/vinhnt-sdk.git",
|
|
27
29
|
"directory": "packages/tools"
|
|
28
30
|
},
|
|
29
|
-
"homepage": "https://github.com/
|
|
31
|
+
"homepage": "https://github.com/vinhnt-develop/vinhnt-sdk/tree/main/packages/tools",
|
|
30
32
|
"bugs": {
|
|
31
|
-
"url": "https://github.com/
|
|
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/
|
|
48
|
-
"@vinhnt-sdk/
|
|
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
|
}
|