@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.
- package/README.md +1 -1
- package/dist/agent/context-manager.js +8 -2
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/loop-guard.d.ts +2 -0
- package/dist/agent/loop-guard.js +39 -2
- package/dist/agent/loop-guard.js.map +1 -1
- package/dist/agent/plan-tool.d.ts +22 -0
- package/dist/agent/plan-tool.js +357 -44
- package/dist/agent/plan-tool.js.map +1 -1
- package/dist/agent/project-root.d.ts +33 -0
- package/dist/agent/project-root.js +158 -0
- package/dist/agent/project-root.js.map +1 -0
- package/dist/agent/runner.js +1119 -240
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/task-evidence.d.ts +103 -0
- package/dist/agent/task-evidence.js +413 -0
- package/dist/agent/task-evidence.js.map +1 -0
- package/dist/agent/tool-call-parser.d.ts +16 -0
- package/dist/agent/tool-call-parser.js +86 -28
- package/dist/agent/tool-call-parser.js.map +1 -1
- package/dist/agent/tool-history.d.ts +27 -0
- package/dist/agent/tool-history.js +150 -0
- package/dist/agent/tool-history.js.map +1 -0
- package/dist/agent/workspace-orient.d.ts +64 -0
- package/dist/agent/workspace-orient.js +418 -0
- package/dist/agent/workspace-orient.js.map +1 -0
- package/dist/app/controllers/session-controller.js +4 -0
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/commands/doctor.js +3 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/update.js +1 -1
- package/dist/llm/adapters/anthropic-tools.d.ts +99 -0
- package/dist/llm/adapters/anthropic-tools.js +225 -0
- package/dist/llm/adapters/anthropic-tools.js.map +1 -0
- package/dist/llm/adapters/gemini-tools.d.ts +54 -0
- package/dist/llm/adapters/gemini-tools.js +139 -0
- package/dist/llm/adapters/gemini-tools.js.map +1 -0
- package/dist/llm/adapters/ollama-tools.d.ts +22 -0
- package/dist/llm/adapters/ollama-tools.js +62 -0
- package/dist/llm/adapters/ollama-tools.js.map +1 -0
- package/dist/llm/adapters/openai-tools.d.ts +39 -0
- package/dist/llm/adapters/openai-tools.js +71 -0
- package/dist/llm/adapters/openai-tools.js.map +1 -0
- package/dist/llm/agentrouter.js +23 -4
- package/dist/llm/agentrouter.js.map +1 -1
- package/dist/llm/anthropic.js +93 -92
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/aws-mantle.js +93 -56
- package/dist/llm/aws-mantle.js.map +1 -1
- package/dist/llm/bynara.js +23 -4
- package/dist/llm/bynara.js.map +1 -1
- package/dist/llm/capabilities.d.ts +7 -0
- package/dist/llm/capabilities.js +74 -0
- package/dist/llm/capabilities.js.map +1 -1
- package/dist/llm/gemini.js +63 -48
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/groq.js +23 -4
- package/dist/llm/groq.js.map +1 -1
- package/dist/llm/http.d.ts +22 -17
- package/dist/llm/http.js +99 -26
- package/dist/llm/http.js.map +1 -1
- package/dist/llm/kimchi.js +23 -4
- package/dist/llm/kimchi.js.map +1 -1
- package/dist/llm/nvidia.js +23 -4
- package/dist/llm/nvidia.js.map +1 -1
- package/dist/llm/ollama.js +49 -31
- package/dist/llm/ollama.js.map +1 -1
- package/dist/llm/openai.js +23 -4
- package/dist/llm/openai.js.map +1 -1
- package/dist/llm/openrouter.js +23 -4
- package/dist/llm/openrouter.js.map +1 -1
- package/dist/llm/qwen-cloud.js +23 -4
- package/dist/llm/qwen-cloud.js.map +1 -1
- package/dist/llm/router.js +48 -6
- package/dist/llm/router.js.map +1 -1
- package/dist/llm/tool-protocol.d.ts +73 -0
- package/dist/llm/tool-protocol.js +282 -0
- package/dist/llm/tool-protocol.js.map +1 -0
- package/dist/modes/ask.js +74 -20
- package/dist/modes/ask.js.map +1 -1
- package/dist/prompts/index.d.ts +13 -5
- package/dist/prompts/index.js +116 -18
- package/dist/prompts/index.js.map +1 -1
- package/dist/repl.js +7 -0
- package/dist/repl.js.map +1 -1
- package/dist/store/config.d.ts +7 -0
- package/dist/store/config.js +1 -0
- package/dist/store/config.js.map +1 -1
- package/dist/store/plan.d.ts +2 -0
- package/dist/store/plan.js.map +1 -1
- package/dist/tools/capabilities.d.ts +2 -0
- package/dist/tools/capabilities.js +101 -6
- package/dist/tools/capabilities.js.map +1 -1
- package/dist/tools/command-intent.d.ts +1 -0
- package/dist/tools/command-intent.js +31 -0
- package/dist/tools/command-intent.js.map +1 -1
- package/dist/tools/definitions.d.ts +20 -0
- package/dist/tools/definitions.js +509 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/fs.js +12 -3
- package/dist/tools/fs.js.map +1 -1
- package/dist/tools/net-ping-sweep.js +69 -16
- package/dist/tools/net-ping-sweep.js.map +1 -1
- package/dist/tools/nmap-runner.d.ts +8 -7
- package/dist/tools/nmap-runner.js +126 -65
- package/dist/tools/nmap-runner.js.map +1 -1
- package/dist/tools/registry.js +45 -7
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/validate.d.ts +11 -0
- package/dist/tools/validate.js +53 -0
- package/dist/tools/validate.js.map +1 -1
- package/dist/tools/web/search.js +48 -4
- package/dist/tools/web/search.js.map +1 -1
- package/dist/tui-v2/components/transcript/tool-card.js +1 -1
- package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
- package/dist/tui-v2/rendering/tool-presenter.d.ts +6 -1
- package/dist/tui-v2/rendering/tool-presenter.js +66 -2
- package/dist/tui-v2/rendering/tool-presenter.js.map +1 -1
- package/dist/types.d.ts +58 -0
- package/dist/ui/ansi-box.d.ts +2 -0
- package/dist/ui/ansi-box.js +8 -1
- package/dist/ui/ansi-box.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { NativeToolCall, ProviderId, ToolChoice, ToolDefinition } from "../types.js";
|
|
2
|
+
export type { NativeToolCall, ToolChoice, ToolDefinition };
|
|
3
|
+
export type ToolDialect = "openai" | "anthropic" | "gemini" | "ollama" | "none";
|
|
4
|
+
export type ToolCallingMode = "auto" | "native" | "text";
|
|
5
|
+
/** Max argument JSON size while streaming (~32 MB). */
|
|
6
|
+
export declare const MAX_TOOL_ARG_BYTES: number;
|
|
7
|
+
/** Primary wire form: dots → underscores, keep camelCase (fs.writeMany → fs_writeMany). */
|
|
8
|
+
export declare function toWireName(canonical: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Full snake_case wire form models sometimes emit
|
|
11
|
+
* (fs.writeMany → fs_write_many). Used as a reverse alias only.
|
|
12
|
+
*/
|
|
13
|
+
export declare function toSnakeWireName(canonical: string): string;
|
|
14
|
+
export declare function registerWireName(canonical: string, wire?: string): void;
|
|
15
|
+
/** Register primary wire + snake_case alias when they differ. */
|
|
16
|
+
export declare function registerWireNamesFor(canonical: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Strip model channel / commentary / XML junk from tool names
|
|
19
|
+
* (e.g. `fs.write<|channel|>commentary` → `fs.write`).
|
|
20
|
+
*/
|
|
21
|
+
export declare function sanitizeToolName(raw: string): string;
|
|
22
|
+
export declare function fromWireName(wire: string): string | undefined;
|
|
23
|
+
export declare function parseToolArguments(raw: unknown): Record<string, unknown>;
|
|
24
|
+
export declare function syntheticToolCallId(index: number): string;
|
|
25
|
+
/**
|
|
26
|
+
* True only when the provider clearly rejects tools/function-calling as a
|
|
27
|
+
* capability (not supported / disabled / unknown parameter). Validation
|
|
28
|
+
* errors like "Invalid schema for function 'fs_write'" must return false
|
|
29
|
+
* so we do not sticky-disable native tools for the rest of the process.
|
|
30
|
+
*/
|
|
31
|
+
export declare function isToolsUnsupportedError(error: unknown): boolean;
|
|
32
|
+
export declare function mapToolChoiceToOpenAi(choice: ToolChoice | undefined): unknown;
|
|
33
|
+
export declare function mapToolChoiceToAnthropic(choice: ToolChoice | undefined): unknown;
|
|
34
|
+
export declare function mapToolChoiceToGemini(choice: ToolChoice | undefined): {
|
|
35
|
+
mode: string;
|
|
36
|
+
allowedFunctionNames?: string[];
|
|
37
|
+
};
|
|
38
|
+
export declare function textOnlyKey(provider: ProviderId, model: string): string;
|
|
39
|
+
export declare function markTextOnlyModel(provider: ProviderId, model: string): void;
|
|
40
|
+
export declare function isTextOnlyModel(provider: ProviderId, model: string): boolean;
|
|
41
|
+
export declare function clearTextOnlyModels(): void;
|
|
42
|
+
export interface OpenAiToolCallAccumulator {
|
|
43
|
+
id?: string;
|
|
44
|
+
name?: string;
|
|
45
|
+
arguments: string;
|
|
46
|
+
}
|
|
47
|
+
export interface AccumulateToolCallDeltaResult {
|
|
48
|
+
index: number;
|
|
49
|
+
id?: string | undefined;
|
|
50
|
+
name?: string | undefined;
|
|
51
|
+
/** True when this delta first set a non-empty function name. */
|
|
52
|
+
nameBecameKnown: boolean;
|
|
53
|
+
argumentsBytes: number;
|
|
54
|
+
}
|
|
55
|
+
/** Accumulate OpenAI-style streaming tool_calls deltas by index. */
|
|
56
|
+
export declare function accumulateOpenAiToolCallDelta(state: Map<number, OpenAiToolCallAccumulator>, entry: {
|
|
57
|
+
index?: number;
|
|
58
|
+
id?: string;
|
|
59
|
+
type?: string;
|
|
60
|
+
function?: {
|
|
61
|
+
name?: string;
|
|
62
|
+
arguments?: string;
|
|
63
|
+
};
|
|
64
|
+
}): AccumulateToolCallDeltaResult;
|
|
65
|
+
export declare function finalizeOpenAiToolCalls(state: Map<number, OpenAiToolCallAccumulator>): NativeToolCall[];
|
|
66
|
+
export declare function parseOpenAiMessageToolCalls(toolCalls: Array<{
|
|
67
|
+
id?: string;
|
|
68
|
+
type?: string;
|
|
69
|
+
function?: {
|
|
70
|
+
name?: string;
|
|
71
|
+
arguments?: string;
|
|
72
|
+
};
|
|
73
|
+
}> | undefined): NativeToolCall[];
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/** Max argument JSON size while streaming (~32 MB). */
|
|
2
|
+
export const MAX_TOOL_ARG_BYTES = 32 * 1024 * 1024;
|
|
3
|
+
/** Primary wire form: dots → underscores, keep camelCase (fs.writeMany → fs_writeMany). */
|
|
4
|
+
export function toWireName(canonical) {
|
|
5
|
+
return canonical.replace(/\./g, "_");
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Full snake_case wire form models sometimes emit
|
|
9
|
+
* (fs.writeMany → fs_write_many). Used as a reverse alias only.
|
|
10
|
+
*/
|
|
11
|
+
export function toSnakeWireName(canonical) {
|
|
12
|
+
return canonical
|
|
13
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1_$2")
|
|
14
|
+
.replace(/\./g, "_")
|
|
15
|
+
.toLowerCase();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Reverse wire → canonical for known tools. Unknown wires return undefined
|
|
19
|
+
* so the runner can surface a clear error.
|
|
20
|
+
*/
|
|
21
|
+
const wireToCanonical = new Map();
|
|
22
|
+
export function registerWireName(canonical, wire) {
|
|
23
|
+
const w = wire ?? toWireName(canonical);
|
|
24
|
+
wireToCanonical.set(w, canonical);
|
|
25
|
+
}
|
|
26
|
+
/** Register primary wire + snake_case alias when they differ. */
|
|
27
|
+
export function registerWireNamesFor(canonical) {
|
|
28
|
+
const wire = toWireName(canonical);
|
|
29
|
+
registerWireName(canonical, wire);
|
|
30
|
+
const snake = toSnakeWireName(canonical);
|
|
31
|
+
if (snake !== wire) {
|
|
32
|
+
registerWireName(canonical, snake);
|
|
33
|
+
}
|
|
34
|
+
return wire;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Strip model channel / commentary / XML junk from tool names
|
|
38
|
+
* (e.g. `fs.write<|channel|>commentary` → `fs.write`).
|
|
39
|
+
*/
|
|
40
|
+
export function sanitizeToolName(raw) {
|
|
41
|
+
let n = raw.trim();
|
|
42
|
+
if (!n)
|
|
43
|
+
return n;
|
|
44
|
+
// GPT-OSS / channel style: <|channel|>, <|tool_call_begin|>, …
|
|
45
|
+
n = n.replace(/<\|[^|]*\|>/g, "");
|
|
46
|
+
// XML-ish tags
|
|
47
|
+
n = n.replace(/<\/?[A-Za-z][^>]*>/g, "");
|
|
48
|
+
n = n.replace(/^(?:functions\.|tools\.|tool\.)/i, "");
|
|
49
|
+
n = n.replace(/:\d+$/, "");
|
|
50
|
+
// Drop trailing non-name junk after a clean dotted/underscored stem
|
|
51
|
+
n = n.replace(/[^A-Za-z0-9._-]+.*$/, "");
|
|
52
|
+
// Role words models glue after tags (fs.writecommentary)
|
|
53
|
+
n = n.replace(/(?:commentary|analysis|channel|tool_call|toolcall|final)$/i, "");
|
|
54
|
+
n = n.replace(/(?:[_./-]+(?:commentary|analysis|channel|final))+$/i, "");
|
|
55
|
+
n = n.trim().replace(/^[_./-]+|[_./-]+$/g, "");
|
|
56
|
+
return n;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Longest registered wire/canonical prefix match for polluted names.
|
|
60
|
+
* e.g. `fs_write_channel_commentary` → `fs_write` if registered.
|
|
61
|
+
*/
|
|
62
|
+
function longestRegisteredPrefix(cleaned) {
|
|
63
|
+
if (!cleaned)
|
|
64
|
+
return undefined;
|
|
65
|
+
if (wireToCanonical.has(cleaned))
|
|
66
|
+
return cleaned;
|
|
67
|
+
// Try stripping trailing segments after _ or .
|
|
68
|
+
let best;
|
|
69
|
+
for (const [wire] of wireToCanonical) {
|
|
70
|
+
if (cleaned === wire ||
|
|
71
|
+
cleaned.startsWith(wire + "_") ||
|
|
72
|
+
cleaned.startsWith(wire + ".") ||
|
|
73
|
+
cleaned.startsWith(wire + "<")) {
|
|
74
|
+
if (!best || wire.length > best.length)
|
|
75
|
+
best = wire;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return best;
|
|
79
|
+
}
|
|
80
|
+
export function fromWireName(wire) {
|
|
81
|
+
const cleaned = sanitizeToolName(wire);
|
|
82
|
+
if (!cleaned)
|
|
83
|
+
return undefined;
|
|
84
|
+
if (wireToCanonical.has(cleaned))
|
|
85
|
+
return wireToCanonical.get(cleaned);
|
|
86
|
+
// Polluted name that still starts with a registered wire form
|
|
87
|
+
const prefix = longestRegisteredPrefix(cleaned);
|
|
88
|
+
if (prefix)
|
|
89
|
+
return wireToCanonical.get(prefix);
|
|
90
|
+
// Also try original if sanitize changed nothing useful
|
|
91
|
+
if (wireToCanonical.has(wire))
|
|
92
|
+
return wireToCanonical.get(wire);
|
|
93
|
+
// Fallback: underscore → first-dot heuristic for unregistered names.
|
|
94
|
+
if (cleaned.includes("."))
|
|
95
|
+
return cleaned;
|
|
96
|
+
const idx = cleaned.indexOf("_");
|
|
97
|
+
if (idx <= 0)
|
|
98
|
+
return undefined;
|
|
99
|
+
return `${cleaned.slice(0, idx)}.${cleaned.slice(idx + 1).replace(/_/g, ".")}`;
|
|
100
|
+
}
|
|
101
|
+
export function parseToolArguments(raw) {
|
|
102
|
+
if (raw == null)
|
|
103
|
+
return {};
|
|
104
|
+
if (typeof raw === "object" && !Array.isArray(raw)) {
|
|
105
|
+
return raw;
|
|
106
|
+
}
|
|
107
|
+
if (typeof raw === "string") {
|
|
108
|
+
const t = raw.trim();
|
|
109
|
+
if (!t)
|
|
110
|
+
return {};
|
|
111
|
+
try {
|
|
112
|
+
const parsed = JSON.parse(t);
|
|
113
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
114
|
+
return parsed;
|
|
115
|
+
}
|
|
116
|
+
return { _parseError: true, _raw: t };
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return { _parseError: true, _raw: t };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return {};
|
|
123
|
+
}
|
|
124
|
+
export function syntheticToolCallId(index) {
|
|
125
|
+
return `call_${index}_${Date.now().toString(36)}`;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* True only when the provider clearly rejects tools/function-calling as a
|
|
129
|
+
* capability (not supported / disabled / unknown parameter). Validation
|
|
130
|
+
* errors like "Invalid schema for function 'fs_write'" must return false
|
|
131
|
+
* so we do not sticky-disable native tools for the rest of the process.
|
|
132
|
+
*/
|
|
133
|
+
export function isToolsUnsupportedError(error) {
|
|
134
|
+
const status = error && typeof error === "object" && "status" in error
|
|
135
|
+
? Number(error.status)
|
|
136
|
+
: undefined;
|
|
137
|
+
const body = error && typeof error === "object" && "body" in error
|
|
138
|
+
? String(error.body ?? "")
|
|
139
|
+
: "";
|
|
140
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
141
|
+
const hay = `${message}\n${body}`.toLowerCase();
|
|
142
|
+
// Explicit capability rejections (any HTTP status).
|
|
143
|
+
if (/tools?\s+(is|are)\s+not\s+supported|does not support tools|function calling is not enabled|tool[_ ]?use is not supported|tools? not supported|tool calling is not supported|does not support function|function[_ ]?call(ing)? (is )?(not supported|disabled|unavailable)|unknown (request )?parameter ['"]?tools?|['"]tools?['"] is not (a )?valid|tool_choice.*(not supported|unknown|disabled)/i.test(hay)) {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
// 400 bodies that mention tools — only when they clearly mean unsupported.
|
|
147
|
+
// Do NOT treat schema/arg validation as unsupported (no bare /tool/i).
|
|
148
|
+
if (status === 400 &&
|
|
149
|
+
/\btools?\b|\btool_choice\b|\bfunction[_ ]?call/i.test(hay)) {
|
|
150
|
+
if (/invalid schema|invalid argument|missing required|parse error|type error|validation|must be|expected/i.test(hay)) {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
return /not support|unsupported|disabled|not enabled|not available|unknown parameter|unrecognized/i.test(hay);
|
|
154
|
+
}
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
export function mapToolChoiceToOpenAi(choice) {
|
|
158
|
+
if (choice === undefined || choice === "auto")
|
|
159
|
+
return "auto";
|
|
160
|
+
if (choice === "none")
|
|
161
|
+
return "none";
|
|
162
|
+
if (choice === "required")
|
|
163
|
+
return "required";
|
|
164
|
+
if (typeof choice === "object" && choice.type === "function") {
|
|
165
|
+
return {
|
|
166
|
+
type: "function",
|
|
167
|
+
function: { name: toWireName(choice.name) },
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
return "auto";
|
|
171
|
+
}
|
|
172
|
+
export function mapToolChoiceToAnthropic(choice) {
|
|
173
|
+
if (choice === undefined || choice === "auto")
|
|
174
|
+
return { type: "auto" };
|
|
175
|
+
if (choice === "none")
|
|
176
|
+
return { type: "none" };
|
|
177
|
+
if (choice === "required")
|
|
178
|
+
return { type: "any" };
|
|
179
|
+
if (typeof choice === "object" && choice.type === "function") {
|
|
180
|
+
return { type: "tool", name: toWireName(choice.name) };
|
|
181
|
+
}
|
|
182
|
+
return { type: "auto" };
|
|
183
|
+
}
|
|
184
|
+
export function mapToolChoiceToGemini(choice) {
|
|
185
|
+
if (choice === "none")
|
|
186
|
+
return { mode: "NONE" };
|
|
187
|
+
if (choice === "required")
|
|
188
|
+
return { mode: "ANY" };
|
|
189
|
+
if (typeof choice === "object" && choice.type === "function") {
|
|
190
|
+
return {
|
|
191
|
+
mode: "ANY",
|
|
192
|
+
allowedFunctionNames: [toWireName(choice.name)],
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
return { mode: "AUTO" };
|
|
196
|
+
}
|
|
197
|
+
/** Session-sticky models forced to text protocol after tools-unsupported. */
|
|
198
|
+
const textOnlyModels = new Set();
|
|
199
|
+
export function textOnlyKey(provider, model) {
|
|
200
|
+
return `${provider}::${model}`;
|
|
201
|
+
}
|
|
202
|
+
export function markTextOnlyModel(provider, model) {
|
|
203
|
+
textOnlyModels.add(textOnlyKey(provider, model));
|
|
204
|
+
}
|
|
205
|
+
export function isTextOnlyModel(provider, model) {
|
|
206
|
+
return textOnlyModels.has(textOnlyKey(provider, model));
|
|
207
|
+
}
|
|
208
|
+
export function clearTextOnlyModels() {
|
|
209
|
+
textOnlyModels.clear();
|
|
210
|
+
}
|
|
211
|
+
/** Accumulate OpenAI-style streaming tool_calls deltas by index. */
|
|
212
|
+
export function accumulateOpenAiToolCallDelta(state, entry) {
|
|
213
|
+
const index = entry.index ?? 0;
|
|
214
|
+
let acc = state.get(index);
|
|
215
|
+
if (!acc) {
|
|
216
|
+
acc = { arguments: "" };
|
|
217
|
+
state.set(index, acc);
|
|
218
|
+
}
|
|
219
|
+
const hadName = Boolean(acc.name);
|
|
220
|
+
if (entry.id)
|
|
221
|
+
acc.id = entry.id;
|
|
222
|
+
if (entry.function?.name) {
|
|
223
|
+
const nextName = sanitizeToolName(entry.function.name) || entry.function.name;
|
|
224
|
+
// X2: if this index already has a different clean name, do not clobber
|
|
225
|
+
// args with a second tool's payload — keep the first name.
|
|
226
|
+
if (acc.name &&
|
|
227
|
+
nextName &&
|
|
228
|
+
acc.name !== nextName &&
|
|
229
|
+
sanitizeToolName(acc.name) !== sanitizeToolName(nextName)) {
|
|
230
|
+
// Ignore subsequent name flips on the same index (stream corruption).
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
acc.name = nextName;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (typeof entry.function?.arguments === "string") {
|
|
237
|
+
acc.arguments += entry.function.arguments;
|
|
238
|
+
if (acc.arguments.length > MAX_TOOL_ARG_BYTES) {
|
|
239
|
+
throw new Error(`Tool call arguments exceeded ${MAX_TOOL_ARG_BYTES} bytes — split the file or reduce content size.`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
index,
|
|
244
|
+
...(acc.id !== undefined ? { id: acc.id } : {}),
|
|
245
|
+
...(acc.name !== undefined ? { name: acc.name } : {}),
|
|
246
|
+
nameBecameKnown: Boolean(acc.name) && !hadName,
|
|
247
|
+
argumentsBytes: acc.arguments.length,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
export function finalizeOpenAiToolCalls(state) {
|
|
251
|
+
const indices = [...state.keys()].sort((a, b) => a - b);
|
|
252
|
+
const out = [];
|
|
253
|
+
for (const index of indices) {
|
|
254
|
+
const acc = state.get(index);
|
|
255
|
+
const wire = acc.name ?? "";
|
|
256
|
+
const canonical = fromWireName(wire) ?? wire;
|
|
257
|
+
const rawArguments = acc.arguments;
|
|
258
|
+
const args = parseToolArguments(rawArguments);
|
|
259
|
+
out.push({
|
|
260
|
+
id: acc.id ?? syntheticToolCallId(index),
|
|
261
|
+
name: canonical,
|
|
262
|
+
args,
|
|
263
|
+
...(rawArguments ? { rawArguments } : {}),
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
return out;
|
|
267
|
+
}
|
|
268
|
+
export function parseOpenAiMessageToolCalls(toolCalls) {
|
|
269
|
+
if (!toolCalls?.length)
|
|
270
|
+
return [];
|
|
271
|
+
return toolCalls.map((tc, i) => {
|
|
272
|
+
const wire = tc.function?.name ?? "";
|
|
273
|
+
const rawArguments = tc.function?.arguments ?? "";
|
|
274
|
+
return {
|
|
275
|
+
id: tc.id ?? syntheticToolCallId(i),
|
|
276
|
+
name: fromWireName(wire) ?? wire,
|
|
277
|
+
args: parseToolArguments(rawArguments),
|
|
278
|
+
...(rawArguments ? { rawArguments } : {}),
|
|
279
|
+
};
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=tool-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-protocol.js","sourceRoot":"","sources":["../../src/llm/tool-protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/modes/ask.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { streamWithProvider } from "../llm/router.js";
|
|
2
|
+
import { resolveToolDialect } from "../llm/capabilities.js";
|
|
3
|
+
import { syntheticToolCallId } from "../llm/tool-protocol.js";
|
|
2
4
|
import { renderAskSystemPrompt } from "../prompts/index.js";
|
|
3
5
|
import { getConfig } from "../store/config.js";
|
|
4
6
|
import { ensureProviderConfigured } from "../commands/providers.js";
|
|
5
7
|
import { loadProjectContext } from "../store/project.js";
|
|
6
8
|
import { parseAllToolCalls, formatToolArgs, looksLikePromptLeak } from "../agent/runner.js";
|
|
7
9
|
import { runToolCall } from "../tools/registry.js";
|
|
10
|
+
import { getToolDefinitions } from "../tools/definitions.js";
|
|
11
|
+
import { appendAssistantWithTools, appendToolResult, } from "../agent/tool-history.js";
|
|
8
12
|
/** Strip tool-call markup so only the model's prose preamble remains. */
|
|
9
13
|
function stripToolCallSyntax(text) {
|
|
10
14
|
return text
|
|
@@ -88,17 +92,19 @@ async function buildAskMessages(prompt, options) {
|
|
|
88
92
|
const config = getConfig();
|
|
89
93
|
const provider = options.provider ?? config.defaultProvider;
|
|
90
94
|
await ensureProviderConfigured(provider);
|
|
95
|
+
const model = options.model ?? config.defaultModel;
|
|
91
96
|
const projectContext = await loadProjectContext();
|
|
97
|
+
const native = resolveToolDialect(provider, model, config.toolCalling) !== "none";
|
|
92
98
|
const systemPrompt = projectContext
|
|
93
|
-
? `${renderAskSystemPrompt()}\n\nProject context from .clai/context.md:\n${projectContext}`
|
|
94
|
-
: renderAskSystemPrompt();
|
|
99
|
+
? `${renderAskSystemPrompt({ nativeTools: native })}\n\nProject context from .clai/context.md:\n${projectContext}`
|
|
100
|
+
: renderAskSystemPrompt({ nativeTools: native });
|
|
95
101
|
const userMessage = { role: "user", content: prompt };
|
|
96
102
|
if (options.images && options.images.length > 0) {
|
|
97
103
|
userMessage.images = options.images;
|
|
98
104
|
}
|
|
99
105
|
return {
|
|
100
106
|
provider,
|
|
101
|
-
model
|
|
107
|
+
model,
|
|
102
108
|
messages: [
|
|
103
109
|
{ role: "system", content: systemPrompt },
|
|
104
110
|
...(options.history ?? []),
|
|
@@ -141,13 +147,14 @@ async function streamAskRound(request, messages, onToken) {
|
|
|
141
147
|
let full = "";
|
|
142
148
|
let forwardedLen = 0;
|
|
143
149
|
let suppressed = false;
|
|
144
|
-
await streamWithProvider({ ...request, messages }, (token) => {
|
|
150
|
+
const completion = await streamWithProvider({ ...request, messages }, (token) => {
|
|
145
151
|
full += token;
|
|
146
152
|
if (suppressed)
|
|
147
153
|
return;
|
|
154
|
+
// When native tools are attached, do not suppress prose on fence markers
|
|
155
|
+
// (there should be none); still suppress if the model emits fences anyway.
|
|
148
156
|
const toolAt = toolCallStartIndex(full);
|
|
149
157
|
if (toolAt >= 0) {
|
|
150
|
-
// Forward only the clean prefix before the tool-call marker, once.
|
|
151
158
|
if (toolAt > forwardedLen)
|
|
152
159
|
onToken(full.slice(forwardedLen, toolAt));
|
|
153
160
|
forwardedLen = full.length;
|
|
@@ -159,7 +166,18 @@ async function streamAskRound(request, messages, onToken) {
|
|
|
159
166
|
forwardedLen = full.length;
|
|
160
167
|
}
|
|
161
168
|
});
|
|
162
|
-
|
|
169
|
+
const text = full || completion.text;
|
|
170
|
+
if (completion.toolCalls?.length) {
|
|
171
|
+
return {
|
|
172
|
+
text,
|
|
173
|
+
toolCalls: completion.toolCalls.map((tc) => ({
|
|
174
|
+
name: tc.name,
|
|
175
|
+
args: tc.args,
|
|
176
|
+
})),
|
|
177
|
+
nativeIds: completion.toolCalls.map((tc) => tc.id),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
return { text };
|
|
163
181
|
}
|
|
164
182
|
/**
|
|
165
183
|
* Drive ask mode to its final answer.
|
|
@@ -176,6 +194,14 @@ async function streamAskRound(request, messages, onToken) {
|
|
|
176
194
|
async function resolveAskAnswer(originalPrompt, provider, model, messages, options, onToken) {
|
|
177
195
|
const config = getConfig();
|
|
178
196
|
const maxTokens = config.thinking?.enabled ? 8_192 : 4_096;
|
|
197
|
+
const native = resolveToolDialect(provider, model, config.toolCalling) !== "none";
|
|
198
|
+
// Research tools + agent.handoff (meta; not executed as research — action UX).
|
|
199
|
+
const askDefs = native
|
|
200
|
+
? [
|
|
201
|
+
...getToolDefinitions({ askMode: true }).filter((d) => ASK_RESEARCH_TOOLS.has(d.name)),
|
|
202
|
+
...getToolDefinitions({ names: ["agent.handoff"] }),
|
|
203
|
+
]
|
|
204
|
+
: undefined;
|
|
179
205
|
const baseRequest = {
|
|
180
206
|
provider,
|
|
181
207
|
model,
|
|
@@ -183,6 +209,9 @@ async function resolveAskAnswer(originalPrompt, provider, model, messages, optio
|
|
|
183
209
|
maxTokens,
|
|
184
210
|
thinking: config.thinking,
|
|
185
211
|
...(options.signal ? { signal: options.signal } : {}),
|
|
212
|
+
...(askDefs?.length
|
|
213
|
+
? { tools: askDefs, toolChoice: "auto" }
|
|
214
|
+
: {}),
|
|
186
215
|
};
|
|
187
216
|
// Surface research activity (web.search/web.fetch/…) to the UI as tool
|
|
188
217
|
// events so the user can see what's being searched/fetched.
|
|
@@ -219,22 +248,28 @@ async function resolveAskAnswer(originalPrompt, provider, model, messages, optio
|
|
|
219
248
|
role: "user",
|
|
220
249
|
content: `Fresh web.search was run before answering because the user requested current/web-backed information.\n` +
|
|
221
250
|
`Query: ${query}\nResult:\n${truncateToolOutput(output, "web.search")}\n\n` +
|
|
222
|
-
"Answer from these current results.
|
|
251
|
+
"Answer from these current results. Prefer high-trust hosts (.gov, major news). Treat a single junk/contradictory snippet as unverified until confirmed. If insufficient, call web.search/web.fetch again before answering. Your final answer MUST cite 1–3 URLs from tool results.",
|
|
223
252
|
});
|
|
224
253
|
}
|
|
225
254
|
for (let round = 0; round < ASK_MAX_RESEARCH_ROUNDS; round += 1) {
|
|
226
255
|
options.signal?.throwIfAborted();
|
|
227
|
-
const
|
|
256
|
+
const roundResult = await streamAskRound(baseRequest, messages, onToken);
|
|
257
|
+
const text = roundResult.text;
|
|
228
258
|
// ── Prompt-leak guard ──────────────────────────────────────────────
|
|
229
259
|
// If the model's response contains distinctive system-prompt markers,
|
|
230
260
|
// it is repeating its instructions (e.g. in response to "repeat your
|
|
231
|
-
// instructions verbatim"). Any
|
|
232
|
-
// EXAMPLES from the prompt, not real tool requests. Treat
|
|
233
|
-
// response as a final text answer
|
|
261
|
+
// instructions verbatim"). Any tool blocks / native toolCalls in that
|
|
262
|
+
// output are EXAMPLES from the prompt, not real tool requests. Treat
|
|
263
|
+
// the whole response as a final text answer and do not execute tools.
|
|
234
264
|
if (looksLikePromptLeak(text)) {
|
|
235
265
|
return text;
|
|
236
266
|
}
|
|
237
|
-
|
|
267
|
+
// Prefer native toolCalls; fall back to text fences.
|
|
268
|
+
const allCalls = roundResult.toolCalls?.length
|
|
269
|
+
? roundResult.toolCalls
|
|
270
|
+
: parseAllToolCalls(text);
|
|
271
|
+
const nativeIds = roundResult.nativeIds ??
|
|
272
|
+
allCalls.map((_, i) => syntheticToolCallId(i));
|
|
238
273
|
const calls = allCalls.filter((call) => ASK_RESEARCH_TOOLS.has(call.name));
|
|
239
274
|
if (calls.length === 0) {
|
|
240
275
|
// No allowed research tool requested. If the model instead asked for a
|
|
@@ -279,8 +314,19 @@ async function resolveAskAnswer(originalPrompt, provider, model, messages, optio
|
|
|
279
314
|
}
|
|
280
315
|
// Record the model's tool-call turn, then run the read-only tools and
|
|
281
316
|
// feed their outputs back so the next round can synthesize.
|
|
282
|
-
|
|
283
|
-
|
|
317
|
+
if (roundResult.toolCalls?.length) {
|
|
318
|
+
appendAssistantWithTools(messages, stripToolCallSyntax(text), roundResult.toolCalls.map((c, i) => ({
|
|
319
|
+
id: nativeIds[i] ?? syntheticToolCallId(i),
|
|
320
|
+
name: c.name,
|
|
321
|
+
args: c.args,
|
|
322
|
+
})));
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
messages.push({ role: "assistant", content: text });
|
|
326
|
+
}
|
|
327
|
+
for (const [callIndex, call] of calls
|
|
328
|
+
.slice(0, ASK_MAX_TOOLS_PER_ROUND)
|
|
329
|
+
.entries()) {
|
|
284
330
|
options.signal?.throwIfAborted();
|
|
285
331
|
const id = `ask-${(toolSeq += 1)}`;
|
|
286
332
|
emit({
|
|
@@ -308,19 +354,27 @@ async function resolveAskAnswer(originalPrompt, provider, model, messages, optio
|
|
|
308
354
|
ok,
|
|
309
355
|
summary: researchResultSummary(call, ok),
|
|
310
356
|
});
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
357
|
+
const resultBody = `Result of ${call.name}(${JSON.stringify(call.args)}):\n${truncateToolOutput(output, call.name)}`;
|
|
358
|
+
if (roundResult.toolCalls?.length) {
|
|
359
|
+
const sourceIndex = allCalls.indexOf(call);
|
|
360
|
+
appendToolResult(messages, nativeIds[sourceIndex] ?? syntheticToolCallId(callIndex), resultBody, call.name, ok);
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
messages.push({
|
|
364
|
+
role: "user",
|
|
365
|
+
content: resultBody,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
315
368
|
}
|
|
316
369
|
}
|
|
317
370
|
// Round cap reached — force a tool-free final answer from what we gathered.
|
|
318
371
|
options.signal?.throwIfAborted();
|
|
319
372
|
messages.push({
|
|
320
373
|
role: "user",
|
|
321
|
-
content: "Stop researching now. Using only what you have already gathered above, give your final answer to the original question. Do NOT call any more tools.",
|
|
374
|
+
content: "Stop researching now. Using only what you have already gathered above, give your final answer to the original question. Do NOT call any more tools. Prefer high-trust sources; only claim a page confirms a fact if that fact appears in the tool output; include 1–3 source URLs from the results above.",
|
|
322
375
|
});
|
|
323
|
-
|
|
376
|
+
const finalRound = await streamAskRound(baseRequest, messages, onToken);
|
|
377
|
+
return finalRound.text;
|
|
324
378
|
}
|
|
325
379
|
export async function runAsk(prompt, options = {}) {
|
|
326
380
|
const request = await buildAskMessages(prompt, options);
|
package/dist/modes/ask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/modes/ask.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/modes/ask.ts"],"names":[],"mappings":"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"}
|