@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,515 @@
1
+ /** Opt-in onboarding offers. The extension runtime still consumes formats, not vendors. */
2
+ import { createHash } from "node:crypto";
3
+ import path from "node:path";
4
+ import { UsageError } from "../../cli/exit.js";
5
+ export const SONAR_IMAGE = "sonarqube@sha256:f95aaa9016dd4e92c7d70691167a6d96dbb5d8acffd61eba1cb4335d364a7840";
6
+ export const SENTRUX_VERSION = "0.5.7";
7
+ const OFFERS = [
8
+ {
9
+ id: "local-search",
10
+ label: "Local search — Qdrant and Ollama",
11
+ description: "Prepare or start isolated loopback-only search services and explicitly pull the default nomic embedding model. No index is built automatically.",
12
+ documentation: "https://github.com/lboel/untangle/blob/main/docker/README.md",
13
+ licenseSummary: "Qdrant: Apache-2.0; Ollama: MIT; review the selected embedding model's license.",
14
+ requiresLicenseAcknowledgment: false,
15
+ },
16
+ {
17
+ id: "sonarqube-local",
18
+ label: "SonarQube — local Docker installation",
19
+ description: "Prepare or start a pinned, loopback-only evaluation server (4 GB RAM and 2 cores starting point). Account, project and scanner setup remain explicit; installing the server does not analyze code.",
20
+ documentation: "https://hub.docker.com/_/sonarqube/",
21
+ licenseSummary: "Community server: LGPL-3.0; included analyzers can have additional, edition-specific terms. Review the selected distribution before starting it.",
22
+ requiresLicenseAcknowledgment: true,
23
+ },
24
+ {
25
+ id: "sonarqube-existing",
26
+ label: "SonarQube — existing project metrics",
27
+ description: "Generate a declarative HTTP extension for an existing analyzed project. Remote metrics remain external evidence; source freshness is not inferred.",
28
+ documentation: "https://docs.sonarsource.com/sonarqube-server/extension-guide/web-api",
29
+ licenseSummary: "Review the server edition and analyzer terms before using the service.",
30
+ requiresLicenseAcknowledgment: true,
31
+ },
32
+ {
33
+ id: "sentrux",
34
+ label: "Sentrux — project-local binary and MCP template",
35
+ description: "Install a hash-verified release binary below .untangle/tools and prepare its documented MCP configuration. This is a separate MCP tool, not a normalized Untangle metric adapter.",
36
+ documentation: "https://sentrux.dev/docs/installation/",
37
+ licenseSummary: "The public repository declares MIT; verify the chosen release terms.",
38
+ requiresLicenseAcknowledgment: false,
39
+ },
40
+ {
41
+ id: "custom",
42
+ label: "Other analyzer — trusted extension manifest",
43
+ description: "Explicitly import a manifest for SARIF, JUnit XML, generic findings or generic metrics. The existing source-digest, project-trust and license gates remain active.",
44
+ documentation: "https://github.com/lboel/untangle/blob/main/extensions.md",
45
+ licenseSummary: "Declared by the supplied manifest; restricted licenses need explicit acknowledgment.",
46
+ requiresLicenseAcknowledgment: false,
47
+ },
48
+ ];
49
+ export function integrationCatalog() {
50
+ return OFFERS.map((offer) => ({ ...offer }));
51
+ }
52
+ const RELEASES = {
53
+ "darwin:arm64": {
54
+ artifact: "sentrux-darwin-arm64",
55
+ sha256: "30ae1a44d4478adf294019fce6d65ce5686c25bc863eb715b320c5234927f6c2",
56
+ },
57
+ "linux:arm64": {
58
+ artifact: "sentrux-linux-aarch64",
59
+ sha256: "27e1b4a3e4716b341dd76e9736a5553c6737c24e165cc27e0dbc399cc5b4d786",
60
+ },
61
+ "linux:x64": {
62
+ artifact: "sentrux-linux-x86_64",
63
+ sha256: "3237f80fe20d54aad4deefa8a143f0d60543bb5d2d6ad891eb42432f155725a6",
64
+ },
65
+ "win32:x64": {
66
+ artifact: "sentrux-windows-x86_64.exe",
67
+ sha256: "40dd2e47804bf9f006015eb742abfe178a824f42d4a19eb00478a7d705697cac",
68
+ },
69
+ };
70
+ const json = (value) => `${JSON.stringify(value, null, 2)}\n`;
71
+ const quote = (value) => JSON.stringify(value);
72
+ function safeEndpoint(raw) {
73
+ let endpoint;
74
+ try {
75
+ endpoint = new URL(raw);
76
+ }
77
+ catch {
78
+ throw new UsageError("The analyzer endpoint must be an absolute HTTP(S) URL.");
79
+ }
80
+ if (!["http:", "https:"].includes(endpoint.protocol) ||
81
+ endpoint.username !== "" ||
82
+ endpoint.password !== "" ||
83
+ endpoint.search !== "" ||
84
+ endpoint.hash !== "") {
85
+ throw new UsageError("Analyzer URLs cannot contain credentials, query parameters or fragments.");
86
+ }
87
+ return endpoint.href.replace(/\/$/u, "");
88
+ }
89
+ function sonarManifest(endpoint, key, tokenEnvVar) {
90
+ const local = ["localhost", "127.0.0.1", "[::1]"].includes(new URL(endpoint).hostname);
91
+ return [
92
+ "# Generated only after an explicit init integration selection.",
93
+ "# Reads prior remote analysis, not the current local source revision.",
94
+ "schemaVersion = 1",
95
+ 'id = "sonarqube"',
96
+ 'displayName = "SonarQube project metrics"',
97
+ 'category = "quality-platform"',
98
+ 'invocation = ["http"]',
99
+ "languages = []",
100
+ 'outputFormat = "generic-metrics"',
101
+ `networkAccess = ${quote(local ? "loopback" : "internet")}`,
102
+ 'networkJustification = "Explicitly selected server endpoint; reads existing project metrics."',
103
+ "requiresLicenseAcknowledgment = true",
104
+ "",
105
+ "[http]",
106
+ `defaultUrl = ${quote(endpoint)}`,
107
+ 'authSecretName = "token"',
108
+ `analyzePath = ${quote(`/api/measures/component?component=${encodeURIComponent(key)}&metricKeys=cognitive_complexity%2Ccomplexity%2Cncloc%2Cduplicated_lines_density`)}`,
109
+ 'analyzeMethod = "GET"',
110
+ "",
111
+ "[resources]",
112
+ "minMemoryMb = 1",
113
+ "recommendedMemoryMb = 16",
114
+ "recommendedCpus = 1",
115
+ "",
116
+ "[license]",
117
+ 'spdxId = "NOASSERTION"',
118
+ 'usageRestriction = "restricted"',
119
+ 'restrictionSummary = "Review the selected server edition and analyzer terms."',
120
+ 'url = "https://www.sonarsource.com/legal/"',
121
+ "",
122
+ "[[secrets]]",
123
+ 'name = "token"',
124
+ `envVar = ${quote(tokenEnvVar)}`,
125
+ "required = true",
126
+ 'purpose = "Read existing project metrics; never saved in project configuration."',
127
+ "",
128
+ "[outputMapping]",
129
+ 'container = "component.measures"',
130
+ 'key = "metric"',
131
+ 'value = "value"',
132
+ "",
133
+ "[telemetry]",
134
+ "sendsTelemetry = true",
135
+ "disabledByDefault = false",
136
+ "",
137
+ ].join("\n");
138
+ }
139
+ function sonarItem(root, selection) {
140
+ const isLocal = selection.id === "sonarqube-local";
141
+ const endpoint = safeEndpoint(selection.endpoint ?? "http://127.0.0.1:19000");
142
+ if (isLocal && endpoint !== "http://127.0.0.1:19000") {
143
+ throw new UsageError("The local installation uses http://127.0.0.1:19000; select an existing server for another endpoint.");
144
+ }
145
+ const tokenEnvVar = selection.tokenEnvVar ?? "UNTANGLE_EXT_SONAR_TOKEN";
146
+ if (!/^[A-Z_][A-Z0-9_]*$/u.test(tokenEnvVar)) {
147
+ throw new UsageError("Enter an environment-variable NAME, not a token value.");
148
+ }
149
+ const key = selection.projectKey?.trim();
150
+ const offer = OFFERS.find((candidate) => candidate.id === selection.id);
151
+ const folder = `.untangle/setup/integrations/${selection.id}`;
152
+ const files = [
153
+ {
154
+ relativePath: `${folder}/connection.json`,
155
+ content: json({
156
+ schemaVersion: 1,
157
+ endpoint,
158
+ projectKey: key,
159
+ tokenEnvVar,
160
+ remoteSourceFreshness: "not_verified",
161
+ scannerRun: "not_started",
162
+ }),
163
+ },
164
+ ];
165
+ const commands = [];
166
+ let projectName;
167
+ if (isLocal) {
168
+ projectName = `untangle-init-sonar-${createHash("sha256").update(root).digest("hex").slice(0, 16)}`;
169
+ const composeFile = path.join(root, folder, "compose.yml");
170
+ files.push({
171
+ relativePath: `${folder}/compose.yml`,
172
+ content: [
173
+ "# Local evaluation server. Embedded H2 is not a production database.",
174
+ "services:",
175
+ " quality:",
176
+ ` image: ${SONAR_IMAGE}`,
177
+ " ports:",
178
+ ' - "127.0.0.1:19000:9000"',
179
+ " privileged: false",
180
+ " cap_drop: [ALL]",
181
+ " security_opt: [no-new-privileges:true]",
182
+ " environment:",
183
+ ' SONAR_TELEMETRY_ENABLE: "false"',
184
+ " labels:",
185
+ ' dev.untangle.init-managed: "true"',
186
+ ` dev.untangle.init-project: ${quote(projectName)}`,
187
+ " volumes:",
188
+ " - data:/opt/sonarqube/data",
189
+ " - logs:/opt/sonarqube/logs",
190
+ " - extensions:/opt/sonarqube/extensions",
191
+ "volumes:",
192
+ " data: {}",
193
+ " logs: {}",
194
+ " extensions: {}",
195
+ "",
196
+ ].join("\n"),
197
+ });
198
+ commands.push({
199
+ command: "docker",
200
+ args: ["compose", "-p", projectName, "-f", composeFile, "up", "--detach"],
201
+ kind: "process",
202
+ purpose: "Download and start the pinned local evaluation server; no source is uploaded.",
203
+ });
204
+ }
205
+ if (key !== undefined && key !== "") {
206
+ const manifest = path.join(root, folder, "manifest.toml");
207
+ files.push({
208
+ relativePath: `${folder}/manifest.toml`,
209
+ content: sonarManifest(endpoint, key, tokenEnvVar),
210
+ });
211
+ commands.push({
212
+ command: "untangle",
213
+ args: [
214
+ "extensions",
215
+ "add",
216
+ `--from=${manifest}`,
217
+ "--allow-project-local",
218
+ "--acknowledge-license",
219
+ ],
220
+ kind: "extension",
221
+ purpose: "Import the explicitly selected generated manifest into the user extension profile.",
222
+ }, {
223
+ command: "untangle",
224
+ args: ["extensions", "enable", "sonarqube", "--acknowledge-license"],
225
+ kind: "extension",
226
+ purpose: "Enable the manifest; this does not run a scanner.",
227
+ });
228
+ if (!isLocal) {
229
+ commands.push({
230
+ command: "untangle",
231
+ args: [
232
+ "extensions",
233
+ "run",
234
+ "sonarqube",
235
+ `--workspace=${root}`,
236
+ "--timeout=30000",
237
+ "--max-output-bytes=4194304",
238
+ ],
239
+ kind: "extension",
240
+ purpose: "Read and validate existing numeric project metrics using the configured token environment variable. This does not launch a scanner or verify remote source freshness.",
241
+ });
242
+ }
243
+ }
244
+ return {
245
+ id: selection.id,
246
+ label: offer.label,
247
+ files,
248
+ commands,
249
+ downloads: [],
250
+ licenseAcknowledged: selection.acknowledgeLicense === true,
251
+ ...(projectName === undefined ? {} : { projectName }),
252
+ blockers: selection.acknowledgeLicense === true ? [] : [offer.licenseSummary],
253
+ nextSteps: [
254
+ ...(isLocal
255
+ ? [
256
+ `Open ${endpoint}, finish account/password setup, create the selected project and run its scanner. This starts an evaluation server only.`,
257
+ ]
258
+ : []),
259
+ ...(key === undefined || key === ""
260
+ ? ["Supply a real project key to generate the metrics manifest."]
261
+ : []),
262
+ `Set ${tokenEnvVar} in your shell or private user credential store; never put its value in the project.`,
263
+ "Run untangle extensions run sonarqube --format=json after a successful scanner run. Remote source freshness remains unverified.",
264
+ ],
265
+ };
266
+ }
267
+ function sentruxItem(root, platform, arch) {
268
+ const release = RELEASES[`${platform}:${arch}`];
269
+ const relativeBinary = `.untangle/tools/sentrux/${SENTRUX_VERSION}/sentrux${platform === "win32" ? ".exe" : ""}`;
270
+ const binary = path.join(root, relativeBinary);
271
+ return {
272
+ id: "sentrux",
273
+ label: "Sentrux — project-local binary and MCP template",
274
+ licenseAcknowledged: true,
275
+ files: [
276
+ {
277
+ relativePath: ".untangle/setup/integrations/sentrux/mcp.json",
278
+ content: json({ mcpServers: { sentrux: { command: binary, args: ["--mcp"] } } }),
279
+ },
280
+ ],
281
+ commands: [
282
+ {
283
+ command: binary,
284
+ args: ["--version"],
285
+ kind: "process",
286
+ purpose: "Verify the installed binary. No project scan or host configuration changes.",
287
+ },
288
+ ],
289
+ downloads: release === undefined
290
+ ? []
291
+ : [
292
+ {
293
+ url: `https://github.com/sentrux/sentrux/releases/download/v${SENTRUX_VERSION}/${release.artifact}`,
294
+ sha256: release.sha256,
295
+ relativePath: relativeBinary,
296
+ maxBytes: 64 * 1024 * 1024,
297
+ },
298
+ ],
299
+ blockers: release === undefined
300
+ ? [
301
+ `No verified ${platform}/${arch} release is offered; use the official source-build instructions.`,
302
+ ]
303
+ : [],
304
+ nextSteps: [
305
+ "Explicitly add the generated MCP entry to your host, then use Sentrux's own scan/check tools. No normalized Untangle adapter is claimed.",
306
+ "Review https://sentrux.dev/docs/installation/ before installing the pinned release.",
307
+ ],
308
+ };
309
+ }
310
+ function customItem(root, selection) {
311
+ const source = selection.manifestPath?.trim();
312
+ if (source !== undefined && source.includes("://")) {
313
+ const endpoint = safeEndpoint(source);
314
+ if (!endpoint.startsWith("https://") || selection.manifestDigest === undefined) {
315
+ throw new UsageError("Remote manifests need HTTPS and an independently verified sha256 digest.");
316
+ }
317
+ }
318
+ if (selection.manifestDigest !== undefined &&
319
+ !/^sha256:[a-f0-9]{64}$/u.test(selection.manifestDigest)) {
320
+ throw new UsageError("The manifest digest must be sha256:<64 lowercase hex>.");
321
+ }
322
+ const args = source === undefined || source === ""
323
+ ? []
324
+ : [
325
+ "add",
326
+ `--from=${source.includes("://") ? source : path.resolve(root, source)}`,
327
+ ...(selection.manifestDigest === undefined
328
+ ? []
329
+ : [`--digest=${selection.manifestDigest}`]),
330
+ ...(selection.allowProjectLocal === true ? ["--allow-project-local"] : []),
331
+ ...(selection.acknowledgeLicense === true ? ["--acknowledge-license"] : []),
332
+ ];
333
+ return {
334
+ id: "custom",
335
+ label: "Other analyzer — trusted extension manifest",
336
+ licenseAcknowledged: selection.acknowledgeLicense === true,
337
+ files: [
338
+ {
339
+ relativePath: ".untangle/setup/integrations/custom/selection.json",
340
+ content: json({
341
+ schemaVersion: 1,
342
+ manifestSource: source,
343
+ expectedDigest: selection.manifestDigest,
344
+ allowProjectLocal: selection.allowProjectLocal === true,
345
+ formats: ["sarif", "junit-xml", "generic-findings", "generic-metrics"],
346
+ }),
347
+ },
348
+ ],
349
+ commands: args.length === 0
350
+ ? []
351
+ : [
352
+ {
353
+ command: "untangle",
354
+ args: ["extensions", ...args],
355
+ kind: "extension",
356
+ purpose: "Import the explicit manifest through the existing trust, integrity and license gates. No analyzer is started.",
357
+ },
358
+ ],
359
+ downloads: [],
360
+ blockers: args.length === 0
361
+ ? ["Supply a trusted analyzer manifest path or a digest-pinned HTTPS URL."]
362
+ : [],
363
+ nextSteps: [
364
+ "Review the manifest, enable its declared ID, then run it explicitly. SARIF, JUnit XML and both generic JSON formats use the same runtime.",
365
+ "A cloned project's manifest is never automatically discovered or trusted.",
366
+ ],
367
+ };
368
+ }
369
+ function localSearchItem(root) {
370
+ const projectName = `untangle-init-search-${createHash("sha256").update(root).digest("hex").slice(0, 16)}`;
371
+ const folder = ".untangle/setup/integrations/local-search";
372
+ const compose = path.join(root, folder, "compose.yml");
373
+ const common = [
374
+ " privileged: false",
375
+ " cap_drop: [ALL]",
376
+ " security_opt: [no-new-privileges:true]",
377
+ " labels:",
378
+ ' dev.untangle.init-managed: "true"',
379
+ ` dev.untangle.init-project: ${quote(projectName)}`,
380
+ ];
381
+ const health = (port) => [
382
+ " healthcheck:",
383
+ ` test: ["CMD-SHELL", "bash -c 'echo -n > /dev/tcp/127.0.0.1/${String(port)}'"]`,
384
+ " interval: 3s",
385
+ " timeout: 3s",
386
+ " retries: 40",
387
+ ];
388
+ return {
389
+ id: "local-search",
390
+ label: "Local search — Qdrant and Ollama",
391
+ licenseAcknowledged: true,
392
+ projectName,
393
+ files: [
394
+ {
395
+ relativePath: `${folder}/compose.yml`,
396
+ content: [
397
+ "services:",
398
+ " vectors:",
399
+ " image: qdrant/qdrant@sha256:d774e7bb65744454984c6021637a0da89271f30df15e48601a9fafc926d26b1f",
400
+ " ports:",
401
+ ' - "127.0.0.1:16333:6333"',
402
+ ' - "127.0.0.1:16334:6334"',
403
+ " volumes:",
404
+ " - qdrant_data:/qdrant/storage",
405
+ ...common,
406
+ ...health(6333),
407
+ " embeddings:",
408
+ " image: ollama/ollama@sha256:18bfb1d605604fd53dcad20d0556df4c781e560ebebcd923454d627c994a0e37",
409
+ " ports:",
410
+ ' - "127.0.0.1:11435:11434"',
411
+ " volumes:",
412
+ " - ollama_models:/root/.ollama",
413
+ ...common,
414
+ ...health(11434),
415
+ "volumes:",
416
+ " qdrant_data: {}",
417
+ " ollama_models: {}",
418
+ "",
419
+ ].join("\n"),
420
+ },
421
+ {
422
+ relativePath: `${folder}/connection.json`,
423
+ content: json({
424
+ schemaVersion: 1,
425
+ qdrant: { mode: "external", url: "http://127.0.0.1:16333" },
426
+ embeddings: {
427
+ provider: "ollama",
428
+ mode: "external",
429
+ url: "http://127.0.0.1:11435",
430
+ model: "nomic-embed-text",
431
+ dimensions: 768,
432
+ contextLength: 2048,
433
+ },
434
+ indexBuilt: false,
435
+ }),
436
+ },
437
+ ],
438
+ commands: [
439
+ {
440
+ command: "docker",
441
+ args: [
442
+ "compose",
443
+ "-p",
444
+ projectName,
445
+ "-f",
446
+ compose,
447
+ "up",
448
+ "--detach",
449
+ "--wait",
450
+ "--wait-timeout",
451
+ "180",
452
+ ],
453
+ kind: "process",
454
+ purpose: "Download and start the pinned loopback-only services; an occupied port fails without adopting a foreign container.",
455
+ },
456
+ {
457
+ command: "docker",
458
+ args: [
459
+ "compose",
460
+ "-p",
461
+ projectName,
462
+ "-f",
463
+ compose,
464
+ "exec",
465
+ "-T",
466
+ "embeddings",
467
+ "ollama",
468
+ "pull",
469
+ "nomic-embed-text",
470
+ ],
471
+ kind: "process",
472
+ purpose: "Explicitly download the configured default model into this setup's own named volume.",
473
+ },
474
+ ],
475
+ downloads: [],
476
+ blockers: [],
477
+ nextSteps: [
478
+ "Use Qdrant http://127.0.0.1:16333 and Ollama http://127.0.0.1:11435 with nomic-embed-text/768/2048 in the project configuration.",
479
+ "Run untangle doctor, untangle index and a query with --require-fresh. Setup does not claim a fresh index.",
480
+ "If a configured service already occupies these ports, reuse it explicitly rather than stopping it; no existing service or volume is deleted.",
481
+ ],
482
+ };
483
+ }
484
+ /** Planning is deterministic and performs no filesystem, process or network operation. */
485
+ export function planIntegrationSetup(options) {
486
+ const root = path.resolve(options.root);
487
+ const platform = options.platform ?? process.platform;
488
+ const arch = options.arch ?? process.arch;
489
+ const selections = options.selections.map((selection) => ({ ...selection }));
490
+ const ids = selections.map((selection) => selection.id);
491
+ if (new Set(ids).size !== ids.length ||
492
+ (ids.includes("sonarqube-local") && ids.includes("sonarqube-existing"))) {
493
+ throw new UsageError("Select each integration once and only one SonarQube mode.");
494
+ }
495
+ for (const id of ids) {
496
+ if (!OFFERS.some((offer) => offer.id === id))
497
+ throw new UsageError("Unknown integration selection.");
498
+ }
499
+ return {
500
+ schemaVersion: 1,
501
+ root,
502
+ selections,
503
+ offline: options.offline ?? false,
504
+ platform,
505
+ arch,
506
+ items: selections.map((selection) => selection.id === "local-search"
507
+ ? localSearchItem(root)
508
+ : selection.id === "sentrux"
509
+ ? sentruxItem(root, platform, arch)
510
+ : selection.id === "custom"
511
+ ? customItem(root, selection)
512
+ : sonarItem(root, selection)),
513
+ };
514
+ }
515
+ //# sourceMappingURL=integrations-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations-plan.js","sourceRoot":"","sources":["../../../src/commands/init/integrations-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Additive, explicitly selected init integration setup. */
2
+ export * from "./integrations-plan.js";
3
+ export { applyIntegrationSetup, IntegrationSetupCancelledError } from "./integrations-apply.js";
4
+ export type { IntegrationSetupDepsV1, IntegrationSetupReportV1, IntegrationSetupItemResultV1, } from "./integrations-apply.js";
5
+ //# sourceMappingURL=integrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../../src/commands/init/integrations.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAChG,YAAY,EACV,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Additive, explicitly selected init integration setup. */
2
+ export * from "./integrations-plan.js";
3
+ export { applyIntegrationSetup, IntegrationSetupCancelledError } from "./integrations-apply.js";
4
+ //# sourceMappingURL=integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../../src/commands/init/integrations.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * The language census: which languages a project is written in, weighted by
3
+ * lines (WP-125 "Gewichtung nach Zeilen").
4
+ *
5
+ * Discovery is `@untangle-code/scanner`'s job and is not re-implemented here:
6
+ * `discoverFiles` already applies the security tier, the default excludes,
7
+ * every nested `.gitignore`/`.untangleignore`, the size ceiling, the symlink
8
+ * sandbox and the binary classifier, and it already reports a language id per
9
+ * file. What this module adds is the one thing the scanner has no reason to
10
+ * compute — the LINE count — plus the cross-check against
11
+ * `@untangle-code/parser-registry`: a language that dominates the line count
12
+ * but has no adapter is the single most useful thing `init` can tell a user,
13
+ * because it is the difference between "Untangle understands your code" and
14
+ * "Untangle can only search its text".
15
+ */
16
+ import type { ParserRegistry, FileSystemPort, SkipLedgerEntryV1 } from "@untangle-code/domain";
17
+ import type { ScannedFileV1 } from "@untangle-code/scanner";
18
+ import type { InitLimitsV1, LanguageCensusEntryV1, LanguageCensusV1 } from "./types.js";
19
+ /**
20
+ * Counts lines the way a line-oriented tool does: the number of newline
21
+ * characters, plus one when the last line is unterminated. Empty content has
22
+ * zero lines. `\r\n` counts once, because the `\n` is what is counted.
23
+ */
24
+ export declare function countLines(text: string): number;
25
+ /** Rounds a ratio to four decimals so the value is stable across runs. */
26
+ export declare function roundShare(value: number): number;
27
+ export interface LanguageCensusInput {
28
+ fs: FileSystemPort;
29
+ parserRegistry: ParserRegistry;
30
+ /** Absolute, canonical repository root. */
31
+ repoRoot: string;
32
+ limits: InitLimitsV1;
33
+ /** Extra exclude globs on top of the scanner defaults. */
34
+ additionalExcludes: readonly string[];
35
+ /**
36
+ * Repo-relative paths that `init` itself owns (its output file and that
37
+ * file's temporary sibling). They are excluded from the scan AND from the
38
+ * exclusion counts: counting them would make the second run observe a
39
+ * project the first one did not, and idempotency would be a coin flip.
40
+ */
41
+ selfManagedPaths: readonly string[];
42
+ /** Collector for the non-routine skips (E4). */
43
+ onSkipEntry: (entry: SkipLedgerEntryV1) => void;
44
+ /** Accepted files within the census budget, including failed second reads. */
45
+ onDiscoveredFile?: (file: ScannedFileV1) => void;
46
+ signal?: AbortSignal;
47
+ }
48
+ /**
49
+ * Sorting rule of the census: most lines first, ties broken by language id
50
+ * codepoints. Descending on a number and ascending on codepoints — never
51
+ * `localeCompare`, so the order is the same on every machine.
52
+ */
53
+ export declare function compareCensusEntries(a: LanguageCensusEntryV1, b: LanguageCensusEntryV1): number;
54
+ export declare function buildLanguageCensus(input: LanguageCensusInput): Promise<LanguageCensusV1>;
55
+ //# sourceMappingURL=languages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../src/commands/init/languages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/F,OAAO,KAAK,EAAE,aAAa,EAA+B,MAAM,wBAAwB,CAAC;AAIzF,OAAO,KAAK,EAEV,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAuCpB;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAW/C;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhD;AAUD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,cAAc,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,0DAA0D;IAC1D,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC;;;;;OAKG;IACH,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gDAAgD;IAChD,WAAW,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACjD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAK/F;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuK/F"}