indusagi 0.12.5 → 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.
Files changed (125) hide show
  1. package/dist/agent/index.d.ts +1 -0
  2. package/dist/agent/index.d.ts.map +1 -1
  3. package/dist/agent/index.js +2 -0
  4. package/dist/agent/index.js.map +1 -1
  5. package/dist/agent/tools/bash.d.ts +45 -0
  6. package/dist/agent/tools/bash.d.ts.map +1 -0
  7. package/dist/agent/tools/bash.js +227 -0
  8. package/dist/agent/tools/bash.js.map +1 -0
  9. package/dist/agent/tools/edit-diff.d.ts +63 -0
  10. package/dist/agent/tools/edit-diff.d.ts.map +1 -0
  11. package/dist/agent/tools/edit-diff.js +241 -0
  12. package/dist/agent/tools/edit-diff.js.map +1 -0
  13. package/dist/agent/tools/edit.d.ts +37 -0
  14. package/dist/agent/tools/edit.d.ts.map +1 -0
  15. package/dist/agent/tools/edit.js +146 -0
  16. package/dist/agent/tools/edit.js.map +1 -0
  17. package/dist/agent/tools/find.d.ts +24 -0
  18. package/dist/agent/tools/find.d.ts.map +1 -0
  19. package/dist/agent/tools/find.js +132 -0
  20. package/dist/agent/tools/find.js.map +1 -0
  21. package/dist/agent/tools/grep.d.ts +43 -0
  22. package/dist/agent/tools/grep.d.ts.map +1 -0
  23. package/dist/agent/tools/grep.js +178 -0
  24. package/dist/agent/tools/grep.js.map +1 -0
  25. package/dist/agent/tools/index.d.ts +158 -0
  26. package/dist/agent/tools/index.d.ts.map +1 -0
  27. package/dist/agent/tools/index.js +128 -0
  28. package/dist/agent/tools/index.js.map +1 -0
  29. package/dist/agent/tools/ls.d.ts +38 -0
  30. package/dist/agent/tools/ls.d.ts.map +1 -0
  31. package/dist/agent/tools/ls.js +118 -0
  32. package/dist/agent/tools/ls.js.map +1 -0
  33. package/dist/agent/tools/path-utils.d.ts +8 -0
  34. package/dist/agent/tools/path-utils.d.ts.map +1 -0
  35. package/dist/agent/tools/path-utils.js +53 -0
  36. package/dist/agent/tools/path-utils.js.map +1 -0
  37. package/dist/agent/tools/read.d.ts +37 -0
  38. package/dist/agent/tools/read.d.ts.map +1 -0
  39. package/dist/agent/tools/read.js +168 -0
  40. package/dist/agent/tools/read.js.map +1 -0
  41. package/dist/agent/tools/task.d.ts +26 -0
  42. package/dist/agent/tools/task.d.ts.map +1 -0
  43. package/dist/agent/tools/task.js +30 -0
  44. package/dist/agent/tools/task.js.map +1 -0
  45. package/dist/agent/tools/todo-store.d.ts +20 -0
  46. package/dist/agent/tools/todo-store.d.ts.map +1 -0
  47. package/dist/agent/tools/todo-store.js +24 -0
  48. package/dist/agent/tools/todo-store.js.map +1 -0
  49. package/dist/agent/tools/todo.d.ts +26 -0
  50. package/dist/agent/tools/todo.d.ts.map +1 -0
  51. package/dist/agent/tools/todo.js +52 -0
  52. package/dist/agent/tools/todo.js.map +1 -0
  53. package/dist/agent/tools/truncate.d.ts +70 -0
  54. package/dist/agent/tools/truncate.d.ts.map +1 -0
  55. package/dist/agent/tools/truncate.js +205 -0
  56. package/dist/agent/tools/truncate.js.map +1 -0
  57. package/dist/agent/tools/utils/hook-runner.d.ts +9 -0
  58. package/dist/agent/tools/utils/hook-runner.d.ts.map +1 -0
  59. package/dist/agent/tools/utils/hook-runner.js +14 -0
  60. package/dist/agent/tools/utils/hook-runner.js.map +1 -0
  61. package/dist/agent/tools/utils/image-resize.d.ts +32 -0
  62. package/dist/agent/tools/utils/image-resize.d.ts.map +1 -0
  63. package/dist/agent/tools/utils/image-resize.js +42 -0
  64. package/dist/agent/tools/utils/image-resize.js.map +1 -0
  65. package/dist/agent/tools/utils/mime.d.ts +10 -0
  66. package/dist/agent/tools/utils/mime.d.ts.map +1 -0
  67. package/dist/agent/tools/utils/mime.js +48 -0
  68. package/dist/agent/tools/utils/mime.js.map +1 -0
  69. package/dist/agent/tools/utils/shell.d.ts +30 -0
  70. package/dist/agent/tools/utils/shell.d.ts.map +1 -0
  71. package/dist/agent/tools/utils/shell.js +137 -0
  72. package/dist/agent/tools/utils/shell.js.map +1 -0
  73. package/dist/agent/tools/webfetch.d.ts +34 -0
  74. package/dist/agent/tools/webfetch.d.ts.map +1 -0
  75. package/dist/agent/tools/webfetch.js +244 -0
  76. package/dist/agent/tools/webfetch.js.map +1 -0
  77. package/dist/agent/tools/websearch.d.ts +29 -0
  78. package/dist/agent/tools/websearch.d.ts.map +1 -0
  79. package/dist/agent/tools/websearch.js +69 -0
  80. package/dist/agent/tools/websearch.js.map +1 -0
  81. package/dist/agent/tools/write.d.ts +27 -0
  82. package/dist/agent/tools/write.d.ts.map +1 -0
  83. package/dist/agent/tools/write.js +78 -0
  84. package/dist/agent/tools/write.js.map +1 -0
  85. package/dist/ai/index.d.ts +0 -1
  86. package/dist/ai/index.d.ts.map +1 -1
  87. package/dist/ai/index.js +0 -1
  88. package/dist/ai/index.js.map +1 -1
  89. package/dist/ai/models.generated.d.ts +34 -208
  90. package/dist/ai/models.generated.d.ts.map +1 -1
  91. package/dist/ai/models.generated.js +37 -211
  92. package/dist/ai/models.generated.js.map +1 -1
  93. package/dist/ai/providers/google-shared.d.ts +6 -1
  94. package/dist/ai/providers/google-shared.d.ts.map +1 -1
  95. package/dist/ai/providers/google-shared.js.map +1 -1
  96. package/dist/ai/providers/google-vertex.d.ts +1 -1
  97. package/dist/ai/providers/google-vertex.d.ts.map +1 -1
  98. package/dist/ai/providers/google-vertex.js.map +1 -1
  99. package/dist/ai/providers/google.d.ts +1 -1
  100. package/dist/ai/providers/google.d.ts.map +1 -1
  101. package/dist/ai/providers/google.js.map +1 -1
  102. package/dist/ai/providers/register-builtins.d.ts.map +1 -1
  103. package/dist/ai/providers/register-builtins.js +0 -6
  104. package/dist/ai/providers/register-builtins.js.map +1 -1
  105. package/dist/ai/types.d.ts +2 -2
  106. package/dist/ai/types.d.ts.map +1 -1
  107. package/dist/ai/utils/oauth/index.d.ts +1 -4
  108. package/dist/ai/utils/oauth/index.d.ts.map +1 -1
  109. package/dist/ai/utils/oauth/index.js +1 -10
  110. package/dist/ai/utils/oauth/index.js.map +1 -1
  111. package/dist/ai/utils/oauth/openai-codex.js +1 -1
  112. package/dist/ai/utils/oauth/openai-codex.js.map +1 -1
  113. package/package.json +1 -1
  114. package/dist/ai/providers/google-gemini-cli.d.ts +0 -74
  115. package/dist/ai/providers/google-gemini-cli.d.ts.map +0 -1
  116. package/dist/ai/providers/google-gemini-cli.js +0 -816
  117. package/dist/ai/providers/google-gemini-cli.js.map +0 -1
  118. package/dist/ai/utils/oauth/google-antigravity.d.ts +0 -26
  119. package/dist/ai/utils/oauth/google-antigravity.d.ts.map +0 -1
  120. package/dist/ai/utils/oauth/google-antigravity.js +0 -390
  121. package/dist/ai/utils/oauth/google-antigravity.js.map +0 -1
  122. package/dist/ai/utils/oauth/google-gemini-cli.d.ts +0 -26
  123. package/dist/ai/utils/oauth/google-gemini-cli.d.ts.map +0 -1
  124. package/dist/ai/utils/oauth/google-gemini-cli.js +0 -462
  125. package/dist/ai/utils/oauth/google-gemini-cli.js.map +0 -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":"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"}
@@ -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"}