@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,460 @@
1
+ /**
2
+ * `untangle watch` — der laufende Strom.
3
+ *
4
+ * Hier laufen fuenf Pakete zu EINEM Waechter zusammen:
5
+ *
6
+ * scanner Grundmessung: welche Dateien gehoeren ueberhaupt dazu
7
+ * watcher `RepoWatcher`: native Ereignisse, Entprellung,
8
+ * periodischer Abgleich, Ref-Lock
9
+ * jobs `BoundedQueue`: Rueckstau zwischen Watcher und Messung,
10
+ * mit sichtbarem Speicherbudget (architecture.md §13.2)
11
+ * parser-registry Sprachadapter
12
+ * chunker semantische Ladung
13
+ * complexity die drei Scope-Metriken und ihre Aggregation
14
+ *
15
+ * ## Warum eine Queue zwischen Watcher und Messung
16
+ *
17
+ * Die Messung einer Datei ist um Groessenordnungen teurer als das Ereignis,
18
+ * das sie ausloest. Ohne Grenze wuerde ein `git checkout` mit tausend
19
+ * geaenderten Dateien tausend Syntaxbaeume gleichzeitig in den Speicher
20
+ * ziehen. `BoundedQueue` laesst den Watcher stattdessen WARTEN, sobald das
21
+ * Budget erreicht ist — genau der Rueckstau, fuer den das Paket gebaut ist.
22
+ * Der Waechter benutzt hier bewusst NUR diese Mechanik von `jobs` und nicht
23
+ * `IndexJobRunner`: der Runner verlangt Embedding- und Speicherstufen
24
+ * (Ollama, Qdrant), die ein reiner Komplexitaetswaechter nicht braucht und
25
+ * ohne die er `completed` nie erreichen koennte.
26
+ *
27
+ * ## Sauberes Beenden
28
+ *
29
+ * SIGINT/SIGTERM loesen genau eine Abbaufolge aus: Signalgriff abmelden (ein
30
+ * zweites Strg-C beendet dann hart), Watcher stoppen, Queue schliessen und
31
+ * leerlaufen lassen, Lock-Zustand PRUEFEN statt behaupten, Abschlussereignis
32
+ * schreiben, Mitschrift schliessen. Der Lock wird von `RepoWatcher.stop()`
33
+ * freigegeben; dass er wirklich weg ist, steht anschliessend im
34
+ * Abschlussereignis — nachgesehen, nicht angenommen.
35
+ */
36
+ import path from "node:path";
37
+ import { aggregate } from "@untangle-code/complexity";
38
+ import { compareCodepoints, buildSkipLedgerEntry, } from "@untangle-code/domain";
39
+ import { BoundedQueue } from "@untangle-code/jobs";
40
+ import { createParserRegistry } from "@untangle-code/parser-registry";
41
+ import { discoverFiles, hashBytes } from "@untangle-code/scanner";
42
+ import { NodeFileSystem } from "@untangle-code/scanner/node-fs";
43
+ import { buildStateDirLayout, ensureStateDirLayout, FileLockProvider, LocalFileSystem, } from "@untangle-code/storage-local";
44
+ import { buildWatchLockKey, NodeNativeWatcher, NodeScheduler, RepoWatcher, } from "@untangle-code/watcher";
45
+ import { createFileAnalyzer } from "./analyze.js";
46
+ import { addMetricValues, metricDeltas, netDirectionOf, scopeDeltas, verdictOf } from "./delta.js";
47
+ import { zeroMetricValues, } from "./events.js";
48
+ import { renderJson, renderText } from "./render.js";
49
+ import { createIgnorePredicate, createStreamSink, STATE_DIR_NAME } from "./runtime.js";
50
+ const QUEUE_CAPACITY = 512;
51
+ const QUEUE_BUDGET_BYTES = 32 * 1024 * 1024;
52
+ export async function runWatch(options, deps) {
53
+ const startedAtMs = deps.clock.nowEpochMs();
54
+ const sink = createStreamSink({ stdout: deps.stdout, outPath: options.outPath });
55
+ let sequence = 0;
56
+ const emit = (event) => {
57
+ const full = { ...event, sequence: sequence++, at: deps.clock.nowIso() };
58
+ sink.write(options.format === "json" ? renderJson(full) : renderText(full, { color: options.color }));
59
+ };
60
+ const readings = new Map();
61
+ let unanalyzedCount = 0;
62
+ const emitUnanalyzed = (origin, entry) => {
63
+ unanalyzedCount++;
64
+ emit({ kind: "unanalyzed", origin, entry });
65
+ };
66
+ const nodeFs = new NodeFileSystem();
67
+ const stateRoot = path.join(options.root, STATE_DIR_NAME);
68
+ const localFs = new LocalFileSystem([stateRoot]);
69
+ const layout = buildStateDirLayout(stateRoot);
70
+ await ensureStateDirLayout(localFs, layout);
71
+ const lockProvider = new FileLockProvider(localFs, layout.locks, deps.clock, deps.random, deps.host);
72
+ const lockKey = buildWatchLockKey(options.repoId, options.refId);
73
+ emit({
74
+ kind: "started",
75
+ root: options.root,
76
+ repoId: options.repoId,
77
+ refId: options.refId,
78
+ lockKey,
79
+ });
80
+ const analyze = createFileAnalyzer({
81
+ registry: createParserRegistry(),
82
+ repoId: options.repoId,
83
+ refId: options.refId,
84
+ workspaceId: `ws-${options.repoId}`,
85
+ refName: options.refId,
86
+ repoLabel: options.repoId,
87
+ });
88
+ // ---------------------------------------------------------------------
89
+ // Grundmessung. Ohne sie waere jedes spaetere Delta gegen Nichts gemessen
90
+ // und damit wertlos.
91
+ // ---------------------------------------------------------------------
92
+ const baselineStartMs = deps.clock.nowEpochMs();
93
+ const snapshots = [];
94
+ const scannerSkips = [];
95
+ let excludedByRules = 0;
96
+ let scopeIdCollisions = 0;
97
+ let nodeKindFallbacks = 0;
98
+ for await (const file of discoverFiles({
99
+ fs: nodeFs,
100
+ roots: [options.root],
101
+ repoRoot: options.root,
102
+ maxFileSizeBytes: options.maxFileBytes,
103
+ onSkip: (skip) => {
104
+ if (isRuleExclusion(skip.reason)) {
105
+ excludedByRules++;
106
+ return;
107
+ }
108
+ scannerSkips.push(skip);
109
+ },
110
+ })) {
111
+ snapshots.push({
112
+ relativePath: file.relativePath,
113
+ sizeBytes: file.sizeBytes,
114
+ mtimeEpochMs: file.mtimeEpochMs,
115
+ contentHash: file.contentHash,
116
+ });
117
+ let content;
118
+ try {
119
+ content = await nodeFs.readTextFile(file.absolutePath);
120
+ }
121
+ catch (error) {
122
+ emitUnanalyzed("baseline", buildSkipLedgerEntry({
123
+ stage: "scan",
124
+ subjectKind: "file",
125
+ path: file.relativePath,
126
+ reason: "provider_unavailable",
127
+ detail: `Cannot read file: ${error instanceof Error ? error.message : String(error)}`,
128
+ recoverable: true,
129
+ }));
130
+ continue;
131
+ }
132
+ const outcome = analyze(file.relativePath, content);
133
+ if (!outcome.ok) {
134
+ emitUnanalyzed("baseline", outcome.entry);
135
+ continue;
136
+ }
137
+ readings.set(file.relativePath, outcome.reading);
138
+ scopeIdCollisions += outcome.reading.scopeIdCollisions;
139
+ nodeKindFallbacks += outcome.reading.nodeKindFallbacks;
140
+ }
141
+ // Dateien, die der SCANNER ausgeschlossen hat (binaer, zu gross, unlesbar),
142
+ // gehen in keine Zahl ein — der WATCHER beobachtet sie aber weiter, weil
143
+ // sein Ignorier-Praedikat inhaltsunabhaengig ist. Ohne einen Schnappschuss
144
+ // meldete der erste Abgleichlauf sie deshalb als frisch hinzugekommen, und
145
+ // der Nutzer saehe dieselbe Datei zweimal: einmal vom Scanner, einmal vom
146
+ // Watcher. Der Schnappschuss verhindert genau diese Doppelmeldung, ohne die
147
+ // Datei aus der Beobachtung zu nehmen: aendert sie sich WIRKLICH, meldet der
148
+ // Watcher sie — und die Messung sagt dann erneut, warum sie nicht geht.
149
+ for (const skip of scannerSkips) {
150
+ const absolute = path.join(options.root, skip.relativePath);
151
+ const stat = await nodeFs.stat(absolute);
152
+ if (stat === null || stat.kind !== "file")
153
+ continue;
154
+ try {
155
+ const bytes = await nodeFs.readFile(absolute);
156
+ snapshots.push({
157
+ relativePath: skip.relativePath,
158
+ sizeBytes: stat.sizeBytes,
159
+ mtimeEpochMs: stat.mtimeEpochMs,
160
+ contentHash: hashBytes(bytes),
161
+ });
162
+ }
163
+ catch {
164
+ // Unlesbar — dann gibt es auch keinen Schnappschuss. Der Grund steht
165
+ // ohnehin gleich als Ledger-Eintrag im Strom.
166
+ }
167
+ }
168
+ for (const skip of scannerSkips) {
169
+ emitUnanalyzed("baseline", buildSkipLedgerEntry({
170
+ stage: "scan",
171
+ subjectKind: "file",
172
+ path: skip.relativePath,
173
+ reason: scannerReason(skip.reason),
174
+ detail: `Excluded by the scanner (${skip.reason})` +
175
+ (skip.detail === undefined ? "." : `: ${skip.detail}`) +
176
+ " This file contributes to no measurement and its change produces no delta.",
177
+ recoverable: skip.reason === "unreadable",
178
+ }));
179
+ }
180
+ const totals = totalsOf(readings);
181
+ emit({
182
+ kind: "baseline",
183
+ filesAnalyzed: readings.size,
184
+ filesUnanalyzed: unanalyzedCount,
185
+ filesExcludedByRules: excludedByRules,
186
+ totals,
187
+ scopeCount: [...readings.values()].reduce((sum, reading) => sum + reading.scopeCount, 0),
188
+ scopeIdCollisions,
189
+ nodeKindFallbacks,
190
+ durationMs: deps.clock.nowEpochMs() - baselineStartMs,
191
+ });
192
+ // ---------------------------------------------------------------------
193
+ // Der laufende Strom.
194
+ // ---------------------------------------------------------------------
195
+ const queue = new BoundedQueue({
196
+ capacity: QUEUE_CAPACITY,
197
+ maxBytes: QUEUE_BUDGET_BYTES,
198
+ sizeOf: (item) => item.bytes,
199
+ });
200
+ let changesObserved = 0;
201
+ let net = zeroMetricValues();
202
+ let stopping = false;
203
+ let stopReason = "signal";
204
+ let stopSignal = null;
205
+ let stopResolve = null;
206
+ const stopped = new Promise((resolve) => {
207
+ stopResolve = resolve;
208
+ });
209
+ const requestStop = (reason, signal) => {
210
+ if (stopping)
211
+ return;
212
+ stopping = true;
213
+ stopReason = reason;
214
+ stopSignal = signal;
215
+ stopResolve?.();
216
+ };
217
+ const watcher = new RepoWatcher({
218
+ repoId: options.repoId,
219
+ refId: options.refId,
220
+ rootPath: options.root,
221
+ fs: nodeFs,
222
+ nativeWatcher: new NodeNativeWatcher(),
223
+ scheduler: new NodeScheduler(),
224
+ clock: deps.clock,
225
+ lockProvider,
226
+ ignore: createIgnorePredicate(options.root),
227
+ initialSnapshots: snapshots,
228
+ debounceMs: options.debounceMs,
229
+ reconciliationIntervalMs: options.reconciliationIntervalMs,
230
+ });
231
+ watcher.onStatusChange((status) => {
232
+ emit({
233
+ kind: "status",
234
+ status: status.status,
235
+ detail: status.error === undefined ? null : `${status.error.code}: ${status.error.message}`,
236
+ });
237
+ });
238
+ watcher.onChange(async (events) => {
239
+ for (const event of events) {
240
+ if (stopping)
241
+ return;
242
+ await queue.push({ event, bytes: estimateBytes(event) });
243
+ }
244
+ });
245
+ const worker = (async () => {
246
+ for (;;) {
247
+ const pulled = await queue.pull();
248
+ if (pulled.done)
249
+ return;
250
+ await handleChange(pulled.value.event);
251
+ if (options.exitAfterChanges !== null && changesObserved >= options.exitAfterChanges) {
252
+ requestStop("limit", null);
253
+ return;
254
+ }
255
+ }
256
+ })();
257
+ async function handleChange(event) {
258
+ const analysisStartMs = deps.clock.nowEpochMs();
259
+ const previous = readings.get(event.relativePath);
260
+ if (event.changeKind === "deleted") {
261
+ readings.delete(event.relativePath);
262
+ const deltas = metricDeltas(previous, undefined);
263
+ changesObserved++;
264
+ net = addMetricValues(net, deltas);
265
+ emit({
266
+ kind: "change",
267
+ changeKind: "deleted",
268
+ path: event.relativePath,
269
+ languageId: previous?.languageId ?? null,
270
+ contentHash: null,
271
+ metrics: deltas,
272
+ scopes: scopeDeltas(previous, undefined, options.scopeLimit),
273
+ verdict: verdictOf(deltas),
274
+ notes: previous === undefined
275
+ ? [
276
+ "This file contributed to no measurement (no language adapter or not " +
277
+ "analyzable); its removal does not change the overall measurements.",
278
+ ]
279
+ : [],
280
+ analysisMs: deps.clock.nowEpochMs() - analysisStartMs,
281
+ });
282
+ return;
283
+ }
284
+ if (event.sizeBytes > options.maxFileBytes) {
285
+ emitUnanalyzed("change", buildSkipLedgerEntry({
286
+ stage: "scan",
287
+ subjectKind: "file",
288
+ path: event.relativePath,
289
+ reason: "file_too_large",
290
+ detail: `${String(event.sizeBytes)} bytes exceed the limit of ` +
291
+ `${String(options.maxFileBytes)} bytes (--max-file-bytes). This file's previous measurement ` +
292
+ `is retained as its last known state.`,
293
+ recoverable: true,
294
+ }));
295
+ return;
296
+ }
297
+ let content;
298
+ try {
299
+ content = await nodeFs.readTextFile(path.join(options.root, event.relativePath));
300
+ }
301
+ catch (error) {
302
+ emitUnanalyzed("change", buildSkipLedgerEntry({
303
+ stage: "scan",
304
+ subjectKind: "file",
305
+ path: event.relativePath,
306
+ reason: "provider_unavailable",
307
+ detail: `Cannot read file after the change event: ` +
308
+ `${error instanceof Error ? error.message : String(error)}`,
309
+ recoverable: true,
310
+ }));
311
+ return;
312
+ }
313
+ const outcome = analyze(event.relativePath, content);
314
+ if (!outcome.ok) {
315
+ // BEWUSST: der letzte gute Messwert bleibt stehen. Wer eine Datei
316
+ // gerade halbfertig speichert, will beim naechsten gelungenen Parse
317
+ // das Delta gegen den letzten MESSBAREN Stand sehen, nicht gegen
318
+ // Nichts. Dass zwischenzeitlich nicht gemessen werden konnte, sagt
319
+ // dieses Ereignis.
320
+ emitUnanalyzed("change", outcome.entry);
321
+ return;
322
+ }
323
+ if (previous !== undefined && previous.contentHash === outcome.reading.contentHash) {
324
+ // Inhaltsgleich: der Watcher hat eine Beruehrung gemeldet, keine
325
+ // Aenderung. Kein Delta-Ereignis, aber auch kein Schweigen ueber eine
326
+ // echte Aenderung — der Hash ist die Autoritaet (spec.md §12.1).
327
+ readings.set(event.relativePath, outcome.reading);
328
+ return;
329
+ }
330
+ readings.set(event.relativePath, outcome.reading);
331
+ const deltas = metricDeltas(previous, outcome.reading);
332
+ changesObserved++;
333
+ net = addMetricValues(net, deltas);
334
+ emit({
335
+ kind: "change",
336
+ changeKind: event.changeKind,
337
+ path: event.relativePath,
338
+ languageId: outcome.reading.languageId,
339
+ contentHash: outcome.reading.contentHash,
340
+ metrics: deltas,
341
+ scopes: scopeDeltas(previous, outcome.reading, options.scopeLimit),
342
+ verdict: verdictOf(deltas),
343
+ notes: outcome.reading.notes,
344
+ analysisMs: deps.clock.nowEpochMs() - analysisStartMs,
345
+ });
346
+ }
347
+ const uninstall = deps.installSignalHandler((signal) => {
348
+ requestStop("signal", signal);
349
+ });
350
+ let exitCode = 0;
351
+ try {
352
+ await watcher.start();
353
+ if (options.baselineOnly) {
354
+ requestStop("baseline", null);
355
+ }
356
+ await stopped;
357
+ }
358
+ catch (error) {
359
+ exitCode = 1;
360
+ stopReason = "error";
361
+ deps.stderr(`untangle watch: ${error instanceof Error ? error.message : String(error)}\n`);
362
+ }
363
+ finally {
364
+ uninstall();
365
+ await watcher.stop();
366
+ queue.close();
367
+ await worker.catch(() => {
368
+ // Die Queue wurde geschlossen, waehrend ein Push wartete — kein Fehler:
369
+ // der Abbau laeuft ohnehin gerade.
370
+ });
371
+ const held = await lockProvider.inspect(lockKey);
372
+ const queueStats = queue.stats();
373
+ emit({
374
+ kind: "stopped",
375
+ reason: stopReason,
376
+ signal: stopSignal,
377
+ changesObserved,
378
+ filesUnanalyzed: unanalyzedCount,
379
+ net,
380
+ netDirection: netDirectionOf(net),
381
+ queue: {
382
+ maxDepthObserved: queueStats.maxDepthObserved,
383
+ maxBytesObserved: queueStats.maxBytesObserved,
384
+ overBudgetAdmissions: queueStats.overBudgetAdmissions,
385
+ },
386
+ lockReleased: held === null,
387
+ durationMs: deps.clock.nowEpochMs() - startedAtMs,
388
+ });
389
+ await sink.close();
390
+ }
391
+ return exitCode;
392
+ }
393
+ /**
394
+ * Summe der vier Metriken ueber alle gemessenen Dateien.
395
+ *
396
+ * Die drei Scope-Metriken werden ueber `aggregate()` gefuehrt, also ueber
397
+ * `metrics_scope_id` dedupliziert (spec.md §16.10) — dieselbe Scope-Id kann
398
+ * nicht zweimal in die Summe eingehen, auch wenn zwei Dateien sie melden
399
+ * sollten. Die semantische Ladung ist eine Datei-Groesse und wird schlicht
400
+ * addiert.
401
+ */
402
+ function totalsOf(readings) {
403
+ const paths = [...readings.keys()].sort(compareCodepoints);
404
+ const entriesPerMetric = {
405
+ structural: [],
406
+ cyclomatic: [],
407
+ cognitive: [],
408
+ };
409
+ let semantic = 0;
410
+ for (const filePath of paths) {
411
+ const reading = readings.get(filePath);
412
+ semantic += reading.totals.semantic;
413
+ for (const scope of reading.scopes) {
414
+ if (!scope.selected)
415
+ continue;
416
+ for (const metric of ["structural", "cyclomatic", "cognitive"]) {
417
+ entriesPerMetric[metric].push({
418
+ metricsScopeId: `${filePath}${scope.metricsScopeId}`,
419
+ value: scope.values[metric],
420
+ });
421
+ }
422
+ }
423
+ }
424
+ return {
425
+ structural: aggregate(entriesPerMetric.structural).sum,
426
+ semantic,
427
+ cyclomatic: aggregate(entriesPerMetric.cyclomatic).sum,
428
+ cognitive: aggregate(entriesPerMetric.cognitive).sum,
429
+ };
430
+ }
431
+ /** Grobe Kostenschaetzung eines wartenden Ereignisses fuer das Byte-Budget. */
432
+ function estimateBytes(event) {
433
+ if (event.changeKind === "deleted")
434
+ return 256;
435
+ // Der Syntaxbaum einer Datei kostet ein Vielfaches ihres Textes; Faktor 8
436
+ // ist eine bewusst konservative, dokumentierte Schaetzung, kein Messwert.
437
+ return 256 + event.sizeBytes * 8;
438
+ }
439
+ /** Ausschluesse, die auf einer Ignorierregel beruhen (siehe `WatchBaselineEventV1`). */
440
+ function isRuleExclusion(reason) {
441
+ return (reason === "config-exclude" ||
442
+ reason === "untangleignore" ||
443
+ reason === "gitignore" ||
444
+ reason === "default-exclude" ||
445
+ reason === "security");
446
+ }
447
+ /** Bildet die Scanner-Ausschlussgruende auf die geschlossene `SKIP_REASONS`-Menge ab. */
448
+ function scannerReason(reason) {
449
+ switch (reason) {
450
+ case "binary":
451
+ return "binary_content";
452
+ case "size-limit":
453
+ return "file_too_large";
454
+ case "unreadable":
455
+ return "provider_unavailable";
456
+ default:
457
+ return "excluded_by_configuration";
458
+ }
459
+ }
460
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/watch/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { Clock, Random } from "@untangle-code/domain";
2
+ /**
3
+ * Wanduhrzeit fuer Protokollzeitstempel und die Buchfuehrung der Lock-Lease.
4
+ * Ergebnisdaten (Metriken, Deltas) enthalten NIE eine Uhrzeit — dort waere
5
+ * sie ein Determinismusbruch; hier ist sie genau der Zweck.
6
+ */
7
+ export declare class SystemClock implements Clock {
8
+ nowEpochMs(): number;
9
+ nowIso(): string;
10
+ }
11
+ /**
12
+ * Kryptografischer Zufall fuer Lock-Datensatz-Ids. Ebenfalls kein Bestandteil
13
+ * von Ergebnisdaten — `FileLockProvider` braucht eine eindeutige Kennung je
14
+ * Lease, sonst koennte ein zweiter Prozess eine fremde Lease erneuern.
15
+ */
16
+ export declare class CryptoRandom implements Random {
17
+ nextFloat(): number;
18
+ nextInt(maxExclusive: number): number;
19
+ bytes(length: number): Uint8Array;
20
+ uuid(): string;
21
+ }
22
+ /**
23
+ * Ignorierregeln fuer den Watcher.
24
+ *
25
+ * `RepoWatcher`/`reconcileTree` kennen absichtlich keine
26
+ * `.gitignore`-Schichtung (siehe deren Modul-Doku: "a caller wiring a real
27
+ * indexing pipeline is expected to pass an `ignore` backed by scanner's own
28
+ * `IgnoreEngine`") — genau das passiert hier.
29
+ *
30
+ * DER EIGENE ZUSTANDSORDNER IST IMMER AUSGESCHLOSSEN. `.untangle/` steht zwar
31
+ * in der `.gitignore` DIESES Repositories, aber darauf darf sich der Waechter
32
+ * nicht verlassen: wird ein Unterverzeichnis ohne eigene `.gitignore` als
33
+ * `--root` beobachtet, legt der Waechter dort seinen Lock ab, sieht die
34
+ * Lock-Datei als Aenderung, erneuert die Lease, sieht die naechste Aenderung —
35
+ * eine Rueckkopplung auf sich selbst. Der Ausschluss ist deshalb fest
36
+ * verdrahtet und nicht ueber eine Regeldatei erschlagen.
37
+ *
38
+ * BEKANNTE GRENZE, ausdruecklich benannt statt verschwiegen: der Watcher
39
+ * ruft das Praedikat mit einem Pfad auf, OHNE zu sagen, ob es ein
40
+ * Verzeichnis ist (der `stat` folgt erst danach). Das Praedikat fragt die
41
+ * `IgnoreEngine` deshalb in beiden Lesarten und ignoriert, sobald eine der
42
+ * beiden ignoriert. Ausserdem wird nur die `.gitignore` der Baumwurzel als
43
+ * Schicht gelegt, keine verschachtelten — der Scanner leistet das im
44
+ * Indexlauf, der Waechter hier nicht.
45
+ */
46
+ /** Der Zustandsordner des Waechters, relativ zum beobachteten Baum. */
47
+ export declare const STATE_DIR_NAME = ".untangle";
48
+ export declare function createIgnorePredicate(rootPath: string): (relativePath: string) => boolean;
49
+ /** Wohin der Strom geht: stdout und, wenn gewuenscht, zusaetzlich eine Datei. */
50
+ export interface StreamSink {
51
+ write(line: string): void;
52
+ close(): Promise<void>;
53
+ }
54
+ export interface StreamSinkOptions {
55
+ stdout: (chunk: string) => void;
56
+ /** Absoluter Pfad der Mitschrift, oder `null`. */
57
+ outPath: string | null;
58
+ }
59
+ export declare function createStreamSink(options: StreamSinkOptions): StreamSink;
60
+ /**
61
+ * Entfernt ANSI-Steuerzeichen fuer die Mitschrift. Eine Logdatei voller
62
+ * Farbcodes ist keine Mitschrift.
63
+ */
64
+ export declare function stripAnsi(text: string): string;
65
+ /** SHA-256-Hex, fuer die kurze Kennung des gemessenen Standes. */
66
+ export declare function shortDigest(input: string): string;
67
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/commands/watch/runtime.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG3D;;;;GAIG;AACH,qBAAa,WAAY,YAAW,KAAK;IACvC,UAAU,IAAI,MAAM;IAUpB,MAAM,IAAI,MAAM;CAGjB;AAED;;;;GAIG;AACH,qBAAa,YAAa,YAAW,MAAM;IACzC,SAAS,IAAI,MAAM;IAInB,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAMrC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAGjC,IAAI,IAAI,MAAM;CAGf;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,uEAAuE;AACvE,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAmBzF;AAUD,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,kDAAkD;IAClD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAoBvE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD"}