universal-physics-tensor 0.29.0 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/bin/upt.mjs +9 -830
  2. package/dist/bridges/confrontation-coverage.d.ts +15 -0
  3. package/dist/bridges/confrontation-coverage.d.ts.map +1 -1
  4. package/dist/bridges/confrontation-coverage.js +6 -1
  5. package/dist/bridges/confrontation-coverage.js.map +1 -1
  6. package/dist/bridges/descriptor.d.ts +54 -0
  7. package/dist/bridges/descriptor.d.ts.map +1 -0
  8. package/dist/bridges/descriptor.js +67 -0
  9. package/dist/bridges/descriptor.js.map +1 -0
  10. package/dist/bridges/equations/_be-helpers.d.ts +1 -2
  11. package/dist/bridges/equations/_be-helpers.d.ts.map +1 -1
  12. package/dist/bridges/equations/_be-helpers.js +3 -3
  13. package/dist/bridges/equations/_be-helpers.js.map +1 -1
  14. package/dist/bridges/equations/be-20-vacuum-energy.d.ts +1 -1
  15. package/dist/bridges/equations/be-20-vacuum-energy.d.ts.map +1 -1
  16. package/dist/bridges/equations/be-20-vacuum-energy.js +5 -3
  17. package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -1
  18. package/dist/bridges/equations/be-21-kss-bound.d.ts +1 -1
  19. package/dist/bridges/equations/be-21-kss-bound.js +1 -1
  20. package/dist/bridges/equations/be-25-iit-phi.d.ts +12 -16
  21. package/dist/bridges/equations/be-25-iit-phi.d.ts.map +1 -1
  22. package/dist/bridges/equations/be-25-iit-phi.js +12 -16
  23. package/dist/bridges/equations/be-25-iit-phi.js.map +1 -1
  24. package/dist/bridges/equations/be-26-dna-tunneling.d.ts +6 -6
  25. package/dist/bridges/equations/be-26-dna-tunneling.js +6 -6
  26. package/dist/bridges/equations/be-40-composite-higgs.d.ts +9 -7
  27. package/dist/bridges/equations/be-40-composite-higgs.d.ts.map +1 -1
  28. package/dist/bridges/equations/be-40-composite-higgs.js +9 -7
  29. package/dist/bridges/equations/be-40-composite-higgs.js.map +1 -1
  30. package/dist/bridges/equations/be-50-wheeler-feynman.d.ts +0 -34
  31. package/dist/bridges/equations/be-50-wheeler-feynman.d.ts.map +1 -1
  32. package/dist/bridges/equations/be-50-wheeler-feynman.js +1 -1
  33. package/dist/bridges/equations/be-50-wheeler-feynman.js.map +1 -1
  34. package/dist/canonical/entries/_l1-build.d.ts +4 -5
  35. package/dist/canonical/entries/_l1-build.d.ts.map +1 -1
  36. package/dist/canonical/entries/_l1-build.js +3 -11
  37. package/dist/canonical/entries/_l1-build.js.map +1 -1
  38. package/dist/canonical/entries/atomic.d.ts +6 -5
  39. package/dist/canonical/entries/atomic.d.ts.map +1 -1
  40. package/dist/canonical/entries/atomic.js +61 -1
  41. package/dist/canonical/entries/atomic.js.map +1 -1
  42. package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
  43. package/dist/canonical/entries/dimensional-classics.js +1 -10
  44. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  45. package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
  46. package/dist/canonical/entries/electromagnetism.js +49 -1
  47. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  48. package/dist/canonical/entries/relativity.d.ts +0 -3
  49. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  50. package/dist/canonical/entries/relativity.js +51 -3
  51. package/dist/canonical/entries/relativity.js.map +1 -1
  52. package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts +7 -4
  53. package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
  54. package/dist/canonical/entries/thermo-nuclear-cosmo.js +117 -1
  55. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  56. package/dist/canonical/linkage.d.ts +5 -0
  57. package/dist/canonical/linkage.d.ts.map +1 -1
  58. package/dist/canonical/linkage.js +54 -24
  59. package/dist/canonical/linkage.js.map +1 -1
  60. package/dist/canonical/registry.d.ts +6 -1
  61. package/dist/canonical/registry.d.ts.map +1 -1
  62. package/dist/canonical/registry.js +6 -5
  63. package/dist/canonical/registry.js.map +1 -1
  64. package/dist/cli/args.d.ts +23 -0
  65. package/dist/cli/args.d.ts.map +1 -0
  66. package/dist/cli/args.js +74 -0
  67. package/dist/cli/args.js.map +1 -0
  68. package/dist/cli/command.d.ts +46 -0
  69. package/dist/cli/command.d.ts.map +1 -0
  70. package/dist/cli/command.js +51 -0
  71. package/dist/cli/command.js.map +1 -0
  72. package/dist/cli/commands/_discovery-opts.d.ts +16 -0
  73. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -0
  74. package/dist/cli/commands/_discovery-opts.js +33 -0
  75. package/dist/cli/commands/_discovery-opts.js.map +1 -0
  76. package/dist/cli/commands/audit.d.ts +3 -0
  77. package/dist/cli/commands/audit.d.ts.map +1 -0
  78. package/dist/cli/commands/audit.js +71 -0
  79. package/dist/cli/commands/audit.js.map +1 -0
  80. package/dist/cli/commands/candidates.d.ts +3 -0
  81. package/dist/cli/commands/candidates.d.ts.map +1 -0
  82. package/dist/cli/commands/candidates.js +46 -0
  83. package/dist/cli/commands/candidates.js.map +1 -0
  84. package/dist/cli/commands/canonical.d.ts +3 -0
  85. package/dist/cli/commands/canonical.d.ts.map +1 -0
  86. package/dist/cli/commands/canonical.js +38 -0
  87. package/dist/cli/commands/canonical.js.map +1 -0
  88. package/dist/cli/commands/connectors.d.ts +3 -0
  89. package/dist/cli/commands/connectors.d.ts.map +1 -0
  90. package/dist/cli/commands/connectors.js +51 -0
  91. package/dist/cli/commands/connectors.js.map +1 -0
  92. package/dist/cli/commands/coverage.d.ts +3 -0
  93. package/dist/cli/commands/coverage.d.ts.map +1 -0
  94. package/dist/cli/commands/coverage.js +39 -0
  95. package/dist/cli/commands/coverage.js.map +1 -0
  96. package/dist/cli/commands/derive.d.ts +3 -0
  97. package/dist/cli/commands/derive.d.ts.map +1 -0
  98. package/dist/cli/commands/derive.js +143 -0
  99. package/dist/cli/commands/derive.js.map +1 -0
  100. package/dist/cli/commands/discover.d.ts +3 -0
  101. package/dist/cli/commands/discover.d.ts.map +1 -0
  102. package/dist/cli/commands/discover.js +137 -0
  103. package/dist/cli/commands/discover.js.map +1 -0
  104. package/dist/cli/commands/eval.d.ts +3 -0
  105. package/dist/cli/commands/eval.d.ts.map +1 -0
  106. package/dist/cli/commands/eval.js +64 -0
  107. package/dist/cli/commands/eval.js.map +1 -0
  108. package/dist/cli/commands/explain.d.ts +3 -0
  109. package/dist/cli/commands/explain.d.ts.map +1 -0
  110. package/dist/cli/commands/explain.js +81 -0
  111. package/dist/cli/commands/explain.js.map +1 -0
  112. package/dist/cli/commands/index.d.ts +21 -0
  113. package/dist/cli/commands/index.d.ts.map +1 -0
  114. package/dist/cli/commands/index.js +21 -0
  115. package/dist/cli/commands/index.js.map +1 -0
  116. package/dist/cli/commands/map.d.ts +3 -0
  117. package/dist/cli/commands/map.d.ts.map +1 -0
  118. package/dist/cli/commands/map.js +245 -0
  119. package/dist/cli/commands/map.js.map +1 -0
  120. package/dist/cli/commands/predict.d.ts +3 -0
  121. package/dist/cli/commands/predict.d.ts.map +1 -0
  122. package/dist/cli/commands/predict.js +54 -0
  123. package/dist/cli/commands/predict.js.map +1 -0
  124. package/dist/cli/commands/priority.d.ts +3 -0
  125. package/dist/cli/commands/priority.d.ts.map +1 -0
  126. package/dist/cli/commands/priority.js +63 -0
  127. package/dist/cli/commands/priority.js.map +1 -0
  128. package/dist/cli/commands/recover.d.ts +3 -0
  129. package/dist/cli/commands/recover.d.ts.map +1 -0
  130. package/dist/cli/commands/recover.js +51 -0
  131. package/dist/cli/commands/recover.js.map +1 -0
  132. package/dist/cli/commands/symbolic.d.ts +3 -0
  133. package/dist/cli/commands/symbolic.d.ts.map +1 -0
  134. package/dist/cli/commands/symbolic.js +110 -0
  135. package/dist/cli/commands/symbolic.js.map +1 -0
  136. package/dist/cli/errors.d.ts +14 -0
  137. package/dist/cli/errors.d.ts.map +1 -0
  138. package/dist/cli/errors.js +20 -0
  139. package/dist/cli/errors.js.map +1 -0
  140. package/dist/cli/graphs.d.ts +16 -0
  141. package/dist/cli/graphs.d.ts.map +1 -0
  142. package/dist/cli/graphs.js +30 -0
  143. package/dist/cli/graphs.js.map +1 -0
  144. package/dist/cli/main.d.ts +33 -0
  145. package/dist/cli/main.d.ts.map +1 -0
  146. package/dist/cli/main.js +219 -0
  147. package/dist/cli/main.js.map +1 -0
  148. package/dist/cli/output.d.ts +19 -0
  149. package/dist/cli/output.d.ts.map +1 -0
  150. package/dist/cli/output.js +57 -0
  151. package/dist/cli/output.js.map +1 -0
  152. package/dist/cli/version.d.ts +11 -0
  153. package/dist/cli/version.d.ts.map +1 -0
  154. package/dist/cli/version.js +16 -0
  155. package/dist/cli/version.js.map +1 -0
  156. package/dist/cli-api.d.ts +28 -0
  157. package/dist/cli-api.d.ts.map +1 -0
  158. package/dist/cli-api.js +31 -0
  159. package/dist/cli-api.js.map +1 -0
  160. package/dist/composition/bridge-analysis.d.ts +13 -15
  161. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  162. package/dist/composition/bridge-analysis.js +54 -39
  163. package/dist/composition/bridge-analysis.js.map +1 -1
  164. package/dist/composition/bridge-prediction.d.ts +4 -3
  165. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  166. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  167. package/dist/composition/compose-symbolic.js +12 -0
  168. package/dist/composition/compose-symbolic.js.map +1 -1
  169. package/dist/composition/discovery.d.ts.map +1 -1
  170. package/dist/composition/discovery.js +40 -12
  171. package/dist/composition/discovery.js.map +1 -1
  172. package/dist/composition/edges/_catalog-helpers.d.ts +34 -0
  173. package/dist/composition/edges/_catalog-helpers.d.ts.map +1 -0
  174. package/dist/composition/edges/_catalog-helpers.js +75 -0
  175. package/dist/composition/edges/_catalog-helpers.js.map +1 -0
  176. package/dist/composition/edges/calibration.d.ts.map +1 -1
  177. package/dist/composition/edges/calibration.js +1 -1
  178. package/dist/composition/edges/calibration.js.map +1 -1
  179. package/dist/composition/edges/catalog-condensed-matter.d.ts +64 -0
  180. package/dist/composition/edges/catalog-condensed-matter.d.ts.map +1 -0
  181. package/dist/composition/edges/catalog-condensed-matter.js +226 -0
  182. package/dist/composition/edges/catalog-condensed-matter.js.map +1 -0
  183. package/dist/composition/edges/catalog-fields.d.ts +68 -0
  184. package/dist/composition/edges/catalog-fields.d.ts.map +1 -0
  185. package/dist/composition/edges/catalog-fields.js +206 -0
  186. package/dist/composition/edges/catalog-fields.js.map +1 -0
  187. package/dist/composition/edges/catalog-full.d.ts +5 -263
  188. package/dist/composition/edges/catalog-full.d.ts.map +1 -1
  189. package/dist/composition/edges/catalog-full.js +9 -959
  190. package/dist/composition/edges/catalog-full.js.map +1 -1
  191. package/dist/composition/edges/catalog-gravitation-cosmology.d.ts +80 -0
  192. package/dist/composition/edges/catalog-gravitation-cosmology.d.ts.map +1 -0
  193. package/dist/composition/edges/catalog-gravitation-cosmology.js +245 -0
  194. package/dist/composition/edges/catalog-gravitation-cosmology.js.map +1 -0
  195. package/dist/composition/edges/catalog-quantum.d.ts +85 -0
  196. package/dist/composition/edges/catalog-quantum.d.ts.map +1 -0
  197. package/dist/composition/edges/catalog-quantum.js +252 -0
  198. package/dist/composition/edges/catalog-quantum.js.map +1 -0
  199. package/dist/composition/expr-simplify.d.ts +2 -6
  200. package/dist/composition/expr-simplify.d.ts.map +1 -1
  201. package/dist/composition/expr-simplify.js +1 -1
  202. package/dist/composition/expr-simplify.js.map +1 -1
  203. package/dist/composition/expr-subst.d.ts +2 -1
  204. package/dist/composition/expr-subst.d.ts.map +1 -1
  205. package/dist/composition/proposed-bridges.d.ts +4 -4
  206. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  207. package/dist/composition/proposed-bridges.js +1 -3
  208. package/dist/composition/proposed-bridges.js.map +1 -1
  209. package/dist/composition/quantities/_dims.d.ts +35 -0
  210. package/dist/composition/quantities/_dims.d.ts.map +1 -0
  211. package/dist/composition/quantities/_dims.js +45 -0
  212. package/dist/composition/quantities/_dims.js.map +1 -0
  213. package/dist/composition/quantities/common.d.ts +69 -0
  214. package/dist/composition/quantities/common.d.ts.map +1 -0
  215. package/dist/composition/quantities/common.js +200 -0
  216. package/dist/composition/quantities/common.js.map +1 -0
  217. package/dist/composition/quantities/condensed-matter.d.ts +63 -0
  218. package/dist/composition/quantities/condensed-matter.d.ts.map +1 -0
  219. package/dist/composition/quantities/condensed-matter.js +185 -0
  220. package/dist/composition/quantities/condensed-matter.js.map +1 -0
  221. package/dist/composition/quantities/fields.d.ts +59 -0
  222. package/dist/composition/quantities/fields.d.ts.map +1 -0
  223. package/dist/composition/quantities/fields.js +171 -0
  224. package/dist/composition/quantities/fields.js.map +1 -0
  225. package/dist/composition/quantities/gravitation-cosmology.d.ts +67 -0
  226. package/dist/composition/quantities/gravitation-cosmology.d.ts.map +1 -0
  227. package/dist/composition/quantities/gravitation-cosmology.js +199 -0
  228. package/dist/composition/quantities/gravitation-cosmology.js.map +1 -0
  229. package/dist/composition/quantities/quantum.d.ts +61 -0
  230. package/dist/composition/quantities/quantum.d.ts.map +1 -0
  231. package/dist/composition/quantities/quantum.js +178 -0
  232. package/dist/composition/quantities/quantum.js.map +1 -0
  233. package/dist/composition/quantities.d.ts +5 -263
  234. package/dist/composition/quantities.d.ts.map +1 -1
  235. package/dist/composition/quantities.js +7 -983
  236. package/dist/composition/quantities.js.map +1 -1
  237. package/dist/composition/retrodiction.d.ts.map +1 -1
  238. package/dist/composition/retrodiction.js +15 -3
  239. package/dist/composition/retrodiction.js.map +1 -1
  240. package/dist/composition/symbolic-constants.d.ts +3 -2
  241. package/dist/composition/symbolic-constants.d.ts.map +1 -1
  242. package/dist/core/tensor.d.ts +6 -0
  243. package/dist/core/tensor.d.ts.map +1 -1
  244. package/dist/core/tensor.js +6 -0
  245. package/dist/core/tensor.js.map +1 -1
  246. package/dist/diff/bridge-ast-gradient.js +1 -1
  247. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  248. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  249. package/dist/diff/bridge-gradient.js +15 -4
  250. package/dist/diff/bridge-gradient.js.map +1 -1
  251. package/dist/dimensional/algebra.d.ts +24 -0
  252. package/dist/dimensional/algebra.d.ts.map +1 -1
  253. package/dist/dimensional/algebra.js +31 -5
  254. package/dist/dimensional/algebra.js.map +1 -1
  255. package/dist/dimensional/ast-builders.d.ts +25 -0
  256. package/dist/dimensional/ast-builders.d.ts.map +1 -0
  257. package/dist/dimensional/ast-builders.js +27 -0
  258. package/dist/dimensional/ast-builders.js.map +1 -0
  259. package/dist/dimensional/ast-types.d.ts +193 -0
  260. package/dist/dimensional/ast-types.d.ts.map +1 -0
  261. package/dist/dimensional/ast-types.js +20 -0
  262. package/dist/dimensional/ast-types.js.map +1 -0
  263. package/dist/dimensional/buckingham.d.ts.map +1 -1
  264. package/dist/dimensional/buckingham.js +7 -4
  265. package/dist/dimensional/buckingham.js.map +1 -1
  266. package/dist/dimensional/connection-validators.d.ts +3 -38
  267. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  268. package/dist/dimensional/connection-validators.js.map +1 -1
  269. package/dist/dimensional/connection.d.ts.map +1 -1
  270. package/dist/dimensional/connection.js +9 -0
  271. package/dist/dimensional/connection.js.map +1 -1
  272. package/dist/dimensional/curvature-composite.d.ts +2 -1
  273. package/dist/dimensional/curvature-composite.d.ts.map +1 -1
  274. package/dist/dimensional/curvature-invariants.d.ts +2 -11
  275. package/dist/dimensional/curvature-invariants.d.ts.map +1 -1
  276. package/dist/dimensional/curvature-invariants.js.map +1 -1
  277. package/dist/dimensional/curvature.d.ts +5 -24
  278. package/dist/dimensional/curvature.d.ts.map +1 -1
  279. package/dist/dimensional/curvature.js.map +1 -1
  280. package/dist/dimensional/dimension-inference.d.ts.map +1 -1
  281. package/dist/dimensional/dimension-inference.js +11 -5
  282. package/dist/dimensional/dimension-inference.js.map +1 -1
  283. package/dist/dimensional/einstein-equation.d.ts +2 -11
  284. package/dist/dimensional/einstein-equation.d.ts.map +1 -1
  285. package/dist/dimensional/einstein-equation.js.map +1 -1
  286. package/dist/dimensional/killing-validators.d.ts +2 -19
  287. package/dist/dimensional/killing-validators.d.ts.map +1 -1
  288. package/dist/dimensional/killing-validators.js.map +1 -1
  289. package/dist/dimensional/metric-validators.d.ts +5 -39
  290. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  291. package/dist/dimensional/metric-validators.js.map +1 -1
  292. package/dist/dimensional/stress-energy-validators.d.ts +2 -21
  293. package/dist/dimensional/stress-energy-validators.d.ts.map +1 -1
  294. package/dist/dimensional/stress-energy-validators.js.map +1 -1
  295. package/dist/dimensional/tensor.d.ts +2 -32
  296. package/dist/dimensional/tensor.d.ts.map +1 -1
  297. package/dist/dimensional/tensor.js.map +1 -1
  298. package/dist/dimensional/validator.d.ts +12 -58
  299. package/dist/dimensional/validator.d.ts.map +1 -1
  300. package/dist/dimensional/validator.js +12 -9
  301. package/dist/dimensional/validator.js.map +1 -1
  302. package/dist/dimensional/weyl-validators.d.ts +2 -18
  303. package/dist/dimensional/weyl-validators.d.ts.map +1 -1
  304. package/dist/dimensional/weyl-validators.js.map +1 -1
  305. package/dist/numerical/be37-covariant-eikonal.d.ts +12 -11
  306. package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
  307. package/dist/numerical/be37-covariant-eikonal.js +23 -8
  308. package/dist/numerical/be37-covariant-eikonal.js.map +1 -1
  309. package/dist/numerical/christoffel-flat.d.ts +10 -1
  310. package/dist/numerical/christoffel-flat.d.ts.map +1 -1
  311. package/dist/numerical/christoffel-flat.js +11 -2
  312. package/dist/numerical/christoffel-flat.js.map +1 -1
  313. package/dist/numerical/curvature-lowering-helpers.d.ts +4 -1
  314. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  315. package/dist/numerical/curvature-lowering-helpers.js +72 -14
  316. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  317. package/dist/numerical/engine-registry.d.ts.map +1 -1
  318. package/dist/numerical/engine-registry.js +11 -0
  319. package/dist/numerical/engine-registry.js.map +1 -1
  320. package/dist/numerical/float64-engine.d.ts.map +1 -1
  321. package/dist/numerical/float64-engine.js +20 -28
  322. package/dist/numerical/float64-engine.js.map +1 -1
  323. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  324. package/dist/numerical/formula-dimension.js +1 -1
  325. package/dist/numerical/formula-dimension.js.map +1 -1
  326. package/dist/numerical/formula.d.ts +0 -2
  327. package/dist/numerical/formula.d.ts.map +1 -1
  328. package/dist/numerical/formula.js +7 -3
  329. package/dist/numerical/formula.js.map +1 -1
  330. package/dist/numerical/geodesic-integrator.d.ts +6 -1
  331. package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
  332. package/dist/numerical/geodesic-integrator.js +14 -6
  333. package/dist/numerical/geodesic-integrator.js.map +1 -1
  334. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  335. package/dist/numerical/gl4-integrator.js +106 -43
  336. package/dist/numerical/gl4-integrator.js.map +1 -1
  337. package/dist/numerical/lowering.d.ts.map +1 -1
  338. package/dist/numerical/lowering.js +8 -5
  339. package/dist/numerical/lowering.js.map +1 -1
  340. package/dist/numerical/null-ic.d.ts +4 -3
  341. package/dist/numerical/null-ic.d.ts.map +1 -1
  342. package/dist/numerical/null-ic.js +4 -3
  343. package/dist/numerical/null-ic.js.map +1 -1
  344. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  345. package/dist/numerical/perihelion-finder.js +15 -1
  346. package/dist/numerical/perihelion-finder.js.map +1 -1
  347. package/dist/numerical/quadrature.d.ts +3 -2
  348. package/dist/numerical/quadrature.d.ts.map +1 -1
  349. package/dist/numerical/quadrature.js +8 -1
  350. package/dist/numerical/quadrature.js.map +1 -1
  351. package/dist/numerical/weyl-lowering.d.ts.map +1 -1
  352. package/dist/numerical/weyl-lowering.js +28 -2
  353. package/dist/numerical/weyl-lowering.js.map +1 -1
  354. package/package.json +3 -2
  355. package/dist/canonical/entries/l1-gravity-thermo.d.ts +0 -12
  356. package/dist/canonical/entries/l1-gravity-thermo.d.ts.map +0 -1
  357. package/dist/canonical/entries/l1-gravity-thermo.js +0 -165
  358. package/dist/canonical/entries/l1-gravity-thermo.js.map +0 -1
  359. package/dist/canonical/entries/l1-quantum-em.d.ts +0 -10
  360. package/dist/canonical/entries/l1-quantum-em.d.ts.map +0 -1
  361. package/dist/canonical/entries/l1-quantum-em.js +0 -141
  362. package/dist/canonical/entries/l1-quantum-em.js.map +0 -1
@@ -1,7 +1,12 @@
1
1
  import { sym } from '../../bridges/equations/_be-helpers.js';
2
- import { MASS, VELOCITY, ENERGY, LENGTH, TIME, FREQUENCY, TEMPERATURE, } from '../../dimensional/types.js';
2
+ import { MASS, VELOCITY, ENERGY, LENGTH, TIME, FREQUENCY, TEMPERATURE, ENTROPY, DIMENSIONLESS, } from '../../dimensional/types.js';
3
3
  import { dim, op, pow, l1 } from './_l1-build.js';
4
4
  const SPECIFIC_HEAT = dim(2, 0, -2, 0, -1); // [L² T⁻² Θ⁻¹] (J·kg⁻¹·K⁻¹)
5
+ const SB_FLUX = dim(0, 1, -3); // radiative flux W/m² = [M T⁻³]
6
+ const SIGMA_SB = dim(0, 1, -3, 0, -4); // Stefan–Boltzmann σ [M T⁻³ Θ⁻⁴] (Θ is 5th arg)
7
+ const PRESSURE = dim(-1, 1, -2); // [M L⁻¹ T⁻²]
8
+ const VOLUME = dim(3); // [L³]
9
+ const WIEN_B = dim(1, 0, 0, 0, 1); // Wien constant [L Θ]
5
10
  export const THERMO_NUCLEAR_COSMO = [
6
11
  l1({ name: 'heat-energy', dim: ENERGY }, [
7
12
  { name: 'mass', dim: MASS },
@@ -52,5 +57,116 @@ export const THERMO_NUCLEAR_COSMO = [
52
57
  references: ['Hubble 1929'],
53
58
  partnerBridges: [],
54
59
  }),
60
+ // ── Folded in from the former l1-gravity-thermo / l1-quantum-em batch files
61
+ // (2026-06-22 god-file split): the thermodynamic / statistical monomials. ──
62
+ // Landauer minimum erasure energy E = k_B T ln2 (natural log)
63
+ l1({ name: 'erasure-energy', dim: ENERGY }, [
64
+ { name: 'k_B', dim: ENTROPY },
65
+ { name: 'temperature', dim: TEMPERATURE },
66
+ ], {
67
+ id: 'CE-landauer',
68
+ name: 'Landauer erasure bound',
69
+ domain: 'information',
70
+ formula_latex: 'E = k_B T \\ln 2',
71
+ epistemicStatus: 'fully-quantitative',
72
+ scalarAst: op('*', [
73
+ sym('k_B', ENTROPY),
74
+ sym('T', TEMPERATURE),
75
+ sym('ln2', DIMENSIONLESS),
76
+ ]),
77
+ forms: { logBase: 'e' },
78
+ regime: { scale: 'mesoscopic', information: 'shannon' },
79
+ assumptions: ['isothermal', 'quasi-static erasure'],
80
+ references: ['Landauer 1961'],
81
+ // 16 = "Information-Thermodynamics Bridge (Landauer's principle)" — a
82
+ // genuine restatement (the canonical Landauer bound IS bridge 16).
83
+ partnerBridges: ['16'],
84
+ restatesBridge: '16',
85
+ }),
86
+ // Jarzynski equality ΔF = −k_B T ln⟨exp(−W/k_B T)⟩ (dimensionless log factor)
87
+ l1({ name: 'free-energy-difference', dim: ENERGY }, [
88
+ { name: 'k_B', dim: ENTROPY },
89
+ { name: 'temperature', dim: TEMPERATURE },
90
+ ], {
91
+ id: 'CE-jarzynski',
92
+ name: 'Jarzynski free-energy equality',
93
+ domain: 'statistical',
94
+ formula_latex: '\\Delta F = -k_B T \\ln \\langle \\exp(-W/(k_B T)) \\rangle',
95
+ // The leading dimensionless factor is the ensemble functional
96
+ // ln⟨exp(−βW)⟩, not a universal constant, so the strongest honest claim
97
+ // is the algebraic form up to that factor.
98
+ epistemicStatus: 'scalar-up-to-constant',
99
+ // Mirrors BE29_JARZYNSKI_RHS: −1 · k_B · T · ln⟨exp(−βW)⟩, the log encoded
100
+ // as a dimensionless stub (the AST has no ln primitive). Structurally this
101
+ // is the k_B·T·(dimensionless) thermodynamic form — the same one Landauer
102
+ // shares, which is exactly why BE-29 "recovers" CE-landauer.
103
+ scalarAst: op('*', [
104
+ sym('-1', DIMENSIONLESS),
105
+ sym('k_B', ENTROPY),
106
+ sym('T', TEMPERATURE),
107
+ sym('ln_avg_exp_minus_betaW', DIMENSIONLESS),
108
+ ]),
109
+ regime: { scale: 'mesoscopic' },
110
+ assumptions: ['isothermal', 'arbitrary work protocol between two equilibria'],
111
+ references: ['Jarzynski 1997 PRL 78:2690'],
112
+ // 29 = BE-29 (Jarzynski equality) — this canonical entry IS that bridge's
113
+ // own relation, so it is a declared restatement (NOT a discovery). Its
114
+ // structural match to CE-landauer stays a `recovers` form-coincidence.
115
+ partnerBridges: ['29'],
116
+ restatesBridge: '29',
117
+ }),
118
+ // Stefan–Boltzmann law j = σ T⁴ (radiative FLUX)
119
+ l1({ name: 'radiative-flux', dim: SB_FLUX }, [
120
+ { name: 'sigma_sb', dim: SIGMA_SB },
121
+ { name: 'temperature', dim: TEMPERATURE },
122
+ ], {
123
+ id: 'CE-stefan-boltzmann',
124
+ name: 'Stefan–Boltzmann law',
125
+ domain: 'thermodynamics',
126
+ formula_latex: 'j = \\sigma T^4',
127
+ epistemicStatus: 'fully-quantitative',
128
+ scalarAst: op('*', [sym('sigma_sb', SIGMA_SB), pow(sym('T', TEMPERATURE), '4')]),
129
+ forms: { quantityKind: 'flux' },
130
+ regime: { scale: 'classical', force: 'electromagnetic' },
131
+ assumptions: ['blackbody', 'thermal equilibrium'],
132
+ references: ['Stefan 1879; Boltzmann 1884'],
133
+ partnerBridges: [],
134
+ }),
135
+ // Ideal gas law P = N k_B T / V (N is a dimensionless count)
136
+ l1({ name: 'pressure', dim: PRESSURE }, [
137
+ { name: 'k_B', dim: ENTROPY },
138
+ { name: 'temperature', dim: TEMPERATURE },
139
+ { name: 'V', dim: VOLUME },
140
+ ], {
141
+ id: 'CE-ideal-gas',
142
+ name: 'Ideal gas law',
143
+ domain: 'thermodynamics',
144
+ formula_latex: 'P = N k_B T/V',
145
+ epistemicStatus: 'fully-quantitative',
146
+ scalarAst: op('/', [
147
+ op('*', [sym('N', DIMENSIONLESS), sym('k_B', ENTROPY), sym('T', TEMPERATURE)]),
148
+ sym('V', VOLUME),
149
+ ]),
150
+ regime: { scale: 'classical', force: 'electromagnetic' },
151
+ assumptions: ['ideal gas', 'thermal equilibrium'],
152
+ references: ['Clapeyron 1834'],
153
+ partnerBridges: [],
154
+ }),
155
+ // Wien's displacement λ_max = b / T (blackbody peak wavelength)
156
+ l1({ name: 'peak-wavelength', dim: LENGTH }, [
157
+ { name: 'b', dim: WIEN_B },
158
+ { name: 'temperature', dim: dim(0, 0, 0, 0, 1) },
159
+ ], {
160
+ id: 'CE-wien',
161
+ name: "Wien's displacement law",
162
+ domain: 'thermodynamics',
163
+ formula_latex: '\\lambda_{max} = b/T',
164
+ epistemicStatus: 'fully-quantitative',
165
+ scalarAst: op('/', [sym('b', WIEN_B), sym('T', dim(0, 0, 0, 0, 1))]),
166
+ regime: { scale: 'classical', force: 'electromagnetic' },
167
+ assumptions: ['blackbody', 'thermal equilibrium'],
168
+ references: ['Wien 1893'],
169
+ partnerBridges: [],
170
+ }),
55
171
  ];
56
172
  //# sourceMappingURL=thermo-nuclear-cosmo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thermo-nuclear-cosmo.js","sourceRoot":"","sources":["../../../src/canonical/entries/thermo-nuclear-cosmo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thermo-nuclear-cosmo.js","sourceRoot":"","sources":["../../../src/canonical/entries/thermo-nuclear-cosmo.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,11 @@ export declare function classifyLinkage(canonicalId: string, bridgeId: number):
22
22
  /**
23
23
  * Scan every canonical entry (with a scalar-AST) against every bridge RHS, and
24
24
  * return the non-`unrelated` results — the physicist's linkage worklist.
25
+ *
26
+ * Each bridge is validated and normal-formed ONCE (canonical-invariant), and
27
+ * each canonical's normal-form is computed once per outer iteration
28
+ * (bridge-invariant); the inner loop then only compares pre-computed strings
29
+ * and dimensions. Reduces the per-pair AST walks (~3·C·B) to ~2·B + C.
25
30
  */
26
31
  export declare function scanLinkages(): LinkageResult[];
27
32
  //# sourceMappingURL=linkage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"linkage.d.ts","sourceRoot":"","sources":["../../src/canonical/linkage.ts"],"names":[],"mappings":"AAwBA,8CAA8C;AAC9C,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;kEAC8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,cAAc,EACnB,oBAAoB,GACpB,UAAU,GACV,kBAAkB,GAClB,WAAW,CAAC;CACjB;AAwFD,sDAAsD;AACtD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,aAAa,CAsCf;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAU9C"}
1
+ {"version":3,"file":"linkage.d.ts","sourceRoot":"","sources":["../../src/canonical/linkage.ts"],"names":[],"mappings":"AAyBA,8CAA8C;AAC9C,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;kEAC8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,cAAc,EACnB,oBAAoB,GACpB,UAAU,GACV,kBAAkB,GAClB,WAAW,CAAC;CACjB;AAyJD,sDAAsD;AACtD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,aAAa,CAsBf;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAqB9C"}
@@ -3,7 +3,7 @@ import { evalExpr } from '../composition/expr-eval.js';
3
3
  import { CONSTANTS } from '../composition/symbolic-constants.js';
4
4
  import { BRIDGE_RHS_BY_ID } from '../bridges/rhs-registry.js';
5
5
  import { CANONICAL_EQUATIONS, canonicalById } from './registry.js';
6
- import { structurallyEqual } from './normal-form.js';
6
+ import { normalForm } from './normal-form.js';
7
7
  const dimEqual = (a, b) => a.L === b.L &&
8
8
  a.M === b.M &&
9
9
  a.T === b.T &&
@@ -82,27 +82,25 @@ function numericalRecovery(canon, bridge) {
82
82
  const maxRelErr = Math.max(...ratios.map((r) => Math.abs((r - r0) / r0)));
83
83
  return { tested: true, maxRelErr };
84
84
  }
85
- /** Compare one canonical entry against one bridge. */
86
- export function classifyLinkage(canonicalId, bridgeId) {
87
- const canon = canonicalById(canonicalId);
88
- const bridgeRhs = BRIDGE_RHS_BY_ID.get(bridgeId);
89
- const base = { canonicalId, bridgeId };
90
- if (!canon || !bridgeRhs || !canon.scalarAst) {
91
- return {
92
- ...base,
93
- dimMatch: false,
94
- structuralMatch: false,
95
- recovery: null,
96
- classification: 'unrelated',
97
- };
98
- }
99
- const bridgeDim = validate(bridgeRhs);
100
- const dimMatch = bridgeDim.ok &&
101
- bridgeDim.inferredDimension != null &&
102
- dimEqual(bridgeDim.inferredDimension, canon.dimensional.target.dim);
103
- const structuralMatch = structurallyEqual(canon.scalarAst, bridgeRhs);
85
+ /** Validate + normal-form a bridge RHS once. */
86
+ function precomputeBridge(rhs) {
87
+ const v = validate(rhs);
88
+ return {
89
+ rhs,
90
+ dim: v.ok ? v.inferredDimension : null,
91
+ normal: normalForm(rhs),
92
+ };
93
+ }
94
+ /**
95
+ * The comparison core, given a canonical entry (with its pre-computed
96
+ * normal-form) and a pre-computed bridge. Pure: no AST re-walks except the
97
+ * rare `numericalRecovery` that only fires on a structural match.
98
+ */
99
+ function classifyAgainst(canon, canonAst, canonNormal, bridgeId, bridge) {
100
+ const dimMatch = bridge.dim != null && dimEqual(bridge.dim, canon.dimensional.target.dim);
101
+ const structuralMatch = canonNormal === bridge.normal;
104
102
  const recovery = structuralMatch
105
- ? numericalRecovery(canon.scalarAst, bridgeRhs)
103
+ ? numericalRecovery(canonAst, bridge.rhs)
106
104
  : null;
107
105
  let classification;
108
106
  if (structuralMatch) {
@@ -117,19 +115,51 @@ export function classifyLinkage(canonicalId, bridgeId) {
117
115
  else {
118
116
  classification = 'unrelated';
119
117
  }
120
- return { ...base, dimMatch, structuralMatch, recovery, classification };
118
+ return {
119
+ canonicalId: canon.id,
120
+ bridgeId,
121
+ dimMatch,
122
+ structuralMatch,
123
+ recovery,
124
+ classification,
125
+ };
126
+ }
127
+ /** Compare one canonical entry against one bridge. */
128
+ export function classifyLinkage(canonicalId, bridgeId) {
129
+ const canon = canonicalById(canonicalId);
130
+ const bridgeRhs = BRIDGE_RHS_BY_ID.get(bridgeId);
131
+ if (!canon || !bridgeRhs || !canon.scalarAst) {
132
+ return {
133
+ canonicalId,
134
+ bridgeId,
135
+ dimMatch: false,
136
+ structuralMatch: false,
137
+ recovery: null,
138
+ classification: 'unrelated',
139
+ };
140
+ }
141
+ return classifyAgainst(canon, canon.scalarAst, normalForm(canon.scalarAst), bridgeId, precomputeBridge(bridgeRhs));
121
142
  }
122
143
  /**
123
144
  * Scan every canonical entry (with a scalar-AST) against every bridge RHS, and
124
145
  * return the non-`unrelated` results — the physicist's linkage worklist.
146
+ *
147
+ * Each bridge is validated and normal-formed ONCE (canonical-invariant), and
148
+ * each canonical's normal-form is computed once per outer iteration
149
+ * (bridge-invariant); the inner loop then only compares pre-computed strings
150
+ * and dimensions. Reduces the per-pair AST walks (~3·C·B) to ~2·B + C.
125
151
  */
126
152
  export function scanLinkages() {
127
153
  const results = [];
154
+ const bridges = [
155
+ ...BRIDGE_RHS_BY_ID,
156
+ ].map(([id, rhs]) => [id, precomputeBridge(rhs)]);
128
157
  for (const ce of CANONICAL_EQUATIONS) {
129
158
  if (!ce.scalarAst)
130
159
  continue;
131
- for (const bridgeId of BRIDGE_RHS_BY_ID.keys()) {
132
- const r = classifyLinkage(ce.id, bridgeId);
160
+ const canonNormal = normalForm(ce.scalarAst);
161
+ for (const [bridgeId, bridge] of bridges) {
162
+ const r = classifyAgainst(ce, ce.scalarAst, canonNormal, bridgeId, bridge);
133
163
  if (r.classification !== 'unrelated')
134
164
  results.push(r);
135
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"linkage.js","sourceRoot":"","sources":["../../src/canonical/linkage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linkage.js","sourceRoot":"","sources":["../../src/canonical/linkage.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,12 @@
6
6
  * @module canonical/registry
7
7
  */
8
8
  import type { CanonicalEquation, CanonicalDomain } from './canonical-equation.js';
9
- /** Every canonical equation in the registry. */
9
+ /**
10
+ * Every canonical equation in the registry. The L1 entries are grouped by
11
+ * physics domain (relativity / EM / thermo / atomic / …); the former
12
+ * `l1-gravity-thermo` and `l1-quantum-em` batch files were folded into these
13
+ * domain-named modules in the 2026-06-22 god-file split.
14
+ */
10
15
  export declare const CANONICAL_EQUATIONS: readonly CanonicalEquation[];
11
16
  /** Id → entry. */
12
17
  export declare const CANONICAL_BY_ID: Readonly<Record<string, CanonicalEquation>>;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/canonical/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAYlF,gDAAgD;AAChD,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAU3D,CAAC;AAEF,kBAAkB;AAClB,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CACT,CAAC;AAEhE,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEvE;AAED,+BAA+B;AAC/B,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,GACtB,SAAS,iBAAiB,EAAE,CAE9B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GACX,SAAS,iBAAiB,EAAE,CAE9B;AAED;4DAC4D;AAC5D,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAOhD;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,EAAE,CAKzD"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/canonical/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAUlF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAQ3D,CAAC;AAEF,kBAAkB;AAClB,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CACT,CAAC;AAEhE,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEvE;AAED,+BAA+B;AAC/B,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,GACtB,SAAS,iBAAiB,EAAE,CAE9B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GACX,SAAS,iBAAiB,EAAE,CAE9B;AAED;4DAC4D;AAC5D,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAOhD;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,EAAE,CAKzD"}
@@ -1,18 +1,19 @@
1
1
  import { BRIDGE_EQUATIONS } from '../bridges/index.js';
2
2
  import { DIMENSIONAL_CLASSICS } from './entries/dimensional-classics.js';
3
- import { L1_GRAVITY_THERMO } from './entries/l1-gravity-thermo.js';
4
- import { L1_QUANTUM_EM } from './entries/l1-quantum-em.js';
5
3
  import { RELATIVITY } from './entries/relativity.js';
6
4
  import { MECHANICS } from './entries/mechanics.js';
7
5
  import { ELECTROMAGNETISM } from './entries/electromagnetism.js';
8
6
  import { FLUIDS_WAVES } from './entries/fluids-waves.js';
9
7
  import { THERMO_NUCLEAR_COSMO } from './entries/thermo-nuclear-cosmo.js';
10
8
  import { ATOMIC } from './entries/atomic.js';
11
- /** Every canonical equation in the registry. */
9
+ /**
10
+ * Every canonical equation in the registry. The L1 entries are grouped by
11
+ * physics domain (relativity / EM / thermo / atomic / …); the former
12
+ * `l1-gravity-thermo` and `l1-quantum-em` batch files were folded into these
13
+ * domain-named modules in the 2026-06-22 god-file split.
14
+ */
12
15
  export const CANONICAL_EQUATIONS = [
13
16
  ...DIMENSIONAL_CLASSICS,
14
- ...L1_GRAVITY_THERMO,
15
- ...L1_QUANTUM_EM,
16
17
  ...RELATIVITY,
17
18
  ...MECHANICS,
18
19
  ...ELECTROMAGNETISM,
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/canonical/registry.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,gDAAgD;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAiC;IAC/D,GAAG,oBAAoB;IACvB,GAAG,iBAAiB;IACpB,GAAG,aAAa;IAChB,GAAG,UAAU;IACb,GAAG,SAAS;IACZ,GAAG,gBAAgB;IACnB,GAAG,YAAY;IACf,GAAG,oBAAoB;IACvB,GAAG,MAAM;CACV,CAAC;AAEF,kBAAkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAC1B,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhE,8CAA8C;AAC9C,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,OAAO,eAAe,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,iBAAiB,CAC/B,MAAuB;IAEvB,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY;IAEZ,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC/E,CAAC;AAED;4DAC4D;AAC5D,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,cAAc;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B;IAC5C,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/canonical/registry.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAiC;IAC/D,GAAG,oBAAoB;IACvB,GAAG,UAAU;IACb,GAAG,SAAS;IACZ,GAAG,gBAAgB;IACnB,GAAG,YAAY;IACf,GAAG,oBAAoB;IACvB,GAAG,MAAM;CACV,CAAC;AAEF,kBAAkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAC1B,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhE,8CAA8C;AAC9C,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,OAAO,eAAe,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,iBAAiB,CAC/B,MAAuB;IAEvB,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY;IAEZ,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC/E,CAAC;AAED;4DAC4D;AAC5D,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,cAAc;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B;IAC5C,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Hand-written declarative flag parser for the UPT CLI.
3
+ *
4
+ * Only tokens starting with `--` are treated as flags; everything else
5
+ * (including `name=value` and `name:dim` positionals) passes through to
6
+ * `positionals` untouched and in original order. Single left-to-right scan,
7
+ * zero dependencies.
8
+ */
9
+ export interface FlagSpec {
10
+ name: string;
11
+ valueStyle: 'attached' | 'next' | 'either' | 'none';
12
+ repeatable?: boolean;
13
+ /** For 'either'/'next' styles: a missing value stores '' instead of throwing —
14
+ * exists for old-CLI fidelity (--equation's empty-value diagnostic belongs to
15
+ * the command, not the parser). */
16
+ optionalValue?: boolean;
17
+ }
18
+ export interface ParsedArgs {
19
+ flags: Map<string, string[]>;
20
+ positionals: string[];
21
+ }
22
+ export declare function parseArgs(command: string, argv: string[], specs: FlagSpec[]): ParsedArgs;
23
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;uCAEmC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,CAkExF"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Hand-written declarative flag parser for the UPT CLI.
3
+ *
4
+ * Only tokens starting with `--` are treated as flags; everything else
5
+ * (including `name=value` and `name:dim` positionals) passes through to
6
+ * `positionals` untouched and in original order. Single left-to-right scan,
7
+ * zero dependencies.
8
+ */
9
+ import { UsageError } from './errors.js';
10
+ export function parseArgs(command, argv, specs) {
11
+ const bySpecName = new Map();
12
+ for (const spec of specs)
13
+ bySpecName.set(spec.name, spec);
14
+ const flags = new Map();
15
+ const positionals = [];
16
+ const hint = `(see upt help ${command})`;
17
+ for (let i = 0; i < argv.length; i++) {
18
+ const token = argv[i];
19
+ if (!token.startsWith('--')) {
20
+ positionals.push(token);
21
+ continue;
22
+ }
23
+ const eqIndex = token.indexOf('=');
24
+ const flagName = eqIndex === -1 ? token : token.slice(0, eqIndex);
25
+ const attachedValue = eqIndex === -1 ? undefined : token.slice(eqIndex + 1);
26
+ const spec = bySpecName.get(flagName);
27
+ if (!spec) {
28
+ throw new UsageError(`unknown flag '${flagName}' for '${command}' ${hint}`);
29
+ }
30
+ let value;
31
+ if (attachedValue !== undefined) {
32
+ if (spec.valueStyle === 'next') {
33
+ throw new UsageError(`flag '${spec.name}' does not accept an attached value; use '${spec.name} VALUE' for '${command}' ${hint}`);
34
+ }
35
+ if (spec.valueStyle === 'none') {
36
+ throw new UsageError(`flag '${spec.name}' takes no value for '${command}' ${hint}`);
37
+ }
38
+ value = attachedValue;
39
+ }
40
+ else if (spec.valueStyle === 'attached') {
41
+ throw new UsageError(`flag '${spec.name}' requires '${spec.name}=VALUE' for '${command}' ${hint}`);
42
+ }
43
+ else if (spec.valueStyle === 'none') {
44
+ value = '';
45
+ }
46
+ else {
47
+ // 'next' or 'either' with no attached value: consume the next token.
48
+ const next = argv[i + 1];
49
+ if (next === undefined || next.startsWith('--')) {
50
+ if (!spec.optionalValue) {
51
+ throw new UsageError(`flag '${spec.name}' requires a value for '${command}' ${hint}`);
52
+ }
53
+ value = '';
54
+ }
55
+ else {
56
+ value = next;
57
+ i++;
58
+ }
59
+ }
60
+ const key = spec.name.slice(2);
61
+ const existing = flags.get(key);
62
+ if (existing) {
63
+ if (!spec.repeatable) {
64
+ throw new UsageError(`flag '${spec.name}' given more than once for '${command}' ${hint}`);
65
+ }
66
+ existing.push(value);
67
+ }
68
+ else {
69
+ flags.set(key, [value]);
70
+ }
71
+ }
72
+ return { flags, positionals };
73
+ }
74
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Command registry + the `Command`/`CommandCtx` contract for the UPT CLI.
3
+ *
4
+ * A `Command` is a self-contained verb handler: its own flag specs, its own
5
+ * help block, and a `run` that receives an injected `CommandCtx` (never
6
+ * reaches for `process.stdout`/`process.argv` itself, so it is trivially
7
+ * testable in-process). `main.ts` owns dispatch (`runCli`); this module only
8
+ * owns the registry those commands plug into — new commands register
9
+ * themselves (typically from their own module's top-level side effect, or
10
+ * from a barrel later tasks import) without `runCli`'s body ever changing.
11
+ */
12
+ import type { ParsedArgs, FlagSpec } from './args.js';
13
+ import type * as cliApi from '../cli-api.js';
14
+ export interface CommandCtx {
15
+ args: ParsedArgs;
16
+ api: typeof cliApi;
17
+ out: (line?: string) => void;
18
+ err: (line?: string) => void;
19
+ write: (s: string) => void;
20
+ }
21
+ export interface Command {
22
+ name: string;
23
+ aliases: string[];
24
+ flags: FlagSpec[];
25
+ help: string;
26
+ run(ctx: CommandCtx): Promise<number>;
27
+ }
28
+ /** Register a command under its name and every alias. Later registrations for
29
+ * an already-taken name/alias overwrite the earlier one (keeps this usable
30
+ * from tests that re-register a stub across cases). */
31
+ export declare function registerCommand(command: Command): void;
32
+ /** Look up a command by its primary name or any alias. */
33
+ export declare function resolveCommand(nameOrAlias: string): Command | undefined;
34
+ /** All distinct registered commands (de-duplicated across aliases), in
35
+ * first-registration order. */
36
+ export declare function allCommands(): Command[];
37
+ /** Test-only registration hook. Same behavior as `registerCommand` — kept as
38
+ * a distinct, deliberately-unexciting name so it reads as test scaffolding
39
+ * (not part of the CLI's own porting surface) at call sites in
40
+ * `tests/cli/*.test.ts`. Not re-exported from `cli-api.ts` or `index.ts`. */
41
+ export declare function registerForTest(command: Command): void;
42
+ /** Test-only reset hook: clears every registered command (including
43
+ * aliases). Lets test files register stub commands without leaking them
44
+ * across files that share the module registry within a single worker. */
45
+ export declare function clearRegistryForTest(): void;
46
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/cli/command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,OAAO,MAAM,CAAC;IACnB,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC;AAID;;uDAEuD;AACvD,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAGtD;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEvE;AAED;+BAC+B;AAC/B,wBAAgB,WAAW,IAAI,OAAO,EAAE,CASvC;AAED;;;6EAG6E;AAC7E,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEtD;AAED;;yEAEyE;AACzE,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Command registry + the `Command`/`CommandCtx` contract for the UPT CLI.
3
+ *
4
+ * A `Command` is a self-contained verb handler: its own flag specs, its own
5
+ * help block, and a `run` that receives an injected `CommandCtx` (never
6
+ * reaches for `process.stdout`/`process.argv` itself, so it is trivially
7
+ * testable in-process). `main.ts` owns dispatch (`runCli`); this module only
8
+ * owns the registry those commands plug into — new commands register
9
+ * themselves (typically from their own module's top-level side effect, or
10
+ * from a barrel later tasks import) without `runCli`'s body ever changing.
11
+ */
12
+ const registry = new Map();
13
+ /** Register a command under its name and every alias. Later registrations for
14
+ * an already-taken name/alias overwrite the earlier one (keeps this usable
15
+ * from tests that re-register a stub across cases). */
16
+ export function registerCommand(command) {
17
+ registry.set(command.name, command);
18
+ for (const alias of command.aliases)
19
+ registry.set(alias, command);
20
+ }
21
+ /** Look up a command by its primary name or any alias. */
22
+ export function resolveCommand(nameOrAlias) {
23
+ return registry.get(nameOrAlias);
24
+ }
25
+ /** All distinct registered commands (de-duplicated across aliases), in
26
+ * first-registration order. */
27
+ export function allCommands() {
28
+ const seen = new Set();
29
+ const out = [];
30
+ for (const command of registry.values()) {
31
+ if (seen.has(command))
32
+ continue;
33
+ seen.add(command);
34
+ out.push(command);
35
+ }
36
+ return out;
37
+ }
38
+ /** Test-only registration hook. Same behavior as `registerCommand` — kept as
39
+ * a distinct, deliberately-unexciting name so it reads as test scaffolding
40
+ * (not part of the CLI's own porting surface) at call sites in
41
+ * `tests/cli/*.test.ts`. Not re-exported from `cli-api.ts` or `index.ts`. */
42
+ export function registerForTest(command) {
43
+ registerCommand(command);
44
+ }
45
+ /** Test-only reset hook: clears every registered command (including
46
+ * aliases). Lets test files register stub commands without leaking them
47
+ * across files that share the module registry within a single worker. */
48
+ export function clearRegistryForTest() {
49
+ registry.clear();
50
+ }
51
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/cli/command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqBH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE5C;;uDAEuD;AACvD,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO;QAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,OAAO,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACnC,CAAC;AAED;+BAC+B;AAC/B,MAAM,UAAU,WAAW;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,SAAS;QAChC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;6EAG6E;AAC7E,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,eAAe,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED;;yEAEyE;AACzE,MAAM,UAAU,oBAAoB;IAClC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shared `--max-orders`/`--anchor` parsing — used by both `discover` and
3
+ * `map`'s `--proposed` overlay. In the old CLI, `map`'s `proposedJunctions`
4
+ * passed the raw args straight through `parseDiscoveryOpts` (bin/upt.mjs line
5
+ * 392), so `map --proposed --max-orders=N` genuinely tuned the proposed
6
+ * overlay — the two commands share this validation, not just the shape.
7
+ *
8
+ * Transposed verbatim from bin/upt.mjs's `parseDiscoveryOpts()` (lines
9
+ * 596-632). The two error messages are pinned byte-exact by
10
+ * `tests/cli/upt-discover-opts.test.ts` (which drives the OLD bin, still
11
+ * green and untouched) — do not reword them.
12
+ */
13
+ import type { ParsedArgs } from '../args.js';
14
+ import type { DiscoveryOptions } from '../../composition/discovery.js';
15
+ export declare function parseDiscoveryOpts(flags: ParsedArgs['flags']): DiscoveryOptions;
16
+ //# sourceMappingURL=_discovery-opts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_discovery-opts.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/_discovery-opts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAgC/E"}