@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,149 @@
1
+ /**
2
+ * Die Laufzeitkanten des Waechters: Uhr, Zufall, Ignorierregeln, Ausgabe.
3
+ *
4
+ * Alles hier ist bewusst DUENN. Es ist der Kompositionswurzel-Anteil des
5
+ * CLI — die Stelle, an der die reinen Pakete an echte Uhr, echten Zufall und
6
+ * echte Dateien angeschlossen werden. Kein Paket unterhalb davon liest
7
+ * jemals selbst die Uhr oder `node:fs` (siehe die Port-Dokumentation in
8
+ * `packages/domain/src/ports.ts`).
9
+ */
10
+ import { createHash, randomBytes, randomUUID } from "node:crypto";
11
+ import { createWriteStream, readFileSync } from "node:fs";
12
+ import path from "node:path";
13
+ import { createIgnoreEngine } from "@untangle-code/scanner";
14
+ /**
15
+ * Wanduhrzeit fuer Protokollzeitstempel und die Buchfuehrung der Lock-Lease.
16
+ * Ergebnisdaten (Metriken, Deltas) enthalten NIE eine Uhrzeit — dort waere
17
+ * sie ein Determinismusbruch; hier ist sie genau der Zweck.
18
+ */
19
+ export class SystemClock {
20
+ nowEpochMs() {
21
+ // Die EINZIGE echte Uhrzeitablesung des Waechters, und zwar mit Absicht
22
+ // an genau dieser Stelle: `SystemClock` IST die Umsetzung des
23
+ // `Clock`-Ports. Jede andere Datei dieses Kommandos liest die Zeit nur
24
+ // ueber den Port (`deps.clock`), damit ein Test sie durch eine feste Uhr
25
+ // ersetzen kann. Dieselbe Ausnahme, dieselbe Begruendung wie in
26
+ // `packages/storage-local/src/real-time.ts` und `@untangle-code/testkit`.
27
+ // eslint-disable-next-line no-restricted-syntax -- siehe Begruendung darueber.
28
+ return Date.now();
29
+ }
30
+ nowIso() {
31
+ return new Date(this.nowEpochMs()).toISOString();
32
+ }
33
+ }
34
+ /**
35
+ * Kryptografischer Zufall fuer Lock-Datensatz-Ids. Ebenfalls kein Bestandteil
36
+ * von Ergebnisdaten — `FileLockProvider` braucht eine eindeutige Kennung je
37
+ * Lease, sonst koennte ein zweiter Prozess eine fremde Lease erneuern.
38
+ */
39
+ export class CryptoRandom {
40
+ nextFloat() {
41
+ const buffer = randomBytes(6).readUIntBE(0, 6);
42
+ return buffer / 2 ** 48;
43
+ }
44
+ nextInt(maxExclusive) {
45
+ if (!Number.isInteger(maxExclusive) || maxExclusive <= 0) {
46
+ throw new RangeError(`nextInt requires a positive integer; received ${maxExclusive}`);
47
+ }
48
+ return Math.floor(this.nextFloat() * maxExclusive);
49
+ }
50
+ bytes(length) {
51
+ return new Uint8Array(randomBytes(length));
52
+ }
53
+ uuid() {
54
+ return randomUUID();
55
+ }
56
+ }
57
+ /**
58
+ * Ignorierregeln fuer den Watcher.
59
+ *
60
+ * `RepoWatcher`/`reconcileTree` kennen absichtlich keine
61
+ * `.gitignore`-Schichtung (siehe deren Modul-Doku: "a caller wiring a real
62
+ * indexing pipeline is expected to pass an `ignore` backed by scanner's own
63
+ * `IgnoreEngine`") — genau das passiert hier.
64
+ *
65
+ * DER EIGENE ZUSTANDSORDNER IST IMMER AUSGESCHLOSSEN. `.untangle/` steht zwar
66
+ * in der `.gitignore` DIESES Repositories, aber darauf darf sich der Waechter
67
+ * nicht verlassen: wird ein Unterverzeichnis ohne eigene `.gitignore` als
68
+ * `--root` beobachtet, legt der Waechter dort seinen Lock ab, sieht die
69
+ * Lock-Datei als Aenderung, erneuert die Lease, sieht die naechste Aenderung —
70
+ * eine Rueckkopplung auf sich selbst. Der Ausschluss ist deshalb fest
71
+ * verdrahtet und nicht ueber eine Regeldatei erschlagen.
72
+ *
73
+ * BEKANNTE GRENZE, ausdruecklich benannt statt verschwiegen: der Watcher
74
+ * ruft das Praedikat mit einem Pfad auf, OHNE zu sagen, ob es ein
75
+ * Verzeichnis ist (der `stat` folgt erst danach). Das Praedikat fragt die
76
+ * `IgnoreEngine` deshalb in beiden Lesarten und ignoriert, sobald eine der
77
+ * beiden ignoriert. Ausserdem wird nur die `.gitignore` der Baumwurzel als
78
+ * Schicht gelegt, keine verschachtelten — der Scanner leistet das im
79
+ * Indexlauf, der Waechter hier nicht.
80
+ */
81
+ /** Der Zustandsordner des Waechters, relativ zum beobachteten Baum. */
82
+ export const STATE_DIR_NAME = ".untangle";
83
+ export function createIgnorePredicate(rootPath) {
84
+ const engine = createIgnoreEngine();
85
+ const rootGitignore = readFileIfPresent(path.join(rootPath, ".gitignore"));
86
+ if (rootGitignore !== null)
87
+ engine.pushGitignoreLayer("", rootGitignore);
88
+ const rootUntangleignore = readFileIfPresent(path.join(rootPath, ".untangleignore"));
89
+ if (rootUntangleignore !== null)
90
+ engine.pushUntangleIgnoreLayer("", rootUntangleignore);
91
+ const cache = new Map();
92
+ return (relativePath) => {
93
+ const cached = cache.get(relativePath);
94
+ if (cached !== undefined)
95
+ return cached;
96
+ const decision = relativePath === STATE_DIR_NAME ||
97
+ relativePath.startsWith(`${STATE_DIR_NAME}/`) ||
98
+ engine.decide(relativePath, false).ignored ||
99
+ engine.decide(relativePath, true).ignored;
100
+ cache.set(relativePath, decision);
101
+ return decision;
102
+ };
103
+ }
104
+ function readFileIfPresent(absolutePath) {
105
+ try {
106
+ return readFileSync(absolutePath, "utf8");
107
+ }
108
+ catch {
109
+ return null;
110
+ }
111
+ }
112
+ export function createStreamSink(options) {
113
+ let file = null;
114
+ if (options.outPath !== null) {
115
+ file = createWriteStream(options.outPath, { flags: "a", encoding: "utf8" });
116
+ }
117
+ return {
118
+ write(line) {
119
+ options.stdout(`${line}\n`);
120
+ file?.write(`${stripAnsi(line)}\n`);
121
+ },
122
+ async close() {
123
+ const stream = file;
124
+ if (stream === null)
125
+ return;
126
+ await new Promise((resolve) => {
127
+ stream.end(() => {
128
+ resolve();
129
+ });
130
+ });
131
+ },
132
+ };
133
+ }
134
+ /**
135
+ * Entfernt ANSI-Steuerzeichen fuer die Mitschrift. Eine Logdatei voller
136
+ * Farbcodes ist keine Mitschrift.
137
+ */
138
+ export function stripAnsi(text) {
139
+ // Es GEHT hier um ein Steuerzeichen: die Regel warnt vor einem versehentlich
140
+ // in ein Muster geratenen Steuerzeichen, und genau dieses soll entfernt
141
+ // werden.
142
+ // eslint-disable-next-line no-control-regex -- siehe Begruendung darueber.
143
+ return text.replace(/\u001B\[[0-9;]*m/g, "");
144
+ }
145
+ /** SHA-256-Hex, fuer die kurze Kennung des gemessenen Standes. */
146
+ export function shortDigest(input) {
147
+ return createHash("sha256").update(input, "utf8").digest("hex").slice(0, 16);
148
+ }
149
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/commands/watch/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "../cli/command.js";
2
+ export declare const watchCommand: Command;
3
+ //# sourceMappingURL=watch-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-command.d.ts","sourceRoot":"","sources":["../../src/commands/watch-command.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,mBAAmB,CAAC;AAuIjE,eAAO,MAAM,YAAY,EAAE,OA0I1B,CAAC"}
@@ -0,0 +1,273 @@
1
+ /**
2
+ * `watch` als Unterbefehl des CLI-Rahmens (WP-124) — die Naht zwischen dem
3
+ * Befehlsvertrag aus `src/cli/command.ts` und dem Komplexitaetswaechter aus
4
+ * `src/commands/watch/` (WP-128).
5
+ *
6
+ * WARUM DIESE DATEI HIER LIEGT UND NICHT IN `commands/watch/`: der Waechter
7
+ * ist bewusst frei von Abhaengigkeiten auf den Rahmen — er baut und laeuft
8
+ * fuer sich allein (`tsconfig.watch.json`, `dist/commands/watch/cli.js`).
9
+ * Die Abhaengigkeit zeigt deshalb in genau eine Richtung: dieser Adapter
10
+ * kennt beide Seiten, der Waechter kennt den Rahmen nicht.
11
+ *
12
+ * WAS DIESE DATEI ERSETZT: `commands/unavailable.ts` fuehrte `watch` bisher
13
+ * als noch nicht gebaute Faehigkeit. Das stimmt nicht mehr; einen fertigen
14
+ * Befehl weiter als unverfuegbar auszuweisen waere dieselbe Unwahrheit wie
15
+ * eine vorgetaeuschte Faehigkeit, nur in die andere Richtung.
16
+ */
17
+ import { hostname } from "node:os";
18
+ import path from "node:path";
19
+ import { enumFlag, integerFlag, stringFlag } from "../cli/args.js";
20
+ import { EXIT, UsageError } from "../cli/exit.js";
21
+ import { runIndexWatch } from "./index-watch.js";
22
+ import { parseWatchArgs } from "./watch/options.js";
23
+ import { runWatch } from "./watch/run.js";
24
+ import { CryptoRandom, SystemClock } from "./watch/runtime.js";
25
+ const FLAGS = {
26
+ index: {
27
+ kind: "boolean",
28
+ describe: "Keep the search index current: check freshness and update changes serially",
29
+ defaultLabel: "off; otherwise complexity stream",
30
+ },
31
+ repo: {
32
+ kind: "string",
33
+ placeholder: "ID",
34
+ describe: "--index: configured repository; required when several are configured",
35
+ },
36
+ ref: {
37
+ kind: "string",
38
+ placeholder: "NAME",
39
+ describe: "--index: checked-out ref; otherwise the current branch",
40
+ },
41
+ embedder: {
42
+ kind: "string",
43
+ placeholder: "auto|offline",
44
+ describe: "--index: current index profile, otherwise service; offline explicitly uses local vectors",
45
+ defaultLabel: "auto",
46
+ },
47
+ root: {
48
+ kind: "string",
49
+ placeholder: "PATH",
50
+ describe: "Tree to watch",
51
+ defaultLabel: "current directory",
52
+ },
53
+ "repo-id": {
54
+ kind: "string",
55
+ placeholder: "ID",
56
+ describe: "Repository identity for the ref lock",
57
+ defaultLabel: "directory name",
58
+ },
59
+ "ref-id": {
60
+ kind: "string",
61
+ placeholder: "ID",
62
+ describe: "Ref identity for the ref lock",
63
+ defaultLabel: "<repo-id>:working-tree",
64
+ },
65
+ format: {
66
+ kind: "string",
67
+ placeholder: "text|json",
68
+ describe: "Stream output format; json writes one JSON line per event",
69
+ defaultLabel: "text",
70
+ },
71
+ out: {
72
+ kind: "string",
73
+ placeholder: "FILE",
74
+ describe: "Also save the stream, always without control characters",
75
+ },
76
+ color: {
77
+ kind: "boolean",
78
+ describe: "Terminal colors (--no-color disables them)",
79
+ defaultLabel: "enabled when stdout is a terminal",
80
+ },
81
+ debounce: {
82
+ kind: "number",
83
+ placeholder: "MS",
84
+ describe: "Debounce quiet period",
85
+ defaultLabel: "200",
86
+ },
87
+ reconcile: {
88
+ kind: "number",
89
+ placeholder: "MS",
90
+ describe: "Reconciliation interval; --index: freshness-check interval",
91
+ defaultLabel: "30000",
92
+ },
93
+ "max-file-bytes": {
94
+ kind: "number",
95
+ placeholder: "N",
96
+ describe: "Maximum file size; larger files enter the ledger with a reason",
97
+ defaultLabel: "5242880",
98
+ },
99
+ scopes: {
100
+ kind: "number",
101
+ placeholder: "N",
102
+ describe: "Maximum contribution locations reported per change",
103
+ defaultLabel: "5",
104
+ },
105
+ "exit-after": {
106
+ kind: "number",
107
+ placeholder: "N",
108
+ describe: "Stop cleanly after N changes; --index: after N updates",
109
+ defaultLabel: "on signal only",
110
+ },
111
+ "baseline-only": {
112
+ kind: "boolean",
113
+ describe: "Baseline only; --index: check freshness once and update if needed",
114
+ defaultLabel: "off",
115
+ },
116
+ };
117
+ /**
118
+ * Setzt die zerlegten Flags in die kanonische Aufrufform des Waechters
119
+ * zurueck und laesst dessen EIGENEN Parser darueber laufen.
120
+ *
121
+ * Das sieht nach einem Umweg aus und ist genau deshalb richtig: Vorgaben,
122
+ * Wertebereiche und Fehlermeldungen des Waechters stehen damit an EINER
123
+ * Stelle (`watch/options.ts`) und koennen zwischen dem Rahmenaufruf
124
+ * (`untangle watch`) und dem Direktaufruf (`dist/commands/watch/cli.js`)
125
+ * nicht auseinanderlaufen. Eine zweite, hier nachgebaute Vorgabenliste waere
126
+ * die klassische Stelle, an der ein Werkzeug je nach Aufrufweg etwas anderes
127
+ * tut.
128
+ */
129
+ function toWatchArgv(args) {
130
+ const argv = [];
131
+ const push = (name, value) => {
132
+ if (value === undefined)
133
+ return;
134
+ argv.push(`--${name}`, String(value));
135
+ };
136
+ push("root", args.flags["root"]);
137
+ push("repo-id", args.flags["repo-id"]);
138
+ push("ref-id", args.flags["ref-id"]);
139
+ push("format", args.flags["format"]);
140
+ push("out", args.flags["out"]);
141
+ push("debounce", args.flags["debounce"]);
142
+ push("reconcile", args.flags["reconcile"]);
143
+ push("max-file-bytes", args.flags["max-file-bytes"]);
144
+ push("scopes", args.flags["scopes"]);
145
+ push("exit-after", args.flags["exit-after"]);
146
+ if (args.flags["color"] === false)
147
+ argv.push("--no-color");
148
+ if (args.flags["baseline-only"] === true)
149
+ argv.push("--baseline-only");
150
+ return argv;
151
+ }
152
+ export const watchCommand = {
153
+ spec: {
154
+ name: "watch",
155
+ implementedBy: "commands/watch-command.js",
156
+ summary: "Complexity monitoring: metric deltas for every change",
157
+ usage: "untangle watch [--index] [--root=<PATH>] [--format=json] [--out=<FILE>]",
158
+ details: [
159
+ "--index selects search-index mode: at startup and each --reconcile interval, " +
160
+ "source hashes and the index contract are checked. Stale, incompatible or missing indexes are " +
161
+ "updated serially. --repo is required with multiple repositories; a ref that is not checked out " +
162
+ "is never updated. --format=json emits index status as JSONL; index reports go to stderr.",
163
+ "Watches a tree and reports each metric's delta for every change, " +
164
+ "structural, semantic, cyclomatic, cognitive, including direction: did the " +
165
+ 'change reduce or increase complexity? "cognitive 34 -> 21 ' +
166
+ '(-13, reduced)" describes the change rather than only a raw number.',
167
+ "The three scope metrics aggregate by metrics_scope_id without " +
168
+ "double-counting, using execution_unit scope (spec.md §16.10). The " +
169
+ "semantic load sums the file's chunks and therefore uses " +
170
+ "file_chunks scope. Each number identifies its measurement scope.",
171
+ "A file that could not be analyzed appears in the same stream, " +
172
+ "with a reason and details. Silently omitted files could make " +
173
+ "a partial result appear complete; " +
174
+ "silence does not prove that nothing changed.",
175
+ "Reduced means complexity decreased. It does not prove that " +
176
+ "the change improved the code; vision.md §1b requires " +
177
+ "an unchanged symbol interface, unchanged tests and unchanged " +
178
+ "dependency edges, which this command does not measure.",
179
+ "SIGINT/SIGTERM stops cleanly: watcher stopped, stream closed, " +
180
+ "the ref lock released. The final event reports whether the lock was " +
181
+ "actually released, based on an inspection.",
182
+ ],
183
+ flags: FLAGS,
184
+ examples: [
185
+ "untangle watch",
186
+ "untangle watch --format=json --out=complexity.jsonl",
187
+ "untangle watch --root=packages/search --scopes=3",
188
+ "untangle watch --baseline-only",
189
+ "untangle watch --index --reconcile=30000",
190
+ "untangle watch --index --repo=backend --embedder=offline --format=json",
191
+ ],
192
+ exitCodes: [
193
+ [EXIT.ok, "Stopped cleanly."],
194
+ [EXIT.operational, "Operational error; for example, another run holds the ref lock."],
195
+ [EXIT.usage, "Invalid arguments."],
196
+ [EXIT.environment, "--index: indexing or environment is not ready."],
197
+ [EXIT.cancelled, "--index: cancelled cleanly by a signal."],
198
+ ],
199
+ },
200
+ async run(ctx, args) {
201
+ if (args.positionals.length > 0) {
202
+ throw new UsageError(`"untangle watch" does not accept positional arguments; received "${args.positionals[0] ?? ""}".`, "Specify the watched tree with --root.");
203
+ }
204
+ if (args.flags["index"] === true) {
205
+ for (const name of ["repo-id", "ref-id", "debounce", "max-file-bytes", "scopes", "color"]) {
206
+ if (args.flags[name] !== undefined)
207
+ throw new UsageError(`--${name} applies to the complexity watcher, not --index.`, "Use --repo/--ref to select the index and --reconcile for the check interval.");
208
+ }
209
+ const intervalMs = integerFlag(args, "reconcile", 30_000);
210
+ const maxRefreshes = args.flags["exit-after"] === undefined ? null : integerFlag(args, "exit-after", 1);
211
+ if (intervalMs === 0 || intervalMs > 2_147_483_647 || maxRefreshes === 0) {
212
+ throw new UsageError("--reconcile and --exit-after must be positive integers; --reconcile is limited to 2147483647 ms.", "Example: untangle watch --index --reconcile=30000.");
213
+ }
214
+ const repo = stringFlag(args, "repo");
215
+ const ref = stringFlag(args, "ref");
216
+ const out = stringFlag(args, "out");
217
+ return runIndexWatch(ctx, {
218
+ root: path.resolve(ctx.cwd, stringFlag(args, "root") ?? "."),
219
+ ...(repo === undefined ? {} : { repo }),
220
+ ...(ref === undefined ? {} : { ref }),
221
+ embedder: enumFlag(args, "embedder", ["auto", "offline"], "auto"),
222
+ intervalMs,
223
+ format: enumFlag(args, "format", ["text", "json"], "text"),
224
+ outPath: out === undefined ? null : path.resolve(ctx.cwd, out),
225
+ once: args.flags["baseline-only"] === true,
226
+ maxRefreshes,
227
+ });
228
+ }
229
+ if (["repo", "ref", "embedder"].some((name) => args.flags[name] !== undefined)) {
230
+ throw new UsageError("--repo, --ref and --embedder require --index.", "The complexity watcher uses --repo-id and --ref-id.");
231
+ }
232
+ const parsed = parseWatchArgs(toWatchArgv(args), {
233
+ cwd: ctx.cwd,
234
+ isTty: process.stdout.isTTY === true,
235
+ noColorEnv: ctx.env["NO_COLOR"],
236
+ });
237
+ if (!parsed.ok) {
238
+ throw new UsageError(parsed.message, 'See "untangle watch --help" for supported options.');
239
+ }
240
+ const exitCode = await runWatch(parsed.options, {
241
+ clock: new SystemClock(),
242
+ random: new CryptoRandom(),
243
+ stdout: (chunk) => {
244
+ ctx.io.out(chunk);
245
+ },
246
+ stderr: (chunk) => {
247
+ ctx.io.err(chunk);
248
+ },
249
+ host: hostname(),
250
+ /**
251
+ * Der Rahmen faengt SIGINT/SIGTERM bereits ab und bricht `ctx.signal`
252
+ * ab; der Waechter haengt sich deshalb an DIESES Signal statt einen
253
+ * zweiten Griff auf denselben Prozess zu legen. Die zurueckgegebene
254
+ * Abmeldung loest den Zuhoerer, sobald der Abbau laeuft.
255
+ */
256
+ installSignalHandler: (handler) => {
257
+ if (ctx.signal.aborted) {
258
+ handler("SIGINT");
259
+ return () => undefined;
260
+ }
261
+ const onAbort = () => {
262
+ handler("SIGINT");
263
+ };
264
+ ctx.signal.addEventListener("abort", onAbort, { once: true });
265
+ return () => {
266
+ ctx.signal.removeEventListener("abort", onAbort);
267
+ };
268
+ },
269
+ });
270
+ return exitCode === 0 ? EXIT.ok : EXIT.operational;
271
+ },
272
+ };
273
+ //# sourceMappingURL=watch-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-command.js","sourceRoot":"","sources":["../../src/commands/watch-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * True when the module identified by `moduleUrl` is the entry point named by
3
+ * `entryPath` (normally `process.argv[1]`).
4
+ *
5
+ * BOTH sides are canonicalized, not just `entryPath`. The module URL is
6
+ * usually already resolved, but "usually" is not a guarantee worth betting the
7
+ * program's existence on — and on macOS the `/var` → `/private/var` alias
8
+ * makes the two differ even without a symlink in the picture.
9
+ */
10
+ export declare function isEntryPoint(moduleUrl: string, entryPath: string | undefined): boolean;
11
+ //# sourceMappingURL=entry-point.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-point.d.ts","sourceRoot":"","sources":["../src/entry-point.ts"],"names":[],"mappings":"AAsBA;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CActF"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * "Is this module the program, or did something import it?"
3
+ *
4
+ * The obvious answer — compare `import.meta.url` with
5
+ * `pathToFileURL(process.argv[1])` — is wrong in exactly the situation this
6
+ * package is built for. `npm install --global` does not copy the binary into
7
+ * the global bin directory; on POSIX it creates a SYMLINK there. Node's ESM
8
+ * loader resolves symlinks, so `import.meta.url` is the real path inside the
9
+ * package while `argv[1]` is the symlink in `…/bin`. The two never match, the
10
+ * guard says "imported", and the installed `untangle` prints nothing and exits
11
+ * 0 — a tool that silently does nothing, which is the worst possible outcome
12
+ * of a one-line installation.
13
+ *
14
+ * So both sides are canonicalized before they are compared. A path that
15
+ * cannot be resolved (deleted between spawn and check, `node --eval`, a
16
+ * platform quirk) falls back to the unresolved comparison rather than
17
+ * throwing: failing to start over a `realpath` error would trade one silent
18
+ * failure for a louder one.
19
+ */
20
+ import { realpathSync } from "node:fs";
21
+ import { fileURLToPath, pathToFileURL } from "node:url";
22
+ /**
23
+ * True when the module identified by `moduleUrl` is the entry point named by
24
+ * `entryPath` (normally `process.argv[1]`).
25
+ *
26
+ * BOTH sides are canonicalized, not just `entryPath`. The module URL is
27
+ * usually already resolved, but "usually" is not a guarantee worth betting the
28
+ * program's existence on — and on macOS the `/var` → `/private/var` alias
29
+ * makes the two differ even without a symlink in the picture.
30
+ */
31
+ export function isEntryPoint(moduleUrl, entryPath) {
32
+ if (entryPath === undefined || entryPath === "") {
33
+ return false;
34
+ }
35
+ if (moduleUrl === pathToFileURL(entryPath).href) {
36
+ return true;
37
+ }
38
+ const canonicalModule = canonical(safeFileUrlToPath(moduleUrl));
39
+ const canonicalEntry = canonical(entryPath);
40
+ return (canonicalModule !== undefined &&
41
+ canonicalEntry !== undefined &&
42
+ canonicalModule === canonicalEntry);
43
+ }
44
+ function safeFileUrlToPath(moduleUrl) {
45
+ try {
46
+ return fileURLToPath(moduleUrl);
47
+ }
48
+ catch {
49
+ // Not a file: URL at all (data:, node:, an http import). Then this module
50
+ // is certainly not a file on disk that argv[1] could name.
51
+ return undefined;
52
+ }
53
+ }
54
+ function canonical(path) {
55
+ if (path === undefined) {
56
+ return undefined;
57
+ }
58
+ try {
59
+ return realpathSync(path);
60
+ }
61
+ catch {
62
+ return undefined;
63
+ }
64
+ }
65
+ //# sourceMappingURL=entry-point.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-point.js","sourceRoot":"","sources":["../src/entry-point.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,SAA6B;IAC3E,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,SAAS,KAAK,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,eAAe,GAAG,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,CACL,eAAe,KAAK,SAAS;QAC7B,cAAc,KAAK,SAAS;QAC5B,eAAe,KAAK,cAAc,CACnC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;QAC1E,2DAA2D;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAwB;IACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * `untangle` — der Einstiegspunkt (WP-124).
4
+ *
5
+ * Dieses Modul tut vier Dinge und sonst nichts:
6
+ * 1. es waehlt den Unterbefehl,
7
+ * 2. es zerlegt die Argumente gegen dessen Spezifikation,
8
+ * 3. es reicht ein Abbruchsignal durch (SIGINT/SIGTERM),
9
+ * 4. es uebersetzt Fehler in Exit-Codes und Meldungen auf stderr.
10
+ *
11
+ * NUTZDATEN GEHEN NACH STDOUT, ALLES ANDERE NACH STDERR — auch die
12
+ * Hilfetexte zu Fehlern. Das ist die Regel, die `untangle query
13
+ * --format=jsonl | jq` benutzbar haelt.
14
+ */
15
+ import { type Command } from "./cli/command.js";
16
+ import { type Io } from "./cli/io.js";
17
+ /** Version des Binaers. Bewusst hier und nicht aus package.json gelesen: der
18
+ * gebaute `dist/` liegt eine Ebene tiefer als das Manifest, und ein Lesefehler
19
+ * beim Start waere ein absurder Grund, an `--version` zu scheitern. */
20
+ export { CLI_VERSION } from "./cli/version.js";
21
+ /**
22
+ * Die Reihenfolge ist die des Nutzerwegs, nicht das Alphabet: einrichten,
23
+ * indizieren, suchen, messen, verstehen, beobachten, diagnostizieren,
24
+ * erweitern.
25
+ */
26
+ export declare const COMMANDS: readonly Command[];
27
+ export interface RunOptions {
28
+ readonly io?: Io;
29
+ readonly cwd?: string;
30
+ readonly env?: Readonly<Record<string, string | undefined>>;
31
+ readonly signal?: AbortSignal;
32
+ }
33
+ /**
34
+ * Der ganze Ablauf als Funktion — testbar, ohne einen Prozess zu starten.
35
+ * `main()` unten ist nur die duenne Huelle darum.
36
+ */
37
+ export declare function run(argv: readonly string[], options?: RunOptions): Promise<number>;
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAA2B,KAAK,OAAO,EAAuB,MAAM,kBAAkB,CAAC;AAE9F,OAAO,EAAyB,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAyB7D;;uEAEuE;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,SAAS,OAAO,EAatC,CAAC;AAwEF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAuD5F"}