mindweave 2.4.9 → 2.5.1
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 +145 -144
- package/dist/cli/App.js +47 -8
- package/dist/cli/App.js.map +1 -1
- package/dist/cli/commandArgs.js +7 -1
- package/dist/cli/commandArgs.js.map +1 -1
- package/dist/cli/commands.js +1 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/components/ApprovalBox.js +10 -1
- package/dist/cli/components/ApprovalBox.js.map +1 -1
- package/dist/cli/components/McpMinitabs.js +1 -1
- package/dist/cli/components/Picker.js +1 -1
- package/dist/cli/components/Picker.js.map +1 -1
- package/dist/cli/components/ToolLine.js +1 -1
- package/dist/cli/components/ToolLine.js.map +1 -1
- package/dist/cli/feedback.js +223 -0
- package/dist/cli/feedback.js.map +1 -0
- package/dist/cli/framebuffer/writer.js +1 -1
- package/dist/cli/toolDisplay.js +4 -3
- package/dist/cli/toolDisplay.js.map +1 -1
- package/dist/core/turnRunner.js +366 -0
- package/dist/core/turnRunner.js.map +1 -0
- package/dist/drivers/anthropic/client.js +77 -21
- package/dist/drivers/anthropic/client.js.map +1 -1
- package/dist/drivers/anthropic/manifest.js +28 -11
- package/dist/drivers/anthropic/manifest.js.map +1 -1
- package/dist/drivers/cerebras/manifest.js +7 -1
- package/dist/drivers/cerebras/manifest.js.map +1 -1
- package/dist/drivers/deepseek/manifest.js +12 -31
- package/dist/drivers/deepseek/manifest.js.map +1 -1
- package/dist/drivers/glm/manifest.js +18 -5
- package/dist/drivers/glm/manifest.js.map +1 -1
- package/dist/drivers/kimi/manifest.js +13 -10
- package/dist/drivers/kimi/manifest.js.map +1 -1
- package/dist/drivers/meta/manifest.js +21 -16
- package/dist/drivers/meta/manifest.js.map +1 -1
- package/dist/drivers/minimax/manifest.js +15 -12
- package/dist/drivers/minimax/manifest.js.map +1 -1
- package/dist/drivers/openai/manifest.js +24 -7
- package/dist/drivers/openai/manifest.js.map +1 -1
- package/dist/drivers/qwen/manifest.js +19 -6
- package/dist/drivers/qwen/manifest.js.map +1 -1
- package/dist/drivers/xai/client.js +12 -10
- package/dist/drivers/xai/client.js.map +1 -1
- package/dist/drivers/xai/manifest.js +62 -25
- package/dist/drivers/xai/manifest.js.map +1 -1
- package/dist/dynamo/engine.js +179 -99
- package/dist/dynamo/engine.js.map +1 -1
- package/dist/governor/skills.js +1 -1
- package/dist/governor/write.js +61 -0
- package/dist/governor/write.js.map +1 -1
- package/dist/mcp/configWrite.js +1 -1
- package/dist/memory/compaction.js +10 -2
- package/dist/memory/compaction.js.map +1 -1
- package/dist/memory/store.js +8 -1
- package/dist/memory/store.js.map +1 -1
- package/dist/tools/backgroundShells.js +4 -3
- package/dist/tools/backgroundShells.js.map +1 -1
- package/dist/tools/deferredNative.js +13 -4
- package/dist/tools/deferredNative.js.map +1 -1
- package/dist/tools/detail.js +9 -6
- package/dist/tools/detail.js.map +1 -1
- package/dist/tools/edit.js +2 -1
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/governorTools.js +113 -9
- package/dist/tools/governorTools.js.map +1 -1
- package/dist/tools/mcpAdd.js +87 -4
- package/dist/tools/mcpAdd.js.map +1 -1
- package/dist/tools/mcpSearch.js +5 -4
- package/dist/tools/mcpSearch.js.map +1 -1
- package/dist/tools/mindweaveStatus.js +113 -0
- package/dist/tools/mindweaveStatus.js.map +1 -0
- package/dist/tools/nativeStderr.js +27 -0
- package/dist/tools/nativeStderr.js.map +1 -0
- package/dist/tools/registry.js +6 -4
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/replaceSymbol.js +2 -1
- package/dist/tools/replaceSymbol.js.map +1 -1
- package/dist/tools/runCommand.js +59 -21
- package/dist/tools/runCommand.js.map +1 -1
- package/dist/tools/screenshot.js +17 -4
- package/dist/tools/screenshot.js.map +1 -1
- package/dist/tools/todo.js +5 -5
- package/dist/tools/todo.js.map +1 -1
- package/dist/tools/writeFile.js +2 -1
- package/dist/tools/writeFile.js.map +1 -1
- package/package.json +7 -3
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* turnRunner.ts — drives one Mindweave turn for a caller that is not a terminal.
|
|
3
|
+
*
|
|
4
|
+
* `respond()` in dynamo/engine.ts already speaks nothing but plain JSON: a Session in,
|
|
5
|
+
* a stream of EngineEvents out, no filesystem or terminal coupling of its own (see
|
|
6
|
+
* dynamo/README.md). What the CLI adds on top is the reveal pacer that times each event
|
|
7
|
+
* onto the alt-screen — real UI concerns, of no use to a caller that draws its own
|
|
8
|
+
* chat. This module is the other front door: it maps the same events into a plain
|
|
9
|
+
* TurnEvent stream (the tool display names and colours come from cli/toolDisplay.ts,
|
|
10
|
+
* so a tool call reads the same way in every surface) with no Ink, no pacing, no
|
|
11
|
+
* terminal assumptions. A GUI or a server can drive a session with just this file.
|
|
12
|
+
*/
|
|
13
|
+
import { respond } from "../dynamo/engine.js";
|
|
14
|
+
import { createSession, resumeSession, reloadProjectMemory } from "../memory/session.js";
|
|
15
|
+
import { saveSession, listSessions as listSessionsRaw } from "../memory/store.js";
|
|
16
|
+
import { toolDisplay, isGroupable } from "../cli/toolDisplay.js";
|
|
17
|
+
import { accessRefusal, providerOutage } from "../drivers/providerError.js";
|
|
18
|
+
import { providerOf, modelLabel, refreshModels, DISCOVERY_TTL_MS, withModel, saveModelConfig, thinkLevels, thinkLabel } from "../dynamo/model.js";
|
|
19
|
+
import { allProviders, modelsOf } from "../drivers/registry.js";
|
|
20
|
+
import { errText } from "../tools/editTarget.js";
|
|
21
|
+
import { loadConfig, hasApiKey, saveApiKey, removeApiKey } from "../cli/bootstrap.js";
|
|
22
|
+
import { describeImage, isRejection } from "../memory/images.js";
|
|
23
|
+
import { stat } from "node:fs/promises";
|
|
24
|
+
import { RECAP_STUB } from "../memory/compaction.js";
|
|
25
|
+
import { stopChassis } from "../alternator/lane.js";
|
|
26
|
+
import { APPROVAL_TEXT, APPROVAL_DISMISSED } from "../tools/approval.js";
|
|
27
|
+
import { MODES, DEFAULT_MODE, modeById, modeFromFlags } from "../cli/modes.js";
|
|
28
|
+
/**
|
|
29
|
+
* The interaction modes (Lightning/Architect/Sentinel) — a client concept, same
|
|
30
|
+
* pure data/functions the CLI's shift-tab indicator uses (cli/modes.ts). The
|
|
31
|
+
* engine never sees a mode name, only the `planMode`/`guarded` flags it implies.
|
|
32
|
+
*/
|
|
33
|
+
export { MODES, DEFAULT_MODE, modeById, modeFromFlags };
|
|
34
|
+
/**
|
|
35
|
+
* `requestApproval`'s resolved string is a plain option label UNLESS the caller
|
|
36
|
+
* offered `freeText`: a typed answer comes back prefixed with `APPROVAL_TEXT`
|
|
37
|
+
* (strip it to get what was typed), and a dialog closed with no choice made should
|
|
38
|
+
* resolve to `APPROVAL_DISMISSED` exactly, never an empty string or a thrown error.
|
|
39
|
+
*/
|
|
40
|
+
export { APPROVAL_TEXT, APPROVAL_DISMISSED };
|
|
41
|
+
/**
|
|
42
|
+
* Load the API key(s) into process.env — the same global `~/.mindweave/.env` /
|
|
43
|
+
* project `.env` / shell-env layering the CLI uses (see cli/bootstrap.ts). Call
|
|
44
|
+
* this once, at startup, before the first `startSession`.
|
|
45
|
+
*/
|
|
46
|
+
export { loadConfig };
|
|
47
|
+
/**
|
|
48
|
+
* Every installed provider — the real registry (drivers/registry.ts), not a
|
|
49
|
+
* decorative list — with whether a key is already on file for it and the
|
|
50
|
+
* models it currently offers. Call `refreshDiscoveredModels()` first if the
|
|
51
|
+
* caller wants a discovered provider's (e.g. OpenRouter's) list fully current.
|
|
52
|
+
*/
|
|
53
|
+
export function providerSummaries() {
|
|
54
|
+
return allProviders().map((p) => ({
|
|
55
|
+
id: p.id,
|
|
56
|
+
label: p.label,
|
|
57
|
+
apiKeyEnv: p.apiKeyEnv,
|
|
58
|
+
keysUrl: p.keysUrl,
|
|
59
|
+
connected: hasApiKey(p.apiKeyEnv),
|
|
60
|
+
models: modelsOf(p).map((m) => ({ id: m.id, label: m.label, description: m.description })),
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
/** Pull fresh model lists for providers that discover theirs live (OpenRouter and
|
|
64
|
+
* any local-runtime provider) — same TTL the CLI's own picker uses. */
|
|
65
|
+
export function refreshDiscoveredModels() {
|
|
66
|
+
return refreshModels({ maxAgeMs: DISCOVERY_TTL_MS });
|
|
67
|
+
}
|
|
68
|
+
/** Save a key for a provider (slot 1 — the primary key). Takes effect immediately;
|
|
69
|
+
* no restart needed, same as the CLI's `/key`. */
|
|
70
|
+
export function setProviderKey(apiKeyEnv, key) {
|
|
71
|
+
saveApiKey(apiKeyEnv, key);
|
|
72
|
+
}
|
|
73
|
+
/** Remove the stored key at slot 1. A provider with no key on file falls back to
|
|
74
|
+
* whatever `requestApproval`-less refusal path its driver already has. */
|
|
75
|
+
export function clearProviderKey(apiKeyEnv) {
|
|
76
|
+
removeApiKey(apiKeyEnv, 1);
|
|
77
|
+
}
|
|
78
|
+
/** The model driving a session's NEXT turn — read after `setSessionModel`, or at
|
|
79
|
+
* session load, to show the composer's picker the model that's actually active. */
|
|
80
|
+
export function sessionModel(session) {
|
|
81
|
+
const id = session.modelConfig.model;
|
|
82
|
+
const manifest = providerOf(id);
|
|
83
|
+
return { id, label: modelLabel(id), providerId: manifest.id, providerLabel: manifest.label };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Switch a live session onto a different model, mid-conversation — the same thing
|
|
87
|
+
* `/model` does in the CLI. Synchronous onto the session (the next `runTurn` picks
|
|
88
|
+
* it up automatically; `ensureDriver` inside `respond()` loads that provider's wire
|
|
89
|
+
* code lazily, same as any other model choice), and persisted so the choice survives
|
|
90
|
+
* a restart. `withModel` also clamps the reasoning level onto whatever ladder the
|
|
91
|
+
* new model actually offers, so a thinking-heavy setting doesn't silently misfire
|
|
92
|
+
* on a model that has no such dial.
|
|
93
|
+
*/
|
|
94
|
+
export async function setSessionModel(session, model) {
|
|
95
|
+
session.modelConfig = withModel(session.modelConfig, model);
|
|
96
|
+
await saveModelConfig(session.cwd, session.modelConfig);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* The `/think` ladder for a session's CURRENT model, and which rung it's on now.
|
|
100
|
+
* Every model has its own ladder shape — DeepSeek is Standard/High/Maximum,
|
|
101
|
+
* Gemini is Standard/Thinking/Maximum, some models can't turn thinking off at
|
|
102
|
+
* all — so a fixed three-option Off/Standard/Extended picker is wrong for most
|
|
103
|
+
* of them. This is what the composer's thinking picker should build itself from,
|
|
104
|
+
* fresh, every time the model changes.
|
|
105
|
+
*/
|
|
106
|
+
export function sessionThinkLevels(session) {
|
|
107
|
+
return { levels: thinkLevels(session.modelConfig.model), current: thinkLabel(session.modelConfig) };
|
|
108
|
+
}
|
|
109
|
+
/** Switch a live session onto a different rung of its model's OWN reasoning
|
|
110
|
+
* ladder — the same thing `/think` does in the CLI. Persisted like a model
|
|
111
|
+
* switch; takes effect on the next turn. */
|
|
112
|
+
export async function setSessionThinking(session, level) {
|
|
113
|
+
session.modelConfig = { ...session.modelConfig, thinking: level.thinking, effort: level.effort };
|
|
114
|
+
await saveModelConfig(session.cwd, session.modelConfig);
|
|
115
|
+
}
|
|
116
|
+
/** Start a brand-new session rooted at `cwd` — one per open project/window. */
|
|
117
|
+
export function startSession(cwd) {
|
|
118
|
+
return createSession(cwd);
|
|
119
|
+
}
|
|
120
|
+
/** Reopen a session that was saved earlier, so a chat window can be closed and reopened. */
|
|
121
|
+
export function loadSession(cwd, sessionId) {
|
|
122
|
+
return resumeSession(cwd, sessionId);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Release a session's live resources — background shells, MCP server processes,
|
|
126
|
+
* chassis (LSP) instances — before switching away from it. Same cleanup as the
|
|
127
|
+
* CLI's `stopCurrentLanes`: these are child processes / open handles the session
|
|
128
|
+
* owns, not garbage-collectable state, so leaving them running across a switch
|
|
129
|
+
* leaks a process pool per session swapped away from.
|
|
130
|
+
*/
|
|
131
|
+
export async function disposeSession(session) {
|
|
132
|
+
const ctx = session.toolContext;
|
|
133
|
+
ctx.backgroundShells?.dispose();
|
|
134
|
+
await ctx.mcp?.dispose();
|
|
135
|
+
for (const ch of ctx.chassisByRoot?.values() ?? (ctx.chassis ? [ctx.chassis] : [])) {
|
|
136
|
+
await stopChassis(ch);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** Every saved session for a project, most-recent first — for a session picker. */
|
|
140
|
+
export async function listSessions(cwd) {
|
|
141
|
+
const metas = await listSessionsRaw(cwd);
|
|
142
|
+
return [...metas].sort((a, b) => b.updatedAt - a.updatedAt);
|
|
143
|
+
}
|
|
144
|
+
/** Compaction appends "[<paths> was attached here but is no longer in context …]" to a
|
|
145
|
+
* user message whose image it evicted (see IMAGE_CLEARED_STUB; older sessions carry an
|
|
146
|
+
* earlier wording). That note is for the MODEL. Replay shows the person their own words,
|
|
147
|
+
* plus which attachments have expired. */
|
|
148
|
+
const EXPIRED_IMAGE_NOTE = /\s*\[([^[\]]+?) was attached here but is no longer in context[^\]]*\]/g;
|
|
149
|
+
function splitExpiredImages(content) {
|
|
150
|
+
const expired = [];
|
|
151
|
+
const text = content.replace(EXPIRED_IMAGE_NOTE, (_m, names) => {
|
|
152
|
+
for (const n of names.split(", "))
|
|
153
|
+
expired.push(n.split(/[\\/]/).pop() ?? n);
|
|
154
|
+
return "";
|
|
155
|
+
});
|
|
156
|
+
return expired.length ? { text: text.trimEnd(), expiredImages: expired } : { text: content };
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Turn a loaded session's stored transcript back into the same shape the live
|
|
160
|
+
* TurnEvent stream uses, so a session switch in the UI can redraw the whole
|
|
161
|
+
* conversation with the one set of renderers instead of a second code path.
|
|
162
|
+
* A synthetic user entry (an internal nudge, never typed by the person) is
|
|
163
|
+
* skipped — see Entry's `synthetic` field.
|
|
164
|
+
*/
|
|
165
|
+
export function replayHistory(session) {
|
|
166
|
+
const calls = new Map();
|
|
167
|
+
const out = [];
|
|
168
|
+
for (const entry of session.transcript) {
|
|
169
|
+
if (entry.role === "user") {
|
|
170
|
+
if (!entry.synthetic)
|
|
171
|
+
out.push({ type: "userMessage", ...splitExpiredImages(entry.content) });
|
|
172
|
+
}
|
|
173
|
+
else if (entry.role === "assistant") {
|
|
174
|
+
// RECAP_STUB is compaction's note to the MODEL that an old status reply was
|
|
175
|
+
// condensed; it is not something the agent said, so it is never shown.
|
|
176
|
+
if (entry.content.trim() && entry.content !== RECAP_STUB)
|
|
177
|
+
out.push({ type: "assistantMessage", text: entry.content });
|
|
178
|
+
for (const call of entry.toolCalls ?? [])
|
|
179
|
+
calls.set(call.id, call);
|
|
180
|
+
}
|
|
181
|
+
else if (entry.role === "tool") {
|
|
182
|
+
const call = calls.get(entry.toolCallId);
|
|
183
|
+
if (entry.quiet)
|
|
184
|
+
continue;
|
|
185
|
+
// The same display name a live toolStart carries ("Run", "Read"), not the raw
|
|
186
|
+
// tool id — a reopened session was showing `run_command` where the live one said Run.
|
|
187
|
+
let name = entry.displayName ?? call?.name ?? "tool";
|
|
188
|
+
let arg;
|
|
189
|
+
let kind = entry.displayKind ?? "meta";
|
|
190
|
+
if (call) {
|
|
191
|
+
const d = toolDisplay(call.name, safeParseArgs(call.arguments));
|
|
192
|
+
if (!entry.displayName)
|
|
193
|
+
name = d.name;
|
|
194
|
+
arg = d.arg;
|
|
195
|
+
if (!entry.displayKind)
|
|
196
|
+
kind = d.kind;
|
|
197
|
+
}
|
|
198
|
+
out.push({
|
|
199
|
+
type: "toolReplay",
|
|
200
|
+
name,
|
|
201
|
+
arg,
|
|
202
|
+
kind,
|
|
203
|
+
ok: !entry.isError,
|
|
204
|
+
summary: entry.summary ?? entry.content,
|
|
205
|
+
detail: entry.detail,
|
|
206
|
+
detailKind: entry.detailKind,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
else if (entry.role === "summary") {
|
|
210
|
+
out.push({ type: "compactionSummary", text: entry.content });
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return out;
|
|
214
|
+
}
|
|
215
|
+
/** Resolve dropped/attached file paths into ImageRefs, same checks the CLI applies
|
|
216
|
+
* (format, size, dimensions). A rejected file is reported through `onEvent` and
|
|
217
|
+
* otherwise just left out — it never blocks the rest of the message from sending. */
|
|
218
|
+
async function resolveImages(paths, onEvent) {
|
|
219
|
+
const refs = [];
|
|
220
|
+
for (const path of paths) {
|
|
221
|
+
try {
|
|
222
|
+
const st = await stat(path);
|
|
223
|
+
const described = await describeImage(path, st.size);
|
|
224
|
+
if (isRejection(described))
|
|
225
|
+
onEvent({ type: "activity", line: `${path}: ${described.reason}`, error: true });
|
|
226
|
+
else
|
|
227
|
+
refs.push(described);
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
onEvent({ type: "activity", line: `${path}: couldn't read that file`, error: true });
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return refs;
|
|
234
|
+
}
|
|
235
|
+
function safeParseArgs(raw) {
|
|
236
|
+
try {
|
|
237
|
+
return JSON.parse(raw);
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
return {};
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Wire the client-side channels a session needs beyond `respond()` itself — the
|
|
245
|
+
* same seam App.tsx's `attachApproval` fills for the CLI. Without `requestApproval`
|
|
246
|
+
* every approval call fails CLOSED (see tools/approval.ts): reads and in-workspace
|
|
247
|
+
* writes still work, but a forbidden-path lift, a write outside the workspace, an
|
|
248
|
+
* ask_user question, or reading another agent's data all get refused outright
|
|
249
|
+
* instead of asking. Call this once per session, right after `startSession` /
|
|
250
|
+
* `loadSession`, before the first `runTurn`.
|
|
251
|
+
*/
|
|
252
|
+
export function attachHandlers(session, handlers) {
|
|
253
|
+
if (handlers.requestApproval)
|
|
254
|
+
session.toolContext.requestApproval = handlers.requestApproval;
|
|
255
|
+
if (handlers.interrupt)
|
|
256
|
+
session.toolContext.interrupt = handlers.interrupt;
|
|
257
|
+
if (handlers.onModeChange)
|
|
258
|
+
session.toolContext.onModeChange = handlers.onModeChange;
|
|
259
|
+
}
|
|
260
|
+
/** The mode a session's CURRENT flags amount to — read after load, or after
|
|
261
|
+
* `onModeChange` fires, to show the UI what's actually active. */
|
|
262
|
+
export function sessionMode(session) {
|
|
263
|
+
return modeFromFlags(session.toolContext);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Switch a session's interaction mode — same thing shift-tab does in the CLI.
|
|
267
|
+
* A client concept: sets the `planMode`/`guarded` flags the engine reads, never
|
|
268
|
+
* anything the engine itself knows the name of. Entering Sentinel clears any
|
|
269
|
+
* earlier per-tool grants, so it starts genuinely vigilant rather than carrying
|
|
270
|
+
* over permissions given under a looser mode.
|
|
271
|
+
*/
|
|
272
|
+
export function applySessionMode(session, id) {
|
|
273
|
+
const mode = modeById(id);
|
|
274
|
+
session.toolContext.planMode = mode.readOnly;
|
|
275
|
+
session.toolContext.guarded = mode.guarded;
|
|
276
|
+
if (mode.guarded)
|
|
277
|
+
session.toolContext.guardAllowed = undefined;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Run one turn: append the user's message, stream the reply, persist after every step.
|
|
281
|
+
* Mirrors App.tsx's streamRespond — same event mapping, without the reveal pacer.
|
|
282
|
+
*/
|
|
283
|
+
export async function runTurn(session, message, handlers) {
|
|
284
|
+
await reloadProjectMemory(session).catch(() => { });
|
|
285
|
+
const images = await resolveImages(message.imagePaths ?? [], handlers.onEvent);
|
|
286
|
+
session.transcript.push({
|
|
287
|
+
role: "user",
|
|
288
|
+
content: message.content,
|
|
289
|
+
...(images.length > 0 ? { images } : {}),
|
|
290
|
+
});
|
|
291
|
+
await streamTurn(session, handlers);
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Continue a session with NO new message — the engine notices what changed on its
|
|
295
|
+
* own (a background shell finished) from state already on the session. Mirrors the
|
|
296
|
+
* CLI's `reactToBackground`: it calls the exact same `streamRespond` a typed message
|
|
297
|
+
* would, just without anything new having been said.
|
|
298
|
+
*/
|
|
299
|
+
export function continueTurn(session, handlers) {
|
|
300
|
+
return streamTurn(session, handlers);
|
|
301
|
+
}
|
|
302
|
+
/** Re-export of the CLI's own wake decision (cli/backgroundWake.ts) — plain state in,
|
|
303
|
+
* boolean out, no Ink involved — so a caller can reuse the exact same rule for when a
|
|
304
|
+
* finished background command is worth waking the model for. */
|
|
305
|
+
export { shouldReactToBackground } from "../cli/backgroundWake.js";
|
|
306
|
+
async function streamTurn(session, handlers) {
|
|
307
|
+
const { onEvent, steer, signal } = handlers;
|
|
308
|
+
try {
|
|
309
|
+
await respond(session, {
|
|
310
|
+
steer,
|
|
311
|
+
signal,
|
|
312
|
+
onActivity: (line, opts) => onEvent({ type: "activity", line, error: opts?.error }),
|
|
313
|
+
onCompaction: (report) => onEvent({ type: "compaction", before: report.before, after: report.after, window: report.window }),
|
|
314
|
+
onEvent: (e) => {
|
|
315
|
+
if (e.type === "text") {
|
|
316
|
+
onEvent({ type: "text", delta: e.delta });
|
|
317
|
+
}
|
|
318
|
+
else if (e.type === "tool" && e.phase === "start") {
|
|
319
|
+
if (e.name === "spawn_subagent")
|
|
320
|
+
return; // rendered by the subagentStart block, not a raw row
|
|
321
|
+
const d = toolDisplay(e.name, e.args);
|
|
322
|
+
if (e.agent) {
|
|
323
|
+
onEvent({ type: "subToolStart", agentId: e.agent, toolId: e.id, name: d.name, arg: d.arg, kind: d.kind });
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
onEvent({ type: "toolStart", id: e.id, name: d.name, arg: d.arg, kind: d.kind, group: isGroupable(e.name), ...(d.covers ? { covers: d.covers } : {}) });
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
else if (e.type === "tool" && e.phase === "end") {
|
|
330
|
+
if (e.name === "spawn_subagent")
|
|
331
|
+
return;
|
|
332
|
+
if (e.agent) {
|
|
333
|
+
onEvent({ type: "subToolEnd", agentId: e.agent, toolId: e.id, ok: !e.error, summary: e.summary });
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
onEvent({ type: "toolEnd", id: e.id, ok: !e.error, summary: e.summary, detail: e.detail, detailFull: e.detailFull, detailKind: e.detailKind, quiet: e.quiet });
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
else if (e.type === "subagent" && e.phase === "start") {
|
|
340
|
+
onEvent({ type: "subagentStart", id: e.id, task: e.task, readOnly: e.readOnly });
|
|
341
|
+
}
|
|
342
|
+
else if (e.type === "subagent" && e.phase === "end") {
|
|
343
|
+
onEvent({ type: "subagentEnd", id: e.id, ok: !e.error, summary: e.summary });
|
|
344
|
+
}
|
|
345
|
+
else if (e.type === "usage") {
|
|
346
|
+
onEvent({ type: "usage", promptTokens: e.promptTokens, completionTokens: e.completionTokens, totalTokens: e.totalTokens });
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
persist: () => saveSession(session),
|
|
350
|
+
});
|
|
351
|
+
onEvent({ type: "done" });
|
|
352
|
+
}
|
|
353
|
+
catch (error) {
|
|
354
|
+
const refusal = accessRefusal(error, providerOf(session.modelConfig.model).label, false) ??
|
|
355
|
+
providerOutage(error, providerOf(session.modelConfig.model).label, modelLabel(session.modelConfig.model));
|
|
356
|
+
if (refusal)
|
|
357
|
+
onEvent({ type: "notice", title: refusal.title, body: refusal.body });
|
|
358
|
+
else
|
|
359
|
+
onEvent({ type: "error", text: errText(error) });
|
|
360
|
+
onEvent({ type: "done" });
|
|
361
|
+
}
|
|
362
|
+
finally {
|
|
363
|
+
await saveSession(session);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
//# sourceMappingURL=turnRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turnRunner.js","sourceRoot":"","sources":["../../src/core/turnRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -231,7 +231,14 @@ export function thinkingBudget(maxTokens) {
|
|
|
231
231
|
function applyReasoning(body, model, cfg, maxTokens) {
|
|
232
232
|
const surface = surfaceOf(model);
|
|
233
233
|
if (!surface.canDisableThinking) {
|
|
234
|
-
//
|
|
234
|
+
// The model is always thinking; `disabled` and a token budget are both 400s.
|
|
235
|
+
// `adaptive` is its own mode restated, and is sent only to ask for the text of
|
|
236
|
+
// its between-tool-call progress updates, which is empty by default. Reasoning
|
|
237
|
+
// stays hidden under `updates`. See `progressRequestOptions` for the beta header.
|
|
238
|
+
if (surface.progressUpdates) {
|
|
239
|
+
// The SDK's types predate the `updates` value; the wire accepts it with the header.
|
|
240
|
+
body.thinking = { type: "adaptive", display: "updates" };
|
|
241
|
+
}
|
|
235
242
|
}
|
|
236
243
|
else if (!surface.takesEffort) {
|
|
237
244
|
const budget = thinkingBudget(maxTokens);
|
|
@@ -244,6 +251,14 @@ function applyReasoning(body, model, cfg, maxTokens) {
|
|
|
244
251
|
if (surface.takesEffort)
|
|
245
252
|
body.output_config = { effort: cfg?.effort ?? "high" };
|
|
246
253
|
}
|
|
254
|
+
/** The beta that makes `thinking.display: "updates"` legal. Without it that value is a 400. */
|
|
255
|
+
export const PROGRESS_UPDATES_BETA = "thinking-display-updates-2026-08-18";
|
|
256
|
+
/** Per-request options for a body from `buildBody`: the beta header rides along exactly
|
|
257
|
+
* when the body asks for progress updates, so the two can never disagree. */
|
|
258
|
+
export function progressRequestOptions(body, signal) {
|
|
259
|
+
const updates = body.thinking?.display === "updates";
|
|
260
|
+
return { signal, ...(updates ? { headers: { "anthropic-beta": PROGRESS_UPDATES_BETA } } : {}) };
|
|
261
|
+
}
|
|
247
262
|
export function buildBody(req, maxTokens) {
|
|
248
263
|
const cfg = req.model;
|
|
249
264
|
const { messages, extraSystem } = renderMessages(req);
|
|
@@ -321,13 +336,36 @@ export function toStop(reason) {
|
|
|
321
336
|
return "end";
|
|
322
337
|
}
|
|
323
338
|
}
|
|
324
|
-
/**
|
|
325
|
-
|
|
339
|
+
/** What goes between a progress update and the text on either side of it: enough to
|
|
340
|
+
* make a paragraph break, and nothing if one is already there. */
|
|
341
|
+
export function paragraphBreak(before) {
|
|
342
|
+
if (!before || before.endsWith("\n\n"))
|
|
343
|
+
return "";
|
|
344
|
+
return before.endsWith("\n") ? "\n" : "\n\n";
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Pull the assembled reply and tool calls out of a finished message.
|
|
348
|
+
*
|
|
349
|
+
* On a model with `progressUpdates`, a `thinking` block that carries text is a
|
|
350
|
+
* progress update (the request asked for `display: "updates"`, under which reasoning
|
|
351
|
+
* comes back empty), and it is part of the reply: the note the model wrote for the
|
|
352
|
+
* user before a tool call. It is kept as reply text, a paragraph of its own, exactly
|
|
353
|
+
* as `emit` streamed it, so the stored reply matches what was on screen.
|
|
354
|
+
*/
|
|
355
|
+
export function toTurn(message, progressUpdates = surfaceOf(message.model).progressUpdates) {
|
|
326
356
|
let content = "";
|
|
357
|
+
let afterUpdate = false;
|
|
327
358
|
const toolCalls = [];
|
|
328
359
|
for (const block of message.content) {
|
|
329
360
|
if (block.type === "text") {
|
|
361
|
+
if (afterUpdate)
|
|
362
|
+
content += paragraphBreak(content);
|
|
330
363
|
content += block.text;
|
|
364
|
+
afterUpdate = false;
|
|
365
|
+
}
|
|
366
|
+
else if (block.type === "thinking" && progressUpdates && block.thinking) {
|
|
367
|
+
content += paragraphBreak(content) + block.thinking;
|
|
368
|
+
afterUpdate = true;
|
|
331
369
|
}
|
|
332
370
|
else if (block.type === "tool_use") {
|
|
333
371
|
toolCalls.push({
|
|
@@ -337,8 +375,8 @@ export function toTurn(message) {
|
|
|
337
375
|
arguments: JSON.stringify(block.input ?? {}),
|
|
338
376
|
});
|
|
339
377
|
}
|
|
340
|
-
// `thinking` blocks are deliberately dropped: reasoning reaches the live
|
|
341
|
-
// deltas, never the stored transcript.
|
|
378
|
+
// Reasoning `thinking` blocks are deliberately dropped: reasoning reaches the live
|
|
379
|
+
// UI as deltas, never the stored transcript.
|
|
342
380
|
}
|
|
343
381
|
return { content, toolCalls, stop: toStop(message.stop_reason) };
|
|
344
382
|
}
|
|
@@ -367,9 +405,8 @@ export async function webSearch(query, options = {}) {
|
|
|
367
405
|
/** Ask the model for one turn. Usage rides back with it: these are core's internal
|
|
368
406
|
* calls, and they spend real tokens that the meter would otherwise never see. */
|
|
369
407
|
export async function toolTurn(req, options = {}) {
|
|
370
|
-
const
|
|
371
|
-
|
|
372
|
-
});
|
|
408
|
+
const body = buildBody(req, MAX_TOKENS_BUFFERED);
|
|
409
|
+
const message = await api().messages.create(body, progressRequestOptions(body, options.signal));
|
|
373
410
|
return { ...toTurn(message), usage: toUsage(message.usage) };
|
|
374
411
|
}
|
|
375
412
|
/**
|
|
@@ -379,20 +416,16 @@ export async function toolTurn(req, options = {}) {
|
|
|
379
416
|
* call's JSON), so nothing here has to reassemble fragmented arguments by hand.
|
|
380
417
|
*/
|
|
381
418
|
export async function streamTurn(req, options = {}) {
|
|
382
|
-
const
|
|
383
|
-
|
|
384
|
-
});
|
|
419
|
+
const body = buildBody(req, MAX_TOKENS_STREAM);
|
|
420
|
+
const stream = api().messages.stream(body, progressRequestOptions(body, options.signal));
|
|
385
421
|
// Accumulated alongside the emit so a stream that dies partway can still hand back
|
|
386
422
|
// what the user watched arrive. Only the onEvent path needs it: with no sink nothing
|
|
387
423
|
// reached the screen, so there is no visible reply to keep in step with.
|
|
388
|
-
|
|
424
|
+
const reply = replyStream(surfaceOf(body.model).progressUpdates);
|
|
389
425
|
try {
|
|
390
426
|
if (options.onEvent) {
|
|
391
|
-
for await (const event of stream)
|
|
392
|
-
|
|
393
|
-
seen += event.delta.text;
|
|
394
|
-
emit(event, options.onEvent);
|
|
395
|
-
}
|
|
427
|
+
for await (const event of stream)
|
|
428
|
+
emit(event, options.onEvent, reply);
|
|
396
429
|
}
|
|
397
430
|
const message = await stream.finalMessage();
|
|
398
431
|
return { ...toTurn(message), usage: toUsage(message.usage) };
|
|
@@ -400,15 +433,18 @@ export async function streamTurn(req, options = {}) {
|
|
|
400
433
|
catch (error) {
|
|
401
434
|
if (isAbortLike(error))
|
|
402
435
|
throw error;
|
|
403
|
-
return salvagePartialTurn(
|
|
436
|
+
return salvagePartialTurn(reply.text, error);
|
|
404
437
|
}
|
|
405
438
|
}
|
|
439
|
+
export function replyStream(progressUpdates) {
|
|
440
|
+
return { progressUpdates, text: "", block: -1, afterUpdate: false };
|
|
441
|
+
}
|
|
406
442
|
/**
|
|
407
443
|
* Map one streaming event onto the shared event shape. Anthropic streams blocks
|
|
408
444
|
* rather than a flat delta channel, so a tool call announces itself with a
|
|
409
445
|
* `content_block_start` and then streams its arguments as `input_json_delta`.
|
|
410
446
|
*/
|
|
411
|
-
export function emit(event, onEvent) {
|
|
447
|
+
export function emit(event, onEvent, reply) {
|
|
412
448
|
if (event.type === "content_block_start") {
|
|
413
449
|
const block = event.content_block;
|
|
414
450
|
if (block.type === "tool_use") {
|
|
@@ -420,10 +456,30 @@ export function emit(event, onEvent) {
|
|
|
420
456
|
return;
|
|
421
457
|
const delta = event.delta;
|
|
422
458
|
if (delta.type === "text_delta" && delta.text) {
|
|
423
|
-
|
|
459
|
+
let text = delta.text;
|
|
460
|
+
if (reply) {
|
|
461
|
+
if (reply.afterUpdate && reply.block !== event.index)
|
|
462
|
+
text = paragraphBreak(reply.text) + text;
|
|
463
|
+
reply.afterUpdate = false;
|
|
464
|
+
reply.block = event.index;
|
|
465
|
+
reply.text += text;
|
|
466
|
+
}
|
|
467
|
+
onEvent({ type: "text", delta: text });
|
|
424
468
|
}
|
|
425
469
|
else if (delta.type === "thinking_delta" && delta.thinking) {
|
|
426
|
-
|
|
470
|
+
if (reply?.progressUpdates) {
|
|
471
|
+
// A progress update — the same rule `toTurn` applies, so screen and transcript agree.
|
|
472
|
+
let text = delta.thinking;
|
|
473
|
+
if (reply.block !== event.index)
|
|
474
|
+
text = paragraphBreak(reply.text) + text;
|
|
475
|
+
reply.afterUpdate = true;
|
|
476
|
+
reply.block = event.index;
|
|
477
|
+
reply.text += text;
|
|
478
|
+
onEvent({ type: "text", delta: text });
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
onEvent({ type: "reasoning", delta: delta.thinking });
|
|
482
|
+
}
|
|
427
483
|
}
|
|
428
484
|
else if (delta.type === "input_json_delta" && delta.partial_json) {
|
|
429
485
|
onEvent({ type: "tool_args", index: event.index, delta: delta.partial_json });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/drivers/anthropic/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/drivers/anthropic/client.ts"],"names":[],"mappings":"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"}
|