opensip-cli 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bootstrap/admit-tool-package.d.ts +15 -1
- package/dist/bootstrap/admit-tool-package.d.ts.map +1 -1
- package/dist/bootstrap/admit-tool-package.js +30 -5
- package/dist/bootstrap/admit-tool-package.js.map +1 -1
- package/dist/bootstrap/bind-tool-context.d.ts.map +1 -1
- package/dist/bootstrap/bind-tool-context.js +5 -3
- package/dist/bootstrap/bind-tool-context.js.map +1 -1
- package/dist/bootstrap/build-command-registration-input.d.ts +7 -0
- package/dist/bootstrap/build-command-registration-input.d.ts.map +1 -1
- package/dist/bootstrap/build-command-registration-input.js +11 -4
- package/dist/bootstrap/build-command-registration-input.js.map +1 -1
- package/dist/bootstrap/build-per-run-scope.d.ts +12 -0
- package/dist/bootstrap/build-per-run-scope.d.ts.map +1 -1
- package/dist/bootstrap/build-per-run-scope.js +84 -9
- package/dist/bootstrap/build-per-run-scope.js.map +1 -1
- package/dist/bootstrap/bundled-manifest.d.ts +5 -0
- package/dist/bootstrap/bundled-manifest.d.ts.map +1 -0
- package/dist/bootstrap/bundled-manifest.js +13 -0
- package/dist/bootstrap/bundled-manifest.js.map +1 -0
- package/dist/bootstrap/bundled-tools.manifest.json +19 -1
- package/dist/bootstrap/config-and-capabilities.d.ts +5 -3
- package/dist/bootstrap/config-and-capabilities.d.ts.map +1 -1
- package/dist/bootstrap/config-and-capabilities.js +10 -7
- package/dist/bootstrap/config-and-capabilities.js.map +1 -1
- package/dist/bootstrap/constants.d.ts +3 -0
- package/dist/bootstrap/constants.d.ts.map +1 -0
- package/dist/bootstrap/constants.js +3 -0
- package/dist/bootstrap/constants.js.map +1 -0
- package/dist/bootstrap/decorate-tool-primary.d.ts +50 -0
- package/dist/bootstrap/decorate-tool-primary.d.ts.map +1 -0
- package/dist/bootstrap/decorate-tool-primary.js +111 -0
- package/dist/bootstrap/decorate-tool-primary.js.map +1 -0
- package/dist/bootstrap/execute-post-bailout-bootstrap.d.ts +1 -0
- package/dist/bootstrap/execute-post-bailout-bootstrap.d.ts.map +1 -1
- package/dist/bootstrap/execute-post-bailout-bootstrap.js +12 -1
- package/dist/bootstrap/execute-post-bailout-bootstrap.js.map +1 -1
- package/dist/bootstrap/index.d.ts +1 -1
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +1 -4
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/bootstrap/io-plane.d.ts +47 -0
- package/dist/bootstrap/io-plane.d.ts.map +1 -0
- package/dist/bootstrap/io-plane.js +73 -0
- package/dist/bootstrap/io-plane.js.map +1 -0
- package/dist/bootstrap/load-tool-capabilities.d.ts.map +1 -1
- package/dist/bootstrap/load-tool-capabilities.js +18 -2
- package/dist/bootstrap/load-tool-capabilities.js.map +1 -1
- package/dist/bootstrap/owning-tool-init.d.ts.map +1 -1
- package/dist/bootstrap/owning-tool-init.js +7 -4
- package/dist/bootstrap/owning-tool-init.js.map +1 -1
- package/dist/bootstrap/phase-map.d.ts +20 -0
- package/dist/bootstrap/phase-map.d.ts.map +1 -0
- package/dist/bootstrap/phase-map.js +108 -0
- package/dist/bootstrap/phase-map.js.map +1 -0
- package/dist/bootstrap/plan-pre-action-bootstrap.d.ts +5 -5
- package/dist/bootstrap/plan-pre-action-bootstrap.d.ts.map +1 -1
- package/dist/bootstrap/plan-pre-action-bootstrap.js +3 -19
- package/dist/bootstrap/plan-pre-action-bootstrap.js.map +1 -1
- package/dist/bootstrap/pre-action-guards.d.ts +2 -1
- package/dist/bootstrap/pre-action-guards.d.ts.map +1 -1
- package/dist/bootstrap/pre-action-guards.js +3 -27
- package/dist/bootstrap/pre-action-guards.js.map +1 -1
- package/dist/bootstrap/pre-action-hook.d.ts +2 -1
- package/dist/bootstrap/pre-action-hook.d.ts.map +1 -1
- package/dist/bootstrap/pre-action-hook.js +23 -4
- package/dist/bootstrap/pre-action-hook.js.map +1 -1
- package/dist/bootstrap/register-tools-discovery.d.ts +38 -39
- package/dist/bootstrap/register-tools-discovery.d.ts.map +1 -1
- package/dist/bootstrap/register-tools-discovery.js +134 -85
- package/dist/bootstrap/register-tools-discovery.js.map +1 -1
- package/dist/bootstrap/register-tools-mount.d.ts +18 -1
- package/dist/bootstrap/register-tools-mount.d.ts.map +1 -1
- package/dist/bootstrap/register-tools-mount.js +118 -18
- package/dist/bootstrap/register-tools-mount.js.map +1 -1
- package/dist/bootstrap/register-tools.d.ts +58 -14
- package/dist/bootstrap/register-tools.d.ts.map +1 -1
- package/dist/bootstrap/register-tools.js +185 -14
- package/dist/bootstrap/register-tools.js.map +1 -1
- package/dist/bootstrap/root-version.d.ts +26 -0
- package/dist/bootstrap/root-version.d.ts.map +1 -0
- package/dist/bootstrap/root-version.js +36 -0
- package/dist/bootstrap/root-version.js.map +1 -0
- package/dist/bootstrap/scope-access.d.ts +11 -0
- package/dist/bootstrap/scope-access.d.ts.map +1 -1
- package/dist/bootstrap/scope-access.js +26 -0
- package/dist/bootstrap/scope-access.js.map +1 -1
- package/dist/bootstrap/tool-lifecycle.d.ts +0 -22
- package/dist/bootstrap/tool-lifecycle.d.ts.map +1 -1
- package/dist/bootstrap/tool-lifecycle.js +0 -23
- package/dist/bootstrap/tool-lifecycle.js.map +1 -1
- package/dist/bootstrap/validate-tool.d.ts +10 -4
- package/dist/bootstrap/validate-tool.d.ts.map +1 -1
- package/dist/bootstrap/validate-tool.js +76 -22
- package/dist/bootstrap/validate-tool.js.map +1 -1
- package/dist/cli-context.d.ts +2 -2
- package/dist/cli-context.d.ts.map +1 -1
- package/dist/cli-context.js +20 -35
- package/dist/cli-context.js.map +1 -1
- package/dist/commands/agent-catalog.d.ts +29 -0
- package/dist/commands/agent-catalog.d.ts.map +1 -1
- package/dist/commands/agent-catalog.js +77 -36
- package/dist/commands/agent-catalog.js.map +1 -1
- package/dist/commands/clear.d.ts.map +1 -1
- package/dist/commands/clear.js +0 -1
- package/dist/commands/clear.js.map +1 -1
- package/dist/commands/command-scope-index.d.ts +45 -0
- package/dist/commands/command-scope-index.d.ts.map +1 -0
- package/dist/commands/command-scope-index.js +51 -0
- package/dist/commands/command-scope-index.js.map +1 -0
- package/dist/commands/completion.d.ts +67 -6
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +84 -12
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/configure.d.ts.map +1 -1
- package/dist/commands/configure.js +0 -1
- package/dist/commands/configure.js.map +1 -1
- package/dist/commands/host-command-specs.d.ts +16 -9
- package/dist/commands/host-command-specs.d.ts.map +1 -1
- package/dist/commands/host-command-specs.js +47 -21
- package/dist/commands/host-command-specs.js.map +1 -1
- package/dist/commands/host-config-flag.d.ts +21 -0
- package/dist/commands/host-config-flag.d.ts.map +1 -0
- package/dist/commands/host-config-flag.js +21 -0
- package/dist/commands/host-config-flag.js.map +1 -0
- package/dist/commands/host-subcommand-groups.d.ts +46 -5
- package/dist/commands/host-subcommand-groups.d.ts.map +1 -1
- package/dist/commands/host-subcommand-groups.js +97 -65
- package/dist/commands/host-subcommand-groups.js.map +1 -1
- package/dist/commands/index.d.ts +1 -1
- package/dist/commands/index.js +1 -1
- package/dist/commands/internal-command-visibility.d.ts +42 -0
- package/dist/commands/internal-command-visibility.d.ts.map +1 -0
- package/dist/commands/internal-command-visibility.js +54 -0
- package/dist/commands/internal-command-visibility.js.map +1 -0
- package/dist/commands/mount-command-action.d.ts +24 -0
- package/dist/commands/mount-command-action.d.ts.map +1 -0
- package/dist/commands/mount-command-action.js +78 -0
- package/dist/commands/mount-command-action.js.map +1 -0
- package/dist/commands/mount-command-spec-wiring.d.ts +24 -0
- package/dist/commands/mount-command-spec-wiring.d.ts.map +1 -0
- package/dist/commands/mount-command-spec-wiring.js +71 -0
- package/dist/commands/mount-command-spec-wiring.js.map +1 -0
- package/dist/commands/mount-command-spec.d.ts +9 -2
- package/dist/commands/mount-command-spec.d.ts.map +1 -1
- package/dist/commands/mount-command-spec.js +11 -135
- package/dist/commands/mount-command-spec.js.map +1 -1
- package/dist/commands/plugin/domain-resolution.d.ts +12 -13
- package/dist/commands/plugin/domain-resolution.d.ts.map +1 -1
- package/dist/commands/plugin/domain-resolution.js +12 -58
- package/dist/commands/plugin/domain-resolution.js.map +1 -1
- package/dist/commands/plugin/host-dir.d.ts +0 -1
- package/dist/commands/plugin/host-dir.d.ts.map +1 -1
- package/dist/commands/plugin/host-dir.js +1 -1
- package/dist/commands/plugin/host-dir.js.map +1 -1
- package/dist/commands/plugin.d.ts +20 -14
- package/dist/commands/plugin.d.ts.map +1 -1
- package/dist/commands/plugin.js +39 -47
- package/dist/commands/plugin.js.map +1 -1
- package/dist/commands/render-outcome.d.ts.map +1 -1
- package/dist/commands/render-outcome.js.map +1 -1
- package/dist/commands/shared.d.ts +9 -0
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/tools/create.d.ts +11 -0
- package/dist/commands/tools/create.d.ts.map +1 -0
- package/dist/commands/tools/create.js +84 -0
- package/dist/commands/tools/create.js.map +1 -0
- package/dist/commands/tools/index.d.ts.map +1 -1
- package/dist/commands/tools/index.js +31 -0
- package/dist/commands/tools/index.js.map +1 -1
- package/dist/commands/tools/runtime-probe-entry.d.ts.map +1 -1
- package/dist/commands/tools/runtime-probe-entry.js +4 -2
- package/dist/commands/tools/runtime-probe-entry.js.map +1 -1
- package/dist/commands/tools/validate.d.ts.map +1 -1
- package/dist/commands/tools/validate.js +12 -5
- package/dist/commands/tools/validate.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +0 -1
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/env/host-env-specs.d.ts +18 -0
- package/dist/env/host-env-specs.d.ts.map +1 -1
- package/dist/env/host-env-specs.js +36 -2
- package/dist/env/host-env-specs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -21
- package/dist/index.js.map +1 -1
- package/dist/report-compose.d.ts.map +1 -1
- package/dist/report-compose.js +2 -2
- package/dist/report-compose.js.map +1 -1
- package/dist/session-replay-registry.d.ts +1 -1
- package/dist/session-replay-registry.d.ts.map +1 -1
- package/dist/session-replay-registry.js +3 -1
- package/dist/session-replay-registry.js.map +1 -1
- package/dist/ui/result-to-view.d.ts +27 -7
- package/dist/ui/result-to-view.d.ts.map +1 -1
- package/dist/ui/result-to-view.js +68 -75
- package/dist/ui/result-to-view.js.map +1 -1
- package/dist/ui/views/misc-views.d.ts.map +1 -1
- package/dist/ui/views/misc-views.js +3 -1
- package/dist/ui/views/misc-views.js.map +1 -1
- package/dist/ui/views/tools-views.d.ts +2 -1
- package/dist/ui/views/tools-views.d.ts.map +1 -1
- package/dist/ui/views/tools-views.js +21 -0
- package/dist/ui/views/tools-views.js.map +1 -1
- package/package.json +32 -32
- package/dist/bootstrap/authored-tool-admission.d.ts +0 -23
- package/dist/bootstrap/authored-tool-admission.d.ts.map +0 -1
- package/dist/bootstrap/authored-tool-admission.js +0 -54
- package/dist/bootstrap/authored-tool-admission.js.map +0 -1
- package/dist/bootstrap/egress-plane.d.ts +0 -22
- package/dist/bootstrap/egress-plane.d.ts.map +0 -1
- package/dist/bootstrap/egress-plane.js +0 -37
- package/dist/bootstrap/egress-plane.js.map +0 -1
- package/dist/bootstrap/installed-tool-admission.d.ts +0 -20
- package/dist/bootstrap/installed-tool-admission.d.ts.map +0 -1
- package/dist/bootstrap/installed-tool-admission.js +0 -60
- package/dist/bootstrap/installed-tool-admission.js.map +0 -1
- package/dist/bootstrap/live-plane.d.ts +0 -51
- package/dist/bootstrap/live-plane.d.ts.map +0 -1
- package/dist/bootstrap/live-plane.js +0 -72
- package/dist/bootstrap/live-plane.js.map +0 -1
- package/dist/bootstrap/register-tools-bundled.d.ts +0 -28
- package/dist/bootstrap/register-tools-bundled.d.ts.map +0 -1
- package/dist/bootstrap/register-tools-bundled.js +0 -107
- package/dist/bootstrap/register-tools-bundled.js.map +0 -1
- package/dist/bootstrap/register-tools-shared.d.ts +0 -40
- package/dist/bootstrap/register-tools-shared.d.ts.map +0 -1
- package/dist/bootstrap/register-tools-shared.js +0 -98
- package/dist/bootstrap/register-tools-shared.js.map +0 -1
|
@@ -21,18 +21,38 @@
|
|
|
21
21
|
* matching existing check slugs) is ever needed, that's an additive change
|
|
22
22
|
* that can query `opensip fit --list` at completion time.
|
|
23
23
|
*/
|
|
24
|
-
// @fitness-ignore-file only-documented-toolcli-seams -- the `completion <shell>` command's whole purpose is to write a sourceable shell-completion script to stdout for the user to pipe/redirect; that script IS its output, not run findings through a ToolCliContext seam (mirrors the ESLint exemption for this file). See architecture review finding 5 (interactive host commands legitimately need a narrow TTY/script seam outside the run data path).
|
|
25
24
|
import { commonFlags } from '@opensip-cli/contracts';
|
|
26
25
|
/**
|
|
27
26
|
* Internal/machine-facing command names never offered in shell completion.
|
|
28
27
|
* These are spawned by the host (sharded build, off-process engine workers,
|
|
29
|
-
* machine exports), never typed by a user.
|
|
30
|
-
*
|
|
28
|
+
* machine exports), never typed by a user.
|
|
29
|
+
*
|
|
30
|
+
* This is the STATIC FALLBACK / default for {@link assembleCompletionInventory}'s
|
|
31
|
+
* `internalCommands` argument. The live path passes a descriptor-driven set
|
|
32
|
+
* (`visibility: 'internal'` + this fallback), keeping the runtime filter in
|
|
33
|
+
* lockstep with the `--help` hide pass. The set still backs the completion-drift
|
|
34
|
+
* test, and matters whenever a caller does not supply the descriptor-derived set.
|
|
35
|
+
*
|
|
36
|
+
* Note: the four `*-run-worker` / `*-shard-worker` names AND
|
|
37
|
+
* `graph-equivalence-check` are the Tier-3 `visibility: 'internal'` commands —
|
|
38
|
+
* they also flow through the descriptor-driven set. They are listed here so the
|
|
39
|
+
* static fallback is correct on its own (the historical gap was the missing
|
|
40
|
+
* `graph-equivalence-check`).
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Internal/machine-facing command names never offered in shell completion — the
|
|
44
|
+
* `visibility: 'internal'` Tier-3 commands: `*-run-worker` / `*-shard-worker` and
|
|
45
|
+
* `graph-equivalence-check` are machine-only IPC/CI bootstrap entry points
|
|
46
|
+
* (ADR-0028), revealed by `OPENSIP_CLI_SHOW_INTERNAL=1`.
|
|
47
|
+
*
|
|
48
|
+
* The legacy flat-root export aliases (`catalog-export` / `sarif-export` /
|
|
49
|
+
* `graph-baseline-export` / `fit-baseline-export`) were removed entirely, so they
|
|
50
|
+
* no longer appear in the tool registry and need no completion suppression — the
|
|
51
|
+
* canonical nested `<tool> export` forms are the only export surface.
|
|
31
52
|
*/
|
|
32
53
|
export const INTERNAL_COMMANDS = new Set([
|
|
33
54
|
'graph-shard-worker',
|
|
34
|
-
'
|
|
35
|
-
'sarif-export',
|
|
55
|
+
'graph-equivalence-check',
|
|
36
56
|
'fit-run-worker',
|
|
37
57
|
'sim-run-worker',
|
|
38
58
|
'graph-run-worker',
|
|
@@ -85,16 +105,39 @@ export function specLongFlags(spec) {
|
|
|
85
105
|
* Assemble the completion inventory from the live specs. Pure: callers pass
|
|
86
106
|
* the tool command specs (from the populated `ToolRegistry`), the top-level
|
|
87
107
|
* host specs, and the action-less groups; this turns them into the flag /
|
|
88
|
-
* subcommand maps the script builders consume.
|
|
89
|
-
*
|
|
108
|
+
* subcommand maps the script builders consume.
|
|
109
|
+
*
|
|
110
|
+
* Internal commands are filtered out by `input.internalCommands` — the
|
|
111
|
+
* descriptor-driven `visibility: 'internal'` set the host computes from the live
|
|
112
|
+
* tool registry (`internalCommandNames`), so completion and the `--help` hide
|
|
113
|
+
* pass key on the SAME source. Defaults to the static {@link INTERNAL_COMMANDS}
|
|
114
|
+
* fallback when omitted (tests / callers without a registry). The
|
|
115
|
+
* `OPENSIP_CLI_SHOW_INTERNAL=1` reveal is applied at the call site: the host
|
|
116
|
+
* passes an EMPTY set to skip filtering when the override is on.
|
|
90
117
|
*/
|
|
91
118
|
export function assembleCompletionInventory(input) {
|
|
119
|
+
const internalCommands = input.internalCommands ?? INTERNAL_COMMANDS;
|
|
92
120
|
const commandFlags = {};
|
|
93
121
|
const subcommands = [];
|
|
122
|
+
// `parent` → leaf names, accumulated from `parent`-nested tool specs (the
|
|
123
|
+
// `<tool> <verb>` grammar). Merged into `groupSubcommands` below so the
|
|
124
|
+
// emitted script offers `<parent> <leaf>` exactly like a host group.
|
|
125
|
+
const toolGroupLeaves = {};
|
|
94
126
|
for (const spec of [...input.toolSpecs, ...input.hostSpecs]) {
|
|
95
|
-
if (
|
|
127
|
+
if (internalCommands.has(spec.name))
|
|
96
128
|
continue;
|
|
97
129
|
const flags = specLongFlags(spec);
|
|
130
|
+
// A `parent`-nested tool spec is a sub-subcommand, NOT a top-level command:
|
|
131
|
+
// offer it as a leaf under its parent and key its flags under the qualified
|
|
132
|
+
// `${parent} ${name}` path (mirroring the host group leaves).
|
|
133
|
+
if (spec.parent !== undefined) {
|
|
134
|
+
const leaves = (toolGroupLeaves[spec.parent] ??= []);
|
|
135
|
+
for (const name of [spec.name, ...(spec.aliases ?? [])]) {
|
|
136
|
+
leaves.push(name);
|
|
137
|
+
commandFlags[`${spec.parent} ${name}`] = flags;
|
|
138
|
+
}
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
98
141
|
for (const name of [spec.name, ...(spec.aliases ?? [])]) {
|
|
99
142
|
subcommands.push(name);
|
|
100
143
|
commandFlags[name] = flags;
|
|
@@ -105,6 +148,20 @@ export function assembleCompletionInventory(input) {
|
|
|
105
148
|
subcommands.push(group.name);
|
|
106
149
|
groupSubcommands[group.name] = group.leaves.map((l) => l.name);
|
|
107
150
|
}
|
|
151
|
+
// Fold tool-command sub-subcommands into the group map. A primary verb
|
|
152
|
+
// (e.g. `graph`) is already a top-level subcommand with its own flags; adding
|
|
153
|
+
// its nested leaves here lets the script also complete `graph export` etc.
|
|
154
|
+
for (const [parent, leaves] of Object.entries(toolGroupLeaves)) {
|
|
155
|
+
groupSubcommands[parent] = [...(groupSubcommands[parent] ?? []), ...leaves];
|
|
156
|
+
}
|
|
157
|
+
// Fold the per-tool `plugin` groups in: `plugin` becomes a completable leaf
|
|
158
|
+
// under the tool verb (`opensip fit <TAB>` ⇒ `… plugin`), and the bound
|
|
159
|
+
// leaf names register under the doubly-nested `${toolVerb} plugin` key for
|
|
160
|
+
// deeper completion. There is NO top-level `plugin` group anymore.
|
|
161
|
+
for (const group of input.toolPluginGroups ?? []) {
|
|
162
|
+
groupSubcommands[group.toolVerb] = [...(groupSubcommands[group.toolVerb] ?? []), 'plugin'];
|
|
163
|
+
groupSubcommands[`${group.toolVerb} plugin`] = group.leaves.map((l) => l.name);
|
|
164
|
+
}
|
|
108
165
|
// `help` is a Commander built-in the script also surfaces.
|
|
109
166
|
subcommands.push('help');
|
|
110
167
|
return {
|
|
@@ -121,7 +178,14 @@ function bashScript(inv) {
|
|
|
121
178
|
const commonFlagList = COMMON_FLAGS.join(' ');
|
|
122
179
|
const arms = [];
|
|
123
180
|
for (const [name, subsList] of Object.entries(inv.groupSubcommands)) {
|
|
124
|
-
|
|
181
|
+
// A primary tool verb (e.g. `fit`/`graph`) is BOTH a flag-bearing command
|
|
182
|
+
// AND a group with nested `<tool> <verb>` children (taxonomy Task 0.4): at
|
|
183
|
+
// the second-word position the user can type either a nested subcommand or
|
|
184
|
+
// one of the parent's own flags, so offer the union. An action-less host
|
|
185
|
+
// group (`plugin`/`sessions`) has no own flags, so its union is just leaves.
|
|
186
|
+
const ownFlags = inv.commandFlags[name] ?? [];
|
|
187
|
+
const offered = [...new Set([...subsList, ...ownFlags])];
|
|
188
|
+
arms.push(` ${name}) COMPREPLY=($(compgen -W "${offered.join(' ')}" -- "\${cur}")) ;;`);
|
|
125
189
|
}
|
|
126
190
|
for (const [name, flags] of Object.entries(inv.commandFlags)) {
|
|
127
191
|
if (name in inv.groupSubcommands)
|
|
@@ -162,7 +226,10 @@ function zshScript(inv) {
|
|
|
162
226
|
const commonFlagList = COMMON_FLAGS.join(' ');
|
|
163
227
|
const arms = [];
|
|
164
228
|
for (const [name, subsList] of Object.entries(inv.groupSubcommands)) {
|
|
165
|
-
|
|
229
|
+
// Union of nested subcommands + the parent verb's own flags (see bashScript).
|
|
230
|
+
const ownFlags = inv.commandFlags[name] ?? [];
|
|
231
|
+
const offered = [...new Set([...subsList, ...ownFlags])];
|
|
232
|
+
arms.push(` ${name}) _values '${name} subcommand' ${offered.join(' ')} ;;`);
|
|
166
233
|
}
|
|
167
234
|
for (const [name, flags] of Object.entries(inv.commandFlags)) {
|
|
168
235
|
if (name in inv.groupSubcommands)
|
|
@@ -203,8 +270,13 @@ function fishScript(inv) {
|
|
|
203
270
|
`complete -c opensip -f -n "__fish_use_subcommand" -a "${subs}" -d "opensip subcommand"`,
|
|
204
271
|
];
|
|
205
272
|
for (const [name, flags] of Object.entries(inv.commandFlags)) {
|
|
206
|
-
|
|
207
|
-
|
|
273
|
+
// A primary tool verb that also hosts nested `<tool> <verb>` children stays
|
|
274
|
+
// in `groupSubcommands`, but it still owns its own flags — emit them so fish
|
|
275
|
+
// completes `fit --<flag>` (the qualified `${parent} ${name}` keys for the
|
|
276
|
+
// nested leaves are skipped here; they are not top-level commands). An
|
|
277
|
+
// action-less host group has no `commandFlags` entry, so it is unaffected.
|
|
278
|
+
if (name.includes(' '))
|
|
279
|
+
continue; // a nested `${parent} ${name}` key, not a verb
|
|
208
280
|
for (const flag of flags) {
|
|
209
281
|
lines.push(`complete -c opensip -n "__fish_seen_subcommand_from ${name}" -l "${flag.replace(/^--/, '')}"`);
|
|
210
282
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAIlE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAqBpD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAevE;AAMD;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CA2BrE"}
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
* layer. This file is the prompt+UX wrapper around those primitives.
|
|
13
13
|
* Audit 2026-05-23 M3.
|
|
14
14
|
*/
|
|
15
|
-
// @fitness-ignore-file only-documented-toolcli-seams -- interactive TTY prompts: readline prompt text + masked-key verification UX, not machine run output through a ToolCliContext seam (mirrors the ESLint exemption for this file). Result lines route through the Ink `configure-done` CommandResult. (Architecture review finding 5: host UX commands have a narrow sanctioned exemption.)
|
|
16
15
|
import { join } from 'node:path';
|
|
17
16
|
import { createInterface } from 'node:readline';
|
|
18
17
|
import { GLOBAL_CONFIG_PATH, readGlobalConfig, writeGlobalConfig } from '@opensip-cli/config';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,15 @@
|
|
|
3
3
|
* {@link CommandSpec}s, mounted through the SAME `mountCommandSpec` plane the
|
|
4
4
|
* tools use (launch Phase 6).
|
|
5
5
|
*
|
|
6
|
-
* Host commands (`init` / `configure` / `sessions` / `
|
|
7
|
-
* `
|
|
6
|
+
* Host commands (`init` / `configure` / `sessions` / `report` / `completion` /
|
|
7
|
+
* `uninstall` / `tools`) are NOT tool plugins — they don't ride on a
|
|
8
8
|
* `Tool.commandSpecs` and aren't discovered. But making them mount via the same
|
|
9
9
|
* `mountCommandSpec` means the Phase 7 `command-surface-parity` guardrail sees
|
|
10
|
-
* ONE uniform command surface:
|
|
11
|
-
*
|
|
10
|
+
* ONE uniform command surface: no second, more-privileged raw-Commander path for
|
|
11
|
+
* "blessed" CLI-owned commands. The pack-management `plugin {add,list,remove,
|
|
12
|
+
* sync}` ops are host-owned too, but mount UNDER each pack-supporting tool
|
|
13
|
+
* primary (`opensip fit plugin …`) via {@link mountToolPluginGroups} — there is
|
|
14
|
+
* no top-level `opensip plugin`.
|
|
12
15
|
*
|
|
13
16
|
* Each spec's handler closes over the per-invocation {@link CliCommandsContext}
|
|
14
17
|
* (render / setExitCode / datastore thunk / pluginLayouts) — the same data the
|
|
@@ -18,10 +21,11 @@
|
|
|
18
21
|
* `signal-envelope` / `live-view` arms are never exercised by a host command, so
|
|
19
22
|
* `CliCommandsContext` is a valid (leaner) `CommandMountContext`.
|
|
20
23
|
*
|
|
21
|
-
* The
|
|
22
|
-
*
|
|
23
|
-
* `
|
|
24
|
-
*
|
|
24
|
+
* The action-less subcommand GROUPS (`sessions`, `tools`) + the domain-bound
|
|
25
|
+
* per-tool `plugin` group leaves (and their {@link mountToolPluginGroups}) live
|
|
26
|
+
* in `host-subcommand-groups.ts` (a leaf module that lets `completion.ts` source
|
|
27
|
+
* its sub-subcommand names without a module cycle). This module assembles the
|
|
28
|
+
* TOP-LEVEL specs and mounts the whole surface.
|
|
25
29
|
*
|
|
26
30
|
* Specs are built per-invocation (inside the builders below, not at module
|
|
27
31
|
* load) so the `--cwd` defaults that resolve to `process.cwd()` are evaluated
|
|
@@ -43,7 +47,10 @@ export declare function buildTopLevelHostSpecs(ctx: CliCommandsContext): readonl
|
|
|
43
47
|
* Mount every host command onto `program` through the shared `mountCommandSpec`
|
|
44
48
|
* plane. Top-level specs mount directly; each subcommand group becomes a raw
|
|
45
49
|
* action-less parent (the documented exception) onto which its leaf specs mount
|
|
46
|
-
* via the same `mountCommandSpec`.
|
|
50
|
+
* via the same `mountCommandSpec`. Finally, the per-tool `plugin` groups mount
|
|
51
|
+
* UNDER each pack-supporting tool primary via {@link mountToolPluginGroups} —
|
|
52
|
+
* which runs AFTER the tools were mounted (the composition root mounts tools
|
|
53
|
+
* before `registerCliCommands`), so the tool primaries already exist.
|
|
47
54
|
*/
|
|
48
55
|
export declare function mountHostCommands(program: CliProgram, ctx: CliCommandsContext): void;
|
|
49
56
|
//# sourceMappingURL=host-command-specs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-command-specs.d.ts","sourceRoot":"","sources":["../../src/commands/host-command-specs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"host-command-specs.d.ts","sourceRoot":"","sources":["../../src/commands/host-command-specs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAkBH,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,6BAA6B,CAAC;AAMrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,wBAAwB,CAAC;AAmUtE;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,kBAAkB,GAAG,SAAS,QAAQ,EAAE,CASnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAWpF"}
|
|
@@ -3,12 +3,15 @@
|
|
|
3
3
|
* {@link CommandSpec}s, mounted through the SAME `mountCommandSpec` plane the
|
|
4
4
|
* tools use (launch Phase 6).
|
|
5
5
|
*
|
|
6
|
-
* Host commands (`init` / `configure` / `sessions` / `
|
|
7
|
-
* `
|
|
6
|
+
* Host commands (`init` / `configure` / `sessions` / `report` / `completion` /
|
|
7
|
+
* `uninstall` / `tools`) are NOT tool plugins — they don't ride on a
|
|
8
8
|
* `Tool.commandSpecs` and aren't discovered. But making them mount via the same
|
|
9
9
|
* `mountCommandSpec` means the Phase 7 `command-surface-parity` guardrail sees
|
|
10
|
-
* ONE uniform command surface:
|
|
11
|
-
*
|
|
10
|
+
* ONE uniform command surface: no second, more-privileged raw-Commander path for
|
|
11
|
+
* "blessed" CLI-owned commands. The pack-management `plugin {add,list,remove,
|
|
12
|
+
* sync}` ops are host-owned too, but mount UNDER each pack-supporting tool
|
|
13
|
+
* primary (`opensip fit plugin …`) via {@link mountToolPluginGroups} — there is
|
|
14
|
+
* no top-level `opensip plugin`.
|
|
12
15
|
*
|
|
13
16
|
* Each spec's handler closes over the per-invocation {@link CliCommandsContext}
|
|
14
17
|
* (render / setExitCode / datastore thunk / pluginLayouts) — the same data the
|
|
@@ -18,10 +21,11 @@
|
|
|
18
21
|
* `signal-envelope` / `live-view` arms are never exercised by a host command, so
|
|
19
22
|
* `CliCommandsContext` is a valid (leaner) `CommandMountContext`.
|
|
20
23
|
*
|
|
21
|
-
* The
|
|
22
|
-
*
|
|
23
|
-
* `
|
|
24
|
-
*
|
|
24
|
+
* The action-less subcommand GROUPS (`sessions`, `tools`) + the domain-bound
|
|
25
|
+
* per-tool `plugin` group leaves (and their {@link mountToolPluginGroups}) live
|
|
26
|
+
* in `host-subcommand-groups.ts` (a leaf module that lets `completion.ts` source
|
|
27
|
+
* its sub-subcommand names without a module cycle). This module assembles the
|
|
28
|
+
* TOP-LEVEL specs and mounts the whole surface.
|
|
25
29
|
*
|
|
26
30
|
* Specs are built per-invocation (inside the builders below, not at module
|
|
27
31
|
* load) so the `--cwd` defaults that resolve to `process.cwd()` are evaluated
|
|
@@ -32,10 +36,11 @@ import { EXIT_CODES } from '@opensip-cli/contracts';
|
|
|
32
36
|
import { ConfigurationError, defineCommand } from '@opensip-cli/core';
|
|
33
37
|
import { composeAndWriteReport } from '../report-compose.js';
|
|
34
38
|
import { executeAgentCatalog } from './agent-catalog.js';
|
|
35
|
-
import { assembleCompletionInventory, printCompletionScript, } from './completion.js';
|
|
39
|
+
import { assembleCompletionInventory, printCompletionScript, INTERNAL_COMMANDS, } from './completion.js';
|
|
36
40
|
import { executeConfigure } from './configure.js';
|
|
37
|
-
import { buildHostSubcommandGroups } from './host-subcommand-groups.js';
|
|
41
|
+
import { buildHostSubcommandGroups, buildToolPluginGroups, mountToolPluginGroups, } from './host-subcommand-groups.js';
|
|
38
42
|
import { executeInit } from './init.js';
|
|
43
|
+
import { showInternalCommands } from './internal-command-visibility.js';
|
|
39
44
|
import { mountCommandSpec } from './mount-command-spec.js';
|
|
40
45
|
import { executeUninstall } from './uninstall.js';
|
|
41
46
|
/** Shared `output` mode for the host commands that return a renderable result. */
|
|
@@ -66,7 +71,7 @@ function buildInitSpec(ctx) {
|
|
|
66
71
|
default: false,
|
|
67
72
|
},
|
|
68
73
|
],
|
|
69
|
-
scope: '
|
|
74
|
+
scope: 'none',
|
|
70
75
|
output: COMMAND_RESULT,
|
|
71
76
|
handler: (rawOpts) => {
|
|
72
77
|
const opts = rawOpts;
|
|
@@ -168,10 +173,25 @@ function buildCompletionSpec(ctx) {
|
|
|
168
173
|
// completion spec (it contributes a static, options-free descriptor for
|
|
169
174
|
// itself), keeping the dependency one-directional.
|
|
170
175
|
const host = buildHostCompletionSurface(ctx);
|
|
176
|
+
// tool-command-surface-taxonomy Task 1.3/1.5: filter Tier-3 internal
|
|
177
|
+
// commands from completion using the descriptor-driven set (the SAME source
|
|
178
|
+
// the `--help` hide pass keys on), so help and completion stay in lockstep.
|
|
179
|
+
//
|
|
180
|
+
// The legacy flat-root export aliases were removed entirely, so there is no
|
|
181
|
+
// separate deprecated-export suppression set to union here — the canonical
|
|
182
|
+
// nested `<tool> export` forms flow into completion via the sub-subcommand
|
|
183
|
+
// emission. The descriptor-driven internal set is the ONLY part the
|
|
184
|
+
// OPENSIP_CLI_SHOW_INTERNAL override un-hides — revealing it = passing an
|
|
185
|
+
// empty internal set so no command is filtered.
|
|
186
|
+
const internalCommands = showInternalCommands()
|
|
187
|
+
? new Set()
|
|
188
|
+
: (ctx.toolInternalCommands ?? INTERNAL_COMMANDS);
|
|
171
189
|
const inventory = assembleCompletionInventory({
|
|
172
190
|
toolSpecs: ctx.toolCommandSpecs ?? [],
|
|
173
191
|
hostSpecs: host.specs,
|
|
174
192
|
groups: host.groups,
|
|
193
|
+
toolPluginGroups: host.toolPluginGroups,
|
|
194
|
+
internalCommands,
|
|
175
195
|
});
|
|
176
196
|
printCompletionScript(normalized, inventory);
|
|
177
197
|
},
|
|
@@ -206,7 +226,7 @@ function buildUninstallSpec() {
|
|
|
206
226
|
},
|
|
207
227
|
{ flag: '--json', description: 'Output structured JSON', default: false },
|
|
208
228
|
],
|
|
209
|
-
scope: '
|
|
229
|
+
scope: 'none',
|
|
210
230
|
output: COMMAND_RESULT,
|
|
211
231
|
handler: (rawOpts) => {
|
|
212
232
|
const opts = rawOpts;
|
|
@@ -279,19 +299,21 @@ function buildNonCompletionHostSpecs(ctx) {
|
|
|
279
299
|
}
|
|
280
300
|
/**
|
|
281
301
|
* The host portion of the completion inventory: the `SpecLike` views of every
|
|
282
|
-
* top-level host command
|
|
283
|
-
* own surface is the static
|
|
284
|
-
* host command is read from
|
|
285
|
-
*
|
|
286
|
-
* handler never depends back on
|
|
287
|
-
*
|
|
288
|
-
* Order is irrelevant here — the inventory subcommand list is sorted — so the
|
|
289
|
-
* static completion descriptor is simply appended.
|
|
302
|
+
* top-level host command, the action-less groups, and the per-tool `plugin`
|
|
303
|
+
* groups. The completion command's own surface is the static
|
|
304
|
+
* {@link COMPLETION_SELF_SPEC} stand-in; every OTHER host command is read from
|
|
305
|
+
* its live spec (so its flags can't drift). Consumed by the `completion` handler
|
|
306
|
+
* INSTEAD of {@link buildTopLevelHostSpecs}, so the handler never depends back on
|
|
307
|
+
* {@link buildCompletionSpec}.
|
|
290
308
|
*/
|
|
291
309
|
function buildHostCompletionSurface(ctx) {
|
|
292
310
|
return {
|
|
293
311
|
specs: [...buildNonCompletionHostSpecs(ctx), COMPLETION_SELF_SPEC],
|
|
294
312
|
groups: buildHostSubcommandGroups(ctx),
|
|
313
|
+
toolPluginGroups: buildToolPluginGroups(ctx).map((g) => ({
|
|
314
|
+
toolVerb: g.toolVerb,
|
|
315
|
+
leaves: g.leaves.map((l) => ({ name: l.name })),
|
|
316
|
+
})),
|
|
295
317
|
};
|
|
296
318
|
}
|
|
297
319
|
/**
|
|
@@ -315,7 +337,10 @@ export function buildTopLevelHostSpecs(ctx) {
|
|
|
315
337
|
* Mount every host command onto `program` through the shared `mountCommandSpec`
|
|
316
338
|
* plane. Top-level specs mount directly; each subcommand group becomes a raw
|
|
317
339
|
* action-less parent (the documented exception) onto which its leaf specs mount
|
|
318
|
-
* via the same `mountCommandSpec`.
|
|
340
|
+
* via the same `mountCommandSpec`. Finally, the per-tool `plugin` groups mount
|
|
341
|
+
* UNDER each pack-supporting tool primary via {@link mountToolPluginGroups} —
|
|
342
|
+
* which runs AFTER the tools were mounted (the composition root mounts tools
|
|
343
|
+
* before `registerCliCommands`), so the tool primaries already exist.
|
|
319
344
|
*/
|
|
320
345
|
export function mountHostCommands(program, ctx) {
|
|
321
346
|
for (const spec of buildTopLevelHostSpecs(ctx)) {
|
|
@@ -327,5 +352,6 @@ export function mountHostCommands(program, ctx) {
|
|
|
327
352
|
mountCommandSpec(parent, leaf, ctx);
|
|
328
353
|
}
|
|
329
354
|
}
|
|
355
|
+
mountToolPluginGroups(program, ctx);
|
|
330
356
|
}
|
|
331
357
|
//# sourceMappingURL=host-command-specs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-command-specs.js","sourceRoot":"","sources":["../../src/commands/host-command-specs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"host-command-specs.js","sourceRoot":"","sources":["../../src/commands/host-command-specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* host-config-flag — the canonical `--config` flag the host guarantees on every
|
|
3
|
+
* tool primary.
|
|
4
|
+
*
|
|
5
|
+
* `--config` is NOT an ADR-0021 `commonFlags` registry entry: it is a HOST flag,
|
|
6
|
+
* read by the pre-action hook as `opts.config` (the explicit
|
|
7
|
+
* `opensip-cli.config.yml` path that overrides the package.json pointer and the
|
|
8
|
+
* default discovery). Fitness historically declared its own `--config`
|
|
9
|
+
* OptionSpec; the host decorator (`decorateToolPrimary`) now guarantees the SAME
|
|
10
|
+
* flag on graph / sim / any third-party primary that did not declare it, so the
|
|
11
|
+
* targeting-config override is uniform across tools.
|
|
12
|
+
*
|
|
13
|
+
* The definition lives here (host-owned) so the decorator and any future host
|
|
14
|
+
* surface read one source of truth. Fitness's in-spec `--config` is byte-matched
|
|
15
|
+
* to this text; the decorator is idempotent and skips it where already present.
|
|
16
|
+
*/
|
|
17
|
+
export declare const CONFIG_FLAG: {
|
|
18
|
+
readonly flags: "--config <path>";
|
|
19
|
+
readonly description: "Path to opensip-cli.config.yml (overrides package.json pointer and default)";
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=host-config-flag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-config-flag.d.ts","sourceRoot":"","sources":["../../src/commands/host-config-flag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW;;;CAGd,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* host-config-flag — the canonical `--config` flag the host guarantees on every
|
|
3
|
+
* tool primary.
|
|
4
|
+
*
|
|
5
|
+
* `--config` is NOT an ADR-0021 `commonFlags` registry entry: it is a HOST flag,
|
|
6
|
+
* read by the pre-action hook as `opts.config` (the explicit
|
|
7
|
+
* `opensip-cli.config.yml` path that overrides the package.json pointer and the
|
|
8
|
+
* default discovery). Fitness historically declared its own `--config`
|
|
9
|
+
* OptionSpec; the host decorator (`decorateToolPrimary`) now guarantees the SAME
|
|
10
|
+
* flag on graph / sim / any third-party primary that did not declare it, so the
|
|
11
|
+
* targeting-config override is uniform across tools.
|
|
12
|
+
*
|
|
13
|
+
* The definition lives here (host-owned) so the decorator and any future host
|
|
14
|
+
* surface read one source of truth. Fitness's in-spec `--config` is byte-matched
|
|
15
|
+
* to this text; the decorator is idempotent and skips it where already present.
|
|
16
|
+
*/
|
|
17
|
+
export const CONFIG_FLAG = {
|
|
18
|
+
flags: '--config <path>',
|
|
19
|
+
description: 'Path to opensip-cli.config.yml (overrides package.json pointer and default)',
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=host-config-flag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-config-flag.js","sourceRoot":"","sources":["../../src/commands/host-config-flag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,iBAAiB;IACxB,WAAW,EAAE,6EAA6E;CAClF,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* host-subcommand-groups — the action-less Commander subcommand GROUPS
|
|
3
|
-
* (`sessions`, `
|
|
4
|
-
* Phase 6
|
|
3
|
+
* (`sessions`, `tools`) and their leaf {@link CommandSpec}s, PLUS the
|
|
4
|
+
* DOMAIN-BOUND per-tool `plugin` group leaves (launch Phase 6 + the
|
|
5
|
+
* command-surface-taxonomy "packs under the tool" refinement).
|
|
5
6
|
*
|
|
6
7
|
* Split out of `host-command-specs.ts` for ONE reason: to break a module cycle.
|
|
7
|
-
* The completion-script generator (`completion.ts`) sources its `
|
|
8
|
-
* `
|
|
8
|
+
* The completion-script generator (`completion.ts`) sources its `sessions` /
|
|
9
|
+
* `tools` sub-subcommand NAME lists from the live leaf specs (single source —
|
|
9
10
|
* Phase 6 Task 6.2), so it must import the group inventory. The
|
|
10
11
|
* `host-command-specs.ts` module, in turn, imports `printCompletionScript` from
|
|
11
12
|
* `completion.ts` for the `completion` command's handler. Housing the GROUP
|
|
@@ -16,10 +17,17 @@
|
|
|
16
17
|
* a single mountable `CommandSpec`, so it stays a raw `program.command(name)`
|
|
17
18
|
* shell (the FINITE, NAMED documented exceptions for the Phase 7
|
|
18
19
|
* `command-surface-parity` guardrail's allow-list, see {@link HOST_SUBCOMMAND_GROUPS}).
|
|
19
|
-
* Their LEAVES (`sessions list|purge`, `
|
|
20
|
+
* Their LEAVES (`sessions list|purge`, `tools list|install|…`) ARE specs.
|
|
21
|
+
*
|
|
22
|
+
* The PACK-management `plugin {add,list,remove,sync}` ops are NO LONGER a
|
|
23
|
+
* top-level group: they mount as a `plugin` group UNDER each pack-supporting
|
|
24
|
+
* tool primary (`opensip fit plugin …`, `opensip sim plugin …`) via
|
|
25
|
+
* `mountToolPluginGroups`, with the domain pre-bound from the tool (no
|
|
26
|
+
* `--domain` flag). Whole Tool plugins remain `opensip tools …`.
|
|
20
27
|
*/
|
|
21
28
|
import { type CommandSpec, type ProjectContext } from '@opensip-cli/core';
|
|
22
29
|
import type { CliCommandsContext } from './shared.js';
|
|
30
|
+
import type { CliProgram } from '@opensip-cli/contracts';
|
|
23
31
|
/** A host command spec — handler receives the {@link CliCommandsContext}. */
|
|
24
32
|
export type HostSpec = CommandSpec<unknown, CliCommandsContext>;
|
|
25
33
|
/** Prefer the discovered project root; fall back to literal cwd; finally process.cwd(). */
|
|
@@ -27,6 +35,39 @@ export declare function effectiveCwd(opts: {
|
|
|
27
35
|
cwd?: string;
|
|
28
36
|
projectContext?: ProjectContext;
|
|
29
37
|
}): string;
|
|
38
|
+
/**
|
|
39
|
+
* Build the four domain-bound `plugin` leaf specs for ONE pack-supporting tool
|
|
40
|
+
* (`add`/`list`/`remove`/`sync`, all scoped to `domain`). Shared by the mount
|
|
41
|
+
* path (`mountToolPluginGroups`), the command-scope index, and the completion
|
|
42
|
+
* inventory so the three derive the SAME leaves.
|
|
43
|
+
*/
|
|
44
|
+
export declare function buildToolPluginLeaves(ctx: CliCommandsContext, domain: string): readonly HostSpec[];
|
|
45
|
+
/** One pack-supporting tool's `plugin` group: the tool's primary verb + the
|
|
46
|
+
* action-less `plugin` parent + the four domain-bound leaves. */
|
|
47
|
+
export interface ToolPluginGroup {
|
|
48
|
+
/** The tool primary verb the `plugin` group mounts under (`fit`/`sim`). */
|
|
49
|
+
readonly toolVerb: string;
|
|
50
|
+
/** The plugin domain (== `toolVerb` for the pack-supporting tools). */
|
|
51
|
+
readonly domain: string;
|
|
52
|
+
readonly description: string;
|
|
53
|
+
readonly leaves: readonly HostSpec[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Derive the per-tool `plugin` groups from the host's contributed
|
|
57
|
+
* `pluginLayouts` — one group per pack-supporting domain (fit/sim). A tool with
|
|
58
|
+
* no `pluginLayout` (e.g. `graph`) contributes none, so it gets no `plugin`
|
|
59
|
+
* group. The single source the mount path + scope index + completion all read.
|
|
60
|
+
*/
|
|
61
|
+
export declare function buildToolPluginGroups(ctx: CliCommandsContext): readonly ToolPluginGroup[];
|
|
62
|
+
/**
|
|
63
|
+
* Mount each per-tool `plugin` group UNDER its pack-supporting tool primary
|
|
64
|
+
* (`opensip fit plugin …`), domain pre-bound from the tool. The host derives the
|
|
65
|
+
* groups from the contributed `pluginLayouts` (fit/sim; graph has none, so no
|
|
66
|
+
* group). The tool primary must already be mounted — it is, because the
|
|
67
|
+
* composition root mounts tools before the host commands; a domain whose primary
|
|
68
|
+
* is absent (isolated host-only tests) is skipped (nowhere to hang it).
|
|
69
|
+
*/
|
|
70
|
+
export declare function mountToolPluginGroups(program: CliProgram, ctx: CliCommandsContext): void;
|
|
30
71
|
/** One subcommand-group parent: a raw action-less `program.command(name)`
|
|
31
72
|
* shell + the leaf specs that mount onto it. */
|
|
32
73
|
export interface HostSubcommandGroup {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-subcommand-groups.d.ts","sourceRoot":"","sources":["../../src/commands/host-subcommand-groups.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"host-subcommand-groups.d.ts","sourceRoot":"","sources":["../../src/commands/host-subcommand-groups.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAIL,KAAK,WAAW,EAEhB,KAAK,cAAc,EAEpB,MAAM,mBAAmB,CAAC;AAS3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,6EAA6E;AAC7E,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAWhE,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAA;CAAE,GAAG,MAAM,CAE5F;AA+RD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE,MAAM,GACb,SAAS,QAAQ,EAAE,CAOrB;AAED;kEACkE;AAClE,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG,SAAS,eAAe,EAAE,CAOzF;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,IAAI,CASxF;AAMD;iDACiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;CACtC;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAAmC,CAAC;AAExF;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,GAAG,SAAS,mBAAmB,EAAE,CAajG;AA4BD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,wFAAwF;IACxF,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACxE;AAED,qFAAqF;AACrF,wBAAgB,yBAAyB,IAAI,oBAAoB,CAMhE"}
|