mindweave 2.4.8 → 2.5.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 +4 -2
- package/dist/cli/App.js +101 -27
- package/dist/cli/App.js.map +1 -1
- package/dist/cli/commandArgs.js +66 -16
- package/dist/cli/commandArgs.js.map +1 -1
- package/dist/cli/commands.js +1 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/components/ApprovalBox.js +10 -1
- package/dist/cli/components/ApprovalBox.js.map +1 -1
- package/dist/cli/components/McpMinitabs.js +1 -1
- package/dist/cli/components/Picker.js +61 -19
- package/dist/cli/components/Picker.js.map +1 -1
- package/dist/cli/components/ToolLine.js +1 -1
- package/dist/cli/components/ToolLine.js.map +1 -1
- package/dist/cli/feedback.js +223 -0
- package/dist/cli/feedback.js.map +1 -0
- package/dist/cli/framebuffer/writer.js +1 -1
- package/dist/cli/toolDisplay.js +4 -3
- package/dist/cli/toolDisplay.js.map +1 -1
- package/dist/drivers/clientId.js +2 -3
- package/dist/drivers/clientId.js.map +1 -1
- package/dist/drivers/openaiCompat/wire.js +55 -3
- package/dist/drivers/openaiCompat/wire.js.map +1 -1
- package/dist/drivers/openrouter/catalog.js +136 -0
- package/dist/drivers/openrouter/catalog.js.map +1 -0
- package/dist/drivers/openrouter/client.js +102 -0
- package/dist/drivers/openrouter/client.js.map +1 -0
- package/dist/drivers/openrouter/endpoint.js +20 -0
- package/dist/drivers/openrouter/endpoint.js.map +1 -0
- package/dist/drivers/openrouter/index.js +5 -0
- package/dist/drivers/openrouter/index.js.map +1 -0
- package/dist/drivers/openrouter/manifest.js +83 -0
- package/dist/drivers/openrouter/manifest.js.map +1 -0
- package/dist/drivers/providerError.js +51 -0
- package/dist/drivers/providerError.js.map +1 -1
- package/dist/drivers/registry.js +111 -3
- package/dist/drivers/registry.js.map +1 -1
- package/dist/dynamo/engine.js +152 -99
- package/dist/dynamo/engine.js.map +1 -1
- package/dist/dynamo/model.js +63 -4
- package/dist/dynamo/model.js.map +1 -1
- package/dist/governor/skills.js +1 -1
- package/dist/governor/write.js +61 -0
- package/dist/governor/write.js.map +1 -1
- package/dist/mcp/configWrite.js +1 -1
- package/dist/memory/compaction.js +9 -1
- package/dist/memory/compaction.js.map +1 -1
- package/dist/memory/store.js +8 -1
- package/dist/memory/store.js.map +1 -1
- package/dist/tools/backgroundShells.js +4 -3
- package/dist/tools/backgroundShells.js.map +1 -1
- package/dist/tools/deferredNative.js +13 -4
- package/dist/tools/deferredNative.js.map +1 -1
- package/dist/tools/governorTools.js +113 -9
- package/dist/tools/governorTools.js.map +1 -1
- package/dist/tools/mcpAdd.js +87 -4
- package/dist/tools/mcpAdd.js.map +1 -1
- package/dist/tools/mcpSearch.js +5 -4
- package/dist/tools/mcpSearch.js.map +1 -1
- package/dist/tools/mindweaveStatus.js +113 -0
- package/dist/tools/mindweaveStatus.js.map +1 -0
- package/dist/tools/nativeStderr.js +27 -0
- package/dist/tools/nativeStderr.js.map +1 -0
- package/dist/tools/registry.js +6 -4
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/runCommand.js +53 -18
- package/dist/tools/runCommand.js.map +1 -1
- package/dist/tools/screenshot.js +17 -4
- package/dist/tools/screenshot.js.map +1 -1
- package/dist/tools/todo.js +5 -5
- package/dist/tools/todo.js.map +1 -1
- package/package.json +4 -3
package/dist/cli/commandArgs.js
CHANGED
|
@@ -13,11 +13,14 @@
|
|
|
13
13
|
* which reads them from the registry. That is the rule for core code, and it is also
|
|
14
14
|
* what makes this testable without a key.
|
|
15
15
|
*
|
|
16
|
-
* The matching is deliberately forgiving in a bounded way: exact id, then
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
16
|
+
* The matching is deliberately forgiving in a bounded way: exact id or label, then a
|
|
17
|
+
* UNIQUE prefix, then every typed WORD appearing somewhere in the id or label, in any
|
|
18
|
+
* order. Words matter once a provider lists hundreds of models: "deepseek flash" has to
|
|
19
|
+
* find "DeepSeek V4.1 Flash" although "V4.1" sits between the two words. Never a
|
|
20
|
+
* "closest guess" — picking a model or a reasoning budget is a decision with a cost
|
|
21
|
+
* attached, and quietly choosing the nearest thing to a typo is how you end up billed
|
|
22
|
+
* for the wrong one. Several matches come back as the list of them, so a caller can
|
|
23
|
+
* offer exactly those; a miss comes back as a message.
|
|
21
24
|
*/
|
|
22
25
|
function norm(s) {
|
|
23
26
|
return s.trim().toLowerCase();
|
|
@@ -48,16 +51,62 @@ export function resolveChoice(arg, candidates, what) {
|
|
|
48
51
|
if (starts.length === 1)
|
|
49
52
|
return { kind: "match", index: starts[0] };
|
|
50
53
|
if (starts.length > 1)
|
|
51
|
-
return
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
return several(arg, starts, names);
|
|
55
|
+
const words = wordsOf(arg);
|
|
56
|
+
const all = matchesFor(candidates, (c) => words.every((w) => includes(c, w)));
|
|
57
|
+
if (all.length === 1)
|
|
58
|
+
return { kind: "match", index: all[0] };
|
|
59
|
+
if (all.length > 1)
|
|
60
|
+
return several(arg, all, names);
|
|
61
|
+
return { kind: "error", message: miss(arg, words, candidates, what) };
|
|
62
|
+
}
|
|
63
|
+
/** The words of a typed argument, lowercased. */
|
|
64
|
+
export function wordsOf(text) {
|
|
65
|
+
return norm(text).split(/\s+/).filter(Boolean);
|
|
66
|
+
}
|
|
67
|
+
/** True when every word appears in one of the texts. Shared with the picker's filter. */
|
|
68
|
+
export function matchesWords(words, ...texts) {
|
|
69
|
+
const hay = texts.filter((t) => !!t).map(norm);
|
|
70
|
+
return words.every((w) => hay.some((h) => h.includes(w)));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Split `/model <words>` into the provider it names and the words left to match.
|
|
74
|
+
*
|
|
75
|
+
* The first word names a provider only when it is exactly one AND the whole phrase
|
|
76
|
+
* matches nothing on the provider in use. So on a router `/model deepseek flash` finds
|
|
77
|
+
* the router's DeepSeek Flash, while on a provider serving no DeepSeek model it moves
|
|
78
|
+
* to DeepSeek. `/model openrouter` alone leaves no words, which means "show me its list".
|
|
79
|
+
*/
|
|
80
|
+
export function splitModelArg(arg, providers, current, matchesHere) {
|
|
81
|
+
const [first = "", ...rest] = wordsOf(arg);
|
|
82
|
+
const named = providers.find((p) => norm(p.id) === first || norm(p.label) === first);
|
|
83
|
+
if (!named)
|
|
84
|
+
return { providerId: current, words: arg.trim() };
|
|
85
|
+
// Naming the provider already in use only scopes the search. Kept as a search word it
|
|
86
|
+
// matched every model on a router, whose ids all carry the provider name.
|
|
87
|
+
if (named.id === current)
|
|
88
|
+
return { providerId: current, words: rest.join(" ") };
|
|
89
|
+
if (matchesHere)
|
|
90
|
+
return { providerId: current, words: arg.trim() };
|
|
91
|
+
return { providerId: named.id, words: rest.join(" ") };
|
|
92
|
+
}
|
|
93
|
+
/** A long list is not read by anyone, so beyond this only the nearest names are offered. */
|
|
94
|
+
const LIST_ALL_UP_TO = 12;
|
|
95
|
+
function miss(arg, words, candidates, what) {
|
|
96
|
+
const said = `No ${what} called "${arg.trim()}".`;
|
|
97
|
+
if (candidates.length <= LIST_ALL_UP_TO)
|
|
98
|
+
return `${said} Available: ${list(candidates.map((c) => c.label))}.`;
|
|
99
|
+
// Nearest by how many of the typed words each one contains. A suggestion, never a pick.
|
|
100
|
+
const scored = candidates
|
|
101
|
+
.map((c) => ({ c, score: words.filter((w) => includes(c, w)).length }))
|
|
102
|
+
.filter((x) => x.score > 0)
|
|
103
|
+
.sort((a, b) => b.score - a.score)
|
|
104
|
+
.slice(0, 3)
|
|
105
|
+
.map((x) => x.c.label);
|
|
106
|
+
return scored.length > 0 ? `${said} Closest: ${list(scored)}.` : said;
|
|
107
|
+
}
|
|
108
|
+
function several(arg, indices, names) {
|
|
109
|
+
return { kind: "several", indices, message: ambiguous(arg, indices.map((i) => names[i])) };
|
|
61
110
|
}
|
|
62
111
|
function matchesFor(candidates, pred) {
|
|
63
112
|
const out = [];
|
|
@@ -74,6 +123,7 @@ function includes(c, wanted) {
|
|
|
74
123
|
return norm(c.label).includes(wanted) || (c.id !== undefined && norm(c.id).includes(wanted));
|
|
75
124
|
}
|
|
76
125
|
function ambiguous(arg, matched) {
|
|
77
|
-
|
|
126
|
+
const shown = matched.length > LIST_ALL_UP_TO ? [...matched.slice(0, LIST_ALL_UP_TO), `${matched.length - LIST_ALL_UP_TO} more`] : matched;
|
|
127
|
+
return `"${arg.trim()}" matches ${list(shown)}. Which one?`;
|
|
78
128
|
}
|
|
79
129
|
//# sourceMappingURL=commandArgs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandArgs.js","sourceRoot":"","sources":["../../src/cli/commandArgs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"commandArgs.js","sourceRoot":"","sources":["../../src/cli/commandArgs.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/commands.js
CHANGED
|
@@ -36,6 +36,7 @@ export const BASE_COMMANDS = [
|
|
|
36
36
|
{ name: "/compact", description: "summarize the conversation to free up context" },
|
|
37
37
|
{ name: "/update", description: "update Mindweave and restart into this conversation" },
|
|
38
38
|
{ name: "/analytics", description: "see or switch anonymous usage analytics on/off" },
|
|
39
|
+
{ name: "/feedback", description: "send the maintainer a message: /feedback <what you want to say>" },
|
|
39
40
|
{ name: "/clear", description: "start a fresh conversation in this project" },
|
|
40
41
|
{ name: "/continue", description: "pick a past session to resume" },
|
|
41
42
|
];
|
package/dist/cli/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;qDACqD;AACrD,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE;IAChD,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,2EAA2E,EAAE;IAC3G,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,2CAA2C,EAAE;IAC/E,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE;IAC1D,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;IACxF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACxE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gDAAgD,EAAE;IAClF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;IAC7E,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,iDAAiD,EAAE;IACnF,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,iDAAiD,EAAE;IACtF,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,4DAA4D,EAAE;IACtG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,4DAA4D,EAAE;IAC5F,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,gDAAgD,EAAE;IACnF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,0CAA0C,EAAE;IAC7E,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,mDAAmD,EAAE;IACrF,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gEAAgE,EAAE;IAC/F,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,yCAAyC,EAAE;IAC5E,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sDAAsD,EAAE;IACtF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,+CAA+C,EAAE;IAClF,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,qDAAqD,EAAE;IACvF,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,gDAAgD,EAAE;IACrF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;IAC7E,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,+BAA+B,EAAE;CACpE,CAAC"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;qDACqD;AACrD,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE;IAChD,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,2EAA2E,EAAE;IAC3G,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,2CAA2C,EAAE;IAC/E,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE;IAC1D,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;IACxF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACxE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gDAAgD,EAAE;IAClF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;IAC7E,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,iDAAiD,EAAE;IACnF,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,iDAAiD,EAAE;IACtF,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,4DAA4D,EAAE;IACtG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,4DAA4D,EAAE;IAC5F,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,gDAAgD,EAAE;IACnF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,0CAA0C,EAAE;IAC7E,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,mDAAmD,EAAE;IACrF,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gEAAgE,EAAE;IAC/F,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,yCAAyC,EAAE;IAC5E,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sDAAsD,EAAE;IACtF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,+CAA+C,EAAE;IAClF,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,qDAAqD,EAAE;IACvF,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,gDAAgD,EAAE;IACrF,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,iEAAiE,EAAE;IACrG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;IAC7E,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,+BAA+B,EAAE;CACpE,CAAC"}
|
|
@@ -60,8 +60,17 @@ export function ApprovalBox({ question, options, onSelect, onCancel, width, acti
|
|
|
60
60
|
// so it does nothing rather than sending "".
|
|
61
61
|
if (key.return) {
|
|
62
62
|
const text = typed.trim();
|
|
63
|
-
if (text)
|
|
63
|
+
if (text) {
|
|
64
64
|
onSubmitText?.(text);
|
|
65
|
+
// Emptied, and the highlight handed back to the first answer. Most callers
|
|
66
|
+
// close the box on a typed answer and never notice. One does not: /feedback
|
|
67
|
+
// asks again with the line added, and the box is the same mounted component,
|
|
68
|
+
// so the text stayed in the field with the cursor still in it — a second
|
|
69
|
+
// Enter added the same line twice, and the way OUT of the field was an arrow
|
|
70
|
+
// key nobody had a reason to press.
|
|
71
|
+
setTyped("");
|
|
72
|
+
setSel(0);
|
|
73
|
+
}
|
|
65
74
|
}
|
|
66
75
|
else if (key.backspace || key.delete)
|
|
67
76
|
setTyped((t) => t.slice(0, -1));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApprovalBox.js","sourceRoot":"","sources":["../../../src/cli/components/ApprovalBox.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,yEAAyE;AACzE,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,iFAAiF;AACjF,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB;qFACqF;AACrF,MAAM,eAAe,GAAG,CAAC,CAAC;AAgC1B,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,GAAG,IAAI,EACb,QAAQ,EACR,YAAY,EACZ,OAAO,GAAG,iBAAiB,GAAG,WAAW,GACxB;IACjB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAC5C,sFAAsF;IACtF,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IACxD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,IAAI,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC;IAE9D,QAAQ,CACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACb,4EAA4E;QAC5E,mEAAmE;QACnE,IAAI,GAAG,CAAC,OAAO;YAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;aACjD,IAAI,GAAG,CAAC,SAAS;YAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;aACjD,IAAI,GAAG,CAAC,MAAM;YAAE,QAAQ,EAAE,CAAC;aAC3B,IAAI,MAAM,EAAE,CAAC;YAChB,4EAA4E;YAC5E,6CAA6C;YAC7C,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC1B,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"ApprovalBox.js","sourceRoot":"","sources":["../../../src/cli/components/ApprovalBox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
13
13
|
* fixed and the fields pre-filled, so building two forms would only be two places for the
|
|
14
14
|
* same bug. Both end at `onSubmit`, which runs the one validator (`parseAddSpec`) every
|
|
15
15
|
* other way of adding a server already goes through — the typed `/mcp add` and the
|
|
16
|
-
* `
|
|
16
|
+
* `mcp_server` tool — so this cannot accept something they would reject.
|
|
17
17
|
*
|
|
18
18
|
* ANOTHER STEP-THROUGH FORM'S KEYS, and why they differ from the list/manage screens: a
|
|
19
19
|
* text field already owns Left/Right (moving the cursor inside what you're typing) and
|
|
@@ -5,14 +5,19 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
5
5
|
* (`/model`, `/think`), and the forbidden-lift approval prompt all render through
|
|
6
6
|
* this, so selection looks and feels identical everywhere.
|
|
7
7
|
*
|
|
8
|
-
* It owns
|
|
8
|
+
* It owns a highlight index and a filter. ↑/↓ move (wrapping), Enter selects, Esc
|
|
9
|
+
* cancels, and typing narrows the list to rows containing every typed word, so one
|
|
10
|
+
* model among hundreds is a few keystrokes away. `onSelect` always receives the index
|
|
11
|
+
* into the caller's `items`, filtered or not.
|
|
9
12
|
* Like the input box, it captures keys via `useInput`; the caller gates it with
|
|
10
13
|
* `active` so exactly one input owner is live at a time (the prompt is disabled
|
|
11
14
|
* while a picker is open).
|
|
12
15
|
*/
|
|
13
|
-
import { useState } from "react";
|
|
16
|
+
import { useMemo, useState } from "react";
|
|
14
17
|
import { Box, Text, useInput } from "ink";
|
|
15
18
|
import { clipRows } from "../wrap.js";
|
|
19
|
+
import { matchesWords, wordsOf } from "../commandArgs.js";
|
|
20
|
+
import { stripMouse } from "../mouse.js";
|
|
16
21
|
const MAX_VISIBLE = 10;
|
|
17
22
|
/**
|
|
18
23
|
* The title is clipped to this many rendered rows, wrapping included.
|
|
@@ -30,28 +35,58 @@ const MAX_VISIBLE = 10;
|
|
|
30
35
|
*/
|
|
31
36
|
const MAX_TITLE_ROWS = 6;
|
|
32
37
|
const MAX_NOTE_ROWS = 4;
|
|
33
|
-
export function Picker({ title, items, onSelect, onCancel, width, active = true, initialIndex = 0, maxTitleRows = MAX_TITLE_ROWS, note, maxNoteRows = MAX_NOTE_ROWS, describeSelection = false, rightAlignDescription = false, maxRows = MAX_VISIBLE, }) {
|
|
38
|
+
export function Picker({ title, items, onSelect, onCancel, width, active = true, initialIndex = 0, maxTitleRows = MAX_TITLE_ROWS, note, maxNoteRows = MAX_NOTE_ROWS, describeSelection = false, rightAlignDescription = false, maxRows = MAX_VISIBLE, initialFilter = "", }) {
|
|
34
39
|
// Same window size as the command menu (App clamps maxRows to a safe ceiling), so the
|
|
35
40
|
// picker box and the command box are the SAME fixed height.
|
|
36
41
|
const visible = Math.max(1, maxRows);
|
|
37
|
-
const [
|
|
38
|
-
|
|
42
|
+
const [filter, setFilter] = useState(initialFilter);
|
|
43
|
+
// Rows still showing, as indices into `items`. Label and description both count, so
|
|
44
|
+
// "vision" or "1M" finds a model by what its row says about it.
|
|
45
|
+
const matching = useMemo(() => {
|
|
46
|
+
const words = wordsOf(filter);
|
|
47
|
+
return items.flatMap((item, i) => (matchesWords(words, item.label, item.description, item.keywords) ? [i] : []));
|
|
48
|
+
}, [items, filter]);
|
|
49
|
+
const [sel, setSel] = useState(initialFilter ? 0 : Math.min(Math.max(0, initialIndex), Math.max(0, items.length - 1)));
|
|
50
|
+
const count = matching.length;
|
|
51
|
+
useInput((raw, key) => {
|
|
52
|
+
// With wheel reporting on, a scroll arrives as bytes like `[<65;43;30M` that Ink
|
|
53
|
+
// hands over as typed text, and the filter filled up with them. A chunk that was
|
|
54
|
+
// nothing but mouse reports is not a keystroke at all.
|
|
55
|
+
const input = stripMouse(raw);
|
|
56
|
+
if (input === "" && raw !== "")
|
|
57
|
+
return;
|
|
39
58
|
if (key.upArrow)
|
|
40
|
-
setSel((s) => (s - 1 +
|
|
59
|
+
setSel((s) => (count === 0 ? 0 : (s - 1 + count) % count));
|
|
41
60
|
else if (key.downArrow)
|
|
42
|
-
setSel((s) => (s + 1) %
|
|
43
|
-
else if (key.return)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
else if (key.escape || key.backspace || key.delete)
|
|
61
|
+
setSel((s) => (count === 0 ? 0 : (s + 1) % count));
|
|
62
|
+
else if (key.return) {
|
|
63
|
+
const picked = matching[sel];
|
|
64
|
+
if (picked !== undefined)
|
|
65
|
+
onSelect(picked);
|
|
66
|
+
}
|
|
67
|
+
else if (key.escape)
|
|
50
68
|
onCancel();
|
|
69
|
+
else if (key.backspace || key.delete) {
|
|
70
|
+
// Backspace edits the filter while there is one. With none, it closes: the input
|
|
71
|
+
// line above is empty, so a delete is the natural "take it back" — the same
|
|
72
|
+
// gesture that removes the `/` and closes the command menu.
|
|
73
|
+
if (filter) {
|
|
74
|
+
setFilter((f) => f.slice(0, -1));
|
|
75
|
+
setSel(0);
|
|
76
|
+
}
|
|
77
|
+
else
|
|
78
|
+
onCancel();
|
|
79
|
+
}
|
|
80
|
+
else if (input && !key.ctrl && !key.meta && !key.tab && !/[\u0000-\u001f]/.test(input)) {
|
|
81
|
+
setFilter((f) => f + input);
|
|
82
|
+
setSel(0);
|
|
83
|
+
}
|
|
51
84
|
}, { isActive: active && items.length > 0 });
|
|
85
|
+
const shownItems = matching.map((i) => items[i]);
|
|
52
86
|
// A scrolling window so a long list never blows past the visible rows.
|
|
53
|
-
const start = Math.min(Math.max(0, sel - (visible - 1)), Math.max(0,
|
|
54
|
-
const shown =
|
|
87
|
+
const start = Math.min(Math.max(0, sel - (visible - 1)), Math.max(0, count - visible));
|
|
88
|
+
const shown = shownItems.slice(start, start + visible);
|
|
89
|
+
// Measured over every item, not just the matches, so the columns hold still as you type.
|
|
55
90
|
const labelWidth = Math.min(40, Math.max(...items.map((i) => i.label.length), 1));
|
|
56
91
|
// Widths subtract the input box's chrome — border (2) + paddingX (2) = 4 — plus the
|
|
57
92
|
// 2-col prefix, so a truncated label/description ends INSIDE the border rather than
|
|
@@ -62,12 +97,16 @@ export function Picker({ title, items, onSelect, onCancel, width, active = true,
|
|
|
62
97
|
// no sign that there is more of it, and the rows that used to say so were removed for
|
|
63
98
|
// changing the box's height as you reached the ends. A counter on a row that already
|
|
64
99
|
// exists says the same thing and cannot resize anything.
|
|
65
|
-
const counter =
|
|
100
|
+
const counter = filter
|
|
101
|
+
? ` ${count === 0 ? 0 : sel + 1} of ${count}`
|
|
102
|
+
: items.length > visible
|
|
103
|
+
? ` ${sel + 1} of ${items.length}`
|
|
104
|
+
: "";
|
|
66
105
|
const titleRows = clipRows(title, Math.max(4, rowWidth - counter.length), maxTitleRows);
|
|
67
106
|
// The note is either the caller's own text, or — with describeSelection — the
|
|
68
107
|
// highlighted item's full description, wrapped. The two never combine: a picker that
|
|
69
108
|
// describes its selection has no separate note to show.
|
|
70
|
-
const selectionNote = describeSelection ?
|
|
109
|
+
const selectionNote = describeSelection ? shownItems[sel]?.description ?? "" : "";
|
|
71
110
|
const noteText = describeSelection ? selectionNote : note ?? "";
|
|
72
111
|
const noteRows = noteText ? clipRows(noteText, rowWidth, maxNoteRows) : [];
|
|
73
112
|
// Blank rows so title + list + note is a fixed count, matching the command menu's
|
|
@@ -96,6 +135,9 @@ export function Picker({ title, items, onSelect, onCancel, width, active = true,
|
|
|
96
135
|
return (_jsxs(Box, { width: rowWidth, flexShrink: 0, children: [_jsx(Box, { flexGrow: 1, flexShrink: 1, overflow: "hidden", children: _jsxs(Text, { color: activeRow ? "cyan" : undefined, bold: activeRow, wrap: "truncate-end", children: [activeRow ? "› " : " ", item.label] }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: " " + item.description }) })] }, idx));
|
|
97
136
|
}
|
|
98
137
|
return (_jsxs(Box, { width: rowWidth, flexShrink: 0, children: [_jsxs(Text, { color: activeRow ? "cyan" : undefined, bold: activeRow, children: [activeRow ? "› " : " ", item.label.padEnd(labelWidth)] }), item.description && !describeSelection ? (_jsx(Box, { width: descWidth, children: _jsx(Text, { dimColor: true, wrap: "truncate-end", children: " " + item.description }) })) : null] }, idx));
|
|
99
|
-
}), noteGap ? (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { children: " " }) })) : null, noteRows.map((line, i) => (_jsx(Box, { width: rowWidth, flexShrink: 0, children: _jsx(Text, { dimColor: true, wrap: "truncate-end", children: line }) }, `n${i}`))), Array.from({ length: pad }).map((_, i) => (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { children: " " }) }, `pad${i}`))), _jsx(Box, { flexShrink: 0, children:
|
|
138
|
+
}), noteGap ? (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { children: " " }) })) : null, noteRows.map((line, i) => (_jsx(Box, { width: rowWidth, flexShrink: 0, children: _jsx(Text, { dimColor: true, wrap: "truncate-end", children: line }) }, `n${i}`))), Array.from({ length: pad }).map((_, i) => (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { children: " " }) }, `pad${i}`))), _jsx(Box, { flexShrink: 0, children: filter ? (
|
|
139
|
+
// The filter lives on the hint row, which always exists, so typing never changes
|
|
140
|
+
// the box's height.
|
|
141
|
+
_jsx(Box, { width: rowWidth, children: _jsxs(Text, { wrap: "truncate-start", children: [_jsx(Text, { color: "cyan", children: filter }), _jsx(Text, { dimColor: true, children: count === 0 ? " · no matches · ⌫ edit · Esc back" : " · ↑/↓ move · Enter select · ⌫ edit · Esc back" })] }) })) : (_jsx(Text, { dimColor: true, children: items.length > visible ? "type to filter · ↑/↓ move · Enter select · Esc back" : "↑/↓ move · Enter select · Esc or ⌫ back" })) })] }));
|
|
100
142
|
}
|
|
101
143
|
//# sourceMappingURL=Picker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Picker.js","sourceRoot":"","sources":["../../../src/cli/components/Picker.tsx"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"Picker.js","sourceRoot":"","sources":["../../../src/cli/components/Picker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -101,7 +101,7 @@ export function ToolLine({ name, arg, status, action, summary, detail, detailKin
|
|
|
101
101
|
: arg.length > headerRoom
|
|
102
102
|
? "…" + arg.slice(-(headerRoom - 1))
|
|
103
103
|
: arg;
|
|
104
|
-
return (_jsxs(Box, { marginTop: tightTop ? 0 : 1, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", width: columns,
|
|
104
|
+
return (_jsxs(Box, { marginTop: tightTop ? 0 : 1, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", width: columns, children: [_jsx(Box, { minWidth: 2, flexShrink: 0, children: _jsx(Text, { color: dotColor, dimColor: status === "running", children: DOT }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { bold: true, children: verb }) }), shownArg ? (_jsx(Box, { flexShrink: 0, children: _jsxs(Text, { wrap: "truncate-end", children: ["(", shownArg, ")"] }) })) : null, meta ? (_jsx(Box, { flexShrink: 0, children: _jsxs(Text, { dimColor: true, wrap: "truncate-end", children: [" ", meta] }) })) : null, status === "running" && action === "run" && startedAt !== undefined ? (_jsx(Box, { flexShrink: 0, children: _jsx(Elapsed, { since: startedAt }) })) : null, live && since !== undefined ? (_jsx(Box, { flexShrink: 0, children: _jsx(Elapsed, { since: since }) })) : null, outcome ? (_jsx(Box, { flexShrink: 0, children: _jsxs(Text, { color: errored ? ERROR_COLOR : "green", bold: true, wrap: "truncate-end", children: [" ", outcome] }) })) : null] }), status !== "running" && branchLines.length > 0 ? (detailKind === "shell" ? (_jsx(ShellLines, { lines: branchLines, columns: columns, errored: errored, headerHasCommand: !!arg })) : (_jsx(BranchLines, { lines: branchLines, columns: columns, errored: errored, diff: detailKind === "diff" }))) : null] }));
|
|
105
105
|
}
|
|
106
106
|
/** The indented `⎿` result block, one source line per row, diff-colored when the
|
|
107
107
|
* content is a real diff (`+ ` green, `- ` red; everything else dim).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolLine.js","sourceRoot":"","sources":["../../../src/cli/components/ToolLine.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ToolLine.js","sourceRoot":"","sources":["../../../src/cli/components/ToolLine.tsx"],"names":[],"mappings":"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"}
|