@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,578 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IronBee — Config TUI: canonical config-key schema
|
|
4
|
+
*
|
|
5
|
+
* Single source of truth for every config key the TUI knows about. Each
|
|
6
|
+
* entry carries the metadata the TUI needs to render and edit a key:
|
|
7
|
+
* - `path` — dotted key (e.g. `collector.url`). The list/docs
|
|
8
|
+
* group is DERIVED from its first segment ({@link groupOf}).
|
|
9
|
+
* - `type` — value shape (drives validation hints)
|
|
10
|
+
* - `editor` — which edit affordance the TUI offers
|
|
11
|
+
* - `description` — concise one-paragraph explanation (shown in detail)
|
|
12
|
+
* - `def` — human-readable default (display only)
|
|
13
|
+
* - `enumValues?` — allowed values for `enum` editor
|
|
14
|
+
* - `artifactAffecting` — whether changing it requires re-rendering installed
|
|
15
|
+
* client artifacts (hooks / MCP / skill-rule md /
|
|
16
|
+
* permissions). Mirrors `ARTIFACT_AFFECTING_TOP_KEYS`
|
|
17
|
+
* in `src/commands/config.ts` — kept here so the TUI
|
|
18
|
+
* stays self-contained (no import from the command
|
|
19
|
+
* layer). A consistency test asserts the two agree.
|
|
20
|
+
*
|
|
21
|
+
* This module has ZERO runtime dependencies on the rest of the codebase so it
|
|
22
|
+
* can be unit-tested in isolation and imported from anywhere.
|
|
23
|
+
*/
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.CONFIG_SCHEMA = exports.GROUP_TITLES = exports.GROUP_ORDER = exports.ARTIFACT_AFFECTING_TOP_KEYS = void 0;
|
|
26
|
+
exports.topKey = topKey;
|
|
27
|
+
exports.groupOf = groupOf;
|
|
28
|
+
exports.groupTitle = groupTitle;
|
|
29
|
+
exports.groupRank = groupRank;
|
|
30
|
+
exports.findSchemaEntry = findSchemaEntry;
|
|
31
|
+
exports.orderedEntries = orderedEntries;
|
|
32
|
+
/**
|
|
33
|
+
* Top-level keys whose change requires re-rendering installed client
|
|
34
|
+
* artifacts. Mirrors `ARTIFACT_AFFECTING_TOP_KEYS` in `src/commands/config.ts`.
|
|
35
|
+
* Duplicated (not imported) to keep this module decoupled from the command
|
|
36
|
+
* layer; `tests/unit/tui/config-schema.test.ts` asserts every schema entry's
|
|
37
|
+
* `artifactAffecting` flag matches membership here.
|
|
38
|
+
*/
|
|
39
|
+
exports.ARTIFACT_AFFECTING_TOP_KEYS = new Set([
|
|
40
|
+
"verification",
|
|
41
|
+
"collector",
|
|
42
|
+
"browser",
|
|
43
|
+
"node",
|
|
44
|
+
"backend",
|
|
45
|
+
"browserDevTools",
|
|
46
|
+
"nodeDevTools",
|
|
47
|
+
"backendDevTools",
|
|
48
|
+
"telemetry",
|
|
49
|
+
"statusLine",
|
|
50
|
+
"otel",
|
|
51
|
+
]);
|
|
52
|
+
/**
|
|
53
|
+
* Display order of groups in the list pane. Group MEMBERSHIP is derived from
|
|
54
|
+
* each key's first dot-segment ({@link groupOf}) — this list only controls the
|
|
55
|
+
* ORDER they appear in (and which trailing groups are "known"). Unknown groups
|
|
56
|
+
* (a future top segment not listed here) sort after these, alphabetically.
|
|
57
|
+
*/
|
|
58
|
+
exports.GROUP_ORDER = [
|
|
59
|
+
"general",
|
|
60
|
+
"verification",
|
|
61
|
+
"browser",
|
|
62
|
+
"node",
|
|
63
|
+
"backend",
|
|
64
|
+
"collector",
|
|
65
|
+
"recording",
|
|
66
|
+
"jobQueue",
|
|
67
|
+
"analytics",
|
|
68
|
+
"statusLine",
|
|
69
|
+
"telemetry",
|
|
70
|
+
"otel",
|
|
71
|
+
"fileChange",
|
|
72
|
+
"import",
|
|
73
|
+
"browserDevTools",
|
|
74
|
+
"nodeDevTools",
|
|
75
|
+
"backendDevTools",
|
|
76
|
+
];
|
|
77
|
+
/** Human-readable section headings, keyed by group (= first path segment). */
|
|
78
|
+
exports.GROUP_TITLES = {
|
|
79
|
+
general: "General",
|
|
80
|
+
verification: "Verification",
|
|
81
|
+
browser: "Browser cycle",
|
|
82
|
+
node: "Node cycle",
|
|
83
|
+
backend: "Backend cycle",
|
|
84
|
+
collector: "Collector",
|
|
85
|
+
recording: "Recording",
|
|
86
|
+
jobQueue: "Job queue",
|
|
87
|
+
analytics: "Analytics",
|
|
88
|
+
statusLine: "Statusline",
|
|
89
|
+
telemetry: "Telemetry",
|
|
90
|
+
otel: "OTEL collector",
|
|
91
|
+
fileChange: "File change",
|
|
92
|
+
import: "Import",
|
|
93
|
+
browserDevTools: "Browser DevTools MCP",
|
|
94
|
+
nodeDevTools: "Node DevTools MCP",
|
|
95
|
+
backendDevTools: "Backend DevTools MCP",
|
|
96
|
+
};
|
|
97
|
+
/** Top-level segment of a dotted path. */
|
|
98
|
+
function topKey(dotPath) {
|
|
99
|
+
const idx = dotPath.indexOf(".");
|
|
100
|
+
return idx === -1 ? dotPath : dotPath.slice(0, idx);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The group a key belongs to — its first dot-segment, or `"general"` for
|
|
104
|
+
* top-level (dot-less) keys like `maxRetries` / `ignoredVerifyPatterns`. This
|
|
105
|
+
* is the single, data-driven grouping used by the TUI list and the docs table;
|
|
106
|
+
* there is no hand-maintained group field to drift.
|
|
107
|
+
*/
|
|
108
|
+
function groupOf(path) {
|
|
109
|
+
const idx = path.indexOf(".");
|
|
110
|
+
return idx === -1 ? "general" : path.slice(0, idx);
|
|
111
|
+
}
|
|
112
|
+
/** Display title for a group, falling back to the raw group name. */
|
|
113
|
+
function groupTitle(group) {
|
|
114
|
+
return exports.GROUP_TITLES[group] ?? group;
|
|
115
|
+
}
|
|
116
|
+
/** Sort rank for a group per {@link GROUP_ORDER}; unknown groups sort last. */
|
|
117
|
+
function groupRank(group) {
|
|
118
|
+
const idx = exports.GROUP_ORDER.indexOf(group);
|
|
119
|
+
return idx === -1 ? exports.GROUP_ORDER.length : idx;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The canonical config-key registry. Adding a config key to IronBee should be
|
|
123
|
+
* accompanied by an entry here — the schema test fails loudly otherwise, which
|
|
124
|
+
* is the canonical-source guarantee.
|
|
125
|
+
*/
|
|
126
|
+
exports.CONFIG_SCHEMA = [
|
|
127
|
+
// ── general ────────────────────────────────────────────────────────────
|
|
128
|
+
{
|
|
129
|
+
path: "ignoredVerifyPatterns",
|
|
130
|
+
type: "string-array",
|
|
131
|
+
editor: "string-list",
|
|
132
|
+
description: "Glob patterns excluded from verification, applied to every cycle (browser / node / backend). Checked first — a match here activates no cycle regardless of other patterns.",
|
|
133
|
+
def: "[]",
|
|
134
|
+
artifactAffecting: false,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
path: "maxRetries",
|
|
138
|
+
type: "number",
|
|
139
|
+
editor: "number",
|
|
140
|
+
description: "Max verification retry attempts before the gate allows completion despite failures. Single global counter regardless of how many cycles ran.",
|
|
141
|
+
def: "3",
|
|
142
|
+
artifactAffecting: false,
|
|
143
|
+
},
|
|
144
|
+
// ── verification ───────────────────────────────────────────────────────
|
|
145
|
+
{
|
|
146
|
+
path: "verification.enable",
|
|
147
|
+
type: "boolean",
|
|
148
|
+
editor: "toggle",
|
|
149
|
+
description: "Master enforcement switch. Inverse semantics — verification is the core feature, opt out with false. When false, IronBee runs monitoring-only: no enforcement hooks, no skill/rule, no MCP servers; only session/activity/tool_call events flow to the collector.",
|
|
150
|
+
def: "true",
|
|
151
|
+
artifactAffecting: true,
|
|
152
|
+
},
|
|
153
|
+
// ── browser cycle ──────────────────────────────────────────────────────
|
|
154
|
+
{
|
|
155
|
+
path: "browser.enable",
|
|
156
|
+
type: "boolean",
|
|
157
|
+
editor: "toggle",
|
|
158
|
+
description: "Explicit on/off for the browser cycle. Written false by `browser disable`, stripped by `browser enable`. When false the cycle is disabled regardless of patterns.",
|
|
159
|
+
def: "(absent → on; browser is the only default-on cycle)",
|
|
160
|
+
artifactAffecting: true,
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
path: "browser.verifyPatterns",
|
|
164
|
+
type: "string-array",
|
|
165
|
+
editor: "string-list",
|
|
166
|
+
description: "Glob patterns for files requiring browser verification. Four-state: absent → code defaults (40+ extensions); [] → hard kill; non-empty → custom patterns (replaces defaults).",
|
|
167
|
+
def: "40+ code extensions when unset; [] hard-disables",
|
|
168
|
+
artifactAffecting: true,
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
path: "browser.additionalVerifyPatterns",
|
|
172
|
+
type: "string-array",
|
|
173
|
+
editor: "string-list",
|
|
174
|
+
description: "Extra patterns appended to browser.verifyPatterns (or to code defaults when verifyPatterns is unset). Ignored when verifyPatterns is [] (hard kill wins).",
|
|
175
|
+
def: "[]",
|
|
176
|
+
artifactAffecting: true,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
path: "browser.alwaysRequired",
|
|
180
|
+
type: "string-array",
|
|
181
|
+
editor: "string-list",
|
|
182
|
+
description: "Browser-cycle required tools (all-of). The verify-gate blocks completion until every listed bdt_* tool was used.",
|
|
183
|
+
def: "bdt_navigation_go-to, bdt_content_take-screenshot, bdt_a11y_take-aria-snapshot, bdt_o11y_get-console-messages",
|
|
184
|
+
artifactAffecting: true,
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
path: "browser.evidencePaths",
|
|
188
|
+
type: "json",
|
|
189
|
+
editor: "json",
|
|
190
|
+
description: "Alternative tool-satisfaction paths (any-of). Browser uses pure all-of, so default is empty. Each path: { name, allOf: (string | { anyOf: string[] })[] }.",
|
|
191
|
+
def: "[]",
|
|
192
|
+
artifactAffecting: true,
|
|
193
|
+
},
|
|
194
|
+
// ── node cycle ─────────────────────────────────────────────────────────
|
|
195
|
+
{
|
|
196
|
+
path: "node.enable",
|
|
197
|
+
type: "boolean",
|
|
198
|
+
editor: "toggle",
|
|
199
|
+
description: "Explicit on/off for the Node.js runtime debug cycle (node-devtools, ndt_* V8 inspector probes). Opt-in — written by `node enable`.",
|
|
200
|
+
def: "(absent → off; node is opt-in)",
|
|
201
|
+
artifactAffecting: true,
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
path: "node.verifyPatterns",
|
|
205
|
+
type: "string-array",
|
|
206
|
+
editor: "string-list",
|
|
207
|
+
description: "Glob patterns for the Node.js runtime debug cycle. Default-off — block absent = inert. Block present + unset → 9 code defaults (server/api/routes paths).",
|
|
208
|
+
def: "block absent → disabled; present + unset → code defaults",
|
|
209
|
+
artifactAffecting: true,
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
path: "node.additionalVerifyPatterns",
|
|
213
|
+
type: "string-array",
|
|
214
|
+
editor: "string-list",
|
|
215
|
+
description: "Extra patterns appended to node.verifyPatterns (or to code defaults when unset). Ignored when verifyPatterns is [].",
|
|
216
|
+
def: "[]",
|
|
217
|
+
artifactAffecting: true,
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
path: "node.alwaysRequired",
|
|
221
|
+
type: "string-array",
|
|
222
|
+
editor: "string-list",
|
|
223
|
+
description: "Node-cycle required tools (all-of). ndt_debug_connect always; evidence paths supply the rest.",
|
|
224
|
+
def: "[ndt_debug_connect]",
|
|
225
|
+
artifactAffecting: true,
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
path: "node.evidencePaths",
|
|
229
|
+
type: "json",
|
|
230
|
+
editor: "json",
|
|
231
|
+
description: "Alternative tool paths (any-of). Default: probe path (a put-*point AND get-probe-snapshots) OR log path (get-logs).",
|
|
232
|
+
def: "probe path + log path",
|
|
233
|
+
artifactAffecting: true,
|
|
234
|
+
},
|
|
235
|
+
// ── backend cycle ──────────────────────────────────────────────────────
|
|
236
|
+
{
|
|
237
|
+
path: "backend.enable",
|
|
238
|
+
type: "boolean",
|
|
239
|
+
editor: "toggle",
|
|
240
|
+
description: "Explicit on/off for the runtime-agnostic backend protocol cycle (backend-devtools, bedt_* HTTP/gRPC/GraphQL/WebSocket). Opt-in — written by `backend enable`.",
|
|
241
|
+
def: "(absent → off; backend is opt-in)",
|
|
242
|
+
artifactAffecting: true,
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
path: "backend.verifyPatterns",
|
|
246
|
+
type: "string-array",
|
|
247
|
+
editor: "string-list",
|
|
248
|
+
description: "Glob patterns for the backend protocol cycle. Default-off — block absent = inert. Block present + unset → 13 multi-language code defaults (ts/js/py/go/java/rb/cs/rs/kt/scala/ex/php/clj).",
|
|
249
|
+
def: "block absent → disabled; present + unset → code defaults",
|
|
250
|
+
artifactAffecting: true,
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
path: "backend.additionalVerifyPatterns",
|
|
254
|
+
type: "string-array",
|
|
255
|
+
editor: "string-list",
|
|
256
|
+
description: "Extra patterns appended to backend.verifyPatterns (or to code defaults when unset). Ignored when verifyPatterns is [].",
|
|
257
|
+
def: "[]",
|
|
258
|
+
artifactAffecting: true,
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
path: "backend.alwaysRequired",
|
|
262
|
+
type: "string-array",
|
|
263
|
+
editor: "string-list",
|
|
264
|
+
description: "Backend-cycle required tools (all-of). Empty by default — backend uses any-of evidence paths instead.",
|
|
265
|
+
def: "[]",
|
|
266
|
+
artifactAffecting: true,
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
path: "backend.evidencePaths",
|
|
270
|
+
type: "json",
|
|
271
|
+
editor: "json",
|
|
272
|
+
description: "Alternative tool paths (any-of). Default three: protocol-call (any request tool) OR log-evidence (register-source + read) OR db-evidence (db_connect + a read op).",
|
|
273
|
+
def: "protocol-call OR log-evidence OR db-evidence",
|
|
274
|
+
artifactAffecting: true,
|
|
275
|
+
},
|
|
276
|
+
// ── collector ──────────────────────────────────────────────────────────
|
|
277
|
+
{
|
|
278
|
+
path: "collector.enable",
|
|
279
|
+
type: "boolean",
|
|
280
|
+
editor: "toggle",
|
|
281
|
+
description: "Master switch for the IronBee Collector. Implicitly true when the section has both url and apiKey; set false to suspend while keeping url/apiKey/batchSize around.",
|
|
282
|
+
def: "implicit true when url + apiKey set",
|
|
283
|
+
artifactAffecting: true,
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
path: "collector.url",
|
|
287
|
+
type: "string",
|
|
288
|
+
editor: "text",
|
|
289
|
+
description: "Remote collector endpoint URL (IronBee Platform). Required for the collector to be active. Events POST to {url}/v1/events.",
|
|
290
|
+
def: "(unset → disabled)",
|
|
291
|
+
artifactAffecting: true,
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
path: "collector.apiKey",
|
|
295
|
+
type: "string",
|
|
296
|
+
editor: "text",
|
|
297
|
+
description: "API key for collector auth (X-API-Key header). Required for the collector to be active. Can be supplied via the IRONBEE_API_KEY env var instead of committing it.",
|
|
298
|
+
def: "(unset → disabled)",
|
|
299
|
+
artifactAffecting: true,
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
path: "collector.batchSize",
|
|
303
|
+
type: "number",
|
|
304
|
+
editor: "number",
|
|
305
|
+
description: "Max events per POST from the send_event handler (the queue chunks bigger snapshots into N-sized POSTs).",
|
|
306
|
+
def: "100",
|
|
307
|
+
artifactAffecting: true,
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
path: "collector.timeoutMs",
|
|
311
|
+
type: "number",
|
|
312
|
+
editor: "number",
|
|
313
|
+
description: "Per-request HTTP timeout (ms) for batched analytics sends. Single-event interactive sends keep a fixed 3000ms cap. Clamped to [1000, 60000].",
|
|
314
|
+
def: "10000",
|
|
315
|
+
artifactAffecting: true,
|
|
316
|
+
},
|
|
317
|
+
// ── recording ──────────────────────────────────────────────────────────
|
|
318
|
+
{
|
|
319
|
+
path: "recording.enable",
|
|
320
|
+
type: "boolean",
|
|
321
|
+
editor: "toggle",
|
|
322
|
+
description: "Browser-only recording enforcement. Presence opts in; enable:false opts out. Auto-enabled when a collector is configured. Backend/node cycles never trigger recording.",
|
|
323
|
+
def: "implicit true when section present or collector configured",
|
|
324
|
+
artifactAffecting: false,
|
|
325
|
+
},
|
|
326
|
+
// ── jobQueue ───────────────────────────────────────────────────────────
|
|
327
|
+
{
|
|
328
|
+
path: "jobQueue.enable",
|
|
329
|
+
type: "boolean",
|
|
330
|
+
editor: "toggle",
|
|
331
|
+
description: "Master switch for the file-backed job queue. Presence opts in; enable:false opts out. Auto-enabled when a collector is configured (a collector is pointless without a queue feeding it).",
|
|
332
|
+
def: "implicit true when section present or collector configured",
|
|
333
|
+
artifactAffecting: false,
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
path: "jobQueue.autoFlushSizeBytes",
|
|
337
|
+
type: "number",
|
|
338
|
+
editor: "number",
|
|
339
|
+
description: "Size threshold (bytes) above which submit() spawns a detached worker mid-session. 0 / negative disables this check.",
|
|
340
|
+
def: "32768 (32 KB)",
|
|
341
|
+
artifactAffecting: false,
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
path: "jobQueue.autoFlushIntervalSeconds",
|
|
345
|
+
type: "number",
|
|
346
|
+
editor: "number",
|
|
347
|
+
description: "Interval threshold (seconds since the live jobs.jsonl was created) above which submit() spawns a detached worker. Complements size — whichever crosses first flushes. 0 / negative disables.",
|
|
348
|
+
def: "60",
|
|
349
|
+
artifactAffecting: false,
|
|
350
|
+
},
|
|
351
|
+
// ── analytics ──────────────────────────────────────────────────────────
|
|
352
|
+
{
|
|
353
|
+
path: "analytics.enable",
|
|
354
|
+
type: "boolean",
|
|
355
|
+
editor: "toggle",
|
|
356
|
+
description: "Master switch for per-session structural analytics. Presence opts in; enable:false opts out. Auto-enabled when a collector is configured.",
|
|
357
|
+
def: "implicit true when section present or collector configured",
|
|
358
|
+
artifactAffecting: false,
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
path: "analytics.emitOnStop",
|
|
362
|
+
type: "boolean",
|
|
363
|
+
editor: "toggle",
|
|
364
|
+
description: "When true, project + emit analytics at every Stop hook. When false, only at SessionEnd.",
|
|
365
|
+
def: "true",
|
|
366
|
+
artifactAffecting: false,
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
path: "analytics.emitOnStopMinIntervalSeconds",
|
|
370
|
+
type: "number",
|
|
371
|
+
editor: "number",
|
|
372
|
+
description: "Throttle: skip Stop-hook projection if the last successful emit was within this many seconds. 0 disables the throttle (backend handles rate-limit / dedupe).",
|
|
373
|
+
def: "0 (disabled)",
|
|
374
|
+
artifactAffecting: false,
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
path: "analytics.emitTurnEvents",
|
|
378
|
+
type: "boolean",
|
|
379
|
+
editor: "toggle",
|
|
380
|
+
description: "Opt-in for per-turn session_turn_analytics wire records. High-volume secondary signal; the base session_analytics record always ships regardless.",
|
|
381
|
+
def: "false",
|
|
382
|
+
artifactAffecting: false,
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
path: "analytics.emitStepEvents",
|
|
386
|
+
type: "boolean",
|
|
387
|
+
editor: "toggle",
|
|
388
|
+
description: "Opt-in for per-step session_turn_step_analytics wire records (an order of magnitude higher volume than turn events). Independent of emitTurnEvents.",
|
|
389
|
+
def: "false",
|
|
390
|
+
artifactAffecting: false,
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
path: "analytics.emitApiRequestEvents",
|
|
394
|
+
type: "boolean",
|
|
395
|
+
editor: "toggle",
|
|
396
|
+
description: "Opt-OUT for per-API-request api_request wire records (one per assistant message, success + failure). Primary value for backend cost accounting, so ships by default.",
|
|
397
|
+
def: "true",
|
|
398
|
+
artifactAffecting: false,
|
|
399
|
+
},
|
|
400
|
+
// ── statusLine ─────────────────────────────────────────────────────────
|
|
401
|
+
{
|
|
402
|
+
path: "statusLine.enable",
|
|
403
|
+
type: "boolean",
|
|
404
|
+
editor: "toggle",
|
|
405
|
+
description: "Master switch for the Claude statusline integration (session_status event + statusline wrapper). Presence opts in; auto-enabled when a collector is configured. Claude-only.",
|
|
406
|
+
def: "implicit true when section present or collector configured",
|
|
407
|
+
artifactAffecting: true,
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
path: "statusLine.renderDefault",
|
|
411
|
+
type: "boolean",
|
|
412
|
+
editor: "toggle",
|
|
413
|
+
description: "When there is no upstream statusline to chain to, false keeps the statusline silent; true renders a minimal model + context-% line. No effect when the user already has a statusline.",
|
|
414
|
+
def: "false",
|
|
415
|
+
artifactAffecting: true,
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
path: "statusLine.emitMinIntervalSeconds",
|
|
419
|
+
type: "number",
|
|
420
|
+
editor: "number",
|
|
421
|
+
description: "Minimum seconds between two emitted session_status events, on top of skip-if-unchanged. Rapid changes coalesce to the latest state after the interval. 0 disables the throttle. Read live each tick.",
|
|
422
|
+
def: "10",
|
|
423
|
+
artifactAffecting: true,
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
path: "statusLine.refreshInterval",
|
|
427
|
+
type: "number",
|
|
428
|
+
editor: "number",
|
|
429
|
+
description: "Claude Code's own statusLine.refreshInterval (seconds, host min 1) — re-runs the statusline on a timer in addition to event-driven updates. Unset by default. Values < 1 treated as unset.",
|
|
430
|
+
def: "unset",
|
|
431
|
+
artifactAffecting: true,
|
|
432
|
+
},
|
|
433
|
+
// ── telemetry ──────────────────────────────────────────────────────────
|
|
434
|
+
{
|
|
435
|
+
path: "telemetry.enable",
|
|
436
|
+
type: "boolean",
|
|
437
|
+
editor: "toggle",
|
|
438
|
+
description: "Master switch for anonymous PostHog telemetry (CLI's own product analytics). Inverse semantics — opt out with false. Disabling also injects TELEMETRY_ENABLE=false into devtools MCP env. Orthogonal to the collector pipeline.",
|
|
439
|
+
def: "true",
|
|
440
|
+
artifactAffecting: true,
|
|
441
|
+
},
|
|
442
|
+
// ── otel ───────────────────────────────────────────────────────────────
|
|
443
|
+
{
|
|
444
|
+
path: "otel.enable",
|
|
445
|
+
type: "boolean",
|
|
446
|
+
editor: "toggle",
|
|
447
|
+
description: "Master switch for the local OTEL collector pipeline (Claude Code OTLP raw-API-body export → local daemon → session_context context-usage events). Presence opts in; enable:false opts out; auto-enabled when a collector is configured. session_context derivation is the sole consumer, so this also gates whether the settings.json OTEL env block (incl. raw-bodies) is written. Orthogonal to telemetry (PostHog) and collector (event sink).",
|
|
448
|
+
def: "implicit true when collector configured",
|
|
449
|
+
artifactAffecting: true,
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
path: "otel.port",
|
|
453
|
+
type: "number",
|
|
454
|
+
editor: "number",
|
|
455
|
+
description: "Loopback port the shared OTEL collector daemon binds to, and which the settings.json OTEL endpoint env var points at. One daemon per machine across all sessions.",
|
|
456
|
+
def: "15986",
|
|
457
|
+
artifactAffecting: true,
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
path: "otel.idleTimeoutSeconds",
|
|
461
|
+
type: "number",
|
|
462
|
+
editor: "number",
|
|
463
|
+
description: "The daemon self-reaps (graceful shutdown) after this many seconds with no /health hit and no OTLP event. Restarted on the next session/turn ensure.",
|
|
464
|
+
def: "600",
|
|
465
|
+
artifactAffecting: true,
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
path: "otel.ensureMinIntervalSeconds",
|
|
469
|
+
type: "number",
|
|
470
|
+
editor: "number",
|
|
471
|
+
description: "Throttle (seconds) for the high-frequency liveness `ensure` from per-tool hooks, so we don't pay a /health check on every tool call. session-start / activity-start ensure are unthrottled.",
|
|
472
|
+
def: "30",
|
|
473
|
+
artifactAffecting: true,
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
path: "otel.emitMinIntervalSeconds",
|
|
477
|
+
type: "number",
|
|
478
|
+
editor: "number",
|
|
479
|
+
description: "Per-session session_context emit throttle: admit at most one event per session per interval (leading-edge — the first request in each window is emitted, in-between requests are coalesced away and their body files dropped). Applies to the live path only; the catch-up/reprocess path is never throttled. 0 = emit on every API request (full context-growth time series).",
|
|
480
|
+
def: "0",
|
|
481
|
+
artifactAffecting: true,
|
|
482
|
+
},
|
|
483
|
+
// ── fileChange ─────────────────────────────────────────────────────────
|
|
484
|
+
{
|
|
485
|
+
path: "fileChange.captureChangeset",
|
|
486
|
+
type: "boolean",
|
|
487
|
+
editor: "toggle",
|
|
488
|
+
description: "When true, every file_change event carries a hunks-only unified-diff changeset string. Off by default — the default wire shape stays metadata-only (operation + line counts).",
|
|
489
|
+
def: "false",
|
|
490
|
+
artifactAffecting: false,
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
path: "fileChange.maxChangesetBytes",
|
|
494
|
+
type: "number",
|
|
495
|
+
editor: "number",
|
|
496
|
+
description: "Hard cap on the changeset string size. Diffs over the cap are truncated with a footer so the collector POST stays within typical reverse-proxy body limits.",
|
|
497
|
+
def: "65536 (64 KB)",
|
|
498
|
+
artifactAffecting: false,
|
|
499
|
+
},
|
|
500
|
+
// ── import ─────────────────────────────────────────────────────────────
|
|
501
|
+
{
|
|
502
|
+
path: "import.concurrency",
|
|
503
|
+
type: "number",
|
|
504
|
+
editor: "number",
|
|
505
|
+
description: "Default number of sessions `ironbee import` processes in parallel. Resolution: --concurrency flag > this value > built-in default. Clamped to [1, 32].",
|
|
506
|
+
def: "4",
|
|
507
|
+
artifactAffecting: false,
|
|
508
|
+
},
|
|
509
|
+
// ── devtools MCP overrides ───────────────────────────────────────────────
|
|
510
|
+
{
|
|
511
|
+
path: "browserDevTools.env",
|
|
512
|
+
type: "json",
|
|
513
|
+
editor: "json",
|
|
514
|
+
description: "Env-var overrides merged into the browser-devtools MCP server entry. Operators can override individual OTEL keys; IronBee invariants (TOOL_NAME_PREFIX, …) always win last.",
|
|
515
|
+
def: "unset (defaults + auto-OTEL when collector configured)",
|
|
516
|
+
artifactAffecting: true,
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
path: "browserDevTools.mcp",
|
|
520
|
+
type: "json",
|
|
521
|
+
editor: "json",
|
|
522
|
+
description: "Full-replacement MCP config for the browser-devtools server entry. Auto-OTEL + telemetry env are still injected; IronBee env wins last.",
|
|
523
|
+
def: "unset (use default npx -y @ironbee-ai/devtools entry)",
|
|
524
|
+
artifactAffecting: true,
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
path: "nodeDevTools.env",
|
|
528
|
+
type: "json",
|
|
529
|
+
editor: "json",
|
|
530
|
+
description: "Env-var overrides merged into the node-devtools MCP server entry. Same auto-OTEL injection as browserDevTools minus the browser-only vars.",
|
|
531
|
+
def: "unset (defaults + auto-OTEL when collector configured)",
|
|
532
|
+
artifactAffecting: true,
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
path: "nodeDevTools.mcp",
|
|
536
|
+
type: "json",
|
|
537
|
+
editor: "json",
|
|
538
|
+
description: "Full-replacement MCP config for the node-devtools server entry. IronBee env wins last.",
|
|
539
|
+
def: "unset (use default npx -y @ironbee-ai/devtools entry)",
|
|
540
|
+
artifactAffecting: true,
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
path: "backendDevTools.env",
|
|
544
|
+
type: "json",
|
|
545
|
+
editor: "json",
|
|
546
|
+
description: "Env-var overrides merged into the backend-devtools MCP server entry. Same auto-OTEL injection as nodeDevTools.",
|
|
547
|
+
def: "unset (defaults + auto-OTEL when collector configured)",
|
|
548
|
+
artifactAffecting: true,
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
path: "backendDevTools.mcp",
|
|
552
|
+
type: "json",
|
|
553
|
+
editor: "json",
|
|
554
|
+
description: "Full-replacement MCP config for the backend-devtools server entry. IronBee env wins last.",
|
|
555
|
+
def: "unset (use default npx -y @ironbee-ai/devtools entry)",
|
|
556
|
+
artifactAffecting: true,
|
|
557
|
+
},
|
|
558
|
+
];
|
|
559
|
+
/** Returns the schema entry for a dotted path, or undefined when unknown. */
|
|
560
|
+
function findSchemaEntry(path) {
|
|
561
|
+
return exports.CONFIG_SCHEMA.find((e) => e.path === path);
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* Returns all schema entries sorted by group display order (per {@link groupRank},
|
|
565
|
+
* group derived via {@link groupOf}) then path. This is the canonical ordering
|
|
566
|
+
* the TUI list pane and the docs table render.
|
|
567
|
+
*/
|
|
568
|
+
function orderedEntries() {
|
|
569
|
+
return [...exports.CONFIG_SCHEMA].sort((a, b) => {
|
|
570
|
+
const ga = groupRank(groupOf(a.path));
|
|
571
|
+
const gb = groupRank(groupOf(b.path));
|
|
572
|
+
if (ga !== gb) {
|
|
573
|
+
return ga - gb;
|
|
574
|
+
}
|
|
575
|
+
return a.path.localeCompare(b.path);
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/tui/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IronBee — Config TUI: pure tree model
|
|
3
|
+
*
|
|
4
|
+
* Turns the flat schema into segment-grouped buckets and a flat list of
|
|
5
|
+
* collapsible "rows" (group headers + the keys under expanded groups). Pure and
|
|
6
|
+
* blessed-free so the grouping / collapse logic is unit-tested independently of
|
|
7
|
+
* the render layer; `view.ts` only renders these rows and handles keys.
|
|
8
|
+
*/
|
|
9
|
+
import { ConfigSchemaEntry } from "./schema";
|
|
10
|
+
/** A group (first path segment) and the keys under it. */
|
|
11
|
+
export interface GroupBucket {
|
|
12
|
+
group: string;
|
|
13
|
+
title: string;
|
|
14
|
+
entries: ConfigSchemaEntry[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Bucket entries by their derived group ({@link groupOf}), ordered by
|
|
18
|
+
* {@link groupRank} (then alphabetically for unknown groups); keys within a
|
|
19
|
+
* group are sorted by path.
|
|
20
|
+
*/
|
|
21
|
+
export declare function groupEntries(entries: ConfigSchemaEntry[]): GroupBucket[];
|
|
22
|
+
/** A header row (collapsible group) or a key row (under an expanded group). */
|
|
23
|
+
export type TreeRow = {
|
|
24
|
+
kind: "header";
|
|
25
|
+
group: string;
|
|
26
|
+
title: string;
|
|
27
|
+
count: number;
|
|
28
|
+
collapsed: boolean;
|
|
29
|
+
} | {
|
|
30
|
+
kind: "key";
|
|
31
|
+
group: string;
|
|
32
|
+
entry: ConfigSchemaEntry;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Flatten buckets into renderable rows: each group contributes a header, and —
|
|
36
|
+
* unless its group is in `collapsed` — one key row per entry under it.
|
|
37
|
+
*/
|
|
38
|
+
export declare function buildTreeRows(buckets: GroupBucket[], collapsed: ReadonlySet<string>): TreeRow[];
|
|
39
|
+
//# sourceMappingURL=tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/tui/config/tree.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAkC,MAAM,UAAU,CAAC;AAE7E,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,WAAW,EAAE,CAuBxE;AAED,+EAA+E;AAC/E,MAAM,MAAM,OAAO,GACb;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAE/D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,CAY/F"}
|