@averyyy/pi-coding-agent 0.80.10-piclient.2 → 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.
Files changed (143) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +6 -3
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +2 -0
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/core/agent-session-services.d.ts.map +1 -1
  7. package/dist/core/agent-session-services.js +13 -0
  8. package/dist/core/agent-session-services.js.map +1 -1
  9. package/dist/core/agent-session.d.ts +22 -3
  10. package/dist/core/agent-session.d.ts.map +1 -1
  11. package/dist/core/agent-session.js +86 -58
  12. package/dist/core/agent-session.js.map +1 -1
  13. package/dist/core/compaction/branch-summarization.d.ts +7 -1
  14. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  15. package/dist/core/compaction/branch-summarization.js +6 -2
  16. package/dist/core/compaction/branch-summarization.js.map +1 -1
  17. package/dist/core/compaction/compaction.d.ts +23 -4
  18. package/dist/core/compaction/compaction.d.ts.map +1 -1
  19. package/dist/core/compaction/compaction.js +75 -29
  20. package/dist/core/compaction/compaction.js.map +1 -1
  21. package/dist/core/compaction/utils.d.ts +1 -1
  22. package/dist/core/compaction/utils.d.ts.map +1 -1
  23. package/dist/core/compaction/utils.js +6 -17
  24. package/dist/core/compaction/utils.js.map +1 -1
  25. package/dist/core/extensions/loader.d.ts.map +1 -1
  26. package/dist/core/extensions/loader.js +13 -2
  27. package/dist/core/extensions/loader.js.map +1 -1
  28. package/dist/core/extensions/runner.d.ts +2 -1
  29. package/dist/core/extensions/runner.d.ts.map +1 -1
  30. package/dist/core/extensions/runner.js +31 -0
  31. package/dist/core/extensions/runner.js.map +1 -1
  32. package/dist/core/extensions/types.d.ts +16 -2
  33. package/dist/core/extensions/types.d.ts.map +1 -1
  34. package/dist/core/extensions/types.js.map +1 -1
  35. package/dist/core/model-registry.d.ts +5 -1
  36. package/dist/core/model-registry.d.ts.map +1 -1
  37. package/dist/core/model-registry.js +17 -2
  38. package/dist/core/model-registry.js.map +1 -1
  39. package/dist/core/model-resolver.d.ts.map +1 -1
  40. package/dist/core/model-resolver.js +2 -0
  41. package/dist/core/model-resolver.js.map +1 -1
  42. package/dist/core/model-runtime.d.ts +7 -2
  43. package/dist/core/model-runtime.d.ts.map +1 -1
  44. package/dist/core/model-runtime.js +41 -18
  45. package/dist/core/model-runtime.js.map +1 -1
  46. package/dist/core/prompt-templates.d.ts +1 -0
  47. package/dist/core/prompt-templates.d.ts.map +1 -1
  48. package/dist/core/prompt-templates.js +4 -4
  49. package/dist/core/prompt-templates.js.map +1 -1
  50. package/dist/core/remote-catalog-provider.d.ts +1 -1
  51. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  52. package/dist/core/remote-catalog-provider.js +26 -7
  53. package/dist/core/remote-catalog-provider.js.map +1 -1
  54. package/dist/core/resource-loader.d.ts.map +1 -1
  55. package/dist/core/resource-loader.js +1 -0
  56. package/dist/core/resource-loader.js.map +1 -1
  57. package/dist/core/sdk.d.ts.map +1 -1
  58. package/dist/core/sdk.js +6 -2
  59. package/dist/core/sdk.js.map +1 -1
  60. package/dist/core/session-manager.d.ts +9 -4
  61. package/dist/core/session-manager.d.ts.map +1 -1
  62. package/dist/core/session-manager.js +99 -23
  63. package/dist/core/session-manager.js.map +1 -1
  64. package/dist/core/tools/read.d.ts.map +1 -1
  65. package/dist/core/tools/read.js +1 -1
  66. package/dist/core/tools/read.js.map +1 -1
  67. package/dist/core/usage-totals.d.ts +19 -0
  68. package/dist/core/usage-totals.d.ts.map +1 -0
  69. package/dist/core/usage-totals.js +52 -0
  70. package/dist/core/usage-totals.js.map +1 -0
  71. package/dist/extensions/index.d.ts +3 -0
  72. package/dist/extensions/index.d.ts.map +1 -0
  73. package/dist/extensions/index.js +3 -0
  74. package/dist/extensions/index.js.map +1 -0
  75. package/dist/extensions/llama/client.d.ts +61 -0
  76. package/dist/extensions/llama/client.d.ts.map +1 -0
  77. package/dist/extensions/llama/client.js +302 -0
  78. package/dist/extensions/llama/client.js.map +1 -0
  79. package/dist/extensions/llama/huggingface.d.ts +23 -0
  80. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  81. package/dist/extensions/llama/huggingface.js +141 -0
  82. package/dist/extensions/llama/huggingface.js.map +1 -0
  83. package/dist/extensions/llama/index.d.ts +3 -0
  84. package/dist/extensions/llama/index.d.ts.map +1 -0
  85. package/dist/extensions/llama/index.js +208 -0
  86. package/dist/extensions/llama/index.js.map +1 -0
  87. package/dist/extensions/llama/provider.d.ts +10 -0
  88. package/dist/extensions/llama/provider.d.ts.map +1 -0
  89. package/dist/extensions/llama/provider.js +102 -0
  90. package/dist/extensions/llama/provider.js.map +1 -0
  91. package/dist/extensions/llama/ui.d.ts +42 -0
  92. package/dist/extensions/llama/ui.d.ts.map +1 -0
  93. package/dist/extensions/llama/ui.js +416 -0
  94. package/dist/extensions/llama/ui.js.map +1 -0
  95. package/dist/index.d.ts +2 -2
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +1 -1
  98. package/dist/index.js.map +1 -1
  99. package/dist/main.d.ts.map +1 -1
  100. package/dist/main.js +10 -4
  101. package/dist/main.js.map +1 -1
  102. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  103. package/dist/modes/interactive/components/footer.js +24 -23
  104. package/dist/modes/interactive/components/footer.js.map +1 -1
  105. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  106. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  107. package/dist/modes/interactive/interactive-mode.js +48 -26
  108. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  109. package/dist/modes/rpc/rpc-client.d.ts +4 -0
  110. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  111. package/dist/modes/rpc/rpc-client.js +7 -0
  112. package/dist/modes/rpc/rpc-client.js.map +1 -1
  113. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  114. package/dist/modes/rpc/rpc-mode.js +4 -0
  115. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  116. package/dist/modes/rpc/rpc-types.d.ts +11 -0
  117. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  118. package/dist/modes/rpc/rpc-types.js.map +1 -1
  119. package/docs/compaction.md +8 -3
  120. package/docs/custom-provider.md +28 -0
  121. package/docs/extensions.md +51 -9
  122. package/docs/index.md +1 -0
  123. package/docs/json.md +5 -1
  124. package/docs/llama-cpp.md +99 -0
  125. package/docs/prompt-templates.md +1 -0
  126. package/docs/providers.md +11 -0
  127. package/docs/rpc.md +81 -2
  128. package/docs/sdk.md +3 -0
  129. package/docs/session-format.md +17 -3
  130. package/docs/tui.md +41 -26
  131. package/docs/usage.md +2 -1
  132. package/examples/extensions/README.md +1 -1
  133. package/examples/extensions/custom-compaction.ts +1 -0
  134. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  135. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  136. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  137. package/examples/extensions/gondolin/package-lock.json +2 -2
  138. package/examples/extensions/gondolin/package.json +1 -1
  139. package/examples/extensions/sandbox/package-lock.json +2 -2
  140. package/examples/extensions/sandbox/package.json +1 -1
  141. package/examples/extensions/with-deps/package-lock.json +2 -2
  142. package/examples/extensions/with-deps/package.json +1 -1
  143. 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.getExtensions().extensions.map((extension) => ({
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
- // Send first prompt (starts streaming)
3332
- const promptPromise = this.session.prompt(firstPrompt.text).catch((error) => {
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 model candidates */
3598
- async updateAvailableProviderCount() {
3599
- const models = await this.getModelCandidates();
3600
- const uniqueProviders = new Set(models.map((m) => m.provider));
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), sorted by cost descending.
4708
- const perModelMap = new Map();
4709
- for (const entry of entries) {
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 (perModel.length > 1) {
4755
- for (const entry of perModel) {
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
  }