@mariozechner/pi-coding-agent 0.52.8 → 0.52.10

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 (74) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +20 -1
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +13 -7
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/core/agent-session.d.ts +3 -6
  7. package/dist/core/agent-session.d.ts.map +1 -1
  8. package/dist/core/agent-session.js +82 -6
  9. package/dist/core/agent-session.js.map +1 -1
  10. package/dist/core/export-html/index.d.ts.map +1 -1
  11. package/dist/core/export-html/index.js +1 -1
  12. package/dist/core/export-html/index.js.map +1 -1
  13. package/dist/core/export-html/template.css +59 -0
  14. package/dist/core/export-html/template.js +21 -1
  15. package/dist/core/extensions/index.d.ts +1 -1
  16. package/dist/core/extensions/index.d.ts.map +1 -1
  17. package/dist/core/extensions/index.js.map +1 -1
  18. package/dist/core/extensions/runner.d.ts +2 -0
  19. package/dist/core/extensions/runner.d.ts.map +1 -1
  20. package/dist/core/extensions/runner.js +5 -0
  21. package/dist/core/extensions/runner.js.map +1 -1
  22. package/dist/core/extensions/types.d.ts +63 -9
  23. package/dist/core/extensions/types.d.ts.map +1 -1
  24. package/dist/core/extensions/types.js.map +1 -1
  25. package/dist/core/model-resolver.d.ts +29 -1
  26. package/dist/core/model-resolver.d.ts.map +1 -1
  27. package/dist/core/model-resolver.js +94 -4
  28. package/dist/core/model-resolver.js.map +1 -1
  29. package/dist/core/package-manager.d.ts.map +1 -1
  30. package/dist/core/package-manager.js +1 -2
  31. package/dist/core/package-manager.js.map +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/main.d.ts.map +1 -1
  36. package/dist/main.js +35 -14
  37. package/dist/main.js.map +1 -1
  38. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  39. package/dist/modes/interactive/components/footer.js +9 -16
  40. package/dist/modes/interactive/components/footer.js.map +1 -1
  41. package/dist/modes/interactive/interactive-mode.d.ts +3 -0
  42. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  43. package/dist/modes/interactive/interactive-mode.js +25 -2
  44. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  45. package/dist/modes/print-mode.d.ts.map +1 -1
  46. package/dist/modes/print-mode.js +3 -0
  47. package/dist/modes/print-mode.js.map +1 -1
  48. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  49. package/dist/modes/rpc/rpc-mode.js +7 -0
  50. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  51. package/dist/utils/git.d.ts +5 -1
  52. package/dist/utils/git.d.ts.map +1 -1
  53. package/dist/utils/git.js +14 -3
  54. package/dist/utils/git.js.map +1 -1
  55. package/dist/utils/tools-manager.d.ts.map +1 -1
  56. package/dist/utils/tools-manager.js +12 -6
  57. package/dist/utils/tools-manager.js.map +1 -1
  58. package/docs/custom-provider.md +9 -0
  59. package/docs/extensions.md +102 -2
  60. package/docs/packages.md +5 -7
  61. package/docs/providers.md +24 -19
  62. package/docs/rpc.md +8 -2
  63. package/examples/extensions/README.md +1 -0
  64. package/examples/extensions/custom-compaction.ts +2 -2
  65. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  66. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  67. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  68. package/examples/extensions/custom-provider-qwen-cli/package.json +1 -1
  69. package/examples/extensions/reload-runtime.ts +37 -0
  70. package/examples/extensions/subagent/index.ts +2 -1
  71. package/examples/extensions/trigger-compact.ts +1 -1
  72. package/examples/extensions/with-deps/package-lock.json +2 -2
  73. package/examples/extensions/with-deps/package.json +1 -1
  74. package/package.json +4 -4
@@ -111,6 +111,7 @@ export class InteractiveMode {
111
111
  extensionSelector = undefined;
112
112
  extensionInput = undefined;
113
113
  extensionEditor = undefined;
114
+ extensionTerminalInputUnsubscribers = new Set();
114
115
  // Extension widgets (components rendered above/below the editor)
115
116
  extensionWidgetsAbove = new Map();
116
117
  extensionWidgetsBelow = new Map();
@@ -231,8 +232,10 @@ export class InteractiveMode {
231
232
  return;
232
233
  // Load changelog (only show new entries, skip for resumed sessions)
233
234
  this.changelogMarkdown = this.getChangelogForDisplay();
234
- // Setup autocomplete with fd tool for file path completion
235
- this.fdPath = await ensureTool("fd");
235
+ // Ensure fd and rg are available (downloads if missing, adds to PATH via getBinDir)
236
+ // Both are needed: fd for autocomplete, rg for grep tool and bash commands
237
+ const [fdPath] = await Promise.all([ensureTool("fd"), ensureTool("rg")]);
238
+ this.fdPath = fdPath;
236
239
  // Add header container as first child
237
240
  this.ui.addChild(this.headerContainer);
238
241
  // Add header with keybindings from config (unless silenced)
@@ -813,6 +816,9 @@ export class InteractiveMode {
813
816
  await this.handleResumeSession(sessionPath);
814
817
  return { cancelled: false };
815
818
  },
819
+ reload: async () => {
820
+ await this.handleReloadCommand();
821
+ },
816
822
  },
817
823
  shutdownHandler: () => {
818
824
  this.shutdownRequested = true;
@@ -961,6 +967,7 @@ export class InteractiveMode {
961
967
  this.hideExtensionEditor();
962
968
  }
963
969
  this.ui.hideOverlay();
970
+ this.clearExtensionTerminalInputListeners();
964
971
  this.setExtensionFooter(undefined);
965
972
  this.setExtensionHeader(undefined);
966
973
  this.clearExtensionWidgets();
@@ -1062,6 +1069,20 @@ export class InteractiveMode {
1062
1069
  }
1063
1070
  this.ui.requestRender();
1064
1071
  }
1072
+ addExtensionTerminalInputListener(handler) {
1073
+ const unsubscribe = this.ui.addInputListener(handler);
1074
+ this.extensionTerminalInputUnsubscribers.add(unsubscribe);
1075
+ return () => {
1076
+ unsubscribe();
1077
+ this.extensionTerminalInputUnsubscribers.delete(unsubscribe);
1078
+ };
1079
+ }
1080
+ clearExtensionTerminalInputListeners() {
1081
+ for (const unsubscribe of this.extensionTerminalInputUnsubscribers) {
1082
+ unsubscribe();
1083
+ }
1084
+ this.extensionTerminalInputUnsubscribers.clear();
1085
+ }
1065
1086
  /**
1066
1087
  * Create the ExtensionUIContext for extensions.
1067
1088
  */
@@ -1071,6 +1092,7 @@ export class InteractiveMode {
1071
1092
  confirm: (title, message, opts) => this.showExtensionConfirm(title, message, opts),
1072
1093
  input: (title, placeholder, opts) => this.showExtensionInput(title, placeholder, opts),
1073
1094
  notify: (message, type) => this.showExtensionNotify(message, type),
1095
+ onTerminalInput: (handler) => this.addExtensionTerminalInputListener(handler),
1074
1096
  setStatus: (key, text) => this.setExtensionStatus(key, text),
1075
1097
  setWorkingMessage: (message) => {
1076
1098
  if (this.loadingAnimation) {
@@ -3667,6 +3689,7 @@ export class InteractiveMode {
3667
3689
  this.loadingAnimation.stop();
3668
3690
  this.loadingAnimation = undefined;
3669
3691
  }
3692
+ this.clearExtensionTerminalInputListeners();
3670
3693
  this.footer.dispose();
3671
3694
  this.footerDataProvider.dispose();
3672
3695
  if (this.unsubscribe) {