@dungle-scrubs/tallow 0.9.4 → 0.9.6
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/dist/cli.js +7 -4
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/interactive-mode-patch.d.ts +24 -12
- package/dist/interactive-mode-patch.d.ts.map +1 -1
- package/dist/interactive-mode-patch.js +229 -146
- package/dist/interactive-mode-patch.js.map +1 -1
- package/dist/interactive-reset.d.ts +49 -0
- package/dist/interactive-reset.d.ts.map +1 -0
- package/dist/interactive-reset.js +40 -0
- package/dist/interactive-reset.js.map +1 -0
- package/dist/pi-tui-editor-patch.d.ts +10 -0
- package/dist/pi-tui-editor-patch.d.ts.map +1 -0
- package/dist/pi-tui-editor-patch.js +159 -0
- package/dist/pi-tui-editor-patch.js.map +1 -0
- package/dist/pi-tui-patch.d.ts +2 -0
- package/dist/pi-tui-patch.d.ts.map +1 -0
- package/dist/pi-tui-patch.js +563 -0
- package/dist/pi-tui-patch.js.map +1 -0
- package/dist/pi-tui-settings-list-patch.d.ts +11 -0
- package/dist/pi-tui-settings-list-patch.d.ts.map +1 -0
- package/dist/pi-tui-settings-list-patch.js +38 -0
- package/dist/pi-tui-settings-list-patch.js.map +1 -0
- package/dist/reset-diagnostics.d.ts +69 -0
- package/dist/reset-diagnostics.d.ts.map +1 -0
- package/dist/reset-diagnostics.js +41 -0
- package/dist/reset-diagnostics.js.map +1 -0
- package/dist/sdk.d.ts +5 -21
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +180 -149
- package/dist/sdk.js.map +1 -1
- package/dist/workspace-transition-interactive.d.ts +1 -0
- package/dist/workspace-transition-interactive.d.ts.map +1 -1
- package/dist/workspace-transition-interactive.js +7 -17
- package/dist/workspace-transition-interactive.js.map +1 -1
- package/extensions/__integration__/audit-findings.test.ts +4 -5
- package/extensions/_icons/index.ts +2 -4
- package/extensions/_shared/__tests__/image-metadata.test.ts +33 -0
- package/extensions/_shared/__tests__/terminal-links.test.ts +18 -0
- package/extensions/_shared/image-metadata.ts +99 -0
- package/extensions/_shared/inline-preview.ts +1 -1
- package/extensions/_shared/terminal-links.ts +22 -0
- package/extensions/ask-user-question-tool/index.ts +0 -3
- package/extensions/clear/__tests__/clear.test.ts +269 -2
- package/extensions/command-expansion/index.ts +1 -1
- package/extensions/context-files/index.ts +5 -1
- package/extensions/context-fork/__tests__/context-fork.test.ts +94 -1
- package/extensions/context-fork/extension.json +1 -1
- package/extensions/context-fork/index.ts +32 -0
- package/extensions/edit-tool-enhanced/index.ts +2 -1
- package/extensions/hooks/index.ts +33 -11
- package/extensions/loop/index.ts +14 -1
- package/extensions/lsp/index.ts +64 -13
- package/extensions/lsp/package.json +2 -2
- package/extensions/random-spinner/index.ts +7 -642
- package/extensions/read-tool-enhanced/index.ts +6 -8
- package/extensions/render-stabilizer/__tests__/render-stabilizer.test.ts +2 -3
- package/extensions/render-stabilizer/index.ts +6 -6
- package/extensions/slash-command-bridge/__tests__/slash-command-bridge.test.ts +26 -0
- package/extensions/slash-command-bridge/index.ts +14 -2
- package/extensions/subagent-tool/model-resolver.ts +274 -7
- package/extensions/tasks/commands/register-tasks-extension.ts +9 -9
- package/extensions/teams-tool/tools/register-extension.ts +1 -3
- package/extensions/web-search-tool/index.ts +2 -1
- package/extensions/write-tool-enhanced/index.ts +2 -1
- package/node_modules/@mariozechner/pi-tui/README.md +56 -34
- package/node_modules/@mariozechner/pi-tui/dist/autocomplete.d.ts +18 -13
- package/node_modules/@mariozechner/pi-tui/dist/autocomplete.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/autocomplete.js +182 -113
- package/node_modules/@mariozechner/pi-tui/dist/autocomplete.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/cancellable-loader.js +3 -3
- package/node_modules/@mariozechner/pi-tui/dist/components/cancellable-loader.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/editor.d.ts +45 -36
- package/node_modules/@mariozechner/pi-tui/dist/components/editor.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/editor.js +489 -325
- package/node_modules/@mariozechner/pi-tui/dist/components/editor.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/image.d.ts +1 -99
- package/node_modules/@mariozechner/pi-tui/dist/components/image.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/image.js +17 -192
- package/node_modules/@mariozechner/pi-tui/dist/components/image.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/input.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/input.js +57 -60
- package/node_modules/@mariozechner/pi-tui/dist/components/input.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/loader.d.ts +2 -69
- package/node_modules/@mariozechner/pi-tui/dist/components/loader.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/loader.js +5 -102
- package/node_modules/@mariozechner/pi-tui/dist/components/loader.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/markdown.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/markdown.js +111 -53
- package/node_modules/@mariozechner/pi-tui/dist/components/markdown.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/select-list.d.ts +19 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/select-list.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/select-list.js +78 -67
- package/node_modules/@mariozechner/pi-tui/dist/components/select-list.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.d.ts +1 -25
- package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.js +13 -50
- package/node_modules/@mariozechner/pi-tui/dist/components/settings-list.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/index.d.ts +8 -10
- package/node_modules/@mariozechner/pi-tui/dist/index.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/index.js +6 -9
- package/node_modules/@mariozechner/pi-tui/dist/index.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/keybindings.d.ts +108 -238
- package/node_modules/@mariozechner/pi-tui/dist/keybindings.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/keybindings.js +108 -365
- package/node_modules/@mariozechner/pi-tui/dist/keybindings.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/keys.d.ts +33 -48
- package/node_modules/@mariozechner/pi-tui/dist/keys.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/keys.js +239 -155
- package/node_modules/@mariozechner/pi-tui/dist/keys.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/terminal-image.d.ts +14 -94
- package/node_modules/@mariozechner/pi-tui/dist/terminal-image.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/terminal-image.js +44 -186
- package/node_modules/@mariozechner/pi-tui/dist/terminal-image.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/terminal.d.ts +13 -58
- package/node_modules/@mariozechner/pi-tui/dist/terminal.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/terminal.js +78 -111
- package/node_modules/@mariozechner/pi-tui/dist/terminal.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/tui.d.ts +24 -110
- package/node_modules/@mariozechner/pi-tui/dist/tui.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/tui.js +188 -435
- package/node_modules/@mariozechner/pi-tui/dist/tui.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/utils.d.ts +0 -18
- package/node_modules/@mariozechner/pi-tui/dist/utils.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/utils.js +251 -119
- package/node_modules/@mariozechner/pi-tui/dist/utils.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/package.json +6 -6
- package/node_modules/@mariozechner/pi-tui/src/__tests__/__snapshots__/render.test.ts.snap +3 -40
- package/node_modules/@mariozechner/pi-tui/src/__tests__/image-component.test.ts +71 -81
- package/node_modules/@mariozechner/pi-tui/src/__tests__/render.test.ts +0 -33
- package/node_modules/@mariozechner/pi-tui/src/__tests__/terminal-image.test.ts +93 -334
- package/node_modules/@mariozechner/pi-tui/src/__tests__/tui-render-scheduling.test.ts +1 -1
- package/node_modules/@mariozechner/pi-tui/src/__tests__/utils.test.ts +11 -196
- package/node_modules/@mariozechner/pi-tui/src/autocomplete.ts +228 -142
- package/node_modules/@mariozechner/pi-tui/src/components/cancellable-loader.ts +3 -3
- package/node_modules/@mariozechner/pi-tui/src/components/editor.ts +624 -390
- package/node_modules/@mariozechner/pi-tui/src/components/image.ts +17 -227
- package/node_modules/@mariozechner/pi-tui/src/components/input.ts +71 -63
- package/node_modules/@mariozechner/pi-tui/src/components/loader.ts +5 -137
- package/node_modules/@mariozechner/pi-tui/src/components/markdown.ts +143 -52
- package/node_modules/@mariozechner/pi-tui/src/components/select-list.ts +136 -70
- package/node_modules/@mariozechner/pi-tui/src/components/settings-list.ts +12 -51
- package/node_modules/@mariozechner/pi-tui/src/index.ts +17 -36
- package/node_modules/@mariozechner/pi-tui/src/keybindings.ts +148 -421
- package/node_modules/@mariozechner/pi-tui/src/keys.ts +253 -181
- package/node_modules/@mariozechner/pi-tui/src/terminal-image.ts +51 -252
- package/node_modules/@mariozechner/pi-tui/src/terminal.ts +78 -133
- package/node_modules/@mariozechner/pi-tui/src/tui.ts +202 -478
- package/node_modules/@mariozechner/pi-tui/src/utils.ts +289 -125
- package/node_modules/@mariozechner/pi-tui/tsconfig.build.json +1 -0
- package/package.json +13 -13
- package/packages/tallow-tui/node_modules/@types/mime-types/README.md +8 -2
- package/packages/tallow-tui/node_modules/@types/mime-types/index.d.ts +6 -0
- package/packages/tallow-tui/node_modules/@types/mime-types/package.json +9 -3
- package/packages/tallow-tui/node_modules/get-east-asian-width/lookup-data.js +18 -0
- package/packages/tallow-tui/node_modules/get-east-asian-width/lookup.js +116 -384
- package/packages/tallow-tui/node_modules/get-east-asian-width/package.json +5 -4
- package/packages/tallow-tui/node_modules/get-east-asian-width/utilities.js +24 -0
- package/packages/tallow-tui/node_modules/marked/README.md +5 -4
- package/packages/tallow-tui/node_modules/marked/bin/main.js +10 -8
- package/packages/tallow-tui/node_modules/marked/bin/marked.js +2 -1
- package/packages/tallow-tui/node_modules/marked/lib/marked.d.ts +156 -125
- package/packages/tallow-tui/node_modules/marked/lib/marked.esm.js +67 -2179
- package/packages/tallow-tui/node_modules/marked/lib/marked.esm.js.map +3 -3
- package/packages/tallow-tui/node_modules/marked/lib/marked.umd.js +67 -2201
- package/packages/tallow-tui/node_modules/marked/lib/marked.umd.js.map +3 -3
- package/packages/tallow-tui/node_modules/marked/man/marked.1 +4 -2
- package/packages/tallow-tui/node_modules/marked/man/marked.1.md +2 -1
- package/packages/tallow-tui/node_modules/marked/package.json +26 -34
- package/skills/tallow-expert/SKILL.md +1 -3
- package/node_modules/@mariozechner/pi-tui/dist/border-styles.d.ts +0 -32
- package/node_modules/@mariozechner/pi-tui/dist/border-styles.d.ts.map +0 -1
- package/node_modules/@mariozechner/pi-tui/dist/border-styles.js +0 -46
- package/node_modules/@mariozechner/pi-tui/dist/border-styles.js.map +0 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.d.ts +0 -52
- package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.d.ts.map +0 -1
- package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.js +0 -89
- package/node_modules/@mariozechner/pi-tui/dist/components/bordered-box.js.map +0 -1
- package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.d.ts +0 -14
- package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.d.ts.map +0 -1
- package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.js +0 -55
- package/node_modules/@mariozechner/pi-tui/dist/test-utils/capability-env.js.map +0 -1
- package/node_modules/@mariozechner/pi-tui/src/__tests__/editor-change-listener.test.ts +0 -121
- package/node_modules/@mariozechner/pi-tui/src/__tests__/editor-ghost-text.test.ts +0 -112
- package/node_modules/@mariozechner/pi-tui/src/__tests__/mouse-events.test.ts +0 -134
- package/node_modules/@mariozechner/pi-tui/src/__tests__/settings-list.test.ts +0 -81
- package/node_modules/@mariozechner/pi-tui/src/__tests__/tui-diff-regression.test.ts +0 -555
- package/node_modules/@mariozechner/pi-tui/src/border-styles.ts +0 -60
- package/node_modules/@mariozechner/pi-tui/src/components/bordered-box.ts +0 -113
- package/node_modules/@mariozechner/pi-tui/src/test-utils/capability-env.ts +0 -56
- package/packages/tallow-tui/node_modules/marked/lib/marked.cjs +0 -2211
- package/packages/tallow-tui/node_modules/marked/lib/marked.cjs.map +0 -7
- package/packages/tallow-tui/node_modules/marked/lib/marked.d.cts +0 -728
- package/packages/tallow-tui/node_modules/marked/marked.min.js +0 -69
|
@@ -1,434 +1,177 @@
|
|
|
1
1
|
import { matchesKey } from "./keys.js";
|
|
2
|
-
const LEGACY_TO_MODERN_KEYBINDINGS = {
|
|
3
|
-
copy: "tui.input.copy",
|
|
4
|
-
cursorDown: "tui.editor.cursorDown",
|
|
5
|
-
cursorLeft: "tui.editor.cursorLeft",
|
|
6
|
-
cursorLineEnd: "tui.editor.cursorLineEnd",
|
|
7
|
-
cursorLineStart: "tui.editor.cursorLineStart",
|
|
8
|
-
cursorRight: "tui.editor.cursorRight",
|
|
9
|
-
cursorUp: "tui.editor.cursorUp",
|
|
10
|
-
cursorWordLeft: "tui.editor.cursorWordLeft",
|
|
11
|
-
cursorWordRight: "tui.editor.cursorWordRight",
|
|
12
|
-
deleteCharBackward: "tui.editor.deleteCharBackward",
|
|
13
|
-
deleteCharForward: "tui.editor.deleteCharForward",
|
|
14
|
-
deleteSession: "app.session.delete",
|
|
15
|
-
deleteSessionNoninvasive: "app.session.deleteNoninvasive",
|
|
16
|
-
deleteToLineEnd: "tui.editor.deleteToLineEnd",
|
|
17
|
-
deleteToLineStart: "tui.editor.deleteToLineStart",
|
|
18
|
-
deleteWordBackward: "tui.editor.deleteWordBackward",
|
|
19
|
-
deleteWordForward: "tui.editor.deleteWordForward",
|
|
20
|
-
expandTools: "app.tools.expand",
|
|
21
|
-
jumpBackward: "tui.editor.jumpBackward",
|
|
22
|
-
jumpForward: "tui.editor.jumpForward",
|
|
23
|
-
newLine: "tui.input.newLine",
|
|
24
|
-
pageDown: "tui.editor.pageDown",
|
|
25
|
-
pageUp: "tui.editor.pageUp",
|
|
26
|
-
renameSession: "app.session.rename",
|
|
27
|
-
selectCancel: "tui.select.cancel",
|
|
28
|
-
selectConfirm: "tui.select.confirm",
|
|
29
|
-
selectDown: "tui.select.down",
|
|
30
|
-
selectPageDown: "tui.select.pageDown",
|
|
31
|
-
selectPageUp: "tui.select.pageUp",
|
|
32
|
-
selectUp: "tui.select.up",
|
|
33
|
-
submit: "tui.input.submit",
|
|
34
|
-
tab: "tui.input.tab",
|
|
35
|
-
toggleSessionPath: "app.session.togglePath",
|
|
36
|
-
toggleSessionSort: "app.session.toggleSort",
|
|
37
|
-
undo: "tui.editor.undo",
|
|
38
|
-
yank: "tui.editor.yank",
|
|
39
|
-
yankPop: "tui.editor.yankPop",
|
|
40
|
-
};
|
|
41
|
-
/** Default legacy editor keybindings preserved for compatibility. */
|
|
42
|
-
export const DEFAULT_EDITOR_KEYBINDINGS = {
|
|
43
|
-
copy: "ctrl+shift+c",
|
|
44
|
-
cursorDown: "down",
|
|
45
|
-
cursorLeft: ["left", "ctrl+b"],
|
|
46
|
-
cursorLineEnd: ["end", "ctrl+e"],
|
|
47
|
-
cursorLineStart: ["home", "ctrl+a"],
|
|
48
|
-
cursorRight: ["right", "ctrl+f"],
|
|
49
|
-
cursorUp: "up",
|
|
50
|
-
cursorWordLeft: ["alt+left", "ctrl+left", "alt+b"],
|
|
51
|
-
cursorWordRight: ["alt+right", "ctrl+right", "alt+f"],
|
|
52
|
-
deleteCharBackward: "backspace",
|
|
53
|
-
deleteCharForward: ["delete", "ctrl+d"],
|
|
54
|
-
deleteSession: "ctrl+d",
|
|
55
|
-
deleteSessionNoninvasive: "ctrl+backspace",
|
|
56
|
-
deleteToLineEnd: "ctrl+k",
|
|
57
|
-
deleteToLineStart: "ctrl+u",
|
|
58
|
-
deleteWordBackward: ["ctrl+w", "alt+backspace"],
|
|
59
|
-
deleteWordForward: ["alt+d", "alt+delete"],
|
|
60
|
-
expandTools: "ctrl+o",
|
|
61
|
-
jumpBackward: "ctrl+alt+]",
|
|
62
|
-
jumpForward: "ctrl+]",
|
|
63
|
-
newLine: "shift+enter",
|
|
64
|
-
pageDown: "pageDown",
|
|
65
|
-
pageUp: "pageUp",
|
|
66
|
-
renameSession: "ctrl+r",
|
|
67
|
-
selectCancel: ["escape", "ctrl+c"],
|
|
68
|
-
selectConfirm: "enter",
|
|
69
|
-
selectDown: "down",
|
|
70
|
-
selectPageDown: "pageDown",
|
|
71
|
-
selectPageUp: "pageUp",
|
|
72
|
-
selectUp: "up",
|
|
73
|
-
submit: "enter",
|
|
74
|
-
tab: "tab",
|
|
75
|
-
toggleSessionPath: "ctrl+p",
|
|
76
|
-
toggleSessionSort: "ctrl+s",
|
|
77
|
-
undo: "ctrl+-",
|
|
78
|
-
yank: "ctrl+y",
|
|
79
|
-
yankPop: "alt+y",
|
|
80
|
-
};
|
|
81
|
-
/** Modern TUI keybinding definitions consumed by pi-coding-agent 0.61+. */
|
|
82
2
|
export const TUI_KEYBINDINGS = {
|
|
83
|
-
"tui.editor.
|
|
84
|
-
|
|
85
|
-
description: "Move cursor down",
|
|
86
|
-
},
|
|
3
|
+
"tui.editor.cursorUp": { defaultKeys: "up", description: "Move cursor up" },
|
|
4
|
+
"tui.editor.cursorDown": { defaultKeys: "down", description: "Move cursor down" },
|
|
87
5
|
"tui.editor.cursorLeft": {
|
|
88
|
-
defaultKeys:
|
|
6
|
+
defaultKeys: ["left", "ctrl+b"],
|
|
89
7
|
description: "Move cursor left",
|
|
90
8
|
},
|
|
91
|
-
"tui.editor.cursorLineEnd": {
|
|
92
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.cursorLineEnd,
|
|
93
|
-
description: "Move to line end",
|
|
94
|
-
},
|
|
95
|
-
"tui.editor.cursorLineStart": {
|
|
96
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.cursorLineStart,
|
|
97
|
-
description: "Move to line start",
|
|
98
|
-
},
|
|
99
9
|
"tui.editor.cursorRight": {
|
|
100
|
-
defaultKeys:
|
|
10
|
+
defaultKeys: ["right", "ctrl+f"],
|
|
101
11
|
description: "Move cursor right",
|
|
102
12
|
},
|
|
103
|
-
"tui.editor.cursorUp": {
|
|
104
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.cursorUp,
|
|
105
|
-
description: "Move cursor up",
|
|
106
|
-
},
|
|
107
13
|
"tui.editor.cursorWordLeft": {
|
|
108
|
-
defaultKeys:
|
|
14
|
+
defaultKeys: ["alt+left", "ctrl+left", "alt+b"],
|
|
109
15
|
description: "Move cursor word left",
|
|
110
16
|
},
|
|
111
17
|
"tui.editor.cursorWordRight": {
|
|
112
|
-
defaultKeys:
|
|
18
|
+
defaultKeys: ["alt+right", "ctrl+right", "alt+f"],
|
|
113
19
|
description: "Move cursor word right",
|
|
114
20
|
},
|
|
21
|
+
"tui.editor.cursorLineStart": {
|
|
22
|
+
defaultKeys: ["home", "ctrl+a"],
|
|
23
|
+
description: "Move to line start",
|
|
24
|
+
},
|
|
25
|
+
"tui.editor.cursorLineEnd": {
|
|
26
|
+
defaultKeys: ["end", "ctrl+e"],
|
|
27
|
+
description: "Move to line end",
|
|
28
|
+
},
|
|
29
|
+
"tui.editor.jumpForward": {
|
|
30
|
+
defaultKeys: "ctrl+]",
|
|
31
|
+
description: "Jump forward to character",
|
|
32
|
+
},
|
|
33
|
+
"tui.editor.jumpBackward": {
|
|
34
|
+
defaultKeys: "ctrl+alt+]",
|
|
35
|
+
description: "Jump backward to character",
|
|
36
|
+
},
|
|
37
|
+
"tui.editor.pageUp": { defaultKeys: "pageUp", description: "Page up" },
|
|
38
|
+
"tui.editor.pageDown": { defaultKeys: "pageDown", description: "Page down" },
|
|
115
39
|
"tui.editor.deleteCharBackward": {
|
|
116
|
-
defaultKeys:
|
|
40
|
+
defaultKeys: "backspace",
|
|
117
41
|
description: "Delete character backward",
|
|
118
42
|
},
|
|
119
43
|
"tui.editor.deleteCharForward": {
|
|
120
|
-
defaultKeys:
|
|
44
|
+
defaultKeys: ["delete", "ctrl+d"],
|
|
121
45
|
description: "Delete character forward",
|
|
122
46
|
},
|
|
123
|
-
"tui.editor.deleteToLineEnd": {
|
|
124
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.deleteToLineEnd,
|
|
125
|
-
description: "Delete to line end",
|
|
126
|
-
},
|
|
127
|
-
"tui.editor.deleteToLineStart": {
|
|
128
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.deleteToLineStart,
|
|
129
|
-
description: "Delete to line start",
|
|
130
|
-
},
|
|
131
47
|
"tui.editor.deleteWordBackward": {
|
|
132
|
-
defaultKeys:
|
|
48
|
+
defaultKeys: ["ctrl+w", "alt+backspace"],
|
|
133
49
|
description: "Delete word backward",
|
|
134
50
|
},
|
|
135
51
|
"tui.editor.deleteWordForward": {
|
|
136
|
-
defaultKeys:
|
|
52
|
+
defaultKeys: ["alt+d", "alt+delete"],
|
|
137
53
|
description: "Delete word forward",
|
|
138
54
|
},
|
|
139
|
-
"tui.editor.
|
|
140
|
-
defaultKeys:
|
|
141
|
-
description: "
|
|
142
|
-
},
|
|
143
|
-
"tui.editor.jumpForward": {
|
|
144
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.jumpForward,
|
|
145
|
-
description: "Jump forward to character",
|
|
146
|
-
},
|
|
147
|
-
"tui.editor.pageDown": {
|
|
148
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.pageDown,
|
|
149
|
-
description: "Page down",
|
|
150
|
-
},
|
|
151
|
-
"tui.editor.pageUp": {
|
|
152
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.pageUp,
|
|
153
|
-
description: "Page up",
|
|
154
|
-
},
|
|
155
|
-
"tui.editor.undo": {
|
|
156
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.undo,
|
|
157
|
-
description: "Undo",
|
|
158
|
-
},
|
|
159
|
-
"tui.editor.yank": {
|
|
160
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.yank,
|
|
161
|
-
description: "Yank",
|
|
162
|
-
},
|
|
163
|
-
"tui.editor.yankPop": {
|
|
164
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.yankPop,
|
|
165
|
-
description: "Yank pop",
|
|
166
|
-
},
|
|
167
|
-
"tui.input.copy": {
|
|
168
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.copy,
|
|
169
|
-
description: "Copy selection",
|
|
170
|
-
},
|
|
171
|
-
"tui.input.newLine": {
|
|
172
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.newLine,
|
|
173
|
-
description: "Insert newline",
|
|
174
|
-
},
|
|
175
|
-
"tui.input.submit": {
|
|
176
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.submit,
|
|
177
|
-
description: "Submit input",
|
|
178
|
-
},
|
|
179
|
-
"tui.input.tab": {
|
|
180
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.tab,
|
|
181
|
-
description: "Tab / autocomplete",
|
|
182
|
-
},
|
|
183
|
-
"tui.select.cancel": {
|
|
184
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.selectCancel,
|
|
185
|
-
description: "Cancel selection",
|
|
186
|
-
},
|
|
187
|
-
"tui.select.confirm": {
|
|
188
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.selectConfirm,
|
|
189
|
-
description: "Confirm selection",
|
|
55
|
+
"tui.editor.deleteToLineStart": {
|
|
56
|
+
defaultKeys: "ctrl+u",
|
|
57
|
+
description: "Delete to line start",
|
|
190
58
|
},
|
|
191
|
-
"tui.
|
|
192
|
-
defaultKeys:
|
|
193
|
-
description: "
|
|
59
|
+
"tui.editor.deleteToLineEnd": {
|
|
60
|
+
defaultKeys: "ctrl+k",
|
|
61
|
+
description: "Delete to line end",
|
|
194
62
|
},
|
|
63
|
+
"tui.editor.yank": { defaultKeys: "ctrl+y", description: "Yank" },
|
|
64
|
+
"tui.editor.yankPop": { defaultKeys: "alt+y", description: "Yank pop" },
|
|
65
|
+
"tui.editor.undo": { defaultKeys: "ctrl+-", description: "Undo" },
|
|
66
|
+
"tui.input.newLine": { defaultKeys: "shift+enter", description: "Insert newline" },
|
|
67
|
+
"tui.input.submit": { defaultKeys: "enter", description: "Submit input" },
|
|
68
|
+
"tui.input.tab": { defaultKeys: "tab", description: "Tab / autocomplete" },
|
|
69
|
+
"tui.input.copy": { defaultKeys: "ctrl+c", description: "Copy selection" },
|
|
70
|
+
"tui.select.up": { defaultKeys: "up", description: "Move selection up" },
|
|
71
|
+
"tui.select.down": { defaultKeys: "down", description: "Move selection down" },
|
|
72
|
+
"tui.select.pageUp": { defaultKeys: "pageUp", description: "Selection page up" },
|
|
195
73
|
"tui.select.pageDown": {
|
|
196
|
-
defaultKeys:
|
|
74
|
+
defaultKeys: "pageDown",
|
|
197
75
|
description: "Selection page down",
|
|
198
76
|
},
|
|
199
|
-
"tui.select.
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
"tui.select.up": {
|
|
204
|
-
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.selectUp,
|
|
205
|
-
description: "Move selection up",
|
|
77
|
+
"tui.select.confirm": { defaultKeys: "enter", description: "Confirm selection" },
|
|
78
|
+
"tui.select.cancel": {
|
|
79
|
+
defaultKeys: ["escape", "ctrl+c"],
|
|
80
|
+
description: "Cancel selection",
|
|
206
81
|
},
|
|
207
82
|
};
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
* Only checks TUI_KEYBINDINGS and legacy mappings. For consumer-defined
|
|
220
|
-
* keybindings (e.g. app.*), use {@link KeybindingsManager.resolveKeybinding}.
|
|
221
|
-
*
|
|
222
|
-
* @param {Keybinding} keybinding - Keybinding identifier to normalize.
|
|
223
|
-
* @returns {ModernKeybinding | null} Modern keybinding or null when unsupported.
|
|
224
|
-
*/
|
|
225
|
-
function normalizeKeybinding(keybinding) {
|
|
226
|
-
if (isModernKeybinding(keybinding)) {
|
|
227
|
-
return keybinding;
|
|
228
|
-
}
|
|
229
|
-
const normalized = LEGACY_TO_MODERN_KEYBINDINGS[keybinding];
|
|
230
|
-
return normalized && isModernKeybinding(normalized) ? normalized : null;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Convert a raw keybinding value into an array form.
|
|
234
|
-
*
|
|
235
|
-
* @param {KeyId | readonly KeyId[]} value - Raw keybinding value.
|
|
236
|
-
* @returns {readonly KeyId[]} Normalized key array.
|
|
237
|
-
*/
|
|
238
|
-
function normalizeKeyArray(value) {
|
|
239
|
-
return Array.isArray(value) ? [...value] : [value];
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Normalize user bindings to modern identifiers and array values.
|
|
243
|
-
*
|
|
244
|
-
* @param {KeybindingsConfig} userBindings - Raw user bindings.
|
|
245
|
-
* @returns {NormalizedKeybindingsConfig} Normalized modern binding map.
|
|
246
|
-
*/
|
|
247
|
-
function _normalizeUserBindings(userBindings) {
|
|
248
|
-
const normalized = {};
|
|
249
|
-
for (const [rawKey, rawValue] of Object.entries(userBindings)) {
|
|
250
|
-
if (rawValue === undefined)
|
|
251
|
-
continue;
|
|
252
|
-
const key = rawKey;
|
|
253
|
-
const modernKey = normalizeKeybinding(key);
|
|
254
|
-
if (!modernKey)
|
|
255
|
-
continue;
|
|
256
|
-
if (key !== modernKey && userBindings[modernKey] !== undefined)
|
|
257
|
-
continue;
|
|
258
|
-
normalized[modernKey] = [...normalizeKeyArray(rawValue)];
|
|
83
|
+
function normalizeKeys(keys) {
|
|
84
|
+
if (keys === undefined)
|
|
85
|
+
return [];
|
|
86
|
+
const keyList = Array.isArray(keys) ? keys : [keys];
|
|
87
|
+
const seen = new Set();
|
|
88
|
+
const result = [];
|
|
89
|
+
for (const key of keyList) {
|
|
90
|
+
if (!seen.has(key)) {
|
|
91
|
+
seen.add(key);
|
|
92
|
+
result.push(key);
|
|
93
|
+
}
|
|
259
94
|
}
|
|
260
|
-
return
|
|
95
|
+
return result;
|
|
261
96
|
}
|
|
262
|
-
/**
|
|
263
|
-
* Keybinding manager compatible with pi-tui 0.61+ while preserving legacy names.
|
|
264
|
-
*/
|
|
265
97
|
export class KeybindingsManager {
|
|
266
98
|
definitions;
|
|
267
|
-
resolvedKeys = new Map();
|
|
268
99
|
userBindings;
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
* @param {Readonly<Record<ModernKeybinding, KeybindingDefinition>>} definitions - Keybinding definitions.
|
|
273
|
-
* @param {KeybindingsConfig} userBindings - Optional user overrides.
|
|
274
|
-
*/
|
|
275
|
-
constructor(definitions = TUI_KEYBINDINGS, userBindings = {}) {
|
|
100
|
+
keysById = new Map();
|
|
101
|
+
conflicts = [];
|
|
102
|
+
constructor(definitions, userBindings = {}) {
|
|
276
103
|
this.definitions = definitions;
|
|
277
|
-
this.userBindings =
|
|
104
|
+
this.userBindings = userBindings;
|
|
278
105
|
this.rebuild();
|
|
279
106
|
}
|
|
280
|
-
/**
|
|
281
|
-
* Rebuild resolved bindings from defaults plus user overrides.
|
|
282
|
-
*
|
|
283
|
-
* @returns {void} Nothing.
|
|
284
|
-
*/
|
|
285
107
|
rebuild() {
|
|
286
|
-
this.
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
108
|
+
this.keysById.clear();
|
|
109
|
+
this.conflicts = [];
|
|
110
|
+
const userClaims = new Map();
|
|
111
|
+
for (const [keybinding, keys] of Object.entries(this.userBindings)) {
|
|
112
|
+
if (!(keybinding in this.definitions))
|
|
113
|
+
continue;
|
|
114
|
+
for (const key of normalizeKeys(keys)) {
|
|
115
|
+
const claimants = userClaims.get(key) ?? new Set();
|
|
116
|
+
claimants.add(keybinding);
|
|
117
|
+
userClaims.set(key, claimants);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
for (const [key, keybindings] of userClaims) {
|
|
121
|
+
if (keybindings.size > 1) {
|
|
122
|
+
this.conflicts.push({ key, keybindings: [...keybindings] });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
for (const [id, definition] of Object.entries(this.definitions)) {
|
|
126
|
+
const userKeys = this.userBindings[id];
|
|
127
|
+
const keys = userKeys === undefined ? normalizeKeys(definition.defaultKeys) : normalizeKeys(userKeys);
|
|
128
|
+
this.keysById.set(id, keys);
|
|
292
129
|
}
|
|
293
130
|
}
|
|
294
|
-
/**
|
|
295
|
-
* Resolve a keybinding name to its lookup key in resolvedKeys.
|
|
296
|
-
* Checks the TUI namespace and legacy names first, then falls back to
|
|
297
|
-
* a direct lookup in definitions/resolvedKeys for consumer-defined
|
|
298
|
-
* keybindings (e.g. app.* keybindings registered by pi-coding-agent).
|
|
299
|
-
*
|
|
300
|
-
* @param {string} keybinding - Keybinding identifier.
|
|
301
|
-
* @returns {ModernKeybinding | null} Resolved key or null when unknown.
|
|
302
|
-
*/
|
|
303
|
-
resolveKeybinding(keybinding) {
|
|
304
|
-
const normalized = normalizeKeybinding(keybinding);
|
|
305
|
-
if (normalized)
|
|
306
|
-
return normalized;
|
|
307
|
-
// Fall back to direct lookup for keybindings registered via definitions
|
|
308
|
-
// but outside the tui.* namespace (e.g. app.interrupt, app.clear).
|
|
309
|
-
// Check definitions first (available at construction) then resolvedKeys.
|
|
310
|
-
const asKey = keybinding;
|
|
311
|
-
return asKey in this.definitions || this.resolvedKeys.has(asKey) ? asKey : null;
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Check whether input matches a keybinding.
|
|
315
|
-
*
|
|
316
|
-
* @param {string} data - Raw terminal input.
|
|
317
|
-
* @param {Keybinding | string} keybinding - Keybinding identifier.
|
|
318
|
-
* @returns {boolean} True when the input matches.
|
|
319
|
-
*/
|
|
320
131
|
matches(data, keybinding) {
|
|
321
|
-
const
|
|
322
|
-
|
|
323
|
-
return false;
|
|
324
|
-
for (const key of this.resolvedKeys.get(resolved) ?? []) {
|
|
132
|
+
const keys = this.keysById.get(keybinding) ?? [];
|
|
133
|
+
for (const key of keys) {
|
|
325
134
|
if (matchesKey(data, key))
|
|
326
135
|
return true;
|
|
327
136
|
}
|
|
328
137
|
return false;
|
|
329
138
|
}
|
|
330
|
-
/**
|
|
331
|
-
* Get the keys currently bound to a keybinding.
|
|
332
|
-
*
|
|
333
|
-
* @param {Keybinding | string} keybinding - Keybinding identifier.
|
|
334
|
-
* @returns {KeyId[]} Resolved key list.
|
|
335
|
-
*/
|
|
336
139
|
getKeys(keybinding) {
|
|
337
|
-
|
|
338
|
-
|
|
140
|
+
return [...(this.keysById.get(keybinding) ?? [])];
|
|
141
|
+
}
|
|
142
|
+
getDefinition(keybinding) {
|
|
143
|
+
return this.definitions[keybinding];
|
|
144
|
+
}
|
|
145
|
+
getConflicts() {
|
|
146
|
+
return this.conflicts.map((conflict) => ({
|
|
147
|
+
...conflict,
|
|
148
|
+
keybindings: [...conflict.keybindings],
|
|
149
|
+
}));
|
|
339
150
|
}
|
|
340
|
-
/**
|
|
341
|
-
* Replace user bindings and rebuild the resolved map.
|
|
342
|
-
*
|
|
343
|
-
* @param {KeybindingsConfig} userBindings - New user bindings.
|
|
344
|
-
* @returns {void} Nothing.
|
|
345
|
-
*/
|
|
346
151
|
setUserBindings(userBindings) {
|
|
347
|
-
this.userBindings =
|
|
152
|
+
this.userBindings = userBindings;
|
|
348
153
|
this.rebuild();
|
|
349
154
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
* This extends the module-level normalizeUserBindings to also accept
|
|
353
|
-
* keybinding names that exist in this.definitions (e.g. app.*).
|
|
354
|
-
*
|
|
355
|
-
* @param {KeybindingsConfig} userBindings - Raw user bindings.
|
|
356
|
-
* @returns {NormalizedKeybindingsConfig} Normalized modern binding map.
|
|
357
|
-
*/
|
|
358
|
-
normalizeUserBindingsWithDefinitions(userBindings) {
|
|
359
|
-
const normalized = {};
|
|
360
|
-
for (const [rawKey, rawValue] of Object.entries(userBindings)) {
|
|
361
|
-
if (rawValue === undefined)
|
|
362
|
-
continue;
|
|
363
|
-
const resolved = this.resolveKeybinding(rawKey);
|
|
364
|
-
if (!resolved)
|
|
365
|
-
continue;
|
|
366
|
-
if (rawKey !== resolved && userBindings[resolved] !== undefined)
|
|
367
|
-
continue;
|
|
368
|
-
normalized[resolved] = [...normalizeKeyArray(rawValue)];
|
|
369
|
-
}
|
|
370
|
-
return normalized;
|
|
155
|
+
getUserBindings() {
|
|
156
|
+
return { ...this.userBindings };
|
|
371
157
|
}
|
|
372
|
-
/**
|
|
373
|
-
* Get the fully resolved modern keybinding config.
|
|
374
|
-
*
|
|
375
|
-
* @returns {NormalizedKeybindingsConfig} Resolved keybinding config.
|
|
376
|
-
*/
|
|
377
158
|
getResolvedBindings() {
|
|
378
159
|
const resolved = {};
|
|
379
|
-
for (const
|
|
380
|
-
|
|
160
|
+
for (const id of Object.keys(this.definitions)) {
|
|
161
|
+
const keys = this.keysById.get(id) ?? [];
|
|
162
|
+
resolved[id] = keys.length === 1 ? keys[0] : [...keys];
|
|
381
163
|
}
|
|
382
164
|
return resolved;
|
|
383
165
|
}
|
|
384
166
|
}
|
|
385
|
-
/** Backward-compatible alias for legacy callers. */
|
|
386
|
-
export class EditorKeybindingsManager extends KeybindingsManager {
|
|
387
|
-
/**
|
|
388
|
-
* Create a legacy editor keybindings manager.
|
|
389
|
-
*
|
|
390
|
-
* @param {EditorKeybindingsConfig} config - Legacy editor keybinding overrides.
|
|
391
|
-
*/
|
|
392
|
-
constructor(config = {}) {
|
|
393
|
-
super(TUI_KEYBINDINGS, config);
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
167
|
let globalKeybindings = null;
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
* @returns {KeybindingsManager} Shared keybindings manager.
|
|
401
|
-
*/
|
|
168
|
+
export function setKeybindings(keybindings) {
|
|
169
|
+
globalKeybindings = keybindings;
|
|
170
|
+
}
|
|
402
171
|
export function getKeybindings() {
|
|
403
172
|
if (!globalKeybindings) {
|
|
404
|
-
globalKeybindings = new
|
|
173
|
+
globalKeybindings = new KeybindingsManager(TUI_KEYBINDINGS);
|
|
405
174
|
}
|
|
406
175
|
return globalKeybindings;
|
|
407
176
|
}
|
|
408
|
-
/**
|
|
409
|
-
* Replace the shared keybindings manager.
|
|
410
|
-
*
|
|
411
|
-
* @param {KeybindingsManager} manager - Keybindings manager to install.
|
|
412
|
-
* @returns {void} Nothing.
|
|
413
|
-
*/
|
|
414
|
-
export function setKeybindings(manager) {
|
|
415
|
-
globalKeybindings = manager;
|
|
416
|
-
}
|
|
417
|
-
/**
|
|
418
|
-
* Get the shared legacy editor keybindings manager.
|
|
419
|
-
*
|
|
420
|
-
* @returns {EditorKeybindingsManager} Shared legacy-compatible manager.
|
|
421
|
-
*/
|
|
422
|
-
export function getEditorKeybindings() {
|
|
423
|
-
return getKeybindings();
|
|
424
|
-
}
|
|
425
|
-
/**
|
|
426
|
-
* Replace the shared legacy editor keybindings manager.
|
|
427
|
-
*
|
|
428
|
-
* @param {EditorKeybindingsManager} manager - Legacy keybindings manager.
|
|
429
|
-
* @returns {void} Nothing.
|
|
430
|
-
*/
|
|
431
|
-
export function setEditorKeybindings(manager) {
|
|
432
|
-
setKeybindings(manager);
|
|
433
|
-
}
|
|
434
177
|
//# sourceMappingURL=keybindings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keybindings.js","sourceRoot":"","sources":["../src/keybindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"keybindings.js","sourceRoot":"","sources":["../src/keybindings.ts"],"names":[],"mappings":"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"}
|