indusagi 0.12.6 → 0.12.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/index.d.ts +1 -0
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +2 -0
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/tools/bash.d.ts +45 -0
- package/dist/agent/tools/bash.d.ts.map +1 -0
- package/dist/agent/tools/bash.js +227 -0
- package/dist/agent/tools/bash.js.map +1 -0
- package/dist/agent/tools/edit-diff.d.ts +63 -0
- package/dist/agent/tools/edit-diff.d.ts.map +1 -0
- package/dist/agent/tools/edit-diff.js +241 -0
- package/dist/agent/tools/edit-diff.js.map +1 -0
- package/dist/agent/tools/edit.d.ts +37 -0
- package/dist/agent/tools/edit.d.ts.map +1 -0
- package/dist/agent/tools/edit.js +146 -0
- package/dist/agent/tools/edit.js.map +1 -0
- package/dist/agent/tools/find.d.ts +24 -0
- package/dist/agent/tools/find.d.ts.map +1 -0
- package/dist/agent/tools/find.js +132 -0
- package/dist/agent/tools/find.js.map +1 -0
- package/dist/agent/tools/grep.d.ts +43 -0
- package/dist/agent/tools/grep.d.ts.map +1 -0
- package/dist/agent/tools/grep.js +178 -0
- package/dist/agent/tools/grep.js.map +1 -0
- package/dist/agent/tools/index.d.ts +158 -0
- package/dist/agent/tools/index.d.ts.map +1 -0
- package/dist/agent/tools/index.js +128 -0
- package/dist/agent/tools/index.js.map +1 -0
- package/dist/agent/tools/ls.d.ts +38 -0
- package/dist/agent/tools/ls.d.ts.map +1 -0
- package/dist/agent/tools/ls.js +118 -0
- package/dist/agent/tools/ls.js.map +1 -0
- package/dist/agent/tools/path-utils.d.ts +8 -0
- package/dist/agent/tools/path-utils.d.ts.map +1 -0
- package/dist/agent/tools/path-utils.js +53 -0
- package/dist/agent/tools/path-utils.js.map +1 -0
- package/dist/agent/tools/read.d.ts +37 -0
- package/dist/agent/tools/read.d.ts.map +1 -0
- package/dist/agent/tools/read.js +168 -0
- package/dist/agent/tools/read.js.map +1 -0
- package/dist/agent/tools/task.d.ts +26 -0
- package/dist/agent/tools/task.d.ts.map +1 -0
- package/dist/agent/tools/task.js +30 -0
- package/dist/agent/tools/task.js.map +1 -0
- package/dist/agent/tools/todo-store.d.ts +20 -0
- package/dist/agent/tools/todo-store.d.ts.map +1 -0
- package/dist/agent/tools/todo-store.js +24 -0
- package/dist/agent/tools/todo-store.js.map +1 -0
- package/dist/agent/tools/todo.d.ts +26 -0
- package/dist/agent/tools/todo.d.ts.map +1 -0
- package/dist/agent/tools/todo.js +52 -0
- package/dist/agent/tools/todo.js.map +1 -0
- package/dist/agent/tools/truncate.d.ts +70 -0
- package/dist/agent/tools/truncate.d.ts.map +1 -0
- package/dist/agent/tools/truncate.js +205 -0
- package/dist/agent/tools/truncate.js.map +1 -0
- package/dist/agent/tools/utils/hook-runner.d.ts +9 -0
- package/dist/agent/tools/utils/hook-runner.d.ts.map +1 -0
- package/dist/agent/tools/utils/hook-runner.js +14 -0
- package/dist/agent/tools/utils/hook-runner.js.map +1 -0
- package/dist/agent/tools/utils/image-resize.d.ts +32 -0
- package/dist/agent/tools/utils/image-resize.d.ts.map +1 -0
- package/dist/agent/tools/utils/image-resize.js +42 -0
- package/dist/agent/tools/utils/image-resize.js.map +1 -0
- package/dist/agent/tools/utils/mime.d.ts +10 -0
- package/dist/agent/tools/utils/mime.d.ts.map +1 -0
- package/dist/agent/tools/utils/mime.js +48 -0
- package/dist/agent/tools/utils/mime.js.map +1 -0
- package/dist/agent/tools/utils/shell.d.ts +30 -0
- package/dist/agent/tools/utils/shell.d.ts.map +1 -0
- package/dist/agent/tools/utils/shell.js +137 -0
- package/dist/agent/tools/utils/shell.js.map +1 -0
- package/dist/agent/tools/webfetch.d.ts +34 -0
- package/dist/agent/tools/webfetch.d.ts.map +1 -0
- package/dist/agent/tools/webfetch.js +244 -0
- package/dist/agent/tools/webfetch.js.map +1 -0
- package/dist/agent/tools/websearch.d.ts +29 -0
- package/dist/agent/tools/websearch.d.ts.map +1 -0
- package/dist/agent/tools/websearch.js +69 -0
- package/dist/agent/tools/websearch.js.map +1 -0
- package/dist/agent/tools/write.d.ts +27 -0
- package/dist/agent/tools/write.d.ts.map +1 -0
- package/dist/agent/tools/write.js +78 -0
- package/dist/agent/tools/write.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
export { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize, truncateHead, truncateLine, truncateTail, type TruncationOptions, type TruncationResult, } from "./truncate.js";
|
|
2
|
+
export { expandPath, resolveReadPath, resolveToCwd } from "./path-utils.js";
|
|
3
|
+
export { createReadTool, readTool, type ReadOperations, type ReadToolOptions, type ReadToolDetails, } from "./read.js";
|
|
4
|
+
export { createBashTool, bashTool, type BashOperations, type BashToolOptions, type BashToolDetails, } from "./bash.js";
|
|
5
|
+
export { createEditTool, editTool, type EditOperations, type EditToolOptions, type EditToolDetails, } from "./edit.js";
|
|
6
|
+
export { createWriteTool, writeTool, type WriteOperations, type WriteToolOptions, } from "./write.js";
|
|
7
|
+
export { createGrepTool, grepTool, type GrepOperations, type GrepToolOptions, type GrepToolDetails, } from "./grep.js";
|
|
8
|
+
export { createFindTool, findTool, type FindToolOptions, type FindToolDetails, } from "./find.js";
|
|
9
|
+
export { createLsTool, lsTool, type LsOperations, type LsToolOptions, type LsToolDetails, } from "./ls.js";
|
|
10
|
+
export { createTaskTool, taskTool, type TaskToolOptions, type TaskToolDetails, } from "./task.js";
|
|
11
|
+
export { createTodoReadTool, createTodoWriteTool, todoReadTool, todoWriteTool, type TodoToolDetails, } from "./todo.js";
|
|
12
|
+
export { TodoStore, type TodoItem, type TodoPriority, type TodoStatus } from "./todo-store.js";
|
|
13
|
+
export { createWebSearchTool, webSearchTool, type WebSearchToolOptions, type WebSearchToolDetails, } from "./websearch.js";
|
|
14
|
+
export { createWebFetchTool, webFetchTool, type WebFetchToolOptions, type WebFetchToolDetails, } from "./webfetch.js";
|
|
15
|
+
export { computeEditDiff, generateDiffString } from "./edit-diff.js";
|
|
16
|
+
export declare const codingTools: (import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
17
|
+
command: import("@sinclair/typebox").TString;
|
|
18
|
+
timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
19
|
+
}>, any> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
20
|
+
path: import("@sinclair/typebox").TString;
|
|
21
|
+
oldText: import("@sinclair/typebox").TString;
|
|
22
|
+
newText: import("@sinclair/typebox").TString;
|
|
23
|
+
}>, any> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
24
|
+
path: import("@sinclair/typebox").TString;
|
|
25
|
+
offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
26
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
27
|
+
}>, any> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
28
|
+
description: import("@sinclair/typebox").TString;
|
|
29
|
+
prompt: import("@sinclair/typebox").TString;
|
|
30
|
+
subagent_type: import("@sinclair/typebox").TString;
|
|
31
|
+
task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
32
|
+
}>, import("./task.js").TaskToolDetails> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{}>, import("./todo.js").TodoToolDetails> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
33
|
+
todos: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
34
|
+
content: import("@sinclair/typebox").TString;
|
|
35
|
+
status: import("@sinclair/typebox").TUnsafe<"in_progress" | "completed" | "cancelled" | "pending">;
|
|
36
|
+
priority: import("@sinclair/typebox").TUnsafe<"low" | "medium" | "high">;
|
|
37
|
+
}>>;
|
|
38
|
+
}>, import("./todo.js").TodoToolDetails> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
39
|
+
url: import("@sinclair/typebox").TString;
|
|
40
|
+
format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"text">, import("@sinclair/typebox").TLiteral<"markdown">, import("@sinclair/typebox").TLiteral<"html">]>>;
|
|
41
|
+
timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
42
|
+
}>, any> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
43
|
+
query: import("@sinclair/typebox").TString;
|
|
44
|
+
numResults: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
45
|
+
}>, any> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
46
|
+
path: import("@sinclair/typebox").TString;
|
|
47
|
+
content: import("@sinclair/typebox").TString;
|
|
48
|
+
}>, any>)[];
|
|
49
|
+
export declare const readOnlyTools: (import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
50
|
+
pattern: import("@sinclair/typebox").TString;
|
|
51
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
52
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
53
|
+
}>, any> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
54
|
+
pattern: import("@sinclair/typebox").TString;
|
|
55
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
56
|
+
ignoreCase: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
57
|
+
literal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
58
|
+
context: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
59
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
60
|
+
}>, any> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
61
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
62
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
63
|
+
}>, any> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
64
|
+
path: import("@sinclair/typebox").TString;
|
|
65
|
+
offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
66
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
67
|
+
}>, any> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{}>, import("./todo.js").TodoToolDetails> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
68
|
+
url: import("@sinclair/typebox").TString;
|
|
69
|
+
format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"text">, import("@sinclair/typebox").TLiteral<"markdown">, import("@sinclair/typebox").TLiteral<"html">]>>;
|
|
70
|
+
timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
71
|
+
}>, any> | import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
72
|
+
query: import("@sinclair/typebox").TString;
|
|
73
|
+
numResults: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
74
|
+
}>, any>)[];
|
|
75
|
+
export declare const allTools: {
|
|
76
|
+
readonly read: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
77
|
+
path: import("@sinclair/typebox").TString;
|
|
78
|
+
offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
79
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
80
|
+
}>, any>;
|
|
81
|
+
readonly bash: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
82
|
+
command: import("@sinclair/typebox").TString;
|
|
83
|
+
timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
84
|
+
}>, any>;
|
|
85
|
+
readonly edit: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
86
|
+
path: import("@sinclair/typebox").TString;
|
|
87
|
+
oldText: import("@sinclair/typebox").TString;
|
|
88
|
+
newText: import("@sinclair/typebox").TString;
|
|
89
|
+
}>, any>;
|
|
90
|
+
readonly write: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
91
|
+
path: import("@sinclair/typebox").TString;
|
|
92
|
+
content: import("@sinclair/typebox").TString;
|
|
93
|
+
}>, any>;
|
|
94
|
+
readonly grep: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
95
|
+
pattern: import("@sinclair/typebox").TString;
|
|
96
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
97
|
+
ignoreCase: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
98
|
+
literal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
99
|
+
context: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
100
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
101
|
+
}>, any>;
|
|
102
|
+
readonly find: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
103
|
+
pattern: import("@sinclair/typebox").TString;
|
|
104
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
105
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
106
|
+
}>, any>;
|
|
107
|
+
readonly ls: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
108
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
109
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
110
|
+
}>, any>;
|
|
111
|
+
readonly task: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
112
|
+
description: import("@sinclair/typebox").TString;
|
|
113
|
+
prompt: import("@sinclair/typebox").TString;
|
|
114
|
+
subagent_type: import("@sinclair/typebox").TString;
|
|
115
|
+
task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
116
|
+
}>, import("./task.js").TaskToolDetails>;
|
|
117
|
+
readonly todoread: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{}>, import("./todo.js").TodoToolDetails>;
|
|
118
|
+
readonly todowrite: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
119
|
+
todos: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
120
|
+
content: import("@sinclair/typebox").TString;
|
|
121
|
+
status: import("@sinclair/typebox").TUnsafe<"in_progress" | "completed" | "cancelled" | "pending">;
|
|
122
|
+
priority: import("@sinclair/typebox").TUnsafe<"low" | "medium" | "high">;
|
|
123
|
+
}>>;
|
|
124
|
+
}>, import("./todo.js").TodoToolDetails>;
|
|
125
|
+
readonly websearch: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
126
|
+
query: import("@sinclair/typebox").TString;
|
|
127
|
+
numResults: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
128
|
+
}>, any>;
|
|
129
|
+
readonly webfetch: import("../types.js").AgentTool<import("@sinclair/typebox").TObject<{
|
|
130
|
+
url: import("@sinclair/typebox").TString;
|
|
131
|
+
format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"text">, import("@sinclair/typebox").TLiteral<"markdown">, import("@sinclair/typebox").TLiteral<"html">]>>;
|
|
132
|
+
timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
133
|
+
}>, any>;
|
|
134
|
+
};
|
|
135
|
+
export type ToolName = keyof typeof allTools;
|
|
136
|
+
export interface ToolsOptions {
|
|
137
|
+
read?: import("./read.js").ReadToolOptions;
|
|
138
|
+
bash?: import("./bash.js").BashToolOptions;
|
|
139
|
+
grep?: import("./grep.js").GrepToolOptions;
|
|
140
|
+
find?: import("./find.js").FindToolOptions;
|
|
141
|
+
ls?: import("./ls.js").LsToolOptions;
|
|
142
|
+
task?: import("./task.js").TaskToolOptions;
|
|
143
|
+
websearch?: import("./websearch.js").WebSearchToolOptions;
|
|
144
|
+
webfetch?: import("./webfetch.js").WebFetchToolOptions;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Create coding tools configured for a specific working directory.
|
|
148
|
+
*/
|
|
149
|
+
export declare function createCodingTools(cwd: string, options?: ToolsOptions): typeof codingTools;
|
|
150
|
+
/**
|
|
151
|
+
* Create read-only tools configured for a specific working directory.
|
|
152
|
+
*/
|
|
153
|
+
export declare function createReadOnlyTools(cwd: string, options?: ToolsOptions): typeof readOnlyTools;
|
|
154
|
+
/**
|
|
155
|
+
* Create all tools configured for a specific working directory.
|
|
156
|
+
*/
|
|
157
|
+
export declare function createAllTools(cwd: string, options?: ToolsOptions): typeof allTools;
|
|
158
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/index.ts"],"names":[],"mappings":"AAqDA,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG5E,OAAO,EACN,cAAc,EACd,QAAQ,EACR,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACN,cAAc,EACd,QAAQ,EACR,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACN,cAAc,EACd,QAAQ,EACR,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACN,eAAe,EACf,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACN,cAAc,EACd,QAAQ,EACR,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACN,cAAc,EACd,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,eAAe,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACN,YAAY,EACZ,MAAM,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACN,cAAc,EACd,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,eAAe,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,KAAK,eAAe,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE/F,OAAO,EACN,mBAAmB,EACnB,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GACzB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACN,kBAAkB,EAClB,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACxB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAOrE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAUvB,CAAC;AAGF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;WAQzB,CAAC;AAGF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAaX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,QAAQ,CAAC;AAM7C,MAAM,WAAW,YAAY;IAC5B,IAAI,CAAC,EAAE,OAAO,WAAW,EAAE,eAAe,CAAC;IAC3C,IAAI,CAAC,EAAE,OAAO,WAAW,EAAE,eAAe,CAAC;IAC3C,IAAI,CAAC,EAAE,OAAO,WAAW,EAAE,eAAe,CAAC;IAC3C,IAAI,CAAC,EAAE,OAAO,WAAW,EAAE,eAAe,CAAC;IAC3C,EAAE,CAAC,EAAE,OAAO,SAAS,EAAE,aAAa,CAAC;IACrC,IAAI,CAAC,EAAE,OAAO,WAAW,EAAE,eAAe,CAAC;IAC3C,SAAS,CAAC,EAAE,OAAO,gBAAgB,EAAE,oBAAoB,CAAC;IAC1D,QAAQ,CAAC,EAAE,OAAO,eAAe,EAAE,mBAAmB,CAAC;CACvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,WAAW,CAczF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,aAAa,CAW7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,QAAQ,CAiBnF"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// CORE TOOLS - Agent Tool Implementation for indusagi Agent Framework
|
|
3
|
+
// ============================================================================
|
|
4
|
+
import { createBashTool, bashTool, } from "./bash.js";
|
|
5
|
+
import { createEditTool, editTool, } from "./edit.js";
|
|
6
|
+
import { createFindTool, findTool, } from "./find.js";
|
|
7
|
+
import { createGrepTool, grepTool, } from "./grep.js";
|
|
8
|
+
import { createLsTool, lsTool, } from "./ls.js";
|
|
9
|
+
import { createReadTool, readTool, } from "./read.js";
|
|
10
|
+
import { createTaskTool, taskTool, } from "./task.js";
|
|
11
|
+
import { TodoStore } from "./todo-store.js";
|
|
12
|
+
import { createTodoReadTool, createTodoWriteTool, todoReadTool, todoWriteTool, } from "./todo.js";
|
|
13
|
+
import { createWebFetchTool, webFetchTool, } from "./webfetch.js";
|
|
14
|
+
import { createWebSearchTool, webSearchTool, } from "./websearch.js";
|
|
15
|
+
import { createWriteTool, writeTool, } from "./write.js";
|
|
16
|
+
// Shared utilities
|
|
17
|
+
export { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize, truncateHead, truncateLine, truncateTail, } from "./truncate.js";
|
|
18
|
+
export { expandPath, resolveReadPath, resolveToCwd } from "./path-utils.js";
|
|
19
|
+
// Tool factories and types
|
|
20
|
+
export { createReadTool, readTool, } from "./read.js";
|
|
21
|
+
export { createBashTool, bashTool, } from "./bash.js";
|
|
22
|
+
export { createEditTool, editTool, } from "./edit.js";
|
|
23
|
+
export { createWriteTool, writeTool, } from "./write.js";
|
|
24
|
+
export { createGrepTool, grepTool, } from "./grep.js";
|
|
25
|
+
export { createFindTool, findTool, } from "./find.js";
|
|
26
|
+
export { createLsTool, lsTool, } from "./ls.js";
|
|
27
|
+
export { createTaskTool, taskTool, } from "./task.js";
|
|
28
|
+
export { createTodoReadTool, createTodoWriteTool, todoReadTool, todoWriteTool, } from "./todo.js";
|
|
29
|
+
export { TodoStore } from "./todo-store.js";
|
|
30
|
+
export { createWebSearchTool, webSearchTool, } from "./websearch.js";
|
|
31
|
+
export { createWebFetchTool, webFetchTool, } from "./webfetch.js";
|
|
32
|
+
// Re-export tool-specific utilities
|
|
33
|
+
export { computeEditDiff, generateDiffString } from "./edit-diff.js";
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// TOOL COLLECTIONS
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Default tools for full access mode (using process.cwd())
|
|
38
|
+
export const codingTools = [
|
|
39
|
+
readTool,
|
|
40
|
+
bashTool,
|
|
41
|
+
editTool,
|
|
42
|
+
writeTool,
|
|
43
|
+
taskTool,
|
|
44
|
+
todoReadTool,
|
|
45
|
+
todoWriteTool,
|
|
46
|
+
webSearchTool,
|
|
47
|
+
webFetchTool,
|
|
48
|
+
];
|
|
49
|
+
// Read-only tools for exploration without modification (using process.cwd())
|
|
50
|
+
export const readOnlyTools = [
|
|
51
|
+
readTool,
|
|
52
|
+
grepTool,
|
|
53
|
+
findTool,
|
|
54
|
+
lsTool,
|
|
55
|
+
todoReadTool,
|
|
56
|
+
webSearchTool,
|
|
57
|
+
webFetchTool,
|
|
58
|
+
];
|
|
59
|
+
// All available tools (using process.cwd())
|
|
60
|
+
export const allTools = {
|
|
61
|
+
read: readTool,
|
|
62
|
+
bash: bashTool,
|
|
63
|
+
edit: editTool,
|
|
64
|
+
write: writeTool,
|
|
65
|
+
grep: grepTool,
|
|
66
|
+
find: findTool,
|
|
67
|
+
ls: lsTool,
|
|
68
|
+
task: taskTool,
|
|
69
|
+
todoread: todoReadTool,
|
|
70
|
+
todowrite: todoWriteTool,
|
|
71
|
+
websearch: webSearchTool,
|
|
72
|
+
webfetch: webFetchTool,
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Create coding tools configured for a specific working directory.
|
|
76
|
+
*/
|
|
77
|
+
export function createCodingTools(cwd, options) {
|
|
78
|
+
const todoStore = new TodoStore();
|
|
79
|
+
const taskOptions = options?.task ? { ...options.task, cwd } : undefined;
|
|
80
|
+
return [
|
|
81
|
+
createReadTool(cwd, options?.read),
|
|
82
|
+
createBashTool(cwd, { ...options?.bash }),
|
|
83
|
+
createEditTool(cwd),
|
|
84
|
+
createWriteTool(cwd),
|
|
85
|
+
createTaskTool(taskOptions),
|
|
86
|
+
createTodoReadTool(todoStore),
|
|
87
|
+
createTodoWriteTool(todoStore),
|
|
88
|
+
createWebSearchTool(options?.websearch),
|
|
89
|
+
createWebFetchTool(options?.webfetch),
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Create read-only tools configured for a specific working directory.
|
|
94
|
+
*/
|
|
95
|
+
export function createReadOnlyTools(cwd, options) {
|
|
96
|
+
const todoStore = new TodoStore();
|
|
97
|
+
return [
|
|
98
|
+
createReadTool(cwd, options?.read),
|
|
99
|
+
createGrepTool(cwd, options?.grep),
|
|
100
|
+
createFindTool(cwd, options?.find),
|
|
101
|
+
createLsTool(cwd, options?.ls),
|
|
102
|
+
createTodoReadTool(todoStore),
|
|
103
|
+
createWebSearchTool(options?.websearch),
|
|
104
|
+
createWebFetchTool(options?.webfetch),
|
|
105
|
+
];
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Create all tools configured for a specific working directory.
|
|
109
|
+
*/
|
|
110
|
+
export function createAllTools(cwd, options) {
|
|
111
|
+
const todoStore = new TodoStore();
|
|
112
|
+
const taskOptions = options?.task ? { ...options.task, cwd } : undefined;
|
|
113
|
+
return {
|
|
114
|
+
read: createReadTool(cwd, options?.read),
|
|
115
|
+
bash: createBashTool(cwd, { ...options?.bash }),
|
|
116
|
+
edit: createEditTool(cwd),
|
|
117
|
+
write: createWriteTool(cwd),
|
|
118
|
+
grep: createGrepTool(cwd, options?.grep),
|
|
119
|
+
find: createFindTool(cwd, options?.find),
|
|
120
|
+
ls: createLsTool(cwd, options?.ls),
|
|
121
|
+
task: createTaskTool(taskOptions),
|
|
122
|
+
todoread: createTodoReadTool(todoStore),
|
|
123
|
+
todowrite: createTodoWriteTool(todoStore),
|
|
124
|
+
websearch: createWebSearchTool(options?.websearch),
|
|
125
|
+
webfetch: createWebFetchTool(options?.webfetch),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { AgentTool } from "../types.js";
|
|
2
|
+
import { type TruncationResult } from "./truncate.js";
|
|
3
|
+
declare const lsSchema: import("@sinclair/typebox").TObject<{
|
|
4
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
5
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
6
|
+
}>;
|
|
7
|
+
export interface LsToolDetails {
|
|
8
|
+
truncation?: TruncationResult;
|
|
9
|
+
entryLimitReached?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Pluggable operations for the ls tool.
|
|
13
|
+
* Override these to delegate directory listing to remote systems (e.g., SSH).
|
|
14
|
+
*/
|
|
15
|
+
export interface LsOperations {
|
|
16
|
+
/** Check if path exists */
|
|
17
|
+
exists: (absolutePath: string) => Promise<boolean> | boolean;
|
|
18
|
+
/** Get file/directory stats. Throws if not found. */
|
|
19
|
+
stat: (absolutePath: string) => Promise<{
|
|
20
|
+
isDirectory: () => boolean;
|
|
21
|
+
}> | {
|
|
22
|
+
isDirectory: () => boolean;
|
|
23
|
+
};
|
|
24
|
+
/** Read directory entries */
|
|
25
|
+
readdir: (absolutePath: string) => Promise<string[]> | string[];
|
|
26
|
+
}
|
|
27
|
+
export interface LsToolOptions {
|
|
28
|
+
/** Custom operations for directory listing. Default: local filesystem */
|
|
29
|
+
operations?: LsOperations;
|
|
30
|
+
}
|
|
31
|
+
export declare function createLsTool(cwd: string, options?: LsToolOptions): AgentTool<typeof lsSchema>;
|
|
32
|
+
/** Default ls tool using process.cwd() - for backwards compatibility */
|
|
33
|
+
export declare const lsTool: AgentTool<import("@sinclair/typebox").TObject<{
|
|
34
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
35
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
36
|
+
}>, any>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=ls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/ls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,OAAO,EAAiC,KAAK,gBAAgB,EAAgB,MAAM,eAAe,CAAC;AAEnG,QAAA,MAAM,QAAQ;;;EAGZ,CAAC;AAIH,MAAM,WAAW,aAAa;IAC7B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,2BAA2B;IAC3B,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC7D,qDAAqD;IACrD,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,OAAO,CAAA;KAAE,CAAC,GAAG;QAAE,WAAW,EAAE,MAAM,OAAO,CAAA;KAAE,CAAC;IACzG,6BAA6B;IAC7B,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;CAChE;AAQD,MAAM,WAAW,aAAa;IAC7B,yEAAyE;IACzE,UAAU,CAAC,EAAE,YAAY,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC,OAAO,QAAQ,CAAC,CAyH7F;AAED,wEAAwE;AACxE,eAAO,MAAM,MAAM;;;QAA8B,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Type } from "@sinclair/typebox";
|
|
2
|
+
import { existsSync, readdirSync, statSync } from "fs";
|
|
3
|
+
import nodePath from "path";
|
|
4
|
+
import { resolveToCwd } from "./path-utils.js";
|
|
5
|
+
import { DEFAULT_MAX_BYTES, formatSize, truncateHead } from "./truncate.js";
|
|
6
|
+
const lsSchema = Type.Object({
|
|
7
|
+
path: Type.Optional(Type.String({ description: "Directory to list (default: current directory)" })),
|
|
8
|
+
limit: Type.Optional(Type.Number({ description: "Maximum number of entries to return (default: 500)" })),
|
|
9
|
+
});
|
|
10
|
+
const DEFAULT_LIMIT = 500;
|
|
11
|
+
const defaultLsOperations = {
|
|
12
|
+
exists: existsSync,
|
|
13
|
+
stat: statSync,
|
|
14
|
+
readdir: readdirSync,
|
|
15
|
+
};
|
|
16
|
+
export function createLsTool(cwd, options) {
|
|
17
|
+
const ops = options?.operations ?? defaultLsOperations;
|
|
18
|
+
return {
|
|
19
|
+
name: "ls",
|
|
20
|
+
label: "ls",
|
|
21
|
+
description: `List directory contents. Returns entries sorted alphabetically, with '/' suffix for directories. Includes dotfiles. Output is truncated to ${DEFAULT_LIMIT} entries or ${DEFAULT_MAX_BYTES / 1024}KB (whichever is hit first).`,
|
|
22
|
+
parameters: lsSchema,
|
|
23
|
+
execute: async (_toolCallId, { path, limit }, signal) => {
|
|
24
|
+
return new Promise((resolve, reject) => {
|
|
25
|
+
if (signal?.aborted) {
|
|
26
|
+
reject(new Error("Operation aborted"));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const onAbort = () => reject(new Error("Operation aborted"));
|
|
30
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
31
|
+
(async () => {
|
|
32
|
+
try {
|
|
33
|
+
const dirPath = resolveToCwd(path || ".", cwd);
|
|
34
|
+
const effectiveLimit = limit ?? DEFAULT_LIMIT;
|
|
35
|
+
// Check if path exists
|
|
36
|
+
if (!(await ops.exists(dirPath))) {
|
|
37
|
+
reject(new Error(`Path not found: ${dirPath}`));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Check if path is a directory
|
|
41
|
+
const stat = await ops.stat(dirPath);
|
|
42
|
+
if (!stat.isDirectory()) {
|
|
43
|
+
reject(new Error(`Not a directory: ${dirPath}`));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Read directory entries
|
|
47
|
+
let entries;
|
|
48
|
+
try {
|
|
49
|
+
entries = await ops.readdir(dirPath);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
reject(new Error(`Cannot read directory: ${e.message}`));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// Sort alphabetically (case-insensitive)
|
|
56
|
+
entries.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
|
|
57
|
+
// Format entries with directory indicators
|
|
58
|
+
const results = [];
|
|
59
|
+
let entryLimitReached = false;
|
|
60
|
+
for (const entry of entries) {
|
|
61
|
+
if (results.length >= effectiveLimit) {
|
|
62
|
+
entryLimitReached = true;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
const fullPath = nodePath.join(dirPath, entry);
|
|
66
|
+
let suffix = "";
|
|
67
|
+
try {
|
|
68
|
+
const entryStat = await ops.stat(fullPath);
|
|
69
|
+
if (entryStat.isDirectory()) {
|
|
70
|
+
suffix = "/";
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// Skip entries we can't stat
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
results.push(entry + suffix);
|
|
78
|
+
}
|
|
79
|
+
signal?.removeEventListener("abort", onAbort);
|
|
80
|
+
if (results.length === 0) {
|
|
81
|
+
resolve({ content: [{ type: "text", text: "(empty directory)" }], details: undefined });
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// Apply byte truncation (no line limit since we already have entry limit)
|
|
85
|
+
const rawOutput = results.join("\n");
|
|
86
|
+
const truncation = truncateHead(rawOutput, { maxLines: Number.MAX_SAFE_INTEGER });
|
|
87
|
+
let output = truncation.content;
|
|
88
|
+
const details = {};
|
|
89
|
+
// Build notices
|
|
90
|
+
const notices = [];
|
|
91
|
+
if (entryLimitReached) {
|
|
92
|
+
notices.push(`${effectiveLimit} entries limit reached. Use limit=${effectiveLimit * 2} for more`);
|
|
93
|
+
details.entryLimitReached = effectiveLimit;
|
|
94
|
+
}
|
|
95
|
+
if (truncation.truncated) {
|
|
96
|
+
notices.push(`${formatSize(DEFAULT_MAX_BYTES)} limit reached`);
|
|
97
|
+
details.truncation = truncation;
|
|
98
|
+
}
|
|
99
|
+
if (notices.length > 0) {
|
|
100
|
+
output += `\n\n[${notices.join(". ")}]`;
|
|
101
|
+
}
|
|
102
|
+
resolve({
|
|
103
|
+
content: [{ type: "text", text: output }],
|
|
104
|
+
details: Object.keys(details).length > 0 ? details : undefined,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
catch (e) {
|
|
108
|
+
signal?.removeEventListener("abort", onAbort);
|
|
109
|
+
reject(e);
|
|
110
|
+
}
|
|
111
|
+
})();
|
|
112
|
+
});
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/** Default ls tool using process.cwd() - for backwards compatibility */
|
|
117
|
+
export const lsTool = createLsTool(process.cwd());
|
|
118
|
+
//# sourceMappingURL=ls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/agent/tools/ls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function expandPath(filePath: string): string;
|
|
2
|
+
/**
|
|
3
|
+
* Resolve a path relative to given cwd.
|
|
4
|
+
* Handles ~ expansion and absolute paths.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveToCwd(filePath: string, cwd: string): string;
|
|
7
|
+
export declare function resolveReadPath(filePath: string, cwd: string): string;
|
|
8
|
+
//# sourceMappingURL=path-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-utils.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/path-utils.ts"],"names":[],"mappings":"AAuBA,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASnD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAarE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { accessSync, constants } from "node:fs";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import { isAbsolute, resolve as resolvePath } from "node:path";
|
|
4
|
+
const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
|
|
5
|
+
const NARROW_NO_BREAK_SPACE = "\u202F";
|
|
6
|
+
function normalizeUnicodeSpaces(str) {
|
|
7
|
+
return str.replace(UNICODE_SPACES, " ");
|
|
8
|
+
}
|
|
9
|
+
function tryMacOSScreenshotPath(filePath) {
|
|
10
|
+
return filePath.replace(/ (AM|PM)\./g, `${NARROW_NO_BREAK_SPACE}$1.`);
|
|
11
|
+
}
|
|
12
|
+
function fileExists(filePath) {
|
|
13
|
+
try {
|
|
14
|
+
accessSync(filePath, constants.F_OK);
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function expandPath(filePath) {
|
|
22
|
+
const normalized = normalizeUnicodeSpaces(filePath);
|
|
23
|
+
if (normalized === "~") {
|
|
24
|
+
return os.homedir();
|
|
25
|
+
}
|
|
26
|
+
if (normalized.startsWith("~/")) {
|
|
27
|
+
return os.homedir() + normalized.slice(1);
|
|
28
|
+
}
|
|
29
|
+
return normalized;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Resolve a path relative to given cwd.
|
|
33
|
+
* Handles ~ expansion and absolute paths.
|
|
34
|
+
*/
|
|
35
|
+
export function resolveToCwd(filePath, cwd) {
|
|
36
|
+
const expanded = expandPath(filePath);
|
|
37
|
+
if (isAbsolute(expanded)) {
|
|
38
|
+
return expanded;
|
|
39
|
+
}
|
|
40
|
+
return resolvePath(cwd, expanded);
|
|
41
|
+
}
|
|
42
|
+
export function resolveReadPath(filePath, cwd) {
|
|
43
|
+
const resolved = resolveToCwd(filePath, cwd);
|
|
44
|
+
if (fileExists(resolved)) {
|
|
45
|
+
return resolved;
|
|
46
|
+
}
|
|
47
|
+
const macOSVariant = tryMacOSScreenshotPath(resolved);
|
|
48
|
+
if (macOSVariant !== resolved && fileExists(macOSVariant)) {
|
|
49
|
+
return macOSVariant;
|
|
50
|
+
}
|
|
51
|
+
return resolved;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=path-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../../../src/agent/tools/path-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAE/D,MAAM,cAAc,GAAG,0CAA0C,CAAC;AAClE,MAAM,qBAAqB,GAAG,QAAQ,CAAC;AACvC,SAAS,sBAAsB,CAAC,GAAW;IAC1C,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB;IAC/C,OAAO,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,qBAAqB,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB;IACnC,IAAI,CAAC;QACJ,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB;IAC1C,MAAM,UAAU,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,GAAW;IACzD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,OAAO,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,GAAW;IAC5D,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAE7C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,MAAM,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,YAAY,KAAK,QAAQ,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3D,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { AgentTool } from "../types.js";
|
|
2
|
+
import { type TruncationResult } from "./truncate.js";
|
|
3
|
+
declare const readSchema: import("@sinclair/typebox").TObject<{
|
|
4
|
+
path: import("@sinclair/typebox").TString;
|
|
5
|
+
offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
6
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
7
|
+
}>;
|
|
8
|
+
export interface ReadToolDetails {
|
|
9
|
+
truncation?: TruncationResult;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Pluggable operations for the read tool.
|
|
13
|
+
* Override these to delegate file reading to remote systems (e.g., SSH).
|
|
14
|
+
*/
|
|
15
|
+
export interface ReadOperations {
|
|
16
|
+
/** Read file contents as a Buffer */
|
|
17
|
+
readFile: (absolutePath: string) => Promise<Buffer>;
|
|
18
|
+
/** Check if file is readable (throw if not) */
|
|
19
|
+
access: (absolutePath: string) => Promise<void>;
|
|
20
|
+
/** Detect image MIME type, return null/undefined for non-images */
|
|
21
|
+
detectImageMimeType?: (absolutePath: string) => Promise<string | null | undefined>;
|
|
22
|
+
}
|
|
23
|
+
export interface ReadToolOptions {
|
|
24
|
+
/** Whether to auto-resize images to 2000x2000 max. Default: true */
|
|
25
|
+
autoResizeImages?: boolean;
|
|
26
|
+
/** Custom operations for file reading. Default: local filesystem */
|
|
27
|
+
operations?: ReadOperations;
|
|
28
|
+
}
|
|
29
|
+
export declare function createReadTool(cwd: string, options?: ReadToolOptions): AgentTool<typeof readSchema>;
|
|
30
|
+
/** Default read tool using process.cwd() - for backwards compatibility */
|
|
31
|
+
export declare const readTool: AgentTool<import("@sinclair/typebox").TObject<{
|
|
32
|
+
path: import("@sinclair/typebox").TString;
|
|
33
|
+
offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
34
|
+
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
35
|
+
}>, any>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQ7C,OAAO,EAIN,KAAK,gBAAgB,EAErB,MAAM,eAAe,CAAC;AAEvB,QAAA,MAAM,UAAU;;;;EAId,CAAC;AAEH,MAAM,WAAW,eAAe;IAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,qCAAqC;IACrC,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,+CAA+C;IAC/C,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CACnF;AAQD,MAAM,WAAW,eAAe;IAC/B,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oEAAoE;IACpE,UAAU,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC,OAAO,UAAU,CAAC,CA4KnG;AAED,0EAA0E;AAC1E,eAAO,MAAM,QAAQ;;;;QAAgC,CAAC"}
|