@ironbee-ai/cli 0.12.0 → 0.14.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 +12 -0
- package/README.md +12 -2
- package/dist/assets/banner.txt +1 -1
- package/dist/clients/claude/hooks/activity-start.d.ts.map +1 -1
- package/dist/clients/claude/hooks/activity-start.js +4 -0
- package/dist/clients/claude/hooks/activity-start.js.map +1 -1
- package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
- package/dist/clients/claude/hooks/session-start.js +4 -0
- package/dist/clients/claude/hooks/session-start.js.map +1 -1
- package/dist/clients/claude/hooks/session-status.d.ts.map +1 -1
- package/dist/clients/claude/hooks/session-status.js +8 -2
- package/dist/clients/claude/hooks/session-status.js.map +1 -1
- package/dist/clients/claude/index.d.ts +10 -0
- package/dist/clients/claude/index.d.ts.map +1 -1
- package/dist/clients/claude/index.js +110 -0
- package/dist/clients/claude/index.js.map +1 -1
- package/dist/clients/cursor/index.d.ts.map +1 -1
- package/dist/clients/cursor/index.js +6 -0
- package/dist/clients/cursor/index.js.map +1 -1
- package/dist/clients/registry.d.ts +8 -9
- package/dist/clients/registry.d.ts.map +1 -1
- package/dist/clients/registry.js +13 -11
- package/dist/clients/registry.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +1 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +4 -5
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/otel.d.ts +20 -0
- package/dist/commands/otel.d.ts.map +1 -0
- package/dist/commands/otel.js +132 -0
- package/dist/commands/otel.js.map +1 -0
- package/dist/commands/register.d.ts +0 -1
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +7 -27
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/uninstall.d.ts +2 -3
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +3 -4
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/unregister.d.ts +0 -1
- package/dist/commands/unregister.d.ts.map +1 -1
- package/dist/commands/unregister.js +3 -24
- package/dist/commands/unregister.js.map +1 -1
- package/dist/index.js +37 -16
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +47 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +57 -3
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/event.d.ts +112 -0
- package/dist/lib/event.d.ts.map +1 -1
- package/dist/lib/event.js +1 -0
- package/dist/lib/event.js.map +1 -1
- package/dist/lib/fs-prune.d.ts +20 -0
- package/dist/lib/fs-prune.d.ts.map +1 -0
- package/dist/lib/fs-prune.js +72 -0
- package/dist/lib/fs-prune.js.map +1 -0
- package/dist/lib/gitignore.d.ts.map +1 -1
- package/dist/lib/gitignore.js +6 -0
- package/dist/lib/gitignore.js.map +1 -1
- package/dist/lib/projects-registry.d.ts +6 -13
- package/dist/lib/projects-registry.d.ts.map +1 -1
- package/dist/lib/projects-registry.js +11 -46
- package/dist/lib/projects-registry.js.map +1 -1
- package/dist/lib/version.d.ts +5 -0
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +5 -0
- package/dist/lib/version.js.map +1 -1
- package/dist/otel/collector.d.ts +66 -0
- package/dist/otel/collector.d.ts.map +1 -0
- package/dist/otel/collector.js +317 -0
- package/dist/otel/collector.js.map +1 -0
- package/dist/otel/context/build.d.ts +37 -0
- package/dist/otel/context/build.d.ts.map +1 -0
- package/dist/otel/context/build.js +103 -0
- package/dist/otel/context/build.js.map +1 -0
- package/dist/otel/context/classify.d.ts +40 -0
- package/dist/otel/context/classify.d.ts.map +1 -0
- package/dist/otel/context/classify.js +228 -0
- package/dist/otel/context/classify.js.map +1 -0
- package/dist/otel/context/extract.d.ts +39 -0
- package/dist/otel/context/extract.d.ts.map +1 -0
- package/dist/otel/context/extract.js +76 -0
- package/dist/otel/context/extract.js.map +1 -0
- package/dist/otel/context/markers.d.ts +37 -0
- package/dist/otel/context/markers.d.ts.map +1 -0
- package/dist/otel/context/markers.js +179 -0
- package/dist/otel/context/markers.js.map +1 -0
- package/dist/otel/context/util.d.ts +15 -0
- package/dist/otel/context/util.d.ts.map +1 -0
- package/dist/otel/context/util.js +33 -0
- package/dist/otel/context/util.js.map +1 -0
- package/dist/otel/daemon/ensure.d.ts +52 -0
- package/dist/otel/daemon/ensure.d.ts.map +1 -0
- package/dist/otel/daemon/ensure.js +226 -0
- package/dist/otel/daemon/ensure.js.map +1 -0
- package/dist/otel/daemon/forward.d.ts +47 -0
- package/dist/otel/daemon/forward.d.ts.map +1 -0
- package/dist/otel/daemon/forward.js +0 -0
- package/dist/otel/daemon/forward.js.map +1 -0
- package/dist/otel/daemon/paths.d.ts +24 -0
- package/dist/otel/daemon/paths.d.ts.map +1 -0
- package/dist/otel/daemon/paths.js +47 -0
- package/dist/otel/daemon/paths.js.map +1 -0
- package/dist/otel/daemon/process.d.ts +21 -0
- package/dist/otel/daemon/process.d.ts.map +1 -0
- package/dist/otel/daemon/process.js +149 -0
- package/dist/otel/daemon/process.js.map +1 -0
- package/dist/otel/daemon/reprocess.d.ts +27 -0
- package/dist/otel/daemon/reprocess.d.ts.map +1 -0
- package/dist/otel/daemon/reprocess.js +112 -0
- package/dist/otel/daemon/reprocess.js.map +1 -0
- package/dist/otel/log-handler.d.ts +37 -0
- package/dist/otel/log-handler.d.ts.map +1 -0
- package/dist/otel/log-handler.js +332 -0
- package/dist/otel/log-handler.js.map +1 -0
- package/dist/otel/metric-handler.d.ts +12 -0
- package/dist/otel/metric-handler.d.ts.map +1 -0
- package/dist/otel/metric-handler.js +18 -0
- package/dist/otel/metric-handler.js.map +1 -0
- package/dist/otel/trace-handler.d.ts +12 -0
- package/dist/otel/trace-handler.d.ts.map +1 -0
- package/dist/otel/trace-handler.js +18 -0
- package/dist/otel/trace-handler.js.map +1 -0
- package/dist/otel/types.d.ts +105 -0
- package/dist/otel/types.d.ts.map +1 -0
- package/dist/otel/types.js +15 -0
- package/dist/otel/types.js.map +1 -0
- package/dist/tui/command.d.ts +18 -0
- package/dist/tui/command.d.ts.map +1 -0
- package/dist/tui/command.js +87 -0
- package/dist/tui/command.js.map +1 -0
- package/dist/tui/config/area.d.ts +6 -0
- package/dist/tui/config/area.d.ts.map +1 -0
- package/dist/tui/config/area.js +16 -0
- package/dist/tui/config/area.js.map +1 -0
- package/dist/tui/config/docs.d.ts +28 -0
- package/dist/tui/config/docs.d.ts.map +1 -0
- package/dist/tui/config/docs.js +68 -0
- package/dist/tui/config/docs.js.map +1 -0
- package/dist/tui/config/edit.d.ts +36 -0
- package/dist/tui/config/edit.d.ts.map +1 -0
- package/dist/tui/config/edit.js +69 -0
- package/dist/tui/config/edit.js.map +1 -0
- package/dist/tui/config/introspect.d.ts +58 -0
- package/dist/tui/config/introspect.d.ts.map +1 -0
- package/dist/tui/config/introspect.js +93 -0
- package/dist/tui/config/introspect.js.map +1 -0
- package/dist/tui/config/schema.d.ts +81 -0
- package/dist/tui/config/schema.d.ts.map +1 -0
- package/dist/tui/config/schema.js +578 -0
- package/dist/tui/config/schema.js.map +1 -0
- package/dist/tui/config/tree.d.ts +39 -0
- package/dist/tui/config/tree.d.ts.map +1 -0
- package/dist/tui/config/tree.js +59 -0
- package/dist/tui/config/tree.js.map +1 -0
- package/dist/tui/config/value.d.ts +75 -0
- package/dist/tui/config/value.d.ts.map +1 -0
- package/dist/tui/config/value.js +228 -0
- package/dist/tui/config/value.js.map +1 -0
- package/dist/tui/config/view.d.ts +13 -0
- package/dist/tui/config/view.d.ts.map +1 -0
- package/dist/tui/config/view.js +423 -0
- package/dist/tui/config/view.js.map +1 -0
- package/dist/tui/import/area.d.ts +11 -0
- package/dist/tui/import/area.d.ts.map +1 -0
- package/dist/tui/import/area.js +202 -0
- package/dist/tui/import/area.js.map +1 -0
- package/dist/tui/index.d.ts +9 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +14 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/platforms/area.d.ts +12 -0
- package/dist/tui/platforms/area.d.ts.map +1 -0
- package/dist/tui/platforms/area.js +228 -0
- package/dist/tui/platforms/area.js.map +1 -0
- package/dist/tui/projects/area.d.ts +26 -0
- package/dist/tui/projects/area.d.ts.map +1 -0
- package/dist/tui/projects/area.js +588 -0
- package/dist/tui/projects/area.js.map +1 -0
- package/dist/tui/queue/area.d.ts +11 -0
- package/dist/tui/queue/area.d.ts.map +1 -0
- package/dist/tui/queue/area.js +338 -0
- package/dist/tui/queue/area.js.map +1 -0
- package/dist/tui/queue/read.d.ts +49 -0
- package/dist/tui/queue/read.d.ts.map +1 -0
- package/dist/tui/queue/read.js +261 -0
- package/dist/tui/queue/read.js.map +1 -0
- package/dist/tui/sessions/area.d.ts +10 -0
- package/dist/tui/sessions/area.d.ts.map +1 -0
- package/dist/tui/sessions/area.js +266 -0
- package/dist/tui/sessions/area.js.map +1 -0
- package/dist/tui/sessions/read.d.ts +79 -0
- package/dist/tui/sessions/read.d.ts.map +1 -0
- package/dist/tui/sessions/read.js +202 -0
- package/dist/tui/sessions/read.js.map +1 -0
- package/dist/tui/shell/area.d.ts +47 -0
- package/dist/tui/shell/area.d.ts.map +1 -0
- package/dist/tui/shell/area.js +13 -0
- package/dist/tui/shell/area.js.map +1 -0
- package/dist/tui/shell/frame.d.ts +23 -0
- package/dist/tui/shell/frame.d.ts.map +1 -0
- package/dist/tui/shell/frame.js +91 -0
- package/dist/tui/shell/frame.js.map +1 -0
- package/dist/tui/shell/registry.d.ts +11 -0
- package/dist/tui/shell/registry.d.ts.map +1 -0
- package/dist/tui/shell/registry.js +29 -0
- package/dist/tui/shell/registry.js.map +1 -0
- package/dist/tui/shell/rerender.d.ts +16 -0
- package/dist/tui/shell/rerender.d.ts.map +1 -0
- package/dist/tui/shell/rerender.js +34 -0
- package/dist/tui/shell/rerender.js.map +1 -0
- package/dist/tui/shell/session.d.ts +75 -0
- package/dist/tui/shell/session.d.ts.map +1 -0
- package/dist/tui/shell/session.js +333 -0
- package/dist/tui/shell/session.js.map +1 -0
- package/dist/tui/shell/shell.d.ts +16 -0
- package/dist/tui/shell/shell.d.ts.map +1 -0
- package/dist/tui/shell/shell.js +213 -0
- package/dist/tui/shell/shell.js.map +1 -0
- package/dist/tui/shell/util.d.ts +18 -0
- package/dist/tui/shell/util.d.ts.map +1 -0
- package/dist/tui/shell/util.js +31 -0
- package/dist/tui/shell/util.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1,588 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IronBee — Projects area
|
|
4
|
+
*
|
|
5
|
+
* Two clearly-separated sections, only ONE of which holds the keyboard at a time
|
|
6
|
+
* (Tab toggles; the active one gets a ▸ label + highlighted border, the other
|
|
7
|
+
* dims). Defaults to the Current directory panel. Distinct, STABLE letters —
|
|
8
|
+
* i install / x uninstall / a register / d unregister / c make active — so
|
|
9
|
+
* opposite actions never share a key; i/x/d mean the same thing in both sections
|
|
10
|
+
* (gated, dispatched to the cwd or the selected row by the active one):
|
|
11
|
+
* - a top "Current directory" panel — everything scoped to the cwd / -p the
|
|
12
|
+
* TUI launched in: `i` install here, `x` uninstall here, `a` register here,
|
|
13
|
+
* `d` unregister here, `c` (or Enter) make active. The action that applies
|
|
14
|
+
* now is bold, its opposite dimmed (e.g. installed → x bold, i dimmed).
|
|
15
|
+
* - a "Registered projects" list + detail — everything scoped to the SELECTED
|
|
16
|
+
* registered project (`↑/↓` move, `Enter` switch active, `i` install, `x`
|
|
17
|
+
* uninstall, `d` unregister). The split keeps "which command acts on what"
|
|
18
|
+
* unambiguous.
|
|
19
|
+
*
|
|
20
|
+
* register (a) / unregister (d) are pure inventory writes (applied immediately);
|
|
21
|
+
* install (i/n) / uninstall (x/n) touch artifacts and run in the FOREGROUND via
|
|
22
|
+
* session.runWithOutput (stdout captured into a pane). A client picker (the
|
|
23
|
+
* --client analog) is shown when >1 client is registered.
|
|
24
|
+
*/
|
|
25
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
26
|
+
if (k2 === undefined) k2 = k;
|
|
27
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
28
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
29
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
30
|
+
}
|
|
31
|
+
Object.defineProperty(o, k2, desc);
|
|
32
|
+
}) : (function(o, m, k, k2) {
|
|
33
|
+
if (k2 === undefined) k2 = k;
|
|
34
|
+
o[k2] = m[k];
|
|
35
|
+
}));
|
|
36
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
37
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
38
|
+
}) : function(o, v) {
|
|
39
|
+
o["default"] = v;
|
|
40
|
+
});
|
|
41
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
42
|
+
var ownKeys = function(o) {
|
|
43
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
44
|
+
var ar = [];
|
|
45
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
46
|
+
return ar;
|
|
47
|
+
};
|
|
48
|
+
return ownKeys(o);
|
|
49
|
+
};
|
|
50
|
+
return function (mod) {
|
|
51
|
+
if (mod && mod.__esModule) return mod;
|
|
52
|
+
var result = {};
|
|
53
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
54
|
+
__setModuleDefault(result, mod);
|
|
55
|
+
return result;
|
|
56
|
+
};
|
|
57
|
+
})();
|
|
58
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
59
|
+
exports.projectsArea = void 0;
|
|
60
|
+
const blessed = __importStar(require("blessed"));
|
|
61
|
+
const fs_1 = require("fs");
|
|
62
|
+
const path_1 = require("path");
|
|
63
|
+
const registry_1 = require("../../clients/registry");
|
|
64
|
+
const install_1 = require("../../commands/install");
|
|
65
|
+
const uninstall_1 = require("../../commands/uninstall");
|
|
66
|
+
const config_1 = require("../../lib/config");
|
|
67
|
+
const projects_registry_1 = require("../../lib/projects-registry");
|
|
68
|
+
const util_1 = require("../shell/util");
|
|
69
|
+
const CWD_PANEL_HEIGHT = 6;
|
|
70
|
+
function basename(p) {
|
|
71
|
+
const parts = p.replace(/[/\\]+$/, "").split(/[/\\]/);
|
|
72
|
+
return parts[parts.length - 1] || p;
|
|
73
|
+
}
|
|
74
|
+
function mountProjectsView(ctx) {
|
|
75
|
+
const launchDir = ctx.session.launchDir;
|
|
76
|
+
/** Canonical form of a path (matches how the registry stores entries); raw on failure. */
|
|
77
|
+
function safeCanonical(p) {
|
|
78
|
+
try {
|
|
79
|
+
return (0, projects_registry_1.canonicalizePath)(p);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return p;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const cwdCanonical = safeCanonical(launchDir);
|
|
86
|
+
let projects = (0, projects_registry_1.listProjects)();
|
|
87
|
+
// Default the cursor to the cwd's row when it's already registered, so the
|
|
88
|
+
// current directory is the selected project on entry (it's also the default
|
|
89
|
+
// active project — session.projectDir starts as launchDir).
|
|
90
|
+
let index = Math.max(0, projects.findIndex((p) => p.path === cwdCanonical));
|
|
91
|
+
// The active project, in canonical form, recomputed each render (it changes
|
|
92
|
+
// via switch / make-active). Used so ★ matches regardless of whether the
|
|
93
|
+
// active path is the raw launchDir or a canonical registry entry.
|
|
94
|
+
let activeCanonical = safeCanonical(ctx.session.projectDir);
|
|
95
|
+
// Which section owns the keyboard. Only one is active at a time (Tab
|
|
96
|
+
// toggles). Defaults to the Current directory panel — managing "here" is the
|
|
97
|
+
// common reason to open this area; Tab into the list to browse the registry.
|
|
98
|
+
let section = "cwd";
|
|
99
|
+
const cwdBox = blessed.box({
|
|
100
|
+
parent: ctx.container,
|
|
101
|
+
top: 0,
|
|
102
|
+
left: 0,
|
|
103
|
+
width: "100%",
|
|
104
|
+
height: CWD_PANEL_HEIGHT,
|
|
105
|
+
border: { type: "line" },
|
|
106
|
+
label: " Current directory ",
|
|
107
|
+
tags: true,
|
|
108
|
+
style: { border: { fg: "yellow" } },
|
|
109
|
+
content: "",
|
|
110
|
+
});
|
|
111
|
+
const list = blessed.list({
|
|
112
|
+
parent: ctx.container,
|
|
113
|
+
top: CWD_PANEL_HEIGHT,
|
|
114
|
+
left: 0,
|
|
115
|
+
width: "52%",
|
|
116
|
+
height: `100%-${CWD_PANEL_HEIGHT}`,
|
|
117
|
+
border: { type: "line" },
|
|
118
|
+
label: " Registered projects ",
|
|
119
|
+
tags: true,
|
|
120
|
+
keys: false,
|
|
121
|
+
mouse: false,
|
|
122
|
+
// invertSelected:false — blessed otherwise FORCES the selected row's fg to
|
|
123
|
+
// the row's base colour (element.js: "Ignore foreground changes for selected
|
|
124
|
+
// items"), which washes the inline {green-fg}●/{red-fg}○ dot to the default
|
|
125
|
+
// (grey-ish) terminal fg. With it off, the selected row keeps its own dot
|
|
126
|
+
// colour; selection is shown by background only (set in applyFocusStyles).
|
|
127
|
+
invertSelected: false,
|
|
128
|
+
scrollbar: { ch: " " },
|
|
129
|
+
style: { selected: { bg: "blue" }, border: { fg: "cyan" } },
|
|
130
|
+
items: [],
|
|
131
|
+
});
|
|
132
|
+
const detail = blessed.box({
|
|
133
|
+
parent: ctx.container,
|
|
134
|
+
top: CWD_PANEL_HEIGHT,
|
|
135
|
+
left: "52%",
|
|
136
|
+
width: "48%",
|
|
137
|
+
height: `100%-${CWD_PANEL_HEIGHT}`,
|
|
138
|
+
border: { type: "line" },
|
|
139
|
+
label: " Detail ",
|
|
140
|
+
tags: true,
|
|
141
|
+
scrollable: true,
|
|
142
|
+
alwaysScroll: true,
|
|
143
|
+
scrollbar: { ch: " " },
|
|
144
|
+
style: { border: { fg: "cyan" } },
|
|
145
|
+
content: "",
|
|
146
|
+
});
|
|
147
|
+
function selected() {
|
|
148
|
+
return projects.length === 0 ? undefined : projects[(0, util_1.clamp)(index, 0, projects.length - 1)];
|
|
149
|
+
}
|
|
150
|
+
function detectedNames(path) {
|
|
151
|
+
return (0, registry_1.detectClients)(path).map((c) => c.name).join(", ");
|
|
152
|
+
}
|
|
153
|
+
function isActive(path) {
|
|
154
|
+
return path === activeCanonical || safeCanonical(path) === activeCanonical;
|
|
155
|
+
}
|
|
156
|
+
function rowLabel(entry) {
|
|
157
|
+
const onDisk = (0, registry_1.isProjectActive)(entry);
|
|
158
|
+
const dot = onDisk ? "{green-fg}●{/green-fg}" : "{red-fg}○{/red-fg}";
|
|
159
|
+
const star = isActive(entry.path) ? "{yellow-fg}★{/yellow-fg} " : " ";
|
|
160
|
+
return `${star}${dot} ${(0, util_1.escapeTags)(basename(entry.path))} {gray-fg}${(0, util_1.escapeTags)(detectedNames(entry.path))}{/gray-fg}`;
|
|
161
|
+
}
|
|
162
|
+
/** Live install / registration / active state of the launch directory. */
|
|
163
|
+
function cwdState() {
|
|
164
|
+
return {
|
|
165
|
+
installed: detectedNames(launchDir),
|
|
166
|
+
registered: projects.some((p) => p.path === cwdCanonical),
|
|
167
|
+
active: isActive(cwdCanonical),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
// A key hint: bold (white) when the action applies right now, gray when it's
|
|
171
|
+
// a no-op in the current state. Distinct, STABLE letters — i/x for
|
|
172
|
+
// install/uninstall, a/d for register/unregister — so opposite actions never
|
|
173
|
+
// share a key.
|
|
174
|
+
function keyLabel(label, live) {
|
|
175
|
+
return live ? `{bold}${label}{/bold}` : `{gray-fg}${label}{/gray-fg}`;
|
|
176
|
+
}
|
|
177
|
+
/** The top panel: the cwd's path + install/registration/active state + its actions. */
|
|
178
|
+
function buildCwdPanel() {
|
|
179
|
+
const { installed, registered, active } = cwdState();
|
|
180
|
+
const inst = installed.length > 0;
|
|
181
|
+
const stateParts = [];
|
|
182
|
+
stateParts.push(inst
|
|
183
|
+
? `{green-fg}● installed{/green-fg} {gray-fg}(${(0, util_1.escapeTags)(installed)}){/gray-fg}`
|
|
184
|
+
: "{gray-fg}○ not installed{/gray-fg}");
|
|
185
|
+
stateParts.push(registered ? "{green-fg}registered{/green-fg}" : "{gray-fg}not registered{/gray-fg}");
|
|
186
|
+
stateParts.push(active ? "{yellow-fg}★ active project{/yellow-fg}" : "{gray-fg}not the active project{/gray-fg}");
|
|
187
|
+
// All actions shown with distinct stable letters; the one that applies
|
|
188
|
+
// now is bold, its opposite dimmed (e.g. installed → x bold, i dimmed).
|
|
189
|
+
const actions = `${keyLabel("i install", !inst)} ${keyLabel("x uninstall", inst)}`
|
|
190
|
+
+ ` {gray-fg}·{/gray-fg} ${keyLabel("a register", !registered)} ${keyLabel("d unregister", registered)}`
|
|
191
|
+
+ ` {gray-fg}·{/gray-fg} ${keyLabel("c make active", !active)}`;
|
|
192
|
+
const lines = [];
|
|
193
|
+
lines.push(`{bold}${(0, util_1.escapeTags)(launchDir)}{/bold}`);
|
|
194
|
+
lines.push(stateParts.join(" {gray-fg}·{/gray-fg} "));
|
|
195
|
+
lines.push(actions);
|
|
196
|
+
return lines.join("\n");
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Bottom status bar — shows ONLY the ACTIVE section's keys (what's live right
|
|
200
|
+
* now) plus the Tab hint + globals. The cwd section's install/uninstall and
|
|
201
|
+
* register/unregister carry distinct stable letters (i/x, a/d), bold when they
|
|
202
|
+
* apply, gray when a no-op.
|
|
203
|
+
*/
|
|
204
|
+
function buildStatus() {
|
|
205
|
+
const globals = "{bold}Tab{/bold} switch section {bold}I/X{/bold} all {bold}r{/bold} refresh {bold}Esc/q{/bold}";
|
|
206
|
+
let activeSeg;
|
|
207
|
+
if (section === "cwd") {
|
|
208
|
+
const { installed, registered } = cwdState();
|
|
209
|
+
const inst = installed.length > 0;
|
|
210
|
+
activeSeg =
|
|
211
|
+
`{cyan-fg}cwd:{/cyan-fg} ${keyLabel("i install", !inst)} ${keyLabel("x uninstall", inst)}`
|
|
212
|
+
+ ` ${keyLabel("a register", !registered)} ${keyLabel("d unregister", registered)} {bold}c{/bold} make active`;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
activeSeg = "{bold}↑/↓{/bold} move {bold}Enter{/bold} switch {bold}i{/bold} install {bold}x{/bold} uninstall {bold}d{/bold} unregister";
|
|
216
|
+
}
|
|
217
|
+
return ` ${activeSeg} {gray-fg}│{/gray-fg} ${globals}`;
|
|
218
|
+
}
|
|
219
|
+
function buildDetail(entry) {
|
|
220
|
+
if (entry === undefined) {
|
|
221
|
+
// Empty registry ⇒ the cwd is not registered (so `a` = register), but
|
|
222
|
+
// it may still be installed on disk — mirror the panel's install verb.
|
|
223
|
+
const installedHere = detectedNames(launchDir).length > 0;
|
|
224
|
+
const lines = [];
|
|
225
|
+
lines.push("{gray-fg}No projects registered yet.{/gray-fg}");
|
|
226
|
+
lines.push("");
|
|
227
|
+
lines.push("{gray-fg}Use the {/gray-fg}{bold}Current directory{/bold}{gray-fg} panel above:{/gray-fg}");
|
|
228
|
+
lines.push(installedHere
|
|
229
|
+
? "{bold}x{/bold} {gray-fg}— uninstall IronBee from here (removes hooks + guidance){/gray-fg}"
|
|
230
|
+
: "{bold}i{/bold} {gray-fg}— install IronBee here (writes hooks + guidance, registers it){/gray-fg}");
|
|
231
|
+
lines.push("{bold}a{/bold} {gray-fg}— register here only (inventory, no artifact writes){/gray-fg}");
|
|
232
|
+
return lines.join("\n");
|
|
233
|
+
}
|
|
234
|
+
const active = (0, registry_1.isProjectActive)(entry);
|
|
235
|
+
const paths = (0, config_1.getConfigLayerPaths)(entry.path);
|
|
236
|
+
const lines = [];
|
|
237
|
+
lines.push(`{bold}${(0, util_1.escapeTags)(basename(entry.path))}{/bold}`);
|
|
238
|
+
lines.push("{gray-fg}" + "─".repeat(46) + "{/gray-fg}");
|
|
239
|
+
lines.push(`{gray-fg}path:{/gray-fg} ${(0, util_1.escapeTags)(entry.path)}`);
|
|
240
|
+
lines.push(`{gray-fg}detected:{/gray-fg} ${(0, util_1.escapeTags)(detectedNames(entry.path)) || "(none on disk)"}`);
|
|
241
|
+
lines.push(`{gray-fg}added:{/gray-fg} ${(0, util_1.escapeTags)(entry.installedAt)}`);
|
|
242
|
+
lines.push(`{gray-fg}on disk:{/gray-fg} ${active ? "{green-fg}detected{/green-fg}" : "{red-fg}stale (artifacts not detected){/red-fg}"}`);
|
|
243
|
+
lines.push("");
|
|
244
|
+
lines.push("{bold}config layers{/bold}");
|
|
245
|
+
lines.push(` {gray-fg}global {/gray-fg} ${(0, util_1.escapeTags)(paths.global)}`);
|
|
246
|
+
lines.push(` {gray-fg}project{/gray-fg} ${(0, util_1.escapeTags)(paths.project ?? "-")}`);
|
|
247
|
+
lines.push(` {gray-fg}local {/gray-fg} ${(0, util_1.escapeTags)(paths.local ?? "-")}`);
|
|
248
|
+
lines.push("");
|
|
249
|
+
if (isActive(entry.path)) {
|
|
250
|
+
lines.push("{yellow-fg}★ active project{/yellow-fg} — Config / Sessions / Queue target this.");
|
|
251
|
+
lines.push("{gray-fg}c (in the cwd panel) = unselect → back to the current directory{/gray-fg}");
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
lines.push("{gray-fg}Enter/s = make active (Config / Sessions / Queue switch to it){/gray-fg}");
|
|
255
|
+
}
|
|
256
|
+
lines.push("{gray-fg}i = install · x = uninstall (pick a client when >1 registered; runs here, blocking){/gray-fg}");
|
|
257
|
+
return lines.join("\n");
|
|
258
|
+
}
|
|
259
|
+
/** Set a widget's border colour in place (mirrors blessed's live style obj). */
|
|
260
|
+
function setBorderFg(w, fg) {
|
|
261
|
+
const st = w.style;
|
|
262
|
+
if (st.border !== undefined) {
|
|
263
|
+
st.border.fg = fg;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Mark the active section with a ▸ label + highlighted border; dim the other,
|
|
267
|
+
// so it's always obvious which one the keyboard is driving. The selection is
|
|
268
|
+
// shown by BACKGROUND only (blue when the list is active, none when it isn't);
|
|
269
|
+
// the row's foreground is NEVER overridden, so each row always keeps its own
|
|
270
|
+
// dot colour (green ● on-disk / red ○ stale) — blessed applies style.selected
|
|
271
|
+
// fg/bg as the item's base attr (list.js), and an unset fg lets the inline
|
|
272
|
+
// {green-fg}/{red-fg} tags render. Overriding fg here was washing the selected
|
|
273
|
+
// row's dot to a single colour.
|
|
274
|
+
function applyFocusStyles() {
|
|
275
|
+
const cwdActive = section === "cwd";
|
|
276
|
+
cwdBox.setLabel(cwdActive ? " {yellow-fg}▸ Current directory{/yellow-fg} " : " Current directory ");
|
|
277
|
+
list.setLabel(cwdActive ? " Registered projects " : " {yellow-fg}▸ Registered projects{/yellow-fg} ");
|
|
278
|
+
setBorderFg(cwdBox, cwdActive ? "yellow" : "gray");
|
|
279
|
+
setBorderFg(list, cwdActive ? "gray" : "yellow");
|
|
280
|
+
setBorderFg(detail, cwdActive ? "gray" : "cyan");
|
|
281
|
+
const sel = list.style.selected ?? {};
|
|
282
|
+
sel.bg = cwdActive ? undefined : "blue"; // bar only when the list is active
|
|
283
|
+
sel.fg = undefined; // never override the row's own colours
|
|
284
|
+
}
|
|
285
|
+
function render() {
|
|
286
|
+
activeCanonical = safeCanonical(ctx.session.projectDir);
|
|
287
|
+
ctx.setStatus(buildStatus());
|
|
288
|
+
applyFocusStyles();
|
|
289
|
+
cwdBox.setContent(buildCwdPanel());
|
|
290
|
+
if (projects.length === 0) {
|
|
291
|
+
list.setItems(["{gray-fg}(no registered projects){/gray-fg}"]);
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
list.setItems(projects.map((p) => rowLabel(p)));
|
|
295
|
+
list.select((0, util_1.clamp)(index, 0, projects.length - 1));
|
|
296
|
+
}
|
|
297
|
+
detail.setContent(buildDetail(selected()));
|
|
298
|
+
detail.setScroll(0);
|
|
299
|
+
ctx.screen.render();
|
|
300
|
+
}
|
|
301
|
+
function toggleSection() {
|
|
302
|
+
section = section === "cwd" ? "list" : "cwd";
|
|
303
|
+
render();
|
|
304
|
+
}
|
|
305
|
+
// `selectTarget` (a canonical path) moves the cursor to that entry after the
|
|
306
|
+
// reload — used by register/install-cwd so the freshly-added launch dir is
|
|
307
|
+
// selected and immediately actionable (switch / unregister / uninstall).
|
|
308
|
+
function refresh(selectTarget) {
|
|
309
|
+
projects = (0, projects_registry_1.listProjects)();
|
|
310
|
+
if (selectTarget !== undefined) {
|
|
311
|
+
const at = projects.findIndex((p) => p.path === selectTarget);
|
|
312
|
+
if (at >= 0) {
|
|
313
|
+
index = at;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
index = (0, util_1.clamp)(index, 0, Math.max(0, projects.length - 1));
|
|
317
|
+
render();
|
|
318
|
+
}
|
|
319
|
+
function move(delta) {
|
|
320
|
+
if (projects.length === 0) {
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
index = (0, util_1.clamp)(index + delta, 0, projects.length - 1);
|
|
324
|
+
render();
|
|
325
|
+
}
|
|
326
|
+
function registerCwd() {
|
|
327
|
+
try {
|
|
328
|
+
(0, projects_registry_1.upsertProject)(launchDir);
|
|
329
|
+
refresh(cwdCanonical); // select the just-registered row
|
|
330
|
+
ctx.session.message(`Registered ${basename(launchDir)} in the inventory. Use d to unregister, i to install.`);
|
|
331
|
+
}
|
|
332
|
+
catch (e) {
|
|
333
|
+
ctx.session.message(`Register failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
// Pure inventory remove of the launch dir — leaves any artifacts on disk
|
|
337
|
+
// (matches `ironbee unregister`). For full teardown use `x` (uninstall).
|
|
338
|
+
function unregisterCwd() {
|
|
339
|
+
ctx.session.confirm(`Unregister ${basename(launchDir)}? (inventory only, no files touched)`, (yes) => {
|
|
340
|
+
if (!yes) {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
try {
|
|
344
|
+
(0, projects_registry_1.removeProject)(launchDir);
|
|
345
|
+
refresh();
|
|
346
|
+
}
|
|
347
|
+
catch (e) {
|
|
348
|
+
ctx.session.message(`Unregister failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
349
|
+
}
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
// The cwd panel's `a` — register the launch dir (inventory only). No-op (with
|
|
353
|
+
// a hint) when it's already registered; `d` unregisters.
|
|
354
|
+
function cwdRegister() {
|
|
355
|
+
if (projects.some((p) => p.path === cwdCanonical)) {
|
|
356
|
+
ctx.session.message(`${basename(launchDir)} is already registered — press d to unregister.`);
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
registerCwd();
|
|
360
|
+
}
|
|
361
|
+
// The cwd panel's `d` — unregister the launch dir (inventory only). No-op
|
|
362
|
+
// (with a hint) when it isn't registered.
|
|
363
|
+
function cwdUnregister() {
|
|
364
|
+
if (!projects.some((p) => p.path === cwdCanonical)) {
|
|
365
|
+
ctx.session.message(`${basename(launchDir)} is not registered — nothing to unregister.`);
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
unregisterCwd();
|
|
369
|
+
}
|
|
370
|
+
// Make the current directory the active project — also the "unselect" for a
|
|
371
|
+
// previously-switched project: there's always exactly one active project
|
|
372
|
+
// (the cwd is the home base it falls back to). Moves the cursor to the cwd
|
|
373
|
+
// row when it's registered.
|
|
374
|
+
function setActiveToCwd() {
|
|
375
|
+
if (isActive(cwdCanonical)) {
|
|
376
|
+
ctx.session.message(`The current directory (${basename(launchDir)}) is already the active project.`);
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
ctx.setActiveProject(cwdCanonical);
|
|
380
|
+
const at = projects.findIndex((p) => p.path === cwdCanonical);
|
|
381
|
+
if (at >= 0) {
|
|
382
|
+
index = at;
|
|
383
|
+
}
|
|
384
|
+
render();
|
|
385
|
+
ctx.session.message(`Active project → current directory (${basename(launchDir)}). Any switched project is unselected.`);
|
|
386
|
+
}
|
|
387
|
+
// Shared install core (used by the cwd panel `i` and the selected-row `i`).
|
|
388
|
+
// Writes artifacts for the chosen client(s) and adds the path to the
|
|
389
|
+
// inventory, then refreshes (selecting `selectAfter` when given).
|
|
390
|
+
function doInstall(targetPath, title, selectAfter) {
|
|
391
|
+
pickClient(title, (clients) => {
|
|
392
|
+
void ctx.session.runWithOutput(`Install ${basename(targetPath)} (${clients.map((c) => c.name).join(", ")})`, () => {
|
|
393
|
+
for (const client of clients) {
|
|
394
|
+
client.install(targetPath);
|
|
395
|
+
}
|
|
396
|
+
(0, projects_registry_1.upsertProject)(targetPath);
|
|
397
|
+
}).then(() => refresh(selectAfter));
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
// Shared uninstall core (used by the cwd panel `x` and the selected-row `x`).
|
|
401
|
+
// Confirms, removes artifacts for the chosen client(s), then runs the smart
|
|
402
|
+
// teardown (drop shared .ironbee/ + registry entry) when no OTHER client
|
|
403
|
+
// remains — keyed on which clients we uninstalled vs. the still-present
|
|
404
|
+
// others, NOT a post-uninstall detect (uninstall leaves the .claude/.cursor
|
|
405
|
+
// DIR behind, so a detect would keep the project looking "active").
|
|
406
|
+
function doUninstall(targetPath, selectAfter) {
|
|
407
|
+
pickClient("Uninstall which client?", (clients) => {
|
|
408
|
+
ctx.session.confirm(`Uninstall ${clients.map((c) => c.name).join(", ")} from ${basename(targetPath)}?`, (yes) => {
|
|
409
|
+
if (!yes) {
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
void ctx.session.runWithOutput(`Uninstall ${basename(targetPath)} (${clients.map((c) => c.name).join(", ")})`, () => {
|
|
413
|
+
const uninstalled = new Set(clients.map((c) => c.name));
|
|
414
|
+
for (const client of clients) {
|
|
415
|
+
client.uninstall(targetPath);
|
|
416
|
+
}
|
|
417
|
+
const otherClientPresent = registry_1.REGISTERED_CLIENTS.some((c) => !uninstalled.has(c.name) && c.detect(targetPath));
|
|
418
|
+
if (!otherClientPresent) {
|
|
419
|
+
const ironbeeDir = (0, path_1.join)(targetPath, ".ironbee");
|
|
420
|
+
if ((0, fs_1.existsSync)(ironbeeDir)) {
|
|
421
|
+
(0, fs_1.rmSync)(ironbeeDir, { recursive: true, force: true });
|
|
422
|
+
}
|
|
423
|
+
(0, projects_registry_1.removeProject)(targetPath);
|
|
424
|
+
}
|
|
425
|
+
}).then(() => refresh(selectAfter));
|
|
426
|
+
});
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
// The cwd panel's `i` — install IronBee into the LAUNCH directory (the cwd /
|
|
430
|
+
// -p the TUI started in, NOT the switchable active project). No-op (with a
|
|
431
|
+
// hint) when it's already installed; `x` uninstalls.
|
|
432
|
+
function cwdInstall() {
|
|
433
|
+
if (detectedNames(launchDir).length > 0) {
|
|
434
|
+
ctx.session.message(`${basename(launchDir)} is already installed — press x to uninstall.`);
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
doInstall(launchDir, "Install into the current directory — which client?", cwdCanonical);
|
|
438
|
+
}
|
|
439
|
+
// The cwd panel's `x` — uninstall from the launch dir (+ smart teardown).
|
|
440
|
+
// No-op (with a hint) when nothing is installed.
|
|
441
|
+
function cwdUninstall() {
|
|
442
|
+
if (detectedNames(launchDir).length === 0) {
|
|
443
|
+
ctx.session.message(`${basename(launchDir)} is not installed — nothing to uninstall.`);
|
|
444
|
+
return;
|
|
445
|
+
}
|
|
446
|
+
doUninstall(launchDir, cwdCanonical);
|
|
447
|
+
}
|
|
448
|
+
function switchTo() {
|
|
449
|
+
const entry = selected();
|
|
450
|
+
if (entry === undefined) {
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
ctx.setActiveProject(entry.path);
|
|
454
|
+
render();
|
|
455
|
+
ctx.session.message(`Active project → ${basename(entry.path)}. Config / Sessions / Queue now target it.`);
|
|
456
|
+
}
|
|
457
|
+
function unregisterSelected() {
|
|
458
|
+
const entry = selected();
|
|
459
|
+
if (entry === undefined) {
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
ctx.session.confirm(`Unregister ${basename(entry.path)}? (inventory only, no files touched)`, (yes) => {
|
|
463
|
+
if (!yes) {
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
try {
|
|
467
|
+
(0, projects_registry_1.removeProject)(entry.path);
|
|
468
|
+
refresh();
|
|
469
|
+
}
|
|
470
|
+
catch (e) {
|
|
471
|
+
ctx.session.message(`Unregister failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
472
|
+
}
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
// Offer a client choice (the `--client` analog) when more than one client
|
|
476
|
+
// is registered; with a single client, skip the picker. `cb` gets the
|
|
477
|
+
// chosen clients (or all on "All clients").
|
|
478
|
+
function pickClient(title, cb) {
|
|
479
|
+
if (registry_1.REGISTERED_CLIENTS.length <= 1) {
|
|
480
|
+
cb(registry_1.REGISTERED_CLIENTS);
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
const names = registry_1.REGISTERED_CLIENTS.map((c) => c.name);
|
|
484
|
+
ctx.session.pick(title, ["All clients", ...names], (idx) => {
|
|
485
|
+
if (idx < 0) {
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
cb(idx === 0 ? registry_1.REGISTERED_CLIENTS : [registry_1.REGISTERED_CLIENTS[idx - 1]]);
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
function installSelected() {
|
|
492
|
+
const entry = selected();
|
|
493
|
+
if (entry === undefined) {
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
doInstall(entry.path, "Install which client?");
|
|
497
|
+
}
|
|
498
|
+
function uninstallSelected() {
|
|
499
|
+
const entry = selected();
|
|
500
|
+
if (entry === undefined) {
|
|
501
|
+
return;
|
|
502
|
+
}
|
|
503
|
+
doUninstall(entry.path);
|
|
504
|
+
}
|
|
505
|
+
async function installAll() {
|
|
506
|
+
await ctx.session.runWithOutput("Install — all registered projects", async () => {
|
|
507
|
+
await (0, install_1.runInstallAll)({});
|
|
508
|
+
});
|
|
509
|
+
refresh();
|
|
510
|
+
}
|
|
511
|
+
function uninstallAllFlow() {
|
|
512
|
+
ctx.session.confirm("Uninstall IronBee from ALL registered projects? (destructive)", (yes) => {
|
|
513
|
+
if (!yes) {
|
|
514
|
+
return;
|
|
515
|
+
}
|
|
516
|
+
void ctx.session.runWithOutput("Uninstall — all registered projects", async () => {
|
|
517
|
+
await (0, uninstall_1.runUninstallAll)({ yes: true });
|
|
518
|
+
}).then(() => refresh());
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
// Tab toggles which section owns the keyboard; each section's keys are gated
|
|
522
|
+
// so only the active section responds (no cross-talk between the two).
|
|
523
|
+
list.key(["tab"], () => toggleSection());
|
|
524
|
+
list.key(["S-tab"], () => toggleSection());
|
|
525
|
+
list.key(["up", "k"], () => { if (section === "list") {
|
|
526
|
+
move(-1);
|
|
527
|
+
} });
|
|
528
|
+
list.key(["down", "j"], () => { if (section === "list") {
|
|
529
|
+
move(1);
|
|
530
|
+
} });
|
|
531
|
+
// i / x / d carry the SAME meaning in both sections (install / uninstall /
|
|
532
|
+
// unregister), dispatched to the cwd or to the selected row by the active
|
|
533
|
+
// section. a (register) and c (make active) are cwd-only.
|
|
534
|
+
list.key(["i"], () => { if (section === "cwd") {
|
|
535
|
+
cwdInstall();
|
|
536
|
+
}
|
|
537
|
+
else {
|
|
538
|
+
installSelected();
|
|
539
|
+
} });
|
|
540
|
+
list.key(["x"], () => { if (section === "cwd") {
|
|
541
|
+
cwdUninstall();
|
|
542
|
+
}
|
|
543
|
+
else {
|
|
544
|
+
uninstallSelected();
|
|
545
|
+
} });
|
|
546
|
+
list.key(["d"], () => { if (section === "cwd") {
|
|
547
|
+
cwdUnregister();
|
|
548
|
+
}
|
|
549
|
+
else {
|
|
550
|
+
unregisterSelected();
|
|
551
|
+
} });
|
|
552
|
+
list.key(["a"], () => { if (section === "cwd") {
|
|
553
|
+
cwdRegister();
|
|
554
|
+
} });
|
|
555
|
+
list.key(["c"], () => { if (section === "cwd") {
|
|
556
|
+
setActiveToCwd();
|
|
557
|
+
} });
|
|
558
|
+
// Enter: switch active in the list; make-active in the cwd panel.
|
|
559
|
+
list.key(["enter", "s"], () => { if (section === "list") {
|
|
560
|
+
switchTo();
|
|
561
|
+
}
|
|
562
|
+
else {
|
|
563
|
+
setActiveToCwd();
|
|
564
|
+
} });
|
|
565
|
+
// global (either section)
|
|
566
|
+
list.key(["S-i"], () => { void installAll(); });
|
|
567
|
+
list.key(["S-x"], () => uninstallAllFlow());
|
|
568
|
+
list.key(["r"], () => refresh());
|
|
569
|
+
render();
|
|
570
|
+
list.focus();
|
|
571
|
+
ctx.screen.render();
|
|
572
|
+
return {
|
|
573
|
+
unmount() {
|
|
574
|
+
cwdBox.destroy();
|
|
575
|
+
list.destroy();
|
|
576
|
+
detail.destroy();
|
|
577
|
+
},
|
|
578
|
+
};
|
|
579
|
+
}
|
|
580
|
+
exports.projectsArea = {
|
|
581
|
+
id: "projects",
|
|
582
|
+
title: "Projects",
|
|
583
|
+
summary: "Registry — switch active · register / unregister · install / uninstall (+ --all)",
|
|
584
|
+
mount(ctx) {
|
|
585
|
+
return mountProjectsView(ctx);
|
|
586
|
+
},
|
|
587
|
+
};
|
|
588
|
+
//# sourceMappingURL=area.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"area.js","sourceRoot":"","sources":["../../../src/tui/projects/area.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IronBee — Queue area (read-only)
|
|
3
|
+
*
|
|
4
|
+
* Per-session view of the file-backed job queue: pending jobs (live + frozen
|
|
5
|
+
* snapshots) and dead-letter counts. Read-only operator view backed by the pure
|
|
6
|
+
* `listQueues` reader; draining / retrying stays on the `ironbee queue` CLI
|
|
7
|
+
* (those spawn workers / print, which would corrupt the screen).
|
|
8
|
+
*/
|
|
9
|
+
import { TuiArea } from "../shell/area";
|
|
10
|
+
export declare const queueArea: TuiArea;
|
|
11
|
+
//# sourceMappingURL=area.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"area.d.ts","sourceRoot":"","sources":["../../../src/tui/queue/area.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH,OAAO,EAA2B,OAAO,EAAE,MAAM,eAAe,CAAC;AAoTjE,eAAO,MAAM,SAAS,EAAE,OAOvB,CAAC"}
|