@mariozechner/pi-coding-agent 0.55.4 → 0.56.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 (77) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +1 -0
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +1 -0
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +5 -0
  8. package/dist/cli.js.map +1 -1
  9. package/dist/core/agent-session.d.ts +5 -4
  10. package/dist/core/agent-session.d.ts.map +1 -1
  11. package/dist/core/agent-session.js +26 -5
  12. package/dist/core/agent-session.js.map +1 -1
  13. package/dist/core/auth-storage.d.ts +1 -1
  14. package/dist/core/auth-storage.d.ts.map +1 -1
  15. package/dist/core/auth-storage.js +2 -1
  16. package/dist/core/auth-storage.js.map +1 -1
  17. package/dist/core/compaction/compaction.d.ts.map +1 -1
  18. package/dist/core/compaction/compaction.js +4 -1
  19. package/dist/core/compaction/compaction.js.map +1 -1
  20. package/dist/core/extensions/loader.d.ts.map +1 -1
  21. package/dist/core/extensions/loader.js +14 -3
  22. package/dist/core/extensions/loader.js.map +1 -1
  23. package/dist/core/model-registry.d.ts +1 -0
  24. package/dist/core/model-registry.d.ts.map +1 -1
  25. package/dist/core/model-registry.js +9 -6
  26. package/dist/core/model-registry.js.map +1 -1
  27. package/dist/core/model-resolver.d.ts.map +1 -1
  28. package/dist/core/model-resolver.js +35 -5
  29. package/dist/core/model-resolver.js.map +1 -1
  30. package/dist/core/sdk.d.ts +1 -1
  31. package/dist/core/sdk.d.ts.map +1 -1
  32. package/dist/core/sdk.js.map +1 -1
  33. package/dist/core/settings-manager.d.ts +3 -0
  34. package/dist/core/settings-manager.d.ts.map +1 -1
  35. package/dist/core/settings-manager.js +4 -0
  36. package/dist/core/settings-manager.js.map +1 -1
  37. package/dist/main.d.ts.map +1 -1
  38. package/dist/main.js +4 -4
  39. package/dist/main.js.map +1 -1
  40. package/dist/modes/interactive/components/extension-editor.d.ts +5 -2
  41. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  42. package/dist/modes/interactive/components/extension-editor.js +8 -0
  43. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  44. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  45. package/dist/modes/interactive/components/login-dialog.js +1 -1
  46. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  47. package/dist/modes/interactive/components/model-selector.d.ts +1 -1
  48. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  49. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  50. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  51. package/dist/modes/interactive/components/oauth-selector.js +1 -1
  52. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  53. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  54. package/dist/modes/interactive/components/session-selector.js +1 -1
  55. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  56. package/dist/modes/interactive/components/user-message.d.ts +1 -0
  57. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  58. package/dist/modes/interactive/components/user-message.js +11 -0
  59. package/dist/modes/interactive/components/user-message.js.map +1 -1
  60. package/dist/modes/interactive/interactive-mode.d.ts +1 -1
  61. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  62. package/dist/modes/interactive/interactive-mode.js +27 -25
  63. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  64. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  65. package/dist/modes/interactive/theme/theme.js +5 -0
  66. package/dist/modes/interactive/theme/theme.js.map +1 -1
  67. package/docs/custom-provider.md +10 -2
  68. package/docs/providers.md +3 -1
  69. package/docs/settings.md +1 -0
  70. package/examples/extensions/antigravity-image-gen.ts +3 -1
  71. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  72. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  73. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  74. package/examples/extensions/custom-provider-qwen-cli/package.json +1 -1
  75. package/examples/extensions/with-deps/package-lock.json +2 -2
  76. package/examples/extensions/with-deps/package.json +1 -1
  77. package/package.json +8 -6
@@ -73,6 +73,7 @@ export class AgentSession {
73
73
  // Compaction state
74
74
  _compactionAbortController = undefined;
75
75
  _autoCompactionAbortController = undefined;
76
+ _overflowRecoveryAttempted = false;
76
77
  // Branch summarization state
77
78
  _branchSummaryAbortController = undefined;
78
79
  // Retry state
@@ -182,6 +183,7 @@ export class AgentSession {
182
183
  // When a user message starts, check if it's from either queue and remove it BEFORE emitting
183
184
  // This ensures the UI sees the updated queue state
184
185
  if (event.type === "message_start" && event.message.role === "user") {
186
+ this._overflowRecoveryAttempted = false;
185
187
  const messageText = this._getUserMessageText(event.message);
186
188
  if (messageText) {
187
189
  // Check steering queue first
@@ -219,9 +221,12 @@ export class AgentSession {
219
221
  // Track assistant message for auto-compaction (checked on agent_end)
220
222
  if (event.message.role === "assistant") {
221
223
  this._lastAssistantMessage = event.message;
224
+ const assistantMsg = event.message;
225
+ if (assistantMsg.stopReason !== "error") {
226
+ this._overflowRecoveryAttempted = false;
227
+ }
222
228
  // Reset retry counter immediately on successful assistant response
223
229
  // This prevents accumulation across multiple LLM calls within a turn
224
- const assistantMsg = event.message;
225
230
  if (assistantMsg.stopReason !== "error" && this._retryAttempt > 0) {
226
231
  this._emit({
227
232
  type: "auto_retry_end",
@@ -464,9 +469,11 @@ export class AgentSession {
464
469
  this._baseSystemPrompt = this._rebuildSystemPrompt(validToolNames);
465
470
  this.agent.setSystemPrompt(this._baseSystemPrompt);
466
471
  }
467
- /** Whether auto-compaction is currently running */
472
+ /** Whether compaction or branch summarization is currently running */
468
473
  get isCompacting() {
469
- return this._autoCompactionAbortController !== undefined || this._compactionAbortController !== undefined;
474
+ return (this._autoCompactionAbortController !== undefined ||
475
+ this._compactionAbortController !== undefined ||
476
+ this._branchSummaryAbortController !== undefined);
470
477
  }
471
478
  /** All messages including custom types like BashExecutionMessage */
472
479
  get messages() {
@@ -1059,8 +1066,11 @@ export class AgentSession {
1059
1066
  this.agent.setModel(next.model);
1060
1067
  this.sessionManager.appendModelChange(next.model.provider, next.model.id);
1061
1068
  this.settingsManager.setDefaultModelAndProvider(next.model.provider, next.model.id);
1062
- // Apply thinking level (setThinkingLevel clamps to model capabilities)
1063
- this.setThinkingLevel(next.thinkingLevel);
1069
+ // Apply thinking level.
1070
+ // - Explicit scoped model thinking level overrides current session level
1071
+ // - Undefined scoped model thinking level inherits current session level
1072
+ // setThinkingLevel clamps to model capabilities.
1073
+ this.setThinkingLevel(next.thinkingLevel ?? this.thinkingLevel);
1064
1074
  await this._emitModelSelect(next.model, currentModel, "cycle");
1065
1075
  return { model: next.model, thinkingLevel: this.thinkingLevel, isScoped: true };
1066
1076
  }
@@ -1321,6 +1331,17 @@ export class AgentSession {
1321
1331
  const errorIsFromBeforeCompaction = compactionEntry !== null && assistantMessage.timestamp < new Date(compactionEntry.timestamp).getTime();
1322
1332
  // Case 1: Overflow - LLM returned context overflow error
1323
1333
  if (sameModel && !errorIsFromBeforeCompaction && isContextOverflow(assistantMessage, contextWindow)) {
1334
+ if (this._overflowRecoveryAttempted) {
1335
+ this._emit({
1336
+ type: "auto_compaction_end",
1337
+ result: undefined,
1338
+ aborted: false,
1339
+ willRetry: false,
1340
+ errorMessage: "Context overflow recovery failed after one compact-and-retry attempt. Try reducing context or switching to a larger-context model.",
1341
+ });
1342
+ return;
1343
+ }
1344
+ this._overflowRecoveryAttempted = true;
1324
1345
  // Remove the error message from agent state (it IS saved to session for history,
1325
1346
  // but we don't want it in context for the retry)
1326
1347
  const messages = this.agent.state.messages;