@travisennis/acai 0.0.10 → 0.0.12

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 (179) hide show
  1. package/README.md +7 -4
  2. package/dist/agent/index.d.ts.map +1 -1
  3. package/dist/agent/index.js +29 -27
  4. package/dist/cli/stdin.d.ts +2 -1
  5. package/dist/cli/stdin.d.ts.map +1 -1
  6. package/dist/commands/generate-rules/service.d.ts +3 -2
  7. package/dist/commands/generate-rules/service.d.ts.map +1 -1
  8. package/dist/commands/health/utils.d.ts +3 -2
  9. package/dist/commands/health/utils.d.ts.map +1 -1
  10. package/dist/commands/init-project/utils.d.ts +2 -1
  11. package/dist/commands/init-project/utils.d.ts.map +1 -1
  12. package/dist/commands/init-project/utils.js +0 -11
  13. package/dist/commands/manager.d.ts.map +1 -1
  14. package/dist/commands/manager.js +6 -1
  15. package/dist/commands/resources/index.d.ts.map +1 -1
  16. package/dist/commands/resources/index.js +4 -1
  17. package/dist/commands/review/utils.d.ts +6 -1
  18. package/dist/commands/review/utils.d.ts.map +1 -1
  19. package/dist/commands/session/index.d.ts.map +1 -1
  20. package/dist/commands/session/index.js +6 -0
  21. package/dist/commands/session/types.d.ts +1 -0
  22. package/dist/commands/session/types.d.ts.map +1 -1
  23. package/dist/commands/tools/index.d.ts +3 -0
  24. package/dist/commands/tools/index.d.ts.map +1 -0
  25. package/dist/commands/tools/index.js +190 -0
  26. package/dist/commands/tools/templates.d.ts +6 -0
  27. package/dist/commands/tools/templates.d.ts.map +1 -0
  28. package/dist/commands/tools/templates.js +97 -0
  29. package/dist/config/index.d.ts +5 -0
  30. package/dist/config/index.d.ts.map +1 -1
  31. package/dist/config/index.js +41 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +15 -3
  34. package/dist/models/anthropic-provider.d.ts +1 -1
  35. package/dist/models/deepseek-provider.d.ts +3 -3
  36. package/dist/models/deepseek-provider.js +17 -17
  37. package/dist/models/google-provider.d.ts +2 -4
  38. package/dist/models/google-provider.d.ts.map +1 -1
  39. package/dist/models/google-provider.js +2 -17
  40. package/dist/models/groq-provider.d.ts +2 -4
  41. package/dist/models/groq-provider.d.ts.map +1 -1
  42. package/dist/models/groq-provider.js +3 -21
  43. package/dist/models/opencode-go-provider.d.ts +35 -0
  44. package/dist/models/opencode-go-provider.d.ts.map +1 -0
  45. package/dist/models/opencode-go-provider.js +214 -0
  46. package/dist/models/opencode-zen-provider.d.ts +5 -5
  47. package/dist/models/opencode-zen-provider.d.ts.map +1 -1
  48. package/dist/models/opencode-zen-provider.js +41 -47
  49. package/dist/models/openrouter-provider.d.ts +5 -13
  50. package/dist/models/openrouter-provider.d.ts.map +1 -1
  51. package/dist/models/openrouter-provider.js +34 -138
  52. package/dist/models/providers.d.ts +3 -3
  53. package/dist/models/providers.d.ts.map +1 -1
  54. package/dist/models/providers.js +6 -0
  55. package/dist/models/xai-provider.d.ts +1 -2
  56. package/dist/models/xai-provider.d.ts.map +1 -1
  57. package/dist/models/xai-provider.js +0 -13
  58. package/dist/prompts/manager.d.ts.map +1 -1
  59. package/dist/prompts/manager.js +5 -1
  60. package/dist/prompts/mentions.d.ts.map +1 -1
  61. package/dist/prompts/mentions.js +35 -6
  62. package/dist/prompts/system-prompt.d.ts +1 -0
  63. package/dist/prompts/system-prompt.d.ts.map +1 -1
  64. package/dist/prompts/system-prompt.js +20 -5
  65. package/dist/repl/index.d.ts +1 -2
  66. package/dist/repl/index.d.ts.map +1 -1
  67. package/dist/repl/index.js +14 -53
  68. package/dist/sessions/manager.d.ts +3 -3
  69. package/dist/sessions/manager.d.ts.map +1 -1
  70. package/dist/sessions/manager.js +1 -1
  71. package/dist/skills/activated-tracker.d.ts +11 -0
  72. package/dist/skills/activated-tracker.d.ts.map +1 -0
  73. package/dist/skills/activated-tracker.js +16 -0
  74. package/dist/skills/index.d.ts +3 -2
  75. package/dist/skills/index.d.ts.map +1 -1
  76. package/dist/skills/index.js +7 -1
  77. package/dist/subagents/index.d.ts +2 -1
  78. package/dist/subagents/index.d.ts.map +1 -1
  79. package/dist/terminal/table/utils.d.ts +1 -1
  80. package/dist/terminal/table/utils.d.ts.map +1 -1
  81. package/dist/terminal/wrap-ansi.js +2 -2
  82. package/dist/tools/agent.js +1 -1
  83. package/dist/tools/apply-patch.d.ts +62 -0
  84. package/dist/tools/apply-patch.d.ts.map +1 -0
  85. package/dist/tools/apply-patch.js +377 -0
  86. package/dist/tools/bash.d.ts +4 -4
  87. package/dist/tools/bash.d.ts.map +1 -1
  88. package/dist/tools/bash.js +40 -8
  89. package/dist/tools/directory-tree.d.ts +4 -4
  90. package/dist/tools/directory-tree.d.ts.map +1 -1
  91. package/dist/tools/directory-tree.js +3 -1
  92. package/dist/tools/dynamic-tool-loader.d.ts +12 -3
  93. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
  94. package/dist/tools/dynamic-tool-loader.js +299 -39
  95. package/dist/tools/edit-file.d.ts +2 -2
  96. package/dist/tools/edit-file.d.ts.map +1 -1
  97. package/dist/tools/edit-file.js +188 -79
  98. package/dist/tools/glob.d.ts +16 -16
  99. package/dist/tools/glob.d.ts.map +1 -1
  100. package/dist/tools/glob.js +30 -15
  101. package/dist/tools/grep.d.ts +14 -14
  102. package/dist/tools/grep.d.ts.map +1 -1
  103. package/dist/tools/grep.js +50 -29
  104. package/dist/tools/index.d.ts +57 -84
  105. package/dist/tools/index.d.ts.map +1 -1
  106. package/dist/tools/index.js +20 -5
  107. package/dist/tools/ls.d.ts +2 -2
  108. package/dist/tools/ls.d.ts.map +1 -1
  109. package/dist/tools/ls.js +2 -1
  110. package/dist/tools/read-file.d.ts +9 -11
  111. package/dist/tools/read-file.d.ts.map +1 -1
  112. package/dist/tools/read-file.js +21 -16
  113. package/dist/tools/save-file.d.ts +4 -4
  114. package/dist/tools/save-file.d.ts.map +1 -1
  115. package/dist/tools/save-file.js +26 -21
  116. package/dist/tools/skill.d.ts +2 -1
  117. package/dist/tools/skill.d.ts.map +1 -1
  118. package/dist/tools/skill.js +55 -12
  119. package/dist/tools/types.d.ts +8 -2
  120. package/dist/tools/types.d.ts.map +1 -1
  121. package/dist/tools/web-fetch.d.ts +6 -18
  122. package/dist/tools/web-fetch.d.ts.map +1 -1
  123. package/dist/tools/web-fetch.js +45 -9
  124. package/dist/tools/web-search.d.ts +4 -22
  125. package/dist/tools/web-search.d.ts.map +1 -1
  126. package/dist/tools/web-search.js +1 -1
  127. package/dist/tui/autocomplete/file-search-provider.js +1 -1
  128. package/dist/tui/autocomplete/utils.d.ts +2 -1
  129. package/dist/tui/autocomplete/utils.d.ts.map +1 -1
  130. package/dist/tui/autocomplete/utils.js +25 -23
  131. package/dist/tui/components/editor.d.ts +2 -1
  132. package/dist/tui/components/editor.d.ts.map +1 -1
  133. package/dist/tui/components/editor.js +1 -1
  134. package/dist/tui/components/footer.d.ts +0 -2
  135. package/dist/tui/components/footer.d.ts.map +1 -1
  136. package/dist/tui/components/footer.js +1 -17
  137. package/dist/tui/components/markdown.d.ts +2 -2
  138. package/dist/tui/components/markdown.d.ts.map +1 -1
  139. package/dist/tui/components/welcome.d.ts +2 -1
  140. package/dist/tui/components/welcome.d.ts.map +1 -1
  141. package/dist/tui/editor-launcher.d.ts +3 -2
  142. package/dist/tui/editor-launcher.d.ts.map +1 -1
  143. package/dist/tui/index.d.ts +0 -1
  144. package/dist/tui/index.d.ts.map +1 -1
  145. package/dist/tui/tui.d.ts +1 -0
  146. package/dist/tui/tui.d.ts.map +1 -1
  147. package/dist/tui/tui.js +9 -0
  148. package/dist/tui/utils.d.ts +1 -5
  149. package/dist/tui/utils.d.ts.map +1 -1
  150. package/dist/tui/utils.js +271 -44
  151. package/dist/utils/binary-output.d.ts +32 -0
  152. package/dist/utils/binary-output.d.ts.map +1 -0
  153. package/dist/utils/binary-output.js +127 -0
  154. package/dist/utils/command-protection.d.ts.map +1 -1
  155. package/dist/utils/command-protection.js +92 -9
  156. package/dist/utils/parsing.d.ts +1 -1
  157. package/dist/utils/parsing.d.ts.map +1 -1
  158. package/package.json +28 -26
  159. package/dist/commands/add-directory/types.d.ts +0 -6
  160. package/dist/commands/add-directory/types.d.ts.map +0 -1
  161. package/dist/commands/add-directory/types.js +0 -1
  162. package/dist/commands/copy/types.d.ts +0 -3
  163. package/dist/commands/copy/types.d.ts.map +0 -1
  164. package/dist/commands/copy/types.js +0 -1
  165. package/dist/commands/review/types.d.ts +0 -12
  166. package/dist/commands/review/types.d.ts.map +0 -1
  167. package/dist/commands/review/types.js +0 -1
  168. package/dist/modes/manager.d.ts +0 -23
  169. package/dist/modes/manager.d.ts.map +0 -1
  170. package/dist/modes/manager.js +0 -77
  171. package/dist/modes/prompts.d.ts +0 -2
  172. package/dist/modes/prompts.d.ts.map +0 -1
  173. package/dist/modes/prompts.js +0 -143
  174. package/dist/tools/code-search.d.ts +0 -41
  175. package/dist/tools/code-search.d.ts.map +0 -1
  176. package/dist/tools/code-search.js +0 -195
  177. package/dist/utils/iterables.d.ts +0 -2
  178. package/dist/utils/iterables.d.ts.map +0 -1
  179. package/dist/utils/iterables.js +0 -6
@@ -1,9 +1,8 @@
1
1
  import { generateRulesFromSession } from "../commands/generate-rules/service.js";
2
2
  import { showModelSelector } from "../commands/model/model-panel.js";
3
3
  import { showReviewPanel } from "../commands/review/review-panel.js";
4
- import { ModeManager } from "../modes/manager.js";
4
+ import { parseSkillsPath } from "../config/index.js";
5
5
  import { processPrompt } from "../prompts/mentions.js";
6
- import { createUserMessage } from "../sessions/manager.js";
7
6
  import { loadSkills } from "../skills/index.js";
8
7
  import { alert, setTerminalTitle, startProgress, stopProgress, } from "../terminal/control.js";
9
8
  import style from "../terminal/style.js";
@@ -51,8 +50,6 @@ export class Repl {
51
50
  allToolExecutions = [];
52
51
  // verbose mode state
53
52
  verboseMode = false;
54
- // mode manager
55
- modeManager;
56
53
  // ProjectConfig - initialized in init()
57
54
  config;
58
55
  /** Creates a new Repl instance, initializing the TUI layout and components. */
@@ -90,7 +87,6 @@ export class Repl {
90
87
  this.isInitialized = false;
91
88
  this.pendingTools = new Map();
92
89
  this.tools = options.tools;
93
- this.modeManager = new ModeManager();
94
90
  this.notification = new NotificationComponent("", { r: 52, g: 53, b: 65 }, style.yellow, 1, () => this.tui.requestRender());
95
91
  }
96
92
  /**
@@ -103,7 +99,9 @@ export class Repl {
103
99
  return;
104
100
  }
105
101
  // Setup autocomplete for file paths, slash commands, and skills
106
- const skills = await loadSkills();
102
+ const appConfig = await this.options.configManager.getConfig();
103
+ const skillPaths = parseSkillsPath(appConfig.skills.path);
104
+ const skills = await loadSkills(skillPaths);
107
105
  const commandsList = await this.options.commands.getCompletions();
108
106
  const autocompleteProvider = new CombinedProvider([
109
107
  new CommandProvider(commandsList),
@@ -124,7 +122,6 @@ export class Repl {
124
122
  projectStatus: await getProjectStatus(),
125
123
  currentContextWindow: 0,
126
124
  contextWindow: modelConfig.contextWindow,
127
- currentMode: this.modeManager.getDisplayName(),
128
125
  });
129
126
  this.tui.onCtrlC = () => {
130
127
  this.handleCtrlC();
@@ -144,16 +141,6 @@ export class Repl {
144
141
  this.tui.onCtrlM = () => {
145
142
  void this.handleCtrlM();
146
143
  };
147
- this.tui.onShiftTab = () => {
148
- this.modeManager.cycleMode();
149
- this.footer.setState({
150
- projectStatus: this.footer.getProjectStatus(),
151
- currentContextWindow: this.options.sessionManager.getLastTurnContextWindow(),
152
- contextWindow: this.options.modelManager.getModelMetadata("repl").contextWindow,
153
- currentMode: this.modeManager.getDisplayName(),
154
- });
155
- this.tui.requestRender();
156
- };
157
144
  // Set callback for session reconstruction (used by /history command)
158
145
  this.tui.onReconstructSession = () => this.rerender();
159
146
  this.tui.addChild(this.welcome);
@@ -212,27 +199,7 @@ export class Repl {
212
199
  }
213
200
  const userPrompt = promptManager.get();
214
201
  const userMsg = promptManager.getUserMessage();
215
- if (!this.modeManager.isNormal()) {
216
- if (this.modeManager.isFirstMessage()) {
217
- const initialPrompt = this.modeManager.getInitialPrompt();
218
- if (initialPrompt) {
219
- const modeMessage = createUserMessage([], initialPrompt);
220
- sessionManager.appendUserMessage(modeMessage);
221
- }
222
- sessionManager.appendUserMessage(userMsg);
223
- this.modeManager.markFirstMessageSent();
224
- }
225
- else {
226
- sessionManager.appendUserMessage(userMsg);
227
- const reminderMessage = this.modeManager.getReminderMessage();
228
- if (reminderMessage) {
229
- sessionManager.setTransientMessages([reminderMessage]);
230
- }
231
- }
232
- }
233
- else {
234
- sessionManager.appendUserMessage(userMsg);
235
- }
202
+ sessionManager.appendUserMessage(userMsg);
236
203
  this.addMessageToChat({ role: "user", content: userPrompt });
237
204
  this.editor.setText("");
238
205
  this.tui.requestRender();
@@ -263,7 +230,6 @@ export class Repl {
263
230
  currentContextWindow: this.options.sessionManager.getLastTurnContextWindow(),
264
231
  contextWindow: this.options.modelManager.getModelMetadata("repl").contextWindow,
265
232
  agentState: state,
266
- currentMode: this.modeManager.getDisplayName(),
267
233
  });
268
234
  const eventType = event.type;
269
235
  switch (eventType) {
@@ -350,7 +316,6 @@ export class Repl {
350
316
  this.pendingTools.clear();
351
317
  this.editor.disableSubmit = false;
352
318
  this.options.sessionManager.clearTransientMessages();
353
- this.options.sessionManager.setMetadata("modeState", this.modeManager.toJson());
354
319
  if (!this.options.noSession) {
355
320
  await this.options.sessionManager.save();
356
321
  }
@@ -360,7 +325,6 @@ export class Repl {
360
325
  projectStatus: ps,
361
326
  currentContextWindow: this.options.sessionManager.getLastTurnContextWindow(),
362
327
  contextWindow: this.options.modelManager.getModelMetadata("repl").contextWindow,
363
- currentMode: this.modeManager.getDisplayName(),
364
328
  });
365
329
  this.tui.requestRender();
366
330
  });
@@ -369,7 +333,6 @@ export class Repl {
369
333
  case "agent-error":
370
334
  logger.error(event, "agent-error");
371
335
  this.options.sessionManager.clearTransientMessages();
372
- this.options.sessionManager.setMetadata("modeState", this.modeManager.toJson());
373
336
  if (!this.options.noSession) {
374
337
  await this.options.sessionManager.save();
375
338
  }
@@ -393,7 +356,15 @@ export class Repl {
393
356
  });
394
357
  this.thinkingBlockComponent = component;
395
358
  this.allThinkingBlocks.push(component);
396
- this.addComponentWithSpacing(component);
359
+ // If a streaming message component already exists (text came before thinking),
360
+ // insert the thinking block BEFORE it to ensure correct visual order
361
+ if (this.streamingComponent) {
362
+ this.chatContainer.insertChildBefore(this.streamingComponent, component);
363
+ this.chatContainer.insertChildBefore(this.streamingComponent, new Spacer(1));
364
+ }
365
+ else {
366
+ this.addComponentWithSpacing(component);
367
+ }
397
368
  this.thinkingBlockComponent.updateContent(event);
398
369
  this.tui.requestRender();
399
370
  break;
@@ -465,10 +436,6 @@ export class Repl {
465
436
  * display.
466
437
  */
467
438
  async rerender() {
468
- const modeState = this.options.sessionManager.getMetadata("modeState");
469
- if (modeState && typeof modeState === "object" && "mode" in modeState) {
470
- this.modeManager.fromJson(modeState);
471
- }
472
439
  // When resuming a session, populate tokenTracker with historical usage
473
440
  // so the footer displays the correct total session usage
474
441
  const totalUsage = this.options.sessionManager.getTotalTokenUsage();
@@ -492,7 +459,6 @@ export class Repl {
492
459
  projectStatus: await getProjectStatus(),
493
460
  currentContextWindow: this.options.sessionManager.getLastTurnContextWindow(),
494
461
  contextWindow: this.options.modelManager.getModelMetadata("repl").contextWindow,
495
- currentMode: this.modeManager.getDisplayName(),
496
462
  });
497
463
  // Reconstruct entire session display from messages
498
464
  this.reconstructSession();
@@ -717,14 +683,12 @@ export class Repl {
717
683
  // Auto-generate rules before starting new session if enabled
718
684
  // Run in background - don't block new session from starting
719
685
  this.maybeGenerateRules().catch((err) => logger.debug({ err }, "Background rule generation failed"));
720
- this.options.sessionManager.setMetadata("modeState", this.modeManager.toJson());
721
686
  if (!this.options.noSession) {
722
687
  await this.options.sessionManager.save();
723
688
  }
724
689
  this.options.sessionManager.create(this.options.modelManager.getModel("repl").modelId);
725
690
  }
726
691
  this.config = await this.options.configManager.getConfig();
727
- this.modeManager.reset();
728
692
  this.options.sessionManager.clearTransientMessages();
729
693
  this.options.tokenTracker.reset();
730
694
  setTerminalTitle(`acai: ${process.cwd()}`);
@@ -739,7 +703,6 @@ export class Repl {
739
703
  projectStatus: this.footer.getProjectStatus(),
740
704
  currentContextWindow: 0,
741
705
  contextWindow: this.options.modelManager.getModelMetadata("repl").contextWindow,
742
- currentMode: this.modeManager.getDisplayName(),
743
706
  });
744
707
  this.tui.requestRender();
745
708
  }
@@ -761,7 +724,6 @@ export class Repl {
761
724
  }
762
725
  this.notification.setMessage("");
763
726
  this.tui.requestRender();
764
- this.options.sessionManager.setMetadata("modeState", this.modeManager.toJson());
765
727
  if (!this.options.noSession) {
766
728
  void this.options.sessionManager.save();
767
729
  }
@@ -787,7 +749,6 @@ export class Repl {
787
749
  }
788
750
  this.notification.setMessage("");
789
751
  this.tui.requestRender();
790
- this.options.sessionManager.setMetadata("modeState", this.modeManager.toJson());
791
752
  if (!this.options.noSession) {
792
753
  void this.options.sessionManager.save();
793
754
  }
@@ -16,7 +16,7 @@ type ResponseMessage = AssistantModelMessage | ToolModelMessage;
16
16
  * Only stores total aggregated usage and last turn's usage
17
17
  * to minimize session file size while maintaining necessary information.
18
18
  */
19
- export type SessionTokenUsage = {
19
+ type SessionTokenUsage = {
20
20
  /** Aggregated total for entire session */
21
21
  total: {
22
22
  inputTokens: number;
@@ -40,7 +40,7 @@ export type SessionTokenUsage = {
40
40
  * @deprecated Use SessionTokenUsage instead. Kept for backward compatibility
41
41
  * with older session files that may have the old format.
42
42
  */
43
- export type TokenUsageTurn = {
43
+ type TokenUsageTurn = {
44
44
  stepIndex: number;
45
45
  inputTokens: number;
46
46
  outputTokens: number;
@@ -59,7 +59,7 @@ export type TokenUsageTurn = {
59
59
  timestamp: number;
60
60
  estimatedCost: number;
61
61
  };
62
- export type SavedMessageHistory = {
62
+ type SavedMessageHistory = {
63
63
  project: string;
64
64
  sessionId: string;
65
65
  modelId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../source/sessions/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../source/sessions/manager.ts"],"names":[],"mappings":"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"}
@@ -177,7 +177,7 @@ export class SessionManager extends EventEmitter {
177
177
  }
178
178
  get() {
179
179
  const history = [...this.history].filter(this.validMessage);
180
- if (this.transientMessages.length > 0) {
180
+ if (this.transientMessages.length > 0 && history.length > 0) {
181
181
  const lastIndex = history.length - 1;
182
182
  return [
183
183
  ...history.slice(0, lastIndex),
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Tracks which skills have been activated in the current session.
3
+ * Used to avoid re-injecting the same skill instructions multiple times.
4
+ */
5
+ export declare class ActivatedSkillsTracker {
6
+ private activatedSkills;
7
+ has(skillName: string): boolean;
8
+ add(skillName: string): void;
9
+ reset(): void;
10
+ }
11
+ //# sourceMappingURL=activated-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activated-tracker.d.ts","sourceRoot":"","sources":["../../source/skills/activated-tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,eAAe,CAA0B;IAEjD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI5B,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Tracks which skills have been activated in the current session.
3
+ * Used to avoid re-injecting the same skill instructions multiple times.
4
+ */
5
+ export class ActivatedSkillsTracker {
6
+ activatedSkills = new Set();
7
+ has(skillName) {
8
+ return this.activatedSkills.has(skillName);
9
+ }
10
+ add(skillName) {
11
+ this.activatedSkills.add(skillName);
12
+ }
13
+ reset() {
14
+ this.activatedSkills.clear();
15
+ }
16
+ }
@@ -10,7 +10,7 @@ export interface Skill {
10
10
  arguments?: string;
11
11
  examples?: string[];
12
12
  }
13
- export interface LoadSkillsFromDirOptions {
13
+ interface LoadSkillsFromDirOptions {
14
14
  dir: string;
15
15
  source: string;
16
16
  useColonPath?: boolean;
@@ -23,6 +23,7 @@ export declare class Skills {
23
23
  getUserInvocable(): Skill[];
24
24
  getModelInvocable(): Skill[];
25
25
  }
26
- export declare function loadSkills(): Promise<Skills>;
26
+ export declare function loadSkills(additionalSkillPaths?: string[]): Promise<Skills>;
27
27
  export declare function formatSkillsForPrompt(skills: Skill[]): string;
28
+ export {};
28
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/skills/index.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,sBAAsB,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAqRD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,EACjC,MAAM,SAAK,GACV,OAAO,CAAC,KAAK,EAAE,CAAC,CASlB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAU;gBAEZ,MAAM,EAAE,KAAK,EAAE;IAI3B,MAAM,IAAI,KAAK,EAAE;IAIjB,gBAAgB,IAAI,KAAK,EAAE;IAI3B,iBAAiB,IAAI,KAAK,EAAE;CAG7B;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAsFlD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAgC7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/skills/index.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,sBAAsB,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,UAAU,wBAAwB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAqRD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,EACjC,MAAM,SAAK,GACV,OAAO,CAAC,KAAK,EAAE,CAAC,CASlB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAU;gBAEZ,MAAM,EAAE,KAAK,EAAE;IAI3B,MAAM,IAAI,KAAK,EAAE;IAIjB,gBAAgB,IAAI,KAAK,EAAE;IAI3B,iBAAiB,IAAI,KAAK,EAAE;CAG7B;AAED,wBAAsB,UAAU,CAC9B,oBAAoB,GAAE,MAAM,EAAO,GAClC,OAAO,CAAC,MAAM,CAAC,CAkGjB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAgC7D"}
@@ -216,7 +216,7 @@ export class Skills {
216
216
  return this.skills.filter((s) => !s.disableModelInvocation);
217
217
  }
218
218
  }
219
- export async function loadSkills() {
219
+ export async function loadSkills(additionalSkillPaths = []) {
220
220
  const skillMap = new Map();
221
221
  // Codex: recursive, simple directory name
222
222
  const codexUserDir = join(homedir(), ".codex", "skills");
@@ -262,6 +262,12 @@ export async function loadSkills() {
262
262
  for (const skill of await loadSkillsFromDirInternal(agentsProjectSkillsDir, "project", "recursive", true)) {
263
263
  skillMap.set(skill.name, skill);
264
264
  }
265
+ // Additional skill paths from config (skills.path)
266
+ for (const skillPath of additionalSkillPaths) {
267
+ for (const skill of await loadSkillsFromDirInternal(skillPath, "config", "recursive", true)) {
268
+ skillMap.set(skill.name, skill);
269
+ }
270
+ }
265
271
  return new Skills(Array.from(skillMap.values()));
266
272
  }
267
273
  export function formatSkillsForPrompt(skills) {
@@ -1,4 +1,4 @@
1
- export interface Subagent {
1
+ interface Subagent {
2
2
  name: string;
3
3
  description: string;
4
4
  model?: string;
@@ -12,4 +12,5 @@ export declare function loadSubagents(): Promise<Subagent[]>;
12
12
  export declare function getSubagent(name: string): Promise<Subagent | undefined>;
13
13
  export declare function formatSubagentsForDescription(subagents: Subagent[]): string;
14
14
  export declare function formatSubagentsForPrompt(subagents: Subagent[]): string;
15
+ export {};
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/subagents/index.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkND,wBAAsB,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAgBzD;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAG7E;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAa3E;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CA6CtE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/subagents/index.ts"],"names":[],"mappings":"AAeA,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkND,wBAAsB,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAgBzD;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAG7E;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAa3E;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CA6CtE"}
@@ -59,5 +59,5 @@ export declare function colorizeLines(input: string[]): string[];
59
59
  * Credit: Matheus Sampaio https://github.com/matheussampaio
60
60
  */
61
61
  export declare function hyperlink(url: string, text: string): string;
62
- export type { CharName, HorizontalAlignment, VerticalAlignment, TableInstanceOptions, TableConstructorOptions, CellOptions, Cell, };
62
+ export type { Cell, CellOptions, CharName, HorizontalAlignment, TableConstructorOptions, TableInstanceOptions, VerticalAlignment, };
63
63
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../source/terminal/table/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../source/terminal/table/utils.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { ansiStyles } from "./ansi-styles.js";
2
2
  import stringWidth from "./string-width.js";
3
3
  import stripAnsi from "./strip-ansi.js";
4
- const ESCAPES = new Set(["\\u001B", "\\u009B"]);
4
+ const ESCAPES = new Set(["\u001B", "\u009B"]);
5
5
  const END_CODE = 39;
6
- const ANSI_ESCAPE_BELL = "\\u0007";
6
+ const ANSI_ESCAPE_BELL = "\u0007";
7
7
  const ANSI_CSI = "[";
8
8
  const ANSI_OSC = "]";
9
9
  const ANSI_SGR_TERMINATOR = "m";
@@ -53,7 +53,7 @@ ${await environmentInfo(options.workspace.primaryDir, options.workspace.allowedD
53
53
  const effectiveTimeout = timeout ?? defaultTimeout;
54
54
  try {
55
55
  const result = await subagent.execute({
56
- model: isSupportedModel(model) ? model : "opencode:minimax-m2.5-free",
56
+ model: isSupportedModel(model) ? model : "opencode:minimax-m2.5",
57
57
  system: systemPrompt,
58
58
  prompt,
59
59
  abortSignal,
@@ -0,0 +1,62 @@
1
+ import { z } from "zod";
2
+ import type { WorkspaceContext } from "../index.ts";
3
+ import type { ToolExecutionOptions } from "./types.ts";
4
+ export declare const ApplyPatchTool: {
5
+ name: "ApplyPatch";
6
+ };
7
+ declare const inputSchema: z.ZodObject<{
8
+ patchText: z.ZodString;
9
+ }, z.core.$strip>;
10
+ type ApplyPatchInputSchema = z.infer<typeof inputSchema>;
11
+ export type Hunk = {
12
+ type: "add";
13
+ path: string;
14
+ contents: string;
15
+ } | {
16
+ type: "delete";
17
+ path: string;
18
+ } | {
19
+ type: "update";
20
+ path: string;
21
+ movePath?: string;
22
+ chunks: UpdateFileChunk[];
23
+ };
24
+ export interface UpdateFileChunk {
25
+ oldLines: string[];
26
+ newLines: string[];
27
+ changeContext?: string;
28
+ isEndOfFile?: boolean;
29
+ }
30
+ export type ApplyPatchFileChange = {
31
+ type: "add";
32
+ path: string;
33
+ content: string;
34
+ } | {
35
+ type: "delete";
36
+ path: string;
37
+ content?: string;
38
+ } | {
39
+ type: "update";
40
+ path: string;
41
+ unifiedDiff: string;
42
+ movePath?: string;
43
+ newContent: string;
44
+ };
45
+ export interface ParsedApplyPatch {
46
+ hunks: Hunk[];
47
+ }
48
+ export declare function parsePatch(patchText: string): ParsedApplyPatch;
49
+ export declare const createApplyPatchTool: (options: {
50
+ workspace: WorkspaceContext;
51
+ }) => Promise<{
52
+ toolDef: {
53
+ description: string;
54
+ inputSchema: z.ZodObject<{
55
+ patchText: z.ZodString;
56
+ }, z.core.$strip>;
57
+ };
58
+ display({ patchText }: ApplyPatchInputSchema): string;
59
+ execute({ patchText }: ApplyPatchInputSchema, { abortSignal }: ToolExecutionOptions): Promise<string>;
60
+ }>;
61
+ export {};
62
+ //# sourceMappingURL=apply-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-patch.d.ts","sourceRoot":"","sources":["../../source/tools/apply-patch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAEF,QAAA,MAAM,WAAW;;iBAMf,CAAC;AAEH,KAAK,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAGzD,MAAM,MAAM,IAAI,GACZ;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEN,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAClD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AA+GD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAsD9D;AAqMD,eAAO,MAAM,oBAAoB,GAAU,SAAS;IAClD,SAAS,EAAE,gBAAgB,CAAC;CAC7B;;;;;;;2BAwB0B,qBAAqB;2BAU3B,qBAAqB,mBACnB,oBAAoB,GACpC,OAAO,CAAC,MAAM,CAAC;EAiFrB,CAAC"}