lsd-pi 1.3.7 → 1.3.9
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 +82 -0
- package/dist/resources/extensions/mcp-client/index.js +72 -4
- package/dist/resources/extensions/slash-commands/plan.js +5 -5
- package/dist/resources/extensions/usage/index.js +34 -2
- package/dist/resources/extensions/voice/index.js +1 -0
- package/dist/resources/extensions/voice/push-to-talk.js +2 -0
- package/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.context-usage.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/agent-session.context-usage.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/agent-session.context-usage.test.js +72 -0
- package/packages/pi-coding-agent/dist/core/agent-session.context-usage.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts +4 -0
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js +29 -2
- package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.js +1 -0
- package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/tool-priority.js +1 -1
- package/packages/pi-coding-agent/dist/core/tool-priority.js.map +1 -1
- package/packages/pi-coding-agent/dist/main.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/main.js +1 -0
- package/packages/pi-coding-agent/dist/main.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +17 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-summary-line.js +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-summary-line.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +37 -14
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.js +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +3 -2
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js +3 -0
- package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/agent-session.context-usage.test.ts +87 -0
- package/packages/pi-coding-agent/src/core/agent-session.ts +40 -2
- package/packages/pi-coding-agent/src/core/extensions/runner.ts +1 -0
- package/packages/pi-coding-agent/src/core/extensions/types.ts +3 -0
- package/packages/pi-coding-agent/src/core/tool-priority.ts +1 -1
- package/packages/pi-coding-agent/src/main.ts +1 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +18 -1
- package/packages/pi-coding-agent/src/modes/interactive/components/tool-summary-line.ts +1 -1
- package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +37 -15
- package/packages/pi-coding-agent/src/modes/interactive/controllers/extension-ui-controller.ts +1 -0
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +3 -2
- package/packages/pi-coding-agent/src/modes/rpc/rpc-mode.ts +4 -0
- package/pkg/package.json +1 -1
- package/src/resources/extensions/mcp-client/index.ts +83 -4
- package/src/resources/extensions/mcp-client/tests/server-name-spaces.test.ts +16 -0
- package/src/resources/extensions/slash-commands/plan.ts +6 -6
- package/src/resources/extensions/usage/index.ts +40 -2
- package/src/resources/extensions/voice/index.ts +1 -0
- package/src/resources/extensions/voice/push-to-talk.ts +3 -0
- package/src/resources/extensions/voice/tests/push-to-talk.test.ts +6 -0
package/README.md
CHANGED
|
@@ -365,6 +365,88 @@ LSD discovers and connects to MCP servers configured in:
|
|
|
365
365
|
|
|
366
366
|
Use `/configs` inside a session to scan for MCP servers from other AI tools (Claude Code, Cursor, Copilot, etc.) and import them.
|
|
367
367
|
|
|
368
|
+
### Adding MCP servers to LSD config
|
|
369
|
+
|
|
370
|
+
LSD supports two transport types: **stdio** (launch a local process) and **HTTP** (connect to a running server).
|
|
371
|
+
|
|
372
|
+
#### Stdio server (local process)
|
|
373
|
+
|
|
374
|
+
Add to `.mcp.json` or `.lsd/mcp.json`:
|
|
375
|
+
|
|
376
|
+
```json
|
|
377
|
+
{
|
|
378
|
+
"mcpServers": {
|
|
379
|
+
"my-server": {
|
|
380
|
+
"type": "stdio",
|
|
381
|
+
"command": "/absolute/path/to/executable",
|
|
382
|
+
"args": ["arg1", "arg2"],
|
|
383
|
+
"env": {
|
|
384
|
+
"API_KEY": "your-key",
|
|
385
|
+
"DEBUG": "true"
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
If the server is installed as an npm package:
|
|
393
|
+
|
|
394
|
+
```json
|
|
395
|
+
{
|
|
396
|
+
"mcpServers": {
|
|
397
|
+
"my-server": {
|
|
398
|
+
"type": "stdio",
|
|
399
|
+
"command": "npx",
|
|
400
|
+
"args": ["@my-org/mcp-server"],
|
|
401
|
+
"env": {
|
|
402
|
+
"API_KEY": "sk-..."
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
#### HTTP server (remote connection)
|
|
410
|
+
|
|
411
|
+
For MCP servers already running on a network endpoint:
|
|
412
|
+
|
|
413
|
+
```json
|
|
414
|
+
{
|
|
415
|
+
"mcpServers": {
|
|
416
|
+
"remote-server": {
|
|
417
|
+
"type": "http",
|
|
418
|
+
"url": "http://localhost:8080/mcp",
|
|
419
|
+
"headers": {
|
|
420
|
+
"Authorization": "Bearer ${MCP_TOKEN}"
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
Environment variables in `headers` and `env` are resolved at startup (use `${VAR_NAME}` syntax).
|
|
428
|
+
|
|
429
|
+
#### File placement
|
|
430
|
+
|
|
431
|
+
- **`.mcp.json`** — repo-shared configuration (commit to git)
|
|
432
|
+
- **`.lsd/mcp.json`** — local-only configuration (git-ignored, not shared)
|
|
433
|
+
|
|
434
|
+
If both files exist, server names are merged and the first definition found wins.
|
|
435
|
+
|
|
436
|
+
#### Managing MCP servers
|
|
437
|
+
|
|
438
|
+
Use the `/mcp` slash command inside a session:
|
|
439
|
+
|
|
440
|
+
| Command | Description |
|
|
441
|
+
|---------|-------------|
|
|
442
|
+
| `/mcp list` | List all configured servers and their status |
|
|
443
|
+
| `/mcp inspect <server>` | Connect and show available tools for a server |
|
|
444
|
+
| `/mcp enable <server>` | Enable a server |
|
|
445
|
+
| `/mcp disable <server>` | Disable a server |
|
|
446
|
+
| `/mcp reload` | Reload config and reconnect enabled servers |
|
|
447
|
+
|
|
448
|
+
MCP servers connect lazily — `/mcp inspect` or the first tool call triggers the connection.
|
|
449
|
+
|
|
368
450
|
---
|
|
369
451
|
|
|
370
452
|
## Sessions
|
|
@@ -23,6 +23,7 @@ import { basename, dirname, join } from "node:path";
|
|
|
23
23
|
const connections = new Map();
|
|
24
24
|
let configCache = null;
|
|
25
25
|
const toolCache = new Map();
|
|
26
|
+
let warmupPromise = null;
|
|
26
27
|
const MCP_STATE_PATH = join(process.cwd(), ".lsd", "mcp-state.json");
|
|
27
28
|
function normalizeServerName(name) {
|
|
28
29
|
return name.trim().toLowerCase();
|
|
@@ -205,6 +206,46 @@ async function getOrConnect(name, signal) {
|
|
|
205
206
|
connections.set(config.name, { client, transport });
|
|
206
207
|
return client;
|
|
207
208
|
}
|
|
209
|
+
async function warmupEnabledServers() {
|
|
210
|
+
if (warmupPromise)
|
|
211
|
+
return warmupPromise;
|
|
212
|
+
warmupPromise = (async () => {
|
|
213
|
+
const enabledServers = readConfigs().filter((server) => server.enabled);
|
|
214
|
+
if (enabledServers.length === 0)
|
|
215
|
+
return [];
|
|
216
|
+
const results = await Promise.allSettled(enabledServers.map(async (server) => {
|
|
217
|
+
const client = await getOrConnect(server.name);
|
|
218
|
+
const result = await client.listTools(undefined, { timeout: 30000 });
|
|
219
|
+
const tools = (result.tools ?? []).map((tool) => ({
|
|
220
|
+
name: tool.name,
|
|
221
|
+
description: tool.description ?? "",
|
|
222
|
+
inputSchema: tool.inputSchema,
|
|
223
|
+
}));
|
|
224
|
+
toolCache.set(server.name, tools);
|
|
225
|
+
return {
|
|
226
|
+
name: server.name,
|
|
227
|
+
status: "connected",
|
|
228
|
+
toolCount: tools.length,
|
|
229
|
+
};
|
|
230
|
+
}));
|
|
231
|
+
return results.map((result, index) => {
|
|
232
|
+
if (result.status === "fulfilled") {
|
|
233
|
+
return result.value;
|
|
234
|
+
}
|
|
235
|
+
return {
|
|
236
|
+
name: enabledServers[index]?.name ?? `server-${index + 1}`,
|
|
237
|
+
status: "error",
|
|
238
|
+
error: result.reason instanceof Error ? result.reason.message : String(result.reason),
|
|
239
|
+
};
|
|
240
|
+
});
|
|
241
|
+
})();
|
|
242
|
+
try {
|
|
243
|
+
return await warmupPromise;
|
|
244
|
+
}
|
|
245
|
+
finally {
|
|
246
|
+
warmupPromise = null;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
208
249
|
async function closeAll() {
|
|
209
250
|
const closing = Array.from(connections.entries()).map(async ([name, conn]) => {
|
|
210
251
|
try {
|
|
@@ -219,6 +260,7 @@ async function closeAll() {
|
|
|
219
260
|
toolCache.clear();
|
|
220
261
|
}
|
|
221
262
|
async function reloadMcpState() {
|
|
263
|
+
warmupPromise = null;
|
|
222
264
|
await closeAll();
|
|
223
265
|
configCache = null;
|
|
224
266
|
}
|
|
@@ -331,6 +373,13 @@ async function handleMcpCommand(args, ctx) {
|
|
|
331
373
|
const action = enabled ? "enabled" : "disabled";
|
|
332
374
|
const changeText = result.changed ? action : `already ${action}`;
|
|
333
375
|
ctx.ui.notify(`MCP server ${result.canonicalName} ${changeText}.`, "info");
|
|
376
|
+
if (enabled) {
|
|
377
|
+
const warmupResults = await warmupEnabledServers();
|
|
378
|
+
const warmupResult = warmupResults.find((entry) => entry.name === result.canonicalName);
|
|
379
|
+
if (warmupResult?.status === "error") {
|
|
380
|
+
ctx.ui.notify(`Failed to connect ${result.canonicalName}: ${warmupResult.error}`, "error");
|
|
381
|
+
}
|
|
382
|
+
}
|
|
334
383
|
}
|
|
335
384
|
catch (error) {
|
|
336
385
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -341,7 +390,12 @@ async function handleMcpCommand(args, ctx) {
|
|
|
341
390
|
if (subcommand === "reload") {
|
|
342
391
|
await reloadMcpState();
|
|
343
392
|
const servers = readConfigs();
|
|
344
|
-
|
|
393
|
+
const warmupResults = await warmupEnabledServers();
|
|
394
|
+
const failed = warmupResults.filter((entry) => entry.status === "error");
|
|
395
|
+
const summary = failed.length > 0
|
|
396
|
+
? `Reloaded MCP config — ${servers.length} server(s) available, ${failed.length} failed to connect.`
|
|
397
|
+
: `Reloaded MCP config — ${servers.length} server(s) available.`;
|
|
398
|
+
ctx.ui.notify(summary, failed.length > 0 ? "warning" : "info");
|
|
345
399
|
return;
|
|
346
400
|
}
|
|
347
401
|
if (subcommand === "help") {
|
|
@@ -598,15 +652,29 @@ export default function (pi) {
|
|
|
598
652
|
// ── Lifecycle ─────────────────────────────────────────────────────────────
|
|
599
653
|
pi.on("session_start", async (_event, ctx) => {
|
|
600
654
|
const servers = readConfigs();
|
|
655
|
+
const enabledServers = servers.filter((server) => server.enabled);
|
|
601
656
|
if (servers.length > 0) {
|
|
602
|
-
ctx.ui.notify(`MCP client ready — ${
|
|
657
|
+
ctx.ui.notify(`MCP client ready — ${enabledServers.length}/${servers.length} server(s) enabled`, "info");
|
|
603
658
|
}
|
|
659
|
+
if (enabledServers.length === 0)
|
|
660
|
+
return;
|
|
661
|
+
void warmupEnabledServers().then((results) => {
|
|
662
|
+
const failed = results.filter((entry) => entry.status === "error");
|
|
663
|
+
if (failed.length > 0) {
|
|
664
|
+
const failureSummary = failed.map((entry) => `${entry.name}: ${entry.error}`).join("; ");
|
|
665
|
+
ctx.ui.notify(`MCP autoconnect partial failure — ${failureSummary}`, "warning");
|
|
666
|
+
}
|
|
667
|
+
}).catch((error) => {
|
|
668
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
669
|
+
ctx.ui.notify(`MCP autoconnect failed: ${message}`, "warning");
|
|
670
|
+
});
|
|
604
671
|
});
|
|
605
672
|
pi.on("session_shutdown", async () => {
|
|
673
|
+
warmupPromise = null;
|
|
606
674
|
await closeAll();
|
|
607
675
|
});
|
|
608
676
|
pi.on("session_switch", async () => {
|
|
609
|
-
await
|
|
610
|
-
|
|
677
|
+
await reloadMcpState();
|
|
678
|
+
void warmupEnabledServers();
|
|
611
679
|
});
|
|
612
680
|
}
|
|
@@ -155,7 +155,7 @@ function readAutoSwitchPlanModelSetting() {
|
|
|
155
155
|
return false;
|
|
156
156
|
const raw = readFileSync(settingsPath, "utf-8");
|
|
157
157
|
const parsed = JSON.parse(raw);
|
|
158
|
-
return parsed.
|
|
158
|
+
return parsed.planModeAutoSwitchModel === true;
|
|
159
159
|
}
|
|
160
160
|
catch {
|
|
161
161
|
return false;
|
|
@@ -332,10 +332,10 @@ function scheduleNewSession(pi, ctx) {
|
|
|
332
332
|
pi.executeSlashCommand("/plan-execute-new-session");
|
|
333
333
|
}
|
|
334
334
|
async function approvePlan(pi, ctx, permissionMode, executeWithSubagent = false) {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
335
|
+
// Do NOT switch to reasoning model during execution.
|
|
336
|
+
// The reasoning model is only for plan-mode investigation, not execution.
|
|
337
|
+
// If a coding model is configured and we're using a subagent, the explicit
|
|
338
|
+
// model="<planModeCodingModel>" in the kickoff message will handle it.
|
|
339
339
|
state = {
|
|
340
340
|
...state,
|
|
341
341
|
targetPermissionMode: permissionMode,
|
|
@@ -231,6 +231,7 @@ function collectUsage(sessionFiles, startMs, endMs, scope, groupBy) {
|
|
|
231
231
|
let projectLabel = basename(file);
|
|
232
232
|
let headerResolved = false;
|
|
233
233
|
let currentModel = "";
|
|
234
|
+
let lastUserTimestamp = 0;
|
|
234
235
|
const raw = readFileSync(file, "utf-8");
|
|
235
236
|
for (const line of raw.split("\n")) {
|
|
236
237
|
if (!line.trim())
|
|
@@ -282,6 +283,8 @@ function collectUsage(sessionFiles, startMs, endMs, scope, groupBy) {
|
|
|
282
283
|
cacheWrite: 0,
|
|
283
284
|
total: 0,
|
|
284
285
|
cost: 0,
|
|
286
|
+
totalDurationMs: 0,
|
|
287
|
+
totalOutputForSpeed: 0,
|
|
285
288
|
};
|
|
286
289
|
existing.messages += 1;
|
|
287
290
|
existing.input += input;
|
|
@@ -290,11 +293,25 @@ function collectUsage(sessionFiles, startMs, endMs, scope, groupBy) {
|
|
|
290
293
|
existing.cacheWrite += cacheWrite;
|
|
291
294
|
existing.total += total;
|
|
292
295
|
existing.cost += cost;
|
|
296
|
+
// Track tok/sec: use preceding user message timestamp
|
|
297
|
+
if (output > 0 && lastUserTimestamp > 0) {
|
|
298
|
+
const durationMs = timestamp - lastUserTimestamp;
|
|
299
|
+
if (durationMs > 0) {
|
|
300
|
+
existing.totalDurationMs += durationMs;
|
|
301
|
+
existing.totalOutputForSpeed += output;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
293
304
|
rows.set(key, existing);
|
|
294
305
|
}
|
|
295
306
|
else if (message.role === "user") {
|
|
296
307
|
const timestamp = Number(message.timestamp ?? 0);
|
|
297
|
-
if (!timestamp
|
|
308
|
+
if (!timestamp)
|
|
309
|
+
continue;
|
|
310
|
+
// Always track last user timestamp for tok/sec calculation,
|
|
311
|
+
// even if this user message is outside the time range
|
|
312
|
+
// (the assistant response may still be within range).
|
|
313
|
+
lastUserTimestamp = timestamp;
|
|
314
|
+
if (timestamp < startMs || timestamp >= endMs)
|
|
298
315
|
continue;
|
|
299
316
|
matchedUserPrompts++;
|
|
300
317
|
const model = currentModel;
|
|
@@ -311,6 +328,8 @@ function collectUsage(sessionFiles, startMs, endMs, scope, groupBy) {
|
|
|
311
328
|
cacheWrite: 0,
|
|
312
329
|
total: 0,
|
|
313
330
|
cost: 0,
|
|
331
|
+
totalDurationMs: 0,
|
|
332
|
+
totalOutputForSpeed: 0,
|
|
314
333
|
};
|
|
315
334
|
existing.userPrompts += 1;
|
|
316
335
|
userPromptRows.set(key, existing);
|
|
@@ -342,8 +361,10 @@ function collectUsage(sessionFiles, startMs, endMs, scope, groupBy) {
|
|
|
342
361
|
acc.cacheWrite += row.cacheWrite;
|
|
343
362
|
acc.total += row.total;
|
|
344
363
|
acc.cost += row.cost;
|
|
364
|
+
acc.totalDurationMs += row.totalDurationMs;
|
|
365
|
+
acc.totalOutputForSpeed += row.totalOutputForSpeed;
|
|
345
366
|
return acc;
|
|
346
|
-
}, { messages: 0, userPrompts: 0, input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0, cost: 0 });
|
|
367
|
+
}, { messages: 0, userPrompts: 0, input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0, cost: 0, totalDurationMs: 0, totalOutputForSpeed: 0 });
|
|
347
368
|
return {
|
|
348
369
|
label: "",
|
|
349
370
|
scope,
|
|
@@ -355,6 +376,11 @@ function collectUsage(sessionFiles, startMs, endMs, scope, groupBy) {
|
|
|
355
376
|
totals,
|
|
356
377
|
};
|
|
357
378
|
}
|
|
379
|
+
function formatSpeed(totalDurationMs, totalOutputForSpeed) {
|
|
380
|
+
if (totalDurationMs <= 0)
|
|
381
|
+
return "—";
|
|
382
|
+
return Math.round(totalOutputForSpeed / (totalDurationMs / 1000)).toLocaleString();
|
|
383
|
+
}
|
|
358
384
|
function renderTable(report) {
|
|
359
385
|
const firstColumnHeader = report.groupBy === "project"
|
|
360
386
|
? "project"
|
|
@@ -371,7 +397,9 @@ function renderTable(report) {
|
|
|
371
397
|
write: formatInt(row.cacheWrite),
|
|
372
398
|
total: formatInt(row.total),
|
|
373
399
|
cost: formatCost(row.cost),
|
|
400
|
+
speed: formatSpeed(row.totalDurationMs, row.totalOutputForSpeed),
|
|
374
401
|
}));
|
|
402
|
+
const totalsSpeed = formatSpeed(report.totals.totalDurationMs, report.totals.totalOutputForSpeed);
|
|
375
403
|
const widths = {
|
|
376
404
|
label: Math.max(firstColumnHeader.length, ...displayRows.map((row) => row.label.length), 5),
|
|
377
405
|
userPrompts: Math.max(11, ...displayRows.map((row) => row.userPrompts.length), String(report.totals.userPrompts).length),
|
|
@@ -382,6 +410,7 @@ function renderTable(report) {
|
|
|
382
410
|
write: Math.max(5, ...displayRows.map((row) => row.write.length), formatInt(report.totals.cacheWrite).length),
|
|
383
411
|
total: Math.max(5, ...displayRows.map((row) => row.total.length), formatInt(report.totals.total).length),
|
|
384
412
|
cost: Math.max(7, ...displayRows.map((row) => row.cost.length), formatCost(report.totals.cost).length),
|
|
413
|
+
speed: Math.max(5, ...displayRows.map((row) => row.speed.length), totalsSpeed.length),
|
|
385
414
|
};
|
|
386
415
|
const header = [
|
|
387
416
|
firstColumnHeader.padEnd(widths.label),
|
|
@@ -393,6 +422,7 @@ function renderTable(report) {
|
|
|
393
422
|
"write".padStart(widths.write),
|
|
394
423
|
"total".padStart(widths.total),
|
|
395
424
|
"cost".padStart(widths.cost),
|
|
425
|
+
"tok/s".padStart(widths.speed),
|
|
396
426
|
].join(" ");
|
|
397
427
|
const divider = "-".repeat(header.length);
|
|
398
428
|
const body = displayRows.map((row) => [
|
|
@@ -405,6 +435,7 @@ function renderTable(report) {
|
|
|
405
435
|
row.write.padStart(widths.write),
|
|
406
436
|
row.total.padStart(widths.total),
|
|
407
437
|
row.cost.padStart(widths.cost),
|
|
438
|
+
row.speed.padStart(widths.speed),
|
|
408
439
|
].join(" "));
|
|
409
440
|
const totalsLine = [
|
|
410
441
|
"TOTAL".padEnd(widths.label),
|
|
@@ -416,6 +447,7 @@ function renderTable(report) {
|
|
|
416
447
|
formatInt(report.totals.cacheWrite).padStart(widths.write),
|
|
417
448
|
formatInt(report.totals.total).padStart(widths.total),
|
|
418
449
|
formatCost(report.totals.cost).padStart(widths.cost),
|
|
450
|
+
totalsSpeed.padStart(widths.speed),
|
|
419
451
|
].join(" ");
|
|
420
452
|
return [header, divider, ...body, divider, totalsLine].join("\n");
|
|
421
453
|
}
|
|
@@ -275,6 +275,7 @@ export default function (pi) {
|
|
|
275
275
|
activationMode,
|
|
276
276
|
editorText: ctx.ui.getEditorText(),
|
|
277
277
|
holdToTalkSupported: isKittyProtocolActive(),
|
|
278
|
+
isEditorFocused: ctx.ui.isEditorFocused(),
|
|
278
279
|
onUnsupported: () => {
|
|
279
280
|
if (holdToTalkUnsupportedNotified)
|
|
280
281
|
return;
|
|
@@ -2,6 +2,8 @@ import { isKeyRelease, Key, matchesKey } from "@gsd/pi-tui";
|
|
|
2
2
|
export function handlePushToTalkInput(data, state) {
|
|
3
3
|
if (!matchesKey(data, Key.space))
|
|
4
4
|
return undefined;
|
|
5
|
+
if (!state.isEditorFocused)
|
|
6
|
+
return undefined;
|
|
5
7
|
if (isKeyRelease(data)) {
|
|
6
8
|
if (state.activationMode === "push-to-talk") {
|
|
7
9
|
void Promise.resolve(state.stopVoice());
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-session.context-usage.test.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.context-usage.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { describe, it, mock } from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { AgentSession } from "./agent-session.js";
|
|
4
|
+
describe("AgentSession context usage caching", () => {
|
|
5
|
+
it("memoizes getContextUsage until context changes", () => {
|
|
6
|
+
let branchCalls = 0;
|
|
7
|
+
const messages = [
|
|
8
|
+
{ role: "user", content: "hello" },
|
|
9
|
+
{
|
|
10
|
+
role: "assistant",
|
|
11
|
+
content: [{ type: "text", text: "hi" }],
|
|
12
|
+
usage: { input: 120, output: 30, cacheRead: 0, cacheWrite: 0, cost: { total: 0 } },
|
|
13
|
+
stopReason: "end_turn",
|
|
14
|
+
provider: "test",
|
|
15
|
+
model: "fast-model",
|
|
16
|
+
},
|
|
17
|
+
];
|
|
18
|
+
const fakeSession = {
|
|
19
|
+
model: { provider: "test", id: "fast-model", contextWindow: 1000 },
|
|
20
|
+
messages,
|
|
21
|
+
sessionManager: {
|
|
22
|
+
getBranch: () => {
|
|
23
|
+
branchCalls += 1;
|
|
24
|
+
return [];
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
_contextUsageRevision: 0,
|
|
28
|
+
_contextUsageCache: undefined,
|
|
29
|
+
};
|
|
30
|
+
const first = AgentSession.prototype.getContextUsage.call(fakeSession);
|
|
31
|
+
const second = AgentSession.prototype.getContextUsage.call(fakeSession);
|
|
32
|
+
assert.equal(branchCalls, 1);
|
|
33
|
+
assert.strictEqual(second, first);
|
|
34
|
+
messages.push({ role: "user", content: "follow up" });
|
|
35
|
+
AgentSession.prototype["_invalidateContextUsageCache"].call(fakeSession);
|
|
36
|
+
const third = AgentSession.prototype.getContextUsage.call(fakeSession);
|
|
37
|
+
assert.equal(branchCalls, 2);
|
|
38
|
+
assert.notStrictEqual(third, first);
|
|
39
|
+
assert.ok((third?.tokens ?? 0) > (first?.tokens ?? 0));
|
|
40
|
+
});
|
|
41
|
+
it("clears cached context usage before emitting session events", () => {
|
|
42
|
+
const listener = mock.fn(() => { });
|
|
43
|
+
const fakeSession = {
|
|
44
|
+
_contextUsageRevision: 3,
|
|
45
|
+
_contextUsageCache: {
|
|
46
|
+
revision: 3,
|
|
47
|
+
modelKey: "test/model:1000",
|
|
48
|
+
usage: { tokens: 123, contextWindow: 1000, percent: 12.3 },
|
|
49
|
+
},
|
|
50
|
+
_eventListeners: [listener],
|
|
51
|
+
_invalidateContextUsageCache: AgentSession.prototype["_invalidateContextUsageCache"],
|
|
52
|
+
};
|
|
53
|
+
AgentSession.prototype["_emit"].call(fakeSession, { type: "session_state_changed", reason: "set_model" });
|
|
54
|
+
assert.equal(fakeSession._contextUsageRevision, 4);
|
|
55
|
+
assert.equal(fakeSession._contextUsageCache, undefined);
|
|
56
|
+
assert.equal(listener.mock.callCount(), 1);
|
|
57
|
+
});
|
|
58
|
+
it("invalidates cached context usage for immediate bash history writes", () => {
|
|
59
|
+
const invalidate = mock.fn(() => { });
|
|
60
|
+
const appendMessage = mock.fn(() => { });
|
|
61
|
+
const fakeSession = {
|
|
62
|
+
isStreaming: false,
|
|
63
|
+
agent: { appendMessage },
|
|
64
|
+
sessionManager: { appendMessage },
|
|
65
|
+
_invalidateContextUsageCache: invalidate,
|
|
66
|
+
};
|
|
67
|
+
AgentSession.prototype.recordBashResult.call(fakeSession, "pwd", { output: "/tmp", exitCode: 0, cancelled: false, truncated: false, fullOutputPath: undefined, sandboxed: false });
|
|
68
|
+
assert.equal(invalidate.mock.callCount(), 1);
|
|
69
|
+
assert.equal(appendMessage.mock.callCount(), 2);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=agent-session.context-usage.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-session.context-usage.test.js","sourceRoot":"","sources":["../../src/core/agent-session.context-usage.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,QAAQ,GAAG;YACb,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;YAClC;gBACI,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACvC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAClF,UAAU,EAAE,UAAU;gBACtB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,YAAY;aACtB;SACK,CAAC;QAEX,MAAM,WAAW,GAAG;YAChB,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE;YAClE,QAAQ;YACR,cAAc,EAAE;gBACZ,SAAS,EAAE,GAAG,EAAE;oBACZ,WAAW,IAAI,CAAC,CAAC;oBACjB,OAAO,EAAE,CAAC;gBACd,CAAC;aACJ;YACD,qBAAqB,EAAE,CAAC;YACxB,kBAAkB,EAAE,SAAS;SACzB,CAAC;QAET,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAExE,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAElC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAS,CAAC,CAAC;QAC7D,YAAY,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvE,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG;YAChB,qBAAqB,EAAE,CAAC;YACxB,kBAAkB,EAAE;gBAChB,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,iBAAiB;gBAC3B,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;aAC7D;YACD,eAAe,EAAE,CAAC,QAAQ,CAAC;YAC3B,4BAA4B,EAAE,YAAY,CAAC,SAAS,CAAC,8BAA8B,CAAC;SAChF,CAAC;QAET,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAE1G,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG;YAChB,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,EAAE,aAAa,EAAE;YACxB,cAAc,EAAE,EAAE,aAAa,EAAE;YACjC,4BAA4B,EAAE,UAAU;SACpC,CAAC;QAET,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CACxC,WAAW,EACX,KAAK,EACL,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CACnH,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { describe, it, mock } from \"node:test\";\nimport assert from \"node:assert/strict\";\nimport { AgentSession } from \"./agent-session.js\";\n\ndescribe(\"AgentSession context usage caching\", () => {\n it(\"memoizes getContextUsage until context changes\", () => {\n let branchCalls = 0;\n const messages = [\n { role: \"user\", content: \"hello\" },\n {\n role: \"assistant\",\n content: [{ type: \"text\", text: \"hi\" }],\n usage: { input: 120, output: 30, cacheRead: 0, cacheWrite: 0, cost: { total: 0 } },\n stopReason: \"end_turn\",\n provider: \"test\",\n model: \"fast-model\",\n },\n ] as any[];\n\n const fakeSession = {\n model: { provider: \"test\", id: \"fast-model\", contextWindow: 1000 },\n messages,\n sessionManager: {\n getBranch: () => {\n branchCalls += 1;\n return [];\n },\n },\n _contextUsageRevision: 0,\n _contextUsageCache: undefined,\n } as any;\n\n const first = AgentSession.prototype.getContextUsage.call(fakeSession);\n const second = AgentSession.prototype.getContextUsage.call(fakeSession);\n\n assert.equal(branchCalls, 1);\n assert.strictEqual(second, first);\n\n messages.push({ role: \"user\", content: \"follow up\" } as any);\n AgentSession.prototype[\"_invalidateContextUsageCache\"].call(fakeSession);\n const third = AgentSession.prototype.getContextUsage.call(fakeSession);\n\n assert.equal(branchCalls, 2);\n assert.notStrictEqual(third, first);\n assert.ok((third?.tokens ?? 0) > (first?.tokens ?? 0));\n });\n\n it(\"clears cached context usage before emitting session events\", () => {\n const listener = mock.fn(() => { });\n const fakeSession = {\n _contextUsageRevision: 3,\n _contextUsageCache: {\n revision: 3,\n modelKey: \"test/model:1000\",\n usage: { tokens: 123, contextWindow: 1000, percent: 12.3 },\n },\n _eventListeners: [listener],\n _invalidateContextUsageCache: AgentSession.prototype[\"_invalidateContextUsageCache\"],\n } as any;\n\n AgentSession.prototype[\"_emit\"].call(fakeSession, { type: \"session_state_changed\", reason: \"set_model\" });\n\n assert.equal(fakeSession._contextUsageRevision, 4);\n assert.equal(fakeSession._contextUsageCache, undefined);\n assert.equal(listener.mock.callCount(), 1);\n });\n\n it(\"invalidates cached context usage for immediate bash history writes\", () => {\n const invalidate = mock.fn(() => { });\n const appendMessage = mock.fn(() => { });\n const fakeSession = {\n isStreaming: false,\n agent: { appendMessage },\n sessionManager: { appendMessage },\n _invalidateContextUsageCache: invalidate,\n } as any;\n\n AgentSession.prototype.recordBashResult.call(\n fakeSession,\n \"pwd\",\n { output: \"/tmp\", exitCode: 0, cancelled: false, truncated: false, fullOutputPath: undefined, sandboxed: false },\n );\n\n assert.equal(invalidate.mock.callCount(), 1);\n assert.equal(appendMessage.mock.callCount(), 2);\n });\n});\n"]}
|
|
@@ -179,6 +179,9 @@ export declare class AgentSession {
|
|
|
179
179
|
private _cumulativeToolCalls;
|
|
180
180
|
/** Cost of the most recent assistant response (for per-prompt display). */
|
|
181
181
|
private _lastTurnCost;
|
|
182
|
+
/** Incremented whenever context-affecting state changes. */
|
|
183
|
+
private _contextUsageRevision;
|
|
184
|
+
private _contextUsageCache;
|
|
182
185
|
private _bashAbortController;
|
|
183
186
|
private _pendingBashMessages;
|
|
184
187
|
private _extensionRunner;
|
|
@@ -211,6 +214,7 @@ export declare class AgentSession {
|
|
|
211
214
|
/** Fallback resolver for cross-provider fallback */
|
|
212
215
|
get fallbackResolver(): FallbackResolver;
|
|
213
216
|
get sandboxManager(): SandboxManager | undefined;
|
|
217
|
+
private _invalidateContextUsageCache;
|
|
214
218
|
/** Emit an event to all listeners */
|
|
215
219
|
private _emit;
|
|
216
220
|
private _emitSessionStateChanged;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,6 +80,8 @@ export class AgentSession {
|
|
|
80
80
|
this._cumulativeToolCalls = 0;
|
|
81
81
|
/** Cost of the most recent assistant response (for per-prompt display). */
|
|
82
82
|
this._lastTurnCost = 0;
|
|
83
|
+
/** Incremented whenever context-affecting state changes. */
|
|
84
|
+
this._contextUsageRevision = 0;
|
|
83
85
|
// Bash execution state
|
|
84
86
|
this._bashAbortController = undefined;
|
|
85
87
|
this._pendingBashMessages = [];
|
|
@@ -182,8 +184,13 @@ export class AgentSession {
|
|
|
182
184
|
// =========================================================================
|
|
183
185
|
// Event Subscription
|
|
184
186
|
// =========================================================================
|
|
187
|
+
_invalidateContextUsageCache() {
|
|
188
|
+
this._contextUsageRevision += 1;
|
|
189
|
+
this._contextUsageCache = undefined;
|
|
190
|
+
}
|
|
185
191
|
/** Emit an event to all listeners */
|
|
186
192
|
_emit(event) {
|
|
193
|
+
this._invalidateContextUsageCache();
|
|
187
194
|
for (const l of this._eventListeners) {
|
|
188
195
|
l(event);
|
|
189
196
|
}
|
|
@@ -2159,6 +2166,7 @@ export class AgentSession {
|
|
|
2159
2166
|
this.agent.appendMessage(bashMessage);
|
|
2160
2167
|
// Save to session
|
|
2161
2168
|
this.sessionManager.appendMessage(bashMessage);
|
|
2169
|
+
this._invalidateContextUsageCache();
|
|
2162
2170
|
}
|
|
2163
2171
|
}
|
|
2164
2172
|
/**
|
|
@@ -2189,6 +2197,7 @@ export class AgentSession {
|
|
|
2189
2197
|
this.sessionManager.appendMessage(bashMessage);
|
|
2190
2198
|
}
|
|
2191
2199
|
this._pendingBashMessages = [];
|
|
2200
|
+
this._invalidateContextUsageCache();
|
|
2192
2201
|
}
|
|
2193
2202
|
// =========================================================================
|
|
2194
2203
|
// Session Management
|
|
@@ -2579,6 +2588,12 @@ export class AgentSession {
|
|
|
2579
2588
|
const contextWindow = model.contextWindow ?? 0;
|
|
2580
2589
|
if (contextWindow <= 0)
|
|
2581
2590
|
return undefined;
|
|
2591
|
+
const modelKey = `${model.provider}/${model.id}:${contextWindow}`;
|
|
2592
|
+
const cached = this._contextUsageCache;
|
|
2593
|
+
if (cached && cached.revision === this._contextUsageRevision && cached.modelKey === modelKey) {
|
|
2594
|
+
return cached.usage;
|
|
2595
|
+
}
|
|
2596
|
+
let usage;
|
|
2582
2597
|
// After compaction, the last assistant usage reflects pre-compaction context size.
|
|
2583
2598
|
// We can only trust usage from an assistant that responded after the latest compaction.
|
|
2584
2599
|
// If no such assistant exists, context token count is unknown until the next LLM response.
|
|
@@ -2602,16 +2617,28 @@ export class AgentSession {
|
|
|
2602
2617
|
}
|
|
2603
2618
|
}
|
|
2604
2619
|
if (!hasPostCompactionUsage) {
|
|
2605
|
-
|
|
2620
|
+
usage = { tokens: null, contextWindow, percent: null };
|
|
2621
|
+
this._contextUsageCache = {
|
|
2622
|
+
revision: this._contextUsageRevision,
|
|
2623
|
+
modelKey,
|
|
2624
|
+
usage,
|
|
2625
|
+
};
|
|
2626
|
+
return usage;
|
|
2606
2627
|
}
|
|
2607
2628
|
}
|
|
2608
2629
|
const estimate = estimateContextTokens(this.messages);
|
|
2609
2630
|
const percent = (estimate.tokens / contextWindow) * 100;
|
|
2610
|
-
|
|
2631
|
+
usage = {
|
|
2611
2632
|
tokens: estimate.tokens,
|
|
2612
2633
|
contextWindow,
|
|
2613
2634
|
percent,
|
|
2614
2635
|
};
|
|
2636
|
+
this._contextUsageCache = {
|
|
2637
|
+
revision: this._contextUsageRevision,
|
|
2638
|
+
modelKey,
|
|
2639
|
+
usage,
|
|
2640
|
+
};
|
|
2641
|
+
return usage;
|
|
2615
2642
|
}
|
|
2616
2643
|
/**
|
|
2617
2644
|
* Export session to HTML.
|