cmdr-agent 1.2.2 → 2.0.0

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 (121) hide show
  1. package/README.md +19 -0
  2. package/dist/bin/cmdr.js +3 -1
  3. package/dist/bin/cmdr.js.map +1 -1
  4. package/dist/src/agents/executor.d.ts +32 -0
  5. package/dist/src/agents/executor.d.ts.map +1 -0
  6. package/dist/src/agents/executor.js +50 -0
  7. package/dist/src/agents/executor.js.map +1 -0
  8. package/dist/src/agents/index.d.ts +7 -0
  9. package/dist/src/agents/index.d.ts.map +1 -0
  10. package/dist/src/agents/index.js +7 -0
  11. package/dist/src/agents/index.js.map +1 -0
  12. package/dist/src/agents/registry.d.ts +36 -0
  13. package/dist/src/agents/registry.d.ts.map +1 -0
  14. package/dist/src/agents/registry.js +168 -0
  15. package/dist/src/agents/registry.js.map +1 -0
  16. package/dist/src/agents/subagent-tool.d.ts +27 -0
  17. package/dist/src/agents/subagent-tool.d.ts.map +1 -0
  18. package/dist/src/agents/subagent-tool.js +36 -0
  19. package/dist/src/agents/subagent-tool.js.map +1 -0
  20. package/dist/src/cli/args.d.ts +2 -0
  21. package/dist/src/cli/args.d.ts.map +1 -1
  22. package/dist/src/cli/args.js +8 -0
  23. package/dist/src/cli/args.js.map +1 -1
  24. package/dist/src/cli/commands.d.ts.map +1 -1
  25. package/dist/src/cli/commands.js +92 -4
  26. package/dist/src/cli/commands.js.map +1 -1
  27. package/dist/src/cli/ink/App.d.ts +4 -0
  28. package/dist/src/cli/ink/App.d.ts.map +1 -1
  29. package/dist/src/cli/ink/App.js +164 -20
  30. package/dist/src/cli/ink/App.js.map +1 -1
  31. package/dist/src/cli/ink/StatusBar.d.ts +17 -0
  32. package/dist/src/cli/ink/StatusBar.d.ts.map +1 -0
  33. package/dist/src/cli/ink/StatusBar.js +32 -0
  34. package/dist/src/cli/ink/StatusBar.js.map +1 -0
  35. package/dist/src/cli/repl.d.ts +2 -0
  36. package/dist/src/cli/repl.d.ts.map +1 -1
  37. package/dist/src/cli/repl.js +117 -4
  38. package/dist/src/cli/repl.js.map +1 -1
  39. package/dist/src/cli/theme.d.ts +42 -22
  40. package/dist/src/cli/theme.d.ts.map +1 -1
  41. package/dist/src/cli/theme.js +25 -1
  42. package/dist/src/cli/theme.js.map +1 -1
  43. package/dist/src/cli/themes.d.ts +57 -0
  44. package/dist/src/cli/themes.d.ts.map +1 -0
  45. package/dist/src/cli/themes.js +98 -0
  46. package/dist/src/cli/themes.js.map +1 -0
  47. package/dist/src/commands/index.d.ts +3 -0
  48. package/dist/src/commands/index.d.ts.map +1 -0
  49. package/dist/src/commands/index.js +2 -0
  50. package/dist/src/commands/index.js.map +1 -0
  51. package/dist/src/commands/loader.d.ts +35 -0
  52. package/dist/src/commands/loader.d.ts.map +1 -0
  53. package/dist/src/commands/loader.js +134 -0
  54. package/dist/src/commands/loader.js.map +1 -0
  55. package/dist/src/config/config-loader.d.ts.map +1 -1
  56. package/dist/src/config/config-loader.js +2 -0
  57. package/dist/src/config/config-loader.js.map +1 -1
  58. package/dist/src/config/defaults.d.ts.map +1 -1
  59. package/dist/src/config/defaults.js +1 -0
  60. package/dist/src/config/defaults.js.map +1 -1
  61. package/dist/src/config/schema.d.ts +3 -0
  62. package/dist/src/config/schema.d.ts.map +1 -1
  63. package/dist/src/config/schema.js +1 -0
  64. package/dist/src/config/schema.js.map +1 -1
  65. package/dist/src/core/agent-runner.d.ts.map +1 -1
  66. package/dist/src/core/agent-runner.js +39 -5
  67. package/dist/src/core/agent-runner.js.map +1 -1
  68. package/dist/src/core/agent.d.ts +1 -1
  69. package/dist/src/core/agent.d.ts.map +1 -1
  70. package/dist/src/core/agent.js +4 -3
  71. package/dist/src/core/agent.js.map +1 -1
  72. package/dist/src/core/intent.d.ts +2 -0
  73. package/dist/src/core/intent.d.ts.map +1 -1
  74. package/dist/src/core/intent.js +12 -0
  75. package/dist/src/core/intent.js.map +1 -1
  76. package/dist/src/core/presets.d.ts.map +1 -1
  77. package/dist/src/core/presets.js +49 -15
  78. package/dist/src/core/presets.js.map +1 -1
  79. package/dist/src/core/types.d.ts +5 -0
  80. package/dist/src/core/types.d.ts.map +1 -1
  81. package/dist/src/index.d.ts +3 -2
  82. package/dist/src/index.d.ts.map +1 -1
  83. package/dist/src/index.js +2 -2
  84. package/dist/src/index.js.map +1 -1
  85. package/dist/src/llm/model-registry.d.ts +25 -0
  86. package/dist/src/llm/model-registry.d.ts.map +1 -1
  87. package/dist/src/llm/model-registry.js +223 -22
  88. package/dist/src/llm/model-registry.js.map +1 -1
  89. package/dist/src/llm/model-watcher.d.ts +26 -0
  90. package/dist/src/llm/model-watcher.d.ts.map +1 -0
  91. package/dist/src/llm/model-watcher.js +130 -0
  92. package/dist/src/llm/model-watcher.js.map +1 -0
  93. package/dist/src/llm/ollama.d.ts +13 -1
  94. package/dist/src/llm/ollama.d.ts.map +1 -1
  95. package/dist/src/llm/ollama.js +309 -93
  96. package/dist/src/llm/ollama.js.map +1 -1
  97. package/dist/src/session/compaction.js +4 -0
  98. package/dist/src/session/compaction.js.map +1 -1
  99. package/dist/src/session/project-context.d.ts.map +1 -1
  100. package/dist/src/session/project-context.js +54 -4
  101. package/dist/src/session/project-context.js.map +1 -1
  102. package/dist/src/session/prompt-builder.d.ts +28 -1
  103. package/dist/src/session/prompt-builder.d.ts.map +1 -1
  104. package/dist/src/session/prompt-builder.js +97 -23
  105. package/dist/src/session/prompt-builder.js.map +1 -1
  106. package/dist/src/session/session-manager.d.ts +10 -3
  107. package/dist/src/session/session-manager.d.ts.map +1 -1
  108. package/dist/src/session/session-manager.js +53 -16
  109. package/dist/src/session/session-manager.js.map +1 -1
  110. package/dist/src/session/session-persistence.d.ts +12 -0
  111. package/dist/src/session/session-persistence.d.ts.map +1 -1
  112. package/dist/src/session/session-persistence.js +94 -4
  113. package/dist/src/session/session-persistence.js.map +1 -1
  114. package/dist/src/tools/built-in/bash-security.d.ts +13 -0
  115. package/dist/src/tools/built-in/bash-security.d.ts.map +1 -0
  116. package/dist/src/tools/built-in/bash-security.js +53 -0
  117. package/dist/src/tools/built-in/bash-security.js.map +1 -0
  118. package/dist/src/tools/built-in/bash.d.ts.map +1 -1
  119. package/dist/src/tools/built-in/bash.js +7 -1
  120. package/dist/src/tools/built-in/bash.js.map +1 -1
  121. package/package.json +2 -1
@@ -5,23 +5,53 @@
5
5
  * Falls back to prompt-based tool injection for models without tool support.
6
6
  */
7
7
  import { getDefaultContextLength } from './model-registry.js';
8
- // ---------------------------------------------------------------------------
9
- // Models known to support native tool calling via Ollama
10
- // ---------------------------------------------------------------------------
11
- const TOOL_CAPABLE_FAMILIES = new Set([
12
- 'qwen2', 'qwen2.5', 'qwen3', 'qwen3moe',
13
- 'llama3.1', 'llama3.2', 'llama3.3', 'llama4',
14
- 'mistral', 'mistral-nemo', 'command-r', 'firefunction',
15
- 'granite', 'nemotron', 'hermes3',
16
- 'minimax',
17
- ]);
8
+ const MODEL_FAMILY_CONFIGS = {
9
+ qwen2: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: true, jsonToolFormat: true },
10
+ 'qwen2.5': { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: true, jsonToolFormat: true },
11
+ qwen3: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: true, jsonToolFormat: true },
12
+ qwen3moe: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: true, jsonToolFormat: true },
13
+ gemma4: { supportsNativeTools: false, needsPromptInjection: true, thinkingMode: 'disabled', xmlToolFormat: false, jsonToolFormat: true },
14
+ 'llama3.1': { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
15
+ 'llama3.2': { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
16
+ 'llama3.3': { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
17
+ llama4: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
18
+ mistral: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
19
+ 'mistral-nemo': { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
20
+ 'command-r': { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
21
+ minimax: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
22
+ deepseek: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
23
+ dolphin: { supportsNativeTools: false, needsPromptInjection: true, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
24
+ phi: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
25
+ gemma: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
26
+ granite: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
27
+ nemotron: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
28
+ hermes3: { supportsNativeTools: true, needsPromptInjection: false, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
29
+ yi: { supportsNativeTools: false, needsPromptInjection: true, thinkingMode: 'auto', xmlToolFormat: false, jsonToolFormat: true },
30
+ default: { supportsNativeTools: false, needsPromptInjection: true, thinkingMode: 'auto', xmlToolFormat: true, jsonToolFormat: true },
31
+ };
32
+ /** Resolve the family config for a detected model family string. */
33
+ function getFamilyConfig(family) {
34
+ // Exact match first
35
+ if (MODEL_FAMILY_CONFIGS[family])
36
+ return MODEL_FAMILY_CONFIGS[family];
37
+ // Prefix match (e.g. 'qwen3-coder' matches 'qwen3')
38
+ for (const key of Object.keys(MODEL_FAMILY_CONFIGS)) {
39
+ if (key !== 'default' && family.startsWith(key))
40
+ return MODEL_FAMILY_CONFIGS[key];
41
+ }
42
+ return MODEL_FAMILY_CONFIGS.default;
43
+ }
44
+ /** Strip thinking channel markers from model output. */
45
+ function stripThinkingMarkers(text) {
46
+ return text.replace(/<\|channel>thought[\s\S]*?<channel\|>/g, '').replace(/<channel\|>/g, '');
47
+ }
18
48
  // ---------------------------------------------------------------------------
19
49
  // OllamaAdapter
20
50
  // ---------------------------------------------------------------------------
21
51
  export class OllamaAdapter {
22
52
  name = 'ollama';
23
53
  baseUrl;
24
- toolCapabilityCache = new Map();
54
+ familyCache = new Map();
25
55
  constructor(baseUrl = 'http://localhost:11434') {
26
56
  this.baseUrl = baseUrl.replace(/\/$/, '');
27
57
  }
@@ -43,9 +73,9 @@ export class OllamaAdapter {
43
73
  const data = await res.json();
44
74
  return data.models.map(m => m.name);
45
75
  }
46
- /** Check if a specific model supports native tool calling. */
47
- async supportsTools(model) {
48
- const cached = this.toolCapabilityCache.get(model);
76
+ /** Detect the model family via Ollama /api/show (cached). */
77
+ async getModelFamily(model) {
78
+ const cached = this.familyCache.get(model);
49
79
  if (cached !== undefined)
50
80
  return cached;
51
81
  try {
@@ -55,35 +85,37 @@ export class OllamaAdapter {
55
85
  body: JSON.stringify({ name: model }),
56
86
  });
57
87
  if (!res.ok) {
58
- this.toolCapabilityCache.set(model, false);
59
- return false;
88
+ this.familyCache.set(model, 'unknown');
89
+ return 'unknown';
60
90
  }
61
91
  const info = await res.json();
62
- const family = info.details?.family?.toLowerCase() ?? '';
63
- const supports = TOOL_CAPABLE_FAMILIES.has(family) ||
64
- family.includes('qwen') ||
65
- family.includes('llama3') ||
66
- family.includes('llama4') ||
67
- family.includes('mistral') ||
68
- family.includes('gemma');
69
- this.toolCapabilityCache.set(model, supports);
70
- return supports;
92
+ const family = info.details?.family?.toLowerCase() ?? 'unknown';
93
+ this.familyCache.set(model, family);
94
+ return family;
71
95
  }
72
96
  catch {
73
- this.toolCapabilityCache.set(model, false);
74
- return false;
97
+ this.familyCache.set(model, 'unknown');
98
+ return 'unknown';
75
99
  }
76
100
  }
101
+ /** Check if a specific model supports native tool calling. */
102
+ async supportsTools(model) {
103
+ const family = await this.getModelFamily(model);
104
+ return getFamilyConfig(family).supportsNativeTools;
105
+ }
77
106
  // -----------------------------------------------------------------------
78
107
  // LLMAdapter.chat
79
108
  // -----------------------------------------------------------------------
80
109
  async chat(messages, options) {
81
110
  const hasTools = options.tools && options.tools.length > 0;
82
- const supportsNativeTools = hasTools ? await this.supportsTools(options.model) : false;
111
+ const family = await this.getModelFamily(options.model);
112
+ const config = getFamilyConfig(family);
113
+ const supportsNativeTools = hasTools ? config.supportsNativeTools : false;
114
+ const needsInjection = hasTools ? (!supportsNativeTools || config.needsPromptInjection) : false;
83
115
  const contextLength = getDefaultContextLength(options.model);
84
116
  const body = {
85
117
  model: options.model,
86
- messages: this.convertMessages(messages, options.systemPrompt, !supportsNativeTools && hasTools ? options.tools : undefined),
118
+ messages: this.convertMessages(messages, options.systemPrompt, needsInjection ? options.tools : undefined),
87
119
  stream: false,
88
120
  options: {
89
121
  num_ctx: contextLength,
@@ -94,6 +126,10 @@ export class OllamaAdapter {
94
126
  if (supportsNativeTools && options.tools) {
95
127
  body.tools = options.tools.map(t => this.convertToolDef(t));
96
128
  }
129
+ // Disable thinking mode for models that eat output with it
130
+ if (config.thinkingMode === 'disabled') {
131
+ body.think = false;
132
+ }
97
133
  const res = await fetch(`${this.baseUrl}/api/chat`, {
98
134
  method: 'POST',
99
135
  headers: { 'Content-Type': 'application/json' },
@@ -105,30 +141,10 @@ export class OllamaAdapter {
105
141
  throw new Error(`Ollama /api/chat failed (${res.status}): ${text}`);
106
142
  }
107
143
  const data = await res.json();
108
- // Parse response - handle both native tool calls and prompt-based tool calls
109
- const content = [];
110
- if (data.message.tool_calls && data.message.tool_calls.length > 0) {
111
- // Native tool calling response
112
- if (data.message.content) {
113
- content.push({ type: 'text', text: data.message.content });
114
- }
115
- for (const tc of data.message.tool_calls) {
116
- content.push({
117
- type: 'tool_use',
118
- id: `tool_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
119
- name: tc.function.name,
120
- input: tc.function.arguments,
121
- });
122
- }
123
- }
124
- else if (hasTools && !supportsNativeTools && data.message.content) {
125
- // Parse prompt-based tool calls from text
126
- const parsed = this.parsePromptBasedToolCalls(data.message.content);
127
- content.push(...parsed);
128
- }
129
- else {
130
- content.push({ type: 'text', text: data.message.content || '' });
131
- }
144
+ // Strip thinking channel markers from content
145
+ const rawContent = stripThinkingMarkers(data.message.content || '');
146
+ // Three-stage tool resolution waterfall (runs for ALL models)
147
+ const content = this.resolveToolCalls(data.message.tool_calls ?? null, rawContent, config, hasTools ?? false);
132
148
  const usage = {
133
149
  input_tokens: data.prompt_eval_count ?? 0,
134
150
  output_tokens: data.eval_count ?? 0,
@@ -147,11 +163,14 @@ export class OllamaAdapter {
147
163
  // -----------------------------------------------------------------------
148
164
  async *stream(messages, options) {
149
165
  const hasTools = options.tools && options.tools.length > 0;
150
- const supportsNativeTools = hasTools ? await this.supportsTools(options.model) : false;
166
+ const family = await this.getModelFamily(options.model);
167
+ const config = getFamilyConfig(family);
168
+ const supportsNativeTools = hasTools ? config.supportsNativeTools : false;
169
+ const needsInjection = hasTools ? (!supportsNativeTools || config.needsPromptInjection) : false;
151
170
  const contextLength = getDefaultContextLength(options.model);
152
171
  const body = {
153
172
  model: options.model,
154
- messages: this.convertMessages(messages, options.systemPrompt, !supportsNativeTools && hasTools ? options.tools : undefined),
173
+ messages: this.convertMessages(messages, options.systemPrompt, needsInjection ? options.tools : undefined),
155
174
  stream: true,
156
175
  options: {
157
176
  num_ctx: contextLength,
@@ -162,6 +181,10 @@ export class OllamaAdapter {
162
181
  if (supportsNativeTools && options.tools) {
163
182
  body.tools = options.tools.map(t => this.convertToolDef(t));
164
183
  }
184
+ // Disable thinking mode for models that eat output with it
185
+ if (config.thinkingMode === 'disabled') {
186
+ body.think = false;
187
+ }
165
188
  const res = await fetch(`${this.baseUrl}/api/chat`, {
166
189
  method: 'POST',
167
190
  headers: { 'Content-Type': 'application/json' },
@@ -184,6 +207,7 @@ export class OllamaAdapter {
184
207
  let totalInputTokens = 0;
185
208
  let totalOutputTokens = 0;
186
209
  let model = options.model;
210
+ let nativeToolCallsEmitted = false;
187
211
  try {
188
212
  while (true) {
189
213
  const { done, value } = await reader.read();
@@ -204,10 +228,15 @@ export class OllamaAdapter {
204
228
  }
205
229
  model = chunk.model;
206
230
  if (chunk.message?.content) {
207
- fullText += chunk.message.content;
208
- yield { type: 'text', data: chunk.message.content };
231
+ // Strip thinking channel markers from streamed content
232
+ const cleaned = stripThinkingMarkers(chunk.message.content);
233
+ if (cleaned) {
234
+ fullText += cleaned;
235
+ yield { type: 'text', data: cleaned };
236
+ }
209
237
  }
210
238
  if (chunk.message?.tool_calls) {
239
+ nativeToolCallsEmitted = true;
211
240
  for (const tc of chunk.message.tool_calls) {
212
241
  yield {
213
242
  type: 'tool_use',
@@ -230,12 +259,14 @@ export class OllamaAdapter {
230
259
  finally {
231
260
  reader.releaseLock();
232
261
  }
233
- // Check for prompt-based tool calls if model doesn't support native tools
234
- if (hasTools && !supportsNativeTools && fullText) {
235
- const parsed = this.parsePromptBasedToolCalls(fullText);
236
- const toolBlocks = parsed.filter(b => b.type === 'tool_use');
237
- for (const block of toolBlocks) {
238
- yield { type: 'tool_use', data: block };
262
+ // Fallback: three-stage waterfall for text-based tool calls if no native calls were emitted
263
+ if (hasTools && fullText && !nativeToolCallsEmitted) {
264
+ const resolved = this.resolveToolCalls(null, fullText, config, true);
265
+ const toolBlocks = resolved.filter(b => b.type === 'tool_use');
266
+ if (toolBlocks.length > 0) {
267
+ for (const block of toolBlocks) {
268
+ yield { type: 'tool_use', data: block };
269
+ }
239
270
  }
240
271
  }
241
272
  const finalContent = fullText
@@ -330,52 +361,237 @@ export class OllamaAdapter {
330
361
  {"name": "tool_name", "arguments": {"arg1": "value1"}}
331
362
  \`\`\`
332
363
 
364
+ To call MULTIPLE tools, use one JSON object per line inside a single \`\`\`tool_call block:
365
+
366
+ \`\`\`tool_call
367
+ {"name": "tool1", "arguments": {"arg": "val"}}
368
+ {"name": "tool2", "arguments": {"arg": "val"}}
369
+ \`\`\`
370
+
333
371
  Available tools:
334
372
  ${toolDescs}
335
373
 
374
+ IMPORTANT: Use ONLY the \`\`\`tool_call JSON format shown above. Do NOT use XML, <invoke>, <function>, or any other format for tool calls.
336
375
  Always use tools when you need to interact with the filesystem or run commands.
337
376
  After receiving a tool result, continue your analysis.`;
338
377
  }
339
- parsePromptBasedToolCalls(text) {
378
+ /**
379
+ * Three-stage tool resolution waterfall.
380
+ * Runs for ALL models regardless of native tool support.
381
+ */
382
+ resolveToolCalls(nativeToolCalls, textContent, config, hasTools) {
383
+ // Stage 1: Native tool_calls from Ollama response
384
+ if (nativeToolCalls && nativeToolCalls.length > 0) {
385
+ const content = [];
386
+ if (textContent) {
387
+ content.push({ type: 'text', text: textContent });
388
+ }
389
+ for (const tc of nativeToolCalls) {
390
+ content.push({
391
+ type: 'tool_use',
392
+ id: `tool_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
393
+ name: tc.function.name,
394
+ input: tc.function.arguments,
395
+ });
396
+ }
397
+ return content;
398
+ }
399
+ // Stage 2+3: Parse text-based tool calls only if we had tools available
400
+ if (hasTools && textContent) {
401
+ const parsed = this.parsePromptBasedToolCalls(textContent, config);
402
+ if (parsed.length > 0)
403
+ return parsed;
404
+ }
405
+ // No tool calls — return as pure text
406
+ if (textContent) {
407
+ return [{ type: 'text', text: textContent }];
408
+ }
409
+ return [];
410
+ }
411
+ parsePromptBasedToolCalls(text, config) {
340
412
  const content = [];
341
- const toolCallRegex = /```tool_call\s*\n([\s\S]*?)\n```/g;
342
- let lastIndex = 0;
343
- let match;
344
- while ((match = toolCallRegex.exec(text)) !== null) {
345
- // Add text before the tool call
346
- if (match.index > lastIndex) {
347
- const before = text.slice(lastIndex, match.index).trim();
348
- if (before)
349
- content.push({ type: 'text', text: before });
413
+ const checkJson = config?.jsonToolFormat !== false; // default true
414
+ const checkXml = config?.xmlToolFormat !== false; // default true
415
+ // Strategy 1: ```tool_call\n{JSON}\n``` format (supports multiple JSON objects per block)
416
+ if (checkJson) {
417
+ const toolCallRegex = /```tool_call\s*\n([\s\S]*?)\n```/g;
418
+ let lastIndex = 0;
419
+ let match;
420
+ let foundToolCalls = false;
421
+ while ((match = toolCallRegex.exec(text)) !== null) {
422
+ foundToolCalls = true;
423
+ if (match.index > lastIndex) {
424
+ const before = text.slice(lastIndex, match.index).trim();
425
+ if (before)
426
+ content.push({ type: 'text', text: before });
427
+ }
428
+ const blockContent = match[1].trim();
429
+ const parsedObjects = this.parseMultipleJsonObjects(blockContent);
430
+ if (parsedObjects.length > 0) {
431
+ for (const parsed of parsedObjects) {
432
+ if (parsed.name && parsed.arguments) {
433
+ content.push({
434
+ type: 'tool_use',
435
+ id: `tool_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
436
+ name: parsed.name,
437
+ input: parsed.arguments,
438
+ });
439
+ }
440
+ }
441
+ }
442
+ else {
443
+ content.push({ type: 'text', text: match[0] });
444
+ }
445
+ lastIndex = match.index + match[0].length;
350
446
  }
351
- try {
352
- const parsed = JSON.parse(match[1]);
353
- if (parsed.name && parsed.arguments) {
354
- content.push({
355
- type: 'tool_use',
356
- id: `tool_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
357
- name: parsed.name,
358
- input: parsed.arguments,
359
- });
447
+ if (foundToolCalls) {
448
+ if (lastIndex < text.length) {
449
+ const remainder = text.slice(lastIndex).trim();
450
+ if (remainder)
451
+ content.push({ type: 'text', text: remainder });
360
452
  }
453
+ return content;
361
454
  }
362
- catch {
363
- // Malformed JSON keep as text
364
- content.push({ type: 'text', text: match[0] });
455
+ }
456
+ // Strategy 2: XML <function=name><parameter=key>value</parameter></function> format
457
+ if (checkXml) {
458
+ const xmlToolRegex = /<function=(\w+)>([\s\S]*?)<\/function>/g;
459
+ const paramRegex = /<parameter=(\w+)>([\s\S]*?)<\/parameter>/g;
460
+ let lastIndex = 0;
461
+ let match;
462
+ let foundToolCalls = false;
463
+ while ((match = xmlToolRegex.exec(text)) !== null) {
464
+ foundToolCalls = true;
465
+ if (match.index > lastIndex) {
466
+ const before = text.slice(lastIndex, match.index).trim();
467
+ if (before)
468
+ content.push({ type: 'text', text: before });
469
+ }
470
+ const toolName = match[1];
471
+ const paramsBlock = match[2];
472
+ const input = {};
473
+ let paramMatch;
474
+ while ((paramMatch = paramRegex.exec(paramsBlock)) !== null) {
475
+ input[paramMatch[1]] = paramMatch[2].trim();
476
+ }
477
+ paramRegex.lastIndex = 0; // Reset for next tool call
478
+ content.push({
479
+ type: 'tool_use',
480
+ id: `tool_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
481
+ name: toolName,
482
+ input,
483
+ });
484
+ lastIndex = match.index + match[0].length;
485
+ }
486
+ if (foundToolCalls) {
487
+ if (lastIndex < text.length) {
488
+ const remainder = text.slice(lastIndex).trim();
489
+ if (remainder)
490
+ content.push({ type: 'text', text: remainder });
491
+ }
492
+ return content;
493
+ }
494
+ }
495
+ // Strategy 3: <invoke name="..."><parameter name="...">value</parameter></invoke> format
496
+ // Handles minimax <minimax:tool_call> and similar XML tool-call dialects
497
+ const invokeRegex = /<invoke\s+name="([^"]+)">((?:.|\n)*?)<\/invoke>/g;
498
+ const invokeParamRegex = /<parameter\s+name="([^"]+)">((?:.|\n)*?)<\/parameter>/g;
499
+ let invokeLastIndex = 0;
500
+ let invokeMatch;
501
+ let invokeFoundToolCalls = false;
502
+ while ((invokeMatch = invokeRegex.exec(text)) !== null) {
503
+ invokeFoundToolCalls = true;
504
+ if (invokeMatch.index > invokeLastIndex) {
505
+ const before = text.slice(invokeLastIndex, invokeMatch.index).trim();
506
+ // Skip wrapper tags like <minimax:tool_call>
507
+ const cleaned = before.replace(/<\/?[\w:]+>/g, '').trim();
508
+ if (cleaned)
509
+ content.push({ type: 'text', text: cleaned });
365
510
  }
366
- lastIndex = match.index + match[0].length;
511
+ const toolName = invokeMatch[1];
512
+ const paramsBlock = invokeMatch[2];
513
+ const input = {};
514
+ let paramMatch;
515
+ while ((paramMatch = invokeParamRegex.exec(paramsBlock)) !== null) {
516
+ input[paramMatch[1]] = paramMatch[2].trim();
517
+ }
518
+ invokeParamRegex.lastIndex = 0;
519
+ content.push({
520
+ type: 'tool_use',
521
+ id: `tool_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
522
+ name: toolName,
523
+ input,
524
+ });
525
+ invokeLastIndex = invokeMatch.index + invokeMatch[0].length;
367
526
  }
368
- // Add remaining text
369
- if (lastIndex < text.length) {
370
- const remainder = text.slice(lastIndex).trim();
371
- if (remainder)
372
- content.push({ type: 'text', text: remainder });
527
+ if (invokeFoundToolCalls) {
528
+ if (invokeLastIndex < text.length) {
529
+ // Strip closing wrapper tags
530
+ const remainder = text.slice(invokeLastIndex).replace(/<\/?[\w:]+>/g, '').trim();
531
+ if (remainder)
532
+ content.push({ type: 'text', text: remainder });
533
+ }
534
+ return content;
373
535
  }
374
- // If no tool calls found, return as pure text
375
- if (content.length === 0 && text) {
536
+ // No tool calls found return as pure text
537
+ if (text) {
376
538
  content.push({ type: 'text', text });
377
539
  }
378
540
  return content;
379
541
  }
542
+ /**
543
+ * Parse multiple JSON objects from a block that may contain one object per line,
544
+ * or a JSON array, or comma-separated objects.
545
+ */
546
+ parseMultipleJsonObjects(block) {
547
+ const results = [];
548
+ // Try 1: Single JSON object
549
+ try {
550
+ const parsed = JSON.parse(block);
551
+ if (parsed.name && parsed.arguments) {
552
+ results.push(parsed);
553
+ return results;
554
+ }
555
+ // Could be an array
556
+ if (Array.isArray(parsed)) {
557
+ for (const item of parsed) {
558
+ if (item.name && item.arguments)
559
+ results.push(item);
560
+ }
561
+ if (results.length > 0)
562
+ return results;
563
+ }
564
+ }
565
+ catch {
566
+ // Not valid single JSON — try multi-line
567
+ }
568
+ // Try 2: One JSON object per line
569
+ const lines = block.split('\n');
570
+ for (const line of lines) {
571
+ const trimmed = line.trim();
572
+ if (!trimmed || !trimmed.startsWith('{'))
573
+ continue;
574
+ try {
575
+ const parsed = JSON.parse(trimmed);
576
+ if (parsed.name && parsed.arguments) {
577
+ results.push(parsed);
578
+ }
579
+ }
580
+ catch {
581
+ // Try stripping trailing comma
582
+ const noComma = trimmed.replace(/,\s*$/, '');
583
+ try {
584
+ const parsed = JSON.parse(noComma);
585
+ if (parsed.name && parsed.arguments) {
586
+ results.push(parsed);
587
+ }
588
+ }
589
+ catch {
590
+ // Skip unparseable line
591
+ }
592
+ }
593
+ }
594
+ return results;
595
+ }
380
596
  }
381
597
  //# sourceMappingURL=ollama.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../src/llm/ollama.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../src/llm/ollama.ts"],"names":[],"mappings":"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"}
@@ -140,6 +140,8 @@ async function summarizeMessages(messages, adapter, model, maxTokens) {
140
140
  type: 'text',
141
141
  text: `[Previous conversation summary]\n${summaryText}\n[End of summary — recent conversation follows]`,
142
142
  }],
143
+ isCompactSummary: true,
144
+ isCompactBoundary: true,
143
145
  };
144
146
  }
145
147
  /**
@@ -167,6 +169,8 @@ function buildFallbackSummary(messages) {
167
169
  return {
168
170
  role: 'user',
169
171
  content: [{ type: 'text', text: parts.join('\n') }],
172
+ isCompactSummary: true,
173
+ isCompactBoundary: true,
170
174
  };
171
175
  }
172
176
  //# sourceMappingURL=compaction.js.map