@earendil-works/pi-coding-agent 0.80.2 → 0.80.5

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 (211) hide show
  1. package/CHANGELOG.md +115 -1
  2. package/README.md +3 -2
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +2 -2
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/cli/config-selector.d.ts +4 -2
  7. package/dist/cli/config-selector.d.ts.map +1 -1
  8. package/dist/cli/config-selector.js +1 -1
  9. package/dist/cli/config-selector.js.map +1 -1
  10. package/dist/cli/file-processor.d.ts.map +1 -1
  11. package/dist/cli/file-processor.js +13 -25
  12. package/dist/cli/file-processor.js.map +1 -1
  13. package/dist/core/agent-session.d.ts +22 -5
  14. package/dist/core/agent-session.d.ts.map +1 -1
  15. package/dist/core/agent-session.js +133 -50
  16. package/dist/core/agent-session.js.map +1 -1
  17. package/dist/core/auth-storage.d.ts.map +1 -1
  18. package/dist/core/auth-storage.js +13 -5
  19. package/dist/core/auth-storage.js.map +1 -1
  20. package/dist/core/cache-stats.d.ts +49 -0
  21. package/dist/core/cache-stats.d.ts.map +1 -0
  22. package/dist/core/cache-stats.js +101 -0
  23. package/dist/core/cache-stats.js.map +1 -0
  24. package/dist/core/compaction/compaction.d.ts +1 -2
  25. package/dist/core/compaction/compaction.d.ts.map +1 -1
  26. package/dist/core/compaction/compaction.js +56 -81
  27. package/dist/core/compaction/compaction.js.map +1 -1
  28. package/dist/core/extensions/index.d.ts +1 -1
  29. package/dist/core/extensions/index.d.ts.map +1 -1
  30. package/dist/core/extensions/index.js.map +1 -1
  31. package/dist/core/extensions/loader.d.ts.map +1 -1
  32. package/dist/core/extensions/loader.js +10 -0
  33. package/dist/core/extensions/loader.js.map +1 -1
  34. package/dist/core/extensions/runner.d.ts +5 -3
  35. package/dist/core/extensions/runner.d.ts.map +1 -1
  36. package/dist/core/extensions/runner.js +38 -0
  37. package/dist/core/extensions/runner.js.map +1 -1
  38. package/dist/core/extensions/types.d.ts +39 -5
  39. package/dist/core/extensions/types.d.ts.map +1 -1
  40. package/dist/core/extensions/types.js.map +1 -1
  41. package/dist/core/http-dispatcher.d.ts.map +1 -1
  42. package/dist/core/http-dispatcher.js +28 -1
  43. package/dist/core/http-dispatcher.js.map +1 -1
  44. package/dist/core/index.d.ts +1 -1
  45. package/dist/core/index.d.ts.map +1 -1
  46. package/dist/core/index.js.map +1 -1
  47. package/dist/core/keybindings.d.ts.map +1 -1
  48. package/dist/core/keybindings.js +3 -6
  49. package/dist/core/keybindings.js.map +1 -1
  50. package/dist/core/model-registry.d.ts +3 -0
  51. package/dist/core/model-registry.d.ts.map +1 -1
  52. package/dist/core/model-registry.js +16 -2
  53. package/dist/core/model-registry.js.map +1 -1
  54. package/dist/core/model-resolver.d.ts +10 -0
  55. package/dist/core/model-resolver.d.ts.map +1 -1
  56. package/dist/core/model-resolver.js +15 -18
  57. package/dist/core/model-resolver.js.map +1 -1
  58. package/dist/core/package-manager.d.ts +4 -1
  59. package/dist/core/package-manager.d.ts.map +1 -1
  60. package/dist/core/package-manager.js +68 -26
  61. package/dist/core/package-manager.js.map +1 -1
  62. package/dist/core/provider-attribution.d.ts.map +1 -1
  63. package/dist/core/provider-attribution.js +0 -10
  64. package/dist/core/provider-attribution.js.map +1 -1
  65. package/dist/core/resource-loader.d.ts +2 -2
  66. package/dist/core/resource-loader.d.ts.map +1 -1
  67. package/dist/core/resource-loader.js +8 -7
  68. package/dist/core/resource-loader.js.map +1 -1
  69. package/dist/core/sdk.d.ts +1 -1
  70. package/dist/core/sdk.d.ts.map +1 -1
  71. package/dist/core/sdk.js +8 -1
  72. package/dist/core/sdk.js.map +1 -1
  73. package/dist/core/session-manager.d.ts +21 -2
  74. package/dist/core/session-manager.d.ts.map +1 -1
  75. package/dist/core/session-manager.js +104 -72
  76. package/dist/core/session-manager.js.map +1 -1
  77. package/dist/core/settings-manager.d.ts +10 -0
  78. package/dist/core/settings-manager.d.ts.map +1 -1
  79. package/dist/core/settings-manager.js +27 -0
  80. package/dist/core/settings-manager.js.map +1 -1
  81. package/dist/core/slash-commands.d.ts +1 -0
  82. package/dist/core/slash-commands.d.ts.map +1 -1
  83. package/dist/core/slash-commands.js +3 -3
  84. package/dist/core/slash-commands.js.map +1 -1
  85. package/dist/core/timings.d.ts +4 -2
  86. package/dist/core/timings.d.ts.map +1 -1
  87. package/dist/core/timings.js +24 -14
  88. package/dist/core/timings.js.map +1 -1
  89. package/dist/core/tools/bash.d.ts.map +1 -1
  90. package/dist/core/tools/bash.js +20 -5
  91. package/dist/core/tools/bash.js.map +1 -1
  92. package/dist/core/tools/edit.d.ts.map +1 -1
  93. package/dist/core/tools/edit.js +2 -2
  94. package/dist/core/tools/edit.js.map +1 -1
  95. package/dist/core/tools/read.d.ts.map +1 -1
  96. package/dist/core/tools/read.js +12 -25
  97. package/dist/core/tools/read.js.map +1 -1
  98. package/dist/index.d.ts +3 -2
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +2 -1
  101. package/dist/index.js.map +1 -1
  102. package/dist/main.d.ts +2 -2
  103. package/dist/main.d.ts.map +1 -1
  104. package/dist/main.js +17 -4
  105. package/dist/main.js.map +1 -1
  106. package/dist/modes/interactive/components/assistant-message.d.ts +3 -1
  107. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  108. package/dist/modes/interactive/components/assistant-message.js +23 -15
  109. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  110. package/dist/modes/interactive/components/config-selector.d.ts +34 -3
  111. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  112. package/dist/modes/interactive/components/config-selector.js +280 -25
  113. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  114. package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  115. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  116. package/dist/modes/interactive/components/custom-entry.js +52 -0
  117. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  118. package/dist/modes/interactive/components/extension-editor.d.ts +3 -1
  119. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  120. package/dist/modes/interactive/components/extension-editor.js +12 -3
  121. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  122. package/dist/modes/interactive/components/footer.d.ts +4 -0
  123. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  124. package/dist/modes/interactive/components/footer.js +1 -1
  125. package/dist/modes/interactive/components/footer.js.map +1 -1
  126. package/dist/modes/interactive/components/oauth-selector.d.ts +3 -1
  127. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  128. package/dist/modes/interactive/components/oauth-selector.js +17 -6
  129. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  130. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  131. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  132. package/dist/modes/interactive/components/settings-selector.js +23 -1
  133. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  134. package/dist/modes/interactive/components/status-indicator.d.ts +28 -0
  135. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  136. package/dist/modes/interactive/components/status-indicator.js +60 -0
  137. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  138. package/dist/modes/interactive/components/user-message.d.ts +6 -2
  139. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  140. package/dist/modes/interactive/components/user-message.js +19 -6
  141. package/dist/modes/interactive/components/user-message.js.map +1 -1
  142. package/dist/modes/interactive/interactive-mode.d.ts +21 -10
  143. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  144. package/dist/modes/interactive/interactive-mode.js +417 -196
  145. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  146. package/dist/modes/print-mode.d.ts.map +1 -1
  147. package/dist/modes/print-mode.js +1 -1
  148. package/dist/modes/print-mode.js.map +1 -1
  149. package/dist/modes/rpc/rpc-client.d.ts +21 -6
  150. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  151. package/dist/modes/rpc/rpc-client.js +17 -3
  152. package/dist/modes/rpc/rpc-client.js.map +1 -1
  153. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  154. package/dist/modes/rpc/rpc-mode.js +20 -1
  155. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  156. package/dist/modes/rpc/rpc-types.d.ts +26 -0
  157. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  158. package/dist/modes/rpc/rpc-types.js.map +1 -1
  159. package/dist/package-manager-cli.d.ts +2 -2
  160. package/dist/package-manager-cli.d.ts.map +1 -1
  161. package/dist/package-manager-cli.js +71 -17
  162. package/dist/package-manager-cli.js.map +1 -1
  163. package/dist/rpc-entry.d.ts +3 -0
  164. package/dist/rpc-entry.d.ts.map +1 -0
  165. package/dist/rpc-entry.js +10 -0
  166. package/dist/rpc-entry.js.map +1 -0
  167. package/dist/utils/clipboard-image.d.ts.map +1 -1
  168. package/dist/utils/clipboard-image.js +1 -1
  169. package/dist/utils/clipboard-image.js.map +1 -1
  170. package/dist/utils/image-convert.d.ts +1 -0
  171. package/dist/utils/image-convert.d.ts.map +1 -1
  172. package/dist/utils/image-convert.js +21 -15
  173. package/dist/utils/image-convert.js.map +1 -1
  174. package/dist/utils/image-process.d.ts +18 -0
  175. package/dist/utils/image-process.d.ts.map +1 -0
  176. package/dist/utils/image-process.js +83 -0
  177. package/dist/utils/image-process.js.map +1 -0
  178. package/dist/utils/mime.d.ts.map +1 -1
  179. package/dist/utils/mime.js +41 -0
  180. package/dist/utils/mime.js.map +1 -1
  181. package/docs/extensions.md +88 -17
  182. package/docs/keybindings.md +1 -1
  183. package/docs/models.md +4 -4
  184. package/docs/packages.md +2 -2
  185. package/docs/providers.md +2 -1
  186. package/docs/rpc.md +71 -3
  187. package/docs/sdk.md +50 -0
  188. package/docs/session-format.md +18 -8
  189. package/docs/settings.md +11 -0
  190. package/docs/usage.md +3 -3
  191. package/examples/extensions/README.md +1 -0
  192. package/examples/extensions/custom-compaction.ts +1 -0
  193. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  194. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  195. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  196. package/examples/extensions/entry-renderer.ts +41 -0
  197. package/examples/extensions/gondolin/package-lock.json +2 -2
  198. package/examples/extensions/gondolin/package.json +1 -1
  199. package/examples/extensions/handoff.ts +1 -1
  200. package/examples/extensions/qna.ts +1 -1
  201. package/examples/extensions/question.ts +1 -0
  202. package/examples/extensions/reload-runtime.ts +2 -2
  203. package/examples/extensions/sandbox/package-lock.json +2 -2
  204. package/examples/extensions/sandbox/package.json +1 -1
  205. package/examples/extensions/summarize.ts +1 -0
  206. package/examples/extensions/with-deps/package-lock.json +2 -2
  207. package/examples/extensions/with-deps/package.json +1 -1
  208. package/examples/sdk/12-full-control.ts +1 -1
  209. package/examples/sdk/README.md +1 -1
  210. package/npm-shrinkwrap.json +12 -12
  211. package/package.json +8 -5
@@ -21,7 +21,7 @@ import type { CustomMessage } from "./messages.ts";
21
21
  import type { ModelRegistry } from "./model-registry.ts";
22
22
  import { type PromptTemplate } from "./prompt-templates.ts";
23
23
  import type { ResourceLoader } from "./resource-loader.ts";
24
- import type { BranchSummaryEntry, SessionManager } from "./session-manager.ts";
24
+ import type { BranchSummaryEntry, SessionEntry, SessionManager } from "./session-manager.ts";
25
25
  import type { SettingsManager } from "./settings-manager.ts";
26
26
  import { type BashOperations } from "./tools/bash.ts";
27
27
  /** Parsed skill block from a user message */
@@ -43,6 +43,8 @@ export type AgentSessionEvent = Exclude<AgentEvent, {
43
43
  type: "agent_end";
44
44
  messages: AgentMessage[];
45
45
  willRetry: boolean;
46
+ } | {
47
+ type: "agent_settled";
46
48
  } | {
47
49
  type: "queue_update";
48
50
  steering: readonly string[];
@@ -50,6 +52,9 @@ export type AgentSessionEvent = Exclude<AgentEvent, {
50
52
  } | {
51
53
  type: "compaction_start";
52
54
  reason: "manual" | "threshold" | "overflow";
55
+ } | {
56
+ type: "entry_appended";
57
+ entry: SessionEntry;
53
58
  } | {
54
59
  type: "session_info_changed";
55
60
  name: string | undefined;
@@ -87,7 +92,7 @@ export interface AgentSessionConfig {
87
92
  model: Model<any>;
88
93
  thinkingLevel?: ThinkingLevel;
89
94
  }>;
90
- /** Resource loader for skills, prompts, themes, context files, system prompt */
95
+ /** Resource loader for extensions, skills, prompts, themes, context files, and system prompt */
91
96
  resourceLoader: ResourceLoader;
92
97
  /** SDK custom tools registered outside extensions */
93
98
  customTools?: ToolDefinition[];
@@ -167,6 +172,9 @@ export declare class AgentSession {
167
172
  private _scopedModels;
168
173
  private _unsubscribeAgent?;
169
174
  private _eventListeners;
175
+ private _isAgentRunActive;
176
+ private _idleWaitPromise;
177
+ private _resolveIdleWait;
170
178
  /** Tracks pending steering messages for UI display. Removed when delivered. */
171
179
  private _steeringMessages;
172
180
  /** Tracks pending follow-up messages for UI display. Removed when delivered. */
@@ -207,6 +215,7 @@ export declare class AgentSession {
207
215
  private _toolPromptGuidelines;
208
216
  private _baseSystemPrompt;
209
217
  private _baseSystemPromptOptions;
218
+ private _systemPromptOverride?;
210
219
  constructor(config: AgentSessionConfig);
211
220
  /** Model registry for API key resolution and model discovery */
212
221
  get modelRegistry(): ModelRegistry;
@@ -221,9 +230,13 @@ export declare class AgentSession {
221
230
  * happens here instead of in wrappers.
222
231
  */
223
232
  private _installAgentToolHooks;
233
+ private _installAgentNextTurnRefresh;
224
234
  /** Emit an event to all listeners */
225
235
  private _emit;
226
236
  private _emitQueueUpdate;
237
+ private _getIdleWaitPromise;
238
+ private _resolveIdleWaitIfIdle;
239
+ private _emitAgentSettled;
227
240
  private _lastAssistantMessage;
228
241
  /** Internal handler for agent events - shared by subscribe and reconnect */
229
242
  private _handleAgentEvent;
@@ -262,8 +275,10 @@ export declare class AgentSession {
262
275
  get model(): Model<any> | undefined;
263
276
  /** Current thinking level */
264
277
  get thinkingLevel(): ThinkingLevel;
265
- /** Whether agent is currently streaming a response */
278
+ /** Whether the session is currently processing an agent run or post-run continuation. */
266
279
  get isStreaming(): boolean;
280
+ /** Whether the session has no active agent run, retry, auto-compaction, or queued continuation. */
281
+ get isIdle(): boolean;
267
282
  /** Current effective system prompt (includes any per-turn extension modifications) */
268
283
  get systemPrompt(): string;
269
284
  /** Current retry attempt (0 if not retrying) */
@@ -402,6 +417,7 @@ export declare class AgentSession {
402
417
  * Abort current operation and wait for agent to become idle.
403
418
  */
404
419
  abort(): Promise<void>;
420
+ waitForIdle(): Promise<void>;
405
421
  private _emitModelSelect;
406
422
  /**
407
423
  * Set model directly.
@@ -485,7 +501,6 @@ export declare class AgentSession {
485
501
  reload(options?: {
486
502
  beforeSessionStart?: () => void | Promise<void>;
487
503
  }): Promise<void>;
488
- private _isNonRetryableProviderLimitError;
489
504
  /**
490
505
  * Check if an error is retryable (overloaded, rate limit, server errors).
491
506
  * Context overflow errors are NOT retryable (handled by compaction instead).
@@ -571,7 +586,9 @@ export declare class AgentSession {
571
586
  }>;
572
587
  private _extractUserMessageText;
573
588
  /**
574
- * Get session statistics.
589
+ * Get session statistics. Aggregates over ALL session entries (including
590
+ * history that was compacted away), so token/cost totals reflect what was
591
+ * actually billed across the session.
575
592
  */
576
593
  getSessionStats(): SessionStats;
577
594
  getContextUsage(): ContextUsage | undefined;