@vaclav-synacek/pi-coding-agent-termux 0.49.3-0 → 0.50.1-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 (206) hide show
  1. package/CHANGELOG.md +110 -1
  2. package/dist/cli/args.d.ts +5 -0
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +57 -23
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/cli/config-selector.d.ts +14 -0
  7. package/dist/cli/config-selector.d.ts.map +1 -0
  8. package/dist/cli/config-selector.js +31 -0
  9. package/dist/cli/config-selector.js.map +1 -0
  10. package/dist/cli/session-picker.d.ts.map +1 -1
  11. package/dist/cli/session-picker.js +1 -1
  12. package/dist/cli/session-picker.js.map +1 -1
  13. package/dist/core/agent-session.d.ts +60 -37
  14. package/dist/core/agent-session.d.ts.map +1 -1
  15. package/dist/core/agent-session.js +272 -69
  16. package/dist/core/agent-session.js.map +1 -1
  17. package/dist/core/auth-storage.d.ts +8 -18
  18. package/dist/core/auth-storage.d.ts.map +1 -1
  19. package/dist/core/auth-storage.js +39 -55
  20. package/dist/core/auth-storage.js.map +1 -1
  21. package/dist/core/bash-executor.d.ts.map +1 -1
  22. package/dist/core/bash-executor.js +2 -1
  23. package/dist/core/bash-executor.js.map +1 -1
  24. package/dist/core/diagnostics.d.ts +15 -0
  25. package/dist/core/diagnostics.d.ts.map +1 -0
  26. package/dist/core/diagnostics.js +2 -0
  27. package/dist/core/diagnostics.js.map +1 -0
  28. package/dist/core/export-html/template.css +9 -0
  29. package/dist/core/export-html/template.js +6 -4
  30. package/dist/core/extensions/index.d.ts +1 -1
  31. package/dist/core/extensions/index.d.ts.map +1 -1
  32. package/dist/core/extensions/index.js.map +1 -1
  33. package/dist/core/extensions/loader.d.ts +1 -1
  34. package/dist/core/extensions/loader.d.ts.map +1 -1
  35. package/dist/core/extensions/loader.js +10 -1
  36. package/dist/core/extensions/loader.js.map +1 -1
  37. package/dist/core/extensions/runner.d.ts +9 -3
  38. package/dist/core/extensions/runner.d.ts.map +1 -1
  39. package/dist/core/extensions/runner.js +39 -12
  40. package/dist/core/extensions/runner.js.map +1 -1
  41. package/dist/core/extensions/types.d.ts +112 -1
  42. package/dist/core/extensions/types.d.ts.map +1 -1
  43. package/dist/core/extensions/types.js.map +1 -1
  44. package/dist/core/footer-data-provider.d.ts +9 -2
  45. package/dist/core/footer-data-provider.d.ts.map +1 -1
  46. package/dist/core/footer-data-provider.js +13 -0
  47. package/dist/core/footer-data-provider.js.map +1 -1
  48. package/dist/core/model-registry.d.ts +42 -2
  49. package/dist/core/model-registry.d.ts.map +1 -1
  50. package/dist/core/model-registry.js +154 -44
  51. package/dist/core/model-registry.js.map +1 -1
  52. package/dist/core/model-resolver.d.ts.map +1 -1
  53. package/dist/core/model-resolver.js +3 -2
  54. package/dist/core/model-resolver.js.map +1 -1
  55. package/dist/core/package-manager.d.ts +130 -0
  56. package/dist/core/package-manager.d.ts.map +1 -0
  57. package/dist/core/package-manager.js +1177 -0
  58. package/dist/core/package-manager.js.map +1 -0
  59. package/dist/core/prompt-templates.d.ts +6 -0
  60. package/dist/core/prompt-templates.d.ts.map +1 -1
  61. package/dist/core/prompt-templates.js +114 -54
  62. package/dist/core/prompt-templates.js.map +1 -1
  63. package/dist/core/resource-loader.d.ts +160 -0
  64. package/dist/core/resource-loader.d.ts.map +1 -0
  65. package/dist/core/resource-loader.js +604 -0
  66. package/dist/core/resource-loader.js.map +1 -0
  67. package/dist/core/sdk.d.ts +14 -105
  68. package/dist/core/sdk.d.ts.map +1 -1
  69. package/dist/core/sdk.js +52 -304
  70. package/dist/core/sdk.js.map +1 -1
  71. package/dist/core/session-manager.d.ts.map +1 -1
  72. package/dist/core/session-manager.js +45 -1
  73. package/dist/core/session-manager.js.map +1 -1
  74. package/dist/core/settings-manager.d.ts +34 -16
  75. package/dist/core/settings-manager.d.ts.map +1 -1
  76. package/dist/core/settings-manager.js +104 -25
  77. package/dist/core/settings-manager.js.map +1 -1
  78. package/dist/core/skills.d.ts +18 -10
  79. package/dist/core/skills.d.ts.map +1 -1
  80. package/dist/core/skills.js +126 -93
  81. package/dist/core/skills.js.map +1 -1
  82. package/dist/core/system-prompt.d.ts +3 -27
  83. package/dist/core/system-prompt.d.ts.map +1 -1
  84. package/dist/core/system-prompt.js +16 -103
  85. package/dist/core/system-prompt.js.map +1 -1
  86. package/dist/core/tools/bash.d.ts.map +1 -1
  87. package/dist/core/tools/bash.js +2 -1
  88. package/dist/core/tools/bash.js.map +1 -1
  89. package/dist/core/tools/read.d.ts.map +1 -1
  90. package/dist/core/tools/read.js +4 -4
  91. package/dist/core/tools/read.js.map +1 -1
  92. package/dist/index.d.ts +12 -7
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +8 -6
  95. package/dist/index.js.map +1 -1
  96. package/dist/main.d.ts.map +1 -1
  97. package/dist/main.js +209 -97
  98. package/dist/main.js.map +1 -1
  99. package/dist/modes/interactive/components/bordered-loader.d.ts +5 -1
  100. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  101. package/dist/modes/interactive/components/bordered-loader.js +29 -9
  102. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  103. package/dist/modes/interactive/components/config-selector.d.ts +71 -0
  104. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  105. package/dist/modes/interactive/components/config-selector.js +468 -0
  106. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  107. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  108. package/dist/modes/interactive/components/footer.js +4 -0
  109. package/dist/modes/interactive/components/footer.js.map +1 -1
  110. package/dist/modes/interactive/components/index.d.ts +1 -0
  111. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  112. package/dist/modes/interactive/components/index.js +1 -0
  113. package/dist/modes/interactive/components/index.js.map +1 -1
  114. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  115. package/dist/modes/interactive/components/oauth-selector.js +3 -4
  116. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  117. package/dist/modes/interactive/components/session-selector.d.ts +18 -1
  118. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  119. package/dist/modes/interactive/components/session-selector.js +195 -87
  120. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  121. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  122. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  123. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  124. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  125. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  126. package/dist/modes/interactive/components/tool-execution.js +5 -5
  127. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  128. package/dist/modes/interactive/interactive-mode.d.ts +42 -2
  129. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  130. package/dist/modes/interactive/interactive-mode.js +543 -210
  131. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  132. package/dist/modes/interactive/theme/dark.json +1 -1
  133. package/dist/modes/interactive/theme/light.json +1 -1
  134. package/dist/modes/interactive/theme/theme-schema.json +8 -1
  135. package/dist/modes/interactive/theme/theme.d.ts +8 -1
  136. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  137. package/dist/modes/interactive/theme/theme.js +72 -25
  138. package/dist/modes/interactive/theme/theme.js.map +1 -1
  139. package/dist/modes/print-mode.d.ts.map +1 -1
  140. package/dist/modes/print-mode.js +7 -74
  141. package/dist/modes/print-mode.js.map +1 -1
  142. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  143. package/dist/modes/rpc/rpc-mode.js +17 -82
  144. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  145. package/dist/utils/git.d.ts +2 -0
  146. package/dist/utils/git.d.ts.map +1 -0
  147. package/dist/utils/git.js +6 -0
  148. package/dist/utils/git.js.map +1 -0
  149. package/dist/utils/shell.d.ts +1 -0
  150. package/dist/utils/shell.d.ts.map +1 -1
  151. package/dist/utils/shell.js +14 -1
  152. package/dist/utils/shell.js.map +1 -1
  153. package/dist/utils/sleep.d.ts +5 -0
  154. package/dist/utils/sleep.d.ts.map +1 -0
  155. package/dist/utils/sleep.js +17 -0
  156. package/dist/utils/sleep.js.map +1 -0
  157. package/docs/compaction.md +23 -21
  158. package/docs/custom-provider.md +538 -0
  159. package/docs/development.md +69 -0
  160. package/docs/extensions.md +182 -118
  161. package/docs/images/doom-extension.png +0 -0
  162. package/docs/images/interactive-mode.png +0 -0
  163. package/docs/images/tree-view.png +0 -0
  164. package/docs/json.md +79 -0
  165. package/docs/keybindings.md +162 -0
  166. package/docs/models.md +193 -0
  167. package/docs/packages.md +168 -0
  168. package/docs/prompt-templates.md +67 -0
  169. package/docs/providers.md +147 -0
  170. package/docs/sdk.md +111 -178
  171. package/docs/session.md +167 -16
  172. package/docs/settings.md +216 -0
  173. package/docs/shell-aliases.md +13 -0
  174. package/docs/skills.md +111 -202
  175. package/docs/terminal-setup.md +65 -0
  176. package/docs/themes.md +295 -0
  177. package/docs/tui.md +36 -5
  178. package/docs/windows.md +17 -0
  179. package/examples/README.md +1 -0
  180. package/examples/extensions/README.md +22 -2
  181. package/examples/extensions/bookmark.ts +50 -0
  182. package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
  183. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  184. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  185. package/examples/extensions/custom-provider-gitlab-duo/index.ts +349 -0
  186. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  187. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  188. package/examples/extensions/doom-overlay/doom/build.sh +1 -1
  189. package/examples/extensions/event-bus.ts +43 -0
  190. package/examples/extensions/message-renderer.ts +59 -0
  191. package/examples/extensions/session-name.ts +27 -0
  192. package/examples/extensions/with-deps/package-lock.json +2 -2
  193. package/examples/extensions/with-deps/package.json +1 -1
  194. package/examples/sdk/02-custom-model.ts +3 -3
  195. package/examples/sdk/03-custom-prompt.ts +20 -9
  196. package/examples/sdk/04-skills.ts +26 -27
  197. package/examples/sdk/06-extensions.ts +15 -6
  198. package/examples/sdk/07-context-files.ts +22 -18
  199. package/examples/sdk/08-prompt-templates.ts +19 -14
  200. package/examples/sdk/09-api-keys-and-oauth.ts +5 -12
  201. package/examples/sdk/10-settings.ts +3 -3
  202. package/examples/sdk/12-full-control.ts +16 -7
  203. package/examples/sdk/README.md +24 -30
  204. package/package.json +4 -4
  205. package/docs/theme.md +0 -617
  206. package/examples/extensions/chalk-logger.ts +0 -26
@@ -16,14 +16,26 @@ import type { Agent, AgentEvent, AgentMessage, AgentState, AgentTool, ThinkingLe
16
16
  import type { ImageContent, Model, TextContent } from "@mariozechner/pi-ai";
17
17
  import { type BashResult } from "./bash-executor.js";
18
18
  import { type CompactionResult } from "./compaction/index.js";
19
- import type { ContextUsage, ExtensionRunner, InputSource } from "./extensions/index.js";
19
+ import { type ContextUsage, type ExtensionCommandContextActions, type ExtensionErrorListener, ExtensionRunner, type ExtensionUIContext, type InputSource, type ShutdownHandler, type ToolDefinition } from "./extensions/index.js";
20
20
  import type { CustomMessage } from "./messages.js";
21
21
  import type { ModelRegistry } from "./model-registry.js";
22
22
  import { type PromptTemplate } from "./prompt-templates.js";
23
- import type { BranchSummaryEntry, NewSessionOptions, SessionManager } from "./session-manager.js";
24
- import type { SettingsManager, SkillsSettings } from "./settings-manager.js";
25
- import type { Skill, SkillWarning } from "./skills.js";
23
+ import type { ResourceLoader } from "./resource-loader.js";
24
+ import type { BranchSummaryEntry, SessionManager } from "./session-manager.js";
25
+ import type { SettingsManager } from "./settings-manager.js";
26
26
  import type { BashOperations } from "./tools/bash.js";
27
+ /** Parsed skill block from a user message */
28
+ export interface ParsedSkillBlock {
29
+ name: string;
30
+ location: string;
31
+ content: string;
32
+ userMessage: string | undefined;
33
+ }
34
+ /**
35
+ * Parse a skill block from message text.
36
+ * Returns null if the text doesn't contain a skill block.
37
+ */
38
+ export declare function parseSkillBlock(text: string): ParsedSkillBlock | null;
27
39
  /** Session-specific events that extend the core AgentEvent */
28
40
  export type AgentSessionEvent = AgentEvent | {
29
41
  type: "auto_compaction_start";
@@ -52,26 +64,32 @@ export interface AgentSessionConfig {
52
64
  agent: Agent;
53
65
  sessionManager: SessionManager;
54
66
  settingsManager: SettingsManager;
67
+ cwd: string;
55
68
  /** Models to cycle through with Ctrl+P (from --models flag) */
56
69
  scopedModels?: Array<{
57
70
  model: Model<any>;
58
71
  thinkingLevel: ThinkingLevel;
59
72
  }>;
60
- /** File-based prompt templates for expansion */
61
- promptTemplates?: PromptTemplate[];
62
- /** Extension runner (created in sdk.ts with wrapped tools) */
63
- extensionRunner?: ExtensionRunner;
64
- /** Loaded skills (already discovered by SDK) */
65
- skills?: Skill[];
66
- /** Skill loading warnings (already captured by SDK) */
67
- skillWarnings?: SkillWarning[];
68
- skillsSettings?: Required<SkillsSettings>;
73
+ /** Resource loader for skills, prompts, themes, context files, system prompt */
74
+ resourceLoader: ResourceLoader;
75
+ /** SDK custom tools registered outside extensions */
76
+ customTools?: ToolDefinition[];
69
77
  /** Model registry for API key resolution and model discovery */
70
78
  modelRegistry: ModelRegistry;
71
- /** Tool registry for extension getTools/setTools - maps name to tool */
72
- toolRegistry?: Map<string, AgentTool>;
73
- /** Function to rebuild system prompt when tools change */
74
- rebuildSystemPrompt?: (toolNames: string[]) => string;
79
+ /** Initial active built-in tool names. Default: [read, bash, edit, write] */
80
+ initialActiveToolNames?: string[];
81
+ /** Override base tools (useful for custom runtimes). */
82
+ baseToolsOverride?: Record<string, AgentTool>;
83
+ /** Mutable ref used by Agent to access the current ExtensionRunner */
84
+ extensionRunnerRef?: {
85
+ current?: ExtensionRunner;
86
+ };
87
+ }
88
+ export interface ExtensionBindings {
89
+ uiContext?: ExtensionUIContext;
90
+ commandContextActions?: ExtensionCommandContextActions;
91
+ shutdownHandler?: ShutdownHandler;
92
+ onError?: ExtensionErrorListener;
75
93
  }
76
94
  /** Options for AgentSession.prompt() */
77
95
  export interface PromptOptions {
@@ -114,7 +132,6 @@ export declare class AgentSession {
114
132
  readonly sessionManager: SessionManager;
115
133
  readonly settingsManager: SettingsManager;
116
134
  private _scopedModels;
117
- private _promptTemplates;
118
135
  private _unsubscribeAgent?;
119
136
  private _eventListeners;
120
137
  /** Tracks pending steering messages for UI display. Removed when delivered. */
@@ -134,12 +151,20 @@ export declare class AgentSession {
134
151
  private _pendingBashMessages;
135
152
  private _extensionRunner;
136
153
  private _turnIndex;
137
- private _skills;
138
- private _skillWarnings;
139
- private _skillsSettings;
154
+ private _resourceLoader;
155
+ private _customTools;
156
+ private _baseToolRegistry;
157
+ private _cwd;
158
+ private _extensionRunnerRef?;
159
+ private _initialActiveToolNames?;
160
+ private _baseToolsOverride?;
161
+ private _extensionUIContext?;
162
+ private _extensionCommandContextActions?;
163
+ private _extensionShutdownHandler?;
164
+ private _extensionErrorListener?;
165
+ private _extensionErrorUnsubscriber?;
140
166
  private _modelRegistry;
141
167
  private _toolRegistry;
142
- private _rebuildSystemPrompt?;
143
168
  private _baseSystemPrompt;
144
169
  constructor(config: AgentSessionConfig);
145
170
  /** Model registry for API key resolution and model discovery */
@@ -231,6 +256,7 @@ export declare class AgentSession {
231
256
  }>): void;
232
257
  /** File-based prompt templates */
233
258
  get promptTemplates(): ReadonlyArray<PromptTemplate>;
259
+ private _rebuildSystemPrompt;
234
260
  /**
235
261
  * Send a prompt to the agent.
236
262
  * - Handles extension commands (registered via pi.registerCommand) immediately, even during streaming
@@ -309,11 +335,7 @@ export declare class AgentSession {
309
335
  getSteeringMessages(): readonly string[];
310
336
  /** Get pending follow-up messages (read-only) */
311
337
  getFollowUpMessages(): readonly string[];
312
- get skillsSettings(): Required<SkillsSettings> | undefined;
313
- /** Skills loaded by SDK (empty if --no-skills or skills: [] was passed) */
314
- get skills(): readonly Skill[];
315
- /** Skill loading warnings captured by SDK */
316
- get skillWarnings(): readonly SkillWarning[];
338
+ get resourceLoader(): ResourceLoader;
317
339
  /**
318
340
  * Abort current operation and wait for agent to become idle.
319
341
  */
@@ -322,10 +344,14 @@ export declare class AgentSession {
322
344
  * Start a new session, optionally with initial messages and parent tracking.
323
345
  * Clears all messages and starts a new session.
324
346
  * Listeners are preserved and will continue receiving events.
325
- * @param options - Optional initial messages and parent session path
347
+ * @param options.parentSession - Optional parent session path for tracking
348
+ * @param options.setup - Optional callback to initialize session (e.g., append messages)
326
349
  * @returns true if completed, false if cancelled by extension
327
350
  */
328
- newSession(options?: NewSessionOptions): Promise<boolean>;
351
+ newSession(options?: {
352
+ parentSession?: string;
353
+ setup?: (sessionManager: SessionManager) => Promise<void>;
354
+ }): Promise<boolean>;
329
355
  private _emitModelSelect;
330
356
  /**
331
357
  * Set model directly.
@@ -342,10 +368,6 @@ export declare class AgentSession {
342
368
  cycleModel(direction?: "forward" | "backward"): Promise<ModelCycleResult | undefined>;
343
369
  private _cycleScopedModel;
344
370
  private _cycleAvailableModel;
345
- /**
346
- * Get all available models with valid API keys.
347
- */
348
- getAvailableModels(): Promise<Model<any>[]>;
349
371
  /**
350
372
  * Set thinking level.
351
373
  * Clamps to model capabilities based on available thinking levels.
@@ -403,16 +425,17 @@ export declare class AgentSession {
403
425
  setAutoCompactionEnabled(enabled: boolean): void;
404
426
  /** Whether auto-compaction is enabled */
405
427
  get autoCompactionEnabled(): boolean;
428
+ bindExtensions(bindings: ExtensionBindings): Promise<void>;
429
+ private _applyExtensionBindings;
430
+ private _bindExtensionCore;
431
+ private _buildRuntime;
432
+ reload(): Promise<void>;
406
433
  /**
407
434
  * Check if an error is retryable (overloaded, rate limit, server errors).
408
435
  * Context overflow errors are NOT retryable (handled by compaction instead).
409
436
  */
410
437
  private _isRetryableError;
411
438
  private _handleRetryableError;
412
- /**
413
- * Sleep helper that respects abort signal.
414
- */
415
- private _sleep;
416
439
  /**
417
440
  * Cancel in-progress retry.
418
441
  */