@untangle-code/cli 0.0.0-stage → 0.1.1

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 (571) hide show
  1. package/LICENSE +661 -0
  2. package/NOTICE +90 -0
  3. package/README.md +451 -2
  4. package/THIRD_PARTY_LICENSES.md +152 -0
  5. package/dist/cli/args.d.ts +48 -0
  6. package/dist/cli/args.d.ts.map +1 -0
  7. package/dist/cli/args.js +167 -0
  8. package/dist/cli/args.js.map +1 -0
  9. package/dist/cli/command.d.ts +69 -0
  10. package/dist/cli/command.d.ts.map +1 -0
  11. package/dist/cli/command.js +82 -0
  12. package/dist/cli/command.js.map +1 -0
  13. package/dist/cli/deadline.d.ts +33 -0
  14. package/dist/cli/deadline.d.ts.map +1 -0
  15. package/dist/cli/deadline.js +49 -0
  16. package/dist/cli/deadline.js.map +1 -0
  17. package/dist/cli/embedder-deadline.d.ts +72 -0
  18. package/dist/cli/embedder-deadline.d.ts.map +1 -0
  19. package/dist/cli/embedder-deadline.js +117 -0
  20. package/dist/cli/embedder-deadline.js.map +1 -0
  21. package/dist/cli/exit.d.ts +71 -0
  22. package/dist/cli/exit.d.ts.map +1 -0
  23. package/dist/cli/exit.js +81 -0
  24. package/dist/cli/exit.js.map +1 -0
  25. package/dist/cli/graphs.d.ts +65 -0
  26. package/dist/cli/graphs.d.ts.map +1 -0
  27. package/dist/cli/graphs.js +108 -0
  28. package/dist/cli/graphs.js.map +1 -0
  29. package/dist/cli/index-freshness.d.ts +13 -0
  30. package/dist/cli/index-freshness.d.ts.map +1 -0
  31. package/dist/cli/index-freshness.js +226 -0
  32. package/dist/cli/index-freshness.js.map +1 -0
  33. package/dist/cli/index-refresh.d.ts +10 -0
  34. package/dist/cli/index-refresh.d.ts.map +1 -0
  35. package/dist/cli/index-refresh.js +76 -0
  36. package/dist/cli/index-refresh.js.map +1 -0
  37. package/dist/cli/index-state.d.ts +184 -0
  38. package/dist/cli/index-state.d.ts.map +1 -0
  39. package/dist/cli/index-state.js +852 -0
  40. package/dist/cli/index-state.js.map +1 -0
  41. package/dist/cli/io.d.ts +29 -0
  42. package/dist/cli/io.d.ts.map +1 -0
  43. package/dist/cli/io.js +42 -0
  44. package/dist/cli/io.js.map +1 -0
  45. package/dist/cli/language-support.d.ts +77 -0
  46. package/dist/cli/language-support.d.ts.map +1 -0
  47. package/dist/cli/language-support.js +152 -0
  48. package/dist/cli/language-support.js.map +1 -0
  49. package/dist/cli/renewing-lease.d.ts +26 -0
  50. package/dist/cli/renewing-lease.d.ts.map +1 -0
  51. package/dist/cli/renewing-lease.js +102 -0
  52. package/dist/cli/renewing-lease.js.map +1 -0
  53. package/dist/cli/search-graph-enrichment.d.ts +16 -0
  54. package/dist/cli/search-graph-enrichment.d.ts.map +1 -0
  55. package/dist/cli/search-graph-enrichment.js +428 -0
  56. package/dist/cli/search-graph-enrichment.js.map +1 -0
  57. package/dist/cli/system.d.ts +34 -0
  58. package/dist/cli/system.d.ts.map +1 -0
  59. package/dist/cli/system.js +89 -0
  60. package/dist/cli/system.js.map +1 -0
  61. package/dist/cli/vector-store-policy.d.ts +116 -0
  62. package/dist/cli/vector-store-policy.d.ts.map +1 -0
  63. package/dist/cli/vector-store-policy.js +160 -0
  64. package/dist/cli/vector-store-policy.js.map +1 -0
  65. package/dist/cli/version.d.ts +3 -0
  66. package/dist/cli/version.d.ts.map +1 -0
  67. package/dist/cli/version.js +3 -0
  68. package/dist/cli/version.js.map +1 -0
  69. package/dist/cli/workspace.d.ts +105 -0
  70. package/dist/cli/workspace.d.ts.map +1 -0
  71. package/dist/cli/workspace.js +215 -0
  72. package/dist/cli/workspace.js.map +1 -0
  73. package/dist/commands/complexity.d.ts +72 -0
  74. package/dist/commands/complexity.d.ts.map +1 -0
  75. package/dist/commands/complexity.js +580 -0
  76. package/dist/commands/complexity.js.map +1 -0
  77. package/dist/commands/doctor.d.ts +66 -0
  78. package/dist/commands/doctor.d.ts.map +1 -0
  79. package/dist/commands/doctor.js +764 -0
  80. package/dist/commands/doctor.js.map +1 -0
  81. package/dist/commands/doctor.languages.d.ts +37 -0
  82. package/dist/commands/doctor.languages.d.ts.map +1 -0
  83. package/dist/commands/doctor.languages.js +143 -0
  84. package/dist/commands/doctor.languages.js.map +1 -0
  85. package/dist/commands/doctor.storage.d.ts +17 -0
  86. package/dist/commands/doctor.storage.d.ts.map +1 -0
  87. package/dist/commands/doctor.storage.js +91 -0
  88. package/dist/commands/doctor.storage.js.map +1 -0
  89. package/dist/commands/extensions/add.d.ts +10 -0
  90. package/dist/commands/extensions/add.d.ts.map +1 -0
  91. package/dist/commands/extensions/add.js +213 -0
  92. package/dist/commands/extensions/add.js.map +1 -0
  93. package/dist/commands/extensions/configure.d.ts +5 -0
  94. package/dist/commands/extensions/configure.d.ts.map +1 -0
  95. package/dist/commands/extensions/configure.js +58 -0
  96. package/dist/commands/extensions/configure.js.map +1 -0
  97. package/dist/commands/extensions/container.d.ts +15 -0
  98. package/dist/commands/extensions/container.d.ts.map +1 -0
  99. package/dist/commands/extensions/container.js +135 -0
  100. package/dist/commands/extensions/container.js.map +1 -0
  101. package/dist/commands/extensions/context.d.ts +37 -0
  102. package/dist/commands/extensions/context.d.ts.map +1 -0
  103. package/dist/commands/extensions/context.js +72 -0
  104. package/dist/commands/extensions/context.js.map +1 -0
  105. package/dist/commands/extensions/enable.d.ts +6 -0
  106. package/dist/commands/extensions/enable.d.ts.map +1 -0
  107. package/dist/commands/extensions/enable.js +180 -0
  108. package/dist/commands/extensions/enable.js.map +1 -0
  109. package/dist/commands/extensions/environment.d.ts +74 -0
  110. package/dist/commands/extensions/environment.d.ts.map +1 -0
  111. package/dist/commands/extensions/environment.js +168 -0
  112. package/dist/commands/extensions/environment.js.map +1 -0
  113. package/dist/commands/extensions/feature-scan.d.ts +48 -0
  114. package/dist/commands/extensions/feature-scan.d.ts.map +1 -0
  115. package/dist/commands/extensions/feature-scan.js +156 -0
  116. package/dist/commands/extensions/feature-scan.js.map +1 -0
  117. package/dist/commands/extensions/invoke.d.ts +60 -0
  118. package/dist/commands/extensions/invoke.d.ts.map +1 -0
  119. package/dist/commands/extensions/invoke.js +275 -0
  120. package/dist/commands/extensions/invoke.js.map +1 -0
  121. package/dist/commands/extensions/list.d.ts +5 -0
  122. package/dist/commands/extensions/list.d.ts.map +1 -0
  123. package/dist/commands/extensions/list.js +125 -0
  124. package/dist/commands/extensions/list.js.map +1 -0
  125. package/dist/commands/extensions/logs.d.ts +5 -0
  126. package/dist/commands/extensions/logs.d.ts.map +1 -0
  127. package/dist/commands/extensions/logs.js +74 -0
  128. package/dist/commands/extensions/logs.js.map +1 -0
  129. package/dist/commands/extensions/provision.d.ts +36 -0
  130. package/dist/commands/extensions/provision.d.ts.map +1 -0
  131. package/dist/commands/extensions/provision.js +137 -0
  132. package/dist/commands/extensions/provision.js.map +1 -0
  133. package/dist/commands/extensions/remove.d.ts +5 -0
  134. package/dist/commands/extensions/remove.d.ts.map +1 -0
  135. package/dist/commands/extensions/remove.js +77 -0
  136. package/dist/commands/extensions/remove.js.map +1 -0
  137. package/dist/commands/extensions/render.d.ts +16 -0
  138. package/dist/commands/extensions/render.d.ts.map +1 -0
  139. package/dist/commands/extensions/render.js +25 -0
  140. package/dist/commands/extensions/render.js.map +1 -0
  141. package/dist/commands/extensions/run.d.ts +30 -0
  142. package/dist/commands/extensions/run.d.ts.map +1 -0
  143. package/dist/commands/extensions/run.js +292 -0
  144. package/dist/commands/extensions/run.js.map +1 -0
  145. package/dist/commands/extensions/secret-store.d.ts +15 -0
  146. package/dist/commands/extensions/secret-store.d.ts.map +1 -0
  147. package/dist/commands/extensions/secret-store.js +164 -0
  148. package/dist/commands/extensions/secret-store.js.map +1 -0
  149. package/dist/commands/extensions/setup.d.ts +17 -0
  150. package/dist/commands/extensions/setup.d.ts.map +1 -0
  151. package/dist/commands/extensions/setup.js +94 -0
  152. package/dist/commands/extensions/setup.js.map +1 -0
  153. package/dist/commands/extensions/source.d.ts +47 -0
  154. package/dist/commands/extensions/source.d.ts.map +1 -0
  155. package/dist/commands/extensions/source.js +142 -0
  156. package/dist/commands/extensions/source.js.map +1 -0
  157. package/dist/commands/extensions/state.d.ts +62 -0
  158. package/dist/commands/extensions/state.d.ts.map +1 -0
  159. package/dist/commands/extensions/state.js +177 -0
  160. package/dist/commands/extensions/state.js.map +1 -0
  161. package/dist/commands/extensions/status.d.ts +9 -0
  162. package/dist/commands/extensions/status.d.ts.map +1 -0
  163. package/dist/commands/extensions/status.js +239 -0
  164. package/dist/commands/extensions/status.js.map +1 -0
  165. package/dist/commands/extensions.d.ts +3 -0
  166. package/dist/commands/extensions.d.ts.map +1 -0
  167. package/dist/commands/extensions.js +223 -0
  168. package/dist/commands/extensions.js.map +1 -0
  169. package/dist/commands/flow/index.d.ts +3 -0
  170. package/dist/commands/flow/index.d.ts.map +1 -0
  171. package/dist/commands/flow/index.js +295 -0
  172. package/dist/commands/flow/index.js.map +1 -0
  173. package/dist/commands/flow/limits.d.ts +12 -0
  174. package/dist/commands/flow/limits.d.ts.map +1 -0
  175. package/dist/commands/flow/limits.js +13 -0
  176. package/dist/commands/flow/limits.js.map +1 -0
  177. package/dist/commands/flow/output.d.ts +8 -0
  178. package/dist/commands/flow/output.d.ts.map +1 -0
  179. package/dist/commands/flow/output.js +11 -0
  180. package/dist/commands/flow/output.js.map +1 -0
  181. package/dist/commands/flow/render.d.ts +51 -0
  182. package/dist/commands/flow/render.d.ts.map +1 -0
  183. package/dist/commands/flow/render.js +220 -0
  184. package/dist/commands/flow/render.js.map +1 -0
  185. package/dist/commands/flow/select.d.ts +31 -0
  186. package/dist/commands/flow/select.d.ts.map +1 -0
  187. package/dist/commands/flow/select.js +62 -0
  188. package/dist/commands/flow/select.js.map +1 -0
  189. package/dist/commands/graph/boundaries-input.d.ts +26 -0
  190. package/dist/commands/graph/boundaries-input.d.ts.map +1 -0
  191. package/dist/commands/graph/boundaries-input.js +54 -0
  192. package/dist/commands/graph/boundaries-input.js.map +1 -0
  193. package/dist/commands/graph/boundaries.d.ts +4 -0
  194. package/dist/commands/graph/boundaries.d.ts.map +1 -0
  195. package/dist/commands/graph/boundaries.js +141 -0
  196. package/dist/commands/graph/boundaries.js.map +1 -0
  197. package/dist/commands/graph/bounds.d.ts +16 -0
  198. package/dist/commands/graph/bounds.d.ts.map +1 -0
  199. package/dist/commands/graph/bounds.js +22 -0
  200. package/dist/commands/graph/bounds.js.map +1 -0
  201. package/dist/commands/graph/category-clusters.d.ts +20 -0
  202. package/dist/commands/graph/category-clusters.d.ts.map +1 -0
  203. package/dist/commands/graph/category-clusters.js +158 -0
  204. package/dist/commands/graph/category-clusters.js.map +1 -0
  205. package/dist/commands/graph/feature-3d.d.ts +22 -0
  206. package/dist/commands/graph/feature-3d.d.ts.map +1 -0
  207. package/dist/commands/graph/feature-3d.js +114 -0
  208. package/dist/commands/graph/feature-3d.js.map +1 -0
  209. package/dist/commands/graph/feature-clusters.d.ts +17 -0
  210. package/dist/commands/graph/feature-clusters.d.ts.map +1 -0
  211. package/dist/commands/graph/feature-clusters.js +94 -0
  212. package/dist/commands/graph/feature-clusters.js.map +1 -0
  213. package/dist/commands/graph/feature-html.d.ts +26 -0
  214. package/dist/commands/graph/feature-html.d.ts.map +1 -0
  215. package/dist/commands/graph/feature-html.js +314 -0
  216. package/dist/commands/graph/feature-html.js.map +1 -0
  217. package/dist/commands/graph/feature-map.d.ts +31 -0
  218. package/dist/commands/graph/feature-map.d.ts.map +1 -0
  219. package/dist/commands/graph/feature-map.js +217 -0
  220. package/dist/commands/graph/feature-map.js.map +1 -0
  221. package/dist/commands/graph/feature-model.d.ts +55 -0
  222. package/dist/commands/graph/feature-model.d.ts.map +1 -0
  223. package/dist/commands/graph/feature-model.js +167 -0
  224. package/dist/commands/graph/feature-model.js.map +1 -0
  225. package/dist/commands/graph/feature-untangle-motion.d.ts +33 -0
  226. package/dist/commands/graph/feature-untangle-motion.d.ts.map +1 -0
  227. package/dist/commands/graph/feature-untangle-motion.js +155 -0
  228. package/dist/commands/graph/feature-untangle-motion.js.map +1 -0
  229. package/dist/commands/graph/index.d.ts +3 -0
  230. package/dist/commands/graph/index.d.ts.map +1 -0
  231. package/dist/commands/graph/index.js +414 -0
  232. package/dist/commands/graph/index.js.map +1 -0
  233. package/dist/commands/graph/render.d.ts +63 -0
  234. package/dist/commands/graph/render.d.ts.map +1 -0
  235. package/dist/commands/graph/render.js +352 -0
  236. package/dist/commands/graph/render.js.map +1 -0
  237. package/dist/commands/graph/select.d.ts +34 -0
  238. package/dist/commands/graph/select.d.ts.map +1 -0
  239. package/dist/commands/graph/select.js +55 -0
  240. package/dist/commands/graph/select.js.map +1 -0
  241. package/dist/commands/index/index.d.ts +6 -0
  242. package/dist/commands/index/index.d.ts.map +1 -0
  243. package/dist/commands/index/index.js +461 -0
  244. package/dist/commands/index/index.js.map +1 -0
  245. package/dist/commands/index/render.d.ts +53 -0
  246. package/dist/commands/index/render.d.ts.map +1 -0
  247. package/dist/commands/index/render.js +205 -0
  248. package/dist/commands/index/render.js.map +1 -0
  249. package/dist/commands/index/target.d.ts +34 -0
  250. package/dist/commands/index/target.d.ts.map +1 -0
  251. package/dist/commands/index/target.js +97 -0
  252. package/dist/commands/index/target.js.map +1 -0
  253. package/dist/commands/index-watch.d.ts +30 -0
  254. package/dist/commands/index-watch.d.ts.map +1 -0
  255. package/dist/commands/index-watch.js +138 -0
  256. package/dist/commands/index-watch.js.map +1 -0
  257. package/dist/commands/init/command.d.ts +25 -0
  258. package/dist/commands/init/command.d.ts.map +1 -0
  259. package/dist/commands/init/command.js +198 -0
  260. package/dist/commands/init/command.js.map +1 -0
  261. package/dist/commands/init/config-draft.d.ts +48 -0
  262. package/dist/commands/init/config-draft.d.ts.map +1 -0
  263. package/dist/commands/init/config-draft.js +201 -0
  264. package/dist/commands/init/config-draft.js.map +1 -0
  265. package/dist/commands/init/diff.d.ts +33 -0
  266. package/dist/commands/init/diff.d.ts.map +1 -0
  267. package/dist/commands/init/diff.js +109 -0
  268. package/dist/commands/init/diff.js.map +1 -0
  269. package/dist/commands/init/http-probe.d.ts +26 -0
  270. package/dist/commands/init/http-probe.d.ts.map +1 -0
  271. package/dist/commands/init/http-probe.js +144 -0
  272. package/dist/commands/init/http-probe.js.map +1 -0
  273. package/dist/commands/init/ignore-rules.d.ts +70 -0
  274. package/dist/commands/init/ignore-rules.d.ts.map +1 -0
  275. package/dist/commands/init/ignore-rules.js +146 -0
  276. package/dist/commands/init/ignore-rules.js.map +1 -0
  277. package/dist/commands/init/index.d.ts +33 -0
  278. package/dist/commands/init/index.d.ts.map +1 -0
  279. package/dist/commands/init/index.js +32 -0
  280. package/dist/commands/init/index.js.map +1 -0
  281. package/dist/commands/init/integrations-apply.d.ts +50 -0
  282. package/dist/commands/init/integrations-apply.d.ts.map +1 -0
  283. package/dist/commands/init/integrations-apply.js +452 -0
  284. package/dist/commands/init/integrations-apply.js.map +1 -0
  285. package/dist/commands/init/integrations-plan.d.ts +68 -0
  286. package/dist/commands/init/integrations-plan.d.ts.map +1 -0
  287. package/dist/commands/init/integrations-plan.js +515 -0
  288. package/dist/commands/init/integrations-plan.js.map +1 -0
  289. package/dist/commands/init/integrations.d.ts +5 -0
  290. package/dist/commands/init/integrations.d.ts.map +1 -0
  291. package/dist/commands/init/integrations.js +4 -0
  292. package/dist/commands/init/integrations.js.map +1 -0
  293. package/dist/commands/init/languages.d.ts +55 -0
  294. package/dist/commands/init/languages.d.ts.map +1 -0
  295. package/dist/commands/init/languages.js +245 -0
  296. package/dist/commands/init/languages.js.map +1 -0
  297. package/dist/commands/init/product-context.d.ts +63 -0
  298. package/dist/commands/init/product-context.d.ts.map +1 -0
  299. package/dist/commands/init/product-context.js +390 -0
  300. package/dist/commands/init/product-context.js.map +1 -0
  301. package/dist/commands/init/render.d.ts +38 -0
  302. package/dist/commands/init/render.d.ts.map +1 -0
  303. package/dist/commands/init/render.js +501 -0
  304. package/dist/commands/init/render.js.map +1 -0
  305. package/dist/commands/init/report.d.ts +24 -0
  306. package/dist/commands/init/report.d.ts.map +1 -0
  307. package/dist/commands/init/report.js +163 -0
  308. package/dist/commands/init/report.js.map +1 -0
  309. package/dist/commands/init/run.d.ts +71 -0
  310. package/dist/commands/init/run.d.ts.map +1 -0
  311. package/dist/commands/init/run.js +253 -0
  312. package/dist/commands/init/run.js.map +1 -0
  313. package/dist/commands/init/services.d.ts +82 -0
  314. package/dist/commands/init/services.d.ts.map +1 -0
  315. package/dist/commands/init/services.js +209 -0
  316. package/dist/commands/init/services.js.map +1 -0
  317. package/dist/commands/init/storage.d.ts +8 -0
  318. package/dist/commands/init/storage.d.ts.map +1 -0
  319. package/dist/commands/init/storage.js +102 -0
  320. package/dist/commands/init/storage.js.map +1 -0
  321. package/dist/commands/init/toml.d.ts +65 -0
  322. package/dist/commands/init/toml.d.ts.map +1 -0
  323. package/dist/commands/init/toml.js +159 -0
  324. package/dist/commands/init/toml.js.map +1 -0
  325. package/dist/commands/init/topology.d.ts +54 -0
  326. package/dist/commands/init/topology.d.ts.map +1 -0
  327. package/dist/commands/init/topology.js +146 -0
  328. package/dist/commands/init/topology.js.map +1 -0
  329. package/dist/commands/init/types.d.ts +334 -0
  330. package/dist/commands/init/types.d.ts.map +1 -0
  331. package/dist/commands/init/types.js +31 -0
  332. package/dist/commands/init/types.js.map +1 -0
  333. package/dist/commands/init/wizard-terminal.d.ts +36 -0
  334. package/dist/commands/init/wizard-terminal.d.ts.map +1 -0
  335. package/dist/commands/init/wizard-terminal.js +163 -0
  336. package/dist/commands/init/wizard-terminal.js.map +1 -0
  337. package/dist/commands/init/wizard.d.ts +25 -0
  338. package/dist/commands/init/wizard.d.ts.map +1 -0
  339. package/dist/commands/init/wizard.js +358 -0
  340. package/dist/commands/init/wizard.js.map +1 -0
  341. package/dist/commands/mcp.d.ts +4 -0
  342. package/dist/commands/mcp.d.ts.map +1 -0
  343. package/dist/commands/mcp.js +111 -0
  344. package/dist/commands/mcp.js.map +1 -0
  345. package/dist/commands/product-test-runner.d.ts +4 -0
  346. package/dist/commands/product-test-runner.d.ts.map +1 -0
  347. package/dist/commands/product-test-runner.js +85 -0
  348. package/dist/commands/product-test-runner.js.map +1 -0
  349. package/dist/commands/product.d.ts +16 -0
  350. package/dist/commands/product.d.ts.map +1 -0
  351. package/dist/commands/product.js +262 -0
  352. package/dist/commands/product.js.map +1 -0
  353. package/dist/commands/query.d.ts +114 -0
  354. package/dist/commands/query.d.ts.map +1 -0
  355. package/dist/commands/query.js +783 -0
  356. package/dist/commands/query.js.map +1 -0
  357. package/dist/commands/scan.d.ts +10 -0
  358. package/dist/commands/scan.d.ts.map +1 -0
  359. package/dist/commands/scan.js +302 -0
  360. package/dist/commands/scan.js.map +1 -0
  361. package/dist/commands/sdd.d.ts +24 -0
  362. package/dist/commands/sdd.d.ts.map +1 -0
  363. package/dist/commands/sdd.js +195 -0
  364. package/dist/commands/sdd.js.map +1 -0
  365. package/dist/commands/unavailable.d.ts +40 -0
  366. package/dist/commands/unavailable.d.ts.map +1 -0
  367. package/dist/commands/unavailable.js +73 -0
  368. package/dist/commands/unavailable.js.map +1 -0
  369. package/dist/commands/watch/analyze.d.ts +69 -0
  370. package/dist/commands/watch/analyze.d.ts.map +1 -0
  371. package/dist/commands/watch/analyze.js +402 -0
  372. package/dist/commands/watch/analyze.js.map +1 -0
  373. package/dist/commands/watch/cli.d.ts +8 -0
  374. package/dist/commands/watch/cli.d.ts.map +1 -0
  375. package/dist/commands/watch/cli.js +97 -0
  376. package/dist/commands/watch/cli.js.map +1 -0
  377. package/dist/commands/watch/delta.d.ts +46 -0
  378. package/dist/commands/watch/delta.d.ts.map +1 -0
  379. package/dist/commands/watch/delta.js +170 -0
  380. package/dist/commands/watch/delta.js.map +1 -0
  381. package/dist/commands/watch/events.d.ts +214 -0
  382. package/dist/commands/watch/events.d.ts.map +1 -0
  383. package/dist/commands/watch/events.js +13 -0
  384. package/dist/commands/watch/events.js.map +1 -0
  385. package/dist/commands/watch/index.d.ts +19 -0
  386. package/dist/commands/watch/index.d.ts.map +1 -0
  387. package/dist/commands/watch/index.js +15 -0
  388. package/dist/commands/watch/index.js.map +1 -0
  389. package/dist/commands/watch/options.d.ts +43 -0
  390. package/dist/commands/watch/options.d.ts.map +1 -0
  391. package/dist/commands/watch/options.js +193 -0
  392. package/dist/commands/watch/options.js.map +1 -0
  393. package/dist/commands/watch/render.d.ts +26 -0
  394. package/dist/commands/watch/render.d.ts.map +1 -0
  395. package/dist/commands/watch/render.js +175 -0
  396. package/dist/commands/watch/render.js.map +1 -0
  397. package/dist/commands/watch/run.d.ts +14 -0
  398. package/dist/commands/watch/run.d.ts.map +1 -0
  399. package/dist/commands/watch/run.js +460 -0
  400. package/dist/commands/watch/run.js.map +1 -0
  401. package/dist/commands/watch/runtime.d.ts +67 -0
  402. package/dist/commands/watch/runtime.d.ts.map +1 -0
  403. package/dist/commands/watch/runtime.js +149 -0
  404. package/dist/commands/watch/runtime.js.map +1 -0
  405. package/dist/commands/watch-command.d.ts +3 -0
  406. package/dist/commands/watch-command.d.ts.map +1 -0
  407. package/dist/commands/watch-command.js +273 -0
  408. package/dist/commands/watch-command.js.map +1 -0
  409. package/dist/entry-point.d.ts +11 -0
  410. package/dist/entry-point.d.ts.map +1 -0
  411. package/dist/entry-point.js +65 -0
  412. package/dist/entry-point.js.map +1 -0
  413. package/dist/index.d.ts +38 -0
  414. package/dist/index.d.ts.map +1 -0
  415. package/dist/index.js +245 -0
  416. package/dist/index.js.map +1 -0
  417. package/dist/mcp/boundaries-schema.d.ts +262 -0
  418. package/dist/mcp/boundaries-schema.d.ts.map +1 -0
  419. package/dist/mcp/boundaries-schema.js +183 -0
  420. package/dist/mcp/boundaries-schema.js.map +1 -0
  421. package/dist/mcp/default-runtime.d.ts +16 -0
  422. package/dist/mcp/default-runtime.d.ts.map +1 -0
  423. package/dist/mcp/default-runtime.js +718 -0
  424. package/dist/mcp/default-runtime.js.map +1 -0
  425. package/dist/mcp/envelope.d.ts +13 -0
  426. package/dist/mcp/envelope.d.ts.map +1 -0
  427. package/dist/mcp/envelope.js +29 -0
  428. package/dist/mcp/envelope.js.map +1 -0
  429. package/dist/mcp/index.d.ts +8 -0
  430. package/dist/mcp/index.d.ts.map +1 -0
  431. package/dist/mcp/index.js +8 -0
  432. package/dist/mcp/index.js.map +1 -0
  433. package/dist/mcp/output-schemas.d.ts +5928 -0
  434. package/dist/mcp/output-schemas.d.ts.map +1 -0
  435. package/dist/mcp/output-schemas.js +2814 -0
  436. package/dist/mcp/output-schemas.js.map +1 -0
  437. package/dist/mcp/path-sandbox.d.ts +35 -0
  438. package/dist/mcp/path-sandbox.d.ts.map +1 -0
  439. package/dist/mcp/path-sandbox.js +128 -0
  440. package/dist/mcp/path-sandbox.js.map +1 -0
  441. package/dist/mcp/server.d.ts +155 -0
  442. package/dist/mcp/server.d.ts.map +1 -0
  443. package/dist/mcp/server.js +257 -0
  444. package/dist/mcp/server.js.map +1 -0
  445. package/dist/mcp/stdio.d.ts +20 -0
  446. package/dist/mcp/stdio.d.ts.map +1 -0
  447. package/dist/mcp/stdio.js +71 -0
  448. package/dist/mcp/stdio.js.map +1 -0
  449. package/dist/mcp/tools.d.ts +355 -0
  450. package/dist/mcp/tools.d.ts.map +1 -0
  451. package/dist/mcp/tools.js +319 -0
  452. package/dist/mcp/tools.js.map +1 -0
  453. package/dist/mcp/types.d.ts +15 -0
  454. package/dist/mcp/types.d.ts.map +1 -0
  455. package/dist/mcp/types.js +45 -0
  456. package/dist/mcp/types.js.map +1 -0
  457. package/package.json +99 -3
  458. package/src/cli/args.ts +231 -0
  459. package/src/cli/command.ts +146 -0
  460. package/src/cli/deadline.ts +56 -0
  461. package/src/cli/embedder-deadline.ts +187 -0
  462. package/src/cli/exit.ts +94 -0
  463. package/src/cli/graphs.ts +191 -0
  464. package/src/cli/index-freshness.ts +303 -0
  465. package/src/cli/index-refresh.ts +125 -0
  466. package/src/cli/index-state.ts +1217 -0
  467. package/src/cli/io.ts +56 -0
  468. package/src/cli/language-support.ts +203 -0
  469. package/src/cli/renewing-lease.ts +121 -0
  470. package/src/cli/search-graph-enrichment.ts +639 -0
  471. package/src/cli/system.ts +94 -0
  472. package/src/cli/vector-store-policy.ts +213 -0
  473. package/src/cli/version.ts +2 -0
  474. package/src/cli/workspace.ts +324 -0
  475. package/src/commands/complexity.ts +776 -0
  476. package/src/commands/doctor.languages.ts +187 -0
  477. package/src/commands/doctor.storage.ts +124 -0
  478. package/src/commands/doctor.ts +946 -0
  479. package/src/commands/extensions/add.ts +312 -0
  480. package/src/commands/extensions/configure.ts +82 -0
  481. package/src/commands/extensions/container.ts +209 -0
  482. package/src/commands/extensions/context.ts +109 -0
  483. package/src/commands/extensions/enable.ts +237 -0
  484. package/src/commands/extensions/environment.ts +218 -0
  485. package/src/commands/extensions/feature-scan.ts +232 -0
  486. package/src/commands/extensions/invoke.ts +368 -0
  487. package/src/commands/extensions/list.ts +158 -0
  488. package/src/commands/extensions/logs.ts +104 -0
  489. package/src/commands/extensions/provision.ts +206 -0
  490. package/src/commands/extensions/remove.ts +110 -0
  491. package/src/commands/extensions/render.ts +32 -0
  492. package/src/commands/extensions/run.ts +386 -0
  493. package/src/commands/extensions/secret-store.ts +223 -0
  494. package/src/commands/extensions/setup.ts +140 -0
  495. package/src/commands/extensions/source.ts +189 -0
  496. package/src/commands/extensions/state.ts +252 -0
  497. package/src/commands/extensions/status.ts +320 -0
  498. package/src/commands/extensions.ts +280 -0
  499. package/src/commands/flow/index.ts +402 -0
  500. package/src/commands/flow/limits.ts +14 -0
  501. package/src/commands/flow/output.ts +16 -0
  502. package/src/commands/flow/render.ts +318 -0
  503. package/src/commands/flow/select.ts +101 -0
  504. package/src/commands/graph/boundaries-input.ts +63 -0
  505. package/src/commands/graph/boundaries.ts +182 -0
  506. package/src/commands/graph/bounds.ts +25 -0
  507. package/src/commands/graph/category-clusters.ts +194 -0
  508. package/src/commands/graph/feature-3d.ts +141 -0
  509. package/src/commands/graph/feature-clusters.ts +125 -0
  510. package/src/commands/graph/feature-html.ts +336 -0
  511. package/src/commands/graph/feature-map.ts +270 -0
  512. package/src/commands/graph/feature-model.ts +234 -0
  513. package/src/commands/graph/feature-untangle-motion.ts +192 -0
  514. package/src/commands/graph/index.ts +562 -0
  515. package/src/commands/graph/render.ts +503 -0
  516. package/src/commands/graph/select.ts +77 -0
  517. package/src/commands/index/index.ts +595 -0
  518. package/src/commands/index/render.ts +325 -0
  519. package/src/commands/index/target.ts +136 -0
  520. package/src/commands/index-watch.ts +206 -0
  521. package/src/commands/init/command.ts +238 -0
  522. package/src/commands/init/config-draft.ts +235 -0
  523. package/src/commands/init/diff.ts +117 -0
  524. package/src/commands/init/http-probe.ts +150 -0
  525. package/src/commands/init/ignore-rules.ts +170 -0
  526. package/src/commands/init/index.ts +63 -0
  527. package/src/commands/init/integrations-apply.ts +618 -0
  528. package/src/commands/init/integrations-plan.ts +634 -0
  529. package/src/commands/init/integrations.ts +8 -0
  530. package/src/commands/init/languages.ts +320 -0
  531. package/src/commands/init/product-context.ts +576 -0
  532. package/src/commands/init/render.ts +598 -0
  533. package/src/commands/init/report.ts +204 -0
  534. package/src/commands/init/run.ts +349 -0
  535. package/src/commands/init/services.ts +271 -0
  536. package/src/commands/init/storage.ts +136 -0
  537. package/src/commands/init/toml.ts +174 -0
  538. package/src/commands/init/topology.ts +192 -0
  539. package/src/commands/init/types.ts +366 -0
  540. package/src/commands/init/wizard-terminal.ts +206 -0
  541. package/src/commands/init/wizard.ts +450 -0
  542. package/src/commands/mcp.ts +123 -0
  543. package/src/commands/product-test-runner.ts +80 -0
  544. package/src/commands/product.ts +331 -0
  545. package/src/commands/query.ts +1032 -0
  546. package/src/commands/scan.ts +360 -0
  547. package/src/commands/sdd.ts +243 -0
  548. package/src/commands/unavailable.ts +92 -0
  549. package/src/commands/watch/README.md +160 -0
  550. package/src/commands/watch/analyze.ts +600 -0
  551. package/src/commands/watch/cli.ts +108 -0
  552. package/src/commands/watch/delta.ts +186 -0
  553. package/src/commands/watch/events.ts +235 -0
  554. package/src/commands/watch/index.ts +53 -0
  555. package/src/commands/watch/options.ts +234 -0
  556. package/src/commands/watch/render.ts +240 -0
  557. package/src/commands/watch/run.ts +553 -0
  558. package/src/commands/watch/runtime.ts +167 -0
  559. package/src/commands/watch-command.ts +294 -0
  560. package/src/entry-point.ts +67 -0
  561. package/src/index.ts +291 -0
  562. package/src/mcp/boundaries-schema.ts +193 -0
  563. package/src/mcp/default-runtime.ts +1034 -0
  564. package/src/mcp/envelope.ts +57 -0
  565. package/src/mcp/index.ts +28 -0
  566. package/src/mcp/output-schemas.ts +3071 -0
  567. package/src/mcp/path-sandbox.ts +156 -0
  568. package/src/mcp/server.ts +358 -0
  569. package/src/mcp/stdio.ts +92 -0
  570. package/src/mcp/tools.ts +563 -0
  571. package/src/mcp/types.ts +66 -0
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Ports and locations the extension commands run against.
3
+ *
4
+ * Everything the commands touch arrives here as data or as a port: the file
5
+ * system, the clock, randomness, the search roots, the user data directory
6
+ * and — the load-bearing one — the PROJECT roots.
7
+ *
8
+ * ## Why project roots exist at all
9
+ *
10
+ * A manifest describes how to start a program. If Untangle read manifests
11
+ * from the working directory, `git clone` of a stranger's repository would be
12
+ * enough to put a tool definition in front of the runtime, and one
13
+ * `untangle extensions run` away from executing it. So project directories
14
+ * are a boundary, not a search path: `discoverExtensions` never scans them,
15
+ * and `loadExtensionFrom` refuses a path inside one unless the user types
16
+ * `--allow-project-local` in that very invocation.
17
+ *
18
+ * The same reasoning puts license acknowledgments in the user data directory
19
+ * (extensions.md §9.2): a `.untangle/` file can be committed, and a committed
20
+ * acknowledgment would inherit one person's declaration to a whole team.
21
+ */
22
+ import { homedir, userInfo } from "node:os";
23
+ import { basename, dirname, isAbsolute, join, resolve } from "node:path";
24
+ import { isInsideDirectory, resolveExtensionRoots, userDataDirectory, } from "@untangle-code/extension-runtime";
25
+ import { NodeFileSystem } from "@untangle-code/scanner/node-fs";
26
+ import { systemClock, systemRandom } from "../../cli/system.js";
27
+ export async function createExtensionEnvironment(options) {
28
+ const fs = options.fs ?? new NodeFileSystem();
29
+ const cwd = await canonicalize(fs, resolve(options.cwd));
30
+ const platform = options.platform ?? process.platform;
31
+ const pathEnvironment = {
32
+ homeDir: options.homeDir ?? homeDirFrom(options.env, platform),
33
+ platform,
34
+ env: options.env,
35
+ };
36
+ return {
37
+ fs,
38
+ clock: options.clock ?? systemClock,
39
+ random: options.random ?? systemRandom,
40
+ cwd,
41
+ roots: await Promise.all(resolveExtensionRoots(pathEnvironment).map((root) => canonicalize(fs, root))),
42
+ userDataDir: userDataDirectory(pathEnvironment),
43
+ projectRoots: await discoverProjectRoots(fs, cwd, pathEnvironment.homeDir),
44
+ userName: options.userName ?? safeUserName(),
45
+ env: options.env,
46
+ };
47
+ }
48
+ /**
49
+ * Marker files that identify a directory as somebody's PROJECT rather than
50
+ * part of the user profile. `.git` is the decisive one — the threat this
51
+ * boundary exists for is a cloned repository — and the two Untangle markers
52
+ * cover a project that was shipped as an archive rather than a clone.
53
+ */
54
+ const PROJECT_MARKERS = [".git", ".untangle.json", ".untangle"];
55
+ /**
56
+ * Determines which directories must be treated as project directories.
57
+ *
58
+ * Walks from `start` up to the filesystem root and collects every directory
59
+ * carrying a project marker; if at least one is found, `start` itself joins
60
+ * the list, because the working directory inside a project is part of that
61
+ * project.
62
+ *
63
+ * Two deliberate exclusions:
64
+ *
65
+ * - **The home directory is never a project root.** A dotfiles repository in
66
+ * `$HOME` is ordinary, and treating `$HOME` as a project would put
67
+ * `~/.untangle/extensions` inside a project directory — which would make the
68
+ * user's own extension root unscannable the moment they ran the CLI from
69
+ * their home directory. The boundary is meant to keep a stranger's
70
+ * repository out, not to lock people out of their own profile.
71
+ * - **A directory with no marker anywhere above it yields no project roots at
72
+ * all.** Without a marker there is no project to protect, and a bare
73
+ * directory the user made themselves is theirs. The consequence is stated
74
+ * openly: `add --from ./manifest.toml` in such a directory is NOT refused.
75
+ * A cloned repository always carries `.git`, so the case the boundary exists
76
+ * for is still covered.
77
+ */
78
+ export async function discoverProjectRoots(fs, start, homeDir) {
79
+ const home = homeDir === undefined ? undefined : resolve(homeDir);
80
+ const found = [];
81
+ let current = start;
82
+ for (;;) {
83
+ if (current !== home && (await hasProjectMarker(fs, current))) {
84
+ found.push(current);
85
+ }
86
+ const parent = dirname(current);
87
+ if (parent === current) {
88
+ break;
89
+ }
90
+ current = parent;
91
+ }
92
+ if (found.length === 0) {
93
+ return [];
94
+ }
95
+ return found.includes(start) ? found : [start, ...found];
96
+ }
97
+ async function hasProjectMarker(fs, directory) {
98
+ for (const marker of PROJECT_MARKERS) {
99
+ if ((await fs.stat(join(directory, marker))) !== null) {
100
+ return true;
101
+ }
102
+ }
103
+ return false;
104
+ }
105
+ /** True when `candidate` lies inside any of `roots`. */
106
+ export function isInsideAnyRoot(candidate, roots) {
107
+ return roots.some((root) => isInsideDirectory(candidate, root));
108
+ }
109
+ /** Resolves a user-supplied path against the working directory. */
110
+ export function resolveUserPath(cwd, path) {
111
+ return isAbsolute(path) ? path : resolve(cwd, path);
112
+ }
113
+ /**
114
+ * Canonical form of a path, with symlinks resolved.
115
+ *
116
+ * This is not cosmetic. `isProjectLocalManifest` and `isInsideDirectory`
117
+ * compare LEXICALLY and say so: they never resolve symlinks, and the caller is
118
+ * expected to hand them canonical paths. Skipping this step would leave the
119
+ * project boundary trivially escapable — a symlink, or on macOS merely the
120
+ * `/var` → `/private/var` alias, is enough to make a path inside a project
121
+ * compare as if it were outside one.
122
+ *
123
+ * A path that does not exist yet still gets canonicalized as far as it does
124
+ * exist: the deepest existing ancestor is resolved and the remaining segments
125
+ * are re-appended. Failing the whole command over a not-yet-created file would
126
+ * be worse than a partially canonical answer, and the ancestor is the part
127
+ * that decides containment.
128
+ */
129
+ export async function canonicalize(fs, path) {
130
+ const tail = [];
131
+ let current = resolve(path);
132
+ for (;;) {
133
+ try {
134
+ const real = await fs.realPath(current);
135
+ return tail.length === 0 ? real : join(real, ...tail.reverse());
136
+ }
137
+ catch {
138
+ const parent = dirname(current);
139
+ if (parent === current) {
140
+ return resolve(path);
141
+ }
142
+ tail.push(basename(current));
143
+ current = parent;
144
+ }
145
+ }
146
+ }
147
+ /**
148
+ * The home directory as the COMMAND CONTEXT sees it.
149
+ *
150
+ * `os.homedir()` reads the process environment, not the environment handed to
151
+ * this command. Preferring the context keeps the extension root, the
152
+ * acknowledgment file and the state file inside whatever profile the caller
153
+ * declared — which is what makes these commands testable without writing into
154
+ * the real user profile.
155
+ */
156
+ function homeDirFrom(env, platform) {
157
+ const fromEnv = platform === "win32" ? env["USERPROFILE"] : env["HOME"];
158
+ return fromEnv !== undefined && fromEnv.trim() !== "" ? fromEnv : homedir();
159
+ }
160
+ function safeUserName() {
161
+ try {
162
+ return userInfo().username;
163
+ }
164
+ catch {
165
+ return "unknown";
166
+ }
167
+ }
168
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/commands/extensions/environment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /** Declared feature context for a scan; external evidence never becomes a feature metric. */
2
+ import { analyzeProductAlignment } from "@untangle-code/core";
3
+ import type { ProductAlignmentReportV1 } from "@untangle-code/domain";
4
+ import type { Io } from "../../cli/io.js";
5
+ import type { ExtensionRanV1 } from "./invoke.js";
6
+ export type ScanProductAnalyzer = typeof analyzeProductAlignment;
7
+ export type ScanFeatureOptions = Parameters<ScanProductAnalyzer>[0] & {
8
+ featureId: string;
9
+ };
10
+ export interface ScanFeatureContext {
11
+ requestedFeatureId: string;
12
+ nextSteps: string[];
13
+ /** Full-file own metrics, declared ownership, acceptance and test evidence. */
14
+ report: ProductAlignmentReportV1;
15
+ sourceBinding: {
16
+ status: "unchanged" | "changed" | "unverified";
17
+ beforeDigest: string;
18
+ afterDigest?: string;
19
+ beforeManifestHash?: string;
20
+ afterManifestHash?: string;
21
+ afterStatus?: ProductAlignmentReportV1["status"];
22
+ afterIssues?: string[];
23
+ beforeInventory: ProductAlignmentReportV1["inventory"];
24
+ afterInventory?: ProductAlignmentReportV1["inventory"];
25
+ detail: string;
26
+ nextStep: string;
27
+ };
28
+ externalEvidence: {
29
+ extensionId: string;
30
+ runId: string;
31
+ status: "available" | "not_measured" | "source_changed" | "source_unverified" | "no_feature_boundary";
32
+ /** Request time is not proof of the analyzer's underlying source snapshot. */
33
+ analyzerSourceIdentity: "not_independently_proven";
34
+ bindings: {
35
+ kind: "measurement" | "finding";
36
+ index: number;
37
+ relation: "declared_feature_file" | "other_file" | "repository_context" | "unscoped";
38
+ filePath?: string;
39
+ sharedWithFeatures?: string[];
40
+ }[];
41
+ nextStep: string;
42
+ }[];
43
+ limitations: string[];
44
+ }
45
+ /** Re-analyze after the external calls, preserving both source identities and missing evidence. */
46
+ export declare function finishScanFeature(options: ScanFeatureOptions, before: ProductAlignmentReportV1, outcomes: readonly ExtensionRanV1[], analyze?: ScanProductAnalyzer): Promise<ScanFeatureContext>;
47
+ export declare function renderScanFeature(io: Io, context: ScanFeatureContext): void;
48
+ //# sourceMappingURL=feature-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-scan.d.ts","sourceRoot":"","sources":["../../../src/commands/extensions/feature-scan.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAI1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,MAAM,mBAAmB,GAAG,OAAO,uBAAuB,CAAC;AACjE,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5F,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,+EAA+E;IAC/E,MAAM,EAAE,wBAAwB,CAAC;IACjC,aAAa,EAAE;QACb,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;QAC/C,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACjD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,eAAe,EAAE,wBAAwB,CAAC,WAAW,CAAC,CAAC;QACvD,cAAc,CAAC,EAAE,wBAAwB,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,gBAAgB,EAAE;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EACJ,WAAW,GAAG,cAAc,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;QAChG,8EAA8E;QAC9E,sBAAsB,EAAE,0BAA0B,CAAC;QACnD,QAAQ,EAAE;YACR,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC;YAChC,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,EAAE,uBAAuB,GAAG,YAAY,GAAG,oBAAoB,GAAG,UAAU,CAAC;YACrF,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;SAC/B,EAAE,CAAC;QACJ,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IACJ,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,mGAAmG;AACnG,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,OAAO,GAAE,mBAA6C,GACrD,OAAO,CAAC,kBAAkB,CAAC,CA8H7B;AAWD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAsC3E"}
@@ -0,0 +1,156 @@
1
+ /** Declared feature context for a scan; external evidence never becomes a feature metric. */
2
+ import { analyzeProductAlignment } from "@untangle-code/core";
3
+ import { line } from "../../cli/io.js";
4
+ import { formatProductReport } from "../product.js";
5
+ /** Re-analyze after the external calls, preserving both source identities and missing evidence. */
6
+ export async function finishScanFeature(options, before, outcomes, analyze = analyzeProductAlignment) {
7
+ let after;
8
+ let failure;
9
+ try {
10
+ after = await analyze(options);
11
+ }
12
+ catch (error) {
13
+ options.signal?.throwIfAborted();
14
+ failure = error instanceof Error ? error.message : String(error);
15
+ }
16
+ options.signal?.throwIfAborted();
17
+ const changed = after !== undefined &&
18
+ (before.sourceTreeDigest !== after.sourceTreeDigest ||
19
+ before.manifest.contentHash !== after.manifest.contentHash);
20
+ const verified = after !== undefined && !unstableInventory(before) && !unstableInventory(after);
21
+ const status = changed ? "changed" : verified ? "unchanged" : "unverified";
22
+ const feature = before.features.find((entry) => entry.id === options.featureId);
23
+ const selected = new Set([...(feature?.code.files ?? []), ...(feature?.tests.files ?? [])].map((file) => file.path));
24
+ const shared = new Map(before.coverage.sharedFiles.map((file) => [file.path, file.featureIds]));
25
+ const sharedContext = (filePath) => {
26
+ const featureIds = filePath === undefined ? undefined : shared.get(filePath);
27
+ return featureIds === undefined ? {} : { sharedWithFeatures: featureIds };
28
+ };
29
+ const nextStep = "Repeat scan on a stable working tree; inspect product evidence and analyzer source provenance separately.";
30
+ return {
31
+ requestedFeatureId: options.featureId,
32
+ nextSteps: [
33
+ ...(feature === undefined
34
+ ? [
35
+ "Review the manifest path and declared feature ID with untangle product; a missing boundary has no feature metrics.",
36
+ ]
37
+ : []),
38
+ ...(feature?.code.complete === false
39
+ ? [
40
+ "Resolve missing, unsupported or partial declared files before treating feature complexity as complete.",
41
+ ]
42
+ : []),
43
+ ...(outcomes.length === 0
44
+ ? [
45
+ "External feature evidence is not measured. Inspect untangle extensions list/status; add and enable an analyzer explicitly if needed.",
46
+ ]
47
+ : []),
48
+ ...(status === "unchanged" ? [] : [nextStep]),
49
+ ],
50
+ report: before,
51
+ sourceBinding: {
52
+ status,
53
+ beforeDigest: before.sourceTreeDigest,
54
+ beforeInventory: before.inventory,
55
+ ...(after === undefined
56
+ ? {}
57
+ : {
58
+ afterDigest: after.sourceTreeDigest,
59
+ afterStatus: after.status,
60
+ afterIssues: after.issues,
61
+ afterInventory: after.inventory,
62
+ }),
63
+ ...(before.manifest.contentHash === undefined
64
+ ? {}
65
+ : { beforeManifestHash: before.manifest.contentHash }),
66
+ ...(after?.manifest.contentHash === undefined
67
+ ? {}
68
+ : { afterManifestHash: after.manifest.contentHash }),
69
+ detail: failure === undefined
70
+ ? "Compared accepted local inventories and feature-manifest hashes before own analysis and after external calls. This is not an atomic snapshot or proof of a remote analysis revision."
71
+ : `The final local source check failed: ${failure}`,
72
+ nextStep,
73
+ },
74
+ externalEvidence: outcomes.map(({ extensionId, result }) => {
75
+ const bindings = [
76
+ ...result.measurements.map((measurement, index) => ({
77
+ kind: "measurement",
78
+ index,
79
+ relation: measurement.signal?.scope === "repository"
80
+ ? "repository_context"
81
+ : measurement.signal === undefined || measurement.filePath === undefined
82
+ ? "unscoped"
83
+ : selected.has(measurement.filePath)
84
+ ? "declared_feature_file"
85
+ : "other_file",
86
+ ...(measurement.filePath === undefined ? {} : { filePath: measurement.filePath }),
87
+ ...sharedContext(measurement.filePath),
88
+ })),
89
+ ...result.findings.map((finding, index) => ({
90
+ kind: "finding",
91
+ index,
92
+ relation: selected.has(finding.filePath)
93
+ ? "declared_feature_file"
94
+ : "other_file",
95
+ filePath: finding.filePath,
96
+ ...sharedContext(finding.filePath),
97
+ })),
98
+ ];
99
+ return {
100
+ extensionId,
101
+ runId: result.run.runId,
102
+ status: feature === undefined
103
+ ? "no_feature_boundary"
104
+ : status === "changed"
105
+ ? "source_changed"
106
+ : status === "unverified"
107
+ ? "source_unverified"
108
+ : result.run.exitStatus !== "completed" || bindings.length === 0
109
+ ? "not_measured"
110
+ : "available",
111
+ analyzerSourceIdentity: "not_independently_proven",
112
+ bindings,
113
+ nextStep: bindings.length === 0
114
+ ? "Inspect run errors, skips, output mapping and configured analyzer target; empty output is not a passed feature check."
115
+ : "Use file bindings as declared context only; verify the analyzer project/revision, corpus and metric definition before drawing conclusions.",
116
+ };
117
+ }),
118
+ limitations: [
119
+ "No external measurement is added, compared or attributed as a feature total. Repository measurements remain repository context.",
120
+ "A file binding follows the declared feature map and can belong to several features; it does not prove feature ownership or semantic conformance.",
121
+ "The local digest covers the accepted product inventory, not excluded files or an external server's source revision. Equal request-time inventories do not prove fresh remote measures.",
122
+ "No enabled analyzer or no evidence means not measured, never zero complexity or a passed quality gate.",
123
+ ],
124
+ };
125
+ }
126
+ function unstableInventory(report) {
127
+ return (report.inventory.truncated ||
128
+ report.issues.some((issue) => issue.startsWith("Accepted source") || issue.startsWith("Accepted inventory")));
129
+ }
130
+ export function renderScanFeature(io, context) {
131
+ line(io, "\n# Declared feature — own analysis, responsibility and evidence");
132
+ line(io, formatProductReport(context.report));
133
+ if (context.report.features.length === 0) {
134
+ line(io, `Feature ${context.requestedFeatureId} was not resolved. Review untangle.features.json and run untangle product.`);
135
+ }
136
+ line(io, `Local source binding: ${context.sourceBinding.status}`);
137
+ line(io, ` ${context.sourceBinding.detail}`);
138
+ if (context.sourceBinding.status !== "unchanged")
139
+ line(io, ` Action: ${context.sourceBinding.nextStep}`);
140
+ if (context.externalEvidence.length === 0)
141
+ line(io, "External feature evidence: not measured; inspect untangle extensions list/status and explicitly configure the desired analyzer.");
142
+ for (const evidence of context.externalEvidence) {
143
+ line(io, ` ${evidence.extensionId}: ${evidence.status}; analyzer source identity: ${evidence.analyzerSourceIdentity}`);
144
+ for (const binding of evidence.bindings)
145
+ line(io, ` ${binding.kind}[${binding.index}]: ${binding.relation}${binding.filePath === undefined ? "" : ` — ${binding.filePath}`}`);
146
+ for (const binding of evidence.bindings)
147
+ if (binding.sharedWithFeatures !== undefined)
148
+ line(io, ` Shared file: ${binding.filePath}; features ${binding.sharedWithFeatures.join(", ")}`);
149
+ line(io, ` Action: ${evidence.nextStep}`);
150
+ }
151
+ for (const limitation of context.limitations)
152
+ line(io, `Limit: ${limitation}`);
153
+ for (const nextStep of context.nextSteps)
154
+ line(io, `Action: ${nextStep}`);
155
+ }
156
+ //# sourceMappingURL=feature-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-scan.js","sourceRoot":"","sources":["../../../src/commands/extensions/feature-scan.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAI9D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AA4CpD,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA2B,EAC3B,MAAgC,EAChC,QAAmC,EACnC,UAA+B,uBAAuB;IAEtD,IAAI,KAA2C,CAAC;IAChD,IAAI,OAA2B,CAAC;IAChC,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IACjC,MAAM,OAAO,GACX,KAAK,KAAK,SAAS;QACnB,CAAC,MAAM,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;YACjD,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3F,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,aAAa,GAAG,CAAC,QAA4B,EAAqC,EAAE;QACxF,MAAM,UAAU,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7E,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;IAC5E,CAAC,CAAC;IACF,MAAM,QAAQ,GACZ,2GAA2G,CAAC;IAC9G,OAAO;QACL,kBAAkB,EAAE,OAAO,CAAC,SAAS;QACrC,SAAS,EAAE;YACT,GAAG,CAAC,OAAO,KAAK,SAAS;gBACvB,CAAC,CAAC;oBACE,oHAAoH;iBACrH;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,KAAK,KAAK;gBAClC,CAAC,CAAC;oBACE,wGAAwG;iBACzG;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;gBACvB,CAAC,CAAC;oBACE,sIAAsI;iBACvI;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC9C;QACD,MAAM,EAAE,MAAM;QACd,aAAa,EAAE;YACb,MAAM;YACN,YAAY,EAAE,MAAM,CAAC,gBAAgB;YACrC,eAAe,EAAE,MAAM,CAAC,SAAS;YACjC,GAAG,CAAC,KAAK,KAAK,SAAS;gBACrB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,WAAW,EAAE,KAAK,CAAC,gBAAgB;oBACnC,WAAW,EAAE,KAAK,CAAC,MAAM;oBACzB,WAAW,EAAE,KAAK,CAAC,MAAM;oBACzB,cAAc,EAAE,KAAK,CAAC,SAAS;iBAChC,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS;gBAC3C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACxD,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,KAAK,SAAS;gBAC3C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACtD,MAAM,EACJ,OAAO,KAAK,SAAS;gBACnB,CAAC,CAAC,sLAAsL;gBACxL,CAAC,CAAC,wCAAwC,OAAO,EAAE;YACvD,QAAQ;SACT;QACD,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;YACzD,MAAM,QAAQ,GAA+D;gBAC3E,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBAClD,IAAI,EAAE,aAAsB;oBAC5B,KAAK;oBACL,QAAQ,EACN,WAAW,CAAC,MAAM,EAAE,KAAK,KAAK,YAAY;wBACxC,CAAC,CAAE,oBAA8B;wBACjC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS;4BACtE,CAAC,CAAE,UAAoB;4BACvB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC;gCAClC,CAAC,CAAE,uBAAiC;gCACpC,CAAC,CAAE,YAAsB;oBACjC,GAAG,CAAC,WAAW,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;oBACjF,GAAG,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC;iBACvC,CAAC,CAAC;gBACH,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC1C,IAAI,EAAE,SAAkB;oBACxB,KAAK;oBACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;wBACtC,CAAC,CAAE,uBAAiC;wBACpC,CAAC,CAAE,YAAsB;oBAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;iBACnC,CAAC,CAAC;aACJ,CAAC;YACF,OAAO;gBACL,WAAW;gBACX,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK;gBACvB,MAAM,EACJ,OAAO,KAAK,SAAS;oBACnB,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,MAAM,KAAK,SAAS;wBACpB,CAAC,CAAC,gBAAgB;wBAClB,CAAC,CAAC,MAAM,KAAK,YAAY;4BACvB,CAAC,CAAC,mBAAmB;4BACrB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,KAAK,WAAW,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gCAC9D,CAAC,CAAC,cAAc;gCAChB,CAAC,CAAC,WAAW;gBACvB,sBAAsB,EAAE,0BAA0B;gBAClD,QAAQ;gBACR,QAAQ,EACN,QAAQ,CAAC,MAAM,KAAK,CAAC;oBACnB,CAAC,CAAC,uHAAuH;oBACzH,CAAC,CAAC,4IAA4I;aACnJ,CAAC;QACJ,CAAC,CAAC;QACF,WAAW,EAAE;YACX,iIAAiI;YACjI,kJAAkJ;YAClJ,wLAAwL;YACxL,wGAAwG;SACzG;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAgC;IACzD,OAAO,CACL,MAAM,CAAC,SAAS,CAAC,SAAS;QAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,CACzF,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAM,EAAE,OAA2B;IACnE,IAAI,CAAC,EAAE,EAAE,kEAAkE,CAAC,CAAC;IAC7E,IAAI,CAAC,EAAE,EAAE,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,IAAI,CACF,EAAE,EACF,WAAW,OAAO,CAAC,kBAAkB,4EAA4E,CAClH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,EAAE,EAAE,yBAAyB,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,EAAE,EAAE,KAAK,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,WAAW;QAC9C,IAAI,CAAC,EAAE,EAAE,aAAa,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;QACvC,IAAI,CACF,EAAE,EACF,iIAAiI,CAClI,CAAC;IACJ,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAChD,IAAI,CACF,EAAE,EACF,KAAK,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,MAAM,+BAA+B,QAAQ,CAAC,sBAAsB,EAAE,CAC9G,CAAC;QACF,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ;YACrC,IAAI,CACF,EAAE,EACF,OAAO,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,MAAM,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,CAC9H,CAAC;QACJ,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ;YACrC,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,IAAI,CACF,EAAE,EACF,oBAAoB,OAAO,CAAC,QAAQ,cAAc,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;QACN,IAAI,CAAC,EAAE,EAAE,eAAe,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW;QAAE,IAAI,CAAC,EAAE,EAAE,UAAU,UAAU,EAAE,CAAC,CAAC;IAC/E,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS;QAAE,IAAI,CAAC,EAAE,EAAE,WAAW,QAAQ,EAAE,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { runExtension, type ExtensionHealthV1, type ExtensionRunResultV1, type FileResolutionV1, type LoadedExtensionV1, type ProcessLimitsV1 } from "@untangle-code/extension-runtime";
2
+ import type { ExtensionContextV1 } from "./context.js";
3
+ import type { ExtensionEnvironmentV1 } from "./environment.js";
4
+ import { type ProvisionResultV1 } from "./provision.js";
5
+ /**
6
+ * Warum eine Extension NICHT gelaufen ist — geschlossene Menge (E4).
7
+ *
8
+ * Bewusst NICHT die `SkipReason` des Domains: die beschreibt uebersprungene
9
+ * GEGENSTAENDE einer Pipeline und hat fuer offenes Gate, fehlendes Secret,
10
+ * verweigerte Zustimmung und nicht-aktiviert kein Glied. Diese Menge beschreibt
11
+ * einen nicht stattgefundenen AUFRUF, und sie bleibt lokal, bis ein zweiter
12
+ * Konsument sie braucht.
13
+ */
14
+ export declare const EXTENSION_NOT_RUN_REASONS: readonly ["not_enabled", "license_gate_open", "consent_withheld", "secret_missing", "setup_failed", "provision_failed", "invocation_failed"];
15
+ export type ExtensionNotRunReason = (typeof EXTENSION_NOT_RUN_REASONS)[number];
16
+ export interface ExtensionNotRunV1 {
17
+ status: "not_run";
18
+ extensionId: string;
19
+ reason: ExtensionNotRunReason;
20
+ /** Menschenlesbare Begruendung; nie leer (E4). */
21
+ detail: string;
22
+ /** Der Befehl, der den Zustand aufloesen wuerde, sofern es einen gibt. */
23
+ nextStep?: string;
24
+ }
25
+ export interface ExtensionRanV1 {
26
+ status: "ran";
27
+ extensionId: string;
28
+ health: ExtensionHealthV1;
29
+ result: ExtensionRunResultV1;
30
+ provision?: ProvisionResultV1;
31
+ }
32
+ export type InvokeExtensionOutcome = ExtensionRanV1 | ExtensionNotRunV1;
33
+ export interface InvokeExtensionInput {
34
+ environment: ExtensionEnvironmentV1;
35
+ context: ExtensionContextV1;
36
+ extension: LoadedExtensionV1;
37
+ workspacePath: string;
38
+ target: string;
39
+ ruleset?: string;
40
+ httpUrl?: string;
41
+ limits: ProcessLimitsV1;
42
+ /**
43
+ * Ob eine Container-Bereitstellung erfolgen darf (X1). Ohne sie wird nichts
44
+ * gestartet und nichts gezogen; der Fall erscheint als `consent_withheld`.
45
+ */
46
+ provisionConsent: boolean;
47
+ /** Nur fuer den Fall `not_enabled` — der Aufrufer entscheidet, ob er ihn prueft. */
48
+ requireEnabled?: boolean;
49
+ fetchImpl?: typeof fetch;
50
+ onProvisionStep?: (step: string) => void;
51
+ /** Called after the gate, before provisioning, to disclose resource costs. */
52
+ onProvisionPlanned?: (detail: string) => void;
53
+ signal?: AbortSignal;
54
+ /** Wie ein vom Werkzeug genannter Pfad auf das Repository abgebildet wird. */
55
+ resolveFile: (path: string) => FileResolutionV1;
56
+ /** Wie eine Werkzeugposition in einen Bytebereich uebersetzt wird. */
57
+ resolvePosition: Parameters<typeof runExtension>[1]["resolvePosition"];
58
+ }
59
+ export declare function invokeExtension(input: InvokeExtensionInput): Promise<InvokeExtensionOutcome>;
60
+ //# sourceMappingURL=invoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../src/commands/extensions/invoke.ts"],"names":[],"mappings":"AAKA,OAAO,EAKL,YAAY,EAEZ,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAErB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAI5E;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,8IAQ5B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,sBAAsB,CAAC;IACpC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;IACxB;;;OAGG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oFAAoF;IACpF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8EAA8E;IAC9E,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,CAAC;IAChD,sEAAsE;IACtE,eAAe,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;CACxE;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,sBAAsB,CAAC,CAmBjC"}