@mariozechner/pi-coding-agent 0.29.0 → 0.30.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.
- package/CHANGELOG.md +24 -0
- package/README.md +30 -13
- package/dist/cli/args.d.ts +1 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +4 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session.d.ts +3 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +11 -8
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/custom-tools/loader.d.ts +5 -0
- package/dist/core/custom-tools/loader.d.ts.map +1 -1
- package/dist/core/custom-tools/loader.js +58 -3
- package/dist/core/custom-tools/loader.js.map +1 -1
- package/dist/core/hooks/loader.d.ts.map +1 -1
- package/dist/core/hooks/loader.js +8 -1
- package/dist/core/hooks/loader.js.map +1 -1
- package/dist/core/session-manager.d.ts +26 -9
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +75 -37
- package/dist/core/session-manager.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +26 -5
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +2 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +13 -1
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +33 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +164 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +1 -5
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +80 -121
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +1 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +9 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/docs/sdk.md +6 -3
- package/examples/sdk/11-sessions.ts +5 -3
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-editor.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/custom-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,
|
|
1
|
+
{"version":3,"file":"custom-editor.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/custom-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,EAYN,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,qBAAa,YAAa,SAAQ,MAAM;IAChC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAyE9B;CACD","sourcesContent":["import {\n\tEditor,\n\tisCtrlC,\n\tisCtrlD,\n\tisCtrlG,\n\tisCtrlL,\n\tisCtrlO,\n\tisCtrlP,\n\tisCtrlT,\n\tisCtrlZ,\n\tisEscape,\n\tisShiftCtrlP,\n\tisShiftTab,\n} from \"@mariozechner/pi-tui\";\n\n/**\n * Custom editor that handles Escape and Ctrl+C keys for coding-agent\n */\nexport class CustomEditor extends Editor {\n\tpublic onEscape?: () => void;\n\tpublic onCtrlC?: () => void;\n\tpublic onCtrlD?: () => void;\n\tpublic onShiftTab?: () => void;\n\tpublic onCtrlP?: () => void;\n\tpublic onShiftCtrlP?: () => void;\n\tpublic onCtrlL?: () => void;\n\tpublic onCtrlO?: () => void;\n\tpublic onCtrlT?: () => void;\n\tpublic onCtrlG?: () => void;\n\tpublic onCtrlZ?: () => void;\n\n\thandleInput(data: string): void {\n\t\t// Intercept Ctrl+G for external editor\n\t\tif (isCtrlG(data) && this.onCtrlG) {\n\t\t\tthis.onCtrlG();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+Z for suspend\n\t\tif (isCtrlZ(data) && this.onCtrlZ) {\n\t\t\tthis.onCtrlZ();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+T for thinking block visibility toggle\n\t\tif (isCtrlT(data) && this.onCtrlT) {\n\t\t\tthis.onCtrlT();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+L for model selector\n\t\tif (isCtrlL(data) && this.onCtrlL) {\n\t\t\tthis.onCtrlL();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+O for tool output expansion\n\t\tif (isCtrlO(data) && this.onCtrlO) {\n\t\t\tthis.onCtrlO();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Shift+Ctrl+P for backward model cycling (check before Ctrl+P)\n\t\tif (isShiftCtrlP(data) && this.onShiftCtrlP) {\n\t\t\tthis.onShiftCtrlP();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+P for model cycling\n\t\tif (isCtrlP(data) && this.onCtrlP) {\n\t\t\tthis.onCtrlP();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Shift+Tab for thinking level cycling\n\t\tif (isShiftTab(data) && this.onShiftTab) {\n\t\t\tthis.onShiftTab();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Escape key - but only if autocomplete is NOT active\n\t\t// (let parent handle escape for autocomplete cancellation)\n\t\tif (isEscape(data) && this.onEscape && !this.isShowingAutocomplete()) {\n\t\t\tthis.onEscape();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+C\n\t\tif (isCtrlC(data) && this.onCtrlC) {\n\t\t\tthis.onCtrlC();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+D (only when editor is empty)\n\t\tif (isCtrlD(data)) {\n\t\t\tif (this.getText().length === 0 && this.onCtrlD) {\n\t\t\t\tthis.onCtrlD();\n\t\t\t}\n\t\t\t// Always consume Ctrl+D (don't pass to parent)\n\t\t\treturn;\n\t\t}\n\n\t\t// Pass to parent for normal handling\n\t\tsuper.handleInput(data);\n\t}\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Editor, isCtrlC, isCtrlD, isCtrlG, isCtrlO, isCtrlP, isCtrlT, isCtrlZ, isEscape, isShiftTab, } from "@mariozechner/pi-tui";
|
|
1
|
+
import { Editor, isCtrlC, isCtrlD, isCtrlG, isCtrlL, isCtrlO, isCtrlP, isCtrlT, isCtrlZ, isEscape, isShiftCtrlP, isShiftTab, } from "@mariozechner/pi-tui";
|
|
2
2
|
/**
|
|
3
3
|
* Custom editor that handles Escape and Ctrl+C keys for coding-agent
|
|
4
4
|
*/
|
|
@@ -8,6 +8,8 @@ export class CustomEditor extends Editor {
|
|
|
8
8
|
onCtrlD;
|
|
9
9
|
onShiftTab;
|
|
10
10
|
onCtrlP;
|
|
11
|
+
onShiftCtrlP;
|
|
12
|
+
onCtrlL;
|
|
11
13
|
onCtrlO;
|
|
12
14
|
onCtrlT;
|
|
13
15
|
onCtrlG;
|
|
@@ -28,11 +30,21 @@ export class CustomEditor extends Editor {
|
|
|
28
30
|
this.onCtrlT();
|
|
29
31
|
return;
|
|
30
32
|
}
|
|
33
|
+
// Intercept Ctrl+L for model selector
|
|
34
|
+
if (isCtrlL(data) && this.onCtrlL) {
|
|
35
|
+
this.onCtrlL();
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
31
38
|
// Intercept Ctrl+O for tool output expansion
|
|
32
39
|
if (isCtrlO(data) && this.onCtrlO) {
|
|
33
40
|
this.onCtrlO();
|
|
34
41
|
return;
|
|
35
42
|
}
|
|
43
|
+
// Intercept Shift+Ctrl+P for backward model cycling (check before Ctrl+P)
|
|
44
|
+
if (isShiftCtrlP(data) && this.onShiftCtrlP) {
|
|
45
|
+
this.onShiftCtrlP();
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
36
48
|
// Intercept Ctrl+P for model cycling
|
|
37
49
|
if (isCtrlP(data) && this.onCtrlP) {
|
|
38
50
|
this.onCtrlP();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-editor.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/custom-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,UAAU,GACV,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,MAAM;IAChC,QAAQ,CAAc;IACtB,OAAO,CAAc;IACrB,OAAO,CAAc;IACrB,UAAU,CAAc;IACxB,OAAO,CAAc;IACrB,OAAO,CAAc;IACrB,OAAO,CAAc;IACrB,OAAO,CAAc;IACrB,OAAO,CAAc;IAE5B,WAAW,CAAC,IAAY,EAAQ;QAC/B,uCAAuC;QACvC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,+BAA+B;QAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,wDAAwD;QACxD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,6CAA6C;QAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,qCAAqC;QACrC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,iDAAiD;QACjD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO;QACR,CAAC;QAED,gEAAgE;QAChE,2DAA2D;QAC3D,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO;QACR,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,+CAA+C;QAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;YACD,+CAA+C;YAC/C,OAAO;QACR,CAAC;QAED,qCAAqC;QACrC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAAA,CACxB;CACD","sourcesContent":["import {\n\tEditor,\n\tisCtrlC,\n\tisCtrlD,\n\tisCtrlG,\n\tisCtrlO,\n\tisCtrlP,\n\tisCtrlT,\n\tisCtrlZ,\n\tisEscape,\n\tisShiftTab,\n} from \"@mariozechner/pi-tui\";\n\n/**\n * Custom editor that handles Escape and Ctrl+C keys for coding-agent\n */\nexport class CustomEditor extends Editor {\n\tpublic onEscape?: () => void;\n\tpublic onCtrlC?: () => void;\n\tpublic onCtrlD?: () => void;\n\tpublic onShiftTab?: () => void;\n\tpublic onCtrlP?: () => void;\n\tpublic onCtrlO?: () => void;\n\tpublic onCtrlT?: () => void;\n\tpublic onCtrlG?: () => void;\n\tpublic onCtrlZ?: () => void;\n\n\thandleInput(data: string): void {\n\t\t// Intercept Ctrl+G for external editor\n\t\tif (isCtrlG(data) && this.onCtrlG) {\n\t\t\tthis.onCtrlG();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+Z for suspend\n\t\tif (isCtrlZ(data) && this.onCtrlZ) {\n\t\t\tthis.onCtrlZ();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+T for thinking block visibility toggle\n\t\tif (isCtrlT(data) && this.onCtrlT) {\n\t\t\tthis.onCtrlT();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+O for tool output expansion\n\t\tif (isCtrlO(data) && this.onCtrlO) {\n\t\t\tthis.onCtrlO();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+P for model cycling\n\t\tif (isCtrlP(data) && this.onCtrlP) {\n\t\t\tthis.onCtrlP();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Shift+Tab for thinking level cycling\n\t\tif (isShiftTab(data) && this.onShiftTab) {\n\t\t\tthis.onShiftTab();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Escape key - but only if autocomplete is NOT active\n\t\t// (let parent handle escape for autocomplete cancellation)\n\t\tif (isEscape(data) && this.onEscape && !this.isShowingAutocomplete()) {\n\t\t\tthis.onEscape();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+C\n\t\tif (isCtrlC(data) && this.onCtrlC) {\n\t\t\tthis.onCtrlC();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+D (only when editor is empty)\n\t\tif (isCtrlD(data)) {\n\t\t\tif (this.getText().length === 0 && this.onCtrlD) {\n\t\t\t\tthis.onCtrlD();\n\t\t\t}\n\t\t\t// Always consume Ctrl+D (don't pass to parent)\n\t\t\treturn;\n\t\t}\n\n\t\t// Pass to parent for normal handling\n\t\tsuper.handleInput(data);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"custom-editor.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/custom-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,UAAU,GACV,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,MAAM;IAChC,QAAQ,CAAc;IACtB,OAAO,CAAc;IACrB,OAAO,CAAc;IACrB,UAAU,CAAc;IACxB,OAAO,CAAc;IACrB,YAAY,CAAc;IAC1B,OAAO,CAAc;IACrB,OAAO,CAAc;IACrB,OAAO,CAAc;IACrB,OAAO,CAAc;IACrB,OAAO,CAAc;IAE5B,WAAW,CAAC,IAAY,EAAQ;QAC/B,uCAAuC;QACvC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,+BAA+B;QAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,wDAAwD;QACxD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,sCAAsC;QACtC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,6CAA6C;QAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,0EAA0E;QAC1E,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO;QACR,CAAC;QAED,qCAAqC;QACrC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,iDAAiD;QACjD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO;QACR,CAAC;QAED,gEAAgE;QAChE,2DAA2D;QAC3D,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO;QACR,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,+CAA+C;QAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;YACD,+CAA+C;YAC/C,OAAO;QACR,CAAC;QAED,qCAAqC;QACrC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAAA,CACxB;CACD","sourcesContent":["import {\n\tEditor,\n\tisCtrlC,\n\tisCtrlD,\n\tisCtrlG,\n\tisCtrlL,\n\tisCtrlO,\n\tisCtrlP,\n\tisCtrlT,\n\tisCtrlZ,\n\tisEscape,\n\tisShiftCtrlP,\n\tisShiftTab,\n} from \"@mariozechner/pi-tui\";\n\n/**\n * Custom editor that handles Escape and Ctrl+C keys for coding-agent\n */\nexport class CustomEditor extends Editor {\n\tpublic onEscape?: () => void;\n\tpublic onCtrlC?: () => void;\n\tpublic onCtrlD?: () => void;\n\tpublic onShiftTab?: () => void;\n\tpublic onCtrlP?: () => void;\n\tpublic onShiftCtrlP?: () => void;\n\tpublic onCtrlL?: () => void;\n\tpublic onCtrlO?: () => void;\n\tpublic onCtrlT?: () => void;\n\tpublic onCtrlG?: () => void;\n\tpublic onCtrlZ?: () => void;\n\n\thandleInput(data: string): void {\n\t\t// Intercept Ctrl+G for external editor\n\t\tif (isCtrlG(data) && this.onCtrlG) {\n\t\t\tthis.onCtrlG();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+Z for suspend\n\t\tif (isCtrlZ(data) && this.onCtrlZ) {\n\t\t\tthis.onCtrlZ();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+T for thinking block visibility toggle\n\t\tif (isCtrlT(data) && this.onCtrlT) {\n\t\t\tthis.onCtrlT();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+L for model selector\n\t\tif (isCtrlL(data) && this.onCtrlL) {\n\t\t\tthis.onCtrlL();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+O for tool output expansion\n\t\tif (isCtrlO(data) && this.onCtrlO) {\n\t\t\tthis.onCtrlO();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Shift+Ctrl+P for backward model cycling (check before Ctrl+P)\n\t\tif (isShiftCtrlP(data) && this.onShiftCtrlP) {\n\t\t\tthis.onShiftCtrlP();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+P for model cycling\n\t\tif (isCtrlP(data) && this.onCtrlP) {\n\t\t\tthis.onCtrlP();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Shift+Tab for thinking level cycling\n\t\tif (isShiftTab(data) && this.onShiftTab) {\n\t\t\tthis.onShiftTab();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Escape key - but only if autocomplete is NOT active\n\t\t// (let parent handle escape for autocomplete cancellation)\n\t\tif (isEscape(data) && this.onEscape && !this.isShowingAutocomplete()) {\n\t\t\tthis.onEscape();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+C\n\t\tif (isCtrlC(data) && this.onCtrlC) {\n\t\t\tthis.onCtrlC();\n\t\t\treturn;\n\t\t}\n\n\t\t// Intercept Ctrl+D (only when editor is empty)\n\t\tif (isCtrlD(data)) {\n\t\t\tif (this.getText().length === 0 && this.onCtrlD) {\n\t\t\t\tthis.onCtrlD();\n\t\t\t}\n\t\t\t// Always consume Ctrl+D (don't pass to parent)\n\t\t\treturn;\n\t\t}\n\n\t\t// Pass to parent for normal handling\n\t\tsuper.handleInput(data);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ThinkingLevel } from "@mariozechner/pi-agent-core";
|
|
2
|
+
import { Container, SettingsList } from "@mariozechner/pi-tui";
|
|
3
|
+
export interface SettingsConfig {
|
|
4
|
+
autoCompact: boolean;
|
|
5
|
+
showImages: boolean;
|
|
6
|
+
queueMode: "all" | "one-at-a-time";
|
|
7
|
+
thinkingLevel: ThinkingLevel;
|
|
8
|
+
availableThinkingLevels: ThinkingLevel[];
|
|
9
|
+
currentTheme: string;
|
|
10
|
+
availableThemes: string[];
|
|
11
|
+
hideThinkingBlock: boolean;
|
|
12
|
+
collapseChangelog: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface SettingsCallbacks {
|
|
15
|
+
onAutoCompactChange: (enabled: boolean) => void;
|
|
16
|
+
onShowImagesChange: (enabled: boolean) => void;
|
|
17
|
+
onQueueModeChange: (mode: "all" | "one-at-a-time") => void;
|
|
18
|
+
onThinkingLevelChange: (level: ThinkingLevel) => void;
|
|
19
|
+
onThemeChange: (theme: string) => void;
|
|
20
|
+
onThemePreview?: (theme: string) => void;
|
|
21
|
+
onHideThinkingBlockChange: (hidden: boolean) => void;
|
|
22
|
+
onCollapseChangelogChange: (collapsed: boolean) => void;
|
|
23
|
+
onCancel: () => void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Main settings selector component.
|
|
27
|
+
*/
|
|
28
|
+
export declare class SettingsSelectorComponent extends Container {
|
|
29
|
+
private settingsList;
|
|
30
|
+
constructor(config: SettingsConfig, callbacks: SettingsCallbacks);
|
|
31
|
+
getSettingsList(): SettingsList;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=settings-selector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-selector.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACN,SAAS,EAKT,YAAY,EAGZ,MAAM,sBAAsB,CAAC;AAa9B,MAAM,WAAW,cAAc;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,KAAK,GAAG,eAAe,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,uBAAuB,EAAE,aAAa,EAAE,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IACjC,mBAAmB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,iBAAiB,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,eAAe,KAAK,IAAI,CAAC;IAC3D,qBAAqB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACtD,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,yBAAyB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,yBAAyB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AAgED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,SAAS;IACvD,OAAO,CAAC,YAAY,CAAe;IAEnC,YAAY,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAkI/D;IAED,eAAe,IAAI,YAAY,CAE9B;CACD","sourcesContent":["import type { ThinkingLevel } from \"@mariozechner/pi-agent-core\";\nimport {\n\tContainer,\n\tgetCapabilities,\n\ttype SelectItem,\n\tSelectList,\n\ttype SettingItem,\n\tSettingsList,\n\tSpacer,\n\tText,\n} from \"@mariozechner/pi-tui\";\nimport { getSelectListTheme, getSettingsListTheme, theme } from \"../theme/theme.js\";\nimport { DynamicBorder } from \"./dynamic-border.js\";\n\nconst THINKING_DESCRIPTIONS: Record<ThinkingLevel, string> = {\n\toff: \"No reasoning\",\n\tminimal: \"Very brief reasoning (~1k tokens)\",\n\tlow: \"Light reasoning (~2k tokens)\",\n\tmedium: \"Moderate reasoning (~8k tokens)\",\n\thigh: \"Deep reasoning (~16k tokens)\",\n\txhigh: \"Maximum reasoning (~32k tokens)\",\n};\n\nexport interface SettingsConfig {\n\tautoCompact: boolean;\n\tshowImages: boolean;\n\tqueueMode: \"all\" | \"one-at-a-time\";\n\tthinkingLevel: ThinkingLevel;\n\tavailableThinkingLevels: ThinkingLevel[];\n\tcurrentTheme: string;\n\tavailableThemes: string[];\n\thideThinkingBlock: boolean;\n\tcollapseChangelog: boolean;\n}\n\nexport interface SettingsCallbacks {\n\tonAutoCompactChange: (enabled: boolean) => void;\n\tonShowImagesChange: (enabled: boolean) => void;\n\tonQueueModeChange: (mode: \"all\" | \"one-at-a-time\") => void;\n\tonThinkingLevelChange: (level: ThinkingLevel) => void;\n\tonThemeChange: (theme: string) => void;\n\tonThemePreview?: (theme: string) => void;\n\tonHideThinkingBlockChange: (hidden: boolean) => void;\n\tonCollapseChangelogChange: (collapsed: boolean) => void;\n\tonCancel: () => void;\n}\n\n/**\n * A submenu component for selecting from a list of options.\n */\nclass SelectSubmenu extends Container {\n\tprivate selectList: SelectList;\n\n\tconstructor(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\toptions: SelectItem[],\n\t\tcurrentValue: string,\n\t\tonSelect: (value: string) => void,\n\t\tonCancel: () => void,\n\t\tonSelectionChange?: (value: string) => void,\n\t) {\n\t\tsuper();\n\n\t\t// Title\n\t\tthis.addChild(new Text(theme.bold(theme.fg(\"accent\", title)), 0, 0));\n\n\t\t// Description\n\t\tif (description) {\n\t\t\tthis.addChild(new Spacer(1));\n\t\t\tthis.addChild(new Text(theme.fg(\"muted\", description), 0, 0));\n\t\t}\n\n\t\t// Spacer\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// Select list\n\t\tthis.selectList = new SelectList(options, Math.min(options.length, 10), getSelectListTheme());\n\n\t\t// Pre-select current value\n\t\tconst currentIndex = options.findIndex((o) => o.value === currentValue);\n\t\tif (currentIndex !== -1) {\n\t\t\tthis.selectList.setSelectedIndex(currentIndex);\n\t\t}\n\n\t\tthis.selectList.onSelect = (item) => {\n\t\t\tonSelect(item.value);\n\t\t};\n\n\t\tthis.selectList.onCancel = onCancel;\n\n\t\tif (onSelectionChange) {\n\t\t\tthis.selectList.onSelectionChange = (item) => {\n\t\t\t\tonSelectionChange(item.value);\n\t\t\t};\n\t\t}\n\n\t\tthis.addChild(this.selectList);\n\n\t\t// Hint\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(new Text(theme.fg(\"dim\", \" Enter to select · Esc to go back\"), 0, 0));\n\t}\n\n\thandleInput(data: string): void {\n\t\tthis.selectList.handleInput(data);\n\t}\n}\n\n/**\n * Main settings selector component.\n */\nexport class SettingsSelectorComponent extends Container {\n\tprivate settingsList: SettingsList;\n\n\tconstructor(config: SettingsConfig, callbacks: SettingsCallbacks) {\n\t\tsuper();\n\n\t\tconst supportsImages = getCapabilities().images;\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"autocompact\",\n\t\t\t\tlabel: \"Auto-compact\",\n\t\t\t\tdescription: \"Automatically compact context when it gets too large\",\n\t\t\t\tcurrentValue: config.autoCompact ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"queue-mode\",\n\t\t\t\tlabel: \"Queue mode\",\n\t\t\t\tdescription: \"How to process queued messages while agent is working\",\n\t\t\t\tcurrentValue: config.queueMode,\n\t\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"hide-thinking\",\n\t\t\t\tlabel: \"Hide thinking\",\n\t\t\t\tdescription: \"Hide thinking blocks in assistant responses\",\n\t\t\t\tcurrentValue: config.hideThinkingBlock ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"collapse-changelog\",\n\t\t\t\tlabel: \"Collapse changelog\",\n\t\t\t\tdescription: \"Show condensed changelog after updates\",\n\t\t\t\tcurrentValue: config.collapseChangelog ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"thinking\",\n\t\t\t\tlabel: \"Thinking level\",\n\t\t\t\tdescription: \"Reasoning depth for thinking-capable models\",\n\t\t\t\tcurrentValue: config.thinkingLevel,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tnew SelectSubmenu(\n\t\t\t\t\t\t\"Thinking Level\",\n\t\t\t\t\t\t\"Select reasoning depth for thinking-capable models\",\n\t\t\t\t\t\tconfig.availableThinkingLevels.map((level) => ({\n\t\t\t\t\t\t\tvalue: level,\n\t\t\t\t\t\t\tlabel: level,\n\t\t\t\t\t\t\tdescription: THINKING_DESCRIPTIONS[level],\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tcallbacks.onThinkingLevelChange(value as ThinkingLevel);\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => done(),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"theme\",\n\t\t\t\tlabel: \"Theme\",\n\t\t\t\tdescription: \"Color theme for the interface\",\n\t\t\t\tcurrentValue: config.currentTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tnew SelectSubmenu(\n\t\t\t\t\t\t\"Theme\",\n\t\t\t\t\t\t\"Select color theme\",\n\t\t\t\t\t\tconfig.availableThemes.map((t) => ({\n\t\t\t\t\t\t\tvalue: t,\n\t\t\t\t\t\t\tlabel: t,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tcallbacks.onThemeChange(value);\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t// Restore original theme on cancel\n\t\t\t\t\t\t\tcallbacks.onThemePreview?.(currentValue);\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t},\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\t// Preview theme on selection change\n\t\t\t\t\t\t\tcallbacks.onThemePreview?.(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t];\n\n\t\t// Only show image toggle if terminal supports it\n\t\tif (supportsImages) {\n\t\t\t// Insert after autocompact\n\t\t\titems.splice(1, 0, {\n\t\t\t\tid: \"show-images\",\n\t\t\t\tlabel: \"Show images\",\n\t\t\t\tdescription: \"Render images inline in terminal\",\n\t\t\t\tcurrentValue: config.showImages ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t});\n\t\t}\n\n\t\t// Add borders\n\t\tthis.addChild(new DynamicBorder());\n\n\t\tthis.settingsList = new SettingsList(\n\t\t\titems,\n\t\t\t10,\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id, newValue) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"autocompact\":\n\t\t\t\t\t\tcallbacks.onAutoCompactChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"show-images\":\n\t\t\t\t\t\tcallbacks.onShowImagesChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"queue-mode\":\n\t\t\t\t\t\tcallbacks.onQueueModeChange(newValue as \"all\" | \"one-at-a-time\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"hide-thinking\":\n\t\t\t\t\t\tcallbacks.onHideThinkingBlockChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"collapse-changelog\":\n\t\t\t\t\t\tcallbacks.onCollapseChangelogChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcallbacks.onCancel,\n\t\t);\n\n\t\tthis.addChild(this.settingsList);\n\t\tthis.addChild(new DynamicBorder());\n\t}\n\n\tgetSettingsList(): SettingsList {\n\t\treturn this.settingsList;\n\t}\n}\n"]}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { Container, getCapabilities, SelectList, SettingsList, Spacer, Text, } from "@mariozechner/pi-tui";
|
|
2
|
+
import { getSelectListTheme, getSettingsListTheme, theme } from "../theme/theme.js";
|
|
3
|
+
import { DynamicBorder } from "./dynamic-border.js";
|
|
4
|
+
const THINKING_DESCRIPTIONS = {
|
|
5
|
+
off: "No reasoning",
|
|
6
|
+
minimal: "Very brief reasoning (~1k tokens)",
|
|
7
|
+
low: "Light reasoning (~2k tokens)",
|
|
8
|
+
medium: "Moderate reasoning (~8k tokens)",
|
|
9
|
+
high: "Deep reasoning (~16k tokens)",
|
|
10
|
+
xhigh: "Maximum reasoning (~32k tokens)",
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* A submenu component for selecting from a list of options.
|
|
14
|
+
*/
|
|
15
|
+
class SelectSubmenu extends Container {
|
|
16
|
+
selectList;
|
|
17
|
+
constructor(title, description, options, currentValue, onSelect, onCancel, onSelectionChange) {
|
|
18
|
+
super();
|
|
19
|
+
// Title
|
|
20
|
+
this.addChild(new Text(theme.bold(theme.fg("accent", title)), 0, 0));
|
|
21
|
+
// Description
|
|
22
|
+
if (description) {
|
|
23
|
+
this.addChild(new Spacer(1));
|
|
24
|
+
this.addChild(new Text(theme.fg("muted", description), 0, 0));
|
|
25
|
+
}
|
|
26
|
+
// Spacer
|
|
27
|
+
this.addChild(new Spacer(1));
|
|
28
|
+
// Select list
|
|
29
|
+
this.selectList = new SelectList(options, Math.min(options.length, 10), getSelectListTheme());
|
|
30
|
+
// Pre-select current value
|
|
31
|
+
const currentIndex = options.findIndex((o) => o.value === currentValue);
|
|
32
|
+
if (currentIndex !== -1) {
|
|
33
|
+
this.selectList.setSelectedIndex(currentIndex);
|
|
34
|
+
}
|
|
35
|
+
this.selectList.onSelect = (item) => {
|
|
36
|
+
onSelect(item.value);
|
|
37
|
+
};
|
|
38
|
+
this.selectList.onCancel = onCancel;
|
|
39
|
+
if (onSelectionChange) {
|
|
40
|
+
this.selectList.onSelectionChange = (item) => {
|
|
41
|
+
onSelectionChange(item.value);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
this.addChild(this.selectList);
|
|
45
|
+
// Hint
|
|
46
|
+
this.addChild(new Spacer(1));
|
|
47
|
+
this.addChild(new Text(theme.fg("dim", " Enter to select · Esc to go back"), 0, 0));
|
|
48
|
+
}
|
|
49
|
+
handleInput(data) {
|
|
50
|
+
this.selectList.handleInput(data);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Main settings selector component.
|
|
55
|
+
*/
|
|
56
|
+
export class SettingsSelectorComponent extends Container {
|
|
57
|
+
settingsList;
|
|
58
|
+
constructor(config, callbacks) {
|
|
59
|
+
super();
|
|
60
|
+
const supportsImages = getCapabilities().images;
|
|
61
|
+
const items = [
|
|
62
|
+
{
|
|
63
|
+
id: "autocompact",
|
|
64
|
+
label: "Auto-compact",
|
|
65
|
+
description: "Automatically compact context when it gets too large",
|
|
66
|
+
currentValue: config.autoCompact ? "true" : "false",
|
|
67
|
+
values: ["true", "false"],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: "queue-mode",
|
|
71
|
+
label: "Queue mode",
|
|
72
|
+
description: "How to process queued messages while agent is working",
|
|
73
|
+
currentValue: config.queueMode,
|
|
74
|
+
values: ["one-at-a-time", "all"],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: "hide-thinking",
|
|
78
|
+
label: "Hide thinking",
|
|
79
|
+
description: "Hide thinking blocks in assistant responses",
|
|
80
|
+
currentValue: config.hideThinkingBlock ? "true" : "false",
|
|
81
|
+
values: ["true", "false"],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: "collapse-changelog",
|
|
85
|
+
label: "Collapse changelog",
|
|
86
|
+
description: "Show condensed changelog after updates",
|
|
87
|
+
currentValue: config.collapseChangelog ? "true" : "false",
|
|
88
|
+
values: ["true", "false"],
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "thinking",
|
|
92
|
+
label: "Thinking level",
|
|
93
|
+
description: "Reasoning depth for thinking-capable models",
|
|
94
|
+
currentValue: config.thinkingLevel,
|
|
95
|
+
submenu: (currentValue, done) => new SelectSubmenu("Thinking Level", "Select reasoning depth for thinking-capable models", config.availableThinkingLevels.map((level) => ({
|
|
96
|
+
value: level,
|
|
97
|
+
label: level,
|
|
98
|
+
description: THINKING_DESCRIPTIONS[level],
|
|
99
|
+
})), currentValue, (value) => {
|
|
100
|
+
callbacks.onThinkingLevelChange(value);
|
|
101
|
+
done(value);
|
|
102
|
+
}, () => done()),
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: "theme",
|
|
106
|
+
label: "Theme",
|
|
107
|
+
description: "Color theme for the interface",
|
|
108
|
+
currentValue: config.currentTheme,
|
|
109
|
+
submenu: (currentValue, done) => new SelectSubmenu("Theme", "Select color theme", config.availableThemes.map((t) => ({
|
|
110
|
+
value: t,
|
|
111
|
+
label: t,
|
|
112
|
+
})), currentValue, (value) => {
|
|
113
|
+
callbacks.onThemeChange(value);
|
|
114
|
+
done(value);
|
|
115
|
+
}, () => {
|
|
116
|
+
// Restore original theme on cancel
|
|
117
|
+
callbacks.onThemePreview?.(currentValue);
|
|
118
|
+
done();
|
|
119
|
+
}, (value) => {
|
|
120
|
+
// Preview theme on selection change
|
|
121
|
+
callbacks.onThemePreview?.(value);
|
|
122
|
+
}),
|
|
123
|
+
},
|
|
124
|
+
];
|
|
125
|
+
// Only show image toggle if terminal supports it
|
|
126
|
+
if (supportsImages) {
|
|
127
|
+
// Insert after autocompact
|
|
128
|
+
items.splice(1, 0, {
|
|
129
|
+
id: "show-images",
|
|
130
|
+
label: "Show images",
|
|
131
|
+
description: "Render images inline in terminal",
|
|
132
|
+
currentValue: config.showImages ? "true" : "false",
|
|
133
|
+
values: ["true", "false"],
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// Add borders
|
|
137
|
+
this.addChild(new DynamicBorder());
|
|
138
|
+
this.settingsList = new SettingsList(items, 10, getSettingsListTheme(), (id, newValue) => {
|
|
139
|
+
switch (id) {
|
|
140
|
+
case "autocompact":
|
|
141
|
+
callbacks.onAutoCompactChange(newValue === "true");
|
|
142
|
+
break;
|
|
143
|
+
case "show-images":
|
|
144
|
+
callbacks.onShowImagesChange(newValue === "true");
|
|
145
|
+
break;
|
|
146
|
+
case "queue-mode":
|
|
147
|
+
callbacks.onQueueModeChange(newValue);
|
|
148
|
+
break;
|
|
149
|
+
case "hide-thinking":
|
|
150
|
+
callbacks.onHideThinkingBlockChange(newValue === "true");
|
|
151
|
+
break;
|
|
152
|
+
case "collapse-changelog":
|
|
153
|
+
callbacks.onCollapseChangelogChange(newValue === "true");
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
}, callbacks.onCancel);
|
|
157
|
+
this.addChild(this.settingsList);
|
|
158
|
+
this.addChild(new DynamicBorder());
|
|
159
|
+
}
|
|
160
|
+
getSettingsList() {
|
|
161
|
+
return this.settingsList;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=settings-selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-selector.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector.ts"],"names":[],"mappings":"AACA,OAAO,EACN,SAAS,EACT,eAAe,EAEf,UAAU,EAEV,YAAY,EACZ,MAAM,EACN,IAAI,GACJ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,qBAAqB,GAAkC;IAC5D,GAAG,EAAE,cAAc;IACnB,OAAO,EAAE,mCAAmC;IAC5C,GAAG,EAAE,8BAA8B;IACnC,MAAM,EAAE,iCAAiC;IACzC,IAAI,EAAE,8BAA8B;IACpC,KAAK,EAAE,iCAAiC;CACxC,CAAC;AA0BF;;GAEG;AACH,MAAM,aAAc,SAAQ,SAAS;IAC5B,UAAU,CAAa;IAE/B,YACC,KAAa,EACb,WAAmB,EACnB,OAAqB,EACrB,YAAoB,EACpB,QAAiC,EACjC,QAAoB,EACpB,iBAA2C,EAC1C;QACD,KAAK,EAAE,CAAC;QAER,QAAQ;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAErE,cAAc;QACd,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,SAAS;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7B,cAAc;QACd,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAE9F,2BAA2B;QAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;QACxE,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,CACrB,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEpC,IAAI,iBAAiB,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC7C,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAA,CAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/B,OAAO;QACP,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,qCAAoC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAAA,CACrF;IAED,WAAW,CAAC,IAAY,EAAQ;QAC/B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAAA,CAClC;CACD;AAED;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,SAAS;IAC/C,YAAY,CAAe;IAEnC,YAAY,MAAsB,EAAE,SAA4B,EAAE;QACjE,KAAK,EAAE,CAAC;QAER,MAAM,cAAc,GAAG,eAAe,EAAE,CAAC,MAAM,CAAC;QAEhD,MAAM,KAAK,GAAkB;YAC5B;gBACC,EAAE,EAAE,aAAa;gBACjB,KAAK,EAAE,cAAc;gBACrB,WAAW,EAAE,sDAAsD;gBACnE,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;gBACnD,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;aACzB;YACD;gBACC,EAAE,EAAE,YAAY;gBAChB,KAAK,EAAE,YAAY;gBACnB,WAAW,EAAE,uDAAuD;gBACpE,YAAY,EAAE,MAAM,CAAC,SAAS;gBAC9B,MAAM,EAAE,CAAC,eAAe,EAAE,KAAK,CAAC;aAChC;YACD;gBACC,EAAE,EAAE,eAAe;gBACnB,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,6CAA6C;gBAC1D,YAAY,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;gBACzD,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;aACzB;YACD;gBACC,EAAE,EAAE,oBAAoB;gBACxB,KAAK,EAAE,oBAAoB;gBAC3B,WAAW,EAAE,wCAAwC;gBACrD,YAAY,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;gBACzD,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;aACzB;YACD;gBACC,EAAE,EAAE,UAAU;gBACd,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EAAE,6CAA6C;gBAC1D,YAAY,EAAE,MAAM,CAAC,aAAa;gBAClC,OAAO,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAC/B,IAAI,aAAa,CAChB,gBAAgB,EAChB,oDAAoD,EACpD,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC9C,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,KAAK;oBACZ,WAAW,EAAE,qBAAqB,CAAC,KAAK,CAAC;iBACzC,CAAC,CAAC,EACH,YAAY,EACZ,CAAC,KAAK,EAAE,EAAE,CAAC;oBACV,SAAS,CAAC,qBAAqB,CAAC,KAAsB,CAAC,CAAC;oBACxD,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAA,CACZ,EACD,GAAG,EAAE,CAAC,IAAI,EAAE,CACZ;aACF;YACD;gBACC,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,OAAO;gBACd,WAAW,EAAE,+BAA+B;gBAC5C,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,OAAO,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAC/B,IAAI,aAAa,CAChB,OAAO,EACP,oBAAoB,EACpB,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClC,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;iBACR,CAAC,CAAC,EACH,YAAY,EACZ,CAAC,KAAK,EAAE,EAAE,CAAC;oBACV,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAA,CACZ,EACD,GAAG,EAAE,CAAC;oBACL,mCAAmC;oBACnC,SAAS,CAAC,cAAc,EAAE,CAAC,YAAY,CAAC,CAAC;oBACzC,IAAI,EAAE,CAAC;gBAAA,CACP,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;oBACV,oCAAoC;oBACpC,SAAS,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;gBAAA,CAClC,CACD;aACF;SACD,CAAC;QAEF,iDAAiD;QACjD,IAAI,cAAc,EAAE,CAAC;YACpB,2BAA2B;YAC3B,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;gBAClB,EAAE,EAAE,aAAa;gBACjB,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,kCAAkC;gBAC/C,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;gBAClD,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;aACzB,CAAC,CAAC;QACJ,CAAC;QAED,cAAc;QACd,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QAEnC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CACnC,KAAK,EACL,EAAE,EACF,oBAAoB,EAAE,EACtB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;YACjB,QAAQ,EAAE,EAAE,CAAC;gBACZ,KAAK,aAAa;oBACjB,SAAS,CAAC,mBAAmB,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;oBACnD,MAAM;gBACP,KAAK,aAAa;oBACjB,SAAS,CAAC,kBAAkB,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;oBAClD,MAAM;gBACP,KAAK,YAAY;oBAChB,SAAS,CAAC,iBAAiB,CAAC,QAAmC,CAAC,CAAC;oBACjE,MAAM;gBACP,KAAK,eAAe;oBACnB,SAAS,CAAC,yBAAyB,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;oBACzD,MAAM;gBACP,KAAK,oBAAoB;oBACxB,SAAS,CAAC,yBAAyB,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;oBACzD,MAAM;YACR,CAAC;QAAA,CACD,EACD,SAAS,CAAC,QAAQ,CAClB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IAAA,CACnC;IAED,eAAe,GAAiB;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC;IAAA,CACzB;CACD","sourcesContent":["import type { ThinkingLevel } from \"@mariozechner/pi-agent-core\";\nimport {\n\tContainer,\n\tgetCapabilities,\n\ttype SelectItem,\n\tSelectList,\n\ttype SettingItem,\n\tSettingsList,\n\tSpacer,\n\tText,\n} from \"@mariozechner/pi-tui\";\nimport { getSelectListTheme, getSettingsListTheme, theme } from \"../theme/theme.js\";\nimport { DynamicBorder } from \"./dynamic-border.js\";\n\nconst THINKING_DESCRIPTIONS: Record<ThinkingLevel, string> = {\n\toff: \"No reasoning\",\n\tminimal: \"Very brief reasoning (~1k tokens)\",\n\tlow: \"Light reasoning (~2k tokens)\",\n\tmedium: \"Moderate reasoning (~8k tokens)\",\n\thigh: \"Deep reasoning (~16k tokens)\",\n\txhigh: \"Maximum reasoning (~32k tokens)\",\n};\n\nexport interface SettingsConfig {\n\tautoCompact: boolean;\n\tshowImages: boolean;\n\tqueueMode: \"all\" | \"one-at-a-time\";\n\tthinkingLevel: ThinkingLevel;\n\tavailableThinkingLevels: ThinkingLevel[];\n\tcurrentTheme: string;\n\tavailableThemes: string[];\n\thideThinkingBlock: boolean;\n\tcollapseChangelog: boolean;\n}\n\nexport interface SettingsCallbacks {\n\tonAutoCompactChange: (enabled: boolean) => void;\n\tonShowImagesChange: (enabled: boolean) => void;\n\tonQueueModeChange: (mode: \"all\" | \"one-at-a-time\") => void;\n\tonThinkingLevelChange: (level: ThinkingLevel) => void;\n\tonThemeChange: (theme: string) => void;\n\tonThemePreview?: (theme: string) => void;\n\tonHideThinkingBlockChange: (hidden: boolean) => void;\n\tonCollapseChangelogChange: (collapsed: boolean) => void;\n\tonCancel: () => void;\n}\n\n/**\n * A submenu component for selecting from a list of options.\n */\nclass SelectSubmenu extends Container {\n\tprivate selectList: SelectList;\n\n\tconstructor(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\toptions: SelectItem[],\n\t\tcurrentValue: string,\n\t\tonSelect: (value: string) => void,\n\t\tonCancel: () => void,\n\t\tonSelectionChange?: (value: string) => void,\n\t) {\n\t\tsuper();\n\n\t\t// Title\n\t\tthis.addChild(new Text(theme.bold(theme.fg(\"accent\", title)), 0, 0));\n\n\t\t// Description\n\t\tif (description) {\n\t\t\tthis.addChild(new Spacer(1));\n\t\t\tthis.addChild(new Text(theme.fg(\"muted\", description), 0, 0));\n\t\t}\n\n\t\t// Spacer\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// Select list\n\t\tthis.selectList = new SelectList(options, Math.min(options.length, 10), getSelectListTheme());\n\n\t\t// Pre-select current value\n\t\tconst currentIndex = options.findIndex((o) => o.value === currentValue);\n\t\tif (currentIndex !== -1) {\n\t\t\tthis.selectList.setSelectedIndex(currentIndex);\n\t\t}\n\n\t\tthis.selectList.onSelect = (item) => {\n\t\t\tonSelect(item.value);\n\t\t};\n\n\t\tthis.selectList.onCancel = onCancel;\n\n\t\tif (onSelectionChange) {\n\t\t\tthis.selectList.onSelectionChange = (item) => {\n\t\t\t\tonSelectionChange(item.value);\n\t\t\t};\n\t\t}\n\n\t\tthis.addChild(this.selectList);\n\n\t\t// Hint\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(new Text(theme.fg(\"dim\", \" Enter to select · Esc to go back\"), 0, 0));\n\t}\n\n\thandleInput(data: string): void {\n\t\tthis.selectList.handleInput(data);\n\t}\n}\n\n/**\n * Main settings selector component.\n */\nexport class SettingsSelectorComponent extends Container {\n\tprivate settingsList: SettingsList;\n\n\tconstructor(config: SettingsConfig, callbacks: SettingsCallbacks) {\n\t\tsuper();\n\n\t\tconst supportsImages = getCapabilities().images;\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"autocompact\",\n\t\t\t\tlabel: \"Auto-compact\",\n\t\t\t\tdescription: \"Automatically compact context when it gets too large\",\n\t\t\t\tcurrentValue: config.autoCompact ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"queue-mode\",\n\t\t\t\tlabel: \"Queue mode\",\n\t\t\t\tdescription: \"How to process queued messages while agent is working\",\n\t\t\t\tcurrentValue: config.queueMode,\n\t\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"hide-thinking\",\n\t\t\t\tlabel: \"Hide thinking\",\n\t\t\t\tdescription: \"Hide thinking blocks in assistant responses\",\n\t\t\t\tcurrentValue: config.hideThinkingBlock ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"collapse-changelog\",\n\t\t\t\tlabel: \"Collapse changelog\",\n\t\t\t\tdescription: \"Show condensed changelog after updates\",\n\t\t\t\tcurrentValue: config.collapseChangelog ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"thinking\",\n\t\t\t\tlabel: \"Thinking level\",\n\t\t\t\tdescription: \"Reasoning depth for thinking-capable models\",\n\t\t\t\tcurrentValue: config.thinkingLevel,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tnew SelectSubmenu(\n\t\t\t\t\t\t\"Thinking Level\",\n\t\t\t\t\t\t\"Select reasoning depth for thinking-capable models\",\n\t\t\t\t\t\tconfig.availableThinkingLevels.map((level) => ({\n\t\t\t\t\t\t\tvalue: level,\n\t\t\t\t\t\t\tlabel: level,\n\t\t\t\t\t\t\tdescription: THINKING_DESCRIPTIONS[level],\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tcallbacks.onThinkingLevelChange(value as ThinkingLevel);\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => done(),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"theme\",\n\t\t\t\tlabel: \"Theme\",\n\t\t\t\tdescription: \"Color theme for the interface\",\n\t\t\t\tcurrentValue: config.currentTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tnew SelectSubmenu(\n\t\t\t\t\t\t\"Theme\",\n\t\t\t\t\t\t\"Select color theme\",\n\t\t\t\t\t\tconfig.availableThemes.map((t) => ({\n\t\t\t\t\t\t\tvalue: t,\n\t\t\t\t\t\t\tlabel: t,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tcallbacks.onThemeChange(value);\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t// Restore original theme on cancel\n\t\t\t\t\t\t\tcallbacks.onThemePreview?.(currentValue);\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t},\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\t// Preview theme on selection change\n\t\t\t\t\t\t\tcallbacks.onThemePreview?.(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t];\n\n\t\t// Only show image toggle if terminal supports it\n\t\tif (supportsImages) {\n\t\t\t// Insert after autocompact\n\t\t\titems.splice(1, 0, {\n\t\t\t\tid: \"show-images\",\n\t\t\t\tlabel: \"Show images\",\n\t\t\t\tdescription: \"Render images inline in terminal\",\n\t\t\t\tcurrentValue: config.showImages ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t});\n\t\t}\n\n\t\t// Add borders\n\t\tthis.addChild(new DynamicBorder());\n\n\t\tthis.settingsList = new SettingsList(\n\t\t\titems,\n\t\t\t10,\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id, newValue) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"autocompact\":\n\t\t\t\t\t\tcallbacks.onAutoCompactChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"show-images\":\n\t\t\t\t\t\tcallbacks.onShowImagesChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"queue-mode\":\n\t\t\t\t\t\tcallbacks.onQueueModeChange(newValue as \"all\" | \"one-at-a-time\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"hide-thinking\":\n\t\t\t\t\t\tcallbacks.onHideThinkingBlockChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"collapse-changelog\":\n\t\t\t\t\t\tcallbacks.onCollapseChangelogChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcallbacks.onCancel,\n\t\t);\n\n\t\tthis.addChild(this.settingsList);\n\t\tthis.addChild(new DynamicBorder());\n\t}\n\n\tgetSettingsList(): SettingsList {\n\t\treturn this.settingsList;\n\t}\n}\n"]}
|
|
@@ -125,9 +125,7 @@ export declare class InteractiveMode {
|
|
|
125
125
|
* @param create Factory that receives a `done` callback and returns the component and focus target
|
|
126
126
|
*/
|
|
127
127
|
private showSelector;
|
|
128
|
-
private
|
|
129
|
-
private showQueueModeSelector;
|
|
130
|
-
private showThemeSelector;
|
|
128
|
+
private showSettingsSelector;
|
|
131
129
|
private showModelSelector;
|
|
132
130
|
private showUserMessageSelector;
|
|
133
131
|
private showSessionSelector;
|
|
@@ -143,8 +141,6 @@ export declare class InteractiveMode {
|
|
|
143
141
|
private handleArminSaysHi;
|
|
144
142
|
private handleBashCommand;
|
|
145
143
|
private handleCompactCommand;
|
|
146
|
-
private handleAutocompactCommand;
|
|
147
|
-
private showShowImagesSelector;
|
|
148
144
|
private executeCompaction;
|
|
149
145
|
stop(): void;
|
|
150
146
|
}
|