@curie-agent/tools 0.3.0 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/bash.d.ts.map +1 -1
- package/dist/src/bash.js +6 -1
- package/dist/src/bash.js.map +1 -1
- package/dist/src/edit.d.ts.map +1 -1
- package/dist/src/edit.js +48 -20
- package/dist/src/edit.js.map +1 -1
- package/dist/src/glob.d.ts +4 -0
- package/dist/src/glob.d.ts.map +1 -1
- package/dist/src/glob.js +21 -11
- package/dist/src/glob.js.map +1 -1
- package/dist/src/grep.d.ts +3 -2
- package/dist/src/grep.d.ts.map +1 -1
- package/dist/src/grep.js +203 -47
- package/dist/src/grep.js.map +1 -1
- package/dist/src/index.d.ts +24 -25
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/read.d.ts +0 -1
- package/dist/src/read.d.ts.map +1 -1
- package/dist/src/read.js +37 -16
- package/dist/src/read.js.map +1 -1
- package/dist/src/todo.d.ts +1 -1
- package/dist/src/tool.d.ts +9 -1
- package/dist/src/tool.d.ts.map +1 -1
- package/dist/src/tool.js +83 -17
- package/dist/src/tool.js.map +1 -1
- package/dist/src/wiki.d.ts +1 -1
- package/dist/src/write.d.ts.map +1 -1
- package/dist/src/write.js +15 -3
- package/dist/src/write.js.map +1 -1
- package/package.json +3 -3
package/dist/src/todo.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export declare const todoTool: import("./tool.js").Tool & {
|
|
7
7
|
validate: (raw: Record<string, unknown>) => {
|
|
8
|
-
action: "
|
|
8
|
+
action: "edit" | "list" | "add" | "remove" | "complete" | "cancel" | "start" | "reorder";
|
|
9
9
|
scope: "personal" | "project";
|
|
10
10
|
id?: string | undefined;
|
|
11
11
|
title?: string | undefined;
|
package/dist/src/tool.d.ts
CHANGED
|
@@ -25,7 +25,15 @@ export interface ToolContext {
|
|
|
25
25
|
export declare function expandPath(p: string): string;
|
|
26
26
|
/** Set the global cwd used by all tools when not provided at call time. */
|
|
27
27
|
export declare function setGlobalCwd(cwd: string): void;
|
|
28
|
-
export
|
|
28
|
+
export interface CreateToolOptions {
|
|
29
|
+
/**
|
|
30
|
+
* Per-tool input key aliases (e.g. { path: 'file_path' }), resolved before
|
|
31
|
+
* the global KEY_ALIASES table. Lets file tools accept `path`/`filename`
|
|
32
|
+
* without breaking tools where `path` is a legitimate parameter.
|
|
33
|
+
*/
|
|
34
|
+
aliases?: Record<string, string>;
|
|
35
|
+
}
|
|
36
|
+
export declare function createTool<Schema extends z.ZodObject<z.ZodRawShape>>(name: string, description: string, schema: Schema, execute: (input: z.infer<Schema>, ctx: ToolContext) => Promise<ToolResult>, cwd?: string, options?: CreateToolOptions): Tool & {
|
|
29
37
|
validate: (raw: Record<string, unknown>) => z.infer<Schema>;
|
|
30
38
|
};
|
|
31
39
|
//# sourceMappingURL=tool.d.ts.map
|
package/dist/src/tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACzG;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5C;AAID,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE9C;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACzG;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5C;AAID,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE9C;AA2BD,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AA0DD,wBAAgB,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EAClE,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,EAC1E,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,GAAG;IAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;CAAE,CA0DxE"}
|
package/dist/src/tool.js
CHANGED
|
@@ -29,22 +29,66 @@ const KEY_ALIASES = {
|
|
|
29
29
|
oldString: 'old_string',
|
|
30
30
|
newString: 'new_string',
|
|
31
31
|
replaceAll: 'replace_all',
|
|
32
|
-
// Write
|
|
33
|
-
content: 'content', // already matched
|
|
34
|
-
// Glob
|
|
35
|
-
pattern: 'pattern', // already matched
|
|
36
|
-
// Grep
|
|
37
|
-
regex: 'regex', // already matched
|
|
38
|
-
// Bash
|
|
39
|
-
command: 'command', // already matched
|
|
40
32
|
// Reminder / Task
|
|
41
33
|
scheduledAt: 'scheduled_at',
|
|
42
34
|
// WebSearch
|
|
43
35
|
blockedDomains: 'blocked_domains',
|
|
44
36
|
allowedDomains: 'allowed_domains',
|
|
45
37
|
};
|
|
46
|
-
|
|
38
|
+
function camelToSnake(key) {
|
|
39
|
+
return key.replace(/[A-Z]/g, (c) => '_' + c.toLowerCase());
|
|
40
|
+
}
|
|
41
|
+
/** Build a one-line parameter summary from the tool's JSON schema. */
|
|
42
|
+
function describeParameters(jsonSchema) {
|
|
43
|
+
const props = jsonSchema.properties;
|
|
44
|
+
if (typeof props !== 'object' || props === null)
|
|
45
|
+
return '';
|
|
46
|
+
const required = new Set(Array.isArray(jsonSchema.required)
|
|
47
|
+
? jsonSchema.required.filter((r) => typeof r === 'string')
|
|
48
|
+
: []);
|
|
49
|
+
return Object.entries(props)
|
|
50
|
+
.map(([key, val]) => {
|
|
51
|
+
const type = typeof val === 'object' && val !== null && typeof val.type === 'string'
|
|
52
|
+
? val.type
|
|
53
|
+
: 'any';
|
|
54
|
+
return `${key} (${type}${required.has(key) ? ', required' : ''})`;
|
|
55
|
+
})
|
|
56
|
+
.join(', ');
|
|
57
|
+
}
|
|
58
|
+
function editDistance(a, b) {
|
|
59
|
+
let prevRow = Array.from({ length: b.length + 1 }, (_, i) => i);
|
|
60
|
+
for (let i = 1; i <= a.length; i++) {
|
|
61
|
+
const row = [i];
|
|
62
|
+
for (let j = 1; j <= b.length; j++) {
|
|
63
|
+
const del = (prevRow[j] ?? 0) + 1;
|
|
64
|
+
const ins = (row[j - 1] ?? 0) + 1;
|
|
65
|
+
const sub = (prevRow[j - 1] ?? 0) + (a[i - 1] === b[j - 1] ? 0 : 1);
|
|
66
|
+
row.push(Math.min(del, ins, sub));
|
|
67
|
+
}
|
|
68
|
+
prevRow = row;
|
|
69
|
+
}
|
|
70
|
+
return prevRow[b.length] ?? 0;
|
|
71
|
+
}
|
|
72
|
+
/** Suggest the closest schema key for an unknown input key, if any is close enough. */
|
|
73
|
+
function nearestKey(key, knownKeys) {
|
|
74
|
+
const lower = key.toLowerCase();
|
|
75
|
+
let best;
|
|
76
|
+
let bestScore = Infinity;
|
|
77
|
+
for (const candidate of knownKeys) {
|
|
78
|
+
const cl = candidate.toLowerCase();
|
|
79
|
+
// Substring containment ("path" in "file_path") is a strong signal on its own.
|
|
80
|
+
const score = cl === lower ? 0 : cl.includes(lower) || lower.includes(cl) ? 1 : editDistance(lower, cl);
|
|
81
|
+
if (score < bestScore) {
|
|
82
|
+
bestScore = score;
|
|
83
|
+
best = candidate;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return bestScore <= 3 ? best : undefined;
|
|
87
|
+
}
|
|
88
|
+
export function createTool(name, description, schema, execute, cwd, options) {
|
|
47
89
|
const jsonSchema = zodToJsonSchema(schema);
|
|
90
|
+
const knownKeys = new Set(Object.keys(schema.shape));
|
|
91
|
+
const toolAliases = options?.aliases ?? {};
|
|
48
92
|
const def = {
|
|
49
93
|
name,
|
|
50
94
|
description,
|
|
@@ -54,18 +98,30 @@ export function createTool(name, description, schema, execute, cwd) {
|
|
|
54
98
|
definition: def,
|
|
55
99
|
validate: (raw) => schema.parse(raw),
|
|
56
100
|
async execute(input, settings, toolCwd, sessionId) {
|
|
57
|
-
// Normalize input: strip null/undefined values and
|
|
58
|
-
//
|
|
59
|
-
//
|
|
101
|
+
// Normalize input: strip null/undefined values and resolve aliased keys.
|
|
102
|
+
// LLMs (especially local models) frequently normalize snake_case schema
|
|
103
|
+
// keys to camelCase or use near-miss names like `path` for `file_path`.
|
|
60
104
|
const normalized = {};
|
|
105
|
+
const unknownKeys = [];
|
|
106
|
+
// Pass 1: exact schema keys always win, regardless of input key order.
|
|
61
107
|
for (const [k, v] of Object.entries(input)) {
|
|
62
108
|
if (v === null || v === undefined)
|
|
63
109
|
continue;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
110
|
+
if (knownKeys.has(k))
|
|
111
|
+
normalized[k] = v;
|
|
112
|
+
}
|
|
113
|
+
// Pass 2: resolve remaining keys via per-tool aliases, the global table,
|
|
114
|
+
// then generic camelCase->snake_case when the converted key is in the schema.
|
|
115
|
+
for (const [k, v] of Object.entries(input)) {
|
|
116
|
+
if (v === null || v === undefined || knownKeys.has(k))
|
|
117
|
+
continue;
|
|
118
|
+
const snake = camelToSnake(k);
|
|
119
|
+
const target = toolAliases[k] ?? KEY_ALIASES[k] ?? (knownKeys.has(snake) ? snake : k);
|
|
120
|
+
if (!(target in normalized)) {
|
|
121
|
+
normalized[target] = v;
|
|
68
122
|
}
|
|
123
|
+
if (!knownKeys.has(target))
|
|
124
|
+
unknownKeys.push(k);
|
|
69
125
|
}
|
|
70
126
|
try {
|
|
71
127
|
const parsed = schema.parse(normalized);
|
|
@@ -74,7 +130,17 @@ export function createTool(name, description, schema, execute, cwd) {
|
|
|
74
130
|
catch (err) {
|
|
75
131
|
if (err instanceof z.ZodError) {
|
|
76
132
|
const details = err.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join('; ');
|
|
77
|
-
|
|
133
|
+
const summary = describeParameters(jsonSchema);
|
|
134
|
+
const hints = unknownKeys
|
|
135
|
+
.map((k) => {
|
|
136
|
+
const suggestion = nearestKey(k, knownKeys);
|
|
137
|
+
return suggestion ? ` Unknown parameter "${k}" — did you mean "${suggestion}"?` : '';
|
|
138
|
+
})
|
|
139
|
+
.join('');
|
|
140
|
+
return {
|
|
141
|
+
output: null,
|
|
142
|
+
error: `Validation error for tool "${name}": ${details}.${summary ? ` Expected parameters: ${summary}.` : ''}${hints}`,
|
|
143
|
+
};
|
|
78
144
|
}
|
|
79
145
|
throw err;
|
|
80
146
|
}
|
package/dist/src/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA6BlC,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,IAAI,UAAU,GAAG,EAAE,CAAC;AAEpB,2EAA2E;AAC3E,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,UAAU,GAAG,GAAG,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,MAAoB;IAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAA4B,CAAC;IAC9D,yDAAyD;IACzD,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;IACtB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,WAAW,GAA2B;IAC1C,cAAc;IACd,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,UAAU,EAAE,aAAa;IACzB,
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tool.ts"],"names":[],"mappings":"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"}
|
package/dist/src/wiki.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const wikiTool: import("./tool.js").Tool & {
|
|
2
2
|
validate: (raw: Record<string, unknown>) => {
|
|
3
|
-
op: "
|
|
3
|
+
op: "search" | "page_get" | "page_put" | "index_upsert" | "init" | "list_sources" | "list_pages" | "index_get" | "log_append" | "graph" | "lint_report";
|
|
4
4
|
slug?: string | undefined;
|
|
5
5
|
content?: string | undefined;
|
|
6
6
|
query?: string | undefined;
|
package/dist/src/write.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/write.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/write.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,SAAS;;;;;CAgDrB,CAAC"}
|
package/dist/src/write.js
CHANGED
|
@@ -4,10 +4,13 @@ import { z } from 'zod';
|
|
|
4
4
|
import { createTool, expandPath } from './tool.js';
|
|
5
5
|
import { resolveSafePath, parseAllowlist } from '@curie-agent/core/safety/path-guard.js';
|
|
6
6
|
const WriteSchema = z.object({
|
|
7
|
-
file_path: z
|
|
8
|
-
|
|
7
|
+
file_path: z
|
|
8
|
+
.string()
|
|
9
|
+
.describe('REQUIRED. The path of the file to write — absolute, or relative to the working directory. Use forward slashes even on Windows.'),
|
|
10
|
+
content: z.string().describe('REQUIRED. The full content to write to the file.'),
|
|
9
11
|
});
|
|
10
|
-
export const writeTool = createTool('Write', 'Writes a file to the local filesystem.
|
|
12
|
+
export const writeTool = createTool('Write', 'Writes a file to the local filesystem. Both file_path and content are required. ' +
|
|
13
|
+
'Creates new files or overwrites existing ones; parent directories are created automatically. ' +
|
|
11
14
|
'Use this for any content too large to deliver inline — research reports, summaries, essays, generated documents. ' +
|
|
12
15
|
'For very long content (>500 lines), write a skeleton first with placeholder headings, ' +
|
|
13
16
|
'then fill each section using the Edit tool so each individual tool call stays small and fits within output limits.', WriteSchema, async (input, ctx) => {
|
|
@@ -32,5 +35,14 @@ export const writeTool = createTool('Write', 'Writes a file to the local filesys
|
|
|
32
35
|
bytes: Buffer.byteLength(input.content, 'utf-8'),
|
|
33
36
|
},
|
|
34
37
|
};
|
|
38
|
+
}, undefined, {
|
|
39
|
+
aliases: {
|
|
40
|
+
path: 'file_path',
|
|
41
|
+
filename: 'file_path',
|
|
42
|
+
filepath: 'file_path',
|
|
43
|
+
file: 'file_path',
|
|
44
|
+
contents: 'content',
|
|
45
|
+
text: 'content',
|
|
46
|
+
},
|
|
35
47
|
});
|
|
36
48
|
//# sourceMappingURL=write.js.map
|
package/dist/src/write.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAoB,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAEzF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,SAAS,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAoB,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAEzF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,CACP,gIAAgI,CACjI;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CACjF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CACjC,OAAO,EACP,kFAAkF;IAClF,+FAA+F;IAC/F,mHAAmH;IACnH,wFAAwF;IACxF,oHAAoH,EACpH,WAAW,EACX,KAAK,EAAE,KAAK,EAAE,GAAgB,EAAE,EAAE;IAChC,IAAI,QAAgB,CAAC;IAErB,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,KAAK,KAAK,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,eAAe,CAC3B,KAAK,CAAC,SAAS,EACf,GAAG,CAAC,GAAG,EACP,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,IAAI,EAAE,CAAC,CAC1D,CAAC;QACF,IAAI,OAAO,IAAI,KAAK;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QAClE,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEnD,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;SACjD;KACF,CAAC;AACJ,CAAC,EACD,SAAS,EACT;IACE,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@curie-agent/tools",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"publish": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"zod": "^4.4.3",
|
|
19
|
-
"@curie-agent/
|
|
20
|
-
"@curie-agent/
|
|
19
|
+
"@curie-agent/wiki": "0.3.4",
|
|
20
|
+
"@curie-agent/core": "0.3.4"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/node": "^22.0.0",
|