@pellux/goodvibes-tui 1.1.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -21
- package/README.md +20 -11
- package/docs/foundation-artifacts/operator-contract.json +1 -1
- package/package.json +2 -2
- package/src/core/alert-gating.ts +67 -0
- package/src/core/approval-alert.ts +72 -0
- package/src/core/budget-breach-notifier.ts +106 -0
- package/src/core/conversation-rendering.ts +19 -0
- package/src/core/conversation.ts +18 -0
- package/src/core/focus-tracker.ts +41 -0
- package/src/core/long-task-notifier.ts +33 -6
- package/src/core/system-message-router.ts +37 -51
- package/src/core/turn-cancellation.ts +20 -0
- package/src/core/turn-event-wiring.ts +64 -3
- package/src/export/cost-utils.ts +36 -0
- package/src/input/command-registry.ts +38 -1
- package/src/input/commands/checkpoint-runtime.ts +280 -0
- package/src/input/commands/codebase-runtime.ts +192 -0
- package/src/input/commands/eval.ts +1 -1
- package/src/input/commands/health-runtime.ts +1 -1
- package/src/input/commands/image-runtime.ts +112 -0
- package/src/input/commands/intelligence-runtime.ts +11 -1
- package/src/input/commands/local-auth-runtime.ts +4 -1
- package/src/input/commands/local-runtime.ts +9 -3
- package/src/input/commands/marketplace-runtime.ts +2 -2
- package/src/input/commands/memory.ts +6 -1
- package/src/input/commands/operator-panel-runtime.ts +40 -24
- package/src/input/commands/planning-runtime.ts +26 -3
- package/src/input/commands/platform-sandbox-runtime.ts +1 -6
- package/src/input/commands/plugin-runtime.ts +2 -2
- package/src/input/commands/policy-dispatch.ts +21 -0
- package/src/input/commands/provider-accounts-runtime.ts +1 -1
- package/src/input/commands/qrcode-runtime.ts +3 -3
- package/src/input/commands/recall-review.ts +35 -0
- package/src/input/commands/remote-runtime.ts +3 -3
- package/src/input/commands/runtime-services.ts +54 -13
- package/src/input/commands/services-runtime.ts +1 -1
- package/src/input/commands/session-workflow.ts +16 -1
- package/src/input/commands/settings-sync-runtime.ts +1 -1
- package/src/input/commands/shell-core.ts +15 -7
- package/src/input/commands/skills-runtime.ts +2 -8
- package/src/input/commands/subscription-runtime.ts +2 -2
- package/src/input/commands/test-runtime.ts +277 -0
- package/src/input/commands/websearch-runtime.ts +101 -0
- package/src/input/commands/work-plan-runtime.ts +36 -10
- package/src/input/commands/workstream-runtime.ts +338 -0
- package/src/input/commands.ts +12 -0
- package/src/input/config-modal-types.ts +161 -0
- package/src/input/config-modal.ts +377 -0
- package/src/input/feed-context-factory.ts +7 -8
- package/src/input/handler-command-route.ts +27 -17
- package/src/input/handler-feed-routes.ts +61 -23
- package/src/input/handler-feed.ts +47 -23
- package/src/input/handler-interactions.ts +1 -3
- package/src/input/handler-modal-routes.ts +65 -0
- package/src/input/handler-modal-stack.ts +3 -5
- package/src/input/handler-modal-token-routes.ts +16 -49
- package/src/input/handler-picker-routes.ts +11 -94
- package/src/input/handler-shortcuts.ts +24 -14
- package/src/input/handler-types.ts +2 -6
- package/src/input/handler-ui-state.ts +10 -22
- package/src/input/handler.ts +6 -28
- package/src/input/keybindings.ts +22 -8
- package/src/input/model-picker-types.ts +24 -6
- package/src/input/model-picker.ts +58 -0
- package/src/input/panel-integration-actions.ts +9 -170
- package/src/input/settings-modal-data.ts +95 -0
- package/src/input/settings-modal-mutations.ts +6 -4
- package/src/main.ts +24 -27
- package/src/panels/agent-inspector-shared.ts +2 -1
- package/src/panels/base-panel.ts +22 -1
- package/src/panels/builtin/agent.ts +21 -107
- package/src/panels/builtin/development.ts +15 -61
- package/src/panels/builtin/knowledge.ts +8 -32
- package/src/panels/builtin/operations.ts +84 -428
- package/src/panels/builtin/session.ts +21 -112
- package/src/panels/builtin/shared.ts +9 -43
- package/src/panels/builtin-modals.ts +218 -0
- package/src/panels/builtin-panels.ts +5 -0
- package/src/panels/cost-tracker-panel.ts +36 -10
- package/src/panels/diff-panel.ts +12 -43
- package/src/panels/eval-registry.ts +60 -0
- package/src/panels/fleet-panel.ts +800 -0
- package/src/panels/fleet-read-model.ts +477 -0
- package/src/panels/fleet-steer.ts +92 -0
- package/src/panels/fleet-stop.ts +125 -0
- package/src/panels/fleet-tabs.ts +230 -0
- package/src/panels/fleet-transcript.ts +356 -0
- package/src/panels/index.ts +7 -31
- package/src/panels/modals/hooks-modal.ts +187 -0
- package/src/panels/modals/keybindings-modal.ts +151 -0
- package/src/panels/modals/knowledge-modal.ts +158 -0
- package/src/panels/modals/local-auth-modal.ts +132 -0
- package/src/panels/modals/marketplace-modal.ts +218 -0
- package/src/panels/modals/memory-modal.ts +180 -0
- package/src/panels/modals/modal-surface-helpers.ts +54 -0
- package/src/panels/modals/modal-theme.ts +36 -0
- package/src/panels/modals/pairing-modal.ts +144 -0
- package/src/panels/modals/planning-modal.ts +282 -0
- package/src/panels/modals/plugins-modal.ts +174 -0
- package/src/panels/modals/policy-modal.ts +256 -0
- package/src/panels/modals/provider-health-modal.ts +136 -0
- package/src/panels/modals/remote-modal.ts +115 -0
- package/src/panels/modals/sandbox-modal.ts +150 -0
- package/src/panels/modals/security-modal.ts +217 -0
- package/src/panels/modals/services-modal.ts +179 -0
- package/src/panels/modals/settings-sync-modal.ts +142 -0
- package/src/panels/modals/skills-modal.ts +189 -0
- package/src/panels/modals/subscription-modal.ts +172 -0
- package/src/panels/modals/work-plan-modal.ts +149 -0
- package/src/panels/panel-confirm-overlay.ts +72 -0
- package/src/panels/panel-manager.ts +108 -5
- package/src/panels/project-planning-answer-actions.ts +4 -2
- package/src/panels/skills-panel.ts +7 -51
- package/src/panels/types.ts +13 -0
- package/src/permissions/hunk-selection.ts +179 -0
- package/src/permissions/prompt.ts +60 -4
- package/src/renderer/compaction-history-modal.ts +19 -3
- package/src/renderer/compaction-preview.ts +13 -2
- package/src/renderer/compaction-quality.ts +100 -0
- package/src/renderer/config-modal.ts +81 -0
- package/src/renderer/conversation-overlays.ts +10 -17
- package/src/renderer/fleet-tab-strip.ts +56 -0
- package/src/renderer/footer-tips.ts +10 -2
- package/src/renderer/git-status.ts +40 -0
- package/src/renderer/help-overlay.ts +2 -2
- package/src/renderer/model-workspace.ts +44 -1
- package/src/renderer/panel-workspace-bar.ts +8 -2
- package/src/renderer/turn-injection.ts +114 -0
- package/src/runtime/bootstrap-command-context.ts +21 -1
- package/src/runtime/bootstrap-command-parts.ts +34 -7
- package/src/runtime/bootstrap-core.ts +14 -4
- package/src/runtime/bootstrap-shell.ts +29 -16
- package/src/runtime/bootstrap.ts +11 -17
- package/src/runtime/code-index-services.ts +112 -0
- package/src/runtime/orchestrator-core-services.ts +49 -0
- package/src/runtime/process-lifecycle.ts +3 -1
- package/src/runtime/services.ts +91 -43
- package/src/runtime/ui-services.ts +8 -0
- package/src/runtime/workstream-services.ts +195 -0
- package/src/shell/blocking-input.ts +22 -1
- package/src/shell/ui-openers.ts +129 -17
- package/src/utils/format-duration.ts +8 -18
- package/src/utils/splash-lines.ts +1 -1
- package/src/version.ts +1 -1
- package/src/panels/agent-inspector-panel.ts +0 -786
- package/src/panels/approval-panel.ts +0 -252
- package/src/panels/automation-control-panel.ts +0 -479
- package/src/panels/cockpit-panel.ts +0 -481
- package/src/panels/cockpit-read-model.ts +0 -238
- package/src/panels/communication-panel.ts +0 -256
- package/src/panels/control-plane-panel.ts +0 -470
- package/src/panels/debug-panel.ts +0 -615
- package/src/panels/docs-panel.ts +0 -384
- package/src/panels/eval-panel.ts +0 -627
- package/src/panels/file-explorer-panel.ts +0 -673
- package/src/panels/file-preview-panel.ts +0 -517
- package/src/panels/hooks-panel.ts +0 -401
- package/src/panels/incident-review-panel.ts +0 -406
- package/src/panels/intelligence-panel.ts +0 -383
- package/src/panels/knowledge-graph-panel.ts +0 -515
- package/src/panels/marketplace-panel.ts +0 -399
- package/src/panels/memory-panel.ts +0 -558
- package/src/panels/ops-control-panel.ts +0 -329
- package/src/panels/ops-strategy-panel.ts +0 -321
- package/src/panels/orchestration-panel.ts +0 -465
- package/src/panels/panel-list-panel.ts +0 -566
- package/src/panels/plan-dashboard-panel.ts +0 -707
- package/src/panels/policy-panel.ts +0 -517
- package/src/panels/project-planning-panel.ts +0 -731
- package/src/panels/provider-health-panel.ts +0 -678
- package/src/panels/provider-health-tracker.ts +0 -310
- package/src/panels/provider-health-views.ts +0 -567
- package/src/panels/qr-panel.ts +0 -280
- package/src/panels/remote-panel.ts +0 -534
- package/src/panels/routes-panel.ts +0 -241
- package/src/panels/sandbox-panel.ts +0 -456
- package/src/panels/security-panel.ts +0 -447
- package/src/panels/services-panel.ts +0 -329
- package/src/panels/session-browser-panel.ts +0 -496
- package/src/panels/settings-sync-panel.ts +0 -398
- package/src/panels/subscription-panel.ts +0 -342
- package/src/panels/symbol-outline-panel.ts +0 -619
- package/src/panels/system-messages-panel.ts +0 -364
- package/src/panels/tasks-panel.ts +0 -608
- package/src/panels/thinking-panel.ts +0 -333
- package/src/panels/tool-inspector-panel.ts +0 -537
- package/src/panels/work-plan-panel.ts +0 -540
- package/src/panels/worktree-panel.ts +0 -360
- package/src/panels/wrfc-panel.ts +0 -790
- package/src/renderer/agent-detail-modal.ts +0 -466
- package/src/renderer/live-tail-modal.ts +0 -156
- package/src/renderer/process-modal.ts +0 -671
- package/src/renderer/qr-renderer.ts +0 -120
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import type { Line } from '../types/grid.ts';
|
|
2
|
-
import { createEmptyLine, createStyledCell } from '../types/grid.ts';
|
|
3
|
-
import { getDisplayWidth } from '../utils/terminal-width.ts';
|
|
4
|
-
import { generateQrMatrix } from '@pellux/goodvibes-sdk/platform/pairing';
|
|
5
|
-
|
|
6
|
-
export { generateQrMatrix };
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Render a QR boolean matrix to terminal Lines using Unicode half-block characters.
|
|
10
|
-
*
|
|
11
|
-
* Two matrix rows map to one terminal row:
|
|
12
|
-
* top=dark, bottom=dark → '█' (FULL BLOCK)
|
|
13
|
-
* top=dark, bottom=light → '▀' (UPPER HALF BLOCK)
|
|
14
|
-
* top=light, bottom=dark → '▄' (LOWER HALF BLOCK)
|
|
15
|
-
* top=light, bottom=light → ' ' (SPACE)
|
|
16
|
-
*
|
|
17
|
-
* @param modules - 2D boolean matrix where true = dark module
|
|
18
|
-
* @param width - Terminal width available for centering
|
|
19
|
-
* @param options - Optional fg/bg overrides
|
|
20
|
-
*/
|
|
21
|
-
export function renderQrMatrix(
|
|
22
|
-
modules: readonly boolean[][],
|
|
23
|
-
width: number,
|
|
24
|
-
options?: { fg?: string; bg?: string },
|
|
25
|
-
): Line[] {
|
|
26
|
-
const fg = options?.fg ?? '#000000';
|
|
27
|
-
const bg = options?.bg ?? '#ffffff';
|
|
28
|
-
|
|
29
|
-
const rows = modules.length;
|
|
30
|
-
const cols = modules[0]?.length ?? 0;
|
|
31
|
-
if (rows === 0 || cols === 0) return [];
|
|
32
|
-
|
|
33
|
-
// Each terminal row covers two matrix rows
|
|
34
|
-
const terminalRows = Math.ceil(rows / 2);
|
|
35
|
-
// Left-align with a single-cell indent. Visually aligns with the text above
|
|
36
|
-
// the QR when rendered with half-block characters; bumping higher
|
|
37
|
-
// mis-registers the finder patterns by a visible unit.
|
|
38
|
-
const leftPad = 1;
|
|
39
|
-
|
|
40
|
-
const lines: Line[] = [];
|
|
41
|
-
|
|
42
|
-
// Prepend a half-height top quiet band: the BOTTOM half of this terminal row
|
|
43
|
-
// is white (QR bg) flush against the QR's first module row below; the TOP half
|
|
44
|
-
// is the terminal's default background (chrome). Using '▄' (LOWER HALF BLOCK)
|
|
45
|
-
// with fg = QR bg and no bg override achieves the half-height effect.
|
|
46
|
-
// Combined with the leftPad=1 on the horizontal axis, this keeps the
|
|
47
|
-
// finder-pattern square margin consistent on both axes without stealing a
|
|
48
|
-
// full row of vertical space.
|
|
49
|
-
{
|
|
50
|
-
const topBand = createEmptyLine(width);
|
|
51
|
-
const endCol = Math.min(leftPad + cols + 1, width);
|
|
52
|
-
for (let col = 0; col < endCol; col++) {
|
|
53
|
-
topBand[col] = createStyledCell('▄', { fg: bg });
|
|
54
|
-
}
|
|
55
|
-
lines.push(topBand);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
for (let termRow = 0; termRow < terminalRows; termRow++) {
|
|
59
|
-
const matrixRowTop = termRow * 2;
|
|
60
|
-
const matrixRowBot = termRow * 2 + 1;
|
|
61
|
-
const topRow = modules[matrixRowTop];
|
|
62
|
-
const botRow = matrixRowBot < rows ? modules[matrixRowBot] : null;
|
|
63
|
-
|
|
64
|
-
const line = createEmptyLine(width);
|
|
65
|
-
|
|
66
|
-
// Fill leading padding with bg
|
|
67
|
-
for (let col = 0; col < leftPad && col < width; col++) {
|
|
68
|
-
line[col] = createStyledCell(' ', { fg, bg });
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Render QR columns
|
|
72
|
-
for (let col = 0; col < cols; col++) {
|
|
73
|
-
const termCol = leftPad + col;
|
|
74
|
-
if (termCol >= width) break;
|
|
75
|
-
|
|
76
|
-
const topDark = topRow ? (topRow[col] ?? false) : false;
|
|
77
|
-
const botDark = botRow ? (botRow[col] ?? false) : false;
|
|
78
|
-
|
|
79
|
-
let char: string;
|
|
80
|
-
let cellFg: string;
|
|
81
|
-
let cellBg: string;
|
|
82
|
-
|
|
83
|
-
if (topDark && botDark) {
|
|
84
|
-
char = '█';
|
|
85
|
-
cellFg = fg;
|
|
86
|
-
cellBg = bg;
|
|
87
|
-
} else if (topDark && !botDark) {
|
|
88
|
-
char = '▀';
|
|
89
|
-
cellFg = fg;
|
|
90
|
-
cellBg = bg;
|
|
91
|
-
} else if (!topDark && botDark) {
|
|
92
|
-
char = '▄';
|
|
93
|
-
cellFg = fg;
|
|
94
|
-
cellBg = bg;
|
|
95
|
-
} else {
|
|
96
|
-
char = ' ';
|
|
97
|
-
cellFg = fg;
|
|
98
|
-
cellBg = bg;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Some terminals may not render block chars at full width — guard
|
|
102
|
-
const charWidth = getDisplayWidth(char);
|
|
103
|
-
if (charWidth <= 0) {
|
|
104
|
-
line[termCol] = createStyledCell(' ', { fg: cellFg, bg: cellBg });
|
|
105
|
-
} else {
|
|
106
|
-
line[termCol] = createStyledCell(char, { fg: cellFg, bg: cellBg });
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Fill trailing with bg up to end of QR block
|
|
111
|
-
for (let col = leftPad + cols; col < leftPad + cols + 1 && col < width; col++) {
|
|
112
|
-
line[col] = createStyledCell(' ', { fg, bg });
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
lines.push(line);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
return lines;
|
|
119
|
-
}
|
|
120
|
-
|