opensip-cli 0.1.6 → 0.1.8

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.
Files changed (229) hide show
  1. package/dist/bootstrap/admit-tool-package.d.ts.map +1 -1
  2. package/dist/bootstrap/admit-tool-package.js +8 -3
  3. package/dist/bootstrap/admit-tool-package.js.map +1 -1
  4. package/dist/bootstrap/bind-tool-context.d.ts.map +1 -1
  5. package/dist/bootstrap/bind-tool-context.js +5 -3
  6. package/dist/bootstrap/bind-tool-context.js.map +1 -1
  7. package/dist/bootstrap/build-command-registration-input.d.ts +7 -0
  8. package/dist/bootstrap/build-command-registration-input.d.ts.map +1 -1
  9. package/dist/bootstrap/build-command-registration-input.js +11 -4
  10. package/dist/bootstrap/build-command-registration-input.js.map +1 -1
  11. package/dist/bootstrap/build-per-run-scope.d.ts +12 -0
  12. package/dist/bootstrap/build-per-run-scope.d.ts.map +1 -1
  13. package/dist/bootstrap/build-per-run-scope.js +92 -10
  14. package/dist/bootstrap/build-per-run-scope.js.map +1 -1
  15. package/dist/bootstrap/bundled-manifest.d.ts +5 -0
  16. package/dist/bootstrap/bundled-manifest.d.ts.map +1 -0
  17. package/dist/bootstrap/bundled-manifest.js +13 -0
  18. package/dist/bootstrap/bundled-manifest.js.map +1 -0
  19. package/dist/bootstrap/bundled-tools.manifest.json +19 -1
  20. package/dist/bootstrap/config-and-capabilities.d.ts.map +1 -1
  21. package/dist/bootstrap/config-and-capabilities.js +5 -4
  22. package/dist/bootstrap/config-and-capabilities.js.map +1 -1
  23. package/dist/bootstrap/constants.d.ts +3 -0
  24. package/dist/bootstrap/constants.d.ts.map +1 -0
  25. package/dist/bootstrap/constants.js +3 -0
  26. package/dist/bootstrap/constants.js.map +1 -0
  27. package/dist/bootstrap/decorate-tool-primary.d.ts +50 -0
  28. package/dist/bootstrap/decorate-tool-primary.d.ts.map +1 -0
  29. package/dist/bootstrap/decorate-tool-primary.js +111 -0
  30. package/dist/bootstrap/decorate-tool-primary.js.map +1 -0
  31. package/dist/bootstrap/execute-post-bailout-bootstrap.d.ts.map +1 -1
  32. package/dist/bootstrap/execute-post-bailout-bootstrap.js +10 -0
  33. package/dist/bootstrap/execute-post-bailout-bootstrap.js.map +1 -1
  34. package/dist/bootstrap/index.d.ts +7 -1
  35. package/dist/bootstrap/index.d.ts.map +1 -1
  36. package/dist/bootstrap/index.js +15 -6
  37. package/dist/bootstrap/index.js.map +1 -1
  38. package/dist/bootstrap/io-plane.d.ts +47 -0
  39. package/dist/bootstrap/io-plane.d.ts.map +1 -0
  40. package/dist/bootstrap/io-plane.js +73 -0
  41. package/dist/bootstrap/io-plane.js.map +1 -0
  42. package/dist/bootstrap/load-tool-capabilities.d.ts.map +1 -1
  43. package/dist/bootstrap/load-tool-capabilities.js +18 -2
  44. package/dist/bootstrap/load-tool-capabilities.js.map +1 -1
  45. package/dist/bootstrap/owning-tool-init.d.ts.map +1 -1
  46. package/dist/bootstrap/owning-tool-init.js +7 -4
  47. package/dist/bootstrap/owning-tool-init.js.map +1 -1
  48. package/dist/bootstrap/phase-map.d.ts +20 -0
  49. package/dist/bootstrap/phase-map.d.ts.map +1 -0
  50. package/dist/bootstrap/phase-map.js +108 -0
  51. package/dist/bootstrap/phase-map.js.map +1 -0
  52. package/dist/bootstrap/pre-action-hook.d.ts.map +1 -1
  53. package/dist/bootstrap/pre-action-hook.js +24 -2
  54. package/dist/bootstrap/pre-action-hook.js.map +1 -1
  55. package/dist/bootstrap/register-tools-discovery.d.ts +42 -59
  56. package/dist/bootstrap/register-tools-discovery.d.ts.map +1 -1
  57. package/dist/bootstrap/register-tools-discovery.js +175 -97
  58. package/dist/bootstrap/register-tools-discovery.js.map +1 -1
  59. package/dist/bootstrap/register-tools-mount.d.ts +18 -1
  60. package/dist/bootstrap/register-tools-mount.d.ts.map +1 -1
  61. package/dist/bootstrap/register-tools-mount.js +118 -18
  62. package/dist/bootstrap/register-tools-mount.js.map +1 -1
  63. package/dist/bootstrap/register-tools.d.ts +58 -14
  64. package/dist/bootstrap/register-tools.d.ts.map +1 -1
  65. package/dist/bootstrap/register-tools.js +185 -14
  66. package/dist/bootstrap/register-tools.js.map +1 -1
  67. package/dist/bootstrap/root-version.d.ts +26 -0
  68. package/dist/bootstrap/root-version.d.ts.map +1 -0
  69. package/dist/bootstrap/root-version.js +36 -0
  70. package/dist/bootstrap/root-version.js.map +1 -0
  71. package/dist/bootstrap/scope-access.d.ts +26 -1
  72. package/dist/bootstrap/scope-access.d.ts.map +1 -1
  73. package/dist/bootstrap/scope-access.js +38 -1
  74. package/dist/bootstrap/scope-access.js.map +1 -1
  75. package/dist/bootstrap/skip-installed-plugins.d.ts +23 -0
  76. package/dist/bootstrap/skip-installed-plugins.d.ts.map +1 -0
  77. package/dist/bootstrap/skip-installed-plugins.js +30 -0
  78. package/dist/bootstrap/skip-installed-plugins.js.map +1 -0
  79. package/dist/bootstrap/tool-lifecycle.d.ts +0 -22
  80. package/dist/bootstrap/tool-lifecycle.d.ts.map +1 -1
  81. package/dist/bootstrap/tool-lifecycle.js +0 -23
  82. package/dist/bootstrap/tool-lifecycle.js.map +1 -1
  83. package/dist/bootstrap/tool-trust.d.ts +22 -2
  84. package/dist/bootstrap/tool-trust.d.ts.map +1 -1
  85. package/dist/bootstrap/tool-trust.js +25 -2
  86. package/dist/bootstrap/tool-trust.js.map +1 -1
  87. package/dist/bootstrap/validate-tool.d.ts +10 -4
  88. package/dist/bootstrap/validate-tool.d.ts.map +1 -1
  89. package/dist/bootstrap/validate-tool.js +76 -22
  90. package/dist/bootstrap/validate-tool.js.map +1 -1
  91. package/dist/cli-context.d.ts +2 -2
  92. package/dist/cli-context.d.ts.map +1 -1
  93. package/dist/cli-context.js +20 -35
  94. package/dist/cli-context.js.map +1 -1
  95. package/dist/commands/agent-catalog.d.ts +29 -0
  96. package/dist/commands/agent-catalog.d.ts.map +1 -1
  97. package/dist/commands/agent-catalog.js +77 -36
  98. package/dist/commands/agent-catalog.js.map +1 -1
  99. package/dist/commands/clear.d.ts.map +1 -1
  100. package/dist/commands/clear.js +0 -1
  101. package/dist/commands/clear.js.map +1 -1
  102. package/dist/commands/command-scope-index.d.ts +15 -1
  103. package/dist/commands/command-scope-index.d.ts.map +1 -1
  104. package/dist/commands/command-scope-index.js +10 -1
  105. package/dist/commands/command-scope-index.js.map +1 -1
  106. package/dist/commands/completion.d.ts +67 -6
  107. package/dist/commands/completion.d.ts.map +1 -1
  108. package/dist/commands/completion.js +84 -12
  109. package/dist/commands/completion.js.map +1 -1
  110. package/dist/commands/configure.d.ts.map +1 -1
  111. package/dist/commands/configure.js +0 -1
  112. package/dist/commands/configure.js.map +1 -1
  113. package/dist/commands/host-command-specs.d.ts +16 -9
  114. package/dist/commands/host-command-specs.d.ts.map +1 -1
  115. package/dist/commands/host-command-specs.js +45 -19
  116. package/dist/commands/host-command-specs.js.map +1 -1
  117. package/dist/commands/host-config-flag.d.ts +21 -0
  118. package/dist/commands/host-config-flag.d.ts.map +1 -0
  119. package/dist/commands/host-config-flag.js +21 -0
  120. package/dist/commands/host-config-flag.js.map +1 -0
  121. package/dist/commands/host-subcommand-groups.d.ts +46 -5
  122. package/dist/commands/host-subcommand-groups.d.ts.map +1 -1
  123. package/dist/commands/host-subcommand-groups.js +97 -65
  124. package/dist/commands/host-subcommand-groups.js.map +1 -1
  125. package/dist/commands/index.d.ts +1 -1
  126. package/dist/commands/index.js +1 -1
  127. package/dist/commands/internal-command-visibility.d.ts +42 -0
  128. package/dist/commands/internal-command-visibility.d.ts.map +1 -0
  129. package/dist/commands/internal-command-visibility.js +54 -0
  130. package/dist/commands/internal-command-visibility.js.map +1 -0
  131. package/dist/commands/mount-command-action.d.ts +5 -0
  132. package/dist/commands/mount-command-action.d.ts.map +1 -1
  133. package/dist/commands/mount-command-action.js +26 -2
  134. package/dist/commands/mount-command-action.js.map +1 -1
  135. package/dist/commands/mount-command-spec.d.ts +9 -2
  136. package/dist/commands/mount-command-spec.d.ts.map +1 -1
  137. package/dist/commands/mount-command-spec.js +9 -1
  138. package/dist/commands/mount-command-spec.js.map +1 -1
  139. package/dist/commands/plugin/domain-resolution.d.ts +12 -13
  140. package/dist/commands/plugin/domain-resolution.d.ts.map +1 -1
  141. package/dist/commands/plugin/domain-resolution.js +12 -58
  142. package/dist/commands/plugin/domain-resolution.js.map +1 -1
  143. package/dist/commands/plugin/host-dir.d.ts +0 -1
  144. package/dist/commands/plugin/host-dir.d.ts.map +1 -1
  145. package/dist/commands/plugin/host-dir.js +1 -1
  146. package/dist/commands/plugin/host-dir.js.map +1 -1
  147. package/dist/commands/plugin.d.ts +20 -14
  148. package/dist/commands/plugin.d.ts.map +1 -1
  149. package/dist/commands/plugin.js +39 -47
  150. package/dist/commands/plugin.js.map +1 -1
  151. package/dist/commands/render-outcome.d.ts.map +1 -1
  152. package/dist/commands/render-outcome.js.map +1 -1
  153. package/dist/commands/shared.d.ts +9 -0
  154. package/dist/commands/shared.d.ts.map +1 -1
  155. package/dist/commands/tools/create.d.ts +11 -0
  156. package/dist/commands/tools/create.d.ts.map +1 -0
  157. package/dist/commands/tools/create.js +84 -0
  158. package/dist/commands/tools/create.js.map +1 -0
  159. package/dist/commands/tools/index.d.ts.map +1 -1
  160. package/dist/commands/tools/index.js +31 -0
  161. package/dist/commands/tools/index.js.map +1 -1
  162. package/dist/commands/tools/runtime-probe-entry.d.ts.map +1 -1
  163. package/dist/commands/tools/runtime-probe-entry.js +4 -2
  164. package/dist/commands/tools/runtime-probe-entry.js.map +1 -1
  165. package/dist/commands/tools/validate.d.ts.map +1 -1
  166. package/dist/commands/tools/validate.js +12 -5
  167. package/dist/commands/tools/validate.js.map +1 -1
  168. package/dist/commands/uninstall.d.ts.map +1 -1
  169. package/dist/commands/uninstall.js +0 -1
  170. package/dist/commands/uninstall.js.map +1 -1
  171. package/dist/env/host-env-specs.d.ts +18 -0
  172. package/dist/env/host-env-specs.d.ts.map +1 -1
  173. package/dist/env/host-env-specs.js +58 -2
  174. package/dist/env/host-env-specs.js.map +1 -1
  175. package/dist/index.d.ts +1 -1
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +33 -11
  178. package/dist/index.js.map +1 -1
  179. package/dist/report-compose.d.ts.map +1 -1
  180. package/dist/report-compose.js +2 -2
  181. package/dist/report-compose.js.map +1 -1
  182. package/dist/session-replay-registry.d.ts +1 -1
  183. package/dist/session-replay-registry.d.ts.map +1 -1
  184. package/dist/session-replay-registry.js +3 -1
  185. package/dist/session-replay-registry.js.map +1 -1
  186. package/dist/telemetry/command-label.d.ts +19 -0
  187. package/dist/telemetry/command-label.d.ts.map +1 -0
  188. package/dist/telemetry/command-label.js +26 -0
  189. package/dist/telemetry/command-label.js.map +1 -0
  190. package/dist/telemetry/sdk-init.d.ts +9 -0
  191. package/dist/telemetry/sdk-init.d.ts.map +1 -1
  192. package/dist/telemetry/sdk-init.js +32 -0
  193. package/dist/telemetry/sdk-init.js.map +1 -1
  194. package/dist/ui/result-to-view.d.ts +27 -7
  195. package/dist/ui/result-to-view.d.ts.map +1 -1
  196. package/dist/ui/result-to-view.js +68 -75
  197. package/dist/ui/result-to-view.js.map +1 -1
  198. package/dist/ui/views/misc-views.d.ts.map +1 -1
  199. package/dist/ui/views/misc-views.js +3 -1
  200. package/dist/ui/views/misc-views.js.map +1 -1
  201. package/dist/ui/views/tools-views.d.ts +2 -1
  202. package/dist/ui/views/tools-views.d.ts.map +1 -1
  203. package/dist/ui/views/tools-views.js +29 -0
  204. package/dist/ui/views/tools-views.js.map +1 -1
  205. package/package.json +32 -32
  206. package/dist/bootstrap/authored-tool-admission.d.ts +0 -23
  207. package/dist/bootstrap/authored-tool-admission.d.ts.map +0 -1
  208. package/dist/bootstrap/authored-tool-admission.js +0 -54
  209. package/dist/bootstrap/authored-tool-admission.js.map +0 -1
  210. package/dist/bootstrap/egress-plane.d.ts +0 -22
  211. package/dist/bootstrap/egress-plane.d.ts.map +0 -1
  212. package/dist/bootstrap/egress-plane.js +0 -37
  213. package/dist/bootstrap/egress-plane.js.map +0 -1
  214. package/dist/bootstrap/installed-tool-admission.d.ts +0 -20
  215. package/dist/bootstrap/installed-tool-admission.d.ts.map +0 -1
  216. package/dist/bootstrap/installed-tool-admission.js +0 -60
  217. package/dist/bootstrap/installed-tool-admission.js.map +0 -1
  218. package/dist/bootstrap/live-plane.d.ts +0 -51
  219. package/dist/bootstrap/live-plane.d.ts.map +0 -1
  220. package/dist/bootstrap/live-plane.js +0 -72
  221. package/dist/bootstrap/live-plane.js.map +0 -1
  222. package/dist/bootstrap/register-tools-bundled.d.ts +0 -28
  223. package/dist/bootstrap/register-tools-bundled.d.ts.map +0 -1
  224. package/dist/bootstrap/register-tools-bundled.js +0 -107
  225. package/dist/bootstrap/register-tools-bundled.js.map +0 -1
  226. package/dist/bootstrap/register-tools-shared.d.ts +0 -40
  227. package/dist/bootstrap/register-tools-shared.d.ts.map +0 -1
  228. package/dist/bootstrap/register-tools-shared.js +0 -98
  229. package/dist/bootstrap/register-tools-shared.js.map +0 -1
@@ -0,0 +1,50 @@
1
+ /**
2
+ * decorate-tool-primary — the host-owned decorator the mount layer applies to
3
+ * EVERY tool's PRIMARY command (the flat, no-`parent` spec whose name matches
4
+ * `tool.metadata.name`: `fit`, `graph`, `sim`, and any third-party tool's run
5
+ * verb).
6
+ *
7
+ * The decorator is the single place the host GUARANTEES a uniform primary-command
8
+ * surface, so a tool need not opt in per spec:
9
+ *
10
+ * 1. `--version` — prints the TOOL's own version (`<name> <version>`, plus a
11
+ * `(tool contract v<n>)` marker when the Tool declares `contractVersion`).
12
+ * This is distinct from `opensip --version` (the CLI version, owned at the
13
+ * composition root). Implemented via Commander's `.version()` on the primary
14
+ * command — the root no longer registers a Commander version option (it is
15
+ * handled by a host argv pre-scan), so the subcommand-local `--version` no
16
+ * longer collides with an inherited global one.
17
+ * 2. The baseline common flags `--cwd` / `--json` / `--config` are present on
18
+ * every primary regardless of what the tool declared in `commonFlags`.
19
+ * 3. `--quiet` / `--verbose` are present on every primary.
20
+ *
21
+ * The decorator is IDEMPOTENT: a flag the tool already declared (via its
22
+ * `commonFlags` or a hand-rolled `OptionSpec` — e.g. fit already ships `--config`,
23
+ * and all three primaries already opt into `--cwd`/`--json`/`--quiet`/`--verbose`)
24
+ * is left untouched, so Commander never sees a duplicate-option registration. The
25
+ * decorator only ADDS what is missing (in practice `--config` for graph/sim).
26
+ *
27
+ * This lives in the mount path (called from `mountOneTool`) rather than being
28
+ * re-declared per tool — there is no per-tool special case here; the same
29
+ * decoration runs for bundled and discovered tools alike.
30
+ */
31
+ import { type CliProgram } from '@opensip-cli/contracts';
32
+ import { type Tool } from '@opensip-cli/core';
33
+ /**
34
+ * Build the tool's `--version` payload: `<name> <version>`, with a
35
+ * `(tool contract v<n>)` suffix only when the Tool declares `contractVersion`
36
+ * (none of the bundled tools do today — they version their tool-specific surface
37
+ * via `extensionPoints` — so the suffix is reserved for tools that opt in).
38
+ */
39
+ export declare function toolVersionString(tool: Tool): string;
40
+ /**
41
+ * Decorate a tool's PRIMARY command with the host-guaranteed uniform surface
42
+ * (see the module header). Idempotent w.r.t. flags the tool already declared.
43
+ *
44
+ * @param primaryCmd The mounted Commander command for the tool's primary spec
45
+ * (the flat spec whose name === `tool.metadata.name`).
46
+ * @param tool The tool being mounted — read for `metadata.version` /
47
+ * `metadata.name` / `contractVersion`.
48
+ */
49
+ export declare function decorateToolPrimary(primaryCmd: CliProgram, tool: Tool): void;
50
+ //# sourceMappingURL=decorate-tool-primary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorate-tool-primary.d.ts","sourceRoot":"","sources":["../../src/bootstrap/decorate-tool-primary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAqC9C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAKpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CA0B5E"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * decorate-tool-primary — the host-owned decorator the mount layer applies to
3
+ * EVERY tool's PRIMARY command (the flat, no-`parent` spec whose name matches
4
+ * `tool.metadata.name`: `fit`, `graph`, `sim`, and any third-party tool's run
5
+ * verb).
6
+ *
7
+ * The decorator is the single place the host GUARANTEES a uniform primary-command
8
+ * surface, so a tool need not opt in per spec:
9
+ *
10
+ * 1. `--version` — prints the TOOL's own version (`<name> <version>`, plus a
11
+ * `(tool contract v<n>)` marker when the Tool declares `contractVersion`).
12
+ * This is distinct from `opensip --version` (the CLI version, owned at the
13
+ * composition root). Implemented via Commander's `.version()` on the primary
14
+ * command — the root no longer registers a Commander version option (it is
15
+ * handled by a host argv pre-scan), so the subcommand-local `--version` no
16
+ * longer collides with an inherited global one.
17
+ * 2. The baseline common flags `--cwd` / `--json` / `--config` are present on
18
+ * every primary regardless of what the tool declared in `commonFlags`.
19
+ * 3. `--quiet` / `--verbose` are present on every primary.
20
+ *
21
+ * The decorator is IDEMPOTENT: a flag the tool already declared (via its
22
+ * `commonFlags` or a hand-rolled `OptionSpec` — e.g. fit already ships `--config`,
23
+ * and all three primaries already opt into `--cwd`/`--json`/`--quiet`/`--verbose`)
24
+ * is left untouched, so Commander never sees a duplicate-option registration. The
25
+ * decorator only ADDS what is missing (in practice `--config` for graph/sim).
26
+ *
27
+ * This lives in the mount path (called from `mountOneTool`) rather than being
28
+ * re-declared per tool — there is no per-tool special case here; the same
29
+ * decoration runs for bundled and discovered tools alike.
30
+ */
31
+ import { applyCommonFlags, commonFlags, } from '@opensip-cli/contracts';
32
+ import { CONFIG_FLAG } from '../commands/host-config-flag.js';
33
+ /**
34
+ * The host-guaranteed baseline COMMON flags on every tool primary (ADR-0021
35
+ * registry keys). `cwd` / `json` are the always-on machine-output + targeting
36
+ * pair; `quiet` / `verbose` are the uniform verbosity pair. `--config` is added
37
+ * separately (it is a host flag, not an ADR-0021 registry entry).
38
+ */
39
+ const GUARANTEED_COMMON_FLAG_KEYS = ['cwd', 'json', 'quiet', 'verbose'];
40
+ /**
41
+ * Each guaranteed common flag paired with its registry `--long` form, resolved
42
+ * ONCE at module load. Precomputing keeps the per-decoration filter a plain
43
+ * `.long` read (no `commonFlags[key]` index access in the hot path).
44
+ */
45
+ const GUARANTEED_COMMON_FLAGS = GUARANTEED_COMMON_FLAG_KEYS.map((key) => {
46
+ // Destructure the registry value into a local before reading `.flags` — the
47
+ // key is a static `CommonFlagKey`, so the registry entry is always present.
48
+ const { flags } = commonFlags[key];
49
+ return { key, long: longFlagOf(flags) };
50
+ });
51
+ /**
52
+ * Read the set of long-flag strings (`--foo`) a Commander command already has, so
53
+ * the decorator can add only what is missing and never double-register a flag.
54
+ */
55
+ function existingLongFlags(cmd) {
56
+ const longs = new Set();
57
+ for (const option of cmd.options) {
58
+ if (option.long !== undefined && option.long !== null)
59
+ longs.add(option.long);
60
+ }
61
+ return longs;
62
+ }
63
+ /**
64
+ * Build the tool's `--version` payload: `<name> <version>`, with a
65
+ * `(tool contract v<n>)` suffix only when the Tool declares `contractVersion`
66
+ * (none of the bundled tools do today — they version their tool-specific surface
67
+ * via `extensionPoints` — so the suffix is reserved for tools that opt in).
68
+ */
69
+ export function toolVersionString(tool) {
70
+ const base = `${tool.metadata.name} ${tool.metadata.version}`;
71
+ return tool.contractVersion === undefined
72
+ ? base
73
+ : `${base} (tool contract v${tool.contractVersion})`;
74
+ }
75
+ /**
76
+ * Decorate a tool's PRIMARY command with the host-guaranteed uniform surface
77
+ * (see the module header). Idempotent w.r.t. flags the tool already declared.
78
+ *
79
+ * @param primaryCmd The mounted Commander command for the tool's primary spec
80
+ * (the flat spec whose name === `tool.metadata.name`).
81
+ * @param tool The tool being mounted — read for `metadata.version` /
82
+ * `metadata.name` / `contractVersion`.
83
+ */
84
+ export function decorateToolPrimary(primaryCmd, tool) {
85
+ const present = existingLongFlags(primaryCmd);
86
+ // (1) Per-tool --version. The root no longer owns a Commander version option,
87
+ // so this subcommand-local --version is the one Commander resolves for
88
+ // `opensip <tool> --version`. Skip if the tool already declared a `--version`
89
+ // (defense in depth — no first-party tool does).
90
+ if (!present.has('--version')) {
91
+ primaryCmd.version(toolVersionString(tool), '--version', "Print this tool's version");
92
+ }
93
+ // (2) Guaranteed baseline common flags (--cwd/--json/--quiet/--verbose), added
94
+ // only when missing. `cwd` seeds process.cwd() to match the mounter's default.
95
+ const missingCommon = GUARANTEED_COMMON_FLAGS.filter((f) => !present.has(f.long)).map((f) => f.key);
96
+ if (missingCommon.length > 0) {
97
+ const seedsCwd = missingCommon.includes('cwd');
98
+ applyCommonFlags(primaryCmd, missingCommon, seedsCwd ? { cwd: process.cwd() } : undefined);
99
+ }
100
+ // (3) Guaranteed --config (host flag read by the pre-action hook as
101
+ // `opts.config`), added only when missing — fit already declares it.
102
+ if (!present.has('--config')) {
103
+ primaryCmd.option(CONFIG_FLAG.flags, CONFIG_FLAG.description);
104
+ }
105
+ }
106
+ /** Extract the `--long` form from a Commander flag string (`-q, --quiet` → `--quiet`). */
107
+ function longFlagOf(flags) {
108
+ const match = /--[a-z][a-z-]*/.exec(flags);
109
+ return match ? match[0] : flags;
110
+ }
111
+ //# sourceMappingURL=decorate-tool-primary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorate-tool-primary.js","sourceRoot":"","sources":["../../src/bootstrap/decorate-tool-primary.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"execute-post-bailout-bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/execute-post-bailout-bootstrap.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EAEf,UAAU,EAGV,KAAK,MAAM,EACX,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAGrF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAShE,qDAAqD;AACrD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEpD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,eAAe,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IAChD,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IAChD,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,yBAAyB,CAAC;IACtE,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,0BAA0B,CAAC;IACxE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACvD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AA2BD;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,yBAAyB,EAChC,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,0BAA0B,CAAC,CAiGrC"}
1
+ {"version":3,"file":"execute-post-bailout-bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/execute-post-bailout-bootstrap.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EAEf,UAAU,EAGV,KAAK,MAAM,EACX,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAGrF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAShE,qDAAqD;AACrD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEpD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,eAAe,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IAChD,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IAChD,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,yBAAyB,CAAC;IACtE,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,0BAA0B,CAAC;IACxE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACvD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AA2BD;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,yBAAyB,EAChC,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,0BAA0B,CAAC,CA4GrC"}
@@ -46,10 +46,20 @@ export async function executePostBailoutBootstrap(input, deps = {}) {
46
46
  process.stderr.write(formatUpdateNag(version, update));
47
47
  }
48
48
  record(PRE_ACTION_PHASES.buildScope);
49
+ // B2 / GAP e: parentCommand is the FIRST segment of the invoked command path
50
+ // (e.g. `graph`, `fit`) — NOT a child's own `graph-shard-worker`. toolName is
51
+ // the owning tool id of the dispatched command (resolved by the same
52
+ // owning-tool resolution the preflight uses); fall back to parentCommand when
53
+ // the command belongs to no tool (CLI-only commands have a 1:1 name).
54
+ const parentCommand = plan.commandPath.split(' ')[0] ?? plan.commandName;
55
+ const owningTool = d.resolveOwningTool(tools, plan.commandName);
56
+ const toolName = owningTool?.metadata.id ?? parentCommand;
49
57
  const scope = d.buildPerRunScope({
50
58
  project: plan.project,
51
59
  runId: plan.runId,
52
60
  cwd: plan.cwd,
61
+ parentCommand,
62
+ toolName,
53
63
  cliDefaults: plan.cliDefaults,
54
64
  registries: { languages, tools },
55
65
  manifests,
@@ -1 +1 @@
1
- {"version":3,"file":"execute-post-bailout-bootstrap.js","sourceRoot":"","sources":["../../src/bootstrap/execute-post-bailout-bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute-post-bailout-bootstrap.js","sourceRoot":"","sources":["../../src/bootstrap/execute-post-bailout-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -14,15 +14,21 @@
14
14
  import { type LanguageRegistry, type ToolPluginManifest, type ToolProvenance, type ToolRegistry } from '@opensip-cli/core';
15
15
  export { mountAllToolCommands, EXPECTED_SCAFFOLDING_TOOL_IDS } from './register-tools.js';
16
16
  export { admitToolPackage, importToolRuntime, type AdmissionReport, type AdmissionSection, type AdmissionSectionResult, type AdmitToolPackageOptions, } from './admit-tool-package.js';
17
- export { mountToolCommands } from './tool-lifecycle.js';
18
17
  export { renderResult } from './render.js';
19
18
  export { maybeOpenReport } from './report.js';
20
19
  export { installPreActionHook } from './pre-action-hook.js';
21
20
  export { buildCommandRegistrationInput } from './build-command-registration-input.js';
22
21
  export { buildHostPlanes } from './host-planes.js';
22
+ export { isRootVersionRequest } from './root-version.js';
23
23
  export interface BootstrapOptions {
24
24
  readonly langRegistry: LanguageRegistry;
25
25
  readonly toolRegistry: ToolRegistry;
26
+ /**
27
+ * User args after the binary (`process.argv.slice(2)`). Used for bootstrap-
28
+ * time global flags (e.g. `--no-plugins`) that must be honored before Commander
29
+ * parses.
30
+ */
31
+ readonly argv?: readonly string[];
26
32
  /**
27
33
  * The CLI's own install directory. Anchors discovery of graph adapters
28
34
  * and of tools installed as siblings of a global `opensip-cli`.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAkB3B,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAI1F,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyEnF;AAED,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACnD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAiB3B,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAI1F,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAkFnF;AAED,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACnD"}
@@ -12,26 +12,25 @@
12
12
  *
13
13
  * See tool-lifecycle.ts for the ordered steps and phase split.
14
14
  */
15
- import { resolveProjectContext, resolveProjectPaths, resolveUserPaths, } from '@opensip-cli/core';
15
+ import { logger, resolveProjectContext, resolveProjectPaths, resolveUserPaths, } from '@opensip-cli/core';
16
16
  import { hostEnv } from '../env/host-env-specs.js';
17
17
  import { initTelemetry } from '../telemetry/sdk-init.js';
18
+ import { BOOTSTRAP_MODULE } from './constants.js';
18
19
  import { registerLanguageAdapters } from './register-language-adapters.js';
19
20
  import { BUNDLED_TOOL_PACKAGES, registerFirstPartyTools, discoverAndRegisterToolPackages, discoverAndRegisterAuthoredTools, buildToolDiscoverySources, } from './register-tools.js';
21
+ import { shouldSkipInstalledToolDiscovery } from './skip-installed-plugins.js';
20
22
  // Re-export only the symbols the CLI composition root (`index.ts`) consumes.
21
- // `mountToolCommands` is the named step-8 seam of the tool lifecycle (release
22
- // launch, §5.4); it delegates to `mountAllToolCommands` (kept exported for the
23
- // existing direct unit tests).
24
23
  export { mountAllToolCommands, EXPECTED_SCAFFOLDING_TOOL_IDS } from './register-tools.js';
25
24
  // The shared admission callable (ADR-0041: one validator, four consumers) —
26
25
  // consumed by the tools command group (validate/install) and the
27
26
  // admission-parity / bundled-conformance tests.
28
27
  export { admitToolPackage, importToolRuntime, } from './admit-tool-package.js';
29
- export { mountToolCommands } from './tool-lifecycle.js';
30
28
  export { renderResult } from './render.js';
31
29
  export { maybeOpenReport } from './report.js';
32
30
  export { installPreActionHook } from './pre-action-hook.js';
33
31
  export { buildCommandRegistrationInput } from './build-command-registration-input.js';
34
32
  export { buildHostPlanes } from './host-planes.js';
33
+ export { isRootVersionRequest } from './root-version.js';
35
34
  /**
36
35
  * One-shot bootstrap: register language adapters, register the first-
37
36
  * party tools, and discover-and-register every third-party tool +
@@ -79,7 +78,17 @@ export async function bootstrapCli(opts) {
79
78
  // the manifests just loaded (not from an imported tool runtime — the host
80
79
  // holds none in the launch contract).
81
80
  const builtInIds = new Set(manifests.map((m) => m.id));
82
- await discoverAndRegisterToolPackages(opts.toolRegistry, { sources: buildToolDiscoverySources(opts.cwd, opts.projectDir) }, builtInIds, provenance, manifests);
81
+ const argv = opts.argv ?? [];
82
+ if (shouldSkipInstalledToolDiscovery(argv)) {
83
+ logger.info({
84
+ evt: 'cli.tool.installed_discovery_skipped',
85
+ module: BOOTSTRAP_MODULE,
86
+ reason: argv.includes('--no-plugins') ? 'argv-no-plugins' : 'env-skip-installed',
87
+ });
88
+ }
89
+ else {
90
+ await discoverAndRegisterToolPackages(opts.toolRegistry, { sources: buildToolDiscoverySources(opts.cwd, opts.projectDir) }, builtInIds, provenance, manifests);
91
+ }
83
92
  // Authored Tool sidecars (ADR-0027 realization): global trusted-by-default +
84
93
  // project deny-by-default. Resolve the two authored roots — the global root
85
94
  // is always present; the project root is best-effort (an unresolvable
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * io-plane — the host's interactive + effectful I/O plane
3
+ * (host-owned-run-timing Phase 6 §6.1).
4
+ *
5
+ * Merges the former egress plane (cloud sync, SARIF file sink) and live-view
6
+ * plane (registerLiveView, renderLive) into one module — both concerns are
7
+ * effectful host I/O that tools reach only through documented ToolCliContext
8
+ * seams.
9
+ */
10
+ import { type LiveViewContext, type LiveViewRenderer, type Logger, type ToolCliContext, type ToolRunCompletion, type ToolRunSessions } from '@opensip-cli/core';
11
+ import type { RunPlaneFactory } from './run-plane.js';
12
+ /** Stable dependencies the egress plane captures. */
13
+ export interface EgressPlaneDeps {
14
+ /** The single exit-code write path (from the output plane) — threaded into delivery. */
15
+ readonly setExitCode: (code: number) => void;
16
+ readonly logger?: Logger;
17
+ }
18
+ /** The egress plane's public surface (the two `ToolCliContext` egress seams). */
19
+ export type EgressPlane = Pick<ToolCliContext, 'deliverSignals' | 'writeSarif'>;
20
+ export declare function createEgressPlane(deps: EgressPlaneDeps): EgressPlane;
21
+ export interface LiveViewRegistry {
22
+ readonly register: (key: string, renderer: LiveViewRenderer) => void;
23
+ readonly render: (key: string, args: unknown, liveContext?: LiveViewContext) => Promise<ToolRunCompletion | void>;
24
+ readonly has: (key: string) => boolean;
25
+ }
26
+ export declare function createLiveViewRegistry(log?: Logger): LiveViewRegistry;
27
+ /** Stable dependencies the live plane binds together. */
28
+ export interface LivePlaneDeps {
29
+ readonly liveViews: LiveViewRegistry;
30
+ readonly runPlane: RunPlaneFactory;
31
+ readonly runSession: ToolRunSessions;
32
+ }
33
+ /** The live plane's public surface (the two `ToolCliContext` live-view seams). */
34
+ export interface LivePlane {
35
+ readonly register: LiveViewRegistry['register'];
36
+ readonly renderLive: (key: string, args: unknown, liveContext?: LiveViewContext) => Promise<ToolRunCompletion | void>;
37
+ }
38
+ export declare function createLivePlane(deps: LivePlaneDeps): LivePlane;
39
+ /** Build both egress and live planes from one dependency bundle. */
40
+ export declare function createIoPlane(deps: {
41
+ readonly setExitCode: (code: number) => void;
42
+ readonly logger?: Logger;
43
+ readonly liveViews: LiveViewRegistry;
44
+ readonly runPlane: RunPlaneFactory;
45
+ readonly runSession: ToolRunSessions;
46
+ }): EgressPlane & LivePlane;
47
+ //# sourceMappingURL=io-plane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io-plane.d.ts","sourceRoot":"","sources":["../../src/bootstrap/io-plane.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOtD,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,wFAAwF;IACxF,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,gBAAgB,GAAG,YAAY,CAAC,CAAC;AAEhF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,CAcpE;AAMD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,MAAM,EAAE,CACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,EACb,WAAW,CAAC,EAAE,eAAe,KAC1B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC;AAED,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,MAAsB,GAAG,gBAAgB,CA2BpF;AAED,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;CACtC;AAED,kFAAkF;AAClF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,CACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,EACb,WAAW,CAAC,EAAE,eAAe,KAC1B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACxC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAU9D;AAED,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;CACtC,GAAG,WAAW,GAAG,SAAS,CAS1B"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * io-plane — the host's interactive + effectful I/O plane
3
+ * (host-owned-run-timing Phase 6 §6.1).
4
+ *
5
+ * Merges the former egress plane (cloud sync, SARIF file sink) and live-view
6
+ * plane (registerLiveView, renderLive) into one module — both concerns are
7
+ * effectful host I/O that tools reach only through documented ToolCliContext
8
+ * seams.
9
+ */
10
+ import { UnknownLiveViewError, logger as defaultLogger, } from '@opensip-cli/core';
11
+ import { deliverEnvelope, writeEnvelopeSarif } from './deliver-envelope.js';
12
+ export function createEgressPlane(deps) {
13
+ const log = deps.logger ?? defaultLogger;
14
+ return {
15
+ deliverSignals: (envelope, deliverOpts) => deliverEnvelope(envelope, {
16
+ cwd: deliverOpts.cwd,
17
+ reportTo: deliverOpts.reportTo,
18
+ apiKey: deliverOpts.apiKey,
19
+ runFailed: deliverOpts.runFailed,
20
+ setExitCode: deps.setExitCode,
21
+ logger: log,
22
+ }),
23
+ writeSarif: (envelope, path) => writeEnvelopeSarif(envelope, path),
24
+ };
25
+ }
26
+ export function createLiveViewRegistry(log = defaultLogger) {
27
+ const renderers = new Map();
28
+ return {
29
+ register(key, renderer) {
30
+ if (renderers.has(key)) {
31
+ log.warn({
32
+ evt: 'cli.live_view.duplicate',
33
+ module: 'cli:bootstrap',
34
+ key,
35
+ msg: `Duplicate live-view registration for key '${key}' — first registration wins.`,
36
+ });
37
+ return;
38
+ }
39
+ renderers.set(key, renderer);
40
+ },
41
+ /** @throws {UnknownLiveViewError} When no renderer was registered for `key`. */
42
+ async render(key, args, liveContext) {
43
+ const renderer = renderers.get(key);
44
+ if (!renderer) {
45
+ throw new UnknownLiveViewError(key);
46
+ }
47
+ return renderer(args, liveContext);
48
+ },
49
+ has(key) {
50
+ return renderers.has(key);
51
+ },
52
+ };
53
+ }
54
+ export function createLivePlane(deps) {
55
+ return {
56
+ register: deps.liveViews.register,
57
+ renderLive: (key, args, liveContext) => deps.runPlane
58
+ .current()
59
+ .completeLiveRender(() => deps.liveViews.render(key, args, liveContext ?? { runSession: deps.runSession })),
60
+ };
61
+ }
62
+ /** Build both egress and live planes from one dependency bundle. */
63
+ export function createIoPlane(deps) {
64
+ return {
65
+ ...createEgressPlane({ setExitCode: deps.setExitCode, logger: deps.logger }),
66
+ ...createLivePlane({
67
+ liveViews: deps.liveViews,
68
+ runPlane: deps.runPlane,
69
+ runSession: deps.runSession,
70
+ }),
71
+ };
72
+ }
73
+ //# sourceMappingURL=io-plane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io-plane.js","sourceRoot":"","sources":["../../src/bootstrap/io-plane.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,oBAAoB,EACpB,MAAM,IAAI,aAAa,GAOxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAmB5E,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC;IACzC,OAAO;QACL,cAAc,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CACxC,eAAe,CAAC,QAA0B,EAAE;YAC1C,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,GAAG;SACZ,CAAC;QACJ,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAA0B,EAAE,IAAI,CAAC;KACrF,CAAC;AACJ,CAAC;AAgBD,MAAM,UAAU,sBAAsB,CAAC,MAAc,aAAa;IAChE,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IACtD,OAAO;QACL,QAAQ,CAAC,GAAG,EAAE,QAAQ;YACpB,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE,yBAAyB;oBAC9B,MAAM,EAAE,eAAe;oBACvB,GAAG;oBACH,GAAG,EAAE,6CAA6C,GAAG,8BAA8B;iBACpF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC/B,CAAC;QACD,gFAAgF;QAChF,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW;YACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACrC,CAAC;QACD,GAAG,CAAC,GAAG;YACL,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC;AAmBD,MAAM,UAAU,eAAe,CAAC,IAAmB;IACjD,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;QACjC,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CACrC,IAAI,CAAC,QAAQ;aACV,OAAO,EAAE;aACT,kBAAkB,CAAC,GAAG,EAAE,CACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CACjF;KACN,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,IAM7B;IACC,OAAO;QACL,GAAG,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5E,GAAG,eAAe,CAAC;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"load-tool-capabilities.d.ts","sourceRoot":"","sources":["../../src/bootstrap/load-tool-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,EAAmD,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAa/F,sDAAsD;AACtD,MAAM,WAAW,iCAAiC;IAChD,4GAA4G;IAC5G,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,SAAS,CAAC;IACtC,uEAAuE;IACvE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,4FAA4F;IAC5F,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
1
+ {"version":3,"file":"load-tool-capabilities.d.ts","sourceRoot":"","sources":["../../src/bootstrap/load-tool-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,EAIL,KAAK,IAAI,EACV,MAAM,mBAAmB,CAAC;AAe3B,sDAAsD;AACtD,MAAM,WAAW,iCAAiC;IAChD,4GAA4G;IAC5G,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,SAAS,CAAC;IACtC,uEAAuE;IACvE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,4FAA4F;IAC5F,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
@@ -19,7 +19,8 @@
19
19
  import { dirname } from 'node:path';
20
20
  import { fileURLToPath } from 'node:url';
21
21
  import { resolveCapabilityPreferences } from '@opensip-cli/config';
22
- import { currentCapabilityRegistry, loadCapabilityDomain } from '@opensip-cli/core';
22
+ import { currentCapabilityRegistry, loadCapabilityDomain, } from '@opensip-cli/core';
23
+ import { BUNDLED_CAPABILITY_PACKS } from './bundled-manifest.js';
23
24
  /**
24
25
  * Resolve the directory the CLI was installed into. BUILT-IN capability packs
25
26
  * (the bundled `@opensip-cli/*` check packs + graph adapters, declared as CLI
@@ -57,10 +58,25 @@ export async function loadOwningToolCapabilities(options) {
57
58
  for (const domain of ownedDomains) {
58
59
  if (domain.discovery === undefined)
59
60
  continue;
60
- const preferences = resolveCapabilityPreferences(domain.discovery, pluginsConfig);
61
+ const preferences = augmentBundledCapabilityPreferences(domain.discovery, resolveCapabilityPreferences(domain.discovery, pluginsConfig));
61
62
  await loadCapabilityDomain({ registry, domainId: domain.id, projectDir, cliDir, preferences });
62
63
  driven++;
63
64
  }
64
65
  return driven;
65
66
  }
67
+ /**
68
+ * Seed manifest-declared built-in packs when config did not supply an explicit
69
+ * package list. Domains with `explicitListMode: 'augment'` still auto-discover
70
+ * project-local packs on top of this list.
71
+ */
72
+ function augmentBundledCapabilityPreferences(descriptor, preferences) {
73
+ if (preferences.packages !== undefined)
74
+ return preferences;
75
+ if (descriptor.discovery.mode !== 'marker')
76
+ return preferences;
77
+ const bundled = BUNDLED_CAPABILITY_PACKS[descriptor.discovery.markerKind];
78
+ if (bundled === undefined || bundled.length === 0)
79
+ return preferences;
80
+ return { ...preferences, packages: [...bundled] };
81
+ }
66
82
  //# sourceMappingURL=load-tool-capabilities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-tool-capabilities.js","sourceRoot":"","sources":["../../src/bootstrap/load-tool-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAa,MAAM,mBAAmB,CAAC;AAE/F;;;;;;GAMG;AACH,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAcD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA0C;IAE1C,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAC/D,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC;IAC1B,8EAA8E;IAC9E,0EAA0E;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;IAEjD,8EAA8E;IAC9E,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,yBAAyB,EAAE,CAAC;IAE7C,MAAM,YAAY,GAAG,QAAQ;SAC1B,WAAW,EAAE;SACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE3D,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,SAAS;QAC7C,MAAM,WAAW,GAAG,4BAA4B,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAClF,MAAM,oBAAoB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/F,MAAM,EAAE,CAAC;IACX,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"load-tool-capabilities.js","sourceRoot":"","sources":["../../src/bootstrap/load-tool-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,4BAA4B,EAA8B,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GAGrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE;;;;;;GAMG;AACH,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAcD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA0C;IAE1C,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAC/D,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC;IAC1B,8EAA8E;IAC9E,0EAA0E;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;IAEjD,8EAA8E;IAC9E,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,yBAAyB,EAAE,CAAC;IAE7C,MAAM,YAAY,GAAG,QAAQ;SAC1B,WAAW,EAAE;SACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE3D,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,SAAS;QAC7C,MAAM,WAAW,GAAG,mCAAmC,CACrD,MAAM,CAAC,SAAS,EAChB,4BAA4B,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAC9D,CAAC;QACF,MAAM,oBAAoB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/F,MAAM,EAAE,CAAC;IACX,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,mCAAmC,CAC1C,UAAyC,EACzC,WAAkC;IAElC,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAC3D,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC;IAC/D,MAAM,OAAO,GAAG,wBAAwB,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1E,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACtE,OAAO,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;AACpD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"owning-tool-init.d.ts","sourceRoot":"","sources":["../../src/bootstrap/owning-tool-init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAU,KAAK,IAAI,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOzE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAMxF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
1
+ {"version":3,"file":"owning-tool-init.d.ts","sourceRoot":"","sources":["../../src/bootstrap/owning-tool-init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAO3B;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAQxF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
@@ -6,7 +6,7 @@
6
6
  * per-invocation SEQUENCER; the owning-tool resolution + fail-fast init
7
7
  * semantics live here as a cohesive unit (see also `tool-lifecycle.ts`).
8
8
  */
9
- import { logger } from '@opensip-cli/core';
9
+ import { logger, resolveToolCommands, resolveToolHooks, } from '@opensip-cli/core';
10
10
  import { BootstrapError } from './bootstrap-error.js';
11
11
  import { initializedToolIds } from './process-idempotency.js';
12
12
  const MODULE_TAG = 'cli:bootstrap';
@@ -19,7 +19,7 @@ const MODULE_TAG = 'cli:bootstrap';
19
19
  export function resolveOwningTool(tools, cmdName) {
20
20
  return tools
21
21
  .list()
22
- .find((tool) => tool.commands.some((c) => c.name === cmdName || (c.aliases?.includes(cmdName) ?? false)));
22
+ .find((tool) => resolveToolCommands(tool).some((c) => c.name === cmdName || (c.aliases?.includes(cmdName) ?? false)));
23
23
  }
24
24
  /**
25
25
  * Lazy, memoized Tool.initialize() (P1a). Resolve the tool owning the
@@ -37,13 +37,16 @@ export function resolveOwningTool(tools, cmdName) {
37
37
  */
38
38
  export async function maybeInitializeOwningTool(tools, cmdName, runId) {
39
39
  const owningTool = resolveOwningTool(tools, cmdName);
40
- if (!owningTool?.initialize)
40
+ if (!owningTool)
41
+ return;
42
+ const hooks = resolveToolHooks(owningTool);
43
+ if (!hooks.initialize)
41
44
  return;
42
45
  const toolHumanId = owningTool.metadata.name ?? owningTool.metadata.id;
43
46
  if (initializedToolIds.has(toolHumanId))
44
47
  return;
45
48
  try {
46
- await owningTool.initialize();
49
+ await hooks.initialize();
47
50
  initializedToolIds.add(toolHumanId);
48
51
  }
49
52
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"owning-tool-init.js","sourceRoot":"","sources":["../../src/bootstrap/owning-tool-init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAgC,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,UAAU,GAAG,eAAe,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAmB,EAAE,OAAe;IACpE,OAAO,KAAK;SACT,IAAI,EAAE;SACN,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CACzF,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAAmB,EACnB,OAAe,EACf,KAAa;IAEb,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,EAAE,UAAU;QAAE,OAAO;IACpC,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvE,IAAI,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO;IAChD,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9B,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,CAAC;YACX,GAAG,EAAE,4BAA4B;YACjC,MAAM,EAAE,UAAU;YAClB,KAAK;YACL,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,6BAA6B;YAC7D,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,wEAAwE;QACxE,wEAAwE;QACxE,MAAM,IAAI,cAAc,CAAC;YACvB,OAAO,EAAE,SAAS,WAAW,2BAA2B,GAAG,EAAE;YAC7D,YAAY,EAAE,WAAW,WAAW,2BAA2B,GAAG,EAAE;YACpE,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"owning-tool-init.js","sourceRoot":"","sources":["../../src/bootstrap/owning-tool-init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,MAAM,EACN,mBAAmB,EACnB,gBAAgB,GAGjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,UAAU,GAAG,eAAe,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAmB,EAAE,OAAe;IACpE,OAAO,KAAK;SACT,IAAI,EAAE;SACN,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACb,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CACrE,CACF,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAAmB,EACnB,OAAe,EACf,KAAa;IAEb,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU;QAAE,OAAO;IACxB,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO;IAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvE,IAAI,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO;IAChD,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;QACzB,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,CAAC;YACX,GAAG,EAAE,4BAA4B;YACjC,MAAM,EAAE,UAAU;YAClB,KAAK;YACL,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,6BAA6B;YAC7D,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,wEAAwE;QACxE,wEAAwE;QACxE,MAAM,IAAI,cAAc,CAAC;YACvB,OAAO,EAAE,SAAS,WAAW,2BAA2B,GAAG,EAAE;YAC7D,YAAY,EAAE,WAAW,WAAW,2BAA2B,GAAG,EAAE;YACpE,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Single orchestration vocabulary: maps lifecycle steps, pre-action phases, and
3
+ * the implementing modules. Replaces parallel taxonomies in tool-lifecycle.ts
4
+ * and pre-action-bootstrap-phases.ts as the one source of truth.
5
+ */
6
+ import { PRE_ACTION_PHASES } from './pre-action-bootstrap-phases.js';
7
+ import { TOOL_LIFECYCLE_STEPS } from './tool-lifecycle.js';
8
+ /** One row in the orchestration map. */
9
+ export interface PhaseMapEntry {
10
+ readonly lifecycleStep?: (typeof TOOL_LIFECYCLE_STEPS)[keyof typeof TOOL_LIFECYCLE_STEPS];
11
+ readonly preActionPhase?: (typeof PRE_ACTION_PHASES)[keyof typeof PRE_ACTION_PHASES];
12
+ readonly module: string;
13
+ readonly symbol: string;
14
+ }
15
+ /**
16
+ * Canonical phase map. Startup steps 1–4 live in `bootstrapCli`; step 8 in
17
+ * `mountAllToolCommands`; steps 5–7 and 9 in the pre-action executor.
18
+ */
19
+ export declare const BOOTSTRAP_PHASE_MAP: readonly PhaseMapEntry[];
20
+ //# sourceMappingURL=phase-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-map.d.ts","sourceRoot":"","sources":["../../src/bootstrap/phase-map.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;IAC1F,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;IACrF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,aAAa,EA+F9C,CAAC"}