@vraxis/agent-v 0.6.0 → 0.7.1

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 (86) hide show
  1. package/AGENTS.md +8 -2
  2. package/ARCHITECTURE.md +27 -0
  3. package/CHANGELOG.md +14 -0
  4. package/README.md +91 -16
  5. package/compatibility.json +32 -1
  6. package/dist/adapters/ai-sdk/index.d.ts.map +1 -1
  7. package/dist/adapters/ai-sdk/index.js +2 -1
  8. package/dist/adapters/ai-sdk/index.js.map +1 -1
  9. package/dist/adapters/local-cli/parsing.d.ts.map +1 -1
  10. package/dist/adapters/local-cli/parsing.js +28 -3
  11. package/dist/adapters/local-cli/parsing.js.map +1 -1
  12. package/dist/adapters/providers/index.d.ts +100 -0
  13. package/dist/adapters/providers/index.d.ts.map +1 -0
  14. package/dist/adapters/providers/index.js +195 -0
  15. package/dist/adapters/providers/index.js.map +1 -0
  16. package/dist/core/agent-v.d.ts.map +1 -1
  17. package/dist/core/agent-v.js +6 -0
  18. package/dist/core/agent-v.js.map +1 -1
  19. package/dist/core/contracts.d.ts +11 -0
  20. package/dist/core/contracts.d.ts.map +1 -1
  21. package/dist/core/extensions.d.ts +4 -0
  22. package/dist/core/extensions.d.ts.map +1 -1
  23. package/dist/core/extensions.js +2 -0
  24. package/dist/core/extensions.js.map +1 -1
  25. package/dist/core/memory.d.ts +9 -1
  26. package/dist/core/memory.d.ts.map +1 -1
  27. package/dist/core/memory.js +17 -0
  28. package/dist/core/memory.js.map +1 -1
  29. package/dist/core/version.d.ts +1 -1
  30. package/dist/core/version.js +1 -1
  31. package/dist/node/credentials.d.ts +30 -0
  32. package/dist/node/credentials.d.ts.map +1 -0
  33. package/dist/node/credentials.js +104 -0
  34. package/dist/node/credentials.js.map +1 -0
  35. package/dist/node/doctor.js +6 -6
  36. package/dist/node/doctor.js.map +1 -1
  37. package/dist/node/index.d.ts +2 -0
  38. package/dist/node/index.d.ts.map +1 -1
  39. package/dist/node/index.js +2 -0
  40. package/dist/node/index.js.map +1 -1
  41. package/dist/node/skills.d.ts.map +1 -1
  42. package/dist/node/skills.js +10 -0
  43. package/dist/node/skills.js.map +1 -1
  44. package/dist/runtime/index.d.ts +55 -0
  45. package/dist/runtime/index.d.ts.map +1 -0
  46. package/dist/runtime/index.js +94 -0
  47. package/dist/runtime/index.js.map +1 -0
  48. package/dist/skills/index.d.ts +37 -0
  49. package/dist/skills/index.d.ts.map +1 -0
  50. package/dist/skills/index.js +128 -0
  51. package/dist/skills/index.js.map +1 -0
  52. package/dist/tools/approval.d.ts +26 -0
  53. package/dist/tools/approval.d.ts.map +1 -0
  54. package/dist/tools/approval.js +23 -0
  55. package/dist/tools/approval.js.map +1 -0
  56. package/dist/tools/browser.d.ts +25 -0
  57. package/dist/tools/browser.d.ts.map +1 -0
  58. package/dist/tools/browser.js +118 -0
  59. package/dist/tools/browser.js.map +1 -0
  60. package/dist/tools/http.d.ts +9 -0
  61. package/dist/tools/http.d.ts.map +1 -0
  62. package/dist/tools/http.js +123 -0
  63. package/dist/tools/http.js.map +1 -0
  64. package/dist/tools/index.d.ts +6 -0
  65. package/dist/tools/index.d.ts.map +1 -0
  66. package/dist/tools/index.js +6 -0
  67. package/dist/tools/index.js.map +1 -0
  68. package/dist/tools/names.d.ts +19 -0
  69. package/dist/tools/names.d.ts.map +1 -0
  70. package/dist/tools/names.js +19 -0
  71. package/dist/tools/names.js.map +1 -0
  72. package/dist/tools/node/index.d.ts +20 -0
  73. package/dist/tools/node/index.d.ts.map +1 -0
  74. package/dist/tools/node/index.js +406 -0
  75. package/dist/tools/node/index.js.map +1 -0
  76. package/dist/tools/pure.d.ts +13 -0
  77. package/dist/tools/pure.d.ts.map +1 -0
  78. package/dist/tools/pure.js +170 -0
  79. package/dist/tools/pure.js.map +1 -0
  80. package/examples/providers.ts +35 -0
  81. package/examples/runtime-kit.ts +25 -0
  82. package/examples/smoke.ts +8 -0
  83. package/llms.txt +1 -1
  84. package/package.json +31 -15
  85. package/skills/agent-v/SKILL.md +8 -2
  86. package/skills/agent-v/references/integration-patterns.md +11 -0
@@ -0,0 +1,25 @@
1
+ import { type AgentTool, type JsonObject } from "../core/index.js";
2
+ export interface BrowserController {
3
+ currentUrl(options?: {
4
+ abortSignal?: AbortSignal;
5
+ }): Promise<string>;
6
+ snapshot(options?: {
7
+ abortSignal?: AbortSignal;
8
+ }): Promise<JsonObject>;
9
+ navigate(url: string, options?: {
10
+ abortSignal?: AbortSignal;
11
+ }): Promise<JsonObject>;
12
+ click(target: string, options?: {
13
+ abortSignal?: AbortSignal;
14
+ }): Promise<JsonObject>;
15
+ type(target: string, text: string, options?: {
16
+ abortSignal?: AbortSignal;
17
+ }): Promise<JsonObject>;
18
+ }
19
+ export interface BrowserToolOptions {
20
+ controller: BrowserController;
21
+ allowedOrigins: readonly string[];
22
+ timeoutMs?: number;
23
+ }
24
+ export declare function createBrowserTools(options: BrowserToolOptions): readonly AgentTool[];
25
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/tools/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG7F,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACpF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAClG;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,SAAS,EAAE,CAmFpF"}
@@ -0,0 +1,118 @@
1
+ import { defineOutput, defineTool } from "../core/index.js";
2
+ import { standardToolNames } from "./names.js";
3
+ function origin(raw) {
4
+ let url;
5
+ try {
6
+ url = new URL(raw);
7
+ }
8
+ catch {
9
+ throw new TypeError("Browser URL must be valid.");
10
+ }
11
+ if (!['http:', 'https:'].includes(url.protocol))
12
+ throw new TypeError("Browser tools support only HTTP and HTTPS URLs.");
13
+ if (url.username || url.password)
14
+ throw new TypeError("Browser URLs containing credentials are not allowed.");
15
+ const loopback = ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname);
16
+ if (url.protocol === "http:" && !loopback)
17
+ throw new TypeError("Remote browser origins must use HTTPS.");
18
+ return url.origin;
19
+ }
20
+ function stringInput(value, field) {
21
+ if (!value || typeof value !== "object" || Array.isArray(value))
22
+ throw new TypeError("Browser input must be an object.");
23
+ const selected = value[field];
24
+ if (typeof selected !== "string" || !selected.trim())
25
+ throw new TypeError(`${field} must be a non-empty string.`);
26
+ return selected;
27
+ }
28
+ export function createBrowserTools(options) {
29
+ const allowed = new Set(options.allowedOrigins.map(origin));
30
+ if (!allowed.size)
31
+ throw new TypeError("Browser tools require at least one allowed origin.");
32
+ const timeoutMs = options.timeoutMs ?? 15_000;
33
+ const verifyCurrentOrigin = async (signal) => {
34
+ const current = await options.controller.currentUrl({ abortSignal: signal });
35
+ if (!allowed.has(origin(current)))
36
+ throw new TypeError(`Browser origin ${origin(current)} is not allowed.`);
37
+ };
38
+ const objectOutput = defineOutput({
39
+ name: "browser-result",
40
+ jsonSchema: { type: "object" },
41
+ parse(value) {
42
+ if (!value || typeof value !== "object" || Array.isArray(value))
43
+ throw new TypeError("Browser controller results must be objects.");
44
+ return value;
45
+ },
46
+ });
47
+ const guarded = (definition) => defineTool({
48
+ ...definition,
49
+ risk: "external-side-effect",
50
+ sideEffect: "non-idempotent",
51
+ requiredPermissions: ["browser:control"],
52
+ requiresApproval: true,
53
+ approvalCategory: "browser",
54
+ approvalReason: "Allow this agent to control the browser on an approved origin.",
55
+ timeoutMs,
56
+ });
57
+ return [
58
+ defineTool({
59
+ name: standardToolNames.browserSnapshot,
60
+ version: "1.0.0",
61
+ description: "Read the current page through a host browser controller.",
62
+ input: defineOutput({ name: "browser-snapshot-input", jsonSchema: { type: "object", additionalProperties: false }, parse: () => ({}) }),
63
+ output: objectOutput,
64
+ risk: "read",
65
+ sideEffect: "none",
66
+ requiredPermissions: ["browser:read"],
67
+ requiresApproval: false,
68
+ timeoutMs,
69
+ async execute(_, context) {
70
+ await verifyCurrentOrigin(context.abortSignal);
71
+ return options.controller.snapshot({ abortSignal: context.abortSignal });
72
+ },
73
+ }),
74
+ guarded({
75
+ name: standardToolNames.browserNavigate,
76
+ version: "1.0.0",
77
+ description: "Navigate the controlled browser to an allowed origin.",
78
+ input: defineOutput({ name: "browser-navigate-input", jsonSchema: { type: "object", properties: { url: { type: "string" } }, required: ["url"], additionalProperties: false }, parse(value) {
79
+ const url = stringInput(value, "url");
80
+ if (!allowed.has(origin(url)))
81
+ throw new TypeError(`Browser origin ${origin(url)} is not allowed.`);
82
+ return { url };
83
+ } }),
84
+ output: objectOutput,
85
+ async execute({ url }, context) { return options.controller.navigate(url, { abortSignal: context.abortSignal }); },
86
+ }),
87
+ guarded({
88
+ name: standardToolNames.browserClick,
89
+ version: "1.0.0",
90
+ description: "Click a stable target in the controlled browser.",
91
+ input: defineOutput({ name: "browser-click-input", jsonSchema: { type: "object", properties: { target: { type: "string" } }, required: ["target"], additionalProperties: false }, parse(value) { return { target: stringInput(value, "target") }; } }),
92
+ output: objectOutput,
93
+ async execute({ target }, context) {
94
+ await verifyCurrentOrigin(context.abortSignal);
95
+ return options.controller.click(target, { abortSignal: context.abortSignal });
96
+ },
97
+ }),
98
+ guarded({
99
+ name: standardToolNames.browserType,
100
+ version: "1.0.0",
101
+ description: "Type text into a stable target in the controlled browser.",
102
+ input: defineOutput({ name: "browser-type-input", jsonSchema: { type: "object", properties: { target: { type: "string" }, text: { type: "string" } }, required: ["target", "text"], additionalProperties: false }, parse(value) {
103
+ if (!value || typeof value !== "object" || Array.isArray(value))
104
+ throw new TypeError("Browser input must be an object.");
105
+ const input = value;
106
+ if (typeof input.text !== "string")
107
+ throw new TypeError("text must be a string.");
108
+ return { target: stringInput(value, "target"), text: input.text };
109
+ } }),
110
+ output: objectOutput,
111
+ async execute({ target, text }, context) {
112
+ await verifyCurrentOrigin(context.abortSignal);
113
+ return options.controller.type(target, text, { abortSignal: context.abortSignal });
114
+ },
115
+ }),
116
+ ];
117
+ }
118
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/tools/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type AgentTool } from "../core/index.js";
2
+ export interface HttpFetchToolOptions {
3
+ allowedHosts: readonly string[];
4
+ fetch?: typeof globalThis.fetch;
5
+ maxResponseBytes?: number;
6
+ timeoutMs?: number;
7
+ }
8
+ export declare function createHttpFetchTool(options: HttpFetchToolOptions): AgentTool;
9
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/tools/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAG7F,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwCD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAwD5E"}
@@ -0,0 +1,123 @@
1
+ import { defineOutput, defineTool } from "../core/index.js";
2
+ import { standardToolNames } from "./names.js";
3
+ async function readBoundedBody(response, limit) {
4
+ if (!response.body)
5
+ return { body: "", truncated: false };
6
+ const reader = response.body.getReader();
7
+ const chunks = [];
8
+ let total = 0;
9
+ let truncated = false;
10
+ try {
11
+ while (true) {
12
+ const next = await reader.read();
13
+ if (next.done)
14
+ break;
15
+ const remaining = limit - total;
16
+ if (remaining <= 0) {
17
+ truncated = true;
18
+ break;
19
+ }
20
+ const chunk = next.value.byteLength > remaining ? next.value.slice(0, remaining) : next.value;
21
+ chunks.push(chunk);
22
+ total += chunk.byteLength;
23
+ if (chunk.byteLength < next.value.byteLength) {
24
+ truncated = true;
25
+ break;
26
+ }
27
+ }
28
+ }
29
+ finally {
30
+ if (truncated)
31
+ await reader.cancel().catch(() => undefined);
32
+ reader.releaseLock();
33
+ }
34
+ const combined = new Uint8Array(total);
35
+ let offset = 0;
36
+ for (const chunk of chunks) {
37
+ combined.set(chunk, offset);
38
+ offset += chunk.byteLength;
39
+ }
40
+ return { body: new TextDecoder().decode(combined), truncated };
41
+ }
42
+ function allowedUrl(raw, allowedHosts) {
43
+ if (typeof raw !== "string" || !raw.trim())
44
+ throw new TypeError("url must be a non-empty string.");
45
+ let url;
46
+ try {
47
+ url = new URL(raw);
48
+ }
49
+ catch {
50
+ throw new TypeError("url must be a valid URL.");
51
+ }
52
+ if (url.username || url.password)
53
+ throw new TypeError("URLs containing credentials are not allowed.");
54
+ const loopback = ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname);
55
+ if (url.protocol !== "https:" && !(url.protocol === "http:" && loopback))
56
+ throw new TypeError("Remote requests must use HTTPS.");
57
+ if (!allowedHosts.has(url.host.toLowerCase()) && !allowedHosts.has(url.hostname.toLowerCase()))
58
+ throw new TypeError(`Host ${url.host} is not allowed.`);
59
+ return url;
60
+ }
61
+ export function createHttpFetchTool(options) {
62
+ const allowedHosts = new Set(options.allowedHosts.map((host) => host.trim().toLowerCase()).filter(Boolean));
63
+ if (!allowedHosts.size)
64
+ throw new TypeError("http-fetch requires at least one allowed host.");
65
+ const performFetch = options.fetch ?? globalThis.fetch;
66
+ if (!performFetch)
67
+ throw new TypeError("No fetch implementation is available.");
68
+ const maxResponseBytes = options.maxResponseBytes ?? 256_000;
69
+ return defineTool({
70
+ name: standardToolNames.httpFetch,
71
+ version: "1.0.0",
72
+ description: "Fetch a bounded HTTPS or loopback resource from an explicit host allowlist.",
73
+ input: defineOutput({
74
+ name: "http-fetch-input",
75
+ jsonSchema: {
76
+ type: "object",
77
+ properties: { url: { type: "string" }, method: { enum: ["GET", "HEAD"] } },
78
+ required: ["url"],
79
+ additionalProperties: false,
80
+ },
81
+ parse(value) {
82
+ if (!value || typeof value !== "object" || Array.isArray(value))
83
+ throw new TypeError("HTTP input must be an object.");
84
+ const input = value;
85
+ const url = allowedUrl(input.url, allowedHosts);
86
+ const method = input.method === undefined ? "GET" : input.method;
87
+ if (method !== "GET" && method !== "HEAD")
88
+ throw new TypeError("method must be GET or HEAD.");
89
+ return { url: url.href, method };
90
+ },
91
+ }),
92
+ output: defineOutput({
93
+ name: "http-fetch-output",
94
+ jsonSchema: { type: "object" },
95
+ parse(value) {
96
+ if (!value || typeof value !== "object" || Array.isArray(value))
97
+ throw new TypeError("HTTP output must be an object.");
98
+ return value;
99
+ },
100
+ }),
101
+ risk: "external-side-effect",
102
+ sideEffect: "none",
103
+ requiredPermissions: ["network:fetch"],
104
+ requiresApproval: true,
105
+ approvalCategory: "network",
106
+ approvalReason: "Allow this agent to send a request to an approved network host.",
107
+ timeoutMs: options.timeoutMs ?? 15_000,
108
+ async execute(input, context) {
109
+ const response = await performFetch(input.url, { method: input.method, redirect: "manual", signal: context.abortSignal });
110
+ const bounded = input.method === "HEAD" ? { body: "", truncated: false } : await readBoundedBody(response, maxResponseBytes);
111
+ return {
112
+ url: input.url,
113
+ status: response.status,
114
+ ok: response.ok,
115
+ contentType: response.headers.get("content-type") ?? "",
116
+ body: bounded.body,
117
+ truncated: bounded.truncated,
118
+ redirectLocation: response.headers.get("location") ?? "",
119
+ };
120
+ },
121
+ });
122
+ }
123
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/tools/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from "./approval.js";
2
+ export * from "./browser.js";
3
+ export * from "./http.js";
4
+ export * from "./names.js";
5
+ export * from "./pure.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from "./approval.js";
2
+ export * from "./browser.js";
3
+ export * from "./http.js";
4
+ export * from "./names.js";
5
+ export * from "./pure.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ export declare const standardToolNames: {
2
+ readonly calculate: "calculate";
3
+ readonly dateTime: "date-time";
4
+ readonly validateJson: "validate-json";
5
+ readonly listDirectory: "list-directory";
6
+ readonly readText: "read-text";
7
+ readonly searchText: "search-text";
8
+ readonly writeText: "write-text";
9
+ readonly applyTextEdits: "apply-text-edits";
10
+ readonly gitStatus: "git-status";
11
+ readonly gitDiff: "git-diff";
12
+ readonly runCommand: "run-command";
13
+ readonly httpFetch: "http-fetch";
14
+ readonly browserSnapshot: "browser-snapshot";
15
+ readonly browserNavigate: "browser-navigate";
16
+ readonly browserClick: "browser-click";
17
+ readonly browserType: "browser-type";
18
+ };
19
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/tools/names.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAiBpB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export const standardToolNames = {
2
+ calculate: "calculate",
3
+ dateTime: "date-time",
4
+ validateJson: "validate-json",
5
+ listDirectory: "list-directory",
6
+ readText: "read-text",
7
+ searchText: "search-text",
8
+ writeText: "write-text",
9
+ applyTextEdits: "apply-text-edits",
10
+ gitStatus: "git-status",
11
+ gitDiff: "git-diff",
12
+ runCommand: "run-command",
13
+ httpFetch: "http-fetch",
14
+ browserSnapshot: "browser-snapshot",
15
+ browserNavigate: "browser-navigate",
16
+ browserClick: "browser-click",
17
+ browserType: "browser-type",
18
+ };
19
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../src/tools/names.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,WAAW;IACrB,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,gBAAgB;IAC/B,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,aAAa;IACzB,SAAS,EAAE,YAAY;IACvB,cAAc,EAAE,kBAAkB;IAClC,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,aAAa;IACzB,SAAS,EAAE,YAAY;IACvB,eAAe,EAAE,kBAAkB;IACnC,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;IAC7B,WAAW,EAAE,cAAc;CACnB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type AgentTool } from "../../core/index.js";
2
+ export interface FilesystemToolOptions {
3
+ rootPath: string;
4
+ maxFileBytes?: number;
5
+ maxSearchFiles?: number;
6
+ maxSearchResults?: number;
7
+ ignoredDirectories?: readonly string[];
8
+ }
9
+ export declare function createFilesystemTools(options: FilesystemToolOptions): Promise<readonly AgentTool[]>;
10
+ export interface DevelopmentToolOptions {
11
+ rootPath: string;
12
+ allowedCommands: readonly string[];
13
+ inheritedEnvironment?: readonly string[];
14
+ environment?: Readonly<Record<string, string>>;
15
+ maxOutputBytes?: number;
16
+ timeoutMs?: number;
17
+ }
18
+ export declare function createDevelopmentTools(options: DevelopmentToolOptions): Promise<readonly AgentTool[]>;
19
+ export declare function createWorkspaceTools(options: FilesystemToolOptions & Partial<Omit<DevelopmentToolOptions, "rootPath">>): Promise<readonly AgentTool[]>;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/node/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4B,KAAK,SAAS,EAAmB,MAAM,qBAAqB,CAAC;AA0DhG,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAqMzG;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAuF3G;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAW5J"}