@dungle-scrubs/tallow 0.8.27 → 0.9.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/README.md +42 -1
- package/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +2 -9
- package/dist/install.js.map +1 -1
- package/dist/interactive-mode-patch.d.ts.map +1 -1
- package/dist/interactive-mode-patch.js +20 -9
- package/dist/interactive-mode-patch.js.map +1 -1
- package/dist/model-metadata-overrides.d.ts +2 -5
- package/dist/model-metadata-overrides.d.ts.map +1 -1
- package/dist/model-metadata-overrides.js +23 -12
- package/dist/model-metadata-overrides.js.map +1 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +20 -9
- package/dist/sdk.js.map +1 -1
- package/dist/workspace-transition-interactive.d.ts.map +1 -1
- package/dist/workspace-transition-interactive.js +53 -3
- package/dist/workspace-transition-interactive.js.map +1 -1
- package/dist/workspace-transition.d.ts +2 -1
- package/dist/workspace-transition.d.ts.map +1 -1
- package/dist/workspace-transition.js +16 -4
- package/dist/workspace-transition.js.map +1 -1
- package/extensions/__integration__/cd-tool-guidelines.test.ts +46 -0
- package/extensions/__integration__/welcome-screen.test.ts +240 -0
- package/extensions/_icons/__tests__/icons.test.ts +0 -1
- package/extensions/_icons/index.ts +0 -2
- package/extensions/_shared/pid-registry.ts +5 -5
- package/extensions/background-task-tool/index.ts +1 -1
- package/extensions/cd-tool/index.ts +4 -1
- package/extensions/context-fork/__tests__/context-fork.test.ts +9 -0
- package/extensions/edit-tool-enhanced/index.ts +3 -1
- package/extensions/health/__tests__/diagnostics.test.ts +25 -0
- package/extensions/health/index.ts +62 -1
- package/extensions/loop/__tests__/loop.test.ts +365 -1
- package/extensions/loop/index.ts +213 -3
- package/extensions/prompt-suggestions/__tests__/autocomplete.test.ts +111 -3
- package/extensions/prompt-suggestions/autocomplete.ts +23 -5
- package/extensions/prompt-suggestions/index.ts +62 -3
- package/extensions/read-tool-enhanced/index.ts +5 -1
- package/extensions/render-stabilizer/__tests__/render-stabilizer.test.ts +42 -0
- package/extensions/render-stabilizer/extension.json +5 -0
- package/extensions/render-stabilizer/index.ts +66 -0
- package/extensions/session-memory/index.ts +1 -1
- package/extensions/session-namer/index.ts +1 -1
- package/extensions/subagent-tool/__tests__/auto-cheap-model.test.ts +66 -6
- package/extensions/subagent-tool/__tests__/model-router-explicit-resolution.test.ts +79 -5
- package/extensions/subagent-tool/__tests__/presentation-rendering.test.ts +4 -4
- package/extensions/subagent-tool/index.ts +4 -2
- package/extensions/subagent-tool/process.ts +26 -8
- package/extensions/teams-tool/sessions/spawn.ts +2 -2
- package/extensions/welcome-screen/__tests__/welcome-screen.test.ts +35 -0
- package/extensions/welcome-screen/extension.json +20 -0
- package/extensions/welcome-screen/index.ts +189 -0
- package/node_modules/@mariozechner/pi-tui/dist/index.d.ts +2 -2
- package/node_modules/@mariozechner/pi-tui/dist/index.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/index.js +2 -2
- package/node_modules/@mariozechner/pi-tui/dist/index.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/keybindings.d.ts +309 -25
- package/node_modules/@mariozechner/pi-tui/dist/keybindings.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/keybindings.js +392 -72
- package/node_modules/@mariozechner/pi-tui/dist/keybindings.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/keys.d.ts +30 -0
- package/node_modules/@mariozechner/pi-tui/dist/keys.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/keys.js +50 -6
- package/node_modules/@mariozechner/pi-tui/dist/keys.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/terminal.d.ts +27 -0
- package/node_modules/@mariozechner/pi-tui/dist/terminal.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/terminal.js +59 -4
- package/node_modules/@mariozechner/pi-tui/dist/terminal.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/tui.d.ts +56 -0
- package/node_modules/@mariozechner/pi-tui/dist/tui.d.ts.map +1 -1
- package/node_modules/@mariozechner/pi-tui/dist/tui.js +188 -5
- package/node_modules/@mariozechner/pi-tui/dist/tui.js.map +1 -1
- package/node_modules/@mariozechner/pi-tui/package.json +1 -1
- package/node_modules/@mariozechner/pi-tui/src/__tests__/mouse-events.test.ts +134 -0
- package/node_modules/@mariozechner/pi-tui/src/__tests__/tmux-compat.test.ts +204 -0
- package/node_modules/@mariozechner/pi-tui/src/__tests__/tui-diff-regression.test.ts +49 -0
- package/node_modules/@mariozechner/pi-tui/src/__tests__/tui-render-scheduling.test.ts +2 -0
- package/node_modules/@mariozechner/pi-tui/src/index.ts +11 -0
- package/node_modules/@mariozechner/pi-tui/src/keybindings.ts +478 -140
- package/node_modules/@mariozechner/pi-tui/src/keys.ts +84 -6
- package/node_modules/@mariozechner/pi-tui/src/terminal.ts +69 -4
- package/node_modules/@mariozechner/pi-tui/src/tui.ts +205 -5
- package/package.json +9 -9
- package/runtime/config.ts +7 -0
- package/runtime/model-metadata-overrides.ts +7 -0
- package/schemas/settings.schema.json +0 -5
- package/skills/tallow-expert/SKILL.md +6 -4
- package/extensions/plan-mode-tool/__tests__/e2e.mjs +0 -350
- package/extensions/plan-mode-tool/__tests__/index.test.ts +0 -213
- package/extensions/plan-mode-tool/__tests__/utils.test.ts +0 -381
- package/extensions/plan-mode-tool/extension.json +0 -22
- package/extensions/plan-mode-tool/index.ts +0 -583
- package/extensions/plan-mode-tool/utils.ts +0 -257
|
@@ -1,114 +1,434 @@
|
|
|
1
1
|
import { matchesKey } from "./keys.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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. */
|
|
5
42
|
export const DEFAULT_EDITOR_KEYBINDINGS = {
|
|
6
|
-
|
|
7
|
-
cursorUp: "up",
|
|
43
|
+
copy: "ctrl+shift+c",
|
|
8
44
|
cursorDown: "down",
|
|
9
45
|
cursorLeft: ["left", "ctrl+b"],
|
|
46
|
+
cursorLineEnd: ["end", "ctrl+e"],
|
|
47
|
+
cursorLineStart: ["home", "ctrl+a"],
|
|
10
48
|
cursorRight: ["right", "ctrl+f"],
|
|
49
|
+
cursorUp: "up",
|
|
11
50
|
cursorWordLeft: ["alt+left", "ctrl+left", "alt+b"],
|
|
12
51
|
cursorWordRight: ["alt+right", "ctrl+right", "alt+f"],
|
|
13
|
-
cursorLineStart: ["home", "ctrl+a"],
|
|
14
|
-
cursorLineEnd: ["end", "ctrl+e"],
|
|
15
|
-
jumpForward: "ctrl+]",
|
|
16
|
-
jumpBackward: "ctrl+alt+]",
|
|
17
|
-
pageUp: "pageUp",
|
|
18
|
-
pageDown: "pageDown",
|
|
19
|
-
// Deletion
|
|
20
52
|
deleteCharBackward: "backspace",
|
|
21
53
|
deleteCharForward: ["delete", "ctrl+d"],
|
|
54
|
+
deleteSession: "ctrl+d",
|
|
55
|
+
deleteSessionNoninvasive: "ctrl+backspace",
|
|
56
|
+
deleteToLineEnd: "ctrl+k",
|
|
57
|
+
deleteToLineStart: "ctrl+u",
|
|
22
58
|
deleteWordBackward: ["ctrl+w", "alt+backspace"],
|
|
23
59
|
deleteWordForward: ["alt+d", "alt+delete"],
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
60
|
+
expandTools: "ctrl+o",
|
|
61
|
+
jumpBackward: "ctrl+alt+]",
|
|
62
|
+
jumpForward: "ctrl+]",
|
|
27
63
|
newLine: "shift+enter",
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
64
|
+
pageDown: "pageDown",
|
|
65
|
+
pageUp: "pageUp",
|
|
66
|
+
renameSession: "ctrl+r",
|
|
67
|
+
selectCancel: ["escape", "ctrl+c"],
|
|
68
|
+
selectConfirm: "enter",
|
|
32
69
|
selectDown: "down",
|
|
33
|
-
selectPageUp: "pageUp",
|
|
34
70
|
selectPageDown: "pageDown",
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
// Kill ring
|
|
40
|
-
yank: "ctrl+y",
|
|
41
|
-
yankPop: "alt+y",
|
|
42
|
-
// Undo
|
|
43
|
-
undo: "ctrl+-",
|
|
44
|
-
// Tool output
|
|
45
|
-
expandTools: "ctrl+o",
|
|
46
|
-
// Session
|
|
71
|
+
selectPageUp: "pageUp",
|
|
72
|
+
selectUp: "up",
|
|
73
|
+
submit: "enter",
|
|
74
|
+
tab: "tab",
|
|
47
75
|
toggleSessionPath: "ctrl+p",
|
|
48
76
|
toggleSessionSort: "ctrl+s",
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
+
export const TUI_KEYBINDINGS = {
|
|
83
|
+
"tui.editor.cursorDown": {
|
|
84
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.cursorDown,
|
|
85
|
+
description: "Move cursor down",
|
|
86
|
+
},
|
|
87
|
+
"tui.editor.cursorLeft": {
|
|
88
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.cursorLeft,
|
|
89
|
+
description: "Move cursor left",
|
|
90
|
+
},
|
|
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
|
+
"tui.editor.cursorRight": {
|
|
100
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.cursorRight,
|
|
101
|
+
description: "Move cursor right",
|
|
102
|
+
},
|
|
103
|
+
"tui.editor.cursorUp": {
|
|
104
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.cursorUp,
|
|
105
|
+
description: "Move cursor up",
|
|
106
|
+
},
|
|
107
|
+
"tui.editor.cursorWordLeft": {
|
|
108
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.cursorWordLeft,
|
|
109
|
+
description: "Move cursor word left",
|
|
110
|
+
},
|
|
111
|
+
"tui.editor.cursorWordRight": {
|
|
112
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.cursorWordRight,
|
|
113
|
+
description: "Move cursor word right",
|
|
114
|
+
},
|
|
115
|
+
"tui.editor.deleteCharBackward": {
|
|
116
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.deleteCharBackward,
|
|
117
|
+
description: "Delete character backward",
|
|
118
|
+
},
|
|
119
|
+
"tui.editor.deleteCharForward": {
|
|
120
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.deleteCharForward,
|
|
121
|
+
description: "Delete character forward",
|
|
122
|
+
},
|
|
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
|
+
"tui.editor.deleteWordBackward": {
|
|
132
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.deleteWordBackward,
|
|
133
|
+
description: "Delete word backward",
|
|
134
|
+
},
|
|
135
|
+
"tui.editor.deleteWordForward": {
|
|
136
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.deleteWordForward,
|
|
137
|
+
description: "Delete word forward",
|
|
138
|
+
},
|
|
139
|
+
"tui.editor.jumpBackward": {
|
|
140
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.jumpBackward,
|
|
141
|
+
description: "Jump backward to character",
|
|
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",
|
|
190
|
+
},
|
|
191
|
+
"tui.select.down": {
|
|
192
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.selectDown,
|
|
193
|
+
description: "Move selection down",
|
|
194
|
+
},
|
|
195
|
+
"tui.select.pageDown": {
|
|
196
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.selectPageDown,
|
|
197
|
+
description: "Selection page down",
|
|
198
|
+
},
|
|
199
|
+
"tui.select.pageUp": {
|
|
200
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.selectPageUp,
|
|
201
|
+
description: "Selection page up",
|
|
202
|
+
},
|
|
203
|
+
"tui.select.up": {
|
|
204
|
+
defaultKeys: DEFAULT_EDITOR_KEYBINDINGS.selectUp,
|
|
205
|
+
description: "Move selection up",
|
|
206
|
+
},
|
|
52
207
|
};
|
|
53
208
|
/**
|
|
54
|
-
*
|
|
209
|
+
* Check whether a keybinding name is a supported modern identifier.
|
|
210
|
+
*
|
|
211
|
+
* @param {string} keybinding - Candidate keybinding name.
|
|
212
|
+
* @returns {keybinding is ModernKeybinding} True when the keybinding exists.
|
|
55
213
|
*/
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
214
|
+
function isModernKeybinding(keybinding) {
|
|
215
|
+
return keybinding in TUI_KEYBINDINGS;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Normalize a legacy or modern keybinding identifier to the modern name.
|
|
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;
|
|
61
228
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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)];
|
|
259
|
+
}
|
|
260
|
+
return normalized;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Keybinding manager compatible with pi-tui 0.61+ while preserving legacy names.
|
|
264
|
+
*/
|
|
265
|
+
export class KeybindingsManager {
|
|
266
|
+
definitions;
|
|
267
|
+
resolvedKeys = new Map();
|
|
268
|
+
userBindings;
|
|
269
|
+
/**
|
|
270
|
+
* Create a keybindings manager.
|
|
271
|
+
*
|
|
272
|
+
* @param {Readonly<Record<ModernKeybinding, KeybindingDefinition>>} definitions - Keybinding definitions.
|
|
273
|
+
* @param {KeybindingsConfig} userBindings - Optional user overrides.
|
|
274
|
+
*/
|
|
275
|
+
constructor(definitions = TUI_KEYBINDINGS, userBindings = {}) {
|
|
276
|
+
this.definitions = definitions;
|
|
277
|
+
this.userBindings = this.normalizeUserBindingsWithDefinitions(userBindings);
|
|
278
|
+
this.rebuild();
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Rebuild resolved bindings from defaults plus user overrides.
|
|
282
|
+
*
|
|
283
|
+
* @returns {void} Nothing.
|
|
284
|
+
*/
|
|
285
|
+
rebuild() {
|
|
286
|
+
this.resolvedKeys.clear();
|
|
287
|
+
for (const [keybinding, definition] of Object.entries(this.definitions)) {
|
|
288
|
+
const modernKey = keybinding;
|
|
289
|
+
const override = this.userBindings[modernKey];
|
|
290
|
+
const keys = override ?? normalizeKeyArray(definition.defaultKeys);
|
|
291
|
+
this.resolvedKeys.set(modernKey, [...keys]);
|
|
75
292
|
}
|
|
76
293
|
}
|
|
77
294
|
/**
|
|
78
|
-
*
|
|
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.
|
|
79
302
|
*/
|
|
80
|
-
|
|
81
|
-
const
|
|
82
|
-
if (
|
|
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
|
+
matches(data, keybinding) {
|
|
321
|
+
const resolved = this.resolveKeybinding(keybinding);
|
|
322
|
+
if (!resolved)
|
|
83
323
|
return false;
|
|
84
|
-
for (const key of
|
|
324
|
+
for (const key of this.resolvedKeys.get(resolved) ?? []) {
|
|
85
325
|
if (matchesKey(data, key))
|
|
86
326
|
return true;
|
|
87
327
|
}
|
|
88
328
|
return false;
|
|
89
329
|
}
|
|
90
330
|
/**
|
|
91
|
-
* Get keys bound to
|
|
331
|
+
* Get the keys currently bound to a keybinding.
|
|
332
|
+
*
|
|
333
|
+
* @param {Keybinding | string} keybinding - Keybinding identifier.
|
|
334
|
+
* @returns {KeyId[]} Resolved key list.
|
|
92
335
|
*/
|
|
93
|
-
getKeys(
|
|
94
|
-
|
|
336
|
+
getKeys(keybinding) {
|
|
337
|
+
const resolved = this.resolveKeybinding(keybinding);
|
|
338
|
+
return resolved ? [...(this.resolvedKeys.get(resolved) ?? [])] : [];
|
|
95
339
|
}
|
|
96
340
|
/**
|
|
97
|
-
*
|
|
341
|
+
* Replace user bindings and rebuild the resolved map.
|
|
342
|
+
*
|
|
343
|
+
* @param {KeybindingsConfig} userBindings - New user bindings.
|
|
344
|
+
* @returns {void} Nothing.
|
|
98
345
|
*/
|
|
99
|
-
|
|
100
|
-
this.
|
|
346
|
+
setUserBindings(userBindings) {
|
|
347
|
+
this.userBindings = this.normalizeUserBindingsWithDefinitions(userBindings);
|
|
348
|
+
this.rebuild();
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Normalize user bindings using both TUI namespace and consumer definitions.
|
|
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;
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Get the fully resolved modern keybinding config.
|
|
374
|
+
*
|
|
375
|
+
* @returns {NormalizedKeybindingsConfig} Resolved keybinding config.
|
|
376
|
+
*/
|
|
377
|
+
getResolvedBindings() {
|
|
378
|
+
const resolved = {};
|
|
379
|
+
for (const [keybinding, keys] of this.resolvedKeys.entries()) {
|
|
380
|
+
resolved[keybinding] = [...keys];
|
|
381
|
+
}
|
|
382
|
+
return resolved;
|
|
101
383
|
}
|
|
102
384
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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);
|
|
108
394
|
}
|
|
109
|
-
return globalEditorKeybindings;
|
|
110
395
|
}
|
|
396
|
+
let globalKeybindings = null;
|
|
397
|
+
/**
|
|
398
|
+
* Get the shared keybindings manager.
|
|
399
|
+
*
|
|
400
|
+
* @returns {KeybindingsManager} Shared keybindings manager.
|
|
401
|
+
*/
|
|
402
|
+
export function getKeybindings() {
|
|
403
|
+
if (!globalKeybindings) {
|
|
404
|
+
globalKeybindings = new EditorKeybindingsManager();
|
|
405
|
+
}
|
|
406
|
+
return globalKeybindings;
|
|
407
|
+
}
|
|
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
|
+
*/
|
|
111
431
|
export function setEditorKeybindings(manager) {
|
|
112
|
-
|
|
432
|
+
setKeybindings(manager);
|
|
113
433
|
}
|
|
114
434
|
//# 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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"}
|
|
@@ -164,5 +164,35 @@ export declare function matchesKey(data: string, keyId: KeyId): boolean;
|
|
|
164
164
|
* @returns Key identifier string (e.g., "ctrl+c") or undefined
|
|
165
165
|
*/
|
|
166
166
|
export declare function parseKey(data: string): string | undefined;
|
|
167
|
+
/**
|
|
168
|
+
* Parsed mouse event from SGR extended format.
|
|
169
|
+
* SGR format: \x1b[<button;column;row[Mm]
|
|
170
|
+
* M = press, m = release
|
|
171
|
+
*/
|
|
172
|
+
export interface MouseEvent {
|
|
173
|
+
/** Event type */
|
|
174
|
+
type: "scroll-up" | "scroll-down" | "press" | "release" | "drag";
|
|
175
|
+
/** 0=left, 1=middle, 2=right */
|
|
176
|
+
button: number;
|
|
177
|
+
/** 1-indexed column */
|
|
178
|
+
x: number;
|
|
179
|
+
/** 1-indexed row */
|
|
180
|
+
y: number;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Parse an SGR mouse event from raw terminal input.
|
|
184
|
+
*
|
|
185
|
+
* @param data - Raw terminal input
|
|
186
|
+
* @returns Parsed mouse event, or null if not a mouse sequence
|
|
187
|
+
*/
|
|
188
|
+
export declare function parseMouseEvent(data: string): MouseEvent | null;
|
|
189
|
+
/**
|
|
190
|
+
* Fast check: is this data an SGR mouse event?
|
|
191
|
+
* Avoids regex for non-mouse input.
|
|
192
|
+
*
|
|
193
|
+
* @param data - Raw terminal input
|
|
194
|
+
* @returns true if the input is an SGR mouse sequence
|
|
195
|
+
*/
|
|
196
|
+
export declare function isMouseEvent(data: string): boolean;
|
|
167
197
|
export {};
|
|
168
198
|
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
|