@untangle-code/cli 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. package/LICENSE +661 -0
  2. package/NOTICE +90 -0
  3. package/README.md +424 -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,223 @@
1
+ import { enumFlag } from "../cli/args.js";
2
+ import { EXIT, UsageError } from "../cli/exit.js";
3
+ import { runAdd } from "./extensions/add.js";
4
+ import { runConfigure } from "./extensions/configure.js";
5
+ import { runDisable, runEnable } from "./extensions/enable.js";
6
+ import { createExtensionEnvironment } from "./extensions/environment.js";
7
+ import { runList } from "./extensions/list.js";
8
+ import { runLogs } from "./extensions/logs.js";
9
+ import { runRemove } from "./extensions/remove.js";
10
+ import { runRun } from "./extensions/run.js";
11
+ import { runStatus } from "./extensions/status.js";
12
+ const FLAGS = {
13
+ from: {
14
+ kind: "string",
15
+ placeholder: "URL|PATH",
16
+ describe: "add: manifest source. configure: private JSON file containing secret values.",
17
+ },
18
+ digest: {
19
+ kind: "string",
20
+ placeholder: "sha256:HEX",
21
+ describe: "add: expected manifest sha256. Required for a URL.",
22
+ },
23
+ "allow-project-local": {
24
+ kind: "boolean",
25
+ describe: "add: explicitly allow a path inside the project directory.",
26
+ },
27
+ force: {
28
+ kind: "boolean",
29
+ describe: "add: replace an installed extension with the same ID.",
30
+ },
31
+ "acknowledge-license": {
32
+ kind: "boolean",
33
+ describe: "add/enable: acknowledge the tool-license gate, not the ruleset gate.",
34
+ },
35
+ "acknowledge-ruleset": {
36
+ kind: "list",
37
+ placeholder: "ID",
38
+ describe: "add/enable: acknowledge exactly one ruleset. Repeatable.",
39
+ },
40
+ "revoke-license": {
41
+ kind: "boolean",
42
+ describe: "disable/remove: revoke the stored license acknowledgment.",
43
+ },
44
+ category: {
45
+ kind: "string",
46
+ placeholder: "C,...",
47
+ describe: "list: show only extensions in these categories.",
48
+ },
49
+ "enabled-only": {
50
+ kind: "boolean",
51
+ describe: "list: show only enabled extensions.",
52
+ },
53
+ yes: {
54
+ kind: "boolean",
55
+ describe: "run/setup: allow container provisioning and missing-credential setup (X1).",
56
+ },
57
+ tail: {
58
+ kind: "number",
59
+ placeholder: "N",
60
+ describe: "logs: number of trailing lines.",
61
+ defaultLabel: "200",
62
+ },
63
+ "remove-container": {
64
+ kind: "boolean",
65
+ describe: "disable: stop and remove only the owned container, verified by its labels.",
66
+ },
67
+ "remove-volumes": {
68
+ kind: "boolean",
69
+ describe: "disable: also remove named volumes. Destructive.",
70
+ },
71
+ workspace: {
72
+ kind: "string",
73
+ placeholder: "PATH",
74
+ describe: "run: root of the analyzed workspace.",
75
+ defaultLabel: "current directory",
76
+ },
77
+ target: {
78
+ kind: "string",
79
+ placeholder: "PATH",
80
+ describe: "run: analysis target inside the workspace.",
81
+ defaultLabel: "the workspace",
82
+ },
83
+ ruleset: {
84
+ kind: "string",
85
+ placeholder: "NAME",
86
+ describe: "run: effective ruleset; otherwise the manifest's defaultRuleset applies.",
87
+ },
88
+ url: {
89
+ kind: "string",
90
+ placeholder: "URL",
91
+ describe: "run: endpoint for invocation kind `http`.",
92
+ },
93
+ timeout: {
94
+ kind: "number",
95
+ placeholder: "MS",
96
+ describe: "run: execution time budget in milliseconds.",
97
+ defaultLabel: "900000",
98
+ },
99
+ "max-output-bytes": {
100
+ kind: "number",
101
+ placeholder: "N",
102
+ describe: "run: maximum collected tool-output bytes.",
103
+ },
104
+ format: {
105
+ kind: "string",
106
+ placeholder: "text|json",
107
+ describe: "Output format.",
108
+ defaultLabel: "text",
109
+ },
110
+ };
111
+ /**
112
+ * Which flags each subcommand accepts.
113
+ *
114
+ * The parser validates flags against the union above; this table catches the
115
+ * rest. Without it, `untangle extensions list --from=x` would be silently
116
+ * accepted and silently ignored — precisely the kind of quiet skip E4
117
+ * forbids, one layer above the pipeline.
118
+ */
119
+ const ALLOWED_FLAGS = {
120
+ add: [
121
+ "from",
122
+ "digest",
123
+ "allow-project-local",
124
+ "force",
125
+ "acknowledge-license",
126
+ "acknowledge-ruleset",
127
+ "format",
128
+ ],
129
+ list: ["category", "enabled-only", "format"],
130
+ status: ["format"],
131
+ configure: ["from", "format"],
132
+ setup: ["workspace", "url", "timeout", "max-output-bytes", "yes", "format"],
133
+ logs: ["tail", "format"],
134
+ enable: ["acknowledge-license", "acknowledge-ruleset", "format"],
135
+ disable: ["revoke-license", "remove-container", "remove-volumes", "format"],
136
+ remove: ["revoke-license", "format"],
137
+ run: ["workspace", "target", "ruleset", "url", "timeout", "max-output-bytes", "yes", "format"],
138
+ };
139
+ const SUBCOMMANDS = Object.keys(ALLOWED_FLAGS);
140
+ export const extensionsCommand = {
141
+ spec: {
142
+ name: "extensions",
143
+ implementedBy: "commands/extensions.js",
144
+ summary: "Manage and run analyzer extensions",
145
+ usage: "untangle extensions <add|list|status|configure|setup|enable|disable|remove|run|logs> [options]",
146
+ details: [
147
+ "Untangle supplies the extension runtime, manifest schema and format parsers, without bundled tool definitions. A manifest is an external artifact you explicitly load (extensions.md §17, X9). The runtime understands formats (sarif, junit-xml, generic-findings, generic-metrics), not individual tools.",
148
+ "Trust boundary: manifests in the project directory are never loaded automatically. Discovery searches only the user profile (~/.untangle/extensions/<id>/manifest.toml and the OS data directory). A manifest specifies how to launch a program; trusting a cloned project's manifest automatically would allow unrequested execution. `add --from` therefore rejects project-local paths unless --allow-project-local is explicit.",
149
+ "Likewise, `add --from <https-URL>` requires --digest: changing content behind a stable URL could silently change findings. X6 forbids mutable container tags for the same reason.",
150
+ "Installing a manifest starts nothing. `enable` records activation without launching processes or containers (X1). Restrictively licensed tools require explicit personal acknowledgment (X5).",
151
+ "`status` previews the effective pinned image digest, running digest and comparison, license and ruleset gates, endpoint and last run. It neither starts containers nor pulls images (X1); an open gate also prevents version probes (X5).",
152
+ "setup --yes provisions the service, configures missing credentials through the manifest's declared setup process and verifies them with an analysis run. configure creates private secret configuration or imports values with --from. Environment variables take precedence; status creates no tokens.",
153
+ "External tool findings are `ExternalFindingV1`: evidence, never Untangle metrics. They never contribute to complexity values or Risk Score (X3), and never change the exit code.",
154
+ ],
155
+ flags: FLAGS,
156
+ examples: [
157
+ "untangle extensions add --from=./my-analyzer/manifest.toml",
158
+ "untangle extensions add --from=https://example.invalid/manifest.toml --digest=sha256:<64 hex>",
159
+ "untangle extensions list --format=json",
160
+ "untangle extensions status my-analyzer",
161
+ "untangle extensions configure my-analyzer",
162
+ "untangle extensions setup my-analyzer --yes",
163
+ "untangle extensions enable my-analyzer --acknowledge-license",
164
+ "untangle extensions run my-analyzer --target=src --format=json",
165
+ "untangle extensions remove my-analyzer --revoke-license",
166
+ ],
167
+ exitCodes: [
168
+ [EXIT.ok, "The command completed. Findings do not change this code (X3)."],
169
+ [EXIT.operational, "Invalid manifest, missing extension or failed run."],
170
+ [EXIT.usage, "Usage error: unknown subcommand, missing or unsupported option."],
171
+ [
172
+ EXIT.environment,
173
+ "License/ruleset gate is open, or a required secret is missing. Nothing was started.",
174
+ ],
175
+ ],
176
+ },
177
+ async run(ctx, args) {
178
+ const subcommand = args.positionals[0];
179
+ if (subcommand === undefined) {
180
+ throw new UsageError("`untangle extensions` needs a subcommand.", `Choose one of: ${SUBCOMMANDS.join(", ")} — see untangle extensions --help.`);
181
+ }
182
+ const allowed = ALLOWED_FLAGS[subcommand];
183
+ if (allowed === undefined) {
184
+ throw new UsageError(`Unknown subcommand "extensions ${subcommand}".`, `Choose one of: ${SUBCOMMANDS.join(", ")}.`);
185
+ }
186
+ rejectForeignFlags(subcommand, args, allowed);
187
+ const format = enumFlag(args, "format", ["text", "json"], "text");
188
+ const environment = await createExtensionEnvironment({ cwd: ctx.cwd, env: ctx.env });
189
+ switch (subcommand) {
190
+ case "add":
191
+ return await runAdd(environment, args, ctx.io, format);
192
+ case "list":
193
+ return await runList(environment, args, ctx.io, format);
194
+ case "status":
195
+ return await runStatus(environment, args, ctx.io, format);
196
+ case "logs":
197
+ return await runLogs(environment, args, ctx.io, format);
198
+ case "enable":
199
+ return await runEnable(environment, args, ctx.io, format);
200
+ case "disable":
201
+ return await runDisable(environment, args, ctx.io, format);
202
+ case "remove":
203
+ return await runRemove(environment, args, ctx.io, format);
204
+ case "configure":
205
+ return await runConfigure(environment, args, ctx.io, format);
206
+ case "setup":
207
+ case "run":
208
+ return await runRun(environment, args, ctx.io, format, { signal: ctx.signal });
209
+ default:
210
+ throw new UsageError(`Unknown subcommand "extensions ${subcommand}".`, `Choose one of: ${SUBCOMMANDS.join(", ")}.`);
211
+ }
212
+ },
213
+ };
214
+ function rejectForeignFlags(subcommand, args, allowed) {
215
+ const foreign = Object.keys(args.flags)
216
+ .filter((name) => !allowed.includes(name))
217
+ .sort();
218
+ if (foreign.length === 0) {
219
+ return;
220
+ }
221
+ throw new UsageError(`"extensions ${subcommand}" does not accept ${foreign.map((name) => `--${name}`).join(", ")}.`, `Accepted here: ${allowed.map((name) => `--${name}`).join(", ")}.`);
222
+ }
223
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/commands/extensions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "../../cli/command.js";
2
+ export declare const flowCommand: Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/flow/index.ts"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,sBAAsB,CAAC;AA+EpE,eAAO,MAAM,WAAW,EAAE,OA+OzB,CAAC"}
@@ -0,0 +1,295 @@
1
+ /**
2
+ * `untangle flow` — der Symbolgraph als Oberflaeche: wer ruft wen, auf
3
+ * welchem Weg, und wie sicher ist das.
4
+ *
5
+ * Er baut nichts. Er liest den Shard `symbol-graph`, den `untangle index`
6
+ * abgelegt hat, und beantwortet vier Fragen:
7
+ *
8
+ * 1. WEG: Welche Aufrufpfade fuehren von einem Symbol zu einem anderen —
9
+ * der kuerzeste, und alle bis Tiefe N.
10
+ * 2. ANFANG: Welche Symbole sind Einstiegspunkte (WP-88: verwaiste Symbole,
11
+ * konventionelle Namen, Testdateien, Routenverzeichnisse)?
12
+ * 3. SICHERHEIT: Jede Kante auf jedem Weg traegt ihre Aufloesungsart
13
+ * (exact/heuristic/ambiguous/unresolved) und ihre Confidence mit Basis
14
+ * und Signalen. Eine MEHRDEUTIGE Kante zeigt ALLE Kandidaten — es wird
15
+ * keiner ausgewaehlt.
16
+ * 4. WIRKUNG: Welche Symbole sind von einer Aenderung an X betroffen, und
17
+ * wie sicher ist diese Aussage (`--impact`)?
18
+ *
19
+ * DETERMINISMUS: Dieser Befehl gibt den Traversierungen bewusst KEINE
20
+ * Zeitquelle mit. Das Zeitbudget waere die einzige Groesse, die zwei Laeufe
21
+ * ueber denselben Index verschieden ausgehen liesse; Tiefe, Knoten- und
22
+ * Kantenbudget begrenzen die Arbeit ohnehin. Zwei Aufrufe liefern damit
23
+ * dieselbe Ausgabe.
24
+ */
25
+ import path from "node:path";
26
+ import { DEFAULT_TRAVERSAL_LIMITS } from "@untangle-code/file-graph";
27
+ import { analyzeImpact, createSymbolGraphIndex, detectEntryPoints, findAllCallPaths, findShortestCallPath, } from "@untangle-code/symbol-graph";
28
+ import { boolFlag, enumFlag, integerFlag, numberFlag, stringFlag, } from "../../cli/args.js";
29
+ import { EXIT, EnvironmentError, OperationalError, UsageError } from "../../cli/exit.js";
30
+ import { loadGraphs } from "../../cli/graphs.js";
31
+ import { line, note } from "../../cli/io.js";
32
+ import { renderIssues } from "../graph/render.js";
33
+ import { DEFAULT_FLOW_DEPTH, DEFAULT_FLOW_RESULT_LIMIT, MAX_FLOW_DEPTH, MAX_FLOW_EDGES, MAX_FLOW_NODES, MAX_FLOW_RESULT_LIMIT, } from "./limits.js";
34
+ import { limitItems } from "./output.js";
35
+ import { renderAllPaths, renderEntryPoints, renderImpact, renderShortest, renderSymbolGraphHeader, renderSymbolOverview, } from "./render.js";
36
+ import { describeSymbol, selectSymbolNode } from "./select.js";
37
+ const FLAGS = {
38
+ root: {
39
+ kind: "string",
40
+ placeholder: "PATH",
41
+ describe: "Project directory; configuration is discovered from here.",
42
+ defaultLabel: "current directory",
43
+ },
44
+ depth: {
45
+ kind: "number",
46
+ placeholder: "N",
47
+ describe: "Maximum path length or impact-analysis depth.",
48
+ defaultLabel: String(DEFAULT_FLOW_DEPTH),
49
+ },
50
+ limit: {
51
+ kind: "number",
52
+ alias: "n",
53
+ placeholder: "N",
54
+ describe: "Maximum number of displayed paths, entry points or affected symbols.",
55
+ defaultLabel: String(DEFAULT_FLOW_RESULT_LIMIT),
56
+ },
57
+ "entry-points": {
58
+ kind: "boolean",
59
+ describe: "List entry points instead of searching paths (heuristic, with evidence).",
60
+ },
61
+ impact: {
62
+ kind: "boolean",
63
+ describe: "Impact analysis: which symbols depend on the selected symbol.",
64
+ },
65
+ "min-confidence": {
66
+ kind: "number",
67
+ placeholder: "X",
68
+ describe: "Minimum path confidence for --impact; excluded paths remain reported.",
69
+ defaultLabel: "0",
70
+ },
71
+ "max-nodes": {
72
+ kind: "number",
73
+ placeholder: "N",
74
+ describe: "Traversal node budget.",
75
+ defaultLabel: String(DEFAULT_TRAVERSAL_LIMITS.maxNodes),
76
+ },
77
+ "max-edges": {
78
+ kind: "number",
79
+ placeholder: "N",
80
+ describe: "Traversal edge budget.",
81
+ defaultLabel: String(DEFAULT_TRAVERSAL_LIMITS.maxEdges),
82
+ },
83
+ format: {
84
+ kind: "string",
85
+ placeholder: "text|json",
86
+ describe: "Output format. json contains the same information in machine-readable form.",
87
+ defaultLabel: "text",
88
+ },
89
+ };
90
+ export const flowCommand = {
91
+ spec: {
92
+ name: "flow",
93
+ implementedBy: "commands/flow/index.js",
94
+ summary: "Show call paths between symbols",
95
+ usage: "untangle flow <from> [<to>] | untangle flow --entry-points | untangle flow <symbol> --impact",
96
+ details: [
97
+ "Three forms: `flow <from> <to>` finds call paths, including the shortest and all paths up to depth N. `flow <symbol>` shows its callers and callees. `flow <symbol> --impact` identifies dependent symbols and the confidence of each relationship.",
98
+ "`--entry-points` lists detected entry points: orphan symbols, conventional start names, test symbols and symbols in route directories. Detection is heuristic; each entry includes its evidence and individual weights.",
99
+ "Every edge includes its resolution and confidence: exact (proven), heuristic (plausible), ambiguous (multiple candidates), unresolved (no target, with a reason). Ambiguous edges show all weighted candidates without selecting one.",
100
+ "A name matching multiple symbols is never guessed: candidates are shown with file and line, and the command exits with code 2. Use `path/file.ts:name` or a qualified name to select one.",
101
+ "Reads the stored graph. A missing graph produces exit code 4 and points to `untangle index`; it never claims there are no calls.",
102
+ ],
103
+ flags: FLAGS,
104
+ examples: [
105
+ "untangle flow --entry-points",
106
+ "untangle flow main calculateDiscount",
107
+ "untangle flow services/api/src/orders.ts:calculateDiscount --impact",
108
+ "untangle flow calculateDiscount --format=json",
109
+ ],
110
+ exitCodes: [
111
+ [EXIT.ok, "The symbol graph was read and displayed."],
112
+ [EXIT.operational, "Operational error, or the selected symbol is absent from the graph."],
113
+ [EXIT.usage, "Usage error, or an ambiguous symbol name."],
114
+ [EXIT.environment, "No symbol graph is available; run `untangle index`."],
115
+ ],
116
+ },
117
+ async run(ctx, args) {
118
+ const format = enumFlag(args, "format", ["text", "json"], "text");
119
+ const depth = integerFlag(args, "depth", DEFAULT_FLOW_DEPTH);
120
+ if (depth < 1 || depth > MAX_FLOW_DEPTH) {
121
+ throw new UsageError(`Option "--depth" requires 1 to ${String(MAX_FLOW_DEPTH)}; received "${String(depth)}".`, "Example: --depth=6");
122
+ }
123
+ const limit = integerFlag(args, "limit", DEFAULT_FLOW_RESULT_LIMIT);
124
+ if (limit < 1 || limit > MAX_FLOW_RESULT_LIMIT) {
125
+ throw new UsageError(`Option "--limit" requires 1 to ${String(MAX_FLOW_RESULT_LIMIT)}; received "${String(limit)}".`, "Example: --limit=20");
126
+ }
127
+ const maxNodes = integerFlag(args, "max-nodes", DEFAULT_TRAVERSAL_LIMITS.maxNodes);
128
+ if (maxNodes < 1 || maxNodes > MAX_FLOW_NODES) {
129
+ throw new UsageError(`Option "--max-nodes" requires 1 to ${String(MAX_FLOW_NODES)}; received "${String(maxNodes)}".`, `Example: --max-nodes=${String(DEFAULT_TRAVERSAL_LIMITS.maxNodes)}`);
130
+ }
131
+ const maxEdges = integerFlag(args, "max-edges", DEFAULT_TRAVERSAL_LIMITS.maxEdges);
132
+ if (maxEdges < 1 || maxEdges > MAX_FLOW_EDGES) {
133
+ throw new UsageError(`Option "--max-edges" requires 1 to ${String(MAX_FLOW_EDGES)}; received "${String(maxEdges)}".`, `Example: --max-edges=${String(DEFAULT_TRAVERSAL_LIMITS.maxEdges)}`);
134
+ }
135
+ const wantEntryPoints = boolFlag(args, "entry-points");
136
+ const wantImpact = boolFlag(args, "impact");
137
+ const minConfidence = numberFlag(args, "min-confidence") ?? 0;
138
+ if (minConfidence < 0 || minConfidence > 1) {
139
+ throw new UsageError(`Option "--min-confidence" requires a value in [0, 1]; received "${String(minConfidence)}".`, "Example: --min-confidence=0.5");
140
+ }
141
+ const rootFlag = stringFlag(args, "root");
142
+ const positionals = args.positionals;
143
+ if (!wantEntryPoints && positionals.length === 0) {
144
+ throw new UsageError("A symbol is required.", "Use `untangle flow <from> <to>`, `untangle flow <symbol> [--impact]`, or `untangle flow --entry-points`.");
145
+ }
146
+ if (wantEntryPoints && positionals.length > 0) {
147
+ throw new UsageError("`--entry-points` lists the entire graph and does not accept a symbol.", "Omit the argument, or query a symbol without --entry-points.");
148
+ }
149
+ if (positionals.length > 2) {
150
+ throw new UsageError(`Expected at most two symbols; received ${String(positionals.length)}.`, "Use `untangle flow <from> <to>`.");
151
+ }
152
+ if (wantImpact && positionals.length === 2) {
153
+ throw new UsageError("`--impact` examines the impact of one symbol, not a path between two symbols.", "Omit the second symbol, or query the path without --impact.");
154
+ }
155
+ const loaded = await loadGraphs({
156
+ cwd: ctx.cwd,
157
+ env: ctx.env,
158
+ signal: ctx.signal,
159
+ ...(rootFlag === undefined ? {} : { root: path.resolve(ctx.cwd, rootFlag) }),
160
+ });
161
+ for (const issue of renderIssues(loaded.issues))
162
+ note(ctx.io, issue);
163
+ const symbolGraph = requireSymbolGraph(loaded);
164
+ const index = createSymbolGraphIndex(symbolGraph.graph);
165
+ const limits = {
166
+ maxDepth: depth,
167
+ maxNodes,
168
+ maxEdges,
169
+ maxWallTimeMs: DEFAULT_TRAVERSAL_LIMITS.maxWallTimeMs,
170
+ };
171
+ const header = renderSymbolGraphHeader(index, loaded.generationId, symbolGraph.ledgerInShard);
172
+ /* --------------------------- Einstiegspunkte ---------------------- */
173
+ if (wantEntryPoints) {
174
+ const set = detectEntryPoints(index);
175
+ if (format === "json") {
176
+ line(ctx.io, JSON.stringify({ generationId: loaded.generationId, entryPoints: set }, null, 2));
177
+ return EXIT.ok;
178
+ }
179
+ for (const text of [...header, "", ...renderEntryPoints(set, limit)])
180
+ line(ctx.io, text);
181
+ return EXIT.ok;
182
+ }
183
+ const from = resolveSymbol(index, positionals[0]);
184
+ /* ------------------------------ Wirkung --------------------------- */
185
+ if (wantImpact) {
186
+ const result = analyzeImpact(index, {
187
+ rootSymbolIds: [from.id],
188
+ limits,
189
+ minConfidence,
190
+ });
191
+ if (format === "json") {
192
+ const affected = limitItems(result.affected, limit);
193
+ line(ctx.io, JSON.stringify({
194
+ generationId: loaded.generationId,
195
+ root: from,
196
+ impact: { ...result, affected: affected.items },
197
+ truncated: affected.truncated,
198
+ omittedCount: affected.omittedCount,
199
+ }, null, 2));
200
+ return EXIT.ok;
201
+ }
202
+ for (const text of [
203
+ ...header,
204
+ "",
205
+ `IMPACT OF A CHANGE TO ${describeSymbol(from)}`,
206
+ "",
207
+ ...renderImpact(index, result, limit),
208
+ ]) {
209
+ line(ctx.io, text);
210
+ }
211
+ return EXIT.ok;
212
+ }
213
+ /* --------------------------- Einzelnes Symbol --------------------- */
214
+ if (positionals.length === 1) {
215
+ if (format === "json") {
216
+ const outgoing = limitItems(index.outgoingEdges(from.id), limit);
217
+ const callers = limitItems(index.callers(from.id), limit);
218
+ const omittedCount = outgoing.omittedCount + callers.omittedCount;
219
+ line(ctx.io, JSON.stringify({
220
+ generationId: loaded.generationId,
221
+ symbol: from,
222
+ outgoing: outgoing.items,
223
+ callers: callers.items,
224
+ truncated: omittedCount > 0,
225
+ omittedCount,
226
+ }, null, 2));
227
+ return EXIT.ok;
228
+ }
229
+ for (const text of [...header, "", ...renderSymbolOverview(index, from)])
230
+ line(ctx.io, text);
231
+ return EXIT.ok;
232
+ }
233
+ /* ------------------------------- Pfade ---------------------------- */
234
+ const to = resolveSymbol(index, positionals[1]);
235
+ const shortest = findShortestCallPath(index, {
236
+ fromSymbolId: from.id,
237
+ toSymbolId: to.id,
238
+ limits,
239
+ });
240
+ const all = findAllCallPaths(index, {
241
+ fromSymbolId: from.id,
242
+ toSymbolId: to.id,
243
+ maxDepth: depth,
244
+ maxPaths: limit,
245
+ maxNodes,
246
+ maxEdges,
247
+ });
248
+ if (format === "json") {
249
+ line(ctx.io, JSON.stringify({ generationId: loaded.generationId, from, to, shortest, all }, null, 2));
250
+ return EXIT.ok;
251
+ }
252
+ for (const text of [
253
+ ...header,
254
+ "",
255
+ `VON ${describeSymbol(from)}`,
256
+ `TO ${describeSymbol(to)}`,
257
+ "",
258
+ // `false`: siehe Kopfkommentar — dieser Befehl gibt der Suche keine
259
+ // Zeitquelle, das Zeitbudget ist also nicht durchgesetzt und sagt das.
260
+ ...renderShortest(index, shortest, false),
261
+ "",
262
+ ...renderAllPaths(index, all),
263
+ ]) {
264
+ line(ctx.io, text);
265
+ }
266
+ return EXIT.ok;
267
+ },
268
+ };
269
+ /* ------------------------------------------------------------------ */
270
+ function requireSymbolGraph(loaded) {
271
+ if (loaded.symbolGraph !== null)
272
+ return loaded.symbolGraph;
273
+ throw new EnvironmentError(`No symbol graph is available: ${loaded.symbolGraphMissingReason ?? "no reason given"} ` +
274
+ "Nothing was searched; this does not mean there are no calls.", "Run `untangle index` to store the symbol-graph shard.");
275
+ }
276
+ /**
277
+ * Das Symbol zur Nutzereingabe — oder ein Abbruch, der die Kandidaten nennt.
278
+ * Geraten wird nie (architecture.md §17.2 gilt auch fuer die Oberflaeche).
279
+ */
280
+ function resolveSymbol(index, query) {
281
+ const selection = selectSymbolNode(index.nodes(), query);
282
+ if (selection.status === "found")
283
+ return selection.node;
284
+ if (selection.status === "ambiguous") {
285
+ const list = selection.candidates.map((node) => `\n ${describeSymbol(node)}`).join("");
286
+ throw new UsageError(`"${query}" matches ${String(selection.candidates.length)} symbols (${selection.matchedBy}) — ` +
287
+ `no candidate is selected:${list}`, "Select one using `path/file.ts:name` or the qualified name.");
288
+ }
289
+ const near = selection.near.length === 0
290
+ ? ""
291
+ : ` Similar names: ${selection.near.map((node) => node.qualifiedName).join(", ")}.`;
292
+ throw new OperationalError(`Symbol "${query}" is absent from the symbol graph. Nothing was evaluated; ` +
293
+ `this does not mean there are no calls.${near}`, "Check the name or run `untangle index` again. `untangle flow --entry-points` lists known symbols.");
294
+ }
295
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/flow/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /** Public CLI/MCP resource ceilings for symbol-graph reads. */
2
+ export declare const DEFAULT_FLOW_DEPTH = 6;
3
+ export declare const MAX_FLOW_DEPTH = 64;
4
+ export declare const DEFAULT_FLOW_RESULT_LIMIT = 20;
5
+ export declare const MAX_FLOW_RESULT_LIMIT = 1000;
6
+ export declare const MAX_FLOW_NODES: number;
7
+ export declare const MAX_FLOW_EDGES: number;
8
+ /** MCP graph queries deliberately expose the bounded neighborhood form only. */
9
+ export declare const MAX_GRAPH_QUERY_DEPTH: number;
10
+ export declare const MAX_GRAPH_QUERY_NODES: number;
11
+ export declare const MAX_GRAPH_QUERY_EDGES: number;
12
+ //# sourceMappingURL=limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../../src/commands/flow/limits.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAC3C,eAAO,MAAM,cAAc,QAAoC,CAAC;AAChE,eAAO,MAAM,cAAc,QAAoC,CAAC;AAEhE,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,QAAoC,CAAC;AACvE,eAAO,MAAM,qBAAqB,QAAoC,CAAC;AACvE,eAAO,MAAM,qBAAqB,QAAoC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { DEFAULT_TRAVERSAL_LIMITS } from "@untangle-code/file-graph";
2
+ /** Public CLI/MCP resource ceilings for symbol-graph reads. */
3
+ export const DEFAULT_FLOW_DEPTH = 6;
4
+ export const MAX_FLOW_DEPTH = 64;
5
+ export const DEFAULT_FLOW_RESULT_LIMIT = 20;
6
+ export const MAX_FLOW_RESULT_LIMIT = 1_000;
7
+ export const MAX_FLOW_NODES = DEFAULT_TRAVERSAL_LIMITS.maxNodes;
8
+ export const MAX_FLOW_EDGES = DEFAULT_TRAVERSAL_LIMITS.maxEdges;
9
+ /** MCP graph queries deliberately expose the bounded neighborhood form only. */
10
+ export const MAX_GRAPH_QUERY_DEPTH = DEFAULT_TRAVERSAL_LIMITS.maxDepth;
11
+ export const MAX_GRAPH_QUERY_NODES = DEFAULT_TRAVERSAL_LIMITS.maxNodes;
12
+ export const MAX_GRAPH_QUERY_EDGES = DEFAULT_TRAVERSAL_LIMITS.maxEdges;
13
+ //# sourceMappingURL=limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../src/commands/flow/limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AAChE,MAAM,CAAC,MAAM,cAAc,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AAEhE,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,QAAQ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface LimitedItems<T> {
2
+ items: T[];
3
+ truncated: boolean;
4
+ omittedCount: number;
5
+ }
6
+ /** Bounded presentation helper shared by text-independent JSON surfaces. */
7
+ export declare function limitItems<T>(items: readonly T[], limit: number): LimitedItems<T>;
8
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/commands/flow/output.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAQjF"}
@@ -0,0 +1,11 @@
1
+ /** Bounded presentation helper shared by text-independent JSON surfaces. */
2
+ export function limitItems(items, limit) {
3
+ const boundedLimit = Math.max(0, Math.floor(limit));
4
+ const omittedCount = Math.max(0, items.length - boundedLimit);
5
+ return {
6
+ items: items.slice(0, boundedLimit),
7
+ truncated: omittedCount > 0,
8
+ omittedCount,
9
+ };
10
+ }
11
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/commands/flow/output.ts"],"names":[],"mappings":"AAMA,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAI,KAAmB,EAAE,KAAa;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;IAC9D,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;QACnC,SAAS,EAAE,YAAY,GAAG,CAAC;QAC3B,YAAY;KACb,CAAC;AACJ,CAAC"}