@travisennis/acai 0.0.12 → 0.0.13

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 (237) hide show
  1. package/README.md +3 -2
  2. package/dist/agent/index.d.ts.map +1 -1
  3. package/dist/agent/index.js +2 -5
  4. package/dist/commands/history/types.d.ts +3 -2
  5. package/dist/commands/history/types.d.ts.map +1 -1
  6. package/dist/commands/init-project/utils.d.ts +0 -1
  7. package/dist/commands/init-project/utils.d.ts.map +1 -1
  8. package/dist/commands/init-project/utils.js +1 -1
  9. package/dist/commands/manager.d.ts.map +1 -1
  10. package/dist/commands/manager.js +0 -18
  11. package/dist/commands/share/html-renderer.d.ts.map +1 -1
  12. package/dist/commands/share/html-renderer.js +54 -48
  13. package/dist/commands/tools/index.js +39 -38
  14. package/dist/config/index.d.ts +0 -2
  15. package/dist/config/index.d.ts.map +1 -1
  16. package/dist/config/index.js +2 -6
  17. package/dist/index.d.ts +14 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +94 -76
  20. package/dist/models/manager.d.ts +1 -10
  21. package/dist/models/manager.d.ts.map +1 -1
  22. package/dist/models/manager.js +2 -2
  23. package/dist/models/opencode-go-provider.d.ts +4 -4
  24. package/dist/models/opencode-go-provider.d.ts.map +1 -1
  25. package/dist/models/opencode-go-provider.js +29 -35
  26. package/dist/models/providers.d.ts +1 -1
  27. package/dist/models/providers.d.ts.map +1 -1
  28. package/dist/prompts/system-prompt.d.ts +0 -2
  29. package/dist/prompts/system-prompt.d.ts.map +1 -1
  30. package/dist/prompts/system-prompt.js +6 -10
  31. package/dist/repl/index.d.ts +27 -11
  32. package/dist/repl/index.d.ts.map +1 -1
  33. package/dist/repl/index.js +238 -254
  34. package/dist/skills/index.d.ts +12 -2
  35. package/dist/skills/index.d.ts.map +1 -1
  36. package/dist/skills/index.js +123 -73
  37. package/dist/terminal/control.d.ts +1 -21
  38. package/dist/terminal/control.d.ts.map +1 -1
  39. package/dist/terminal/control.js +1 -32
  40. package/dist/terminal/formatting.d.ts +0 -33
  41. package/dist/terminal/formatting.d.ts.map +1 -1
  42. package/dist/terminal/formatting.js +0 -91
  43. package/dist/terminal/highlight/theme.d.ts +0 -37
  44. package/dist/terminal/highlight/theme.d.ts.map +1 -1
  45. package/dist/terminal/highlight/theme.js +1 -79
  46. package/dist/terminal/keys.d.ts +0 -97
  47. package/dist/terminal/keys.d.ts.map +1 -1
  48. package/dist/terminal/keys.js +0 -194
  49. package/dist/terminal/select-prompt.d.ts.map +1 -1
  50. package/dist/terminal/select-prompt.js +65 -51
  51. package/dist/terminal/style.d.ts +1 -1
  52. package/dist/terminal/style.d.ts.map +1 -1
  53. package/dist/terminal/supports-color.d.ts.map +1 -1
  54. package/dist/terminal/supports-color.js +38 -20
  55. package/dist/terminal/supports-hyperlinks.d.ts +3 -0
  56. package/dist/terminal/supports-hyperlinks.d.ts.map +1 -1
  57. package/dist/terminal/supports-hyperlinks.js +72 -31
  58. package/dist/terminal/table/layout-manager.d.ts +0 -20
  59. package/dist/terminal/table/layout-manager.d.ts.map +1 -1
  60. package/dist/terminal/table/layout-manager.js +68 -44
  61. package/dist/terminal/table/utils.d.ts +0 -1
  62. package/dist/terminal/table/utils.d.ts.map +1 -1
  63. package/dist/terminal/table/utils.js +2 -4
  64. package/dist/tools/apply-patch.d.ts +5 -3
  65. package/dist/tools/apply-patch.d.ts.map +1 -1
  66. package/dist/tools/apply-patch.js +154 -123
  67. package/dist/tools/bash.d.ts.map +1 -1
  68. package/dist/tools/bash.js +11 -8
  69. package/dist/tools/dynamic-tool-loader.d.ts +6 -1
  70. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
  71. package/dist/tools/dynamic-tool-loader.js +154 -135
  72. package/dist/tools/index.d.ts +3 -133
  73. package/dist/tools/index.d.ts.map +1 -1
  74. package/dist/tools/index.js +0 -20
  75. package/dist/tools/read-file.d.ts.map +1 -1
  76. package/dist/tools/read-file.js +32 -13
  77. package/dist/tools/skill.d.ts.map +1 -1
  78. package/dist/tools/skill.js +20 -13
  79. package/dist/tools/web-fetch.d.ts +2 -6
  80. package/dist/tools/web-fetch.d.ts.map +1 -1
  81. package/dist/tools/web-fetch.js +59 -36
  82. package/dist/tools/web-search.d.ts +0 -4
  83. package/dist/tools/web-search.d.ts.map +1 -1
  84. package/dist/tools/web-search.js +40 -32
  85. package/dist/tui/autocomplete/utils.d.ts +0 -15
  86. package/dist/tui/autocomplete/utils.d.ts.map +1 -1
  87. package/dist/tui/autocomplete/utils.js +0 -85
  88. package/dist/tui/autocomplete.d.ts +1 -1
  89. package/dist/tui/autocomplete.d.ts.map +1 -1
  90. package/dist/tui/autocomplete.js +1 -1
  91. package/dist/tui/components/editor.d.ts +12 -0
  92. package/dist/tui/components/editor.d.ts.map +1 -1
  93. package/dist/tui/components/editor.js +181 -195
  94. package/dist/tui/components/input.d.ts +4 -0
  95. package/dist/tui/components/input.d.ts.map +1 -1
  96. package/dist/tui/components/input.js +33 -31
  97. package/dist/tui/components/markdown.d.ts +30 -0
  98. package/dist/tui/components/markdown.d.ts.map +1 -1
  99. package/dist/tui/components/markdown.js +274 -242
  100. package/dist/tui/components/modal.d.ts.map +1 -1
  101. package/dist/tui/components/modal.js +11 -11
  102. package/dist/tui/components/select-list.d.ts +5 -0
  103. package/dist/tui/components/select-list.d.ts.map +1 -1
  104. package/dist/tui/components/select-list.js +69 -98
  105. package/dist/tui/components/table.d.ts +6 -0
  106. package/dist/tui/components/table.d.ts.map +1 -1
  107. package/dist/tui/components/table.js +61 -52
  108. package/dist/tui/index.d.ts +1 -8
  109. package/dist/tui/index.d.ts.map +1 -1
  110. package/dist/tui/index.js +0 -8
  111. package/dist/tui/tui.d.ts +9 -0
  112. package/dist/tui/tui.d.ts.map +1 -1
  113. package/dist/tui/tui.js +78 -48
  114. package/dist/tui/utils.d.ts +7 -0
  115. package/dist/tui/utils.d.ts.map +1 -1
  116. package/dist/tui/utils.js +117 -53
  117. package/dist/utils/bash.d.ts.map +1 -1
  118. package/dist/utils/bash.js +121 -104
  119. package/dist/utils/command-protection.d.ts +3 -2
  120. package/dist/utils/command-protection.d.ts.map +1 -1
  121. package/dist/utils/command-protection.js +42 -33
  122. package/dist/utils/filesystem/operations.d.ts +0 -15
  123. package/dist/utils/filesystem/operations.d.ts.map +1 -1
  124. package/dist/utils/filesystem/operations.js +1 -38
  125. package/dist/utils/filesystem/security.d.ts.map +1 -1
  126. package/dist/utils/filesystem/security.js +22 -15
  127. package/dist/utils/filetype-detection.d.ts +0 -1
  128. package/dist/utils/filetype-detection.d.ts.map +1 -1
  129. package/dist/utils/filetype-detection.js +0 -12
  130. package/dist/utils/formatting.d.ts +0 -30
  131. package/dist/utils/formatting.d.ts.map +1 -1
  132. package/dist/utils/formatting.js +0 -44
  133. package/dist/utils/git.d.ts +4 -6
  134. package/dist/utils/git.d.ts.map +1 -1
  135. package/dist/utils/git.js +36 -46
  136. package/dist/utils/ignore.d.ts +1 -1
  137. package/dist/utils/ignore.d.ts.map +1 -1
  138. package/dist/utils/ignore.js +1 -1
  139. package/dist/utils/process.d.ts.map +1 -1
  140. package/dist/utils/process.js +77 -79
  141. package/dist/utils/yaml.d.ts +0 -1
  142. package/dist/utils/yaml.d.ts.map +1 -1
  143. package/dist/utils/yaml.js +80 -89
  144. package/dist/utils/zod.d.ts +0 -3
  145. package/dist/utils/zod.d.ts.map +1 -1
  146. package/dist/utils/zod.js +0 -7
  147. package/package.json +25 -24
  148. package/dist/agent/sub-agent.d.ts +0 -23
  149. package/dist/agent/sub-agent.d.ts.map +0 -1
  150. package/dist/agent/sub-agent.js +0 -109
  151. package/dist/commands/add-directory/index.d.ts +0 -3
  152. package/dist/commands/add-directory/index.d.ts.map +0 -1
  153. package/dist/commands/add-directory/index.js +0 -50
  154. package/dist/commands/add-directory/utils.d.ts +0 -3
  155. package/dist/commands/add-directory/utils.d.ts.map +0 -1
  156. package/dist/commands/add-directory/utils.js +0 -15
  157. package/dist/commands/clear/index.d.ts +0 -3
  158. package/dist/commands/clear/index.d.ts.map +0 -1
  159. package/dist/commands/clear/index.js +0 -13
  160. package/dist/commands/generate-rules/index.d.ts +0 -3
  161. package/dist/commands/generate-rules/index.d.ts.map +0 -1
  162. package/dist/commands/generate-rules/index.js +0 -206
  163. package/dist/commands/generate-rules/service.d.ts +0 -22
  164. package/dist/commands/generate-rules/service.d.ts.map +0 -1
  165. package/dist/commands/generate-rules/service.js +0 -103
  166. package/dist/commands/generate-rules/utils.d.ts +0 -5
  167. package/dist/commands/generate-rules/utils.d.ts.map +0 -1
  168. package/dist/commands/generate-rules/utils.js +0 -25
  169. package/dist/commands/handoff/index.d.ts +0 -3
  170. package/dist/commands/handoff/index.d.ts.map +0 -1
  171. package/dist/commands/handoff/index.js +0 -97
  172. package/dist/commands/handoff/utils.d.ts +0 -4
  173. package/dist/commands/handoff/utils.d.ts.map +0 -1
  174. package/dist/commands/handoff/utils.js +0 -123
  175. package/dist/commands/list-directories/index.d.ts +0 -3
  176. package/dist/commands/list-directories/index.d.ts.map +0 -1
  177. package/dist/commands/list-directories/index.js +0 -35
  178. package/dist/commands/pickup/index.d.ts +0 -3
  179. package/dist/commands/pickup/index.d.ts.map +0 -1
  180. package/dist/commands/pickup/index.js +0 -141
  181. package/dist/commands/pickup/types.d.ts +0 -6
  182. package/dist/commands/pickup/types.d.ts.map +0 -1
  183. package/dist/commands/pickup/types.js +0 -1
  184. package/dist/commands/pickup/utils.d.ts +0 -7
  185. package/dist/commands/pickup/utils.d.ts.map +0 -1
  186. package/dist/commands/pickup/utils.js +0 -56
  187. package/dist/commands/remove-directory/index.d.ts +0 -3
  188. package/dist/commands/remove-directory/index.d.ts.map +0 -1
  189. package/dist/commands/remove-directory/index.js +0 -55
  190. package/dist/commands/review/index.d.ts +0 -3
  191. package/dist/commands/review/index.d.ts.map +0 -1
  192. package/dist/commands/review/index.js +0 -12
  193. package/dist/commands/review/review-panel.d.ts +0 -3
  194. package/dist/commands/review/review-panel.d.ts.map +0 -1
  195. package/dist/commands/review/review-panel.js +0 -186
  196. package/dist/commands/review/utils.d.ts +0 -18
  197. package/dist/commands/review/utils.d.ts.map +0 -1
  198. package/dist/commands/review/utils.js +0 -146
  199. package/dist/commands/shell/index.d.ts +0 -3
  200. package/dist/commands/shell/index.d.ts.map +0 -1
  201. package/dist/commands/shell/index.js +0 -96
  202. package/dist/subagents/index.d.ts +0 -16
  203. package/dist/subagents/index.d.ts.map +0 -1
  204. package/dist/subagents/index.js +0 -231
  205. package/dist/terminal/index.d.ts +0 -9
  206. package/dist/terminal/index.d.ts.map +0 -1
  207. package/dist/terminal/index.js +0 -8
  208. package/dist/tools/agent.d.ts +0 -27
  209. package/dist/tools/agent.d.ts.map +0 -1
  210. package/dist/tools/agent.js +0 -81
  211. package/dist/tools/directory-tree.d.ts +0 -28
  212. package/dist/tools/directory-tree.d.ts.map +0 -1
  213. package/dist/tools/directory-tree.js +0 -154
  214. package/dist/tools/glob.d.ts +0 -35
  215. package/dist/tools/glob.d.ts.map +0 -1
  216. package/dist/tools/glob.js +0 -167
  217. package/dist/tools/grep.d.ts +0 -100
  218. package/dist/tools/grep.d.ts.map +0 -1
  219. package/dist/tools/grep.js +0 -608
  220. package/dist/tools/ls.d.ts +0 -26
  221. package/dist/tools/ls.d.ts.map +0 -1
  222. package/dist/tools/ls.js +0 -83
  223. package/dist/tui/components/header.d.ts +0 -21
  224. package/dist/tui/components/header.d.ts.map +0 -1
  225. package/dist/tui/components/header.js +0 -63
  226. package/dist/utils/bash/parse.d.ts +0 -19
  227. package/dist/utils/bash/parse.d.ts.map +0 -1
  228. package/dist/utils/bash/parse.js +0 -223
  229. package/dist/utils/bash/quote.d.ts +0 -6
  230. package/dist/utils/bash/quote.d.ts.map +0 -1
  231. package/dist/utils/bash/quote.js +0 -23
  232. package/dist/utils/generators.d.ts +0 -3
  233. package/dist/utils/generators.d.ts.map +0 -1
  234. package/dist/utils/generators.js +0 -25
  235. package/dist/utils/glob.d.ts +0 -52
  236. package/dist/utils/glob.d.ts.map +0 -1
  237. package/dist/utils/glob.js +0 -376
@@ -40,6 +40,25 @@ async function listSkillResources(baseDir) {
40
40
  return [];
41
41
  }
42
42
  }
43
+ /**
44
+ * Build the result string for a skill execution.
45
+ */
46
+ function buildSkillResult(skill, body, resources, args) {
47
+ let result = `# Skill: ${skill.name}\n\n`;
48
+ result += `**Base directory**: ${skill.baseDir}\n\n`;
49
+ if (resources.length > 0) {
50
+ result += "<skill_resources>\n";
51
+ for (const resource of resources) {
52
+ result += `${resource}\n`;
53
+ }
54
+ result += "</skill_resources>\n\n";
55
+ result +=
56
+ "Relative paths in this skill are relative to the base directory.\n\n";
57
+ }
58
+ const argsArray = args ? args.split(/\s+/).filter(Boolean) : [];
59
+ result += replaceArgumentPlaceholders(body, argsArray);
60
+ return result;
61
+ }
43
62
  export async function createSkillTool(activatedSkillsTracker) {
44
63
  const appConfig = await config.getConfig();
45
64
  const skillPaths = parseSkillsPath(appConfig.skills.path);
@@ -83,19 +102,7 @@ export async function createSkillTool(activatedSkillsTracker) {
83
102
  // List resources in skill directory
84
103
  const resources = await listSkillResources(skill.baseDir);
85
104
  // Build result
86
- let result = `# Skill: ${skill.name}\n\n`;
87
- result += `**Base directory**: ${skill.baseDir}\n\n`;
88
- if (resources.length > 0) {
89
- result += "<skill_resources>\n";
90
- for (const resource of resources) {
91
- result += `${resource}\n`;
92
- }
93
- result += "</skill_resources>\n\n";
94
- result +=
95
- "Relative paths in this skill are relative to the base directory.\n\n";
96
- }
97
- const argsArray = args ? args.split(/\s+/).filter(Boolean) : [];
98
- result += replaceArgumentPlaceholders(body, argsArray);
105
+ const result = buildSkillResult(skill, body, resources, args);
99
106
  // Mark as activated
100
107
  activatedSkillsTracker.add(skillName);
101
108
  return result;
@@ -11,18 +11,14 @@ declare const inputSchema: z.ZodObject<{
11
11
  output: z.ZodDefault<z.ZodEnum<{
12
12
  markdown: "markdown";
13
13
  text: "text";
14
- html: "html";
15
14
  json: "json";
15
+ html: "html";
16
16
  }>>;
17
17
  jina: z.ZodOptional<z.ZodPreprocess<z.ZodNullable<z.ZodCoercedBoolean<unknown>>>>;
18
18
  timeout: z.ZodOptional<z.ZodPreprocess<z.ZodNullable<z.ZodCoercedNumber<unknown>>>>;
19
19
  headers: z.ZodOptional<z.ZodPreprocess<z.ZodNullable<z.ZodCoercedBoolean<unknown>>>>;
20
20
  }, z.core.$strip>;
21
21
  type WebFetchInputSchema = z.infer<typeof inputSchema>;
22
- /**
23
- * Execute web fetch
24
- */
25
- export declare function executeWebFetch(options: WebFetchInputSchema, executionOptions: ToolExecutionOptions): Promise<string>;
26
22
  /**
27
23
  * Create the web fetch tool
28
24
  */
@@ -34,8 +30,8 @@ export declare const createWebFetchTool: () => Promise<{
34
30
  output: z.ZodDefault<z.ZodEnum<{
35
31
  markdown: "markdown";
36
32
  text: "text";
37
- html: "html";
38
33
  json: "json";
34
+ html: "html";
39
35
  }>>;
40
36
  jina: z.ZodOptional<z.ZodPreprocess<z.ZodNullable<z.ZodCoercedBoolean<unknown>>>>;
41
37
  timeout: z.ZodOptional<z.ZodPreprocess<z.ZodNullable<z.ZodCoercedNumber<unknown>>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"web-fetch.d.ts","sourceRoot":"","sources":["../../source/tools/web-fetch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,YAAY;;CAExB,CAAC;AASF;;GAEG;AACH,QAAA,MAAM,WAAW;;;;;;;;;;;iBAkBf,CAAC;AAEH,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AA6bvD;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,EAC5B,gBAAgB,EAAE,oBAAoB,GACrC,OAAO,CAAC,MAAM,CAAC,CAwFjB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;qBAQV,mBAAmB;qBAIzB,mBAAmB,oBACV,oBAAoB,GACrC,OAAO,CAAC,MAAM,CAAC;EAIrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"web-fetch.d.ts","sourceRoot":"","sources":["../../source/tools/web-fetch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,YAAY;;CAExB,CAAC;AASF;;GAEG;AACH,QAAA,MAAM,WAAW;;;;;;;;;;;iBAkBf,CAAC;AAEH,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AA+jBvD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;qBAQV,mBAAmB;qBAIzB,mBAAmB,oBACV,oBAAoB,GACrC,OAAO,CAAC,MAAM,CAAC;EAIrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC"}
@@ -301,6 +301,51 @@ async function handleTextResponse(response, contentType) {
301
301
  provider: "direct",
302
302
  };
303
303
  }
304
+ /**
305
+ * If the response is a redirect (3xx with a Location header), return the
306
+ * resolved redirect target URL. Otherwise returns null.
307
+ */
308
+ function getRedirectUrl(response, currentUrl) {
309
+ if (response.status < 300 || response.status >= 400) {
310
+ return null;
311
+ }
312
+ const location = response.headers.get("location");
313
+ if (!location) {
314
+ return null;
315
+ }
316
+ return new URL(location, currentUrl).toString();
317
+ }
318
+ /**
319
+ * Process a non-redirect fetch response: validate status, determine content
320
+ * type, and delegate to the appropriate handler.
321
+ */
322
+ async function processNonRedirectResponse(response, options) {
323
+ const { useJina, includeHeaders, signal, verbose } = options;
324
+ if (!response.ok) {
325
+ throw new Error(`HTTP error! status: ${response.status} ${response.statusText}`);
326
+ }
327
+ const contentType = getContentType(response);
328
+ const responseHeaders = {};
329
+ if (includeHeaders) {
330
+ response.headers.forEach((value, key) => {
331
+ responseHeaders[key] = value;
332
+ });
333
+ }
334
+ let result;
335
+ if (contentType.includes("text/html")) {
336
+ result = await handleHtmlResponse(response, useJina, signal, verbose);
337
+ }
338
+ else if (contentType.startsWith("image/")) {
339
+ result = await handleImageResponse(response, contentType);
340
+ }
341
+ else {
342
+ result = await handleTextResponse(response, contentType);
343
+ }
344
+ if (includeHeaders) {
345
+ result.headers = responseHeaders;
346
+ }
347
+ return result;
348
+ }
304
349
  /**
305
350
  * Main fetch function with redirect handling
306
351
  */
@@ -332,43 +377,21 @@ async function fetchUrl(url, options) {
332
377
  redirect: "manual",
333
378
  headers: requestHeaders,
334
379
  });
335
- // Handle redirects
336
- if (response.status >= 300 && response.status < 400) {
337
- const location = response.headers.get("location");
338
- if (location) {
339
- const redirectUrl = new URL(location, currentUrl).toString();
340
- if (verbose) {
341
- console.error(`Redirecting to: ${redirectUrl}`);
342
- }
343
- currentUrl = redirectUrl;
344
- redirectCount++;
345
- continue;
380
+ const redirectUrl = getRedirectUrl(response, currentUrl);
381
+ if (redirectUrl) {
382
+ if (verbose) {
383
+ console.error(`Redirecting to: ${redirectUrl}`);
346
384
  }
385
+ currentUrl = redirectUrl;
386
+ redirectCount++;
387
+ continue;
347
388
  }
348
- if (!response.ok) {
349
- throw new Error(`HTTP error! status: ${response.status} ${response.statusText}`);
350
- }
351
- const contentType = getContentType(response);
352
- const responseHeaders = {};
353
- if (includeHeaders) {
354
- response.headers.forEach((value, key) => {
355
- responseHeaders[key] = value;
356
- });
357
- }
358
- let result;
359
- if (contentType.includes("text/html")) {
360
- result = await handleHtmlResponse(response, useJina, signal, verbose);
361
- }
362
- else if (contentType.startsWith("image/")) {
363
- result = await handleImageResponse(response, contentType);
364
- }
365
- else {
366
- result = await handleTextResponse(response, contentType);
367
- }
368
- if (includeHeaders) {
369
- result.headers = responseHeaders;
370
- }
371
- return result;
389
+ return await processNonRedirectResponse(response, {
390
+ useJina,
391
+ includeHeaders,
392
+ signal,
393
+ verbose,
394
+ });
372
395
  }
373
396
  finally {
374
397
  cleanup();
@@ -379,7 +402,7 @@ async function fetchUrl(url, options) {
379
402
  /**
380
403
  * Execute web fetch
381
404
  */
382
- export async function executeWebFetch(options, executionOptions) {
405
+ async function executeWebFetch(options, executionOptions) {
383
406
  const { url, output = "text", jina = false, timeout, headers = false, } = options;
384
407
  if (executionOptions.abortSignal?.aborted) {
385
408
  throw new Error("Web fetch aborted");
@@ -16,10 +16,6 @@ declare const inputSchema: z.ZodObject<{
16
16
  }>>;
17
17
  }, z.core.$strip>;
18
18
  type WebSearchInputSchema = z.infer<typeof inputSchema>;
19
- /**
20
- * Execute web search
21
- */
22
- export declare function executeWebSearch(options: WebSearchInputSchema, executionOptions: ToolExecutionOptions): Promise<string>;
23
19
  /**
24
20
  * Create the web search tool
25
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../source/tools/web-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,aAAa;;CAEzB,CAAC;AAQF;;GAEG;AACH,QAAA,MAAM,WAAW;;;;;;;;iBAkBf,CAAC;AAEH,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AA+MxD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,EAC7B,gBAAgB,EAAE,oBAAoB,GACrC,OAAO,CAAC,MAAM,CAAC,CAwEjB;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;uBAQT,oBAAoB;qBAI5B,oBAAoB,oBACX,oBAAoB,GACrC,OAAO,CAAC,MAAM,CAAC;EAIrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../source/tools/web-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,aAAa;;CAEzB,CAAC;AAQF;;GAEG;AACH,QAAA,MAAM,WAAW;;;;;;;;iBAkBf,CAAC;AAEH,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AA6SxD;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;uBAQT,oBAAoB;qBAI5B,oBAAoB,oBACX,oBAAoB,GACrC,OAAO,CAAC,MAAM,CAAC;EAIrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC"}
@@ -151,10 +151,45 @@ async function fetchDuckDuckGo(query, numResults, signal) {
151
151
  totalResults: data.RelatedTopics.length,
152
152
  };
153
153
  }
154
+ /**
155
+ * Attempt Exa search with automatic fallback to DuckDuckGo
156
+ */
157
+ async function fetchExaWithFallback(query, numResults, signal) {
158
+ try {
159
+ return await fetchExa(query, numResults, signal);
160
+ }
161
+ catch (error) {
162
+ // If aborted, re-throw the original error
163
+ if (signal.aborted) {
164
+ throw error;
165
+ }
166
+ // Provide more helpful error message about network failures
167
+ const errorMessage = error instanceof Error ? error.message : String(error);
168
+ if (errorMessage.includes("fetch failed") ||
169
+ errorMessage.includes("ENOTFOUND") ||
170
+ errorMessage.includes("connect")) {
171
+ throw new Error(`Exa API is not accessible (network error). Try using provider="duckduckgo" instead.`);
172
+ }
173
+ // For non-network errors (auth, rate limit, etc.), fall back to DuckDuckGo
174
+ return await fetchDuckDuckGo(query, numResults, signal);
175
+ }
176
+ }
177
+ /**
178
+ * Format search response into a human-readable string
179
+ */
180
+ function formatSearchResults(query, response) {
181
+ if (response.results.length === 0) {
182
+ return `No search results found for "${query}".`;
183
+ }
184
+ const resultsText = response.results
185
+ .map((result, index) => `${index + 1}. [${result.title}](${result.url})\n ${result.snippet.substring(0, 200)}${result.snippet.length > 200 ? "..." : ""}`)
186
+ .join("\n\n");
187
+ return `Search results for "${query}" (${response.provider}):\n\n${resultsText}\n\nTotal results: ${response.totalResults || response.results.length}`;
188
+ }
154
189
  /**
155
190
  * Execute web search
156
191
  */
157
- export async function executeWebSearch(options, executionOptions) {
192
+ async function executeWebSearch(options, executionOptions) {
158
193
  const { query, numResults = DEFAULT_NUM_RESULTS, timeout = DEFAULT_TIMEOUT, provider = "exa", } = options;
159
194
  if (executionOptions.abortSignal?.aborted) {
160
195
  throw new Error("Web search aborted");
@@ -166,37 +201,10 @@ export async function executeWebSearch(options, executionOptions) {
166
201
  const effectiveTimeout = Math.min(Math.max(timeout ?? 1000, 1000), 60000);
167
202
  const { signal, cleanup } = createTimeoutSignal(effectiveTimeout, executionOptions.abortSignal);
168
203
  try {
169
- let response;
170
- if (provider === "duckduckgo") {
171
- response = await fetchDuckDuckGo(query, effectiveNumResults, signal);
172
- }
173
- else {
174
- // Try Exa first, fall back to DuckDuckGo
175
- try {
176
- response = await fetchExa(query, effectiveNumResults, signal);
177
- }
178
- catch (exaError) {
179
- // Fall back to DuckDuckGo if Exa fails (but not if aborted)
180
- if (signal.aborted) {
181
- throw exaError;
182
- }
183
- // Provide more helpful error message about Exa failure
184
- const errorMsg = exaError instanceof Error ? exaError.message : String(exaError);
185
- if (errorMsg.includes("fetch failed") ||
186
- errorMsg.includes("ENOTFOUND") ||
187
- errorMsg.includes("connect")) {
188
- throw new Error(`Exa API is not accessible (network error). Try using provider="duckduckgo" instead.`);
189
- }
190
- response = await fetchDuckDuckGo(query, effectiveNumResults, signal);
191
- }
192
- }
193
- if (response.results.length === 0) {
194
- return `No search results found for "${query}".`;
195
- }
196
- const resultsText = response.results
197
- .map((result, index) => `${index + 1}. [${result.title}](${result.url})\n ${result.snippet.substring(0, 200)}${result.snippet.length > 200 ? "..." : ""}`)
198
- .join("\n\n");
199
- return `Search results for "${query}" (${response.provider}):\n\n${resultsText}\n\nTotal results: ${response.totalResults || response.results.length}`;
204
+ const response = provider === "duckduckgo"
205
+ ? await fetchDuckDuckGo(query, effectiveNumResults, signal)
206
+ : await fetchExaWithFallback(query, effectiveNumResults, signal);
207
+ return formatSearchResults(query, response);
200
208
  }
201
209
  catch (error) {
202
210
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -1,17 +1,2 @@
1
- import type { Dirent } from "node:fs";
2
- export declare class DirectoryCache {
3
- private cache;
4
- private ttl;
5
- get(dir: string): Promise<Dirent[] | null>;
6
- set(dir: string, entries: Dirent[]): void;
7
- clear(): void;
8
- }
9
- export declare const directoryCache: DirectoryCache;
10
- interface DirentWithPath extends Dirent {
11
- parentPath: string;
12
- }
13
- export declare function getDirectoryEntries(dirs: string[]): Promise<DirentWithPath[]>;
14
- export declare function isPathWithinAllowedDirs(requestedPath: string, allowedDirs: string[]): Promise<boolean>;
15
1
  export declare function extractPathPrefix(text: string, forceExtract?: boolean): string | null;
16
- export {};
17
2
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../source/tui/autocomplete/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKtC,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA+D;IAC5E,OAAO,CAAC,GAAG,CAAQ;IAEb,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAQhD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAIzC,KAAK,IAAI,IAAI;CAGd;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC;AAGnD,UAAU,cAAe,SAAQ,MAAM;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,cAAc,EAAE,CAAC,CA4B3B;AA8BD,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAmCD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,YAAY,UAAQ,GACnB,MAAM,GAAG,IAAI,CAuCf"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../source/tui/autocomplete/utils.ts"],"names":[],"mappings":"AAiCA,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,YAAY,UAAQ,GACnB,MAAM,GAAG,IAAI,CAuCf"}
@@ -1,88 +1,3 @@
1
- import { readdir, realpath } from "node:fs/promises";
2
- import { isAbsolute, relative, resolve } from "node:path";
3
- // Cache for directory listings to improve performance
4
- export class DirectoryCache {
5
- cache = new Map();
6
- ttl = 3000; // 3 seconds
7
- async get(dir) {
8
- const cached = this.cache.get(dir);
9
- if (cached && Date.now() - cached.timestamp < this.ttl) {
10
- return cached.entries;
11
- }
12
- return null;
13
- }
14
- set(dir, entries) {
15
- this.cache.set(dir, { entries, timestamp: Date.now() });
16
- }
17
- clear() {
18
- this.cache.clear();
19
- }
20
- }
21
- export const directoryCache = new DirectoryCache();
22
- // Helper function to get directory entries with caching and timeout
23
- export async function getDirectoryEntries(dirs) {
24
- const results = [];
25
- for (const dir of dirs) {
26
- const cached = await directoryCache.get(dir);
27
- if (cached) {
28
- for (const entry of cached) {
29
- results.push(Object.assign(entry, { parentPath: dir }));
30
- }
31
- continue;
32
- }
33
- try {
34
- // Add timeout to prevent hanging on slow file systems
35
- const entries = await Promise.race([
36
- readdir(dir, { withFileTypes: true }),
37
- new Promise((_, reject) => setTimeout(() => reject(new Error("Directory read timeout")), 2000)),
38
- ]);
39
- directoryCache.set(dir, entries);
40
- for (const entry of entries) {
41
- results.push(Object.assign(entry, { parentPath: dir }));
42
- }
43
- }
44
- catch (_e) {
45
- // ignore
46
- }
47
- }
48
- return results;
49
- }
50
- // Cache for resolved allowed directories to avoid repeated realpath calls
51
- const resolvedAllowedDirsCache = new Map();
52
- async function getResolvedPath(path) {
53
- const cached = resolvedAllowedDirsCache.get(path);
54
- if (cached !== undefined) {
55
- return cached;
56
- }
57
- const absPath = resolve(path);
58
- let resolved = absPath;
59
- try {
60
- resolved = await realpath(absPath);
61
- }
62
- catch {
63
- // If path doesn't exist, use the resolved absolute path
64
- }
65
- // Cache with a size limit
66
- if (resolvedAllowedDirsCache.size > 500) {
67
- const firstKey = resolvedAllowedDirsCache.keys().next().value;
68
- if (firstKey !== undefined) {
69
- resolvedAllowedDirsCache.delete(firstKey);
70
- }
71
- }
72
- resolvedAllowedDirsCache.set(path, resolved);
73
- return resolved;
74
- }
75
- export async function isPathWithinAllowedDirs(requestedPath, allowedDirs) {
76
- const target = await getResolvedPath(requestedPath);
77
- for (const allowedDir of allowedDirs) {
78
- const absAllowed = await getResolvedPath(allowedDir);
79
- const rel = relative(absAllowed, target);
80
- if (rel === "" || (!rel.startsWith("..") && !isAbsolute(rel))) {
81
- return true;
82
- }
83
- }
84
- return false;
85
- }
86
1
  function hasPathIndicator(pathPrefix) {
87
2
  return (pathPrefix.includes("/") ||
88
3
  pathPrefix.endsWith("/") ||
@@ -8,6 +8,6 @@ export type { SlashCommand } from "./autocomplete/command-provider.ts";
8
8
  export { CommandProvider } from "./autocomplete/command-provider.ts";
9
9
  export { FileSearchProvider } from "./autocomplete/file-search-provider.ts";
10
10
  export { SkillProvider } from "./autocomplete/skill-provider.ts";
11
- export { DirectoryCache, directoryCache, extractPathPrefix, getDirectoryEntries, isPathWithinAllowedDirs, } from "./autocomplete/utils.ts";
11
+ export { extractPathPrefix } from "./autocomplete/utils.ts";
12
12
  export declare function createDefaultProvider<T extends SlashCommand | AutocompleteItem>(commands?: T[], _allowedDirs?: string[]): CombinedProvider;
13
13
  //# sourceMappingURL=autocomplete.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.d.ts","sourceRoot":"","sources":["../../source/tui/autocomplete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,YAAY,EACV,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAGjC,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,YAAY,GAAG,gBAAgB,EACzC,QAAQ,GAAE,CAAC,EAAO,EAAE,YAAY,GAAE,MAAM,EAAoB,oBAM7D"}
1
+ {"version":3,"file":"autocomplete.d.ts","sourceRoot":"","sources":["../../source/tui/autocomplete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,YAAY,EACV,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,YAAY,GAAG,gBAAgB,EACzC,QAAQ,GAAE,CAAC,EAAO,EAAE,YAAY,GAAE,MAAM,EAAoB,oBAM7D"}
@@ -8,7 +8,7 @@ export { CombinedProvider } from "./autocomplete/combined-provider.js";
8
8
  export { CommandProvider } from "./autocomplete/command-provider.js";
9
9
  export { FileSearchProvider } from "./autocomplete/file-search-provider.js";
10
10
  export { SkillProvider } from "./autocomplete/skill-provider.js";
11
- export { DirectoryCache, directoryCache, extractPathPrefix, getDirectoryEntries, isPathWithinAllowedDirs, } from "./autocomplete/utils.js";
11
+ export { extractPathPrefix } from "./autocomplete/utils.js";
12
12
  // Convenience function for backward compatibility
13
13
  export function createDefaultProvider(commands = [], _allowedDirs = [process.cwd()]) {
14
14
  return new CombinedProvider([
@@ -68,6 +68,7 @@ export declare class Editor implements Component {
68
68
  /** Internal setText that doesn't reset history state - used by navigateHistory */
69
69
  private setTextInternal;
70
70
  invalidate(): void;
71
+ private renderCursorOnLine;
71
72
  render(width: number): string[];
72
73
  handleInput(data: string): void;
73
74
  private processInputData;
@@ -83,10 +84,15 @@ export declare class Editor implements Component {
83
84
  private handleWordNavigation;
84
85
  private handleArrowKeys;
85
86
  private layoutText;
87
+ private pushSingleLayoutLine;
88
+ private pushWrappedLayoutLines;
86
89
  getText(): string;
87
90
  setText(text: string): void;
88
91
  private insertCharacter;
89
92
  private handlePaste;
93
+ private handleLargePaste;
94
+ private handleSingleLinePaste;
95
+ private handleMultiLinePaste;
90
96
  private addNewLine;
91
97
  private handleBackspace;
92
98
  private moveToLineStart;
@@ -95,6 +101,10 @@ export declare class Editor implements Component {
95
101
  private deleteToStartOfLine;
96
102
  private deleteToEndOfLine;
97
103
  private deleteWordBackwards;
104
+ private mergeLineWithPrevious;
105
+ private deleteWordOnCurrentLine;
106
+ private findWordBoundaryBackwards;
107
+ private isWordBoundaryChar;
98
108
  /**
99
109
  * Build a mapping from visual lines to logical positions.
100
110
  * Returns an array where each element represents a visual line with:
@@ -108,6 +118,8 @@ export declare class Editor implements Component {
108
118
  */
109
119
  private findCurrentVisualLine;
110
120
  private moveCursor;
121
+ private moveCursorVertical;
122
+ private moveCursorHorizontal;
111
123
  private isWordBoundary;
112
124
  private moveWordBackwards;
113
125
  private moveWordForwards;
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../source/tui/components/editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../source/tui/components/editor.ts"],"names":[],"mappings":"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"}