@averyyy/pi-coding-agent 0.80.10-piclient.1 → 0.81.1-piclient.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/CHANGELOG.md +60 -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 +22 -3
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +86 -58
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +7 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +6 -2
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +23 -4
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +75 -29
- 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 +6 -2
- 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 +10 -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 +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +48 -26
- 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/json.md +5 -1
- package/docs/llama-cpp.md +99 -0
- package/docs/prompt-templates.md +1 -0
- package/docs/providers.md +11 -0
- package/docs/rpc.md +81 -2
- package/docs/sdk.md +3 -0
- 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/package.json +4 -4
|
@@ -25,6 +25,7 @@ import { SessionManager, sessionEntryToContextMessages } from "../../core/sessio
|
|
|
25
25
|
import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
|
|
26
26
|
import { isInstallTelemetryEnabled } from "../../core/telemetry.js";
|
|
27
27
|
import { hasTrustRequiringProjectResources, ProjectTrustStore } from "../../core/trust-manager.js";
|
|
28
|
+
import { getUsageCostBreakdown } from "../../core/usage-totals.js";
|
|
28
29
|
import { getChangelogPath, getNewEntries, normalizeChangelogLinks, parseChangelog } from "../../utils/changelog.js";
|
|
29
30
|
import { copyToClipboard, readClipboardText } from "../../utils/clipboard.js";
|
|
30
31
|
import { extensionForImageMimeType, readClipboardImage } from "../../utils/clipboard-image.js";
|
|
@@ -580,6 +581,12 @@ export class InteractiveMode {
|
|
|
580
581
|
*/
|
|
581
582
|
async run() {
|
|
582
583
|
await this.init();
|
|
584
|
+
if (!process.env.PI_OFFLINE) {
|
|
585
|
+
void this.session.modelRuntime
|
|
586
|
+
.refresh()
|
|
587
|
+
.then(() => this.updateAvailableProviderCount())
|
|
588
|
+
.catch(() => { });
|
|
589
|
+
}
|
|
583
590
|
// Start version check asynchronously
|
|
584
591
|
checkForNewPiVersion(this.version).then((newRelease) => {
|
|
585
592
|
if (newRelease) {
|
|
@@ -1063,7 +1070,10 @@ export class InteractiveMode {
|
|
|
1063
1070
|
const promptsResult = this.session.resourceLoader.getPrompts();
|
|
1064
1071
|
const themesResult = this.session.resourceLoader.getThemes();
|
|
1065
1072
|
const extensions = options?.extensions ??
|
|
1066
|
-
this.session.resourceLoader
|
|
1073
|
+
this.session.resourceLoader
|
|
1074
|
+
.getExtensions()
|
|
1075
|
+
.extensions.filter((extension) => !extension.hidden)
|
|
1076
|
+
.map((extension) => ({
|
|
1067
1077
|
path: extension.path,
|
|
1068
1078
|
sourceInfo: extension.sourceInfo,
|
|
1069
1079
|
}));
|
|
@@ -2518,6 +2528,28 @@ export class InteractiveMode {
|
|
|
2518
2528
|
this.ui.requestRender();
|
|
2519
2529
|
break;
|
|
2520
2530
|
}
|
|
2531
|
+
case "summarization_retry_scheduled": {
|
|
2532
|
+
this.showError(event.errorMessage);
|
|
2533
|
+
this.showStatusIndicator(new RetryStatusIndicator(this.ui, event.attempt, event.maxAttempts, event.delayMs));
|
|
2534
|
+
this.ui.requestRender();
|
|
2535
|
+
break;
|
|
2536
|
+
}
|
|
2537
|
+
case "summarization_retry_attempt_start": {
|
|
2538
|
+
this.clearStatusIndicator("retry");
|
|
2539
|
+
if (event.source === "branchSummary") {
|
|
2540
|
+
this.showStatusIndicator(new BranchSummaryStatusIndicator(this.ui));
|
|
2541
|
+
}
|
|
2542
|
+
else {
|
|
2543
|
+
this.showStatusIndicator(new CompactionStatusIndicator(this.ui, event.reason));
|
|
2544
|
+
}
|
|
2545
|
+
this.ui.requestRender();
|
|
2546
|
+
break;
|
|
2547
|
+
}
|
|
2548
|
+
case "summarization_retry_finished": {
|
|
2549
|
+
this.clearStatusIndicator("retry");
|
|
2550
|
+
this.ui.requestRender();
|
|
2551
|
+
break;
|
|
2552
|
+
}
|
|
2521
2553
|
}
|
|
2522
2554
|
}
|
|
2523
2555
|
/** Extract text content from a user message */
|
|
@@ -3328,8 +3360,10 @@ export class InteractiveMode {
|
|
|
3328
3360
|
for (const message of preCommands) {
|
|
3329
3361
|
await this.session.prompt(message.text);
|
|
3330
3362
|
}
|
|
3331
|
-
//
|
|
3332
|
-
const promptPromise = this.session
|
|
3363
|
+
// Start a prompt when idle, or queue it into a run still finishing compaction.
|
|
3364
|
+
const promptPromise = this.session
|
|
3365
|
+
.prompt(firstPrompt.text, { streamingBehavior: firstPrompt.mode })
|
|
3366
|
+
.catch((error) => {
|
|
3333
3367
|
restoreQueue(error);
|
|
3334
3368
|
});
|
|
3335
3369
|
// Queue remaining messages
|
|
@@ -3594,10 +3628,12 @@ export class InteractiveMode {
|
|
|
3594
3628
|
return [];
|
|
3595
3629
|
}
|
|
3596
3630
|
}
|
|
3597
|
-
/** Update the footer's available provider count from current
|
|
3598
|
-
|
|
3599
|
-
const models =
|
|
3600
|
-
|
|
3631
|
+
/** Update the footer's available provider count from the current snapshot without refreshing catalogs. */
|
|
3632
|
+
updateAvailableProviderCount() {
|
|
3633
|
+
const models = this.session.scopedModels.length > 0
|
|
3634
|
+
? this.session.scopedModels.map((scoped) => scoped.model)
|
|
3635
|
+
: this.session.modelRuntime.getAvailableSnapshot();
|
|
3636
|
+
const uniqueProviders = new Set(models.map((model) => model.provider));
|
|
3601
3637
|
this.footerDataProvider.setAvailableProviderCount(uniqueProviders.size);
|
|
3602
3638
|
}
|
|
3603
3639
|
async maybeWarnAboutAnthropicSubscriptionAuth(model = this.session.model) {
|
|
@@ -4704,23 +4740,9 @@ export class InteractiveMode {
|
|
|
4704
4740
|
const entries = this.sessionManager.getEntries();
|
|
4705
4741
|
const cacheWaste = computeCacheWaste(entries, this.session.modelRuntime);
|
|
4706
4742
|
// Cost/token totals per provider/model actually used (e.g. OpenRouter `auto`
|
|
4707
|
-
// resolves to a concrete responseModel)
|
|
4708
|
-
|
|
4709
|
-
|
|
4710
|
-
if (entry.type !== "message" || entry.message.role !== "assistant")
|
|
4711
|
-
continue;
|
|
4712
|
-
const message = entry.message;
|
|
4713
|
-
const usage = message.usage;
|
|
4714
|
-
const key = `${message.provider}/${message.responseModel ?? message.model}`;
|
|
4715
|
-
let bucket = perModelMap.get(key);
|
|
4716
|
-
if (!bucket) {
|
|
4717
|
-
bucket = { key, cost: 0, tokens: 0 };
|
|
4718
|
-
perModelMap.set(key, bucket);
|
|
4719
|
-
}
|
|
4720
|
-
bucket.cost += usage.cost.total;
|
|
4721
|
-
bucket.tokens += usage.input + usage.output + usage.cacheRead + usage.cacheWrite;
|
|
4722
|
-
}
|
|
4723
|
-
const perModel = Array.from(perModelMap.values()).sort((a, b) => b.cost - a.cost);
|
|
4743
|
+
// resolves to a concrete responseModel). Usage without model attribution is
|
|
4744
|
+
// grouped separately so the breakdown reconciles with the session total.
|
|
4745
|
+
const usageBreakdown = getUsageCostBreakdown(entries);
|
|
4724
4746
|
let info = `${theme.bold("Session Info")}\n\n`;
|
|
4725
4747
|
if (sessionName) {
|
|
4726
4748
|
info += `${theme.fg("dim", "Name:")} ${sessionName}\n`;
|
|
@@ -4751,8 +4773,8 @@ export class InteractiveMode {
|
|
|
4751
4773
|
if (stats.cost > 0 || cacheWaste.missedTokens > 0) {
|
|
4752
4774
|
info += `\n${theme.bold("Cost")}\n`;
|
|
4753
4775
|
info += `${theme.fg("dim", "Total:")} $${stats.cost.toFixed(3)}`;
|
|
4754
|
-
if (
|
|
4755
|
-
for (const entry of
|
|
4776
|
+
if (usageBreakdown.length > 1) {
|
|
4777
|
+
for (const entry of usageBreakdown) {
|
|
4756
4778
|
info += `\n ${theme.fg("dim", `${entry.key}:`)} $${entry.cost.toFixed(3)} ${theme.fg("dim", `(${formatTokens(entry.tokens)} tokens)`)}`;
|
|
4757
4779
|
}
|
|
4758
4780
|
}
|