@mohanscodex/spectra-code 0.4.5 → 0.4.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 (285) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/src/agents/definitions.d.ts +2 -2
  3. package/dist/src/agents/definitions.d.ts.map +1 -1
  4. package/dist/src/agents/definitions.js +18 -18
  5. package/dist/src/agents/definitions.js.map +1 -1
  6. package/dist/src/agents/registry.d.ts +1 -1
  7. package/dist/src/agents/registry.d.ts.map +1 -1
  8. package/dist/src/agents/registry.js.map +1 -1
  9. package/dist/src/cli.js +117 -115
  10. package/dist/src/cli.js.map +1 -1
  11. package/dist/src/commands/agent.d.ts +1 -1
  12. package/dist/src/commands/agent.d.ts.map +1 -1
  13. package/dist/src/commands/agent.js +14 -14
  14. package/dist/src/commands/agent.js.map +1 -1
  15. package/dist/src/commands/db.d.ts +1 -1
  16. package/dist/src/commands/db.d.ts.map +1 -1
  17. package/dist/src/commands/db.js +11 -11
  18. package/dist/src/commands/db.js.map +1 -1
  19. package/dist/src/commands/doctor.d.ts.map +1 -1
  20. package/dist/src/commands/doctor.js +33 -30
  21. package/dist/src/commands/doctor.js.map +1 -1
  22. package/dist/src/commands/mcp.d.ts +1 -1
  23. package/dist/src/commands/mcp.d.ts.map +1 -1
  24. package/dist/src/commands/mcp.js +39 -39
  25. package/dist/src/commands/mcp.js.map +1 -1
  26. package/dist/src/commands/plugin.d.ts +1 -1
  27. package/dist/src/commands/plugin.d.ts.map +1 -1
  28. package/dist/src/commands/plugin.js +13 -13
  29. package/dist/src/commands/plugin.js.map +1 -1
  30. package/dist/src/commands/session.d.ts +1 -1
  31. package/dist/src/commands/session.d.ts.map +1 -1
  32. package/dist/src/commands/session.js +12 -12
  33. package/dist/src/commands/session.js.map +1 -1
  34. package/dist/src/index.d.ts +18 -18
  35. package/dist/src/index.d.ts.map +1 -1
  36. package/dist/src/index.js +16 -16
  37. package/dist/src/index.js.map +1 -1
  38. package/dist/src/integrations/acp/index.d.ts +1 -1
  39. package/dist/src/integrations/acp/index.js +1 -1
  40. package/dist/src/integrations/acp/server.d.ts.map +1 -1
  41. package/dist/src/integrations/acp/server.js +89 -79
  42. package/dist/src/integrations/acp/server.js.map +1 -1
  43. package/dist/src/integrations/custom-tools/index.d.ts +2 -2
  44. package/dist/src/integrations/custom-tools/index.js +1 -1
  45. package/dist/src/integrations/custom-tools/loader.d.ts +2 -2
  46. package/dist/src/integrations/custom-tools/loader.d.ts.map +1 -1
  47. package/dist/src/integrations/custom-tools/loader.js +19 -18
  48. package/dist/src/integrations/custom-tools/loader.js.map +1 -1
  49. package/dist/src/integrations/mcp/client.d.ts +5 -5
  50. package/dist/src/integrations/mcp/client.d.ts.map +1 -1
  51. package/dist/src/integrations/mcp/client.js +7 -7
  52. package/dist/src/integrations/mcp/client.js.map +1 -1
  53. package/dist/src/integrations/mcp/index.d.ts +2 -2
  54. package/dist/src/integrations/mcp/index.d.ts.map +1 -1
  55. package/dist/src/integrations/mcp/index.js +1 -1
  56. package/dist/src/integrations/mcp/index.js.map +1 -1
  57. package/dist/src/security/doom-loop.d.ts +1 -1
  58. package/dist/src/security/doom-loop.d.ts.map +1 -1
  59. package/dist/src/security/doom-loop.js +4 -4
  60. package/dist/src/security/doom-loop.js.map +1 -1
  61. package/dist/src/security/index.d.ts +10 -10
  62. package/dist/src/security/index.d.ts.map +1 -1
  63. package/dist/src/security/index.js +116 -69
  64. package/dist/src/security/index.js.map +1 -1
  65. package/dist/src/security/path-safety.d.ts +1 -1
  66. package/dist/src/security/path-safety.d.ts.map +1 -1
  67. package/dist/src/security/path-safety.js +19 -19
  68. package/dist/src/security/path-safety.js.map +1 -1
  69. package/dist/src/security/permissions.d.ts +1 -1
  70. package/dist/src/security/permissions.d.ts.map +1 -1
  71. package/dist/src/security/permissions.js +12 -10
  72. package/dist/src/security/permissions.js.map +1 -1
  73. package/dist/src/security/read-tracker.d.ts +2 -2
  74. package/dist/src/security/read-tracker.d.ts.map +1 -1
  75. package/dist/src/security/read-tracker.js +15 -13
  76. package/dist/src/security/read-tracker.js.map +1 -1
  77. package/dist/src/security/ssrf-guard.d.ts +1 -1
  78. package/dist/src/security/ssrf-guard.d.ts.map +1 -1
  79. package/dist/src/security/ssrf-guard.js +11 -11
  80. package/dist/src/security/ssrf-guard.js.map +1 -1
  81. package/dist/src/security/types.d.ts +4 -4
  82. package/dist/src/security/types.d.ts.map +1 -1
  83. package/dist/src/security/wildcard.d.ts.map +1 -1
  84. package/dist/src/security/wildcard.js +14 -16
  85. package/dist/src/security/wildcard.js.map +1 -1
  86. package/dist/src/services/auth-store.d.ts +3 -3
  87. package/dist/src/services/auth-store.d.ts.map +1 -1
  88. package/dist/src/services/auth-store.js +7 -7
  89. package/dist/src/services/auth-store.js.map +1 -1
  90. package/dist/src/services/config.d.ts +3 -3
  91. package/dist/src/services/config.d.ts.map +1 -1
  92. package/dist/src/services/config.js +17 -21
  93. package/dist/src/services/config.js.map +1 -1
  94. package/dist/src/services/context.d.ts.map +1 -1
  95. package/dist/src/services/context.js +5 -8
  96. package/dist/src/services/context.js.map +1 -1
  97. package/dist/src/services/custom-providers.d.ts +2 -2
  98. package/dist/src/services/custom-providers.d.ts.map +1 -1
  99. package/dist/src/services/custom-providers.js +108 -49
  100. package/dist/src/services/custom-providers.js.map +1 -1
  101. package/dist/src/services/session-store.d.ts +1 -1
  102. package/dist/src/services/session-store.d.ts.map +1 -1
  103. package/dist/src/services/session-store.js +32 -24
  104. package/dist/src/services/session-store.js.map +1 -1
  105. package/dist/src/services/snapshot-manager.d.ts.map +1 -1
  106. package/dist/src/services/snapshot-manager.js +14 -15
  107. package/dist/src/services/snapshot-manager.js.map +1 -1
  108. package/dist/src/tools/edit.d.ts +1 -1
  109. package/dist/src/tools/edit.js +18 -16
  110. package/dist/src/tools/edit.js.map +1 -1
  111. package/dist/src/tools/glob.d.ts +1 -1
  112. package/dist/src/tools/glob.d.ts.map +1 -1
  113. package/dist/src/tools/glob.js +20 -16
  114. package/dist/src/tools/glob.js.map +1 -1
  115. package/dist/src/tools/grep.d.ts +1 -1
  116. package/dist/src/tools/grep.d.ts.map +1 -1
  117. package/dist/src/tools/grep.js +18 -18
  118. package/dist/src/tools/grep.js.map +1 -1
  119. package/dist/src/tools/index.d.ts +4 -4
  120. package/dist/src/tools/index.d.ts.map +1 -1
  121. package/dist/src/tools/index.js +40 -32
  122. package/dist/src/tools/index.js.map +1 -1
  123. package/dist/src/tools/mcp-tool.d.ts +2 -2
  124. package/dist/src/tools/mcp-tool.d.ts.map +1 -1
  125. package/dist/src/tools/mcp-tool.js +28 -25
  126. package/dist/src/tools/mcp-tool.js.map +1 -1
  127. package/dist/src/tools/read.d.ts +1 -1
  128. package/dist/src/tools/read.d.ts.map +1 -1
  129. package/dist/src/tools/read.js +15 -13
  130. package/dist/src/tools/read.js.map +1 -1
  131. package/dist/src/tools/shell.d.ts +1 -1
  132. package/dist/src/tools/shell.d.ts.map +1 -1
  133. package/dist/src/tools/shell.js +71 -62
  134. package/dist/src/tools/shell.js.map +1 -1
  135. package/dist/src/tools/task.d.ts +1 -1
  136. package/dist/src/tools/task.js +22 -22
  137. package/dist/src/tools/task.js.map +1 -1
  138. package/dist/src/tools/types.d.ts +3 -3
  139. package/dist/src/tools/types.d.ts.map +1 -1
  140. package/dist/src/tools/utils.d.ts +1 -1
  141. package/dist/src/tools/utils.js +2 -2
  142. package/dist/src/tools/utils.js.map +1 -1
  143. package/dist/src/tools/web-fetch.d.ts +1 -1
  144. package/dist/src/tools/web-fetch.js +31 -31
  145. package/dist/src/tools/web-fetch.js.map +1 -1
  146. package/dist/src/tools/write.d.ts +1 -1
  147. package/dist/src/tools/write.js +9 -9
  148. package/dist/src/tools/write.js.map +1 -1
  149. package/dist/src/tui/app-constants.d.ts.map +1 -1
  150. package/dist/src/tui/app-constants.js +11 -2
  151. package/dist/src/tui/app-constants.js.map +1 -1
  152. package/dist/src/tui/app.d.ts +1 -1
  153. package/dist/src/tui/app.d.ts.map +1 -1
  154. package/dist/src/tui/app.js +293 -121
  155. package/dist/src/tui/app.js.map +1 -1
  156. package/dist/src/tui/commands.d.ts +14 -14
  157. package/dist/src/tui/commands.d.ts.map +1 -1
  158. package/dist/src/tui/commands.js +242 -49
  159. package/dist/src/tui/commands.js.map +1 -1
  160. package/dist/src/tui/components/chat-area.d.ts +2 -2
  161. package/dist/src/tui/components/chat-area.d.ts.map +1 -1
  162. package/dist/src/tui/components/chat-area.js +5 -5
  163. package/dist/src/tui/components/chat-area.js.map +1 -1
  164. package/dist/src/tui/components/command-palette.d.ts.map +1 -1
  165. package/dist/src/tui/components/command-palette.js +7 -5
  166. package/dist/src/tui/components/command-palette.js.map +1 -1
  167. package/dist/src/tui/components/message.d.ts +2 -2
  168. package/dist/src/tui/components/message.d.ts.map +1 -1
  169. package/dist/src/tui/components/message.js +63 -50
  170. package/dist/src/tui/components/message.js.map +1 -1
  171. package/dist/src/tui/components/slash-autocomplete.d.ts +2 -2
  172. package/dist/src/tui/components/slash-autocomplete.d.ts.map +1 -1
  173. package/dist/src/tui/components/slash-autocomplete.js +6 -8
  174. package/dist/src/tui/components/slash-autocomplete.js.map +1 -1
  175. package/dist/src/tui/components/toast.d.ts +2 -2
  176. package/dist/src/tui/components/toast.d.ts.map +1 -1
  177. package/dist/src/tui/components/toast.js +10 -5
  178. package/dist/src/tui/components/toast.js.map +1 -1
  179. package/dist/src/tui/hooks/use-agent.d.ts +3 -3
  180. package/dist/src/tui/hooks/use-agent.d.ts.map +1 -1
  181. package/dist/src/tui/hooks/use-agent.js +22 -29
  182. package/dist/src/tui/hooks/use-agent.js.map +1 -1
  183. package/dist/src/tui/hooks/use-app-keyboard.d.ts +3 -3
  184. package/dist/src/tui/hooks/use-app-keyboard.d.ts.map +1 -1
  185. package/dist/src/tui/hooks/use-app-keyboard.js +28 -29
  186. package/dist/src/tui/hooks/use-app-keyboard.js.map +1 -1
  187. package/dist/src/tui/hooks/use-chat-submit.d.ts +6 -6
  188. package/dist/src/tui/hooks/use-chat-submit.d.ts.map +1 -1
  189. package/dist/src/tui/hooks/use-chat-submit.js +115 -54
  190. package/dist/src/tui/hooks/use-chat-submit.js.map +1 -1
  191. package/dist/src/tui/hooks/use-permission-queue.d.ts +2 -2
  192. package/dist/src/tui/hooks/use-permission-queue.d.ts.map +1 -1
  193. package/dist/src/tui/hooks/use-permission-queue.js +1 -1
  194. package/dist/src/tui/hooks/use-permission-queue.js.map +1 -1
  195. package/dist/src/tui/hooks/use-revert.d.ts +4 -4
  196. package/dist/src/tui/hooks/use-revert.d.ts.map +1 -1
  197. package/dist/src/tui/hooks/use-revert.js +22 -13
  198. package/dist/src/tui/hooks/use-revert.js.map +1 -1
  199. package/dist/src/tui/index.d.ts.map +1 -1
  200. package/dist/src/tui/index.js +11 -11
  201. package/dist/src/tui/index.js.map +1 -1
  202. package/dist/src/tui/prompt-bar.d.ts +1 -1
  203. package/dist/src/tui/prompt-bar.d.ts.map +1 -1
  204. package/dist/src/tui/prompt-bar.js +14 -11
  205. package/dist/src/tui/prompt-bar.js.map +1 -1
  206. package/dist/src/tui/slash-commands.d.ts +2 -2
  207. package/dist/src/tui/slash-commands.d.ts.map +1 -1
  208. package/dist/src/tui/slash-commands.js +9 -9
  209. package/dist/src/tui/slash-commands.js.map +1 -1
  210. package/dist/src/tui/theme.d.ts +1 -1
  211. package/dist/src/tui/theme.d.ts.map +1 -1
  212. package/dist/src/tui/theme.js +46 -38
  213. package/dist/src/tui/theme.js.map +1 -1
  214. package/dist/src/tui/tips.d.ts.map +1 -1
  215. package/dist/src/tui/tips.js +14 -14
  216. package/dist/src/tui/tips.js.map +1 -1
  217. package/dist/src/tui/types.d.ts +5 -5
  218. package/dist/src/tui/types.d.ts.map +1 -1
  219. package/dist/src/tui/ui/about-dialog.d.ts.map +1 -1
  220. package/dist/src/tui/ui/about-dialog.js +5 -4
  221. package/dist/src/tui/ui/about-dialog.js.map +1 -1
  222. package/dist/src/tui/ui/agent-switcher.d.ts.map +1 -1
  223. package/dist/src/tui/ui/agent-switcher.js +16 -14
  224. package/dist/src/tui/ui/agent-switcher.js.map +1 -1
  225. package/dist/src/tui/ui/debug-dialog.d.ts +1 -1
  226. package/dist/src/tui/ui/debug-dialog.d.ts.map +1 -1
  227. package/dist/src/tui/ui/debug-dialog.js +26 -25
  228. package/dist/src/tui/ui/debug-dialog.js.map +1 -1
  229. package/dist/src/tui/ui/doctor-dialog.d.ts +2 -2
  230. package/dist/src/tui/ui/doctor-dialog.d.ts.map +1 -1
  231. package/dist/src/tui/ui/doctor-dialog.js +10 -8
  232. package/dist/src/tui/ui/doctor-dialog.js.map +1 -1
  233. package/dist/src/tui/ui/manage-providers-dialog.d.ts +1 -1
  234. package/dist/src/tui/ui/manage-providers-dialog.d.ts.map +1 -1
  235. package/dist/src/tui/ui/manage-providers-dialog.js +102 -86
  236. package/dist/src/tui/ui/manage-providers-dialog.js.map +1 -1
  237. package/dist/src/tui/ui/mcp-toggle-dialog.d.ts.map +1 -1
  238. package/dist/src/tui/ui/mcp-toggle-dialog.js +17 -14
  239. package/dist/src/tui/ui/mcp-toggle-dialog.js.map +1 -1
  240. package/dist/src/tui/ui/message-controls.d.ts +1 -1
  241. package/dist/src/tui/ui/message-controls.d.ts.map +1 -1
  242. package/dist/src/tui/ui/message-controls.js +40 -28
  243. package/dist/src/tui/ui/message-controls.js.map +1 -1
  244. package/dist/src/tui/ui/model-switcher.d.ts.map +1 -1
  245. package/dist/src/tui/ui/model-switcher.js +40 -25
  246. package/dist/src/tui/ui/model-switcher.js.map +1 -1
  247. package/dist/src/tui/ui/permission-dialog.d.ts +1 -1
  248. package/dist/src/tui/ui/permission-dialog.d.ts.map +1 -1
  249. package/dist/src/tui/ui/permission-dialog.js +11 -11
  250. package/dist/src/tui/ui/permission-dialog.js.map +1 -1
  251. package/dist/src/tui/ui/provider-dialog.d.ts.map +1 -1
  252. package/dist/src/tui/ui/provider-dialog.js +75 -64
  253. package/dist/src/tui/ui/provider-dialog.js.map +1 -1
  254. package/dist/src/tui/ui/session-list.d.ts +3 -3
  255. package/dist/src/tui/ui/session-list.d.ts.map +1 -1
  256. package/dist/src/tui/ui/session-list.js +44 -32
  257. package/dist/src/tui/ui/session-list.js.map +1 -1
  258. package/dist/src/tui/ui/thinking-effort-dialog.d.ts.map +1 -1
  259. package/dist/src/tui/ui/thinking-effort-dialog.js +19 -19
  260. package/dist/src/tui/ui/thinking-effort-dialog.js.map +1 -1
  261. package/dist/src/tui/utils/model-config.d.ts.map +1 -1
  262. package/dist/src/tui/utils/model-config.js +13 -13
  263. package/dist/src/tui/utils/model-config.js.map +1 -1
  264. package/dist/src/tui/utils/session-messages.d.ts +2 -2
  265. package/dist/src/tui/utils/session-messages.d.ts.map +1 -1
  266. package/dist/src/tui/utils/session-messages.js +35 -22
  267. package/dist/src/tui/utils/session-messages.js.map +1 -1
  268. package/dist/src/tui/utils/version.d.ts +2 -0
  269. package/dist/src/tui/utils/version.d.ts.map +1 -0
  270. package/dist/src/tui/utils/version.js +24 -0
  271. package/dist/src/tui/utils/version.js.map +1 -0
  272. package/dist/src/tui/utils.d.ts +2 -2
  273. package/dist/src/tui/utils.d.ts.map +1 -1
  274. package/dist/src/tui/utils.js +7 -7
  275. package/dist/src/tui/utils.js.map +1 -1
  276. package/dist/src/tui/variant-cycle.d.ts.map +1 -1
  277. package/dist/src/tui/variant-cycle.js +23 -23
  278. package/dist/src/tui/variant-cycle.js.map +1 -1
  279. package/dist/src/utils/paths.d.ts.map +1 -1
  280. package/dist/src/utils/paths.js +25 -25
  281. package/dist/src/utils/paths.js.map +1 -1
  282. package/dist/src/utils/platform.d.ts.map +1 -1
  283. package/dist/src/utils/platform.js +15 -17
  284. package/dist/src/utils/platform.js.map +1 -1
  285. package/package.json +3 -3
@@ -1,3 +1,3 @@
1
- import type { SpectraTool } from "./types.js";
1
+ import type { SpectraTool } from './types.js';
2
2
  export declare const editTool: SpectraTool;
3
3
  //# sourceMappingURL=edit.d.ts.map
@@ -1,9 +1,9 @@
1
- import { z } from "zod";
2
- import { errorResult, textResult } from "./utils.js";
3
- import { readFileSync, writeFileSync, existsSync } from "fs";
4
- import { resolve, relative } from "path";
1
+ import { z } from 'zod';
2
+ import { errorResult, textResult } from './utils.js';
3
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
4
+ import { resolve, relative } from 'path';
5
5
  export const editTool = {
6
- name: "edit",
6
+ name: 'edit',
7
7
  capabilities: { reads: false, writes: true },
8
8
  description: `Edit a file by finding and replacing text.
9
9
  The tool finds the exact old string in the file and replaces it with the new string.
@@ -14,16 +14,16 @@ For best results:
14
14
  Prefer the write tool for large or new files.`,
15
15
  displayName: (args) => relative(process.cwd(), resolve(args.path)),
16
16
  parameters: z.object({
17
- path: z.string().describe("Absolute or relative path to the file to edit"),
18
- oldString: z.string().describe("The exact text to find and replace"),
19
- newString: z.string().describe("The replacement text"),
17
+ path: z.string().describe('Absolute or relative path to the file to edit'),
18
+ oldString: z.string().describe('The exact text to find and replace'),
19
+ newString: z.string().describe('The replacement text'),
20
20
  }),
21
21
  execute: async ({ path, oldString, newString }) => {
22
22
  const resolved = resolve(process.cwd(), path);
23
23
  if (!existsSync(resolved)) {
24
24
  return errorResult(`File not found: ${resolved}`);
25
25
  }
26
- const content = readFileSync(resolved, "utf-8");
26
+ const content = readFileSync(resolved, 'utf-8');
27
27
  if (!content.includes(oldString)) {
28
28
  return errorResult(`Could not find the specified text in ${relative(process.cwd(), resolved)}.
29
29
  The text may have different whitespace or formatting. Try reading the file first.`);
@@ -32,7 +32,7 @@ The text may have different whitespace or formatting. Try reading the file first
32
32
  if (newContent === content) {
33
33
  return errorResult("No changes made - the replacement didn't modify the file.");
34
34
  }
35
- writeFileSync(resolved, newContent, "utf-8");
35
+ writeFileSync(resolved, newContent, 'utf-8');
36
36
  return textResult(`Applied edit to ${relative(process.cwd(), resolved)}
37
37
 
38
38
  Changes made (showing context):
@@ -42,16 +42,18 @@ ${showDiff(content, newString, oldString)}`);
42
42
  function showDiff(original, newStr, oldStr) {
43
43
  const idx = original.indexOf(oldStr);
44
44
  if (idx < 0)
45
- return "";
45
+ return '';
46
46
  const before = original.slice(Math.max(0, idx - 40), idx);
47
47
  const after = original.slice(idx + oldStr.length, idx + oldStr.length + 40);
48
48
  return [
49
- "...",
50
- before ? `${before}` : "",
49
+ '...',
50
+ before ? `${before}` : '',
51
51
  `- ${oldStr.slice(0, 80)}`,
52
52
  `+ ${newStr.slice(0, 80)}`,
53
- after ? `${after}` : "",
54
- "...",
55
- ].filter(Boolean).join("\n");
53
+ after ? `${after}` : '',
54
+ '...',
55
+ ]
56
+ .filter(Boolean)
57
+ .join('\n');
56
58
  }
57
59
  //# sourceMappingURL=edit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/tools/edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/tools/edit.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { SpectraTool } from "./types.js";
1
+ import type { SpectraTool } from './types.js';
2
2
  export declare const globTool: SpectraTool;
3
3
  //# sourceMappingURL=glob.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../src/tools/glob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,eAAO,MAAM,QAAQ,EAAE,WAyCtB,CAAC"}
1
+ {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../src/tools/glob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,eAAO,MAAM,QAAQ,EAAE,WAgDtB,CAAC"}
@@ -1,9 +1,9 @@
1
- import { z } from "zod";
2
- import { errorResult, textResult } from "./utils.js";
3
- import { execSync } from "child_process";
4
- import { resolve } from "path";
1
+ import { z } from 'zod';
2
+ import { errorResult, textResult } from './utils.js';
3
+ import { execSync } from 'child_process';
4
+ import { resolve } from 'path';
5
5
  export const globTool = {
6
- name: "glob",
6
+ name: 'glob',
7
7
  capabilities: { reads: true, writes: false },
8
8
  description: `Find files matching a glob pattern.
9
9
  Supports common glob patterns like **/*.ts, src/**/*.css, etc.
@@ -12,34 +12,38 @@ Results are limited to prevent overwhelming output.`,
12
12
  displayName: (args) => args.pattern,
13
13
  parameters: z.object({
14
14
  pattern: z.string().describe("Glob pattern to match files (e.g. '**/*.ts', 'src/**/*.css')"),
15
- path: z.string().optional().describe("Directory to search in (defaults to cwd)"),
16
- maxResults: z.number().optional().describe("Maximum number of results to return"),
15
+ path: z.string().optional().describe('Directory to search in (defaults to cwd)'),
16
+ maxResults: z.number().optional().describe('Maximum number of results to return'),
17
17
  }),
18
18
  execute: async ({ pattern, path, maxResults }) => {
19
19
  const searchDir = path ? resolve(process.cwd(), path) : process.cwd();
20
20
  const limit = maxResults || 100;
21
21
  try {
22
- const hasFd = execSync("which fdfind 2>/dev/null || which fd 2>/dev/null || where fd 2>nul", { encoding: "utf-8", timeout: 1000 }).trim().length > 0;
22
+ const hasFd = execSync('which fdfind 2>/dev/null || which fd 2>/dev/null || where fd 2>nul', {
23
+ encoding: 'utf-8',
24
+ timeout: 1000,
25
+ }).trim().length > 0;
23
26
  let cmd;
24
27
  if (hasFd) {
25
28
  cmd = `fd "${pattern}" "${searchDir}" --no-ignore -H 2>/dev/null | head -${limit}`;
26
29
  }
27
30
  else {
28
- cmd = process.platform === "win32"
29
- ? `powershell -Command "Get-ChildItem -Path '${searchDir}' -Recurse -Filter '${pattern}' -ErrorAction SilentlyContinue | Select-Object -First ${limit} | %% { $_.FullName }"`
30
- : `find "${searchDir}" -name "${pattern}" 2>/dev/null | head -${limit}`;
31
+ cmd =
32
+ process.platform === 'win32'
33
+ ? `powershell -Command "Get-ChildItem -Path '${searchDir}' -Recurse -Filter '${pattern}' -ErrorAction SilentlyContinue | Select-Object -First ${limit} | %% { $_.FullName }"`
34
+ : `find "${searchDir}" -name "${pattern}" 2>/dev/null | head -${limit}`;
31
35
  }
32
- const stdout = execSync(cmd, { encoding: "utf-8", timeout: 15000, maxBuffer: 1024 * 1024 });
36
+ const stdout = execSync(cmd, { encoding: 'utf-8', timeout: 15000, maxBuffer: 1024 * 1024 });
33
37
  const results = stdout.trim();
34
38
  if (!results)
35
- return textResult("No files matched the pattern.");
36
- const lines = results.split("\n");
39
+ return textResult('No files matched the pattern.');
40
+ const lines = results.split('\n');
37
41
  const truncated = lines.length >= limit;
38
- return textResult(lines.join("\n") + (truncated ? `\n... (${lines.length} results, truncated at ${limit})` : ""));
42
+ return textResult(lines.join('\n') + (truncated ? `\n... (${lines.length} results, truncated at ${limit})` : ''));
39
43
  }
40
44
  catch (err) {
41
45
  const error = err;
42
- return errorResult(`Glob search failed: ${error.message || "unknown error"}`);
46
+ return errorResult(`Glob search failed: ${error.message || 'unknown error'}`);
43
47
  }
44
48
  },
45
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/tools/glob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACnC,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAC5C,WAAW,EAAE;;;oDAGqC;IAClD,WAAW,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO;IACxD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;QAC5F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAChF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAClF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACtE,MAAM,KAAK,GAAG,UAAU,IAAI,GAAG,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,QAAQ,CAAC,oEAAoE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YAErJ,IAAI,GAAW,CAAC;YAChB,IAAI,KAAK,EAAE,CAAC;gBACV,GAAG,GAAG,OAAO,OAAO,MAAM,SAAS,wCAAwC,KAAK,EAAE,CAAC;YACrF,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAChC,CAAC,CAAC,6CAA6C,SAAS,uBAAuB,OAAO,0DAA0D,KAAK,wBAAwB;oBAC7K,CAAC,CAAC,SAAS,SAAS,YAAY,OAAO,yBAAyB,KAAK,EAAE,CAAC;YAC5E,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO;gBAAE,OAAO,UAAU,CAAC,+BAA+B,CAAC,CAAC;YAEjE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC;YACxC,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,0BAA0B,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,GAA2B,CAAC;YAC1C,OAAO,WAAW,CAAC,uBAAuB,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/tools/glob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACpC,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAC5C,WAAW,EAAE;;;oDAGsC;IACnD,WAAW,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO;IACxD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;QAC5F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAChF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACjF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACtE,MAAM,KAAK,GAAG,UAAU,IAAI,GAAG,CAAC;QAEhC,IAAI,CAAC;YACJ,MAAM,KAAK,GACV,QAAQ,CAAC,oEAAoE,EAAE;gBAC9E,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,IAAI;aACb,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YAEtB,IAAI,GAAW,CAAC;YAChB,IAAI,KAAK,EAAE,CAAC;gBACX,GAAG,GAAG,OAAO,OAAO,MAAM,SAAS,wCAAwC,KAAK,EAAE,CAAC;YACpF,CAAC;iBAAM,CAAC;gBACP,GAAG;oBACF,OAAO,CAAC,QAAQ,KAAK,OAAO;wBAC3B,CAAC,CAAC,6CAA6C,SAAS,uBAAuB,OAAO,0DAA0D,KAAK,wBAAwB;wBAC7K,CAAC,CAAC,SAAS,SAAS,YAAY,OAAO,yBAAyB,KAAK,EAAE,CAAC;YAC3E,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO;gBAAE,OAAO,UAAU,CAAC,+BAA+B,CAAC,CAAC;YAEjE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC;YACxC,OAAO,UAAU,CAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,0BAA0B,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC9F,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,GAA2B,CAAC;YAC1C,OAAO,WAAW,CAAC,uBAAuB,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;QAC/E,CAAC;IACF,CAAC;CACD,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { SpectraTool } from "./types.js";
1
+ import type { SpectraTool } from './types.js';
2
2
  export declare const grepTool: SpectraTool;
3
3
  //# sourceMappingURL=grep.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/tools/grep.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,eAAO,MAAM,QAAQ,EAAE,WA4CtB,CAAC"}
1
+ {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/tools/grep.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,eAAO,MAAM,QAAQ,EAAE,WA6CtB,CAAC"}
@@ -1,9 +1,9 @@
1
- import { z } from "zod";
2
- import { errorResult, textResult } from "./utils.js";
3
- import { execSync } from "child_process";
4
- import { resolve } from "path";
1
+ import { z } from 'zod';
2
+ import { errorResult, textResult } from './utils.js';
3
+ import { execSync } from 'child_process';
4
+ import { resolve } from 'path';
5
5
  export const grepTool = {
6
- name: "grep",
6
+ name: 'grep',
7
7
  capabilities: { reads: true, writes: false },
8
8
  description: `Search file contents using regular expressions.
9
9
  Uses ripgrep (rg) if available, otherwise falls back to grep.
@@ -11,39 +11,39 @@ Returns matching file paths, line numbers, and the matched lines.
11
11
  Results are truncated to prevent large outputs.`,
12
12
  displayName: (args) => `"${args.pattern}"`,
13
13
  parameters: z.object({
14
- pattern: z.string().describe("The regex pattern to search for"),
14
+ pattern: z.string().describe('The regex pattern to search for'),
15
15
  include: z.string().optional().describe("File pattern to include (e.g. '*.ts', '*.{ts,js}')"),
16
- path: z.string().optional().describe("Directory to search in (defaults to cwd)"),
17
- maxResults: z.number().optional().describe("Maximum number of results to return"),
16
+ path: z.string().optional().describe('Directory to search in (defaults to cwd)'),
17
+ maxResults: z.number().optional().describe('Maximum number of results to return'),
18
18
  }),
19
19
  execute: async ({ pattern, include, path, maxResults }) => {
20
20
  const searchDir = path ? resolve(process.cwd(), path) : process.cwd();
21
21
  const limit = maxResults || 50;
22
22
  try {
23
23
  let cmd;
24
- const useRipgrep = execSync("which rg 2>/dev/null || where rg 2>nul", { encoding: "utf-8", timeout: 1000 }).trim().length > 0;
24
+ const useRipgrep = execSync('which rg 2>/dev/null || where rg 2>nul', { encoding: 'utf-8', timeout: 1000 }).trim().length > 0;
25
25
  if (useRipgrep) {
26
- const includeFlag = include ? `-g "${include}"` : "";
26
+ const includeFlag = include ? `-g "${include}"` : '';
27
27
  cmd = `rg -n --no-heading "${pattern}" "${searchDir}" ${includeFlag} | head -${limit}`;
28
28
  }
29
29
  else {
30
- const includeFlag = include ? `--include="${include}"` : "";
30
+ const includeFlag = include ? `--include="${include}"` : '';
31
31
  cmd = `grep -rn "${pattern}" "${searchDir}" ${includeFlag} 2>/dev/null | head -${limit}`;
32
32
  }
33
- const stdout = execSync(cmd, { encoding: "utf-8", timeout: 15000, maxBuffer: 1024 * 1024 });
33
+ const stdout = execSync(cmd, { encoding: 'utf-8', timeout: 15000, maxBuffer: 1024 * 1024 });
34
34
  const results = stdout.trim();
35
35
  if (!results)
36
- return textResult("No matches found.");
37
- const lineCount = results.split("\n").length;
36
+ return textResult('No matches found.');
37
+ const lineCount = results.split('\n').length;
38
38
  const truncated = lineCount >= limit;
39
- return textResult(results + (truncated ? `\n... (truncated at ${limit} results)` : ""));
39
+ return textResult(results + (truncated ? `\n... (truncated at ${limit} results)` : ''));
40
40
  }
41
41
  catch (err) {
42
42
  const error = err;
43
- if (error.message?.includes("command failed") || error.stderr) {
44
- return errorResult("No ripgrep or grep found on system, or search failed. Try using glob instead.");
43
+ if (error.message?.includes('command failed') || error.stderr) {
44
+ return errorResult('No ripgrep or grep found on system, or search failed. Try using glob instead.');
45
45
  }
46
- return errorResult(`Search failed: ${error.message || "unknown error"}`);
46
+ return errorResult(`Search failed: ${error.message || 'unknown error'}`);
47
47
  }
48
48
  },
49
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/tools/grep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACnC,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAC5C,WAAW,EAAE;;;gDAGiC;IAC9C,WAAW,EAAE,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC/D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAC7F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAChF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAClF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACtE,MAAM,KAAK,GAAG,UAAU,IAAI,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,IAAI,GAAW,CAAC;YAChB,MAAM,UAAU,GAAG,QAAQ,CAAC,wCAAwC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9H,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,GAAG,GAAG,uBAAuB,OAAO,MAAM,SAAS,KAAK,WAAW,YAAY,KAAK,EAAE,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,GAAG,GAAG,aAAa,OAAO,MAAM,SAAS,KAAK,WAAW,wBAAwB,KAAK,EAAE,CAAC;YAC3F,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO;gBAAE,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAAC;YAErD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAC7C,MAAM,SAAS,GAAG,SAAS,IAAI,KAAK,CAAC;YACrC,OAAO,UAAU,CAAC,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,GAA4C,CAAC;YAC3D,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC9D,OAAO,WAAW,CAAC,+EAA+E,CAAC,CAAC;YACtG,CAAC;YACD,OAAO,WAAW,CAAC,kBAAkB,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/tools/grep.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import type { SpectraTool } from "./types.js";
2
- import type { AgentTool, ToolResult } from "@mohanscodex/spectra-agent";
3
- import type { SecurityManager } from "../security/index.js";
4
- export { type SpectraTool } from "./types.js";
1
+ import type { SpectraTool } from './types.js';
2
+ import type { AgentTool, ToolResult } from '@mohanscodex/spectra-agent';
3
+ import type { SecurityManager } from '../security/index.js';
4
+ export { type SpectraTool } from './types.js';
5
5
  export declare const builtinTools: SpectraTool[];
6
6
  export declare function spectraToolToAgentTool(specTool: SpectraTool, security?: SecurityManager): AgentTool;
7
7
  export declare function createAllTools(): SpectraTool[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAMxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,YAAY,EAAE,WAAW,EASrC,CAAC;AA0HF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,WAAW,EACrB,QAAQ,CAAC,EAAE,eAAe,GACzB,SAAS,CAeX;AAED,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAE9C;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,GAAG,EAAE,SAAS,EAAE,CAAC;CAClB,CAAC,CAgBD;AAED,wBAAgB,YAAY,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQ9E;AAED,wBAAsB,4BAA4B,IAAI,OAAO,CAAC;IAC5D,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,GAAG,EAAE,SAAS,EAAE,CAAC;CAClB,CAAC,CAmBD;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,EAAE,CAEjF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAIhG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAMxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,YAAY,EAAE,WAAW,EASrC,CAAC;AAiIF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAanG;AAED,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAE9C;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACtD,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,GAAG,EAAE,SAAS,EAAE,CAAC;CACjB,CAAC,CAgBD;AAED,wBAAgB,YAAY,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQ9E;AAED,wBAAsB,4BAA4B,IAAI,OAAO,CAAC;IAC7D,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,GAAG,EAAE,SAAS,EAAE,CAAC;CACjB,CAAC,CAmBD;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,EAAE,CAEjF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAIhG"}
@@ -1,16 +1,16 @@
1
- import { shellTool } from "./shell.js";
2
- import { readTool } from "./read.js";
3
- import { writeTool } from "./write.js";
4
- import { editTool } from "./edit.js";
5
- import { grepTool } from "./grep.js";
6
- import { globTool } from "./glob.js";
7
- import { webFetchTool } from "./web-fetch.js";
8
- import { taskTool } from "./task.js";
9
- import { defineTool } from "@mohanscodex/spectra-agent";
10
- import { listConnectedServers } from "../integrations/mcp/index.js";
11
- import { createMcpAgentTools } from "./mcp-tool.js";
12
- import { loadCustomTools } from "../integrations/custom-tools/index.js";
13
- import { PermissionDeniedError } from "../security/index.js";
1
+ import { shellTool } from './shell.js';
2
+ import { readTool } from './read.js';
3
+ import { writeTool } from './write.js';
4
+ import { editTool } from './edit.js';
5
+ import { grepTool } from './grep.js';
6
+ import { globTool } from './glob.js';
7
+ import { webFetchTool } from './web-fetch.js';
8
+ import { taskTool } from './task.js';
9
+ import { defineTool } from '@mohanscodex/spectra-agent';
10
+ import { listConnectedServers } from '../integrations/mcp/index.js';
11
+ import { createMcpAgentTools } from './mcp-tool.js';
12
+ import { loadCustomTools } from '../integrations/custom-tools/index.js';
13
+ import { PermissionDeniedError } from '../security/index.js';
14
14
  export const builtinTools = [
15
15
  shellTool,
16
16
  readTool,
@@ -21,24 +21,27 @@ export const builtinTools = [
21
21
  webFetchTool,
22
22
  taskTool,
23
23
  ];
24
- const FILE_TOOL_NAMES = new Set(["read", "write", "edit", "grep", "glob", "bash", "shell"]);
24
+ const FILE_TOOL_NAMES = new Set(['read', 'write', 'edit', 'grep', 'glob', 'bash', 'shell']);
25
25
  function wrapExecute(tool, security) {
26
26
  const tracker = security.getReadTracker();
27
27
  const doomLoop = security.getDoomLoop();
28
28
  return async (args, ctx) => {
29
29
  const loopResult = doomLoop.recordToolCall(tool.name, args);
30
30
  if (!loopResult.ok) {
31
- return { content: [{ type: "text", text: loopResult.message }], isError: true };
31
+ return { content: [{ type: 'text', text: loopResult.message }], isError: true };
32
32
  }
33
33
  const patterns = security.extractToolPatterns(tool.name, args);
34
34
  if (FILE_TOOL_NAMES.has(tool.name)) {
35
35
  for (const extPath of patterns.externalPaths) {
36
36
  try {
37
- await security.checkPermission("external_directory", [extPath], tool.name, extPath);
37
+ await security.checkPermission('external_directory', [extPath], tool.name, extPath);
38
38
  }
39
39
  catch (err) {
40
40
  if (err instanceof PermissionDeniedError) {
41
- return { content: [{ type: "text", text: `External file access denied: ${err.message}` }], isError: true };
41
+ return {
42
+ content: [{ type: 'text', text: `External file access denied: ${err.message}` }],
43
+ isError: true,
44
+ };
42
45
  }
43
46
  throw err;
44
47
  }
@@ -50,7 +53,7 @@ function wrapExecute(tool, security) {
50
53
  }
51
54
  catch (err) {
52
55
  if (err instanceof PermissionDeniedError) {
53
- return { content: [{ type: "text", text: `Permission denied: ${err.message}` }], isError: true };
56
+ return { content: [{ type: 'text', text: `Permission denied: ${err.message}` }], isError: true };
54
57
  }
55
58
  throw err;
56
59
  }
@@ -61,7 +64,7 @@ function wrapExecute(tool, security) {
61
64
  }
62
65
  catch (err) {
63
66
  if (err instanceof PermissionDeniedError) {
64
- return { content: [{ type: "text", text: `Path safety blocked: ${pathPattern}` }], isError: true };
67
+ return { content: [{ type: 'text', text: `Path safety blocked: ${pathPattern}` }], isError: true };
65
68
  }
66
69
  throw err;
67
70
  }
@@ -71,16 +74,16 @@ function wrapExecute(tool, security) {
71
74
  if (caps.writes) {
72
75
  const guard = tracker.checkWrite(pathPattern, process.cwd(), tool.name);
73
76
  if (!guard.ok) {
74
- return { content: [{ type: "text", text: guard.reason }], isError: true };
77
+ return { content: [{ type: 'text', text: guard.reason }], isError: true };
75
78
  }
76
79
  }
77
80
  }
78
- if (tool.name === "web_fetch" || tool.name === "webfetch") {
81
+ if (tool.name === 'web_fetch' || tool.name === 'webfetch') {
79
82
  const url = args.url;
80
83
  if (url) {
81
84
  const ssrfResult = security.getSsrfGuard().check(url);
82
85
  if (!ssrfResult.ok) {
83
- return { content: [{ type: "text", text: `SSRF guard: ${ssrfResult.reason}` }], isError: true };
86
+ return { content: [{ type: 'text', text: `SSRF guard: ${ssrfResult.reason}` }], isError: true };
84
87
  }
85
88
  }
86
89
  }
@@ -89,14 +92,16 @@ function wrapExecute(tool, security) {
89
92
  const loopCheck = doomLoop.recordToolResult(tool.name, toolOk);
90
93
  if (!loopCheck.ok) {
91
94
  const firstContent = result.content?.[0];
92
- const existingContent = firstContent?.type === "text" ? firstContent.text : "";
95
+ const existingContent = firstContent?.type === 'text' ? firstContent.text : '';
93
96
  return {
94
- content: [{ type: "text", text: `${existingContent}\n\n<system-reminder>${loopCheck.message}</system-reminder>` }],
97
+ content: [
98
+ { type: 'text', text: `${existingContent}\n\n<system-reminder>${loopCheck.message}</system-reminder>` },
99
+ ],
95
100
  isError: result.isError,
96
101
  details: result.details,
97
102
  };
98
103
  }
99
- if (tool.name === "edit" || tool.name === "patch") {
104
+ if (tool.name === 'edit' || tool.name === 'patch') {
100
105
  if (toolOk) {
101
106
  for (const pathPattern of patterns.pathPatterns) {
102
107
  doomLoop.recordPatchSuccess(pathPattern);
@@ -107,10 +112,15 @@ function wrapExecute(tool, security) {
107
112
  const spiralResult = doomLoop.recordPatchFailure(pathPattern);
108
113
  if (!spiralResult.ok) {
109
114
  const firstContent = result.content?.[0];
110
- const text = firstContent?.type === "text" ? firstContent.text : "";
115
+ const text = firstContent?.type === 'text' ? firstContent.text : '';
111
116
  if (text) {
112
117
  return {
113
- content: [{ type: "text", text: `${text}\n\n<system-reminder>${spiralResult.message}</system-reminder>` }],
118
+ content: [
119
+ {
120
+ type: 'text',
121
+ text: `${text}\n\n<system-reminder>${spiralResult.message}</system-reminder>`,
122
+ },
123
+ ],
114
124
  isError: result.isError,
115
125
  details: result.details,
116
126
  };
@@ -131,12 +141,10 @@ function wrapExecute(tool, security) {
131
141
  };
132
142
  }
133
143
  export function spectraToolToAgentTool(specTool, security) {
134
- const execute = security
135
- ? wrapExecute(specTool, security)
136
- : specTool.execute;
144
+ const execute = security ? wrapExecute(specTool, security) : specTool.execute;
137
145
  return defineTool({
138
146
  name: specTool.name,
139
- label: typeof specTool.displayName === "string" ? specTool.displayName : undefined,
147
+ label: typeof specTool.displayName === 'string' ? specTool.displayName : undefined,
140
148
  description: specTool.description,
141
149
  parameters: specTool.parameters,
142
150
  promptGuidelines: specTool.promptGuidelines,
@@ -195,7 +203,7 @@ export function createAllToolsWithSecurity(security) {
195
203
  export function getToolDisplayName(tool, args, result) {
196
204
  if (!tool.displayName)
197
205
  return tool.name;
198
- if (typeof tool.displayName === "string")
206
+ if (typeof tool.displayName === 'string')
199
207
  return tool.displayName;
200
208
  return tool.displayName(args, result);
201
209
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { AgentTool } from "@mohanscodex/spectra-agent";
2
- import type { Tool as McpToolDefinition } from "@modelcontextprotocol/sdk/types.js";
1
+ import type { AgentTool } from '@mohanscodex/spectra-agent';
2
+ import type { Tool as McpToolDefinition } from '@modelcontextprotocol/sdk/types.js';
3
3
  export declare function createMcpAgentTool(serverName: string, mcpTool: McpToolDefinition): AgentTool;
4
4
  export declare function createMcpAgentTools(serverName: string, tools: McpToolDefinition[]): AgentTool[];
5
5
  //# sourceMappingURL=mcp-tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/mcp-tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,4BAA4B,CAAC;AAExE,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AA6EpF,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,GACzB,SAAS,CAmBX;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,SAAS,EAAE,CAE/F"}
1
+ {"version":3,"file":"mcp-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/mcp-tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,4BAA4B,CAAC;AAExE,OAAO,KAAK,EAAE,IAAI,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAqFpF,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,SAAS,CAmB5F;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,SAAS,EAAE,CAE/F"}
@@ -1,7 +1,7 @@
1
- import { z } from "zod";
2
- import { defineTool } from "@mohanscodex/spectra-agent";
3
- import { callMcpTool, formatMcpToolName } from "../integrations/mcp/index.js";
4
- import { textResult, errorResult } from "./utils.js";
1
+ import { z } from 'zod';
2
+ import { defineTool } from '@mohanscodex/spectra-agent';
3
+ import { callMcpTool, formatMcpToolName } from '../integrations/mcp/index.js';
4
+ import { textResult, errorResult } from './utils.js';
5
5
  function mcpSchemaToZod(schema) {
6
6
  const jsonSchema = schema;
7
7
  const properties = jsonSchema.properties ?? {};
@@ -9,31 +9,34 @@ function mcpSchemaToZod(schema) {
9
9
  const zodShape = {};
10
10
  for (const [key, prop] of Object.entries(properties)) {
11
11
  let zodType;
12
- const propType = prop.type ?? "string";
12
+ const propType = prop.type ?? 'string';
13
13
  switch (propType) {
14
- case "string":
15
- zodType = z.string().describe(prop.description ?? "");
14
+ case 'string':
15
+ zodType = z.string().describe(prop.description ?? '');
16
16
  if (prop.enum) {
17
- zodType = z.enum(prop.enum).describe(prop.description ?? "");
17
+ zodType = z.enum(prop.enum).describe(prop.description ?? '');
18
18
  }
19
19
  break;
20
- case "number":
21
- zodType = z.number().describe(prop.description ?? "");
20
+ case 'number':
21
+ zodType = z.number().describe(prop.description ?? '');
22
22
  break;
23
- case "integer":
24
- zodType = z.number().int().describe(prop.description ?? "");
23
+ case 'integer':
24
+ zodType = z
25
+ .number()
26
+ .int()
27
+ .describe(prop.description ?? '');
25
28
  break;
26
- case "boolean":
27
- zodType = z.boolean().describe(prop.description ?? "");
29
+ case 'boolean':
30
+ zodType = z.boolean().describe(prop.description ?? '');
28
31
  break;
29
- case "array":
30
- zodType = z.array(z.unknown()).describe(prop.description ?? "");
32
+ case 'array':
33
+ zodType = z.array(z.unknown()).describe(prop.description ?? '');
31
34
  break;
32
- case "object":
33
- zodType = z.record(z.unknown()).describe(prop.description ?? "");
35
+ case 'object':
36
+ zodType = z.record(z.unknown()).describe(prop.description ?? '');
34
37
  break;
35
38
  default:
36
- zodType = z.unknown().describe(prop.description ?? "");
39
+ zodType = z.unknown().describe(prop.description ?? '');
37
40
  }
38
41
  if (!required.includes(key)) {
39
42
  zodType = zodType.optional();
@@ -45,15 +48,15 @@ function mcpSchemaToZod(schema) {
45
48
  function extractResultText(result) {
46
49
  if (result.isError) {
47
50
  const text = result.content
48
- ?.filter((b) => b.type === "text")
49
- .map((b) => b.text ?? "")
50
- .join("\n") || "Tool execution failed";
51
+ ?.filter((b) => b.type === 'text')
52
+ .map((b) => b.text ?? '')
53
+ .join('\n') || 'Tool execution failed';
51
54
  return errorResult(text);
52
55
  }
53
56
  const text = result.content
54
- ?.filter((b) => b.type === "text")
55
- .map((b) => b.text ?? "")
56
- .join("\n") || "(no output)";
57
+ ?.filter((b) => b.type === 'text')
58
+ .map((b) => b.text ?? '')
59
+ .join('\n') || '(no output)';
57
60
  return textResult(text);
58
61
  }
59
62
  export function createMcpAgentTool(serverName, mcpTool) {