@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.
- package/CHANGELOG.md +66 -0
- package/README.md +20 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +13 -7
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session.d.ts +3 -6
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +82 -6
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +1 -1
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/template.css +59 -0
- package/dist/core/export-html/template.js +21 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +2 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +5 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +63 -9
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/model-resolver.d.ts +29 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +94 -4
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +1 -2
- package/dist/core/package-manager.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +35 -14
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +9 -16
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +3 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +25 -2
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +3 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +7 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/utils/git.d.ts +5 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +14 -3
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +12 -6
- package/dist/utils/tools-manager.js.map +1 -1
- package/docs/custom-provider.md +9 -0
- package/docs/extensions.md +102 -2
- package/docs/packages.md +5 -7
- package/docs/providers.md +24 -19
- package/docs/rpc.md +8 -2
- package/examples/extensions/README.md +1 -0
- package/examples/extensions/custom-compaction.ts +2 -2
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/custom-provider-qwen-cli/package.json +1 -1
- package/examples/extensions/reload-runtime.ts +37 -0
- package/examples/extensions/subagent/index.ts +2 -1
- package/examples/extensions/trigger-compact.ts +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- 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
|
-
//
|
|
235
|
-
|
|
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) {
|