@untangle-code/cli 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. package/LICENSE +661 -0
  2. package/NOTICE +90 -0
  3. package/README.md +451 -2
  4. package/THIRD_PARTY_LICENSES.md +152 -0
  5. package/dist/cli/args.d.ts +48 -0
  6. package/dist/cli/args.d.ts.map +1 -0
  7. package/dist/cli/args.js +167 -0
  8. package/dist/cli/args.js.map +1 -0
  9. package/dist/cli/command.d.ts +69 -0
  10. package/dist/cli/command.d.ts.map +1 -0
  11. package/dist/cli/command.js +82 -0
  12. package/dist/cli/command.js.map +1 -0
  13. package/dist/cli/deadline.d.ts +33 -0
  14. package/dist/cli/deadline.d.ts.map +1 -0
  15. package/dist/cli/deadline.js +49 -0
  16. package/dist/cli/deadline.js.map +1 -0
  17. package/dist/cli/embedder-deadline.d.ts +72 -0
  18. package/dist/cli/embedder-deadline.d.ts.map +1 -0
  19. package/dist/cli/embedder-deadline.js +117 -0
  20. package/dist/cli/embedder-deadline.js.map +1 -0
  21. package/dist/cli/exit.d.ts +71 -0
  22. package/dist/cli/exit.d.ts.map +1 -0
  23. package/dist/cli/exit.js +81 -0
  24. package/dist/cli/exit.js.map +1 -0
  25. package/dist/cli/graphs.d.ts +65 -0
  26. package/dist/cli/graphs.d.ts.map +1 -0
  27. package/dist/cli/graphs.js +108 -0
  28. package/dist/cli/graphs.js.map +1 -0
  29. package/dist/cli/index-freshness.d.ts +13 -0
  30. package/dist/cli/index-freshness.d.ts.map +1 -0
  31. package/dist/cli/index-freshness.js +226 -0
  32. package/dist/cli/index-freshness.js.map +1 -0
  33. package/dist/cli/index-refresh.d.ts +10 -0
  34. package/dist/cli/index-refresh.d.ts.map +1 -0
  35. package/dist/cli/index-refresh.js +76 -0
  36. package/dist/cli/index-refresh.js.map +1 -0
  37. package/dist/cli/index-state.d.ts +184 -0
  38. package/dist/cli/index-state.d.ts.map +1 -0
  39. package/dist/cli/index-state.js +852 -0
  40. package/dist/cli/index-state.js.map +1 -0
  41. package/dist/cli/io.d.ts +29 -0
  42. package/dist/cli/io.d.ts.map +1 -0
  43. package/dist/cli/io.js +42 -0
  44. package/dist/cli/io.js.map +1 -0
  45. package/dist/cli/language-support.d.ts +77 -0
  46. package/dist/cli/language-support.d.ts.map +1 -0
  47. package/dist/cli/language-support.js +152 -0
  48. package/dist/cli/language-support.js.map +1 -0
  49. package/dist/cli/renewing-lease.d.ts +26 -0
  50. package/dist/cli/renewing-lease.d.ts.map +1 -0
  51. package/dist/cli/renewing-lease.js +102 -0
  52. package/dist/cli/renewing-lease.js.map +1 -0
  53. package/dist/cli/search-graph-enrichment.d.ts +16 -0
  54. package/dist/cli/search-graph-enrichment.d.ts.map +1 -0
  55. package/dist/cli/search-graph-enrichment.js +428 -0
  56. package/dist/cli/search-graph-enrichment.js.map +1 -0
  57. package/dist/cli/system.d.ts +34 -0
  58. package/dist/cli/system.d.ts.map +1 -0
  59. package/dist/cli/system.js +89 -0
  60. package/dist/cli/system.js.map +1 -0
  61. package/dist/cli/vector-store-policy.d.ts +116 -0
  62. package/dist/cli/vector-store-policy.d.ts.map +1 -0
  63. package/dist/cli/vector-store-policy.js +160 -0
  64. package/dist/cli/vector-store-policy.js.map +1 -0
  65. package/dist/cli/version.d.ts +3 -0
  66. package/dist/cli/version.d.ts.map +1 -0
  67. package/dist/cli/version.js +3 -0
  68. package/dist/cli/version.js.map +1 -0
  69. package/dist/cli/workspace.d.ts +105 -0
  70. package/dist/cli/workspace.d.ts.map +1 -0
  71. package/dist/cli/workspace.js +215 -0
  72. package/dist/cli/workspace.js.map +1 -0
  73. package/dist/commands/complexity.d.ts +72 -0
  74. package/dist/commands/complexity.d.ts.map +1 -0
  75. package/dist/commands/complexity.js +580 -0
  76. package/dist/commands/complexity.js.map +1 -0
  77. package/dist/commands/doctor.d.ts +66 -0
  78. package/dist/commands/doctor.d.ts.map +1 -0
  79. package/dist/commands/doctor.js +764 -0
  80. package/dist/commands/doctor.js.map +1 -0
  81. package/dist/commands/doctor.languages.d.ts +37 -0
  82. package/dist/commands/doctor.languages.d.ts.map +1 -0
  83. package/dist/commands/doctor.languages.js +143 -0
  84. package/dist/commands/doctor.languages.js.map +1 -0
  85. package/dist/commands/doctor.storage.d.ts +17 -0
  86. package/dist/commands/doctor.storage.d.ts.map +1 -0
  87. package/dist/commands/doctor.storage.js +91 -0
  88. package/dist/commands/doctor.storage.js.map +1 -0
  89. package/dist/commands/extensions/add.d.ts +10 -0
  90. package/dist/commands/extensions/add.d.ts.map +1 -0
  91. package/dist/commands/extensions/add.js +213 -0
  92. package/dist/commands/extensions/add.js.map +1 -0
  93. package/dist/commands/extensions/configure.d.ts +5 -0
  94. package/dist/commands/extensions/configure.d.ts.map +1 -0
  95. package/dist/commands/extensions/configure.js +58 -0
  96. package/dist/commands/extensions/configure.js.map +1 -0
  97. package/dist/commands/extensions/container.d.ts +15 -0
  98. package/dist/commands/extensions/container.d.ts.map +1 -0
  99. package/dist/commands/extensions/container.js +135 -0
  100. package/dist/commands/extensions/container.js.map +1 -0
  101. package/dist/commands/extensions/context.d.ts +37 -0
  102. package/dist/commands/extensions/context.d.ts.map +1 -0
  103. package/dist/commands/extensions/context.js +72 -0
  104. package/dist/commands/extensions/context.js.map +1 -0
  105. package/dist/commands/extensions/enable.d.ts +6 -0
  106. package/dist/commands/extensions/enable.d.ts.map +1 -0
  107. package/dist/commands/extensions/enable.js +180 -0
  108. package/dist/commands/extensions/enable.js.map +1 -0
  109. package/dist/commands/extensions/environment.d.ts +74 -0
  110. package/dist/commands/extensions/environment.d.ts.map +1 -0
  111. package/dist/commands/extensions/environment.js +168 -0
  112. package/dist/commands/extensions/environment.js.map +1 -0
  113. package/dist/commands/extensions/feature-scan.d.ts +48 -0
  114. package/dist/commands/extensions/feature-scan.d.ts.map +1 -0
  115. package/dist/commands/extensions/feature-scan.js +156 -0
  116. package/dist/commands/extensions/feature-scan.js.map +1 -0
  117. package/dist/commands/extensions/invoke.d.ts +60 -0
  118. package/dist/commands/extensions/invoke.d.ts.map +1 -0
  119. package/dist/commands/extensions/invoke.js +275 -0
  120. package/dist/commands/extensions/invoke.js.map +1 -0
  121. package/dist/commands/extensions/list.d.ts +5 -0
  122. package/dist/commands/extensions/list.d.ts.map +1 -0
  123. package/dist/commands/extensions/list.js +125 -0
  124. package/dist/commands/extensions/list.js.map +1 -0
  125. package/dist/commands/extensions/logs.d.ts +5 -0
  126. package/dist/commands/extensions/logs.d.ts.map +1 -0
  127. package/dist/commands/extensions/logs.js +74 -0
  128. package/dist/commands/extensions/logs.js.map +1 -0
  129. package/dist/commands/extensions/provision.d.ts +36 -0
  130. package/dist/commands/extensions/provision.d.ts.map +1 -0
  131. package/dist/commands/extensions/provision.js +137 -0
  132. package/dist/commands/extensions/provision.js.map +1 -0
  133. package/dist/commands/extensions/remove.d.ts +5 -0
  134. package/dist/commands/extensions/remove.d.ts.map +1 -0
  135. package/dist/commands/extensions/remove.js +77 -0
  136. package/dist/commands/extensions/remove.js.map +1 -0
  137. package/dist/commands/extensions/render.d.ts +16 -0
  138. package/dist/commands/extensions/render.d.ts.map +1 -0
  139. package/dist/commands/extensions/render.js +25 -0
  140. package/dist/commands/extensions/render.js.map +1 -0
  141. package/dist/commands/extensions/run.d.ts +30 -0
  142. package/dist/commands/extensions/run.d.ts.map +1 -0
  143. package/dist/commands/extensions/run.js +292 -0
  144. package/dist/commands/extensions/run.js.map +1 -0
  145. package/dist/commands/extensions/secret-store.d.ts +15 -0
  146. package/dist/commands/extensions/secret-store.d.ts.map +1 -0
  147. package/dist/commands/extensions/secret-store.js +164 -0
  148. package/dist/commands/extensions/secret-store.js.map +1 -0
  149. package/dist/commands/extensions/setup.d.ts +17 -0
  150. package/dist/commands/extensions/setup.d.ts.map +1 -0
  151. package/dist/commands/extensions/setup.js +94 -0
  152. package/dist/commands/extensions/setup.js.map +1 -0
  153. package/dist/commands/extensions/source.d.ts +47 -0
  154. package/dist/commands/extensions/source.d.ts.map +1 -0
  155. package/dist/commands/extensions/source.js +142 -0
  156. package/dist/commands/extensions/source.js.map +1 -0
  157. package/dist/commands/extensions/state.d.ts +62 -0
  158. package/dist/commands/extensions/state.d.ts.map +1 -0
  159. package/dist/commands/extensions/state.js +177 -0
  160. package/dist/commands/extensions/state.js.map +1 -0
  161. package/dist/commands/extensions/status.d.ts +9 -0
  162. package/dist/commands/extensions/status.d.ts.map +1 -0
  163. package/dist/commands/extensions/status.js +239 -0
  164. package/dist/commands/extensions/status.js.map +1 -0
  165. package/dist/commands/extensions.d.ts +3 -0
  166. package/dist/commands/extensions.d.ts.map +1 -0
  167. package/dist/commands/extensions.js +223 -0
  168. package/dist/commands/extensions.js.map +1 -0
  169. package/dist/commands/flow/index.d.ts +3 -0
  170. package/dist/commands/flow/index.d.ts.map +1 -0
  171. package/dist/commands/flow/index.js +295 -0
  172. package/dist/commands/flow/index.js.map +1 -0
  173. package/dist/commands/flow/limits.d.ts +12 -0
  174. package/dist/commands/flow/limits.d.ts.map +1 -0
  175. package/dist/commands/flow/limits.js +13 -0
  176. package/dist/commands/flow/limits.js.map +1 -0
  177. package/dist/commands/flow/output.d.ts +8 -0
  178. package/dist/commands/flow/output.d.ts.map +1 -0
  179. package/dist/commands/flow/output.js +11 -0
  180. package/dist/commands/flow/output.js.map +1 -0
  181. package/dist/commands/flow/render.d.ts +51 -0
  182. package/dist/commands/flow/render.d.ts.map +1 -0
  183. package/dist/commands/flow/render.js +220 -0
  184. package/dist/commands/flow/render.js.map +1 -0
  185. package/dist/commands/flow/select.d.ts +31 -0
  186. package/dist/commands/flow/select.d.ts.map +1 -0
  187. package/dist/commands/flow/select.js +62 -0
  188. package/dist/commands/flow/select.js.map +1 -0
  189. package/dist/commands/graph/boundaries-input.d.ts +26 -0
  190. package/dist/commands/graph/boundaries-input.d.ts.map +1 -0
  191. package/dist/commands/graph/boundaries-input.js +54 -0
  192. package/dist/commands/graph/boundaries-input.js.map +1 -0
  193. package/dist/commands/graph/boundaries.d.ts +4 -0
  194. package/dist/commands/graph/boundaries.d.ts.map +1 -0
  195. package/dist/commands/graph/boundaries.js +141 -0
  196. package/dist/commands/graph/boundaries.js.map +1 -0
  197. package/dist/commands/graph/bounds.d.ts +16 -0
  198. package/dist/commands/graph/bounds.d.ts.map +1 -0
  199. package/dist/commands/graph/bounds.js +22 -0
  200. package/dist/commands/graph/bounds.js.map +1 -0
  201. package/dist/commands/graph/category-clusters.d.ts +20 -0
  202. package/dist/commands/graph/category-clusters.d.ts.map +1 -0
  203. package/dist/commands/graph/category-clusters.js +158 -0
  204. package/dist/commands/graph/category-clusters.js.map +1 -0
  205. package/dist/commands/graph/feature-3d.d.ts +22 -0
  206. package/dist/commands/graph/feature-3d.d.ts.map +1 -0
  207. package/dist/commands/graph/feature-3d.js +114 -0
  208. package/dist/commands/graph/feature-3d.js.map +1 -0
  209. package/dist/commands/graph/feature-clusters.d.ts +17 -0
  210. package/dist/commands/graph/feature-clusters.d.ts.map +1 -0
  211. package/dist/commands/graph/feature-clusters.js +94 -0
  212. package/dist/commands/graph/feature-clusters.js.map +1 -0
  213. package/dist/commands/graph/feature-html.d.ts +26 -0
  214. package/dist/commands/graph/feature-html.d.ts.map +1 -0
  215. package/dist/commands/graph/feature-html.js +314 -0
  216. package/dist/commands/graph/feature-html.js.map +1 -0
  217. package/dist/commands/graph/feature-map.d.ts +31 -0
  218. package/dist/commands/graph/feature-map.d.ts.map +1 -0
  219. package/dist/commands/graph/feature-map.js +217 -0
  220. package/dist/commands/graph/feature-map.js.map +1 -0
  221. package/dist/commands/graph/feature-model.d.ts +55 -0
  222. package/dist/commands/graph/feature-model.d.ts.map +1 -0
  223. package/dist/commands/graph/feature-model.js +167 -0
  224. package/dist/commands/graph/feature-model.js.map +1 -0
  225. package/dist/commands/graph/feature-untangle-motion.d.ts +33 -0
  226. package/dist/commands/graph/feature-untangle-motion.d.ts.map +1 -0
  227. package/dist/commands/graph/feature-untangle-motion.js +155 -0
  228. package/dist/commands/graph/feature-untangle-motion.js.map +1 -0
  229. package/dist/commands/graph/index.d.ts +3 -0
  230. package/dist/commands/graph/index.d.ts.map +1 -0
  231. package/dist/commands/graph/index.js +414 -0
  232. package/dist/commands/graph/index.js.map +1 -0
  233. package/dist/commands/graph/render.d.ts +63 -0
  234. package/dist/commands/graph/render.d.ts.map +1 -0
  235. package/dist/commands/graph/render.js +352 -0
  236. package/dist/commands/graph/render.js.map +1 -0
  237. package/dist/commands/graph/select.d.ts +34 -0
  238. package/dist/commands/graph/select.d.ts.map +1 -0
  239. package/dist/commands/graph/select.js +55 -0
  240. package/dist/commands/graph/select.js.map +1 -0
  241. package/dist/commands/index/index.d.ts +6 -0
  242. package/dist/commands/index/index.d.ts.map +1 -0
  243. package/dist/commands/index/index.js +461 -0
  244. package/dist/commands/index/index.js.map +1 -0
  245. package/dist/commands/index/render.d.ts +53 -0
  246. package/dist/commands/index/render.d.ts.map +1 -0
  247. package/dist/commands/index/render.js +205 -0
  248. package/dist/commands/index/render.js.map +1 -0
  249. package/dist/commands/index/target.d.ts +34 -0
  250. package/dist/commands/index/target.d.ts.map +1 -0
  251. package/dist/commands/index/target.js +97 -0
  252. package/dist/commands/index/target.js.map +1 -0
  253. package/dist/commands/index-watch.d.ts +30 -0
  254. package/dist/commands/index-watch.d.ts.map +1 -0
  255. package/dist/commands/index-watch.js +138 -0
  256. package/dist/commands/index-watch.js.map +1 -0
  257. package/dist/commands/init/command.d.ts +25 -0
  258. package/dist/commands/init/command.d.ts.map +1 -0
  259. package/dist/commands/init/command.js +198 -0
  260. package/dist/commands/init/command.js.map +1 -0
  261. package/dist/commands/init/config-draft.d.ts +48 -0
  262. package/dist/commands/init/config-draft.d.ts.map +1 -0
  263. package/dist/commands/init/config-draft.js +201 -0
  264. package/dist/commands/init/config-draft.js.map +1 -0
  265. package/dist/commands/init/diff.d.ts +33 -0
  266. package/dist/commands/init/diff.d.ts.map +1 -0
  267. package/dist/commands/init/diff.js +109 -0
  268. package/dist/commands/init/diff.js.map +1 -0
  269. package/dist/commands/init/http-probe.d.ts +26 -0
  270. package/dist/commands/init/http-probe.d.ts.map +1 -0
  271. package/dist/commands/init/http-probe.js +144 -0
  272. package/dist/commands/init/http-probe.js.map +1 -0
  273. package/dist/commands/init/ignore-rules.d.ts +70 -0
  274. package/dist/commands/init/ignore-rules.d.ts.map +1 -0
  275. package/dist/commands/init/ignore-rules.js +146 -0
  276. package/dist/commands/init/ignore-rules.js.map +1 -0
  277. package/dist/commands/init/index.d.ts +33 -0
  278. package/dist/commands/init/index.d.ts.map +1 -0
  279. package/dist/commands/init/index.js +32 -0
  280. package/dist/commands/init/index.js.map +1 -0
  281. package/dist/commands/init/integrations-apply.d.ts +50 -0
  282. package/dist/commands/init/integrations-apply.d.ts.map +1 -0
  283. package/dist/commands/init/integrations-apply.js +452 -0
  284. package/dist/commands/init/integrations-apply.js.map +1 -0
  285. package/dist/commands/init/integrations-plan.d.ts +68 -0
  286. package/dist/commands/init/integrations-plan.d.ts.map +1 -0
  287. package/dist/commands/init/integrations-plan.js +515 -0
  288. package/dist/commands/init/integrations-plan.js.map +1 -0
  289. package/dist/commands/init/integrations.d.ts +5 -0
  290. package/dist/commands/init/integrations.d.ts.map +1 -0
  291. package/dist/commands/init/integrations.js +4 -0
  292. package/dist/commands/init/integrations.js.map +1 -0
  293. package/dist/commands/init/languages.d.ts +55 -0
  294. package/dist/commands/init/languages.d.ts.map +1 -0
  295. package/dist/commands/init/languages.js +245 -0
  296. package/dist/commands/init/languages.js.map +1 -0
  297. package/dist/commands/init/product-context.d.ts +63 -0
  298. package/dist/commands/init/product-context.d.ts.map +1 -0
  299. package/dist/commands/init/product-context.js +390 -0
  300. package/dist/commands/init/product-context.js.map +1 -0
  301. package/dist/commands/init/render.d.ts +38 -0
  302. package/dist/commands/init/render.d.ts.map +1 -0
  303. package/dist/commands/init/render.js +501 -0
  304. package/dist/commands/init/render.js.map +1 -0
  305. package/dist/commands/init/report.d.ts +24 -0
  306. package/dist/commands/init/report.d.ts.map +1 -0
  307. package/dist/commands/init/report.js +163 -0
  308. package/dist/commands/init/report.js.map +1 -0
  309. package/dist/commands/init/run.d.ts +71 -0
  310. package/dist/commands/init/run.d.ts.map +1 -0
  311. package/dist/commands/init/run.js +253 -0
  312. package/dist/commands/init/run.js.map +1 -0
  313. package/dist/commands/init/services.d.ts +82 -0
  314. package/dist/commands/init/services.d.ts.map +1 -0
  315. package/dist/commands/init/services.js +209 -0
  316. package/dist/commands/init/services.js.map +1 -0
  317. package/dist/commands/init/storage.d.ts +8 -0
  318. package/dist/commands/init/storage.d.ts.map +1 -0
  319. package/dist/commands/init/storage.js +102 -0
  320. package/dist/commands/init/storage.js.map +1 -0
  321. package/dist/commands/init/toml.d.ts +65 -0
  322. package/dist/commands/init/toml.d.ts.map +1 -0
  323. package/dist/commands/init/toml.js +159 -0
  324. package/dist/commands/init/toml.js.map +1 -0
  325. package/dist/commands/init/topology.d.ts +54 -0
  326. package/dist/commands/init/topology.d.ts.map +1 -0
  327. package/dist/commands/init/topology.js +146 -0
  328. package/dist/commands/init/topology.js.map +1 -0
  329. package/dist/commands/init/types.d.ts +334 -0
  330. package/dist/commands/init/types.d.ts.map +1 -0
  331. package/dist/commands/init/types.js +31 -0
  332. package/dist/commands/init/types.js.map +1 -0
  333. package/dist/commands/init/wizard-terminal.d.ts +36 -0
  334. package/dist/commands/init/wizard-terminal.d.ts.map +1 -0
  335. package/dist/commands/init/wizard-terminal.js +163 -0
  336. package/dist/commands/init/wizard-terminal.js.map +1 -0
  337. package/dist/commands/init/wizard.d.ts +25 -0
  338. package/dist/commands/init/wizard.d.ts.map +1 -0
  339. package/dist/commands/init/wizard.js +358 -0
  340. package/dist/commands/init/wizard.js.map +1 -0
  341. package/dist/commands/mcp.d.ts +4 -0
  342. package/dist/commands/mcp.d.ts.map +1 -0
  343. package/dist/commands/mcp.js +111 -0
  344. package/dist/commands/mcp.js.map +1 -0
  345. package/dist/commands/product-test-runner.d.ts +4 -0
  346. package/dist/commands/product-test-runner.d.ts.map +1 -0
  347. package/dist/commands/product-test-runner.js +85 -0
  348. package/dist/commands/product-test-runner.js.map +1 -0
  349. package/dist/commands/product.d.ts +16 -0
  350. package/dist/commands/product.d.ts.map +1 -0
  351. package/dist/commands/product.js +262 -0
  352. package/dist/commands/product.js.map +1 -0
  353. package/dist/commands/query.d.ts +114 -0
  354. package/dist/commands/query.d.ts.map +1 -0
  355. package/dist/commands/query.js +783 -0
  356. package/dist/commands/query.js.map +1 -0
  357. package/dist/commands/scan.d.ts +10 -0
  358. package/dist/commands/scan.d.ts.map +1 -0
  359. package/dist/commands/scan.js +302 -0
  360. package/dist/commands/scan.js.map +1 -0
  361. package/dist/commands/sdd.d.ts +24 -0
  362. package/dist/commands/sdd.d.ts.map +1 -0
  363. package/dist/commands/sdd.js +195 -0
  364. package/dist/commands/sdd.js.map +1 -0
  365. package/dist/commands/unavailable.d.ts +40 -0
  366. package/dist/commands/unavailable.d.ts.map +1 -0
  367. package/dist/commands/unavailable.js +73 -0
  368. package/dist/commands/unavailable.js.map +1 -0
  369. package/dist/commands/watch/analyze.d.ts +69 -0
  370. package/dist/commands/watch/analyze.d.ts.map +1 -0
  371. package/dist/commands/watch/analyze.js +402 -0
  372. package/dist/commands/watch/analyze.js.map +1 -0
  373. package/dist/commands/watch/cli.d.ts +8 -0
  374. package/dist/commands/watch/cli.d.ts.map +1 -0
  375. package/dist/commands/watch/cli.js +97 -0
  376. package/dist/commands/watch/cli.js.map +1 -0
  377. package/dist/commands/watch/delta.d.ts +46 -0
  378. package/dist/commands/watch/delta.d.ts.map +1 -0
  379. package/dist/commands/watch/delta.js +170 -0
  380. package/dist/commands/watch/delta.js.map +1 -0
  381. package/dist/commands/watch/events.d.ts +214 -0
  382. package/dist/commands/watch/events.d.ts.map +1 -0
  383. package/dist/commands/watch/events.js +13 -0
  384. package/dist/commands/watch/events.js.map +1 -0
  385. package/dist/commands/watch/index.d.ts +19 -0
  386. package/dist/commands/watch/index.d.ts.map +1 -0
  387. package/dist/commands/watch/index.js +15 -0
  388. package/dist/commands/watch/index.js.map +1 -0
  389. package/dist/commands/watch/options.d.ts +43 -0
  390. package/dist/commands/watch/options.d.ts.map +1 -0
  391. package/dist/commands/watch/options.js +193 -0
  392. package/dist/commands/watch/options.js.map +1 -0
  393. package/dist/commands/watch/render.d.ts +26 -0
  394. package/dist/commands/watch/render.d.ts.map +1 -0
  395. package/dist/commands/watch/render.js +175 -0
  396. package/dist/commands/watch/render.js.map +1 -0
  397. package/dist/commands/watch/run.d.ts +14 -0
  398. package/dist/commands/watch/run.d.ts.map +1 -0
  399. package/dist/commands/watch/run.js +460 -0
  400. package/dist/commands/watch/run.js.map +1 -0
  401. package/dist/commands/watch/runtime.d.ts +67 -0
  402. package/dist/commands/watch/runtime.d.ts.map +1 -0
  403. package/dist/commands/watch/runtime.js +149 -0
  404. package/dist/commands/watch/runtime.js.map +1 -0
  405. package/dist/commands/watch-command.d.ts +3 -0
  406. package/dist/commands/watch-command.d.ts.map +1 -0
  407. package/dist/commands/watch-command.js +273 -0
  408. package/dist/commands/watch-command.js.map +1 -0
  409. package/dist/entry-point.d.ts +11 -0
  410. package/dist/entry-point.d.ts.map +1 -0
  411. package/dist/entry-point.js +65 -0
  412. package/dist/entry-point.js.map +1 -0
  413. package/dist/index.d.ts +38 -0
  414. package/dist/index.d.ts.map +1 -0
  415. package/dist/index.js +245 -0
  416. package/dist/index.js.map +1 -0
  417. package/dist/mcp/boundaries-schema.d.ts +262 -0
  418. package/dist/mcp/boundaries-schema.d.ts.map +1 -0
  419. package/dist/mcp/boundaries-schema.js +183 -0
  420. package/dist/mcp/boundaries-schema.js.map +1 -0
  421. package/dist/mcp/default-runtime.d.ts +16 -0
  422. package/dist/mcp/default-runtime.d.ts.map +1 -0
  423. package/dist/mcp/default-runtime.js +718 -0
  424. package/dist/mcp/default-runtime.js.map +1 -0
  425. package/dist/mcp/envelope.d.ts +13 -0
  426. package/dist/mcp/envelope.d.ts.map +1 -0
  427. package/dist/mcp/envelope.js +29 -0
  428. package/dist/mcp/envelope.js.map +1 -0
  429. package/dist/mcp/index.d.ts +8 -0
  430. package/dist/mcp/index.d.ts.map +1 -0
  431. package/dist/mcp/index.js +8 -0
  432. package/dist/mcp/index.js.map +1 -0
  433. package/dist/mcp/output-schemas.d.ts +5928 -0
  434. package/dist/mcp/output-schemas.d.ts.map +1 -0
  435. package/dist/mcp/output-schemas.js +2814 -0
  436. package/dist/mcp/output-schemas.js.map +1 -0
  437. package/dist/mcp/path-sandbox.d.ts +35 -0
  438. package/dist/mcp/path-sandbox.d.ts.map +1 -0
  439. package/dist/mcp/path-sandbox.js +128 -0
  440. package/dist/mcp/path-sandbox.js.map +1 -0
  441. package/dist/mcp/server.d.ts +155 -0
  442. package/dist/mcp/server.d.ts.map +1 -0
  443. package/dist/mcp/server.js +257 -0
  444. package/dist/mcp/server.js.map +1 -0
  445. package/dist/mcp/stdio.d.ts +20 -0
  446. package/dist/mcp/stdio.d.ts.map +1 -0
  447. package/dist/mcp/stdio.js +71 -0
  448. package/dist/mcp/stdio.js.map +1 -0
  449. package/dist/mcp/tools.d.ts +355 -0
  450. package/dist/mcp/tools.d.ts.map +1 -0
  451. package/dist/mcp/tools.js +319 -0
  452. package/dist/mcp/tools.js.map +1 -0
  453. package/dist/mcp/types.d.ts +15 -0
  454. package/dist/mcp/types.d.ts.map +1 -0
  455. package/dist/mcp/types.js +45 -0
  456. package/dist/mcp/types.js.map +1 -0
  457. package/package.json +99 -3
  458. package/src/cli/args.ts +231 -0
  459. package/src/cli/command.ts +146 -0
  460. package/src/cli/deadline.ts +56 -0
  461. package/src/cli/embedder-deadline.ts +187 -0
  462. package/src/cli/exit.ts +94 -0
  463. package/src/cli/graphs.ts +191 -0
  464. package/src/cli/index-freshness.ts +303 -0
  465. package/src/cli/index-refresh.ts +125 -0
  466. package/src/cli/index-state.ts +1217 -0
  467. package/src/cli/io.ts +56 -0
  468. package/src/cli/language-support.ts +203 -0
  469. package/src/cli/renewing-lease.ts +121 -0
  470. package/src/cli/search-graph-enrichment.ts +639 -0
  471. package/src/cli/system.ts +94 -0
  472. package/src/cli/vector-store-policy.ts +213 -0
  473. package/src/cli/version.ts +2 -0
  474. package/src/cli/workspace.ts +324 -0
  475. package/src/commands/complexity.ts +776 -0
  476. package/src/commands/doctor.languages.ts +187 -0
  477. package/src/commands/doctor.storage.ts +124 -0
  478. package/src/commands/doctor.ts +946 -0
  479. package/src/commands/extensions/add.ts +312 -0
  480. package/src/commands/extensions/configure.ts +82 -0
  481. package/src/commands/extensions/container.ts +209 -0
  482. package/src/commands/extensions/context.ts +109 -0
  483. package/src/commands/extensions/enable.ts +237 -0
  484. package/src/commands/extensions/environment.ts +218 -0
  485. package/src/commands/extensions/feature-scan.ts +232 -0
  486. package/src/commands/extensions/invoke.ts +368 -0
  487. package/src/commands/extensions/list.ts +158 -0
  488. package/src/commands/extensions/logs.ts +104 -0
  489. package/src/commands/extensions/provision.ts +206 -0
  490. package/src/commands/extensions/remove.ts +110 -0
  491. package/src/commands/extensions/render.ts +32 -0
  492. package/src/commands/extensions/run.ts +386 -0
  493. package/src/commands/extensions/secret-store.ts +223 -0
  494. package/src/commands/extensions/setup.ts +140 -0
  495. package/src/commands/extensions/source.ts +189 -0
  496. package/src/commands/extensions/state.ts +252 -0
  497. package/src/commands/extensions/status.ts +320 -0
  498. package/src/commands/extensions.ts +280 -0
  499. package/src/commands/flow/index.ts +402 -0
  500. package/src/commands/flow/limits.ts +14 -0
  501. package/src/commands/flow/output.ts +16 -0
  502. package/src/commands/flow/render.ts +318 -0
  503. package/src/commands/flow/select.ts +101 -0
  504. package/src/commands/graph/boundaries-input.ts +63 -0
  505. package/src/commands/graph/boundaries.ts +182 -0
  506. package/src/commands/graph/bounds.ts +25 -0
  507. package/src/commands/graph/category-clusters.ts +194 -0
  508. package/src/commands/graph/feature-3d.ts +141 -0
  509. package/src/commands/graph/feature-clusters.ts +125 -0
  510. package/src/commands/graph/feature-html.ts +336 -0
  511. package/src/commands/graph/feature-map.ts +270 -0
  512. package/src/commands/graph/feature-model.ts +234 -0
  513. package/src/commands/graph/feature-untangle-motion.ts +192 -0
  514. package/src/commands/graph/index.ts +562 -0
  515. package/src/commands/graph/render.ts +503 -0
  516. package/src/commands/graph/select.ts +77 -0
  517. package/src/commands/index/index.ts +595 -0
  518. package/src/commands/index/render.ts +325 -0
  519. package/src/commands/index/target.ts +136 -0
  520. package/src/commands/index-watch.ts +206 -0
  521. package/src/commands/init/command.ts +238 -0
  522. package/src/commands/init/config-draft.ts +235 -0
  523. package/src/commands/init/diff.ts +117 -0
  524. package/src/commands/init/http-probe.ts +150 -0
  525. package/src/commands/init/ignore-rules.ts +170 -0
  526. package/src/commands/init/index.ts +63 -0
  527. package/src/commands/init/integrations-apply.ts +618 -0
  528. package/src/commands/init/integrations-plan.ts +634 -0
  529. package/src/commands/init/integrations.ts +8 -0
  530. package/src/commands/init/languages.ts +320 -0
  531. package/src/commands/init/product-context.ts +576 -0
  532. package/src/commands/init/render.ts +598 -0
  533. package/src/commands/init/report.ts +204 -0
  534. package/src/commands/init/run.ts +349 -0
  535. package/src/commands/init/services.ts +271 -0
  536. package/src/commands/init/storage.ts +136 -0
  537. package/src/commands/init/toml.ts +174 -0
  538. package/src/commands/init/topology.ts +192 -0
  539. package/src/commands/init/types.ts +366 -0
  540. package/src/commands/init/wizard-terminal.ts +206 -0
  541. package/src/commands/init/wizard.ts +450 -0
  542. package/src/commands/mcp.ts +123 -0
  543. package/src/commands/product-test-runner.ts +80 -0
  544. package/src/commands/product.ts +331 -0
  545. package/src/commands/query.ts +1032 -0
  546. package/src/commands/scan.ts +360 -0
  547. package/src/commands/sdd.ts +243 -0
  548. package/src/commands/unavailable.ts +92 -0
  549. package/src/commands/watch/README.md +160 -0
  550. package/src/commands/watch/analyze.ts +600 -0
  551. package/src/commands/watch/cli.ts +108 -0
  552. package/src/commands/watch/delta.ts +186 -0
  553. package/src/commands/watch/events.ts +235 -0
  554. package/src/commands/watch/index.ts +53 -0
  555. package/src/commands/watch/options.ts +234 -0
  556. package/src/commands/watch/render.ts +240 -0
  557. package/src/commands/watch/run.ts +553 -0
  558. package/src/commands/watch/runtime.ts +167 -0
  559. package/src/commands/watch-command.ts +294 -0
  560. package/src/entry-point.ts +67 -0
  561. package/src/index.ts +291 -0
  562. package/src/mcp/boundaries-schema.ts +193 -0
  563. package/src/mcp/default-runtime.ts +1034 -0
  564. package/src/mcp/envelope.ts +57 -0
  565. package/src/mcp/index.ts +28 -0
  566. package/src/mcp/output-schemas.ts +3071 -0
  567. package/src/mcp/path-sandbox.ts +156 -0
  568. package/src/mcp/server.ts +358 -0
  569. package/src/mcp/stdio.ts +92 -0
  570. package/src/mcp/tools.ts +563 -0
  571. package/src/mcp/types.ts +66 -0
@@ -0,0 +1,163 @@
1
+ /**
2
+ * The terminal report of `untangle init`.
3
+ *
4
+ * Separate from the file it writes, and deliberately shorter: the file is the
5
+ * record, the report is the answer to "what just happened and what do I do
6
+ * now". It ends in exactly one next step — never a list — because a first
7
+ * command that hands back five errands is a first command nobody finishes.
8
+ *
9
+ * Wall-clock time is allowed in a report (it is not result data), and is
10
+ * still not used here: there is nothing about `init` whose duration a user
11
+ * needs to be told.
12
+ */
13
+ import { formatCount, formatShare, productContextWarnings } from "./render.js";
14
+ /** Human report. One line per array element, no trailing newline. */
15
+ export function formatTextReport(result) {
16
+ const { findings } = result;
17
+ const lines = [];
18
+ lines.push(`untangle init — ${findings.root}`);
19
+ lines.push("");
20
+ const languages = findings.languages;
21
+ if (languages.entries.length === 0) {
22
+ lines.push("Languages no analyzable files found");
23
+ }
24
+ else {
25
+ const top = languages.entries
26
+ .slice(0, 5)
27
+ .map((entry) => `${entry.languageId} ${formatShare(entry.lineShare)}`)
28
+ .join(", ");
29
+ lines.push(`Languages ${top}`);
30
+ lines.push(` ${formatCount(languages.totalFiles)} files, ${formatCount(languages.totalLines)} lines; ${formatShare(languages.parsedLineShare)} with a parser`);
31
+ const withoutParser = languages.entries.filter((entry) => !entry.hasParserAdapter && entry.lineShare >= 0.05);
32
+ if (withoutParser.length > 0) {
33
+ lines.push(` no parser (text search only): ${withoutParser.map((entry) => entry.languageId).join(", ")}`);
34
+ }
35
+ }
36
+ const topology = findings.topology;
37
+ lines.push(`Topology ${formatCount(topology.packages.length)} packages, ${formatCount(topology.services.length)} Container-Dienste${topology.isMonorepo ? "; monorepo" : "; single project"}`);
38
+ if (topology.workspaceGlobs.length > 0) {
39
+ lines.push(` Globs: ${topology.workspaceGlobs.join(", ")}`);
40
+ }
41
+ if (topology.packages.length > 0) {
42
+ lines.push(` ${topology.packages.map((pkg) => pkg.name).join(", ")}`);
43
+ }
44
+ if (topology.services.length > 0) {
45
+ lines.push(` Services: ${topology.services.map((service) => service.name).join(", ")}`);
46
+ }
47
+ for (const uncovered of topology.managers.uncoveredByTopology) {
48
+ lines.push(` GAP: ${uncovered} declares packages that were not found`);
49
+ }
50
+ const productContext = findings.productContext;
51
+ if (productContext !== undefined) {
52
+ const readable = productContext.sources.filter((source) => source.selected && source.status === "readable").length;
53
+ lines.push(`Produktkontext ${formatCount(readable)} selected sources readable; ${productContext.status}; ${formatCount(productContext.reviewDraft.questions.length)} open questions in the review draft`);
54
+ for (const warning of productContextWarnings(findings)) {
55
+ lines.push(`WARNING ${warning}`);
56
+ }
57
+ }
58
+ const ollama = findings.ollama;
59
+ if (findings.featureAlignment !== undefined) {
60
+ const alignment = findings.featureAlignment;
61
+ lines.push(`Feature evidence ${alignment.status}; ${formatCount(alignment.features.length)} declared features; semantic conformance ${alignment.semanticConformance}`);
62
+ for (const feature of alignment.features) {
63
+ lines.push(` ${feature.id.replace(/[\r\n]/gu, " ")}: ${feature.status}; ownership ${feature.ownership.map((owner) => `${owner.id.replace(/[\r\n]/gu, " ")}:${owner.status}`).join(", ") || "none"}; test evidence ${feature.testEvidence.status}`);
64
+ for (const hint of feature.agentHints) {
65
+ lines.push(`HINT ${hint.code}: ${hint.message.replace(/[\r\n]/gu, " ")}`);
66
+ }
67
+ }
68
+ for (const limitation of alignment.limitations) {
69
+ lines.push(`LIMIT ${limitation.replace(/[\r\n]/gu, " ")}`);
70
+ }
71
+ }
72
+ lines.push(ollama.outcome === "reachable"
73
+ ? `Embeddings ${ollama.url} erreichbar${ollama.chosenModel === undefined ? "; no embedding model" : ` — ${ollama.chosenModel.name} (${ollama.chosenModel.dimensions === undefined ? "?" : formatCount(ollama.chosenModel.dimensions)} dimensions)`}`
74
+ : `Embeddings ${ollama.url} unreachable; this is not an error`);
75
+ // WP-228: Die Zeile darueber sagt nur, dass /api/tags geantwortet hat.
76
+ // Diese hier sagt, ob der Dienst das kann, wofuer er gebraucht wird.
77
+ lines.push(` ${describeEmbedProbe(ollama)}`);
78
+ if (findings.storage?.backend === "lancedb") {
79
+ lines.push(`Vector store LanceDB at ${findings.storage.directory}; directory ${findings.storage.directoryStatus}`);
80
+ lines.push(" Local storage only; no database opened, Docker or Qdrant probed.");
81
+ }
82
+ else {
83
+ const qdrant = findings.qdrant;
84
+ lines.push(qdrant.outcome === "reachable"
85
+ ? `Vector store ${qdrant.url ?? "?"} reachable`
86
+ : `Vector store unreachable (${qdrant.probedUrls.join(", ")}); this is not an error`);
87
+ for (const skipped of qdrant.skippedUrls) {
88
+ lines.push(` not checked: ${skipped.url}`);
89
+ }
90
+ }
91
+ const ignore = findings.ignore;
92
+ lines.push(ignore.gitignorePresent
93
+ ? `Ignore rules .gitignore with ${formatCount(ignore.gitignoreRuleCount)} rules + ${formatCount(ignore.defaultExcludes.length)} defaults${ignore.additionalExcludes.length > 0 ? `, ${formatCount(ignore.additionalExcludes.length)} imported (${ignore.additionalExcludes.join(", ")})` : ""}`
94
+ : `Ignore rules no .gitignore; ${formatCount(ignore.defaultExcludes.length)} defaults`);
95
+ if (findings.skipped.entries.length > 0) {
96
+ lines.push(`Skipped ${formatCount(findings.skipped.entries.length)} entries with reasons (--format json shows all)`);
97
+ }
98
+ lines.push("");
99
+ lines.push(...formatOutcome(result));
100
+ for (const warning of result.configWarnings) {
101
+ lines.push(`WARNING ${warning}`);
102
+ }
103
+ for (const error of result.configErrors) {
104
+ lines.push(`ERROR ${error}`);
105
+ }
106
+ lines.push("");
107
+ lines.push(result.nextStep);
108
+ return lines;
109
+ }
110
+ /**
111
+ * Der Satz zum Probe-Embedding (WP-228).
112
+ *
113
+ * Er nennt IMMER, was geprueft wurde — auch im Erfolgsfall. Eine Zeile, die
114
+ * nur bei Problemen erscheint, liest sich in ihrer Abwesenheit wie „geprueft
115
+ * und in Ordnung", und genau das war der Befund.
116
+ */
117
+ export function describeEmbedProbe(ollama) {
118
+ const probe = ollama.embedProbe;
119
+ switch (probe.outcome) {
120
+ case "ok":
121
+ return `/api/embed checked: responds${probe.dimensions === undefined ? "" : ` (${formatCount(probe.dimensions)} dimensions)`}; the service is usable`;
122
+ case "timeout":
123
+ return `/api/embed NO RESPONSE within ${formatCount(probe.timeoutMs)} ms; reachable does not mean usable here; use \`--embedder=offline\``;
124
+ case "failed":
125
+ return `/api/embed failed (${probe.detail ?? "no details"}); use \`--embedder=offline\``;
126
+ default:
127
+ return `/api/embed not checked (${probe.detail ?? "no details"})`;
128
+ }
129
+ }
130
+ function formatOutcome(result) {
131
+ switch (result.outcome) {
132
+ case "created":
133
+ return [`Written ${result.configPath}`];
134
+ case "overwritten":
135
+ return [`Overwritten ${result.configPath} (--force)`];
136
+ case "unchanged":
137
+ return [`Unchanged ${result.configPath}; a second identical run changes nothing.`];
138
+ case "would-create":
139
+ return [`--dry-run ${result.configPath} would be created (nothing written).`];
140
+ case "would-be-unchanged":
141
+ return [`--dry-run ${result.configPath} is already current (nothing written).`];
142
+ case "would-overwrite":
143
+ case "differs":
144
+ return [
145
+ result.outcome === "differs"
146
+ ? `Difference ${result.configPath} differs. Nothing written; use --force to overwrite.`
147
+ : `--dry-run ${result.configPath} would change (nothing written).`,
148
+ ...formatChanges(result),
149
+ ];
150
+ default:
151
+ return [];
152
+ }
153
+ }
154
+ /** At most 40 changed lines; more than that is a rewrite, not a diff. */
155
+ function formatChanges(result) {
156
+ const shown = result.changes.slice(0, 40);
157
+ const lines = shown.map((change) => ` ${change.kind === "added" ? "+" : "-"} ${change.line}`);
158
+ if (result.changes.length > shown.length) {
159
+ lines.push(` … ${formatCount(result.changes.length - shown.length)} additional lines`);
160
+ }
161
+ return lines;
162
+ }
163
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/commands/init/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * `untangle init` — the command a user runs first.
3
+ *
4
+ * It reads a project, decides, writes one commented file, and names one next
5
+ * step. It asks nothing. Everything it cannot determine becomes a documented
6
+ * finding, never a prompt and never an abort: an absent embedding provider,
7
+ * an absent vector store, an unreadable manifest are all things a
8
+ * configuration can be written AROUND (WP-125).
9
+ *
10
+ * WRITE SAFETY: the file goes to a temporary sibling and is renamed into
11
+ * place, so an interrupted run can never leave half a configuration behind.
12
+ * An existing file is replaced only with `--force`; the run that declines to
13
+ * replace it says exactly which lines would have differed.
14
+ *
15
+ * This module is free of argv and of output formatting — `command.ts` binds
16
+ * it to the CLI shell. That split is what lets the whole command be tested
17
+ * against an in-memory file system and a probe that answers nothing.
18
+ */
19
+ import type { FileSystemPort, ParserRegistry } from "@untangle-code/domain";
20
+ import type { HttpProbePort, InitLimitsV1, InitOutcome, InitResultV1 } from "./types.js";
21
+ /** The file `init` writes. */
22
+ export declare const CONFIG_FILE_NAME = "untangle.toml";
23
+ /** Suffix of the temporary sibling used for the atomic write. */
24
+ export declare const TEMP_SUFFIX = ".untangle-init-tmp";
25
+ /** Ports and overrides. Every one of them has a real default; tests replace them. */
26
+ export interface InitDepsV1 {
27
+ fs?: FileSystemPort;
28
+ http?: HttpProbePort;
29
+ parserRegistry?: ParserRegistry;
30
+ env?: Readonly<Record<string, string | undefined>>;
31
+ limits?: Partial<InitLimitsV1>;
32
+ signal?: AbortSignal;
33
+ }
34
+ export interface InitOptionsV1 {
35
+ /** Absolute directory to initialise. */
36
+ root: string;
37
+ force: boolean;
38
+ dryRun: boolean;
39
+ /** Skip every network probe; the infrastructure counts as absent. */
40
+ offline: boolean;
41
+ /** Explicit selection; otherwise environment and existing configuration apply. */
42
+ storageBackend?: "lancedb" | "qdrant";
43
+ preferredModel?: string;
44
+ /** Product intent sources, relative to the chosen project root. */
45
+ visionPath?: string;
46
+ specPath?: string;
47
+ featureManifestPath?: string;
48
+ }
49
+ /** The command proper. Returns a result; never writes to a terminal. */
50
+ export declare function runInit(options: InitOptionsV1, deps?: InitDepsV1): Promise<InitResultV1>;
51
+ /**
52
+ * The whole decision table of idempotency, in one place.
53
+ *
54
+ * `--dry-run` never writes and never fails: it reports. Without `--force` an
55
+ * existing, differing file is left alone — the second run "meldet, was sich
56
+ * geaendert hat" instead of quietly rewriting a file the user may well have
57
+ * edited on purpose.
58
+ */
59
+ export declare function decideOutcome(existing: string | null, rendered: string, options: Pick<InitOptionsV1, "force" | "dryRun">): InitOutcome;
60
+ /**
61
+ * Which vector-store URLs get probed.
62
+ *
63
+ * WP-222: this no longer decides anything — it asks
64
+ * `cli/vector-store-policy.ts`, the one place that knows which store Untangle
65
+ * may use, and which `untangle doctor` obeys through `wireStorage`. An
66
+ * explicitly configured `UNTANGLE_QDRANT_URL` comes first ("this one is
67
+ * mine"), the managed default follows, and upstream's default port is
68
+ * skipped WITH ITS REASON rather than silently absent (E4).
69
+ */
70
+ export declare function qdrantProbeList(env: Readonly<Record<string, string | undefined>>): string[];
71
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/init/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAoB/F,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EAGb,MAAM,YAAY,CAAC;AAEpB,8BAA8B;AAC9B,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,iEAAiE;AACjE,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAEhD,qFAAqF;AACrF,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,kFAAkF;IAClF,cAAc,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wEAAwE;AACxE,wBAAsB,OAAO,CAC3B,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,YAAY,CAAC,CA6DvB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC,GAC/C,WAAW,CAWb;AA0GD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,EAAE,CAE3F"}
@@ -0,0 +1,253 @@
1
+ /**
2
+ * `untangle init` — the command a user runs first.
3
+ *
4
+ * It reads a project, decides, writes one commented file, and names one next
5
+ * step. It asks nothing. Everything it cannot determine becomes a documented
6
+ * finding, never a prompt and never an abort: an absent embedding provider,
7
+ * an absent vector store, an unreadable manifest are all things a
8
+ * configuration can be written AROUND (WP-125).
9
+ *
10
+ * WRITE SAFETY: the file goes to a temporary sibling and is renamed into
11
+ * place, so an interrupted run can never leave half a configuration behind.
12
+ * An existing file is replaced only with `--force`; the run that declines to
13
+ * replace it says exactly which lines would have differed.
14
+ *
15
+ * This module is free of argv and of output formatting — `command.ts` binds
16
+ * it to the CLI shell. That split is what lets the whole command be tested
17
+ * against an in-memory file system and a probe that answers nothing.
18
+ */
19
+ import path from "node:path";
20
+ import { analyzeProductAlignment } from "@untangle-code/core";
21
+ import { summarizeSkipReasons } from "@untangle-code/domain";
22
+ import { createParserRegistry } from "@untangle-code/parser-registry";
23
+ import { NodeFileSystem } from "@untangle-code/scanner/node-fs";
24
+ import { OperationalError } from "../../cli/exit.js";
25
+ import { qdrantProbePlan } from "../../cli/vector-store-policy.js";
26
+ import { buildConfigDraft, deriveProjectId, nextStepFor } from "./config-draft.js";
27
+ import { diffLines, toLines } from "./diff.js";
28
+ import { nodeHttpProbe, offlineProbe } from "./http-probe.js";
29
+ import { detectIgnoreRules } from "./ignore-rules.js";
30
+ import { buildLanguageCensus } from "./languages.js";
31
+ import { assessProductContext } from "./product-context.js";
32
+ import { renderUntangleToml } from "./render.js";
33
+ import { DEFAULT_OLLAMA_URL, probeOllama, probeQdrant } from "./services.js";
34
+ import { inspectInitStorage } from "./storage.js";
35
+ import { detectTopology } from "./topology.js";
36
+ import { DEFAULT_INIT_LIMITS } from "./types.js";
37
+ /** The file `init` writes. */
38
+ export const CONFIG_FILE_NAME = "untangle.toml";
39
+ /** Suffix of the temporary sibling used for the atomic write. */
40
+ export const TEMP_SUFFIX = ".untangle-init-tmp";
41
+ /** The command proper. Returns a result; never writes to a terminal. */
42
+ export async function runInit(options, deps = {}) {
43
+ deps.signal?.throwIfAborted();
44
+ const fs = deps.fs ?? new NodeFileSystem();
45
+ const http = deps.http ?? (options.offline ? offlineProbe() : nodeHttpProbe());
46
+ const parserRegistry = deps.parserRegistry ?? createParserRegistry();
47
+ const env = deps.env ?? process.env;
48
+ const limits = { ...DEFAULT_INIT_LIMITS, ...deps.limits };
49
+ const root = await canonicalRoot(fs, options.root);
50
+ const storage = await inspectInitStorage(fs, root, options.storageBackend, env, deps.signal);
51
+ const findings = await collectFindings({
52
+ fs,
53
+ http,
54
+ parserRegistry,
55
+ env,
56
+ limits,
57
+ root,
58
+ storage,
59
+ ...(options.preferredModel === undefined ? {} : { preferredModel: options.preferredModel }),
60
+ ...(options.visionPath === undefined ? {} : { visionPath: options.visionPath }),
61
+ ...(options.specPath === undefined ? {} : { specPath: options.specPath }),
62
+ ...(options.featureManifestPath === undefined
63
+ ? {}
64
+ : { featureManifestPath: options.featureManifestPath }),
65
+ ...(deps.signal === undefined ? {} : { signal: deps.signal }),
66
+ });
67
+ deps.signal?.throwIfAborted();
68
+ const draft = buildConfigDraft(findings);
69
+ const nextStep = nextStepFor(findings);
70
+ const rendered = renderUntangleToml({ findings, draft, limits, nextStep });
71
+ const configPath = path.join(root, CONFIG_FILE_NAME);
72
+ const base = {
73
+ configPath,
74
+ findings,
75
+ rendered,
76
+ nextStep,
77
+ configWarnings: draft.warnings,
78
+ configErrors: draft.errors,
79
+ };
80
+ if (draft.errors.length > 0) {
81
+ // A configuration the rest of the product would reject is not written at
82
+ // all. Reporting it and stopping is the only honest outcome.
83
+ return { ...base, outcome: "differs", changes: [], exitCode: 1 };
84
+ }
85
+ const existing = await readOptionalText(fs, configPath);
86
+ deps.signal?.throwIfAborted();
87
+ const outcome = decideOutcome(existing, rendered, options);
88
+ const changes = existing === null || existing === rendered
89
+ ? []
90
+ : diffLines(toLines(existing), toLines(rendered));
91
+ if (outcome === "created" || outcome === "overwritten") {
92
+ await writeAtomically(fs, configPath, rendered, deps.signal);
93
+ }
94
+ return { ...base, outcome, changes, exitCode: outcome === "differs" ? 1 : 0 };
95
+ }
96
+ /**
97
+ * The whole decision table of idempotency, in one place.
98
+ *
99
+ * `--dry-run` never writes and never fails: it reports. Without `--force` an
100
+ * existing, differing file is left alone — the second run "meldet, was sich
101
+ * geaendert hat" instead of quietly rewriting a file the user may well have
102
+ * edited on purpose.
103
+ */
104
+ export function decideOutcome(existing, rendered, options) {
105
+ if (existing === null) {
106
+ return options.dryRun ? "would-create" : "created";
107
+ }
108
+ if (existing === rendered) {
109
+ return options.dryRun ? "would-be-unchanged" : "unchanged";
110
+ }
111
+ if (options.dryRun) {
112
+ return "would-overwrite";
113
+ }
114
+ return options.force ? "overwritten" : "differs";
115
+ }
116
+ async function collectFindings(input) {
117
+ const { fs, http, parserRegistry, env, limits, root } = input;
118
+ const skipEntries = [];
119
+ const onSkipEntry = (entry) => {
120
+ skipEntries.push(entry);
121
+ };
122
+ // Ignore rules first: their result narrows the scan that follows.
123
+ const ignore = await detectIgnoreRules({ fs, repoRoot: root });
124
+ const files = [];
125
+ const languages = await buildLanguageCensus({
126
+ fs,
127
+ parserRegistry,
128
+ repoRoot: root,
129
+ limits,
130
+ additionalExcludes: ignore.additionalExcludes,
131
+ selfManagedPaths: [CONFIG_FILE_NAME, `${CONFIG_FILE_NAME}${TEMP_SUFFIX}`],
132
+ onSkipEntry,
133
+ onDiscoveredFile: (file) => files.push(file),
134
+ ...(input.signal === undefined ? {} : { signal: input.signal }),
135
+ });
136
+ const topology = await detectTopology({ fs, repoRoot: root, limits, onSkipEntry });
137
+ const productContext = await assessProductContext({
138
+ fs,
139
+ root,
140
+ files,
141
+ inventoryTruncated: languages.truncated,
142
+ ...(input.visionPath === undefined ? {} : { visionPath: input.visionPath }),
143
+ ...(input.specPath === undefined ? {} : { specPath: input.specPath }),
144
+ ...(input.signal === undefined ? {} : { signal: input.signal }),
145
+ });
146
+ const featureAlignment = await analyzeProductAlignment({
147
+ fs,
148
+ root,
149
+ files,
150
+ inventoryTruncated: languages.truncated,
151
+ inventoryExcluded: languages.excluded.reduce((sum, entry) => sum + entry.count, 0),
152
+ inventoryScope: {
153
+ additionalDefaultExcludes: ignore.additionalExcludes,
154
+ maxFileSizeBytes: limits.maxFileSizeBytes,
155
+ maxFilesScanned: limits.maxFilesScanned,
156
+ concurrency: limits.concurrency,
157
+ },
158
+ parserRegistry,
159
+ ...(input.featureManifestPath === undefined ? {} : { manifestPath: input.featureManifestPath }),
160
+ ...(input.signal === undefined ? {} : { signal: input.signal }),
161
+ });
162
+ const probeInput = {
163
+ http,
164
+ limits,
165
+ ollamaUrl: env["UNTANGLE_OLLAMA_URL"] ?? env["UNTANGLE_EMBEDDINGS_URL"] ?? DEFAULT_OLLAMA_URL,
166
+ qdrantUrls: qdrantProbeList({
167
+ ...env,
168
+ ...(input.storage.qdrantUrl === undefined
169
+ ? {}
170
+ : { UNTANGLE_QDRANT_URL: input.storage.qdrantUrl }),
171
+ }),
172
+ ...(input.preferredModel === undefined ? {} : { preferredModel: input.preferredModel }),
173
+ };
174
+ const ollama = await probeOllama(probeInput);
175
+ const qdrant = input.storage.backend === "qdrant"
176
+ ? await probeQdrant(probeInput)
177
+ : { outcome: "not-probed", probedUrls: [], skippedUrls: [] };
178
+ return {
179
+ schemaVersion: 1,
180
+ root,
181
+ projectId: deriveProjectId(path.basename(root)),
182
+ languages,
183
+ topology,
184
+ productContext,
185
+ featureAlignment,
186
+ ignore,
187
+ ollama,
188
+ qdrant,
189
+ storage: input.storage,
190
+ skipped: {
191
+ schemaVersion: 1,
192
+ generationId: "untangle-init",
193
+ entries: skipEntries,
194
+ countsByReason: summarizeSkipReasons(skipEntries),
195
+ },
196
+ };
197
+ }
198
+ /**
199
+ * Which vector-store URLs get probed.
200
+ *
201
+ * WP-222: this no longer decides anything — it asks
202
+ * `cli/vector-store-policy.ts`, the one place that knows which store Untangle
203
+ * may use, and which `untangle doctor` obeys through `wireStorage`. An
204
+ * explicitly configured `UNTANGLE_QDRANT_URL` comes first ("this one is
205
+ * mine"), the managed default follows, and upstream's default port is
206
+ * skipped WITH ITS REASON rather than silently absent (E4).
207
+ */
208
+ export function qdrantProbeList(env) {
209
+ return qdrantProbePlan(env).probe;
210
+ }
211
+ async function canonicalRoot(fs, candidate) {
212
+ const stat = await fs.stat(candidate);
213
+ if (stat === null) {
214
+ throw new OperationalError(`Directory "${candidate}" does not exist.`, "Create it or select an existing directory with --root.");
215
+ }
216
+ if (stat.kind !== "directory") {
217
+ throw new OperationalError(`"${candidate}" is not a directory.`, "init requires a project's root directory.");
218
+ }
219
+ try {
220
+ return await fs.realPath(candidate);
221
+ }
222
+ catch {
223
+ return candidate;
224
+ }
225
+ }
226
+ async function readOptionalText(fs, filePath) {
227
+ const stat = await fs.stat(filePath);
228
+ if (stat === null || stat.kind !== "file") {
229
+ return null;
230
+ }
231
+ return fs.readTextFile(filePath);
232
+ }
233
+ /**
234
+ * Temp file plus rename. `rename` is atomic within a directory on every
235
+ * platform Untangle supports, so a reader sees either the old file or the new
236
+ * one — never a truncated one.
237
+ */
238
+ async function writeAtomically(fs, filePath, text, signal) {
239
+ const temporary = `${filePath}${TEMP_SUFFIX}`;
240
+ signal?.throwIfAborted();
241
+ const callOptions = signal === undefined ? undefined : { signal };
242
+ try {
243
+ await fs.writeFile(temporary, new TextEncoder().encode(text), callOptions);
244
+ signal?.throwIfAborted();
245
+ await fs.rename(temporary, filePath, callOptions);
246
+ }
247
+ catch (error) {
248
+ await fs.remove(temporary).catch(() => undefined);
249
+ signal?.throwIfAborted();
250
+ throw new OperationalError(`Writing "${filePath}" failed: ${error instanceof Error ? error.message : String(error)}`, `Check write permissions for "${path.dirname(filePath)}".`, { cause: error });
251
+ }
252
+ }
253
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/init/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAUjD,8BAA8B;AAC9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAChD,iEAAiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AA4BhD,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAsB,EACtB,OAAmB,EAAE;IAErB,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,cAAc,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;IAC/E,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,oBAAoB,EAAE,CAAC;IACrE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,MAAM,MAAM,GAAiB,EAAE,GAAG,mBAAmB,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAExE,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;QACrC,EAAE;QACF,IAAI;QACJ,cAAc;QACd,GAAG;QACH,MAAM;QACN,IAAI;QACJ,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3F,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/E,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzE,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS;YAC3C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACzD,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;KAC9D,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IAE9B,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG;QACX,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,cAAc,EAAE,KAAK,CAAC,QAAQ;QAC9B,YAAY,EAAE,KAAK,CAAC,MAAM;KAC3B,CAAC;IAEF,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,yEAAyE;QACzE,6DAA6D;QAC7D,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,OAAO,GACX,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,QAAQ;QACxC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEtD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QACvD,MAAM,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAuB,EACvB,QAAgB,EAChB,OAAgD;IAEhD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IACD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAiBD,KAAK,UAAU,eAAe,CAAC,KAAmB;IAChD,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAC9D,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,CAAC,KAAwB,EAAQ,EAAE;QACrD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,kEAAkE;IAClE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC;QAC1C,EAAE;QACF,cAAc;QACd,QAAQ,EAAE,IAAI;QACd,MAAM;QACN,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,WAAW,EAAE,CAAC;QACzE,WAAW;QACX,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;KAChE,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACnF,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC;QAChD,EAAE;QACF,IAAI;QACJ,KAAK;QACL,kBAAkB,EAAE,SAAS,CAAC,SAAS;QACvC,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QAC3E,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;KAChE,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC;QACrD,EAAE;QACF,IAAI;QACJ,KAAK;QACL,kBAAkB,EAAE,SAAS,CAAC,SAAS;QACvC,iBAAiB,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAClF,cAAc,EAAE;YACd,yBAAyB,EAAE,MAAM,CAAC,kBAAkB;YACpD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC;QACD,cAAc;QACd,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC/F,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;KAChE,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG;QACjB,IAAI;QACJ,MAAM;QACN,SAAS,EAAE,GAAG,CAAC,qBAAqB,CAAC,IAAI,GAAG,CAAC,yBAAyB,CAAC,IAAI,kBAAkB;QAC7F,UAAU,EAAE,eAAe,CAAC;YAC1B,GAAG,GAAG;YACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SACtD,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;KACxF,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,MAAM,GACV,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ;QAChC,CAAC,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC;QAC/B,CAAC,CAAC,EAAE,OAAO,EAAE,YAAqB,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAE1E,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,IAAI;QACJ,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,SAAS;QACT,QAAQ;QACR,cAAc;QACd,gBAAgB;QAChB,MAAM;QACN,MAAM;QACN,MAAM;QACN,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE;YACP,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,eAAe;YAC7B,OAAO,EAAE,WAAW;YACpB,cAAc,EAAE,oBAAoB,CAAC,WAAW,CAAC;SAClD;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,GAAiD;IAC/E,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,EAAkB,EAAE,SAAiB;IAChE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,gBAAgB,CACxB,cAAc,SAAS,mBAAmB,EAC1C,wDAAwD,CACzD,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,MAAM,IAAI,gBAAgB,CACxB,IAAI,SAAS,uBAAuB,EACpC,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,EAAkB,EAAE,QAAgB;IAClE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,eAAe,CAC5B,EAAkB,EAClB,QAAgB,EAChB,IAAY,EACZ,MAAoB;IAEpB,MAAM,SAAS,GAAG,GAAG,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC9C,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;QAC3E,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,MAAM,IAAI,gBAAgB,CACxB,YAAY,QAAQ,aAAa,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACzF,gCAAgC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAC1D,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Probing the two pieces of infrastructure Untangle needs.
3
+ *
4
+ * READ-ONLY, ON PURPOSE. `HttpProbePort` can issue a GET and nothing else, so
5
+ * `init` is structurally incapable of changing a service it finds — which is
6
+ * what spec.md §3.2 demands of External Infrastructure mode ("Untangle DARF in
7
+ * diesem Modus keine fremden Prozesse oder Container verändern").
8
+ *
9
+ * WHICH URLS ARE PROBED AT ALL IS NOT DECIDED HERE ANY MORE (WP-222). That
10
+ * rule lives in `cli/vector-store-policy.ts` and is the SAME rule
11
+ * `untangle doctor` obeys. It used to be written out twice — once here, once
12
+ * (by omission) in `doctor` — and the two disagreed: `init` refused upstream's
13
+ * default port 6333 citing spec.md §3.2, while `doctor` fell back onto it,
14
+ * found the foreign instance living there and reported it as healthy. Two
15
+ * commands of one tool, two answers to a safety question. One rule, one
16
+ * file, one answer.
17
+ *
18
+ * NOT FINDING EITHER SERVICE IS NOT AN ERROR (WP-125): the configuration is
19
+ * written regardless, and the command names exactly one next step.
20
+ */
21
+ import type { EmbeddingModelInfoV1, HttpProbePort, InitLimitsV1, OllamaFindingsV1, QdrantFindingsV1 } from "./types.js";
22
+ /** Native Ollama probe target (spec.md §3.1). */
23
+ export declare const DEFAULT_OLLAMA_URL = "http://127.0.0.1:11434";
24
+ /**
25
+ * Managed Qdrant REST port (spec.md §3.1) — re-exported, NOT redefined. The
26
+ * value belongs to the shared policy; a second copy here is exactly how the
27
+ * two commands drifted apart in the first place.
28
+ */
29
+ export declare const DEFAULT_QDRANT_URL = "http://127.0.0.1:16333";
30
+ /**
31
+ * Reads `/api/tags` into the embedding models it describes.
32
+ *
33
+ * The provider reports `capabilities`, `embedding_length` and
34
+ * `context_length` per model, so the vector width is READ, never guessed and
35
+ * never obtained by sending the model something to embed. A model that
36
+ * predates the `capabilities` field is still recognised by the presence of an
37
+ * `embedding_length`, which only embedding models carry.
38
+ */
39
+ export declare function readEmbeddingModels(payload: unknown): EmbeddingModelInfoV1[];
40
+ export interface ModelChoiceV1 {
41
+ model: EmbeddingModelInfoV1;
42
+ reason: string;
43
+ }
44
+ /**
45
+ * Chooses one embedding model out of what the provider actually has.
46
+ *
47
+ * The rule, in order: the widest context window first, because a code chunk
48
+ * that does not fit is a chunk that gets truncated; then the widest vector,
49
+ * because that is the model with more to say; then codepoint order, so the
50
+ * decision never depends on the order the provider happened to list its
51
+ * models in. `preferred` (an explicit user choice) short-circuits all of it.
52
+ *
53
+ * Deliberately NOT "whatever the product default is called": on a machine
54
+ * that has three embedding models and not the default one, silently falling
55
+ * back to a name that is not installed produces a configuration that fails on
56
+ * first use.
57
+ */
58
+ export declare function chooseEmbeddingModel(models: readonly EmbeddingModelInfoV1[], preferred?: string): ModelChoiceV1 | undefined;
59
+ export interface ProbeInput {
60
+ http: HttpProbePort;
61
+ limits: InitLimitsV1;
62
+ /** `UNTANGLE_OLLAMA_URL` when set. */
63
+ ollamaUrl: string;
64
+ /** `UNTANGLE_QDRANT_URL` when set — probed BEFORE the managed default. */
65
+ qdrantUrls: readonly string[];
66
+ /** Model name from `--embedding-model`, when given. */
67
+ preferredModel?: string;
68
+ }
69
+ /**
70
+ * WP-228: Erreichbarkeit heisst NICHT „benutzbar".
71
+ *
72
+ * Bis hierher fragte `init` nur `/api/version` und `/api/tags` — zwei
73
+ * Endpunkte, die der Indexlauf nie anfasst. Auf dem Rechner, an dem das
74
+ * gemessen wurde, antworteten beide sofort, waehrend `/api/embed` haengte:
75
+ * die geschriebene Konfiguration versprach einen Dienst, der keinen einzigen
76
+ * Chunk einbetten konnte. Deshalb wird jetzt der Endpunkt geprueft, den das
77
+ * Produkt WIRKLICH benutzt — mit kurzer Frist, und ein Fristablauf ist ein
78
+ * Befund, keine bestandene Pruefung.
79
+ */
80
+ export declare function probeOllama(input: ProbeInput): Promise<OllamaFindingsV1>;
81
+ export declare function probeQdrant(input: ProbeInput): Promise<QdrantFindingsV1>;
82
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../src/commands/init/services.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,iDAAiD;AACjD,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,2BAAqB,CAAC;AAarD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,EAAE,CAmC5E;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,oBAAoB,EAAE,EACvC,SAAS,CAAC,EAAE,MAAM,GACjB,aAAa,GAAG,SAAS,CA6B3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmC9E;AAoBD,wBAAsB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwB9E"}