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
@@ -32,6 +32,20 @@ export declare function readScope(): RunScope;
32
32
  * the pre-action-hook resolved the context.
33
33
  */
34
34
  export declare function getCurrentProjectRoot(): string;
35
+ /**
36
+ * A lazy datastore accessor (callable) that also exposes a `dispose()` to close
37
+ * the cached connection on scope teardown. Still assignable to the kernel's
38
+ * `DataStoreThunk` (`() => unknown`) — `dispose` is additive.
39
+ */
40
+ export interface DatastoreThunk {
41
+ (): DataStore;
42
+ /**
43
+ * Close the cached connection (no-op if it was never opened). An arrow-type
44
+ * property, not a method, so it can be passed straight to `scope.onDispose`
45
+ * (no unbound-method footgun) while still being assignable on construction.
46
+ */
47
+ dispose: () => void;
48
+ }
35
49
  /**
36
50
  * Build a closure-based datastore thunk for the given project.
37
51
  * Caches the open DataStore on first access. The pre-action-hook
@@ -43,7 +57,7 @@ export declare function getCurrentProjectRoot(): string;
43
57
  * `project.scope === 'project'` first or handle the throw as a "no project
44
58
  * found" error.
45
59
  */
46
- export declare function buildDatastoreThunk(project: ProjectContext, log?: Logger): () => DataStore;
60
+ export declare function buildDatastoreThunk(project: ProjectContext, log?: Logger): DatastoreThunk;
47
61
  /**
48
62
  * Open (or return cached) project-local SQLite DataStore via the
49
63
  * scope's datastore thunk. Shared between tool action bodies and
@@ -65,4 +79,15 @@ export declare function getOrOpenDatastore(_log?: Logger): DataStore;
65
79
  * datastore); other datastore-open failures propagate unchanged.
66
80
  */
67
81
  export declare function getProjectDatastore(): DataStore;
82
+ /** How a datastore resolver should behave when scope or project context is absent. */
83
+ export type DatastoreResolverMode = 'strict' | 'project-seam' | 'best-effort';
84
+ /**
85
+ * Unified lazy datastore accessor for host planes and the run plane.
86
+ *
87
+ * - `strict` — throws when outside a project scope (via `getOrOpenDatastore`).
88
+ * - `project-seam` — maps outside-project to `ConfigurationError` for documented seams.
89
+ * - `best-effort` — returns `undefined` when scope or datastore is unavailable.
90
+ */
91
+ export declare function createDatastoreResolver(mode: 'strict' | 'project-seam', logger?: Logger): () => DataStore;
92
+ export declare function createDatastoreResolver(mode: 'best-effort', logger?: Logger): () => DataStore | undefined;
68
93
  //# sourceMappingURL=scope-access.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope-access.d.ts","sourceRoot":"","sources":["../../src/bootstrap/scope-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,QAAQ,EAKd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,QAAQ,CAWpC;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,GAAG,GAAE,MAAsB,GAC1B,MAAM,SAAS,CAoBjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAsB,GAAG,SAAS,CAG1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,CAgB/C"}
1
+ {"version":3,"file":"scope-access.d.ts","sourceRoot":"","sources":["../../src/bootstrap/scope-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,QAAQ,EAKd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,QAAQ,CAWpC;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,SAAS,CAAC;IACd;;;;OAIG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,GAAG,GAAE,MAAsB,GAC1B,cAAc,CA8BhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAsB,GAAG,SAAS,CAG1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,CAgB/C;AAED,sFAAsF;AACtF,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,CAAC;AAE9E;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,GAAG,cAAc,EAC/B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,SAAS,CAAC;AACnB,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,aAAa,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,SAAS,GAAG,SAAS,CAAC"}
@@ -59,7 +59,7 @@ export function getCurrentProjectRoot() {
59
59
  */
60
60
  export function buildDatastoreThunk(project, log = defaultLogger) {
61
61
  let cached;
62
- return () => {
62
+ const thunk = (() => {
63
63
  if (cached)
64
64
  return cached;
65
65
  if (project.scope !== 'project') {
@@ -74,7 +74,18 @@ export function buildDatastoreThunk(project, log = defaultLogger) {
74
74
  path,
75
75
  });
76
76
  return cached;
77
+ });
78
+ // Close the cached connection on scope teardown (registered via
79
+ // `scope.onDispose`). Closing checkpoints + truncates the WAL; without this the
80
+ // connection (and its growing -wal sidecar) leaked for the process lifetime.
81
+ thunk.dispose = () => {
82
+ if (!cached)
83
+ return;
84
+ cached.close();
85
+ cached = undefined;
86
+ log.info({ evt: 'cli.datastore.closed', module: 'cli:context' });
77
87
  };
88
+ return thunk;
78
89
  }
79
90
  /**
80
91
  * Open (or return cached) project-local SQLite DataStore via the
@@ -112,4 +123,30 @@ export function getProjectDatastore() {
112
123
  throw error;
113
124
  }
114
125
  }
126
+ export function createDatastoreResolver(mode, logger = defaultLogger) {
127
+ switch (mode) {
128
+ case 'strict': {
129
+ return () => getOrOpenDatastore(logger);
130
+ }
131
+ case 'project-seam': {
132
+ return () => getProjectDatastore();
133
+ }
134
+ case 'best-effort': {
135
+ return () => {
136
+ try {
137
+ const thunk = readScope().datastore;
138
+ return thunk ? thunk() : undefined;
139
+ }
140
+ catch (error) {
141
+ logger.debug({
142
+ evt: 'cli.context.datastore_unavailable',
143
+ module: 'cli:context',
144
+ error: error instanceof Error ? error.message : String(error),
145
+ });
146
+ return;
147
+ }
148
+ };
149
+ }
150
+ }
151
+ }
115
152
  //# sourceMappingURL=scope-access.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope-access.js","sourceRoot":"","sources":["../../src/bootstrap/scope-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,kBAAkB,EAIlB,WAAW,EACX,YAAY,EACZ,MAAM,IAAI,aAAa,EACvB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAkB,MAAM,wBAAwB,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,WAAW,CACnB,2FAA2F;YACzF,yFAAyF;YACzF,2FAA2F,EAC7F,EAAE,IAAI,EAAE,0BAA0B,EAAE,CACrC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC,cAAc,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,WAAW,CACnB,6EAA6E,EAC7E,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAC3C,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAuB,EACvB,MAAc,aAAa;IAE3B,IAAI,MAA6B,CAAC;IAClC,OAAO,GAAG,EAAE;QACV,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,WAAW,CACnB,2EAA2E;gBACzE,2EAA2E,EAC7E,EAAE,IAAI,EAAE,4CAA4C,EAAE,CACvD,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,mBAAmB,CAAC;QACvF,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC;YACP,GAAG,EAAE,sBAAsB;YAC3B,MAAM,EAAE,aAAa;YACrB,IAAI;SACL,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe,aAAa;IAC7D,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC,SAAS,CAAC;IACpC,OAAO,KAAK,EAAe,CAAC;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC;QACH,OAAO,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,KAAK,YAAY,WAAW;YAC5B,KAAK,CAAC,IAAI,KAAK,4CAA4C,EAC3D,CAAC;YACD,MAAM,IAAI,kBAAkB,CAC1B,+GAA+G;gBAC7G,+EAA+E,EACjF,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAC3C,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scope-access.js","sourceRoot":"","sources":["../../src/bootstrap/scope-access.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * skip-installed-plugins — incident-response kill switch for ambient npm tool
3
+ * discovery (architecture audit P0).
4
+ *
5
+ * Installed tools are discovered from ancestor `node_modules` during bootstrap,
6
+ * before Commander parses. Both the env var and `--no-plugins` are therefore
7
+ * read from `process.env` / raw argv — not from parsed Commander opts.
8
+ */
9
+ /** Env var: any non-empty value skips installed npm tool discovery. */
10
+ export declare const SKIP_INSTALLED_PLUGINS_ENV = "OPENSIP_CLI_SKIP_INSTALLED";
11
+ /**
12
+ * True when argv contains `--no-plugins` anywhere (bootstrap runs before parse,
13
+ * so the flag may appear before or after the subcommand verb).
14
+ */
15
+ export declare function isNoPluginsArgvFlag(argv: readonly string[]): boolean;
16
+ /**
17
+ * Should bootstrap skip `discoverAndRegisterToolPackages`?
18
+ *
19
+ * @param argv `process.argv.slice(2)` — user args after the binary.
20
+ * @param env Injectable for tests (defaults to `process.env`).
21
+ */
22
+ export declare function shouldSkipInstalledToolDiscovery(argv: readonly string[], env?: NodeJS.ProcessEnv): boolean;
23
+ //# sourceMappingURL=skip-installed-plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skip-installed-plugins.d.ts","sourceRoot":"","sources":["../../src/bootstrap/skip-installed-plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,uEAAuE;AACvE,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAIT"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * skip-installed-plugins — incident-response kill switch for ambient npm tool
3
+ * discovery (architecture audit P0).
4
+ *
5
+ * Installed tools are discovered from ancestor `node_modules` during bootstrap,
6
+ * before Commander parses. Both the env var and `--no-plugins` are therefore
7
+ * read from `process.env` / raw argv — not from parsed Commander opts.
8
+ */
9
+ /** Env var: any non-empty value skips installed npm tool discovery. */
10
+ export const SKIP_INSTALLED_PLUGINS_ENV = 'OPENSIP_CLI_SKIP_INSTALLED';
11
+ /**
12
+ * True when argv contains `--no-plugins` anywhere (bootstrap runs before parse,
13
+ * so the flag may appear before or after the subcommand verb).
14
+ */
15
+ export function isNoPluginsArgvFlag(argv) {
16
+ return argv.includes('--no-plugins');
17
+ }
18
+ /**
19
+ * Should bootstrap skip `discoverAndRegisterToolPackages`?
20
+ *
21
+ * @param argv `process.argv.slice(2)` — user args after the binary.
22
+ * @param env Injectable for tests (defaults to `process.env`).
23
+ */
24
+ export function shouldSkipInstalledToolDiscovery(argv, env = process.env) {
25
+ if (isNoPluginsArgvFlag(argv))
26
+ return true;
27
+ const raw = env[SKIP_INSTALLED_PLUGINS_ENV];
28
+ return raw !== undefined && raw.length > 0;
29
+ }
30
+ //# sourceMappingURL=skip-installed-plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skip-installed-plugins.js","sourceRoot":"","sources":["../../src/bootstrap/skip-installed-plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,uEAAuE;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AAEvE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAC9C,IAAuB,EACvB,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,mBAAmB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC5C,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,CAAC"}
@@ -48,8 +48,6 @@
48
48
  * one ordered entry point. The driver is intentionally THIN: it sequences the
49
49
  * pre-existing helpers, it does not reimplement them.
50
50
  */
51
- import type { CliProgram } from '@opensip-cli/contracts';
52
- import type { ToolCliContext, ToolRegistry } from '@opensip-cli/core';
53
51
  /**
54
52
  * Canonical, ordered tool-lifecycle steps (launch, §5.4). The numeric
55
53
  * values are the step ordinals used in the JSDoc above and in
@@ -79,24 +77,4 @@ export declare const TOOL_LIFECYCLE_STEPS: {
79
77
  /** 10 — Commander dispatches the action body through the mount pipeline. */
80
78
  readonly dispatch: 10;
81
79
  };
82
- /**
83
- * Drive the STARTUP-phase command-mount step (step 8) for every registered
84
- * tool. By the time this runs, steps 1-4 have already populated `registry`
85
- * inside {@link bootstrapCli} (provenance no longer matters — bundled and
86
- * installed tools mount identically). This is the single ordered entry point
87
- * the composition root calls for step 8, replacing the bare
88
- * `mountAllToolCommands(...)` call so the lifecycle has one named seam.
89
- *
90
- * Kept THIN deliberately: it delegates straight to
91
- * {@link mountAllToolCommands}, which mounts each tool's declared `commandSpecs`
92
- * (the one command surface, launch) with per-tool failure isolation. The naming +
93
- * ordering is the value here, not new logic.
94
- *
95
- * @param registry The per-invocation tool registry, already populated by
96
- * steps 1-4.
97
- * @param program The root Commander program (host-owned; passed in since the tool
98
- * context no longer carries it, §8).
99
- * @param ctx The per-invocation handler context handed to each mounted command.
100
- */
101
- export declare function mountToolCommands(registry: ToolRegistry, program: CliProgram, ctx: ToolCliContext): void;
102
80
  //# sourceMappingURL=tool-lifecycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-lifecycle.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;IAC/B,oDAAoD;;IAEpD,mEAAmE;;IAEnE,0EAA0E;;IAE1E,uEAAuE;;IAEvE,+DAA+D;;IAE/D,sDAAsD;;IAEtD,gFAAgF;;IAEhF,mDAAmD;;IAEnD,0EAA0E;;IAE1E,4EAA4E;;CAEpE,CAAC;AAEX;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,cAAc,GAClB,IAAI,CAEN"}
1
+ {"version":3,"file":"tool-lifecycle.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;IAC/B,oDAAoD;;IAEpD,mEAAmE;;IAEnE,0EAA0E;;IAE1E,uEAAuE;;IAEvE,+DAA+D;;IAE/D,sDAAsD;;IAEtD,gFAAgF;;IAEhF,mDAAmD;;IAEnD,0EAA0E;;IAE1E,4EAA4E;;CAEpE,CAAC"}
@@ -48,7 +48,6 @@
48
48
  * one ordered entry point. The driver is intentionally THIN: it sequences the
49
49
  * pre-existing helpers, it does not reimplement them.
50
50
  */
51
- import { mountAllToolCommands } from './register-tools.js';
52
51
  /**
53
52
  * Canonical, ordered tool-lifecycle steps (launch, §5.4). The numeric
54
53
  * values are the step ordinals used in the JSDoc above and in
@@ -78,26 +77,4 @@ export const TOOL_LIFECYCLE_STEPS = {
78
77
  /** 10 — Commander dispatches the action body through the mount pipeline. */
79
78
  dispatch: 10,
80
79
  };
81
- /**
82
- * Drive the STARTUP-phase command-mount step (step 8) for every registered
83
- * tool. By the time this runs, steps 1-4 have already populated `registry`
84
- * inside {@link bootstrapCli} (provenance no longer matters — bundled and
85
- * installed tools mount identically). This is the single ordered entry point
86
- * the composition root calls for step 8, replacing the bare
87
- * `mountAllToolCommands(...)` call so the lifecycle has one named seam.
88
- *
89
- * Kept THIN deliberately: it delegates straight to
90
- * {@link mountAllToolCommands}, which mounts each tool's declared `commandSpecs`
91
- * (the one command surface, launch) with per-tool failure isolation. The naming +
92
- * ordering is the value here, not new logic.
93
- *
94
- * @param registry The per-invocation tool registry, already populated by
95
- * steps 1-4.
96
- * @param program The root Commander program (host-owned; passed in since the tool
97
- * context no longer carries it, §8).
98
- * @param ctx The per-invocation handler context handed to each mounted command.
99
- */
100
- export function mountToolCommands(registry, program, ctx) {
101
- mountAllToolCommands(registry, program, ctx);
102
- }
103
80
  //# sourceMappingURL=tool-lifecycle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-lifecycle.js","sourceRoot":"","sources":["../../src/bootstrap/tool-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAK3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,oDAAoD;IACpD,QAAQ,EAAE,CAAC;IACX,mEAAmE;IACnE,MAAM,EAAE,CAAC;IACT,0EAA0E;IAC1E,KAAK,EAAE,CAAC;IACR,uEAAuE;IACvE,MAAM,EAAE,CAAC;IACT,+DAA+D;IAC/D,MAAM,EAAE,CAAC;IACT,sDAAsD;IACtD,KAAK,EAAE,CAAC;IACR,gFAAgF;IAChF,YAAY,EAAE,CAAC;IACf,mDAAmD;IACnD,KAAK,EAAE,CAAC;IACR,0EAA0E;IAC1E,UAAU,EAAE,CAAC;IACb,4EAA4E;IAC5E,QAAQ,EAAE,EAAE;CACJ,CAAC;AAEX;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,OAAmB,EACnB,GAAmB;IAEnB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"tool-lifecycle.js","sourceRoot":"","sources":["../../src/bootstrap/tool-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,oDAAoD;IACpD,QAAQ,EAAE,CAAC;IACX,mEAAmE;IACnE,MAAM,EAAE,CAAC;IACT,0EAA0E;IAC1E,KAAK,EAAE,CAAC;IACR,uEAAuE;IACvE,MAAM,EAAE,CAAC;IACT,+DAA+D;IAC/D,MAAM,EAAE,CAAC;IACT,sDAAsD;IACtD,KAAK,EAAE,CAAC;IACR,gFAAgF;IAChF,YAAY,EAAE,CAAC;IACf,mDAAmD;IACnD,KAAK,EAAE,CAAC;IACR,0EAA0E;IAC1E,UAAU,EAAE,CAAC;IACb,4EAA4E;IAC5E,QAAQ,EAAE,EAAE;CACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
- * tool-trust — the project-local executable-tool trust policy (release
3
- * launch, Phase 3 Task 3.2).
2
+ * tool-trust — executable-tool trust policies for project-local and installed
3
+ * npm tools (release launch, Phase 3 Task 3.2; audit remediation).
4
4
  *
5
5
  * A `project-local` tool is authored code under `<project>/opensip-cli/…`
6
6
  * that changes with the repo (§5.2.1). Running it imports arbitrary code
@@ -25,6 +25,12 @@
25
25
  * around a single call.
26
26
  */
27
27
  export declare const PROJECT_TOOL_ALLOWLIST_ENV = "OPENSIP_CLI_ALLOW_PROJECT_TOOLS";
28
+ /**
29
+ * Environment variable carrying the installed-npm tool allowlist. Empty/unset
30
+ * ⇒ deny-by-default for ambient `node_modules` discovery (paired with
31
+ * {@link isInstalledToolTrusted}).
32
+ */
33
+ export declare const INSTALLED_TOOL_ALLOWLIST_ENV = "OPENSIP_CLI_ALLOW_INSTALLED_TOOLS";
28
34
  /**
29
35
  * Decide whether a project-local executable tool with the given `id` is
30
36
  * trusted to load, under the deny-by-default + allowlist-opt-in policy.
@@ -46,4 +52,18 @@ export declare const PROJECT_TOOL_ALLOWLIST_ENV = "OPENSIP_CLI_ALLOW_PROJECT_TOO
46
52
  * @returns `true` iff the allowlist contains `id` or the wildcard `'*'`.
47
53
  */
48
54
  export declare function isProjectLocalToolTrusted(id: string, env?: NodeJS.ProcessEnv): boolean;
55
+ /**
56
+ * Decide whether an installed npm tool with the given manifest `id` is trusted
57
+ * to `import()` into the host process, under deny-by-default + allowlist-opt-in.
58
+ *
59
+ * Read timing and env governance mirror {@link isProjectLocalToolTrusted}: the
60
+ * check runs at bootstrap before any `RunScope` exists, via the injected `env`
61
+ * param for testability.
62
+ *
63
+ * @param id The tool's stable id (from `package.json#opensipTools.id`).
64
+ * @param env The environment to read the allowlist from (defaults to
65
+ * `process.env`; injectable for tests).
66
+ * @returns `true` iff the allowlist contains `id` or the wildcard `'*'`.
67
+ */
68
+ export declare function isInstalledToolTrusted(id: string, env?: NodeJS.ProcessEnv): boolean;
49
69
  //# sourceMappingURL=tool-trust.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-trust.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-trust.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,oCAAoC,CAAC;AAiB5E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAGT"}
1
+ {"version":3,"file":"tool-trust.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-trust.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,oCAAoC,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,sCAAsC,CAAC;AAiBhF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAGT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAGhG"}
@@ -1,6 +1,6 @@
1
1
  /**
2
- * tool-trust — the project-local executable-tool trust policy (release
3
- * launch, Phase 3 Task 3.2).
2
+ * tool-trust — executable-tool trust policies for project-local and installed
3
+ * npm tools (release launch, Phase 3 Task 3.2; audit remediation).
4
4
  *
5
5
  * A `project-local` tool is authored code under `<project>/opensip-cli/…`
6
6
  * that changes with the repo (§5.2.1). Running it imports arbitrary code
@@ -25,6 +25,12 @@
25
25
  * around a single call.
26
26
  */
27
27
  export const PROJECT_TOOL_ALLOWLIST_ENV = 'OPENSIP_CLI_ALLOW_PROJECT_TOOLS';
28
+ /**
29
+ * Environment variable carrying the installed-npm tool allowlist. Empty/unset
30
+ * ⇒ deny-by-default for ambient `node_modules` discovery (paired with
31
+ * {@link isInstalledToolTrusted}).
32
+ */
33
+ export const INSTALLED_TOOL_ALLOWLIST_ENV = 'OPENSIP_CLI_ALLOW_INSTALLED_TOOLS';
28
34
  /**
29
35
  * Parse the allowlist env var into a set of permitted tool ids. Empty/
30
36
  * unset ⇒ empty set (deny-by-default). The wildcard `'*'` admits all
@@ -62,4 +68,21 @@ export function isProjectLocalToolTrusted(id, env = process.env) {
62
68
  const allow = parseAllowlist(env[PROJECT_TOOL_ALLOWLIST_ENV]);
63
69
  return allow.has('*') || allow.has(id);
64
70
  }
71
+ /**
72
+ * Decide whether an installed npm tool with the given manifest `id` is trusted
73
+ * to `import()` into the host process, under deny-by-default + allowlist-opt-in.
74
+ *
75
+ * Read timing and env governance mirror {@link isProjectLocalToolTrusted}: the
76
+ * check runs at bootstrap before any `RunScope` exists, via the injected `env`
77
+ * param for testability.
78
+ *
79
+ * @param id The tool's stable id (from `package.json#opensipTools.id`).
80
+ * @param env The environment to read the allowlist from (defaults to
81
+ * `process.env`; injectable for tests).
82
+ * @returns `true` iff the allowlist contains `id` or the wildcard `'*'`.
83
+ */
84
+ export function isInstalledToolTrusted(id, env = process.env) {
85
+ const allow = parseAllowlist(env[INSTALLED_TOOL_ALLOWLIST_ENV]);
86
+ return allow.has('*') || allow.has(id);
87
+ }
65
88
  //# sourceMappingURL=tool-trust.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-trust.js","sourceRoot":"","sources":["../../src/bootstrap/tool-trust.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,iCAAiC,CAAC;AAE5E;;;;GAIG;AACH,SAAS,cAAc,CAAC,GAAuB;IAC7C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC3B,OAAO,IAAI,GAAG,CACZ,GAAG;SACA,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,yBAAyB,CACvC,EAAU,EACV,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"tool-trust.js","sourceRoot":"","sources":["../../src/bootstrap/tool-trust.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,iCAAiC,CAAC;AAE5E;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,mCAAmC,CAAC;AAEhF;;;;GAIG;AACH,SAAS,cAAc,CAAC,GAAuB;IAC7C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC3B,OAAO,IAAI,GAAG,CACZ,GAAG;SACA,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,yBAAyB,CACvC,EAAU,EACV,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAU,EAAE,MAAyB,OAAO,CAAC,GAAG;IACrF,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC"}
@@ -4,11 +4,12 @@
4
4
  * an arbitrary npm package and inspects whatever it exports.
5
5
  *
6
6
  * Verifies the minimal contract the registry depends on: a
7
- * `metadata.id` string (used for dedupe + listing), a `commands` array,
8
- * and a command surface — a non-empty `commandSpecs` array (the one command
7
+ * `metadata.id` string (used for dedupe + listing), and a command surface —
8
+ * a non-empty `commandSpecs` array (the one command
9
9
  * surface as of launch; `register()` was removed). A tool with no `commandSpecs`
10
- * cannot mount any command, so it fails the shape check. `initialize` and
11
- * `contributeScope` stay optional per the Tool interface.
10
+ * cannot mount any command, so it fails the shape check. Lifecycle hooks belong
11
+ * under `extensionPoints` only top-level hooks are rejected with an actionable
12
+ * diagnostic.
12
13
  *
13
14
  * Ordering vs. the admission gate: this shape check runs AFTER a
14
15
  * tool's module is imported. The compatibility gate (`admitTool`) and the
@@ -18,5 +19,10 @@
18
19
  * and never reaches `isValidTool`.
19
20
  */
20
21
  import { type Tool } from '@opensip-cli/core';
22
+ /**
23
+ * Human-readable rejection reason for an exported `tool` value.
24
+ * `undefined` means the export satisfies {@link isValidTool}.
25
+ */
26
+ export declare function toolValidationFailure(value: unknown): string | undefined;
21
27
  export declare function isValidTool(value: unknown): value is Tool;
22
28
  //# sourceMappingURL=validate-tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-tool.d.ts","sourceRoot":"","sources":["../../src/bootstrap/validate-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAuB,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEnE,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAkBzD"}
1
+ {"version":3,"file":"validate-tool.d.ts","sourceRoot":"","sources":["../../src/bootstrap/validate-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAuB,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAuDnE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAqBxE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAEzD"}
@@ -4,11 +4,12 @@
4
4
  * an arbitrary npm package and inspects whatever it exports.
5
5
  *
6
6
  * Verifies the minimal contract the registry depends on: a
7
- * `metadata.id` string (used for dedupe + listing), a `commands` array,
8
- * and a command surface — a non-empty `commandSpecs` array (the one command
7
+ * `metadata.id` string (used for dedupe + listing), and a command surface —
8
+ * a non-empty `commandSpecs` array (the one command
9
9
  * surface as of launch; `register()` was removed). A tool with no `commandSpecs`
10
- * cannot mount any command, so it fails the shape check. `initialize` and
11
- * `contributeScope` stay optional per the Tool interface.
10
+ * cannot mount any command, so it fails the shape check. Lifecycle hooks belong
11
+ * under `extensionPoints` only top-level hooks are rejected with an actionable
12
+ * diagnostic.
12
13
  *
13
14
  * Ordering vs. the admission gate: this shape check runs AFTER a
14
15
  * tool's module is imported. The compatibility gate (`admitTool`) and the
@@ -18,25 +19,78 @@
18
19
  * and never reaches `isValidTool`.
19
20
  */
20
21
  import { validateCommandSpec } from '@opensip-cli/core';
21
- export function isValidTool(value) {
22
- if (typeof value !== 'object' || value === null)
23
- return false;
22
+ /** Top-level hook keys removed in the tool-author-simplify contract. */
23
+ const LEGACY_TOP_LEVEL_HOOK_KEYS = [
24
+ 'initialize',
25
+ 'contributeScope',
26
+ 'collectReportData',
27
+ 'sessionReplay',
28
+ 'config',
29
+ 'capabilityRegistrars',
30
+ 'fingerprintStrategy',
31
+ 'scaffoldExamples',
32
+ 'stableExampleIds',
33
+ 'scaffoldConfigBlock',
34
+ ];
35
+ function legacyTopLevelHookKeys(candidate) {
36
+ return LEGACY_TOP_LEVEL_HOOK_KEYS.filter((key) => candidate[key] !== undefined);
37
+ }
38
+ function metadataValidationFailure(metadata) {
39
+ if (typeof metadata !== 'object' || metadata === null) {
40
+ return 'tool.metadata is missing or not an object';
41
+ }
42
+ if (typeof metadata.id !== 'string') {
43
+ return 'tool.metadata.id must be a string';
44
+ }
45
+ return undefined;
46
+ }
47
+ function commandSpecsValidationFailure(commandSpecs) {
48
+ if (!Array.isArray(commandSpecs) || commandSpecs.length === 0) {
49
+ return 'tool.commandSpecs must be a non-empty array (the declarative command surface)';
50
+ }
51
+ for (const spec of commandSpecs) {
52
+ if (!validateCommandSpec(spec)) {
53
+ return 'tool.commandSpecs contains an invalid CommandSpec';
54
+ }
55
+ }
56
+ return undefined;
57
+ }
58
+ function optionalCommandsValidationFailure(commands) {
59
+ if (!Array.isArray(commands))
60
+ return undefined;
61
+ for (const cmd of commands) {
62
+ if (typeof cmd !== 'object' || cmd === null) {
63
+ return 'tool.commands contains a non-object entry';
64
+ }
65
+ if (typeof cmd.name !== 'string') {
66
+ return 'tool.commands entries must include a string name';
67
+ }
68
+ }
69
+ return undefined;
70
+ }
71
+ /**
72
+ * Human-readable rejection reason for an exported `tool` value.
73
+ * `undefined` means the export satisfies {@link isValidTool}.
74
+ */
75
+ export function toolValidationFailure(value) {
76
+ if (typeof value !== 'object' || value === null) {
77
+ return 'tool export is not an object';
78
+ }
24
79
  const candidate = value;
25
- if (typeof candidate.metadata !== 'object' || candidate.metadata === null)
26
- return false;
27
- if (typeof candidate.metadata.id !== 'string')
28
- return false;
29
- if (!Array.isArray(candidate.commands))
30
- return false;
31
- // A tool must expose a command surface: a non-empty declarative `commandSpecs`
32
- // array (the one command surface, launch — `register()` was removed). A tool
33
- // with no commandSpecs cannot contribute any command and is rejected.
34
- if (!Array.isArray(candidate.commandSpecs) || candidate.commandSpecs.length === 0)
35
- return false;
36
- for (const spec of candidate.commandSpecs) {
37
- if (!validateCommandSpec(spec))
38
- return false;
80
+ const metadataFailure = metadataValidationFailure(candidate.metadata);
81
+ if (metadataFailure !== undefined)
82
+ return metadataFailure;
83
+ const legacy = legacyTopLevelHookKeys(candidate);
84
+ if (legacy.length > 0) {
85
+ return (`tool declares deprecated top-level hooks [${legacy.join(', ')}]; ` +
86
+ 'move them under extensionPoints (see opensip tool authoring docs)');
39
87
  }
40
- return true;
88
+ const specsFailure = commandSpecsValidationFailure(candidate.commandSpecs);
89
+ if (specsFailure !== undefined)
90
+ return specsFailure;
91
+ return optionalCommandsValidationFailure(candidate.commands);
92
+ }
93
+ export function isValidTool(value) {
94
+ return toolValidationFailure(value) === undefined;
41
95
  }
42
96
  //# sourceMappingURL=validate-tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-tool.js","sourceRoot":"","sources":["../../src/bootstrap/validate-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,mBAAmB,EAAa,MAAM,mBAAmB,CAAC;AAEnE,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,SAAS,GAAG,KAIjB,CAAC;IACF,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACxF,IAAI,OAAQ,SAAS,CAAC,QAA6B,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,+EAA+E;IAC/E,6EAA6E;IAC7E,sEAAsE;IACtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAChG,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QAC1C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"validate-tool.js","sourceRoot":"","sources":["../../src/bootstrap/validate-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,mBAAmB,EAAa,MAAM,mBAAmB,CAAC;AAEnE,wEAAwE;AACxE,MAAM,0BAA0B,GAAG;IACjC,YAAY;IACZ,iBAAiB;IACjB,mBAAmB;IACnB,eAAe;IACf,QAAQ;IACR,sBAAsB;IACtB,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;CACb,CAAC;AAEX,SAAS,sBAAsB,CAAC,SAAkC;IAChE,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAiB;IAClD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO,2CAA2C,CAAC;IACrD,CAAC;IACD,IAAI,OAAQ,QAA6B,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,mCAAmC,CAAC;IAC7C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,6BAA6B,CAAC,YAAqB;IAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,+EAA+E,CAAC;IACzF,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,mDAAmD,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iCAAiC,CAAC,QAAiB;IAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,2CAA2C,CAAC;QACrD,CAAC;QACD,IAAI,OAAQ,GAA0B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzD,OAAO,kDAAkD,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,MAAM,SAAS,GAAG,KAAgC,CAAC;IAEnD,MAAM,eAAe,GAAG,yBAAyB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtE,IAAI,eAAe,KAAK,SAAS;QAAE,OAAO,eAAe,CAAC;IAE1D,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CACL,6CAA6C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YACnE,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,6BAA6B,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3E,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IAEpD,OAAO,iCAAiC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AACpD,CAAC"}
@@ -17,10 +17,10 @@
17
17
  * `.runtime/datastore.sqlite`.
18
18
  */
19
19
  import { type Logger, type ToolCliContext } from '@opensip-cli/core';
20
- import { type LiveViewRegistry } from './bootstrap/live-plane.js';
20
+ import { type LiveViewRegistry } from './bootstrap/io-plane.js';
21
21
  import type { CommandResult } from '@opensip-cli/contracts';
22
22
  export { buildDatastoreThunk, getCurrentProjectRoot, getOrOpenDatastore, } from './bootstrap/scope-access.js';
23
- export { createLiveViewRegistry, type LiveViewRegistry } from './bootstrap/live-plane.js';
23
+ export { createLiveViewRegistry, type LiveViewRegistry } from './bootstrap/io-plane.js';
24
24
  export interface BuildToolCliContextOptions {
25
25
  readonly render: (result: CommandResult) => Promise<void>;
26
26
  readonly liveViews: LiveViewRegistry;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-context.d.ts","sourceRoot":"","sources":["../src/cli-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAWnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAsB5D,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE1F,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE;QAC/B,aAAa,EAAE,OAAO,CAAC;QACvB,UAAU,EAAE,OAAO,CAAC;KACrB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAChD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B,GAAG,oBAAoB,CA2F1F"}
1
+ {"version":3,"file":"cli-context.d.ts","sourceRoot":"","sources":["../src/cli-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAW/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAmB5D,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAExF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE;QAC/B,aAAa,EAAE,OAAO,CAAC;QACvB,UAAU,EAAE,OAAO,CAAC;KACrB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAChD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B,GAAG,oBAAoB,CAgF1F"}