@pentoshi/clai 3.5.1 → 3.6.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 (123) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/context-manager.js +8 -2
  3. package/dist/agent/context-manager.js.map +1 -1
  4. package/dist/agent/loop-guard.d.ts +2 -0
  5. package/dist/agent/loop-guard.js +39 -2
  6. package/dist/agent/loop-guard.js.map +1 -1
  7. package/dist/agent/plan-tool.d.ts +22 -0
  8. package/dist/agent/plan-tool.js +357 -44
  9. package/dist/agent/plan-tool.js.map +1 -1
  10. package/dist/agent/project-root.d.ts +33 -0
  11. package/dist/agent/project-root.js +158 -0
  12. package/dist/agent/project-root.js.map +1 -0
  13. package/dist/agent/runner.js +1119 -240
  14. package/dist/agent/runner.js.map +1 -1
  15. package/dist/agent/task-evidence.d.ts +103 -0
  16. package/dist/agent/task-evidence.js +413 -0
  17. package/dist/agent/task-evidence.js.map +1 -0
  18. package/dist/agent/tool-call-parser.d.ts +16 -0
  19. package/dist/agent/tool-call-parser.js +86 -28
  20. package/dist/agent/tool-call-parser.js.map +1 -1
  21. package/dist/agent/tool-history.d.ts +27 -0
  22. package/dist/agent/tool-history.js +150 -0
  23. package/dist/agent/tool-history.js.map +1 -0
  24. package/dist/agent/workspace-orient.d.ts +64 -0
  25. package/dist/agent/workspace-orient.js +418 -0
  26. package/dist/agent/workspace-orient.js.map +1 -0
  27. package/dist/app/controllers/session-controller.js +4 -0
  28. package/dist/app/controllers/session-controller.js.map +1 -1
  29. package/dist/commands/doctor.js +3 -0
  30. package/dist/commands/doctor.js.map +1 -1
  31. package/dist/commands/update.js +1 -1
  32. package/dist/llm/adapters/anthropic-tools.d.ts +99 -0
  33. package/dist/llm/adapters/anthropic-tools.js +225 -0
  34. package/dist/llm/adapters/anthropic-tools.js.map +1 -0
  35. package/dist/llm/adapters/gemini-tools.d.ts +54 -0
  36. package/dist/llm/adapters/gemini-tools.js +139 -0
  37. package/dist/llm/adapters/gemini-tools.js.map +1 -0
  38. package/dist/llm/adapters/ollama-tools.d.ts +22 -0
  39. package/dist/llm/adapters/ollama-tools.js +62 -0
  40. package/dist/llm/adapters/ollama-tools.js.map +1 -0
  41. package/dist/llm/adapters/openai-tools.d.ts +39 -0
  42. package/dist/llm/adapters/openai-tools.js +71 -0
  43. package/dist/llm/adapters/openai-tools.js.map +1 -0
  44. package/dist/llm/agentrouter.js +23 -4
  45. package/dist/llm/agentrouter.js.map +1 -1
  46. package/dist/llm/anthropic.js +93 -92
  47. package/dist/llm/anthropic.js.map +1 -1
  48. package/dist/llm/aws-mantle.js +93 -56
  49. package/dist/llm/aws-mantle.js.map +1 -1
  50. package/dist/llm/bynara.js +23 -4
  51. package/dist/llm/bynara.js.map +1 -1
  52. package/dist/llm/capabilities.d.ts +7 -0
  53. package/dist/llm/capabilities.js +74 -0
  54. package/dist/llm/capabilities.js.map +1 -1
  55. package/dist/llm/gemini.js +63 -48
  56. package/dist/llm/gemini.js.map +1 -1
  57. package/dist/llm/groq.js +23 -4
  58. package/dist/llm/groq.js.map +1 -1
  59. package/dist/llm/http.d.ts +22 -17
  60. package/dist/llm/http.js +99 -26
  61. package/dist/llm/http.js.map +1 -1
  62. package/dist/llm/kimchi.js +23 -4
  63. package/dist/llm/kimchi.js.map +1 -1
  64. package/dist/llm/nvidia.js +23 -4
  65. package/dist/llm/nvidia.js.map +1 -1
  66. package/dist/llm/ollama.js +49 -31
  67. package/dist/llm/ollama.js.map +1 -1
  68. package/dist/llm/openai.js +23 -4
  69. package/dist/llm/openai.js.map +1 -1
  70. package/dist/llm/openrouter.js +23 -4
  71. package/dist/llm/openrouter.js.map +1 -1
  72. package/dist/llm/qwen-cloud.js +23 -4
  73. package/dist/llm/qwen-cloud.js.map +1 -1
  74. package/dist/llm/router.js +48 -6
  75. package/dist/llm/router.js.map +1 -1
  76. package/dist/llm/tool-protocol.d.ts +73 -0
  77. package/dist/llm/tool-protocol.js +282 -0
  78. package/dist/llm/tool-protocol.js.map +1 -0
  79. package/dist/modes/ask.js +74 -20
  80. package/dist/modes/ask.js.map +1 -1
  81. package/dist/prompts/index.d.ts +13 -5
  82. package/dist/prompts/index.js +116 -18
  83. package/dist/prompts/index.js.map +1 -1
  84. package/dist/repl.js +7 -0
  85. package/dist/repl.js.map +1 -1
  86. package/dist/store/config.d.ts +7 -0
  87. package/dist/store/config.js +1 -0
  88. package/dist/store/config.js.map +1 -1
  89. package/dist/store/plan.d.ts +2 -0
  90. package/dist/store/plan.js.map +1 -1
  91. package/dist/tools/capabilities.d.ts +2 -0
  92. package/dist/tools/capabilities.js +101 -6
  93. package/dist/tools/capabilities.js.map +1 -1
  94. package/dist/tools/command-intent.d.ts +1 -0
  95. package/dist/tools/command-intent.js +31 -0
  96. package/dist/tools/command-intent.js.map +1 -1
  97. package/dist/tools/definitions.d.ts +20 -0
  98. package/dist/tools/definitions.js +509 -0
  99. package/dist/tools/definitions.js.map +1 -0
  100. package/dist/tools/fs.js +12 -3
  101. package/dist/tools/fs.js.map +1 -1
  102. package/dist/tools/net-ping-sweep.js +69 -16
  103. package/dist/tools/net-ping-sweep.js.map +1 -1
  104. package/dist/tools/nmap-runner.d.ts +8 -7
  105. package/dist/tools/nmap-runner.js +126 -65
  106. package/dist/tools/nmap-runner.js.map +1 -1
  107. package/dist/tools/registry.js +45 -7
  108. package/dist/tools/registry.js.map +1 -1
  109. package/dist/tools/validate.d.ts +11 -0
  110. package/dist/tools/validate.js +53 -0
  111. package/dist/tools/validate.js.map +1 -1
  112. package/dist/tools/web/search.js +48 -4
  113. package/dist/tools/web/search.js.map +1 -1
  114. package/dist/tui-v2/components/transcript/tool-card.js +1 -1
  115. package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
  116. package/dist/tui-v2/rendering/tool-presenter.d.ts +6 -1
  117. package/dist/tui-v2/rendering/tool-presenter.js +66 -2
  118. package/dist/tui-v2/rendering/tool-presenter.js.map +1 -1
  119. package/dist/types.d.ts +58 -0
  120. package/dist/ui/ansi-box.d.ts +2 -0
  121. package/dist/ui/ansi-box.js +8 -1
  122. package/dist/ui/ansi-box.js.map +1 -1
  123. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { defaultModels, } from "./provider.js";
2
2
  import { openAiCompatibleComplete, openAiCompatibleStream, readJson, readStreamLines, } from "./http.js";
3
+ import { anthropicToolBodyFields, createAnthropicToolStreamState, finalizeAnthropicToolStream, handleAnthropicStreamEvent, parseAnthropicToolUseBlocks, toAnthropicToolMessages, } from "./adapters/anthropic-tools.js";
3
4
  const baseUrl = "https://bedrock-mantle.ap-south-1.api.aws/anthropic/v1";
4
5
  const openAiBaseUrl = "https://bedrock-mantle.ap-south-1.api.aws/v1";
5
6
  const modelsBaseUrl = "https://bedrock-mantle.ap-south-1.api.aws";
@@ -7,30 +8,6 @@ const anthropicVersion = "2023-06-01";
7
8
  function getWorkspaceId() {
8
9
  return process.env.ANTHROPIC_WORKSPACE_ID ?? "default";
9
10
  }
10
- function toAnthropicMessages(messages) {
11
- return messages
12
- .filter((message) => message.role !== "system")
13
- .map((message) => {
14
- const role = message.role === "assistant" ? "assistant" : "user";
15
- if (role === "user" && message.images && message.images.length > 0) {
16
- const blocks = [];
17
- if (message.content)
18
- blocks.push({ type: "text", text: message.content });
19
- for (const img of message.images) {
20
- blocks.push({
21
- type: "image",
22
- source: {
23
- type: "base64",
24
- media_type: img.mediaType,
25
- data: img.dataBase64,
26
- },
27
- });
28
- }
29
- return { role, content: blocks };
30
- }
31
- return { role, content: message.content };
32
- });
33
- }
34
11
  function anthropicThinkingBudget(reasoning) {
35
12
  if (!reasoning?.enabled)
36
13
  return undefined;
@@ -84,7 +61,7 @@ export const mantleProvider = {
84
61
  throw new Error("Mantle API key is required");
85
62
  const model = request.model ?? defaultModels["aws-mantle"];
86
63
  if (!isAnthropicMantleModel(model)) {
87
- const text = await openAiCompatibleComplete({
64
+ const payload = await openAiCompatibleComplete({
88
65
  provider: "AWS Mantle",
89
66
  baseUrl: openAiBaseUrl,
90
67
  apiKey: auth.apiKey,
@@ -95,11 +72,20 @@ export const mantleProvider = {
95
72
  signal: request.signal,
96
73
  reasoning: request.thinking,
97
74
  reasoningStyle: "nvidia",
75
+ tools: request.tools,
76
+ toolChoice: request.toolChoice,
77
+ parallelToolCalls: request.parallelToolCalls,
98
78
  });
99
- return { text, provider: "aws-mantle", model };
79
+ return {
80
+ text: payload.text,
81
+ provider: "aws-mantle",
82
+ model,
83
+ ...(payload.toolCalls?.length ? { toolCalls: payload.toolCalls } : {}),
84
+ ...(payload.finishReason ? { finishReason: payload.finishReason } : {}),
85
+ };
100
86
  }
101
87
  const system = request.messages.find((message) => message.role === "system")?.content;
102
- const messages = toAnthropicMessages(request.messages);
88
+ const messages = toAnthropicToolMessages(request.messages);
103
89
  const response = await fetch(`${baseUrl}/messages`, {
104
90
  method: "POST",
105
91
  signal: request.signal ?? null,
@@ -115,6 +101,10 @@ export const mantleProvider = {
115
101
  messages,
116
102
  max_tokens: request.maxTokens ?? 1_024,
117
103
  temperature: request.temperature ?? 0.2,
104
+ ...anthropicToolBodyFields({
105
+ tools: request.tools,
106
+ toolChoice: request.toolChoice,
107
+ }),
118
108
  ...(anthropicThinkingBudget(request.thinking) !== undefined
119
109
  ? {
120
110
  thinking: {
@@ -126,28 +116,33 @@ export const mantleProvider = {
126
116
  }),
127
117
  });
128
118
  const data = await readJson(response);
129
- const thinkingText = data.content
130
- ?.filter((part) => part.type === "thinking")
131
- .map((part) => part.thinking ?? "")
132
- .join("")
133
- .trim();
134
- const text = data.content
135
- ?.filter((part) => part.type === "text")
136
- .map((part) => part.text ?? "")
137
- .join("")
138
- .trim();
139
- if (!text) {
119
+ const parsed = parseAnthropicToolUseBlocks(data.content);
120
+ if (!parsed.text && parsed.toolCalls.length === 0) {
140
121
  throw new Error("Mantle returned no completion text");
141
122
  }
142
- const final = thinkingText ? `<thinking>${thinkingText}</thinking>${text}` : text;
143
- return { text: final, provider: "aws-mantle", model };
123
+ const final = parsed.thinkingText
124
+ ? `<thinking>${parsed.thinkingText}</thinking>${parsed.text}`
125
+ : parsed.text;
126
+ return {
127
+ text: final,
128
+ provider: "aws-mantle",
129
+ model,
130
+ ...(parsed.toolCalls.length ? { toolCalls: parsed.toolCalls } : {}),
131
+ ...(data.stop_reason
132
+ ? {
133
+ finishReason: data.stop_reason === "tool_use" ? "tool_calls" : data.stop_reason,
134
+ }
135
+ : parsed.toolCalls.length
136
+ ? { finishReason: "tool_calls" }
137
+ : {}),
138
+ };
144
139
  },
145
140
  async stream(request, auth, onToken) {
146
141
  if (!auth.apiKey)
147
142
  throw new Error("Mantle API key is required");
148
143
  const model = request.model ?? defaultModels["aws-mantle"];
149
144
  if (!isAnthropicMantleModel(model)) {
150
- const text = await openAiCompatibleStream({
145
+ const payload = await openAiCompatibleStream({
151
146
  provider: "AWS Mantle",
152
147
  baseUrl: openAiBaseUrl,
153
148
  apiKey: auth.apiKey,
@@ -157,13 +152,23 @@ export const mantleProvider = {
157
152
  temperature: request.temperature,
158
153
  signal: request.signal,
159
154
  onToken,
155
+ onToolCallDelta: request.onToolCallDelta,
160
156
  reasoning: request.thinking,
161
157
  reasoningStyle: "nvidia",
158
+ tools: request.tools,
159
+ toolChoice: request.toolChoice,
160
+ parallelToolCalls: request.parallelToolCalls,
162
161
  });
163
- return { text, provider: "aws-mantle", model };
162
+ return {
163
+ text: payload.text,
164
+ provider: "aws-mantle",
165
+ model,
166
+ ...(payload.toolCalls?.length ? { toolCalls: payload.toolCalls } : {}),
167
+ ...(payload.finishReason ? { finishReason: payload.finishReason } : {}),
168
+ };
164
169
  }
165
170
  const system = request.messages.find((message) => message.role === "system")?.content;
166
- const messages = toAnthropicMessages(request.messages);
171
+ const messages = toAnthropicToolMessages(request.messages);
167
172
  const response = await fetch(`${baseUrl}/messages`, {
168
173
  method: "POST",
169
174
  signal: request.signal ?? null,
@@ -179,6 +184,10 @@ export const mantleProvider = {
179
184
  messages,
180
185
  max_tokens: request.maxTokens ?? 1_024,
181
186
  temperature: request.temperature ?? 0.2,
187
+ ...anthropicToolBodyFields({
188
+ tools: request.tools,
189
+ toolChoice: request.toolChoice,
190
+ }),
182
191
  stream: true,
183
192
  ...(anthropicThinkingBudget(request.thinking) !== undefined
184
193
  ? {
@@ -198,6 +207,8 @@ export const mantleProvider = {
198
207
  }
199
208
  let full = "";
200
209
  let inThinking = false;
210
+ const streamState = createAnthropicToolStreamState();
211
+ let stopReason;
201
212
  const enterThinking = () => {
202
213
  if (inThinking)
203
214
  return;
@@ -219,24 +230,37 @@ export const mantleProvider = {
219
230
  if (!trimmed.startsWith("data:"))
220
231
  continue;
221
232
  const payload = trimmed.slice(5).trim();
222
- if (payload === "[DONE]") {
223
- exitThinking();
224
- return { text: full, provider: "aws-mantle", model };
225
- }
233
+ if (payload === "[DONE]")
234
+ break;
226
235
  try {
227
236
  const parsed = JSON.parse(payload);
228
- if (parsed.type === "content_block_delta") {
229
- const deltaType = parsed.delta?.type;
230
- if (deltaType === "thinking_delta" && parsed.delta?.thinking) {
237
+ if (parsed.type === "message_delta" && parsed.delta?.stop_reason) {
238
+ stopReason = parsed.delta.stop_reason;
239
+ }
240
+ if (parsed.type === "content_block_start" ||
241
+ parsed.type === "content_block_delta") {
242
+ const deltas = handleAnthropicStreamEvent(streamState, parsed);
243
+ if (deltas.thinkingDelta) {
231
244
  enterThinking();
232
- full += parsed.delta.thinking;
233
- onToken(parsed.delta.thinking);
245
+ full += deltas.thinkingDelta;
246
+ onToken(deltas.thinkingDelta);
234
247
  }
235
- else if (deltaType === "text_delta" && parsed.delta?.text) {
248
+ if (deltas.textDelta) {
236
249
  if (inThinking)
237
250
  exitThinking();
238
- full += parsed.delta.text;
239
- onToken(parsed.delta.text);
251
+ full += deltas.textDelta;
252
+ onToken(deltas.textDelta);
253
+ }
254
+ if (deltas.toolCallDelta && request.onToolCallDelta) {
255
+ const d = deltas.toolCallDelta;
256
+ request.onToolCallDelta({
257
+ index: d.index,
258
+ ...(d.id !== undefined ? { id: d.id } : {}),
259
+ ...(d.name !== undefined ? { name: d.name } : {}),
260
+ ...(d.argumentsBytes !== undefined
261
+ ? { argumentsBytes: d.argumentsBytes }
262
+ : {}),
263
+ });
240
264
  }
241
265
  }
242
266
  }
@@ -245,7 +269,20 @@ export const mantleProvider = {
245
269
  }
246
270
  }
247
271
  exitThinking();
248
- return { text: full, provider: "aws-mantle", model };
272
+ const finalized = finalizeAnthropicToolStream(streamState);
273
+ return {
274
+ text: full,
275
+ provider: "aws-mantle",
276
+ model,
277
+ ...(finalized.toolCalls.length ? { toolCalls: finalized.toolCalls } : {}),
278
+ ...(stopReason
279
+ ? {
280
+ finishReason: stopReason === "tool_use" ? "tool_calls" : stopReason,
281
+ }
282
+ : finalized.toolCalls.length
283
+ ? { finishReason: "tool_calls" }
284
+ : {}),
285
+ };
249
286
  },
250
287
  };
251
288
  //# sourceMappingURL=aws-mantle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aws-mantle.js","sourceRoot":"","sources":["../../src/llm/aws-mantle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aws-mantle.js","sourceRoot":"","sources":["../../src/llm/aws-mantle.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,7 @@ export const bynaraProvider = {
43
43
  if (!auth.apiKey)
44
44
  throw new Error("Bynara API key is required");
45
45
  const model = request.model ?? defaultModels.bynara;
46
- const text = await openAiCompatibleComplete({
46
+ const payload = await openAiCompatibleComplete({
47
47
  provider: "Bynara",
48
48
  baseUrl,
49
49
  apiKey: auth.apiKey,
@@ -54,14 +54,23 @@ export const bynaraProvider = {
54
54
  signal: request.signal,
55
55
  reasoning: request.thinking,
56
56
  reasoningStyle: "openai",
57
+ tools: request.tools,
58
+ toolChoice: request.toolChoice,
59
+ parallelToolCalls: request.parallelToolCalls,
57
60
  });
58
- return { text, provider: "bynara", model };
61
+ return {
62
+ text: payload.text,
63
+ provider: "bynara",
64
+ model,
65
+ ...(payload.toolCalls?.length ? { toolCalls: payload.toolCalls } : {}),
66
+ ...(payload.finishReason ? { finishReason: payload.finishReason } : {}),
67
+ };
59
68
  },
60
69
  async stream(request, auth, onToken) {
61
70
  if (!auth.apiKey)
62
71
  throw new Error("Bynara API key is required");
63
72
  const model = request.model ?? defaultModels.bynara;
64
- const text = await openAiCompatibleStream({
73
+ const payload = await openAiCompatibleStream({
65
74
  provider: "Bynara",
66
75
  baseUrl,
67
76
  apiKey: auth.apiKey,
@@ -71,10 +80,20 @@ export const bynaraProvider = {
71
80
  temperature: request.temperature,
72
81
  signal: request.signal,
73
82
  onToken,
83
+ onToolCallDelta: request.onToolCallDelta,
74
84
  reasoning: request.thinking,
75
85
  reasoningStyle: "openai",
86
+ tools: request.tools,
87
+ toolChoice: request.toolChoice,
88
+ parallelToolCalls: request.parallelToolCalls,
76
89
  });
77
- return { text, provider: "bynara", model };
90
+ return {
91
+ text: payload.text,
92
+ provider: "bynara",
93
+ model,
94
+ ...(payload.toolCalls?.length ? { toolCalls: payload.toolCalls } : {}),
95
+ ...(payload.finishReason ? { finishReason: payload.finishReason } : {}),
96
+ };
78
97
  },
79
98
  };
80
99
  //# sourceMappingURL=bynara.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bynara.js","sourceRoot":"","sources":["../../src/llm/bynara.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bynara.js","sourceRoot":"","sources":["../../src/llm/bynara.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ProviderId } from "../types.js";
2
+ import type { ToolDialect, ToolCallingMode } from "./tool-protocol.js";
2
3
  export declare function modelSupportsThinking(provider: ProviderId, model: string): boolean;
3
4
  /**
4
5
  * Whether the given provider/model can accept image input. When true, the
@@ -13,3 +14,9 @@ export declare function modelSupportsVision(provider: ProviderId, model: string)
13
14
  * fall back to OCR/text notes.
14
15
  */
15
16
  export declare function preferredVisionModel(provider: ProviderId, currentModel: string): string | undefined;
17
+ /**
18
+ * Resolve the native tool wire dialect for a provider/model pair.
19
+ * Returns "none" when tools should not be attached (text fallback).
20
+ */
21
+ export declare function resolveToolDialect(provider: ProviderId, model: string, toolCalling?: ToolCallingMode): ToolDialect;
22
+ export declare function modelSupportsNativeTools(provider: ProviderId, model: string, toolCalling?: ToolCallingMode): boolean;
@@ -1,3 +1,5 @@
1
+ import { isTextOnlyModel } from "./tool-protocol.js";
2
+ import { getConfig } from "../store/config.js";
1
3
  // Patterns of model names that support an explicit reasoning/thinking
2
4
  // toggle. The match is case-insensitive substring or regex.
3
5
  const reasoningPatterns = {
@@ -154,4 +156,76 @@ export function preferredVisionModel(provider, currentModel) {
154
156
  return undefined;
155
157
  return modelSupportsVision(provider, fallback) ? fallback : undefined;
156
158
  }
159
+ /** Default wire dialect for each provider. */
160
+ const providerToolDialect = {
161
+ openai: "openai",
162
+ groq: "openai",
163
+ openrouter: "openai",
164
+ nvidia: "openai",
165
+ agentrouter: "openai",
166
+ kimchi: "openai",
167
+ bynara: "openai",
168
+ "qwen-cloud": "openai",
169
+ anthropic: "anthropic",
170
+ "aws-mantle": "openai", // refined by model below
171
+ gemini: "gemini",
172
+ ollama: "ollama",
173
+ };
174
+ /** Known non-tool / embedding / tiny models (light denylist). */
175
+ const nativeToolsDenylist = [
176
+ /embed/i,
177
+ /embedding/i,
178
+ /whisper/i,
179
+ /tts/i,
180
+ /dall-e/i,
181
+ /moderation/i,
182
+ /text-embedding/i,
183
+ ];
184
+ /** Ollama families known to support tools. */
185
+ const ollamaToolFamilies = [
186
+ /llama3\.1/i,
187
+ /llama3\.2/i,
188
+ /llama3\.3/i,
189
+ /llama-?4/i,
190
+ /qwen/i,
191
+ /mistral/i,
192
+ /command-r/i,
193
+ /firefunction/i,
194
+ /tool/i,
195
+ /nemotron/i,
196
+ /deepseek/i,
197
+ /gpt-oss/i,
198
+ /gemma3/i,
199
+ ];
200
+ function isAwsMantleAnthropicModel(model) {
201
+ return /(?:^|[./-])(?:anthropic|claude)(?:[./-]|$)/i.test(model);
202
+ }
203
+ /**
204
+ * Resolve the native tool wire dialect for a provider/model pair.
205
+ * Returns "none" when tools should not be attached (text fallback).
206
+ */
207
+ export function resolveToolDialect(provider, model, toolCalling) {
208
+ const mode = toolCalling ?? getConfig().toolCalling ?? "auto";
209
+ if (mode === "text")
210
+ return "none";
211
+ if (isTextOnlyModel(provider, model))
212
+ return "none";
213
+ if (nativeToolsDenylist.some((re) => re.test(model)))
214
+ return "none";
215
+ if (provider === "aws-mantle") {
216
+ return isAwsMantleAnthropicModel(model) ? "anthropic" : "openai";
217
+ }
218
+ if (provider === "ollama") {
219
+ if (mode === "native")
220
+ return "ollama";
221
+ // native-preferred: only attach for known tool-capable families
222
+ if (ollamaToolFamilies.some((re) => re.test(model)))
223
+ return "ollama";
224
+ return "none";
225
+ }
226
+ return providerToolDialect[provider] ?? "none";
227
+ }
228
+ export function modelSupportsNativeTools(provider, model, toolCalling) {
229
+ return resolveToolDialect(provider, model, toolCalling) !== "none";
230
+ }
157
231
  //# sourceMappingURL=capabilities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/llm/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/llm/capabilities.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,9 @@
1
1
  import { defaultModels, } from "./provider.js";
2
2
  import { ProviderError, readJson, readStreamLines } from "./http.js";
3
+ import { geminiToolBodyFields, parseGeminiFunctionCalls, toGeminiToolContents, } from "./adapters/gemini-tools.js";
4
+ import { fromWireName } from "./tool-protocol.js";
3
5
  function geminiContents(messages) {
4
- const contents = [];
5
- for (const message of messages) {
6
- if (message.role === "system")
7
- continue;
8
- const role = message.role === "assistant" ? "model" : "user";
9
- const parts = [];
10
- if (message.content.trim())
11
- parts.push({ text: message.content });
12
- if (role === "user" && message.images) {
13
- for (const img of message.images) {
14
- parts.push({
15
- inlineData: { mimeType: img.mediaType, data: img.dataBase64 },
16
- });
17
- }
18
- }
19
- // Never serialize an empty content part. Apart from being meaningless,
20
- // Gemini can subsequently return empty candidates after an empty `model`
21
- // turn. If a caller omitted an assistant turn, merge the adjacent user
22
- // instructions instead to retain Gemini's alternating-role invariant.
23
- if (parts.length === 0)
24
- continue;
25
- const previous = contents.at(-1);
26
- if (previous?.role === role) {
27
- previous.parts.push(...parts);
28
- }
29
- else {
30
- contents.push({ role, parts });
31
- }
32
- }
33
- return contents;
6
+ return toGeminiToolContents(messages);
34
7
  }
35
8
  function systemInstruction(messages) {
36
9
  const system = messages.find((message) => message.role === "system");
@@ -99,6 +72,10 @@ export function geminiBody(request) {
99
72
  ? { thinkingConfig }
100
73
  : {}),
101
74
  },
75
+ ...geminiToolBodyFields({
76
+ tools: request.tools,
77
+ toolChoice: request.toolChoice,
78
+ }),
102
79
  };
103
80
  const sys = systemInstruction(request.messages);
104
81
  if (sys)
@@ -147,16 +124,24 @@ export const geminiProvider = {
147
124
  .map((part) => part.text ?? "")
148
125
  .join("")
149
126
  .trim();
150
- const text = parts
151
- .filter((part) => !part.thought)
152
- .map((part) => part.text ?? "")
153
- .join("")
154
- .trim();
155
- if (!text) {
127
+ const parsed = parseGeminiFunctionCalls(parts);
128
+ if (!parsed.text && parsed.toolCalls.length === 0) {
156
129
  throw new ProviderError("Gemini completed without a visible answer.");
157
130
  }
158
- const final = thought ? `<think>${thought}</think>${text}` : text;
159
- return { text: final, provider: "gemini", model };
131
+ const final = thought
132
+ ? `<think>${thought}</think>${parsed.text}`
133
+ : parsed.text;
134
+ return {
135
+ text: final,
136
+ provider: "gemini",
137
+ model,
138
+ ...(parsed.toolCalls.length ? { toolCalls: parsed.toolCalls } : {}),
139
+ ...(data.candidates?.[0]?.finishReason
140
+ ? { finishReason: data.candidates[0].finishReason }
141
+ : parsed.toolCalls.length
142
+ ? { finishReason: "tool_calls" }
143
+ : {}),
144
+ };
160
145
  },
161
146
  async stream(request, auth, onToken) {
162
147
  if (!auth.apiKey)
@@ -177,6 +162,8 @@ export const geminiProvider = {
177
162
  let full = "";
178
163
  let visible = "";
179
164
  let inThought = false;
165
+ const collectedParts = [];
166
+ let finishReason;
180
167
  const enterThought = () => {
181
168
  if (inThought)
182
169
  return;
@@ -198,17 +185,32 @@ export const geminiProvider = {
198
185
  if (!trimmed.startsWith("data:"))
199
186
  continue;
200
187
  const payload = trimmed.slice(5).trim();
201
- if (payload === "[DONE]") {
202
- exitThought();
203
- if (!visible.trim()) {
204
- throw new ProviderError("Gemini completed without a visible answer.");
205
- }
206
- return { text: full, provider: "gemini", model };
207
- }
188
+ if (payload === "[DONE]")
189
+ break;
208
190
  try {
209
191
  const parsed = JSON.parse(payload);
210
- const parts = parsed.candidates?.[0]?.content?.parts ?? [];
192
+ const candidate = parsed.candidates?.[0];
193
+ if (candidate?.finishReason)
194
+ finishReason = candidate.finishReason;
195
+ const parts = candidate?.content?.parts ?? [];
211
196
  for (const part of parts) {
197
+ collectedParts.push(part);
198
+ if (part.functionCall) {
199
+ if (request.onToolCallDelta && part.functionCall.name) {
200
+ const idx = collectedParts.filter((p) => p.functionCall).length - 1;
201
+ const wire = part.functionCall.name;
202
+ request.onToolCallDelta({
203
+ index: idx,
204
+ ...(part.functionCall.id
205
+ ? { id: part.functionCall.id }
206
+ : {}),
207
+ name: fromWireName(wire) ?? wire,
208
+ argumentsBytes: JSON.stringify(part.functionCall.args ?? {})
209
+ .length,
210
+ });
211
+ }
212
+ continue;
213
+ }
212
214
  if (!part.text)
213
215
  continue;
214
216
  if (part.thought) {
@@ -230,10 +232,23 @@ export const geminiProvider = {
230
232
  }
231
233
  }
232
234
  exitThought();
233
- if (!visible.trim()) {
235
+ const toolParsed = parseGeminiFunctionCalls(collectedParts);
236
+ if (!visible.trim() && toolParsed.toolCalls.length === 0) {
234
237
  throw new ProviderError("Gemini completed without a visible answer.");
235
238
  }
236
- return { text: full, provider: "gemini", model };
239
+ return {
240
+ text: full,
241
+ provider: "gemini",
242
+ model,
243
+ ...(toolParsed.toolCalls.length
244
+ ? { toolCalls: toolParsed.toolCalls }
245
+ : {}),
246
+ ...(finishReason
247
+ ? { finishReason }
248
+ : toolParsed.toolCalls.length
249
+ ? { finishReason: "tool_calls" }
250
+ : {}),
251
+ };
237
252
  },
238
253
  };
239
254
  //# sourceMappingURL=gemini.js.map