@mariozechner/pi-coding-agent 0.37.3 → 0.37.4
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 +17 -0
- package/README.md +3 -0
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +4 -6
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +1 -0
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +1 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +4 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +1 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +20 -1
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +1 -1
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +6 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +43 -4
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +3 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/examples/extensions/custom-header.ts +72 -0
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +4 -4
|
@@ -99,6 +99,10 @@ export class InteractiveMode {
|
|
|
99
99
|
widgetContainer;
|
|
100
100
|
// Custom footer from extension (undefined = use built-in footer)
|
|
101
101
|
customFooter = undefined;
|
|
102
|
+
// Built-in header (logo + keybinding hints + changelog)
|
|
103
|
+
builtInHeader = undefined;
|
|
104
|
+
// Custom header from extension (undefined = use built-in header)
|
|
105
|
+
customHeader = undefined;
|
|
102
106
|
// Convenience accessors
|
|
103
107
|
get agent() {
|
|
104
108
|
return this.session.agent;
|
|
@@ -199,7 +203,7 @@ export class InteractiveMode {
|
|
|
199
203
|
theme.fg("muted", " to suspend") +
|
|
200
204
|
"\n" +
|
|
201
205
|
theme.fg("dim", deleteToLineEnd) +
|
|
202
|
-
theme.fg("muted", " to delete
|
|
206
|
+
theme.fg("muted", " to delete to end") +
|
|
203
207
|
"\n" +
|
|
204
208
|
theme.fg("dim", cycleThinkingLevel) +
|
|
205
209
|
theme.fg("muted", " to cycle thinking") +
|
|
@@ -225,6 +229,9 @@ export class InteractiveMode {
|
|
|
225
229
|
theme.fg("dim", "!") +
|
|
226
230
|
theme.fg("muted", " to run bash") +
|
|
227
231
|
"\n" +
|
|
232
|
+
theme.fg("dim", "!!") +
|
|
233
|
+
theme.fg("muted", " to run bash (no context)") +
|
|
234
|
+
"\n" +
|
|
228
235
|
theme.fg("dim", followUp) +
|
|
229
236
|
theme.fg("muted", " to queue follow-up") +
|
|
230
237
|
"\n" +
|
|
@@ -233,10 +240,10 @@ export class InteractiveMode {
|
|
|
233
240
|
"\n" +
|
|
234
241
|
theme.fg("dim", "drop files") +
|
|
235
242
|
theme.fg("muted", " to attach");
|
|
236
|
-
|
|
243
|
+
this.builtInHeader = new Text(`${logo}\n${instructions}`, 1, 0);
|
|
237
244
|
// Setup UI layout
|
|
238
245
|
this.ui.addChild(new Spacer(1));
|
|
239
|
-
this.ui.addChild(
|
|
246
|
+
this.ui.addChild(this.builtInHeader);
|
|
240
247
|
this.ui.addChild(new Spacer(1));
|
|
241
248
|
// Add changelog if provided
|
|
242
249
|
if (this.changelogMarkdown) {
|
|
@@ -557,6 +564,37 @@ export class InteractiveMode {
|
|
|
557
564
|
}
|
|
558
565
|
this.ui.requestRender();
|
|
559
566
|
}
|
|
567
|
+
/**
|
|
568
|
+
* Set a custom header component, or restore the built-in header.
|
|
569
|
+
*/
|
|
570
|
+
setExtensionHeader(factory) {
|
|
571
|
+
// Header may not be initialized yet if called during early initialization
|
|
572
|
+
if (!this.builtInHeader) {
|
|
573
|
+
return;
|
|
574
|
+
}
|
|
575
|
+
// Dispose existing custom header
|
|
576
|
+
if (this.customHeader?.dispose) {
|
|
577
|
+
this.customHeader.dispose();
|
|
578
|
+
}
|
|
579
|
+
// Remove current header from UI
|
|
580
|
+
if (this.customHeader) {
|
|
581
|
+
this.ui.removeChild(this.customHeader);
|
|
582
|
+
}
|
|
583
|
+
else {
|
|
584
|
+
this.ui.removeChild(this.builtInHeader);
|
|
585
|
+
}
|
|
586
|
+
if (factory) {
|
|
587
|
+
// Create and add custom header at position 1 (after initial spacer)
|
|
588
|
+
this.customHeader = factory(this.ui, theme);
|
|
589
|
+
this.ui.children.splice(1, 0, this.customHeader);
|
|
590
|
+
}
|
|
591
|
+
else {
|
|
592
|
+
// Restore built-in header at position 1
|
|
593
|
+
this.customHeader = undefined;
|
|
594
|
+
this.ui.children.splice(1, 0, this.builtInHeader);
|
|
595
|
+
}
|
|
596
|
+
this.ui.requestRender();
|
|
597
|
+
}
|
|
560
598
|
/**
|
|
561
599
|
* Create the ExtensionUIContext for extensions.
|
|
562
600
|
*/
|
|
@@ -569,6 +607,7 @@ export class InteractiveMode {
|
|
|
569
607
|
setStatus: (key, text) => this.setExtensionStatus(key, text),
|
|
570
608
|
setWidget: (key, content) => this.setExtensionWidget(key, content),
|
|
571
609
|
setFooter: (factory) => this.setExtensionFooter(factory),
|
|
610
|
+
setHeader: (factory) => this.setExtensionHeader(factory),
|
|
572
611
|
setTitle: (title) => this.ui.terminal.setTitle(title),
|
|
573
612
|
custom: (factory) => this.showExtensionCustom(factory),
|
|
574
613
|
setEditorText: (text) => this.editor.setText(text),
|
|
@@ -988,7 +1027,6 @@ export class InteractiveMode {
|
|
|
988
1027
|
}
|
|
989
1028
|
else if (event.message.role === "user") {
|
|
990
1029
|
this.addMessageToChat(event.message);
|
|
991
|
-
this.editor.setText("");
|
|
992
1030
|
this.updatePendingMessagesDisplay();
|
|
993
1031
|
this.ui.requestRender();
|
|
994
1032
|
}
|
|
@@ -2291,6 +2329,7 @@ export class InteractiveMode {
|
|
|
2291
2329
|
| \`Ctrl+V\` | Paste image from clipboard |
|
|
2292
2330
|
| \`/\` | Slash commands |
|
|
2293
2331
|
| \`!\` | Run bash command |
|
|
2332
|
+
| \`!!\` | Run bash command (excluded from context) |
|
|
2294
2333
|
`;
|
|
2295
2334
|
// Add extension-registered shortcuts
|
|
2296
2335
|
const extensionRunner = this.session.extensionRunner;
|