@earendil-works/pi-coding-agent 0.82.1 → 0.83.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +1 -1
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +8 -1
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/cli/credential-print.d.ts +23 -0
  7. package/dist/cli/credential-print.d.ts.map +1 -0
  8. package/dist/cli/credential-print.js +116 -0
  9. package/dist/cli/credential-print.js.map +1 -0
  10. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  11. package/dist/core/agent-session-runtime.js +3 -0
  12. package/dist/core/agent-session-runtime.js.map +1 -1
  13. package/dist/core/agent-session.d.ts +1 -1
  14. package/dist/core/agent-session.d.ts.map +1 -1
  15. package/dist/core/agent-session.js +13 -6
  16. package/dist/core/agent-session.js.map +1 -1
  17. package/dist/core/extensions/runner.d.ts +1 -0
  18. package/dist/core/extensions/runner.d.ts.map +1 -1
  19. package/dist/core/extensions/runner.js +7 -0
  20. package/dist/core/extensions/runner.js.map +1 -1
  21. package/dist/core/extensions/types.d.ts +7 -0
  22. package/dist/core/extensions/types.d.ts.map +1 -1
  23. package/dist/core/extensions/types.js.map +1 -1
  24. package/dist/core/footer-data-provider.d.ts +10 -0
  25. package/dist/core/footer-data-provider.d.ts.map +1 -1
  26. package/dist/core/footer-data-provider.js +1 -1
  27. package/dist/core/footer-data-provider.js.map +1 -1
  28. package/dist/core/model-runtime.d.ts +2 -0
  29. package/dist/core/model-runtime.d.ts.map +1 -1
  30. package/dist/core/model-runtime.js.map +1 -1
  31. package/dist/core/package-manager.d.ts.map +1 -1
  32. package/dist/core/package-manager.js +13 -6
  33. package/dist/core/package-manager.js.map +1 -1
  34. package/dist/core/resource-loader.d.ts +15 -0
  35. package/dist/core/resource-loader.d.ts.map +1 -1
  36. package/dist/core/resource-loader.js +63 -9
  37. package/dist/core/resource-loader.js.map +1 -1
  38. package/dist/extensions/llama/provider.d.ts.map +1 -1
  39. package/dist/extensions/llama/provider.js +1 -1
  40. package/dist/extensions/llama/provider.js.map +1 -1
  41. package/dist/main.d.ts.map +1 -1
  42. package/dist/main.js +43 -0
  43. package/dist/main.js.map +1 -1
  44. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  45. package/dist/modes/interactive/components/model-selector.js +4 -1
  46. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  47. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  48. package/dist/modes/interactive/interactive-mode.js +20 -6
  49. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  50. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  51. package/dist/modes/rpc/rpc-mode.js +13 -0
  52. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  53. package/docs/custom-provider.md +9 -3
  54. package/docs/extensions.md +3 -1
  55. package/docs/providers.md +1 -0
  56. package/docs/session-format.md +2 -0
  57. package/examples/extensions/custom-provider-anthropic/index.ts +8 -2
  58. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  59. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  60. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  61. package/examples/extensions/gondolin/package-lock.json +2 -2
  62. package/examples/extensions/gondolin/package.json +1 -1
  63. package/examples/extensions/sandbox/package-lock.json +2 -2
  64. package/examples/extensions/sandbox/package.json +1 -1
  65. package/examples/extensions/with-deps/package-lock.json +2 -2
  66. package/examples/extensions/with-deps/package.json +1 -1
  67. package/examples/sdk/12-full-control.ts +2 -0
  68. package/npm-shrinkwrap.json +18 -18
  69. package/package.json +5 -5
@@ -1106,7 +1106,12 @@ export class InteractiveMode {
1106
1106
  }
1107
1107
  }
1108
1108
  if (showListing) {
1109
- const contextFiles = this.session.resourceLoader.getAgentsFiles().agentsFiles;
1109
+ const systemPromptSource = this.session.resourceLoader.getSystemPromptSource();
1110
+ const contextFiles = [
1111
+ ...(systemPromptSource ? [systemPromptSource] : []),
1112
+ ...this.session.resourceLoader.getAppendSystemPromptSources(),
1113
+ ...this.session.resourceLoader.getAgentsFiles().agentsFiles,
1114
+ ];
1110
1115
  if (contextFiles.length > 0) {
1111
1116
  this.loadedResourcesContainer.addChild(new Spacer(1));
1112
1117
  const contextList = contextFiles
@@ -1306,16 +1311,19 @@ export class InteractiveMode {
1306
1311
  }
1307
1312
  }
1308
1313
  async rebindCurrentSession(options = {}) {
1314
+ const session = this.session;
1309
1315
  this.unsubscribe?.();
1310
1316
  this.unsubscribe = undefined;
1311
1317
  this.applyRuntimeSettings();
1312
1318
  if (options.renderBeforeBind) {
1313
1319
  this.renderCurrentSessionState();
1314
1320
  this.subscribeToAgent();
1315
- await this.bindCurrentSessionExtensions();
1316
1321
  }
1317
- else {
1318
- await this.bindCurrentSessionExtensions();
1322
+ await this.bindCurrentSessionExtensions();
1323
+ if (this.session !== session) {
1324
+ return;
1325
+ }
1326
+ if (!options.renderBeforeBind) {
1319
1327
  this.subscribeToAgent();
1320
1328
  }
1321
1329
  await this.updateAvailableProviderCount();
@@ -1361,6 +1369,7 @@ export class InteractiveMode {
1361
1369
  sessionManager: this.sessionManager,
1362
1370
  modelRegistry: extensionRunner.getModelRegistry(),
1363
1371
  model: this.session.model,
1372
+ scopedModels: this.session.scopedModels,
1364
1373
  thinkingLevel: this.session.thinkingLevel,
1365
1374
  isIdle: () => this.session.isIdle,
1366
1375
  isProjectTrusted: () => this.settingsManager.isProjectTrusted(),
@@ -3118,7 +3127,7 @@ export class InteractiveMode {
3118
3127
  }
3119
3128
  }
3120
3129
  }
3121
- this.ui.requestRender();
3130
+ this.showStatus(`Tool output: ${expanded ? "expanded" : "collapsed"}`);
3122
3131
  }
3123
3132
  toggleThinkingBlockVisibility() {
3124
3133
  this.hideThinkingBlock = !this.hideThinkingBlock;
@@ -3843,7 +3852,7 @@ export class InteractiveMode {
3843
3852
  this.showSelector((done) => {
3844
3853
  const selector = new TreeSelectorComponent(tree, realLeafId, this.ui.terminal.rows, async (entryId) => {
3845
3854
  // Selecting the current leaf is a no-op (already there)
3846
- if (entryId === realLeafId) {
3855
+ if (entryId === this.sessionManager.getLeafId()) {
3847
3856
  done();
3848
3857
  this.showStatus("Already at this point");
3849
3858
  return;
@@ -3878,6 +3887,11 @@ export class InteractiveMode {
3878
3887
  break;
3879
3888
  }
3880
3889
  }
3890
+ // The user committed to navigating: stop the active response first.
3891
+ if (this.session.isStreaming) {
3892
+ this.restoreQueuedMessagesToEditor();
3893
+ await this.session.abort();
3894
+ }
3881
3895
  // Set up escape handler and status indicator if summarizing
3882
3896
  let showingSummaryIndicator = false;
3883
3897
  const originalOnEscape = this.defaultEditor.onEscape;