@earendil-works/pi-coding-agent 0.80.10 → 0.81.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/CHANGELOG.md +42 -0
- package/README.md +6 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +2 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +13 -0
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +0 -3
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +45 -56
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +2 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +3 -4
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +7 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +47 -14
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +1 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +6 -17
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +13 -2
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +2 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +31 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +16 -2
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/model-registry.d.ts +5 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +17 -2
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +2 -0
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +7 -2
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +41 -18
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +1 -0
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +4 -4
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +26 -7
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +1 -0
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +1 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +9 -4
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +99 -23
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +1 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/usage-totals.d.ts +19 -0
- package/dist/core/usage-totals.d.ts.map +1 -0
- package/dist/core/usage-totals.js +52 -0
- package/dist/core/usage-totals.js.map +1 -0
- package/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +3 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/llama/client.d.ts +61 -0
- package/dist/extensions/llama/client.d.ts.map +1 -0
- package/dist/extensions/llama/client.js +302 -0
- package/dist/extensions/llama/client.js.map +1 -0
- package/dist/extensions/llama/huggingface.d.ts +23 -0
- package/dist/extensions/llama/huggingface.d.ts.map +1 -0
- package/dist/extensions/llama/huggingface.js +141 -0
- package/dist/extensions/llama/huggingface.js.map +1 -0
- package/dist/extensions/llama/index.d.ts +3 -0
- package/dist/extensions/llama/index.d.ts.map +1 -0
- package/dist/extensions/llama/index.js +208 -0
- package/dist/extensions/llama/index.js.map +1 -0
- package/dist/extensions/llama/provider.d.ts +10 -0
- package/dist/extensions/llama/provider.d.ts.map +1 -0
- package/dist/extensions/llama/provider.js +102 -0
- package/dist/extensions/llama/provider.js.map +1 -0
- package/dist/extensions/llama/ui.d.ts +42 -0
- package/dist/extensions/llama/ui.d.ts.map +1 -0
- package/dist/extensions/llama/ui.js +416 -0
- package/dist/extensions/llama/ui.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +9 -4
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +24 -23
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +14 -22
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +4 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +7 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +4 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +11 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/compaction.md +8 -3
- package/docs/custom-provider.md +28 -0
- package/docs/extensions.md +51 -9
- package/docs/index.md +1 -0
- package/docs/llama-cpp.md +99 -0
- package/docs/prompt-templates.md +1 -0
- package/docs/providers.md +11 -0
- package/docs/rpc.md +48 -2
- package/docs/session-format.md +17 -3
- package/docs/tui.md +41 -26
- package/docs/usage.md +2 -1
- package/examples/extensions/README.md +1 -1
- package/examples/extensions/custom-compaction.ts +1 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +16 -31
- package/package.json +4 -4
|
@@ -24,6 +24,7 @@ import { SessionManager, sessionEntryToContextMessages } from "../../core/sessio
|
|
|
24
24
|
import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
|
|
25
25
|
import { isInstallTelemetryEnabled } from "../../core/telemetry.js";
|
|
26
26
|
import { hasTrustRequiringProjectResources, ProjectTrustStore } from "../../core/trust-manager.js";
|
|
27
|
+
import { getUsageCostBreakdown } from "../../core/usage-totals.js";
|
|
27
28
|
import { getChangelogPath, getNewEntries, normalizeChangelogLinks, parseChangelog } from "../../utils/changelog.js";
|
|
28
29
|
import { copyToClipboard, readClipboardText } from "../../utils/clipboard.js";
|
|
29
30
|
import { extensionForImageMimeType, readClipboardImage } from "../../utils/clipboard-image.js";
|
|
@@ -1062,7 +1063,10 @@ export class InteractiveMode {
|
|
|
1062
1063
|
const promptsResult = this.session.resourceLoader.getPrompts();
|
|
1063
1064
|
const themesResult = this.session.resourceLoader.getThemes();
|
|
1064
1065
|
const extensions = options?.extensions ??
|
|
1065
|
-
this.session.resourceLoader
|
|
1066
|
+
this.session.resourceLoader
|
|
1067
|
+
.getExtensions()
|
|
1068
|
+
.extensions.filter((extension) => !extension.hidden)
|
|
1069
|
+
.map((extension) => ({
|
|
1066
1070
|
path: extension.path,
|
|
1067
1071
|
sourceInfo: extension.sourceInfo,
|
|
1068
1072
|
}));
|
|
@@ -3321,8 +3325,10 @@ export class InteractiveMode {
|
|
|
3321
3325
|
for (const message of preCommands) {
|
|
3322
3326
|
await this.session.prompt(message.text);
|
|
3323
3327
|
}
|
|
3324
|
-
//
|
|
3325
|
-
const promptPromise = this.session
|
|
3328
|
+
// Start a prompt when idle, or queue it into a run still finishing compaction.
|
|
3329
|
+
const promptPromise = this.session
|
|
3330
|
+
.prompt(firstPrompt.text, { streamingBehavior: firstPrompt.mode })
|
|
3331
|
+
.catch((error) => {
|
|
3326
3332
|
restoreQueue(error);
|
|
3327
3333
|
});
|
|
3328
3334
|
// Queue remaining messages
|
|
@@ -4678,23 +4684,9 @@ export class InteractiveMode {
|
|
|
4678
4684
|
const entries = this.sessionManager.getEntries();
|
|
4679
4685
|
const cacheWaste = computeCacheWaste(entries, this.session.modelRuntime);
|
|
4680
4686
|
// Cost/token totals per provider/model actually used (e.g. OpenRouter `auto`
|
|
4681
|
-
// resolves to a concrete responseModel)
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
if (entry.type !== "message" || entry.message.role !== "assistant")
|
|
4685
|
-
continue;
|
|
4686
|
-
const message = entry.message;
|
|
4687
|
-
const usage = message.usage;
|
|
4688
|
-
const key = `${message.provider}/${message.responseModel ?? message.model}`;
|
|
4689
|
-
let bucket = perModelMap.get(key);
|
|
4690
|
-
if (!bucket) {
|
|
4691
|
-
bucket = { key, cost: 0, tokens: 0 };
|
|
4692
|
-
perModelMap.set(key, bucket);
|
|
4693
|
-
}
|
|
4694
|
-
bucket.cost += usage.cost.total;
|
|
4695
|
-
bucket.tokens += usage.input + usage.output + usage.cacheRead + usage.cacheWrite;
|
|
4696
|
-
}
|
|
4697
|
-
const perModel = Array.from(perModelMap.values()).sort((a, b) => b.cost - a.cost);
|
|
4687
|
+
// resolves to a concrete responseModel). Usage without model attribution is
|
|
4688
|
+
// grouped separately so the breakdown reconciles with the session total.
|
|
4689
|
+
const usageBreakdown = getUsageCostBreakdown(entries);
|
|
4698
4690
|
let info = `${theme.bold("Session Info")}\n\n`;
|
|
4699
4691
|
if (sessionName) {
|
|
4700
4692
|
info += `${theme.fg("dim", "Name:")} ${sessionName}\n`;
|
|
@@ -4725,8 +4717,8 @@ export class InteractiveMode {
|
|
|
4725
4717
|
if (stats.cost > 0 || cacheWaste.missedTokens > 0) {
|
|
4726
4718
|
info += `\n${theme.bold("Cost")}\n`;
|
|
4727
4719
|
info += `${theme.fg("dim", "Total:")} $${stats.cost.toFixed(3)}`;
|
|
4728
|
-
if (
|
|
4729
|
-
for (const entry of
|
|
4720
|
+
if (usageBreakdown.length > 1) {
|
|
4721
|
+
for (const entry of usageBreakdown) {
|
|
4730
4722
|
info += `\n ${theme.fg("dim", `${entry.key}:`)} $${entry.cost.toFixed(3)} ${theme.fg("dim", `(${formatTokens(entry.tokens)} tokens)`)}`;
|
|
4731
4723
|
}
|
|
4732
4724
|
}
|