@codex-infinity/pi-infinity 0.60.2 → 0.61.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 (245) hide show
  1. package/CHANGELOG.md +45 -1
  2. package/dist/bun/cli.d.ts.map +1 -1
  3. package/dist/bun/cli.js +1 -0
  4. package/dist/bun/cli.js.map +1 -1
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/cli/config-selector.js.map +1 -1
  7. package/dist/cli/file-processor.js.map +1 -1
  8. package/dist/cli/initial-message.js.map +1 -1
  9. package/dist/cli/list-models.js.map +1 -1
  10. package/dist/cli/session-picker.d.ts.map +1 -1
  11. package/dist/cli/session-picker.js +2 -1
  12. package/dist/cli/session-picker.js.map +1 -1
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +1 -0
  15. package/dist/cli.js.map +1 -1
  16. package/dist/config.js.map +1 -1
  17. package/dist/core/agent-session.d.ts.map +1 -1
  18. package/dist/core/agent-session.js +50 -69
  19. package/dist/core/agent-session.js.map +1 -1
  20. package/dist/core/auth-storage.js +4 -8
  21. package/dist/core/auth-storage.js.map +1 -1
  22. package/dist/core/bash-executor.js.map +1 -1
  23. package/dist/core/compaction/branch-summarization.js.map +1 -1
  24. package/dist/core/compaction/compaction.js.map +1 -1
  25. package/dist/core/compaction/utils.js.map +1 -1
  26. package/dist/core/event-bus.js.map +1 -1
  27. package/dist/core/exec.js.map +1 -1
  28. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  29. package/dist/core/export-html/index.js.map +1 -1
  30. package/dist/core/export-html/template.css +43 -13
  31. package/dist/core/export-html/template.html +1 -0
  32. package/dist/core/export-html/template.js +107 -0
  33. package/dist/core/export-html/tool-renderer.js.map +1 -1
  34. package/dist/core/extensions/index.d.ts +1 -1
  35. package/dist/core/extensions/index.d.ts.map +1 -1
  36. package/dist/core/extensions/index.js.map +1 -1
  37. package/dist/core/extensions/loader.d.ts.map +1 -1
  38. package/dist/core/extensions/loader.js +4 -4
  39. package/dist/core/extensions/loader.js.map +1 -1
  40. package/dist/core/extensions/runner.d.ts +1 -1
  41. package/dist/core/extensions/runner.d.ts.map +1 -1
  42. package/dist/core/extensions/runner.js +62 -56
  43. package/dist/core/extensions/runner.js.map +1 -1
  44. package/dist/core/extensions/types.d.ts +4 -3
  45. package/dist/core/extensions/types.d.ts.map +1 -1
  46. package/dist/core/extensions/types.js.map +1 -1
  47. package/dist/core/extensions/wrapper.js.map +1 -1
  48. package/dist/core/footer-data-provider.d.ts +9 -2
  49. package/dist/core/footer-data-provider.d.ts.map +1 -1
  50. package/dist/core/footer-data-provider.js +92 -20
  51. package/dist/core/footer-data-provider.js.map +1 -1
  52. package/dist/core/index.d.ts +1 -1
  53. package/dist/core/index.d.ts.map +1 -1
  54. package/dist/core/index.js.map +1 -1
  55. package/dist/core/keybindings.d.ts +268 -51
  56. package/dist/core/keybindings.d.ts.map +1 -1
  57. package/dist/core/keybindings.js +220 -143
  58. package/dist/core/keybindings.js.map +1 -1
  59. package/dist/core/messages.js.map +1 -1
  60. package/dist/core/model-registry.d.ts +1 -0
  61. package/dist/core/model-registry.d.ts.map +1 -1
  62. package/dist/core/model-registry.js +29 -21
  63. package/dist/core/model-registry.js.map +1 -1
  64. package/dist/core/model-resolver.d.ts.map +1 -1
  65. package/dist/core/model-resolver.js +4 -4
  66. package/dist/core/model-resolver.js.map +1 -1
  67. package/dist/core/package-manager.js +0 -6
  68. package/dist/core/package-manager.js.map +1 -1
  69. package/dist/core/prompt-templates.js.map +1 -1
  70. package/dist/core/resolve-config-value.js.map +1 -1
  71. package/dist/core/resource-loader.js +0 -37
  72. package/dist/core/resource-loader.js.map +1 -1
  73. package/dist/core/sdk.d.ts +2 -2
  74. package/dist/core/sdk.d.ts.map +1 -1
  75. package/dist/core/sdk.js +4 -4
  76. package/dist/core/sdk.js.map +1 -1
  77. package/dist/core/session-manager.d.ts +5 -0
  78. package/dist/core/session-manager.d.ts.map +1 -1
  79. package/dist/core/session-manager.js +8 -12
  80. package/dist/core/session-manager.js.map +1 -1
  81. package/dist/core/settings-manager.js +7 -16
  82. package/dist/core/settings-manager.js.map +1 -1
  83. package/dist/core/skills.js.map +1 -1
  84. package/dist/core/system-prompt.js.map +1 -1
  85. package/dist/core/timings.js.map +1 -1
  86. package/dist/core/tools/bash.js.map +1 -1
  87. package/dist/core/tools/edit-diff.js.map +1 -1
  88. package/dist/core/tools/edit.d.ts.map +1 -1
  89. package/dist/core/tools/edit.js +3 -2
  90. package/dist/core/tools/edit.js.map +1 -1
  91. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  92. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  93. package/dist/core/tools/file-mutation-queue.js +37 -0
  94. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  95. package/dist/core/tools/find.js.map +1 -1
  96. package/dist/core/tools/grep.js.map +1 -1
  97. package/dist/core/tools/index.d.ts +1 -0
  98. package/dist/core/tools/index.d.ts.map +1 -1
  99. package/dist/core/tools/index.js +1 -0
  100. package/dist/core/tools/index.js.map +1 -1
  101. package/dist/core/tools/ls.js.map +1 -1
  102. package/dist/core/tools/path-utils.js.map +1 -1
  103. package/dist/core/tools/read.js.map +1 -1
  104. package/dist/core/tools/truncate.js.map +1 -1
  105. package/dist/core/tools/write.d.ts.map +1 -1
  106. package/dist/core/tools/write.js +6 -3
  107. package/dist/core/tools/write.js.map +1 -1
  108. package/dist/index.d.ts +3 -3
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +2 -2
  111. package/dist/index.js.map +1 -1
  112. package/dist/main.d.ts.map +1 -1
  113. package/dist/main.js +10 -5
  114. package/dist/main.js.map +1 -1
  115. package/dist/migrations.js.map +1 -1
  116. package/dist/modes/interactive/components/armin.js +6 -10
  117. package/dist/modes/interactive/components/armin.js.map +1 -1
  118. package/dist/modes/interactive/components/assistant-message.js +0 -4
  119. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  120. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  121. package/dist/modes/interactive/components/bash-execution.js +8 -14
  122. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  123. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  124. package/dist/modes/interactive/components/bordered-loader.js +1 -4
  125. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  126. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  127. package/dist/modes/interactive/components/branch-summary-message.js +3 -5
  128. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  129. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  130. package/dist/modes/interactive/components/compaction-summary-message.js +3 -5
  131. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  132. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  133. package/dist/modes/interactive/components/config-selector.js +14 -23
  134. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  135. package/dist/modes/interactive/components/countdown-timer.js +0 -5
  136. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  137. package/dist/modes/interactive/components/custom-editor.d.ts +3 -3
  138. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  139. package/dist/modes/interactive/components/custom-editor.js +7 -14
  140. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  141. package/dist/modes/interactive/components/custom-message.js +1 -6
  142. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  143. package/dist/modes/interactive/components/daxnuts.js +6 -8
  144. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  145. package/dist/modes/interactive/components/diff.js.map +1 -1
  146. package/dist/modes/interactive/components/dynamic-border.js +0 -1
  147. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  148. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  149. package/dist/modes/interactive/components/extension-editor.js +10 -15
  150. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  151. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  152. package/dist/modes/interactive/components/extension-input.js +7 -13
  153. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  154. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  155. package/dist/modes/interactive/components/extension-selector.js +9 -16
  156. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  157. package/dist/modes/interactive/components/footer.js +1 -3
  158. package/dist/modes/interactive/components/footer.js.map +1 -1
  159. package/dist/modes/interactive/components/index.d.ts +1 -1
  160. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  161. package/dist/modes/interactive/components/index.js +1 -1
  162. package/dist/modes/interactive/components/index.js.map +1 -1
  163. package/dist/modes/interactive/components/keybinding-hints.d.ts +3 -36
  164. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  165. package/dist/modes/interactive/components/keybinding-hints.js +5 -44
  166. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  167. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  168. package/dist/modes/interactive/components/login-dialog.js +9 -15
  169. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  170. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  171. package/dist/modes/interactive/components/model-selector.js +20 -28
  172. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  173. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  174. package/dist/modes/interactive/components/oauth-selector.js +8 -13
  175. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  176. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  177. package/dist/modes/interactive/components/scoped-models-selector.js +13 -17
  178. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  179. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  180. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  181. package/dist/modes/interactive/components/session-selector.js +65 -93
  182. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  183. package/dist/modes/interactive/components/settings-selector.js +0 -2
  184. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  185. package/dist/modes/interactive/components/show-images-selector.js +0 -1
  186. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  187. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  188. package/dist/modes/interactive/components/skill-invocation-message.js +3 -5
  189. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  190. package/dist/modes/interactive/components/theme-selector.js +0 -2
  191. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  192. package/dist/modes/interactive/components/thinking-selector.js +0 -1
  193. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  194. package/dist/modes/interactive/components/tool-execution.d.ts +7 -0
  195. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  196. package/dist/modes/interactive/components/tool-execution.js +57 -28
  197. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  198. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  199. package/dist/modes/interactive/components/tree-selector.js +32 -46
  200. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  201. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  202. package/dist/modes/interactive/components/user-message-selector.js +9 -12
  203. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  204. package/dist/modes/interactive/components/user-message.js.map +1 -1
  205. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  206. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  207. package/dist/modes/interactive/interactive-mode.js +155 -165
  208. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  209. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  210. package/dist/modes/interactive/theme/theme.js +49 -42
  211. package/dist/modes/interactive/theme/theme.js.map +1 -1
  212. package/dist/modes/print-mode.js.map +1 -1
  213. package/dist/modes/rpc/jsonl.js.map +1 -1
  214. package/dist/modes/rpc/rpc-client.js +6 -7
  215. package/dist/modes/rpc/rpc-client.js.map +1 -1
  216. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  217. package/dist/modes/rpc/rpc-mode.js +4 -1
  218. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  219. package/dist/utils/changelog.js.map +1 -1
  220. package/dist/utils/child-process.js.map +1 -1
  221. package/dist/utils/clipboard-image.js.map +1 -1
  222. package/dist/utils/clipboard.js.map +1 -1
  223. package/dist/utils/exif-orientation.js.map +1 -1
  224. package/dist/utils/frontmatter.js.map +1 -1
  225. package/dist/utils/git.js.map +1 -1
  226. package/dist/utils/image-convert.js.map +1 -1
  227. package/dist/utils/image-resize.js.map +1 -1
  228. package/dist/utils/mime.js.map +1 -1
  229. package/dist/utils/photon.js.map +1 -1
  230. package/dist/utils/shell.js.map +1 -1
  231. package/dist/utils/sleep.js.map +1 -1
  232. package/dist/utils/tools-manager.js.map +1 -1
  233. package/docs/extensions.md +42 -5
  234. package/docs/keybindings.md +101 -112
  235. package/examples/extensions/antigravity-image-gen.ts +5 -3
  236. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  237. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  238. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  239. package/examples/extensions/custom-provider-qwen-cli/package.json +1 -1
  240. package/examples/extensions/subagent/index.ts +7 -5
  241. package/examples/extensions/tool-override.ts +9 -7
  242. package/examples/extensions/truncated-tool.ts +6 -3
  243. package/examples/extensions/with-deps/package-lock.json +2 -2
  244. package/examples/extensions/with-deps/package.json +1 -1
  245. package/package.json +4 -4
@@ -56,61 +56,56 @@ const THINKING_LEVELS_WITH_XHIGH = ["off", "minimal", "low", "medium", "high", "
56
56
  // AgentSession Class
57
57
  // ============================================================================
58
58
  export class AgentSession {
59
- agent;
60
- sessionManager;
61
- settingsManager;
62
- _scopedModels;
63
- // Event subscription state
64
- _unsubscribeAgent;
65
- _eventListeners = [];
66
- _agentEventQueue = Promise.resolve();
67
- /** Tracks pending steering messages for UI display. Removed when delivered. */
68
- _steeringMessages = [];
69
- /** Tracks pending follow-up messages for UI display. Removed when delivered. */
70
- _followUpMessages = [];
71
- /** Messages queued to be included with the next user prompt as context ("asides"). */
72
- _pendingNextTurnMessages = [];
73
- // Compaction state
74
- _compactionAbortController = undefined;
75
- _autoCompactionAbortController = undefined;
76
- _overflowRecoveryAttempted = false;
77
- // Branch summarization state
78
- _branchSummaryAbortController = undefined;
79
- // Retry state
80
- _retryAbortController = undefined;
81
- _retryAttempt = 0;
82
- _retryPromise = undefined;
83
- _retryResolve = undefined;
84
- // Autonomous mode settings
85
- _autoNextSteps = false;
86
- _autoNextIdea = false;
87
- // Bash execution state
88
- _bashAbortController = undefined;
89
- _pendingBashMessages = [];
90
- // Extension system
91
- _extensionRunner = undefined;
92
- _turnIndex = 0;
93
- _resourceLoader;
94
- _customTools;
95
- _baseToolRegistry = new Map();
96
- _cwd;
97
- _extensionRunnerRef;
98
- _initialActiveToolNames;
99
- _baseToolsOverride;
100
- _extensionUIContext;
101
- _extensionCommandContextActions;
102
- _extensionShutdownHandler;
103
- _extensionErrorListener;
104
- _extensionErrorUnsubscriber;
105
- // Model registry for API key resolution
106
- _modelRegistry;
107
- // Tool registry for extension getTools/setTools
108
- _toolRegistry = new Map();
109
- _toolPromptSnippets = new Map();
110
- _toolPromptGuidelines = new Map();
111
- // Base system prompt (without extension appends) - used to apply fresh appends each turn
112
- _baseSystemPrompt = "";
113
59
  constructor(config) {
60
+ this._eventListeners = [];
61
+ this._agentEventQueue = Promise.resolve();
62
+ /** Tracks pending steering messages for UI display. Removed when delivered. */
63
+ this._steeringMessages = [];
64
+ /** Tracks pending follow-up messages for UI display. Removed when delivered. */
65
+ this._followUpMessages = [];
66
+ /** Messages queued to be included with the next user prompt as context ("asides"). */
67
+ this._pendingNextTurnMessages = [];
68
+ // Compaction state
69
+ this._compactionAbortController = undefined;
70
+ this._autoCompactionAbortController = undefined;
71
+ this._overflowRecoveryAttempted = false;
72
+ // Branch summarization state
73
+ this._branchSummaryAbortController = undefined;
74
+ // Retry state
75
+ this._retryAbortController = undefined;
76
+ this._retryAttempt = 0;
77
+ this._retryPromise = undefined;
78
+ this._retryResolve = undefined;
79
+ // Autonomous mode settings
80
+ this._autoNextSteps = false;
81
+ this._autoNextIdea = false;
82
+ // Bash execution state
83
+ this._bashAbortController = undefined;
84
+ this._pendingBashMessages = [];
85
+ // Extension system
86
+ this._extensionRunner = undefined;
87
+ this._turnIndex = 0;
88
+ this._baseToolRegistry = new Map();
89
+ // Tool registry for extension getTools/setTools
90
+ this._toolRegistry = new Map();
91
+ this._toolPromptSnippets = new Map();
92
+ this._toolPromptGuidelines = new Map();
93
+ // Base system prompt (without extension appends) - used to apply fresh appends each turn
94
+ this._baseSystemPrompt = "";
95
+ // Track last assistant message for auto-compaction check
96
+ this._lastAssistantMessage = undefined;
97
+ /** Internal handler for agent events - shared by subscribe and reconnect */
98
+ this._handleAgentEvent = (event) => {
99
+ // Create retry promise synchronously before queueing async processing.
100
+ // Agent.emit() calls this handler synchronously, and prompt() calls waitForRetry()
101
+ // as soon as agent.prompt() resolves. If _retryPromise is created only inside
102
+ // _processAgentEvent, slow earlier queued events can delay agent_end processing
103
+ // and waitForRetry() can miss the in-flight retry.
104
+ this._createRetryPromiseForAgentEnd(event);
105
+ this._agentEventQueue = this._agentEventQueue.then(() => this._processAgentEvent(event), () => this._processAgentEvent(event));
106
+ // Keep queue alive if an event handler fails
107
+ this._agentEventQueue.catch(() => { });
108
+ };
114
109
  this.agent = config.agent;
115
110
  this.sessionManager = config.sessionManager;
116
111
  this.settingsManager = config.settingsManager;
@@ -199,20 +194,6 @@ export class AgentSession {
199
194
  l(event);
200
195
  }
201
196
  }
202
- // Track last assistant message for auto-compaction check
203
- _lastAssistantMessage = undefined;
204
- /** Internal handler for agent events - shared by subscribe and reconnect */
205
- _handleAgentEvent = (event) => {
206
- // Create retry promise synchronously before queueing async processing.
207
- // Agent.emit() calls this handler synchronously, and prompt() calls waitForRetry()
208
- // as soon as agent.prompt() resolves. If _retryPromise is created only inside
209
- // _processAgentEvent, slow earlier queued events can delay agent_end processing
210
- // and waitForRetry() can miss the in-flight retry.
211
- this._createRetryPromiseForAgentEnd(event);
212
- this._agentEventQueue = this._agentEventQueue.then(() => this._processAgentEvent(event), () => this._processAgentEvent(event));
213
- // Keep queue alive if an event handler fails
214
- this._agentEventQueue.catch(() => { });
215
- };
216
197
  _createRetryPromiseForAgentEnd(event) {
217
198
  if (event.type !== "agent_end" || this._retryPromise) {
218
199
  return;
@@ -293,7 +274,6 @@ export class AgentSession {
293
274
  attempt: this._retryAttempt,
294
275
  });
295
276
  this._retryAttempt = 0;
296
- this._resolveRetry();
297
277
  }
298
278
  }
299
279
  }
@@ -307,6 +287,7 @@ export class AgentSession {
307
287
  if (didRetry)
308
288
  return; // Retry was initiated, don't proceed to compaction
309
289
  }
290
+ this._resolveRetry();
310
291
  await this._checkCompaction(msg);
311
292
  // Queue autonomous follow-up if enabled (after compaction, so it has full context)
312
293
  this._maybeQueueAutonomousFollowUp(msg);