@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 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/commands/watch/cli.ts"],"names":[],"mappings":";AAoBA;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkE1E"}
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Der ausfuehrbare Einstiegspunkt des Waechters.
4
+ *
5
+ * Er liegt bewusst INNERHALB von `src/commands/watch/`: das Kommando bringt
6
+ * seine eigene Verdrahtung mit (Uhr, Zufall, Signale, Standardausgabe) und
7
+ * haengt an keiner Datei ausserhalb dieses Verzeichnisses. Damit ist der
8
+ * Waechter fuer sich allein baubar und vorfuehrbar, waehrend der uebrige
9
+ * CLI-Rahmen (WP-124) noch entsteht.
10
+ *
11
+ * Zwei Aufrufwege, beide gleichwertig:
12
+ * node dist/index.js watch [OPTIONEN] (ueber den CLI-Rahmen)
13
+ * node dist/commands/watch/cli.js [OPTIONEN] (direkt)
14
+ */
15
+ import { hostname } from "node:os";
16
+ import { parseWatchArgs, WATCH_USAGE } from "./options.js";
17
+ import { runWatch } from "./run.js";
18
+ import { CryptoRandom, SystemClock } from "./runtime.js";
19
+ /**
20
+ * Fuehrt `untangle watch` aus und liefert den Exit-Code.
21
+ *
22
+ * 0 = sauber beendet, 1 = Betriebsfehler, 2 = Aufruffehler.
23
+ */
24
+ export async function runWatchCli(argv) {
25
+ // The opt-in index mode needs the full composition root. A URL import keeps
26
+ // build:watch's original complexity-only dependency graph independent.
27
+ if (argv.some((arg) => ["--index", "--no-index", "--repo", "--ref", "--embedder"].includes(arg.split("=")[0] ?? ""))) {
28
+ const runtime = (await import(new URL("../../index.js", import.meta.url).href));
29
+ const controller = new AbortController();
30
+ const abort = () => controller.abort();
31
+ process.on("SIGINT", abort);
32
+ process.on("SIGTERM", abort);
33
+ try {
34
+ return await runtime.run(["watch", ...argv], { signal: controller.signal });
35
+ }
36
+ finally {
37
+ process.off("SIGINT", abort);
38
+ process.off("SIGTERM", abort);
39
+ }
40
+ }
41
+ const parsed = parseWatchArgs(argv, {
42
+ cwd: process.cwd(),
43
+ isTty: process.stdout.isTTY === true,
44
+ noColorEnv: process.env["NO_COLOR"],
45
+ });
46
+ if (!parsed.ok) {
47
+ process.stderr.write(`untangle watch: ${parsed.message}\n\n${WATCH_USAGE}\n`);
48
+ return 2;
49
+ }
50
+ if (parsed.options.help) {
51
+ process.stdout.write(`${WATCH_USAGE}\n`);
52
+ return 0;
53
+ }
54
+ return runWatch(parsed.options, {
55
+ clock: new SystemClock(),
56
+ random: new CryptoRandom(),
57
+ stdout: (chunk) => {
58
+ process.stdout.write(chunk);
59
+ },
60
+ stderr: (chunk) => {
61
+ process.stderr.write(chunk);
62
+ },
63
+ host: hostname(),
64
+ /**
65
+ * SIGINT/SIGTERM. Die Abmeldung wird zurueckgegeben, damit `runWatch`
66
+ * den Griff loesen kann, sobald der Abbau laeuft: ein ZWEITES Strg-C
67
+ * soll dann wieder die Vorgabewirkung haben und hart beenden, statt in
68
+ * einem Waechter zu haengen, der gerade aufraeumt.
69
+ */
70
+ installSignalHandler: (handler) => {
71
+ const signals = ["SIGINT", "SIGTERM"];
72
+ const listeners = signals.map((signal) => {
73
+ const listener = () => {
74
+ handler(signal);
75
+ };
76
+ process.on(signal, listener);
77
+ return { signal, listener };
78
+ });
79
+ return () => {
80
+ for (const { signal, listener } of listeners)
81
+ process.off(signal, listener);
82
+ };
83
+ },
84
+ });
85
+ }
86
+ const isDirectInvocation = process.argv[1] !== undefined && process.argv[1].endsWith("commands/watch/cli.js");
87
+ if (isDirectInvocation) {
88
+ runWatchCli(process.argv.slice(2))
89
+ .then((code) => {
90
+ process.exitCode = code;
91
+ })
92
+ .catch((error) => {
93
+ process.stderr.write(`untangle watch: ${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`);
94
+ process.exitCode = 1;
95
+ });
96
+ }
97
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/commands/watch/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAuB;IACvD,4EAA4E;IAC5E,uEAAuE;IACvE,IACE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAChB,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAC7F,EACD,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAE7E,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9E,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE;QAClC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;QACpC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;KACpC,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,OAAO,OAAO,WAAW,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;QAC9B,KAAK,EAAE,IAAI,WAAW,EAAE;QACxB,MAAM,EAAE,IAAI,YAAY,EAAE;QAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,EAAE,QAAQ,EAAE;QAChB;;;;;WAKG;QACH,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE;YAChC,MAAM,OAAO,GAA8B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACvC,MAAM,QAAQ,GAAG,GAAS,EAAE;oBAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC,CAAC;gBACF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,EAAE;gBACV,KAAK,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,SAAS;oBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC9E,CAAC,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,kBAAkB,GACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAErF,IAAI,kBAAkB,EAAE,CAAC;IACvB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC/B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1B,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAC/F,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { FileReadingV1 } from "./analyze.js";
2
+ import { type ComplexityDirection, type MetricDeltaV1, type MetricKey, type MetricValues, type ScopeDeltaV1 } from "./events.js";
3
+ /** Kleiner ist einfacher: negatives Delta = abgebaut. */
4
+ export declare function directionOf(delta: number): ComplexityDirection;
5
+ /** Die Lesart, in der ein Metrikwert entstanden ist (siehe `analyze.ts`). */
6
+ export declare function readingOf(metric: MetricKey): "execution_unit" | "file_chunks";
7
+ /**
8
+ * Deltas je Metrik zwischen zwei Messungen derselben Datei. `previous` fehlt
9
+ * bei einer neu hinzugekommenen Datei, `current` bei einer geloeschten — in
10
+ * beiden Faellen wird die fehlende Seite als 0 gelesen, damit das Delta die
11
+ * tatsaechliche Wirkung auf die Gesamtlage beschreibt.
12
+ */
13
+ export declare function metricDeltas(previous: FileReadingV1 | undefined, current: FileReadingV1 | undefined): MetricDeltaV1[];
14
+ /**
15
+ * Deltas je Scope, ueber `metrics_scope_id` aggregiert und ueber den
16
+ * stabilen `matchKey` zwischen den Staenden zugeordnet (siehe
17
+ * `ScopeReadingV1.matchKey`: die eindeutige `metrics_scope_id` ist
18
+ * byte-range-basiert und ueber zwei Staende hinweg absichtlich nicht stabil).
19
+ *
20
+ * Nur Scopes, die in der Lesart `"execution_unit"` ein Summand sind, kommen
21
+ * vor — sonst zaehlte dieselbe Aenderung zweimal, einmal an der Closure und
22
+ * einmal an ihrer umschliessenden Funktion.
23
+ *
24
+ * Sortierung: Betrag absteigend, bei Gleichstand Metrik-Reihenfolge, dann
25
+ * Codepoint-Ordnung des Labels. Nie `localeCompare`.
26
+ */
27
+ export declare function scopeDeltas(previous: FileReadingV1 | undefined, current: FileReadingV1 | undefined, limit: number): ScopeDeltaV1[];
28
+ /**
29
+ * Gesamtrichtung einer Aenderung ueber alle vier Metriken.
30
+ *
31
+ * ENTSCHEIDUNG: gezaehlt werden die Metriken, nicht die Betraege — die vier
32
+ * Metriken haben keine gemeinsame Einheit (ein semantisches Delta von 240
33
+ * geschaetzten Tokens ist nicht mit 13 kognitiven Punkten verrechenbar), eine
34
+ * Summe ueber sie waere eine erfundene Zahl. Ueberwiegt keine Richtung, ist
35
+ * das Urteil `"unveraendert"` — das ist ehrlicher als eine Scheinpraezision.
36
+ */
37
+ export declare function verdictOf(deltas: readonly MetricDeltaV1[]): ComplexityDirection;
38
+ /**
39
+ * Gesamtrichtung einer Netto-Bilanz. Zaehlt wie `verdictOf` die Metriken,
40
+ * nicht die Betraege — aus demselben Grund: die vier haben keine gemeinsame
41
+ * Einheit.
42
+ */
43
+ export declare function netDirectionOf(net: MetricValues): ComplexityDirection;
44
+ /** Addiert Metrikwerte (fuer die Netto-Bilanz der Sitzung). */
45
+ export declare function addMetricValues(base: MetricValues, deltas: readonly MetricDeltaV1[]): MetricValues;
46
+ //# sourceMappingURL=delta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../../src/commands/watch/delta.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,cAAc,CAAC;AAClE,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAI9D;AAED,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,GAAG,aAAa,CAE7E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,OAAO,EAAE,aAAa,GAAG,SAAS,GACjC,aAAa,EAAE,CAcjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,KAAK,EAAE,MAAM,GACZ,YAAY,EAAE,CAuChB;AAYD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,mBAAmB,CAU/E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,mBAAmB,CAUrE;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAC7B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,SAAS,aAAa,EAAE,GAC/B,YAAY,CAId"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Deltas mit RICHTUNG — der eigentliche Zweck des Waechters.
3
+ *
4
+ * vision.md §1b: eine Aenderung, die Komplexitaet senkt, wird als
5
+ * Verbesserung AUSGEWIESEN und nicht nur stillschweigend hingenommen; eine
6
+ * Verschlechterung wird mit ihrer Beitragsstelle benannt. Eine nackte Zahl
7
+ * leistet weder das eine noch das andere.
8
+ *
9
+ * Fuer alle vier Metriken gilt dieselbe Leserichtung: kleiner ist einfacher.
10
+ * Ein negatives Delta heisst deshalb `"abgebaut"`, ein positives
11
+ * `"aufgebaut"`.
12
+ *
13
+ * ## Was diese Datei NICHT behauptet
14
+ *
15
+ * vision.md §1b macht die Qualitaetsaussage von drei Bedingungen abhaengig
16
+ * (unveraenderte oeffentliche Symboloberflaeche, unveraenderte Testergebnisse,
17
+ * keine neuen Abhaengigkeitskanten). Der Waechter misst hier NUR die
18
+ * Komplexitaet. `"abgebaut"` heisst also "die Komplexitaet ist gefallen" und
19
+ * ausdruecklich NICHT "die Aenderung war eine Verbesserung" — das waere ein
20
+ * Beweis, den eine statische Messung nicht fuehren kann.
21
+ */
22
+ import { compareCodepoints } from "@untangle-code/domain";
23
+ import { METRIC_KEYS, zeroMetricValues, } from "./events.js";
24
+ /** Kleiner ist einfacher: negatives Delta = abgebaut. */
25
+ export function directionOf(delta) {
26
+ if (delta < 0)
27
+ return "abgebaut";
28
+ if (delta > 0)
29
+ return "aufgebaut";
30
+ return "unveraendert";
31
+ }
32
+ /** Die Lesart, in der ein Metrikwert entstanden ist (siehe `analyze.ts`). */
33
+ export function readingOf(metric) {
34
+ return metric === "semantic" ? "file_chunks" : "execution_unit";
35
+ }
36
+ /**
37
+ * Deltas je Metrik zwischen zwei Messungen derselben Datei. `previous` fehlt
38
+ * bei einer neu hinzugekommenen Datei, `current` bei einer geloeschten — in
39
+ * beiden Faellen wird die fehlende Seite als 0 gelesen, damit das Delta die
40
+ * tatsaechliche Wirkung auf die Gesamtlage beschreibt.
41
+ */
42
+ export function metricDeltas(previous, current) {
43
+ return METRIC_KEYS.map((metric) => {
44
+ const before = previous === undefined ? null : previous.totals[metric];
45
+ const after = current === undefined ? null : current.totals[metric];
46
+ const delta = (after ?? 0) - (before ?? 0);
47
+ return {
48
+ metric,
49
+ reading: readingOf(metric),
50
+ previous: before,
51
+ current: after,
52
+ delta,
53
+ direction: directionOf(delta),
54
+ };
55
+ });
56
+ }
57
+ /**
58
+ * Deltas je Scope, ueber `metrics_scope_id` aggregiert und ueber den
59
+ * stabilen `matchKey` zwischen den Staenden zugeordnet (siehe
60
+ * `ScopeReadingV1.matchKey`: die eindeutige `metrics_scope_id` ist
61
+ * byte-range-basiert und ueber zwei Staende hinweg absichtlich nicht stabil).
62
+ *
63
+ * Nur Scopes, die in der Lesart `"execution_unit"` ein Summand sind, kommen
64
+ * vor — sonst zaehlte dieselbe Aenderung zweimal, einmal an der Closure und
65
+ * einmal an ihrer umschliessenden Funktion.
66
+ *
67
+ * Sortierung: Betrag absteigend, bei Gleichstand Metrik-Reihenfolge, dann
68
+ * Codepoint-Ordnung des Labels. Nie `localeCompare`.
69
+ */
70
+ export function scopeDeltas(previous, current, limit) {
71
+ const before = indexSelected(previous);
72
+ const after = indexSelected(current);
73
+ const keys = new Set([...before.keys(), ...after.keys()]);
74
+ const deltas = [];
75
+ for (const key of keys) {
76
+ const from = before.get(key);
77
+ const to = after.get(key);
78
+ for (const metric of METRIC_KEYS) {
79
+ if (metric === "semantic")
80
+ continue; // semantische Ladung ist keine Scope-Groesse
81
+ const previousValue = from === undefined ? null : from.values[metric];
82
+ const currentValue = to === undefined ? null : to.values[metric];
83
+ const delta = (currentValue ?? 0) - (previousValue ?? 0);
84
+ if (delta === 0)
85
+ continue;
86
+ const anchor = to ?? from;
87
+ if (anchor === undefined)
88
+ continue;
89
+ deltas.push({
90
+ metricsScopeId: anchor.metricsScopeId,
91
+ label: anchor.label,
92
+ kind: anchor.kind,
93
+ line: anchor.line,
94
+ metric,
95
+ previous: previousValue,
96
+ current: currentValue,
97
+ delta,
98
+ direction: directionOf(delta),
99
+ });
100
+ }
101
+ }
102
+ deltas.sort((a, b) => Math.abs(b.delta) - Math.abs(a.delta) ||
103
+ METRIC_KEYS.indexOf(a.metric) - METRIC_KEYS.indexOf(b.metric) ||
104
+ compareCodepoints(a.label, b.label) ||
105
+ a.line - b.line);
106
+ return deltas.slice(0, limit);
107
+ }
108
+ function indexSelected(reading) {
109
+ const map = new Map();
110
+ if (reading === undefined)
111
+ return map;
112
+ for (const scope of reading.scopes) {
113
+ if (!scope.selected)
114
+ continue;
115
+ map.set(scope.matchKey, scope);
116
+ }
117
+ return map;
118
+ }
119
+ /**
120
+ * Gesamtrichtung einer Aenderung ueber alle vier Metriken.
121
+ *
122
+ * ENTSCHEIDUNG: gezaehlt werden die Metriken, nicht die Betraege — die vier
123
+ * Metriken haben keine gemeinsame Einheit (ein semantisches Delta von 240
124
+ * geschaetzten Tokens ist nicht mit 13 kognitiven Punkten verrechenbar), eine
125
+ * Summe ueber sie waere eine erfundene Zahl. Ueberwiegt keine Richtung, ist
126
+ * das Urteil `"unveraendert"` — das ist ehrlicher als eine Scheinpraezision.
127
+ */
128
+ export function verdictOf(deltas) {
129
+ let down = 0;
130
+ let up = 0;
131
+ for (const delta of deltas) {
132
+ if (delta.direction === "abgebaut")
133
+ down++;
134
+ if (delta.direction === "aufgebaut")
135
+ up++;
136
+ }
137
+ if (down > up)
138
+ return "abgebaut";
139
+ if (up > down)
140
+ return "aufgebaut";
141
+ return "unveraendert";
142
+ }
143
+ /**
144
+ * Gesamtrichtung einer Netto-Bilanz. Zaehlt wie `verdictOf` die Metriken,
145
+ * nicht die Betraege — aus demselben Grund: die vier haben keine gemeinsame
146
+ * Einheit.
147
+ */
148
+ export function netDirectionOf(net) {
149
+ let down = 0;
150
+ let up = 0;
151
+ for (const metric of METRIC_KEYS) {
152
+ if (net[metric] < 0)
153
+ down++;
154
+ if (net[metric] > 0)
155
+ up++;
156
+ }
157
+ if (down > up)
158
+ return "abgebaut";
159
+ if (up > down)
160
+ return "aufgebaut";
161
+ return "unveraendert";
162
+ }
163
+ /** Addiert Metrikwerte (fuer die Netto-Bilanz der Sitzung). */
164
+ export function addMetricValues(base, deltas) {
165
+ const next = { ...zeroMetricValues(), ...base };
166
+ for (const delta of deltas)
167
+ next[delta.metric] += delta.delta;
168
+ return next;
169
+ }
170
+ //# sourceMappingURL=delta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta.js","sourceRoot":"","sources":["../../../src/commands/watch/delta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EACL,WAAW,EACX,gBAAgB,GAMjB,MAAM,aAAa,CAAC;AAErB,yDAAyD;AACzD,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC;IAClC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,MAAiB;IACzC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAmC,EACnC,OAAkC;IAElC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAC3C,OAAO;YACL,MAAM;YACN,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC;YAC1B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,KAAK;YACd,KAAK;YACL,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CACzB,QAAmC,EACnC,OAAkC,EAClC,KAAa;IAEb,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,IAAI,MAAM,KAAK,UAAU;gBAAE,SAAS,CAAC,6CAA6C;YAClF,MAAM,aAAa,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtE,MAAM,YAAY,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;YACzD,IAAI,KAAK,KAAK,CAAC;gBAAE,SAAS;YAC1B,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC;YAC1B,IAAI,MAAM,KAAK,SAAS;gBAAE,SAAS;YACnC,MAAM,CAAC,IAAI,CAAC;gBACV,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM;gBACN,QAAQ,EAAE,aAAa;gBACvB,OAAO,EAAE,YAAY;gBACrB,KAAK;gBACL,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CACT,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QACrC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;QACnC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAClB,CAAC;IACF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,aAAa,CAAC,OAAkC;IACvD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,SAAS;QAC9B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,MAAgC;IACxD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,SAAS,KAAK,UAAU;YAAE,IAAI,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW;YAAE,EAAE,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,UAAU,CAAC;IACjC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,WAAW,CAAC;IAClC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAiB;IAC9C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,IAAI,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,EAAE,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,UAAU,CAAC;IACjC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,WAAW,CAAC;IAClC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAC7B,IAAkB,EAClB,MAAgC;IAEhC,MAAM,IAAI,GAA8B,EAAE,GAAG,gBAAgB,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3E,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Die Ereignisse des Komplexitaetswaechters — der Strom, den `untangle watch`
3
+ * ausgibt (vision.md §1b "Ratsche", §1d "Auffindbarkeit ist selbst ein
4
+ * Qualitaetssignal").
5
+ *
6
+ * Diese Datei fixiert die FORM des Stroms; `render.ts` fixiert nur seine
7
+ * Darstellung. Beide Ausgabewege (Text, JSON) speisen sich aus denselben
8
+ * Werten, damit die maschinenlesbare Ausgabe nie etwas anderes behauptet als
9
+ * die lesbare.
10
+ *
11
+ * ENTSCHEIDUNG (E4 an der Oberflaeche): `WatchUnanalyzedEventV1` ist ein
12
+ * ERSTKLASSIGES Stromereignis, kein Log-Rauschen. Eine Datei, die der
13
+ * Waechter nicht messen konnte, MUSS im selben Strom auftauchen wie eine, die
14
+ * er messen konnte — sonst liest der Nutzer aus dem Schweigen "nichts
15
+ * passiert", und genau das waere schlimmer als kein Waechter.
16
+ */
17
+ import type { SkipLedgerEntryV1 } from "@untangle-code/domain";
18
+ /**
19
+ * Die vier Metriken des Waechters (vision.md §1b: "strukturell, semantisch,
20
+ * cyclomatic, cognitive").
21
+ *
22
+ * Reihenfolge ist normativ: sie ist die Ausgabereihenfolge in JEDER
23
+ * Darstellung, damit zwei Laeufe zeilenweise vergleichbar bleiben.
24
+ */
25
+ export declare const METRIC_KEYS: readonly ["structural", "semantic", "cyclomatic", "cognitive"];
26
+ export type MetricKey = (typeof METRIC_KEYS)[number];
27
+ /** Metrikwerte einer Messung, immer vollstaendig — kein Feld fehlt je. */
28
+ export type MetricValues = Readonly<Record<MetricKey, number>>;
29
+ /**
30
+ * Die Richtung einer Aenderung. Fuer ALLE vier Metriken gilt: kleiner ist
31
+ * einfacher, also bedeutet ein negatives Delta abgebaute Komplexitaet. Eine
32
+ * nackte Zahl hilft niemandem — die Richtung ist der Teil, der die Aussage
33
+ * traegt.
34
+ */
35
+ export type ComplexityDirection = "abgebaut" | "aufgebaut" | "unveraendert";
36
+ /**
37
+ * Welche Lesart einer Scope-Summe hinter einem Metrikwert steht
38
+ * (`packages/complexity/src/scope-aggregate.ts`). Eine Zahl ohne Lesart waere
39
+ * bedeutungslos, deshalb reist sie mit.
40
+ *
41
+ * - `"execution_unit"` — Summe ueber die aeussersten Ausfuehrungseinheiten,
42
+ * jede genau einmal, verschachtelte Closures darin enthalten. Die Vorgabe
43
+ * fuer strukturell/cyclomatic/cognitive.
44
+ * - `"file_chunks"` — die semantische Ladung wird nicht ueber Scopes
45
+ * summiert, sondern ueber die Chunks der Datei (siehe `analyze.ts`).
46
+ */
47
+ export type MetricReadingKind = "execution_unit" | "file_chunks";
48
+ /** Ein Delta EINER Metrik, mit Richtung. */
49
+ export interface MetricDeltaV1 {
50
+ metric: MetricKey;
51
+ reading: MetricReadingKind;
52
+ /** Wert vor der Aenderung; `null` bei einer neu hinzugekommenen Datei. */
53
+ previous: number | null;
54
+ /** Wert nach der Aenderung; `null` bei einer geloeschten Datei. */
55
+ current: number | null;
56
+ /** `current - previous`, mit fehlender Seite als 0 gelesen. */
57
+ delta: number;
58
+ direction: ComplexityDirection;
59
+ }
60
+ /** Ein Delta EINES Scopes — die Stelle, an der der Preis entsteht. */
61
+ export interface ScopeDeltaV1 {
62
+ /** `metrics_scope_id` nach spec.md §16.10. */
63
+ metricsScopeId: string;
64
+ /** Qualifizierter Name des Scopes, wie ihn der Sprachadapter meldet. */
65
+ label: string;
66
+ kind: string;
67
+ /** Erste Zeile des Scopes NACH der Aenderung, sonst davor. */
68
+ line: number;
69
+ metric: MetricKey;
70
+ previous: number | null;
71
+ current: number | null;
72
+ delta: number;
73
+ direction: ComplexityDirection;
74
+ }
75
+ /** Der Waechter hat den Lock erworben und die Grundmessung begonnen. */
76
+ export interface WatchStartedEventV1 {
77
+ kind: "started";
78
+ sequence: number;
79
+ at: string;
80
+ root: string;
81
+ repoId: string;
82
+ refId: string;
83
+ lockKey: string;
84
+ }
85
+ /**
86
+ * Die Grundmessung ist fertig: ab hier sind alle Deltas gegen einen bekannten
87
+ * Stand gemessen und nicht gegen Nichts.
88
+ */
89
+ export interface WatchBaselineEventV1 {
90
+ kind: "baseline";
91
+ sequence: number;
92
+ at: string;
93
+ filesAnalyzed: number;
94
+ /** Wie viele Dateien mit Grund im Ledger stehen (E4). */
95
+ filesUnanalyzed: number;
96
+ /**
97
+ * Wie viele Pfade der Scanner ueber Ignorierregeln ausgeschlossen hat
98
+ * (`.gitignore`, Vorgabeausschluesse, Konfiguration).
99
+ *
100
+ * WARUM NUR EINE ZAHL UND KEIN EREIGNIS JE PFAD: das sind auf einem
101
+ * gewoehnlichen Repository zehntausende Pfade (`node_modules/`, `dist/`),
102
+ * und ein Strom, der davon ueberflutet wird, verbirgt genau das, was E4
103
+ * sichtbar machen will. Ausgeschlossen-nach-Regel ist zudem eine
104
+ * Konfigurationsentscheidung des Nutzers, kein Analysefehlschlag. Jeder
105
+ * Ausschluss, der NICHT auf einer Regel beruht — binaerer Inhalt,
106
+ * Groessengrenze, unlesbar — bekommt sein eigenes `unanalyzed`-Ereignis.
107
+ */
108
+ filesExcludedByRules: number;
109
+ totals: MetricValues;
110
+ /** Summe der Scopes, die in die drei Scope-Metriken eingehen. */
111
+ scopeCount: number;
112
+ /**
113
+ * Wie viele Scope-Ids der Sprachadapter innerhalb einer Datei doppelt
114
+ * vergeben hat und `withUniqueScopeIds` reparieren musste (WP-82). `> 0`
115
+ * ist kein Fehler, aber eine Einschraenkung, die sichtbar bleiben muss.
116
+ */
117
+ scopeIdCollisions: number;
118
+ /**
119
+ * Wie viele `NodeKindFact`s nur ueber den Ersatzweg zugeordnet werden
120
+ * konnten (sie tragen keine `SourceRange`). Betrifft ausschliesslich die
121
+ * strukturelle Metrik.
122
+ */
123
+ nodeKindFallbacks: number;
124
+ durationMs: number;
125
+ }
126
+ /** Eine Aenderung an einer Datei, mit Deltas je Metrik und je Scope. */
127
+ export interface WatchChangeEventV1 {
128
+ kind: "change";
129
+ sequence: number;
130
+ at: string;
131
+ changeKind: "added" | "modified" | "deleted";
132
+ /** "/"-normalisierter, repo-relativer Pfad. */
133
+ path: string;
134
+ languageId: string | null;
135
+ contentHash: string | null;
136
+ metrics: MetricDeltaV1[];
137
+ /**
138
+ * Die Scopes, deren Wert sich geaendert hat — nach Betrag absteigend,
139
+ * bei Gleichstand nach Scope-Id (Codepoint-Ordnung).
140
+ */
141
+ scopes: ScopeDeltaV1[];
142
+ /** Gesamtrichtung ueber alle vier Metriken (siehe `delta.ts`). */
143
+ verdict: ComplexityDirection;
144
+ /**
145
+ * Einschraenkungen dieser einen Messung im Klartext (Parse-Qualitaet,
146
+ * Chunker-Abstufung, Scope-Id-Kollisionen). Leer heisst: keine.
147
+ */
148
+ notes: string[];
149
+ analysisMs: number;
150
+ }
151
+ /**
152
+ * E4 an der Oberflaeche: eine Datei, die NICHT analysiert werden konnte,
153
+ * erscheint im Strom als solche — mit Grund, Detailtext und der Angabe, ob
154
+ * ein spaeterer Versuch Aussicht auf Erfolg hat.
155
+ */
156
+ export interface WatchUnanalyzedEventV1 {
157
+ kind: "unanalyzed";
158
+ sequence: number;
159
+ at: string;
160
+ /** Woher die Datei kam: Grundmessung oder eine laufende Aenderung. */
161
+ origin: "baseline" | "change";
162
+ entry: SkipLedgerEntryV1;
163
+ }
164
+ /** Zustandswechsel des Watchers (`starting` → `running` → `degraded` → `stopped`). */
165
+ export interface WatchStatusEventV1 {
166
+ kind: "status";
167
+ sequence: number;
168
+ at: string;
169
+ status: "starting" | "running" | "degraded" | "stopped";
170
+ /** Fehlertext, wenn der Wechsel durch einen Fehler ausgeloest wurde. */
171
+ detail: string | null;
172
+ }
173
+ /** Der Waechter hat sauber beendet: Strom geschlossen, Lock freigegeben. */
174
+ export interface WatchStoppedEventV1 {
175
+ kind: "stopped";
176
+ sequence: number;
177
+ at: string;
178
+ /**
179
+ * `"signal"` = SIGINT/SIGTERM, `"limit"` = `--exit-after` erreicht,
180
+ * `"baseline"` = `--baseline-only`, `"error"` = Abbruch.
181
+ */
182
+ reason: "signal" | "limit" | "baseline" | "error";
183
+ signal: string | null;
184
+ changesObserved: number;
185
+ filesUnanalyzed: number;
186
+ /** Netto-Delta der Sitzung je Metrik: was diese Sitzung insgesamt bewirkt hat. */
187
+ net: MetricValues;
188
+ netDirection: ComplexityDirection;
189
+ /** Rueckstau-Kennzahlen der `BoundedQueue` (architecture.md §13.2). */
190
+ queue: {
191
+ maxDepthObserved: number;
192
+ maxBytesObserved: number;
193
+ overBudgetAdmissions: number;
194
+ };
195
+ lockReleased: boolean;
196
+ durationMs: number;
197
+ }
198
+ export type WatchStreamEventV1 = WatchStartedEventV1 | WatchBaselineEventV1 | WatchChangeEventV1 | WatchUnanalyzedEventV1 | WatchStatusEventV1 | WatchStoppedEventV1;
199
+ /** Nullwerte fuer alle vier Metriken — nie `{}` weiterreichen. */
200
+ export declare function zeroMetricValues(): MetricValues;
201
+ /**
202
+ * Ein Ereignis OHNE Umschlag (`sequence`, `at`) — die Form, in der der
203
+ * Waechter ein Ereignis meldet; den Umschlag setzt `runWatch` an genau einer
204
+ * Stelle, damit die laufende Nummer luecken- und sprungfrei bleibt.
205
+ *
206
+ * Die Verteilung ueber die Vereinigung (`T extends unknown ? ... : never`)
207
+ * ist notwendig: ein `Omit` DIREKT auf der Vereinigung behielte nur die
208
+ * gemeinsamen Felder aller Varianten uebrig und verwuerfe genau die Felder,
209
+ * um die es geht.
210
+ */
211
+ type WithoutEnvelope<T> = T extends unknown ? Omit<T, "sequence" | "at"> : never;
212
+ export type WatchStreamEventDraftV1 = WithoutEnvelope<WatchStreamEventV1>;
213
+ export {};
214
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/commands/watch/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Die vier Metriken des Waechters (vision.md §1b: "strukturell, semantisch,
3
+ * cyclomatic, cognitive").
4
+ *
5
+ * Reihenfolge ist normativ: sie ist die Ausgabereihenfolge in JEDER
6
+ * Darstellung, damit zwei Laeufe zeilenweise vergleichbar bleiben.
7
+ */
8
+ export const METRIC_KEYS = ["structural", "semantic", "cyclomatic", "cognitive"];
9
+ /** Nullwerte fuer alle vier Metriken — nie `{}` weiterreichen. */
10
+ export function zeroMetricValues() {
11
+ return { structural: 0, semantic: 0, cyclomatic: 0, cognitive: 0 };
12
+ }
13
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/commands/watch/events.ts"],"names":[],"mappings":"AAkBA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,CAAU,CAAC;AAiM1F,kEAAkE;AAClE,MAAM,UAAU,gBAAgB;IAC9B,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AACrE,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * `untangle watch` — der Komplexitaetswaechter (vision.md §1b, §1d).
3
+ *
4
+ * Dies ist die EINZIGE oeffentliche Schnittstelle des Kommandos; `main.ts`
5
+ * und die Tests importieren nur von hier.
6
+ */
7
+ export { createFileAnalyzer, ORDERED_METRICS } from "./analyze.js";
8
+ export type { AnalysisOutcomeV1, FileAnalyzerOptions, FileReadingV1, ScopeReadingV1, } from "./analyze.js";
9
+ export { addMetricValues, directionOf, metricDeltas, netDirectionOf, readingOf, scopeDeltas, verdictOf, } from "./delta.js";
10
+ export { METRIC_KEYS, zeroMetricValues } from "./events.js";
11
+ export type { ComplexityDirection, MetricDeltaV1, MetricKey, MetricReadingKind, MetricValues, ScopeDeltaV1, WatchBaselineEventV1, WatchChangeEventV1, WatchStartedEventV1, WatchStatusEventV1, WatchStoppedEventV1, WatchStreamEventDraftV1, WatchStreamEventV1, WatchUnanalyzedEventV1, } from "./events.js";
12
+ export { parseWatchArgs, WATCH_USAGE } from "./options.js";
13
+ export type { ParseWatchArgsEnv, WatchOptionsV1 } from "./options.js";
14
+ export { formatNumber, formatSigned, renderJson, renderText } from "./render.js";
15
+ export { runWatch } from "./run.js";
16
+ export type { RunWatchDeps } from "./run.js";
17
+ export { createIgnorePredicate, createStreamSink, CryptoRandom, STATE_DIR_NAME, stripAnsi, SystemClock, } from "./runtime.js";
18
+ export { runWatchCli } from "./cli.js";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/watch/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,cAAc,EACd,SAAS,EACT,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,SAAS,EACT,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `untangle watch` — der Komplexitaetswaechter (vision.md §1b, §1d).
3
+ *
4
+ * Dies ist die EINZIGE oeffentliche Schnittstelle des Kommandos; `main.ts`
5
+ * und die Tests importieren nur von hier.
6
+ */
7
+ export { createFileAnalyzer, ORDERED_METRICS } from "./analyze.js";
8
+ export { addMetricValues, directionOf, metricDeltas, netDirectionOf, readingOf, scopeDeltas, verdictOf, } from "./delta.js";
9
+ export { METRIC_KEYS, zeroMetricValues } from "./events.js";
10
+ export { parseWatchArgs, WATCH_USAGE } from "./options.js";
11
+ export { formatNumber, formatSigned, renderJson, renderText } from "./render.js";
12
+ export { runWatch } from "./run.js";
13
+ export { createIgnorePredicate, createStreamSink, CryptoRandom, STATE_DIR_NAME, stripAnsi, SystemClock, } from "./runtime.js";
14
+ export { runWatchCli } from "./cli.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/watch/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAOnE,OAAO,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,cAAc,EACd,SAAS,EACT,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAiB5D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,SAAS,EACT,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}