@quantiya/codevibe-codex-plugin 2.0.117 → 2.0.118
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/native-launch.js +1 -1
- package/dist/server.js +1 -1
- package/node_modules/@quantiya/codevibe-core/dist/index.js +438 -438
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/cli.js +31 -11
- package/node_modules/@quantiya/codevibe-core/dist/orchestration-shell/slash-suggest.d.ts +10 -0
- package/node_modules/@quantiya/codevibe-core/package.json +1 -1
- package/package.json +2 -2
|
@@ -40581,6 +40581,11 @@ function filterSlashSuggestions(value, commands) {
|
|
|
40581
40581
|
let q = value.toLowerCase();
|
|
40582
40582
|
return commands.filter((c) => c.name.toLowerCase().startsWith(q));
|
|
40583
40583
|
}
|
|
40584
|
+
function enterRunsTypedCommand(value, suggestions, highlight) {
|
|
40585
|
+
if (suggestions.length === 0 || !value.startsWith("/")) return !1;
|
|
40586
|
+
let pick2 = suggestions[Math.min(Math.max(highlight, 0), suggestions.length - 1)];
|
|
40587
|
+
return pick2 !== void 0 && pick2.name === value;
|
|
40588
|
+
}
|
|
40584
40589
|
function formatSuggestionRow(opts) {
|
|
40585
40590
|
let base2 = `${opts.highlighted ? "\u276F " : " "}${opts.name.padEnd(opts.namePad)}`, blurbBudget = opts.maxCols - base2.length - 1, full = blurbBudget > 0 ? `${base2} ${truncate(opts.blurb, blurbBudget)}` : base2;
|
|
40586
40591
|
return truncate(full, Math.max(0, opts.maxCols));
|
|
@@ -40957,6 +40962,10 @@ function InputBar(props) {
|
|
|
40957
40962
|
setHl((Math.min(highlightRef.current, n - 1) + 1) % n);
|
|
40958
40963
|
return;
|
|
40959
40964
|
}
|
|
40965
|
+
if (key.return && enterRunsTypedCommand(valueRef.current, live, highlightRef.current)) {
|
|
40966
|
+
setHl(0), doSubmit();
|
|
40967
|
+
return;
|
|
40968
|
+
}
|
|
40960
40969
|
if (key.tab || key.return) {
|
|
40961
40970
|
completeToHighlighted();
|
|
40962
40971
|
return;
|
|
@@ -88524,17 +88533,28 @@ ${formatImplementorPolicy(detected, updated, props.tier)}`
|
|
|
88524
88533
|
trackLabelByTaskId,
|
|
88525
88534
|
gateActionRecoveryBlocked: state.gateActionRecoveryBlocked
|
|
88526
88535
|
}),
|
|
88527
|
-
|
|
88528
|
-
|
|
88529
|
-
|
|
88530
|
-
|
|
88531
|
-
|
|
88532
|
-
|
|
88533
|
-
|
|
88534
|
-
|
|
88535
|
-
|
|
88536
|
-
}
|
|
88537
|
-
|
|
88536
|
+
// CP-1.f live progress surfacing — the ephemeral spinner status lines,
|
|
88537
|
+
// rendered ONLY while work is busy: P46b §3.7 one line per busy single task
|
|
88538
|
+
// (`progressByTask`, capped, `(+n more)` on the last), then a window that
|
|
88539
|
+
// belongs to no task (classify / familiarize). An idle line returns null and
|
|
88540
|
+
// its row collapses. The per-task lines are ONE keyed child so their count
|
|
88541
|
+
// never shifts the InputBar's position (a shift remounted it: typed text and
|
|
88542
|
+
// keystrokes were lost while tasks started/stopped — Hendry item 3).
|
|
88543
|
+
React22.createElement(
|
|
88544
|
+
React22.Fragment,
|
|
88545
|
+
{ key: "progress-tasks" },
|
|
88546
|
+
...shownTaskProgress.map(
|
|
88547
|
+
([taskId, line], index) => React22.createElement(LiveProgressLine, {
|
|
88548
|
+
key: `progress-${taskId}`,
|
|
88549
|
+
progress: line,
|
|
88550
|
+
label: (() => {
|
|
88551
|
+
let l = taskLabel(state, taskId);
|
|
88552
|
+
return l.startsWith("#") ? l : void 0;
|
|
88553
|
+
})(),
|
|
88554
|
+
...index === shownTaskProgress.length - 1 && hiddenTaskProgress > 0 ? { moreCount: hiddenTaskProgress } : {}
|
|
88555
|
+
})
|
|
88556
|
+
)
|
|
88557
|
+
),
|
|
88538
88558
|
React22.createElement(LiveProgressLine, { key: "progress-untasked", progress: untaskedProgress }),
|
|
88539
88559
|
// `/reviewer-setup` wizard (2026-06-29) — while open it REPLACES the InputBar
|
|
88540
88560
|
// at the same layout slot and owns keyboard focus (arrow-key ink-select); on
|
|
@@ -13,6 +13,16 @@ export declare function isSlashCommandInProgress(value: string): boolean;
|
|
|
13
13
|
* dropdown). A bare `/` returns the whole list.
|
|
14
14
|
*/
|
|
15
15
|
export declare function filterSlashSuggestions(value: string, commands: SlashCommandInfo[]): SlashCommandInfo[];
|
|
16
|
+
/**
|
|
17
|
+
* True when Enter should RUN the input instead of completing it: the value is
|
|
18
|
+
* already exactly the highlighted slash command (`/exit` with `/exit`
|
|
19
|
+
* highlighted). A partial (`/ex`) or a highlight the user moved to another
|
|
20
|
+
* command still completes (Hendry 2026-11-12: a fully typed command must not
|
|
21
|
+
* need a second Enter).
|
|
22
|
+
*/
|
|
23
|
+
export declare function enterRunsTypedCommand(value: string, suggestions: ReadonlyArray<{
|
|
24
|
+
name: string;
|
|
25
|
+
}>, highlight: number): boolean;
|
|
16
26
|
/**
|
|
17
27
|
* Builds a single dropdown row as ONE physical line (≤ `maxCols`) so it can
|
|
18
28
|
* never wrap and inflate the dropdown's row count on a narrow terminal
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quantiya/codevibe-codex-plugin",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.118",
|
|
4
4
|
"description": "Control OpenAI Codex CLI from your iPhone and Android — real-time sync, approve file edits, send prompts by voice. Part of CodeVibe.",
|
|
5
5
|
"main": "dist/server.js",
|
|
6
6
|
"codevibe": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"node": ">=22.0.0"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@quantiya/codevibe-core": "^2.0.
|
|
50
|
+
"@quantiya/codevibe-core": "^2.0.102",
|
|
51
51
|
"@quantiya/quorum-core": "^1.0.1",
|
|
52
52
|
"chokidar": "^4.0.0",
|
|
53
53
|
"dotenv": "^16.6.1",
|