universal-physics-tensor 0.28.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 (370) hide show
  1. package/bin/upt.mjs +9 -830
  2. package/dist/bridges/be52-mercury-confrontation.d.ts +72 -0
  3. package/dist/bridges/be52-mercury-confrontation.d.ts.map +1 -0
  4. package/dist/bridges/be52-mercury-confrontation.js +67 -0
  5. package/dist/bridges/be52-mercury-confrontation.js.map +1 -0
  6. package/dist/bridges/confrontation-coverage.d.ts +15 -0
  7. package/dist/bridges/confrontation-coverage.d.ts.map +1 -1
  8. package/dist/bridges/confrontation-coverage.js +9 -1
  9. package/dist/bridges/confrontation-coverage.js.map +1 -1
  10. package/dist/bridges/descriptor.d.ts +54 -0
  11. package/dist/bridges/descriptor.d.ts.map +1 -0
  12. package/dist/bridges/descriptor.js +67 -0
  13. package/dist/bridges/descriptor.js.map +1 -0
  14. package/dist/bridges/equations/_be-helpers.d.ts +1 -2
  15. package/dist/bridges/equations/_be-helpers.d.ts.map +1 -1
  16. package/dist/bridges/equations/_be-helpers.js +3 -3
  17. package/dist/bridges/equations/_be-helpers.js.map +1 -1
  18. package/dist/bridges/equations/be-20-vacuum-energy.d.ts +1 -1
  19. package/dist/bridges/equations/be-20-vacuum-energy.d.ts.map +1 -1
  20. package/dist/bridges/equations/be-20-vacuum-energy.js +5 -3
  21. package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -1
  22. package/dist/bridges/equations/be-21-kss-bound.d.ts +1 -1
  23. package/dist/bridges/equations/be-21-kss-bound.js +1 -1
  24. package/dist/bridges/equations/be-25-iit-phi.d.ts +12 -16
  25. package/dist/bridges/equations/be-25-iit-phi.d.ts.map +1 -1
  26. package/dist/bridges/equations/be-25-iit-phi.js +12 -16
  27. package/dist/bridges/equations/be-25-iit-phi.js.map +1 -1
  28. package/dist/bridges/equations/be-26-dna-tunneling.d.ts +6 -6
  29. package/dist/bridges/equations/be-26-dna-tunneling.js +6 -6
  30. package/dist/bridges/equations/be-40-composite-higgs.d.ts +9 -7
  31. package/dist/bridges/equations/be-40-composite-higgs.d.ts.map +1 -1
  32. package/dist/bridges/equations/be-40-composite-higgs.js +9 -7
  33. package/dist/bridges/equations/be-40-composite-higgs.js.map +1 -1
  34. package/dist/bridges/equations/be-50-wheeler-feynman.d.ts +0 -34
  35. package/dist/bridges/equations/be-50-wheeler-feynman.d.ts.map +1 -1
  36. package/dist/bridges/equations/be-50-wheeler-feynman.js +1 -1
  37. package/dist/bridges/equations/be-50-wheeler-feynman.js.map +1 -1
  38. package/dist/canonical/entries/_l1-build.d.ts +4 -5
  39. package/dist/canonical/entries/_l1-build.d.ts.map +1 -1
  40. package/dist/canonical/entries/_l1-build.js +3 -11
  41. package/dist/canonical/entries/_l1-build.js.map +1 -1
  42. package/dist/canonical/entries/atomic.d.ts +6 -5
  43. package/dist/canonical/entries/atomic.d.ts.map +1 -1
  44. package/dist/canonical/entries/atomic.js +61 -1
  45. package/dist/canonical/entries/atomic.js.map +1 -1
  46. package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
  47. package/dist/canonical/entries/dimensional-classics.js +1 -10
  48. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  49. package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
  50. package/dist/canonical/entries/electromagnetism.js +49 -1
  51. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  52. package/dist/canonical/entries/relativity.d.ts +0 -3
  53. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  54. package/dist/canonical/entries/relativity.js +51 -3
  55. package/dist/canonical/entries/relativity.js.map +1 -1
  56. package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts +7 -4
  57. package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
  58. package/dist/canonical/entries/thermo-nuclear-cosmo.js +117 -1
  59. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  60. package/dist/canonical/linkage.d.ts +5 -0
  61. package/dist/canonical/linkage.d.ts.map +1 -1
  62. package/dist/canonical/linkage.js +54 -24
  63. package/dist/canonical/linkage.js.map +1 -1
  64. package/dist/canonical/registry.d.ts +6 -1
  65. package/dist/canonical/registry.d.ts.map +1 -1
  66. package/dist/canonical/registry.js +6 -5
  67. package/dist/canonical/registry.js.map +1 -1
  68. package/dist/cli/args.d.ts +23 -0
  69. package/dist/cli/args.d.ts.map +1 -0
  70. package/dist/cli/args.js +74 -0
  71. package/dist/cli/args.js.map +1 -0
  72. package/dist/cli/command.d.ts +46 -0
  73. package/dist/cli/command.d.ts.map +1 -0
  74. package/dist/cli/command.js +51 -0
  75. package/dist/cli/command.js.map +1 -0
  76. package/dist/cli/commands/_discovery-opts.d.ts +16 -0
  77. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -0
  78. package/dist/cli/commands/_discovery-opts.js +33 -0
  79. package/dist/cli/commands/_discovery-opts.js.map +1 -0
  80. package/dist/cli/commands/audit.d.ts +3 -0
  81. package/dist/cli/commands/audit.d.ts.map +1 -0
  82. package/dist/cli/commands/audit.js +71 -0
  83. package/dist/cli/commands/audit.js.map +1 -0
  84. package/dist/cli/commands/candidates.d.ts +3 -0
  85. package/dist/cli/commands/candidates.d.ts.map +1 -0
  86. package/dist/cli/commands/candidates.js +46 -0
  87. package/dist/cli/commands/candidates.js.map +1 -0
  88. package/dist/cli/commands/canonical.d.ts +3 -0
  89. package/dist/cli/commands/canonical.d.ts.map +1 -0
  90. package/dist/cli/commands/canonical.js +38 -0
  91. package/dist/cli/commands/canonical.js.map +1 -0
  92. package/dist/cli/commands/connectors.d.ts +3 -0
  93. package/dist/cli/commands/connectors.d.ts.map +1 -0
  94. package/dist/cli/commands/connectors.js +51 -0
  95. package/dist/cli/commands/connectors.js.map +1 -0
  96. package/dist/cli/commands/coverage.d.ts +3 -0
  97. package/dist/cli/commands/coverage.d.ts.map +1 -0
  98. package/dist/cli/commands/coverage.js +39 -0
  99. package/dist/cli/commands/coverage.js.map +1 -0
  100. package/dist/cli/commands/derive.d.ts +3 -0
  101. package/dist/cli/commands/derive.d.ts.map +1 -0
  102. package/dist/cli/commands/derive.js +143 -0
  103. package/dist/cli/commands/derive.js.map +1 -0
  104. package/dist/cli/commands/discover.d.ts +3 -0
  105. package/dist/cli/commands/discover.d.ts.map +1 -0
  106. package/dist/cli/commands/discover.js +137 -0
  107. package/dist/cli/commands/discover.js.map +1 -0
  108. package/dist/cli/commands/eval.d.ts +3 -0
  109. package/dist/cli/commands/eval.d.ts.map +1 -0
  110. package/dist/cli/commands/eval.js +64 -0
  111. package/dist/cli/commands/eval.js.map +1 -0
  112. package/dist/cli/commands/explain.d.ts +3 -0
  113. package/dist/cli/commands/explain.d.ts.map +1 -0
  114. package/dist/cli/commands/explain.js +81 -0
  115. package/dist/cli/commands/explain.js.map +1 -0
  116. package/dist/cli/commands/index.d.ts +21 -0
  117. package/dist/cli/commands/index.d.ts.map +1 -0
  118. package/dist/cli/commands/index.js +21 -0
  119. package/dist/cli/commands/index.js.map +1 -0
  120. package/dist/cli/commands/map.d.ts +3 -0
  121. package/dist/cli/commands/map.d.ts.map +1 -0
  122. package/dist/cli/commands/map.js +245 -0
  123. package/dist/cli/commands/map.js.map +1 -0
  124. package/dist/cli/commands/predict.d.ts +3 -0
  125. package/dist/cli/commands/predict.d.ts.map +1 -0
  126. package/dist/cli/commands/predict.js +54 -0
  127. package/dist/cli/commands/predict.js.map +1 -0
  128. package/dist/cli/commands/priority.d.ts +3 -0
  129. package/dist/cli/commands/priority.d.ts.map +1 -0
  130. package/dist/cli/commands/priority.js +63 -0
  131. package/dist/cli/commands/priority.js.map +1 -0
  132. package/dist/cli/commands/recover.d.ts +3 -0
  133. package/dist/cli/commands/recover.d.ts.map +1 -0
  134. package/dist/cli/commands/recover.js +51 -0
  135. package/dist/cli/commands/recover.js.map +1 -0
  136. package/dist/cli/commands/symbolic.d.ts +3 -0
  137. package/dist/cli/commands/symbolic.d.ts.map +1 -0
  138. package/dist/cli/commands/symbolic.js +110 -0
  139. package/dist/cli/commands/symbolic.js.map +1 -0
  140. package/dist/cli/errors.d.ts +14 -0
  141. package/dist/cli/errors.d.ts.map +1 -0
  142. package/dist/cli/errors.js +20 -0
  143. package/dist/cli/errors.js.map +1 -0
  144. package/dist/cli/graphs.d.ts +16 -0
  145. package/dist/cli/graphs.d.ts.map +1 -0
  146. package/dist/cli/graphs.js +30 -0
  147. package/dist/cli/graphs.js.map +1 -0
  148. package/dist/cli/main.d.ts +33 -0
  149. package/dist/cli/main.d.ts.map +1 -0
  150. package/dist/cli/main.js +219 -0
  151. package/dist/cli/main.js.map +1 -0
  152. package/dist/cli/output.d.ts +19 -0
  153. package/dist/cli/output.d.ts.map +1 -0
  154. package/dist/cli/output.js +57 -0
  155. package/dist/cli/output.js.map +1 -0
  156. package/dist/cli/version.d.ts +11 -0
  157. package/dist/cli/version.d.ts.map +1 -0
  158. package/dist/cli/version.js +16 -0
  159. package/dist/cli/version.js.map +1 -0
  160. package/dist/cli-api.d.ts +28 -0
  161. package/dist/cli-api.d.ts.map +1 -0
  162. package/dist/cli-api.js +31 -0
  163. package/dist/cli-api.js.map +1 -0
  164. package/dist/composition/bridge-analysis.d.ts +13 -15
  165. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  166. package/dist/composition/bridge-analysis.js +54 -39
  167. package/dist/composition/bridge-analysis.js.map +1 -1
  168. package/dist/composition/bridge-prediction.d.ts +4 -3
  169. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  170. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  171. package/dist/composition/compose-symbolic.js +12 -0
  172. package/dist/composition/compose-symbolic.js.map +1 -1
  173. package/dist/composition/discovery.d.ts.map +1 -1
  174. package/dist/composition/discovery.js +40 -12
  175. package/dist/composition/discovery.js.map +1 -1
  176. package/dist/composition/edges/_catalog-helpers.d.ts +34 -0
  177. package/dist/composition/edges/_catalog-helpers.d.ts.map +1 -0
  178. package/dist/composition/edges/_catalog-helpers.js +75 -0
  179. package/dist/composition/edges/_catalog-helpers.js.map +1 -0
  180. package/dist/composition/edges/calibration.d.ts.map +1 -1
  181. package/dist/composition/edges/calibration.js +1 -1
  182. package/dist/composition/edges/calibration.js.map +1 -1
  183. package/dist/composition/edges/catalog-condensed-matter.d.ts +64 -0
  184. package/dist/composition/edges/catalog-condensed-matter.d.ts.map +1 -0
  185. package/dist/composition/edges/catalog-condensed-matter.js +226 -0
  186. package/dist/composition/edges/catalog-condensed-matter.js.map +1 -0
  187. package/dist/composition/edges/catalog-fields.d.ts +68 -0
  188. package/dist/composition/edges/catalog-fields.d.ts.map +1 -0
  189. package/dist/composition/edges/catalog-fields.js +206 -0
  190. package/dist/composition/edges/catalog-fields.js.map +1 -0
  191. package/dist/composition/edges/catalog-full.d.ts +5 -263
  192. package/dist/composition/edges/catalog-full.d.ts.map +1 -1
  193. package/dist/composition/edges/catalog-full.js +9 -959
  194. package/dist/composition/edges/catalog-full.js.map +1 -1
  195. package/dist/composition/edges/catalog-gravitation-cosmology.d.ts +80 -0
  196. package/dist/composition/edges/catalog-gravitation-cosmology.d.ts.map +1 -0
  197. package/dist/composition/edges/catalog-gravitation-cosmology.js +245 -0
  198. package/dist/composition/edges/catalog-gravitation-cosmology.js.map +1 -0
  199. package/dist/composition/edges/catalog-quantum.d.ts +85 -0
  200. package/dist/composition/edges/catalog-quantum.d.ts.map +1 -0
  201. package/dist/composition/edges/catalog-quantum.js +252 -0
  202. package/dist/composition/edges/catalog-quantum.js.map +1 -0
  203. package/dist/composition/expr-simplify.d.ts +2 -6
  204. package/dist/composition/expr-simplify.d.ts.map +1 -1
  205. package/dist/composition/expr-simplify.js +1 -1
  206. package/dist/composition/expr-simplify.js.map +1 -1
  207. package/dist/composition/expr-subst.d.ts +2 -1
  208. package/dist/composition/expr-subst.d.ts.map +1 -1
  209. package/dist/composition/proposed-bridges.d.ts +4 -4
  210. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  211. package/dist/composition/proposed-bridges.js +1 -3
  212. package/dist/composition/proposed-bridges.js.map +1 -1
  213. package/dist/composition/quantities/_dims.d.ts +35 -0
  214. package/dist/composition/quantities/_dims.d.ts.map +1 -0
  215. package/dist/composition/quantities/_dims.js +45 -0
  216. package/dist/composition/quantities/_dims.js.map +1 -0
  217. package/dist/composition/quantities/common.d.ts +69 -0
  218. package/dist/composition/quantities/common.d.ts.map +1 -0
  219. package/dist/composition/quantities/common.js +200 -0
  220. package/dist/composition/quantities/common.js.map +1 -0
  221. package/dist/composition/quantities/condensed-matter.d.ts +63 -0
  222. package/dist/composition/quantities/condensed-matter.d.ts.map +1 -0
  223. package/dist/composition/quantities/condensed-matter.js +185 -0
  224. package/dist/composition/quantities/condensed-matter.js.map +1 -0
  225. package/dist/composition/quantities/fields.d.ts +59 -0
  226. package/dist/composition/quantities/fields.d.ts.map +1 -0
  227. package/dist/composition/quantities/fields.js +171 -0
  228. package/dist/composition/quantities/fields.js.map +1 -0
  229. package/dist/composition/quantities/gravitation-cosmology.d.ts +67 -0
  230. package/dist/composition/quantities/gravitation-cosmology.d.ts.map +1 -0
  231. package/dist/composition/quantities/gravitation-cosmology.js +199 -0
  232. package/dist/composition/quantities/gravitation-cosmology.js.map +1 -0
  233. package/dist/composition/quantities/quantum.d.ts +61 -0
  234. package/dist/composition/quantities/quantum.d.ts.map +1 -0
  235. package/dist/composition/quantities/quantum.js +178 -0
  236. package/dist/composition/quantities/quantum.js.map +1 -0
  237. package/dist/composition/quantities.d.ts +5 -263
  238. package/dist/composition/quantities.d.ts.map +1 -1
  239. package/dist/composition/quantities.js +7 -983
  240. package/dist/composition/quantities.js.map +1 -1
  241. package/dist/composition/retrodiction.d.ts.map +1 -1
  242. package/dist/composition/retrodiction.js +15 -3
  243. package/dist/composition/retrodiction.js.map +1 -1
  244. package/dist/composition/symbolic-constants.d.ts +3 -2
  245. package/dist/composition/symbolic-constants.d.ts.map +1 -1
  246. package/dist/core/tensor.d.ts +6 -0
  247. package/dist/core/tensor.d.ts.map +1 -1
  248. package/dist/core/tensor.js +6 -0
  249. package/dist/core/tensor.js.map +1 -1
  250. package/dist/diff/bridge-ast-gradient.js +1 -1
  251. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  252. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  253. package/dist/diff/bridge-gradient.js +15 -4
  254. package/dist/diff/bridge-gradient.js.map +1 -1
  255. package/dist/dimensional/algebra.d.ts +24 -0
  256. package/dist/dimensional/algebra.d.ts.map +1 -1
  257. package/dist/dimensional/algebra.js +31 -5
  258. package/dist/dimensional/algebra.js.map +1 -1
  259. package/dist/dimensional/ast-builders.d.ts +25 -0
  260. package/dist/dimensional/ast-builders.d.ts.map +1 -0
  261. package/dist/dimensional/ast-builders.js +27 -0
  262. package/dist/dimensional/ast-builders.js.map +1 -0
  263. package/dist/dimensional/ast-types.d.ts +193 -0
  264. package/dist/dimensional/ast-types.d.ts.map +1 -0
  265. package/dist/dimensional/ast-types.js +20 -0
  266. package/dist/dimensional/ast-types.js.map +1 -0
  267. package/dist/dimensional/buckingham.d.ts.map +1 -1
  268. package/dist/dimensional/buckingham.js +7 -4
  269. package/dist/dimensional/buckingham.js.map +1 -1
  270. package/dist/dimensional/connection-validators.d.ts +3 -38
  271. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  272. package/dist/dimensional/connection-validators.js.map +1 -1
  273. package/dist/dimensional/connection.d.ts.map +1 -1
  274. package/dist/dimensional/connection.js +9 -0
  275. package/dist/dimensional/connection.js.map +1 -1
  276. package/dist/dimensional/curvature-composite.d.ts +2 -1
  277. package/dist/dimensional/curvature-composite.d.ts.map +1 -1
  278. package/dist/dimensional/curvature-invariants.d.ts +2 -11
  279. package/dist/dimensional/curvature-invariants.d.ts.map +1 -1
  280. package/dist/dimensional/curvature-invariants.js.map +1 -1
  281. package/dist/dimensional/curvature.d.ts +5 -24
  282. package/dist/dimensional/curvature.d.ts.map +1 -1
  283. package/dist/dimensional/curvature.js.map +1 -1
  284. package/dist/dimensional/dimension-inference.d.ts.map +1 -1
  285. package/dist/dimensional/dimension-inference.js +11 -5
  286. package/dist/dimensional/dimension-inference.js.map +1 -1
  287. package/dist/dimensional/einstein-equation.d.ts +2 -11
  288. package/dist/dimensional/einstein-equation.d.ts.map +1 -1
  289. package/dist/dimensional/einstein-equation.js.map +1 -1
  290. package/dist/dimensional/killing-validators.d.ts +2 -19
  291. package/dist/dimensional/killing-validators.d.ts.map +1 -1
  292. package/dist/dimensional/killing-validators.js.map +1 -1
  293. package/dist/dimensional/metric-validators.d.ts +5 -39
  294. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  295. package/dist/dimensional/metric-validators.js.map +1 -1
  296. package/dist/dimensional/stress-energy-validators.d.ts +2 -21
  297. package/dist/dimensional/stress-energy-validators.d.ts.map +1 -1
  298. package/dist/dimensional/stress-energy-validators.js.map +1 -1
  299. package/dist/dimensional/tensor.d.ts +2 -32
  300. package/dist/dimensional/tensor.d.ts.map +1 -1
  301. package/dist/dimensional/tensor.js.map +1 -1
  302. package/dist/dimensional/validator.d.ts +12 -58
  303. package/dist/dimensional/validator.d.ts.map +1 -1
  304. package/dist/dimensional/validator.js +12 -9
  305. package/dist/dimensional/validator.js.map +1 -1
  306. package/dist/dimensional/weyl-validators.d.ts +2 -18
  307. package/dist/dimensional/weyl-validators.d.ts.map +1 -1
  308. package/dist/dimensional/weyl-validators.js.map +1 -1
  309. package/dist/index.d.ts +2 -0
  310. package/dist/index.d.ts.map +1 -1
  311. package/dist/index.js +2 -0
  312. package/dist/index.js.map +1 -1
  313. package/dist/numerical/be37-covariant-eikonal.d.ts +12 -11
  314. package/dist/numerical/be37-covariant-eikonal.d.ts.map +1 -1
  315. package/dist/numerical/be37-covariant-eikonal.js +23 -8
  316. package/dist/numerical/be37-covariant-eikonal.js.map +1 -1
  317. package/dist/numerical/christoffel-flat.d.ts +10 -1
  318. package/dist/numerical/christoffel-flat.d.ts.map +1 -1
  319. package/dist/numerical/christoffel-flat.js +11 -2
  320. package/dist/numerical/christoffel-flat.js.map +1 -1
  321. package/dist/numerical/curvature-lowering-helpers.d.ts +4 -1
  322. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  323. package/dist/numerical/curvature-lowering-helpers.js +72 -14
  324. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  325. package/dist/numerical/engine-registry.d.ts.map +1 -1
  326. package/dist/numerical/engine-registry.js +11 -0
  327. package/dist/numerical/engine-registry.js.map +1 -1
  328. package/dist/numerical/float64-engine.d.ts.map +1 -1
  329. package/dist/numerical/float64-engine.js +20 -28
  330. package/dist/numerical/float64-engine.js.map +1 -1
  331. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  332. package/dist/numerical/formula-dimension.js +1 -1
  333. package/dist/numerical/formula-dimension.js.map +1 -1
  334. package/dist/numerical/formula.d.ts +0 -2
  335. package/dist/numerical/formula.d.ts.map +1 -1
  336. package/dist/numerical/formula.js +7 -3
  337. package/dist/numerical/formula.js.map +1 -1
  338. package/dist/numerical/geodesic-integrator.d.ts +6 -1
  339. package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
  340. package/dist/numerical/geodesic-integrator.js +14 -6
  341. package/dist/numerical/geodesic-integrator.js.map +1 -1
  342. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  343. package/dist/numerical/gl4-integrator.js +106 -43
  344. package/dist/numerical/gl4-integrator.js.map +1 -1
  345. package/dist/numerical/lowering.d.ts.map +1 -1
  346. package/dist/numerical/lowering.js +8 -5
  347. package/dist/numerical/lowering.js.map +1 -1
  348. package/dist/numerical/null-ic.d.ts +4 -3
  349. package/dist/numerical/null-ic.d.ts.map +1 -1
  350. package/dist/numerical/null-ic.js +4 -3
  351. package/dist/numerical/null-ic.js.map +1 -1
  352. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  353. package/dist/numerical/perihelion-finder.js +15 -1
  354. package/dist/numerical/perihelion-finder.js.map +1 -1
  355. package/dist/numerical/quadrature.d.ts +3 -2
  356. package/dist/numerical/quadrature.d.ts.map +1 -1
  357. package/dist/numerical/quadrature.js +8 -1
  358. package/dist/numerical/quadrature.js.map +1 -1
  359. package/dist/numerical/weyl-lowering.d.ts.map +1 -1
  360. package/dist/numerical/weyl-lowering.js +28 -2
  361. package/dist/numerical/weyl-lowering.js.map +1 -1
  362. package/package.json +3 -2
  363. package/dist/canonical/entries/l1-gravity-thermo.d.ts +0 -12
  364. package/dist/canonical/entries/l1-gravity-thermo.d.ts.map +0 -1
  365. package/dist/canonical/entries/l1-gravity-thermo.js +0 -165
  366. package/dist/canonical/entries/l1-gravity-thermo.js.map +0 -1
  367. package/dist/canonical/entries/l1-quantum-em.d.ts +0 -10
  368. package/dist/canonical/entries/l1-quantum-em.d.ts.map +0 -1
  369. package/dist/canonical/entries/l1-quantum-em.js +0 -141
  370. package/dist/canonical/entries/l1-quantum-em.js.map +0 -1
@@ -0,0 +1,143 @@
1
+ import { registerCommand } from '../command.js';
2
+ import { emitJson } from '../output.js';
3
+ import { UsageError } from '../errors.js';
4
+ const FLAGS = [
5
+ { name: '--formula', valueStyle: 'next' },
6
+ { name: '--debug', valueStyle: 'none' },
7
+ { name: '--json', valueStyle: 'none' },
8
+ ];
9
+ const HELP = `upt derive <target:dim> <var:dim> ... [--formula "<expr>"]
10
+ Derive YOUR OWN equation's dimensional form. <dim> is a named
11
+ dimension (length, time, mass, velocity, ...), a constant (hbar, c,
12
+ G, k_B, e), or explicit (L^3.M^-1.T^-2). With --formula, also verify
13
+ it and recover the dimensionless prefactor.
14
+ e.g. upt derive period:time length:length gravity:acceleration \\
15
+ --formula "2*pi*sqrt(length/gravity)"`;
16
+ const fmtMono = (m) => Object.entries(m)
17
+ .filter(([, e]) => Math.abs(e) > 1e-9)
18
+ .map(([n, e]) => (e === 1 ? n : `${n}^${e}`))
19
+ .join('·') || '(dimensionless)';
20
+ const BASES = ['L', 'M', 'T', 'I', 'Theta', 'N', 'J'];
21
+ const dimsEqualTol = (a, b) => BASES.every((k) => Math.abs((a[k] || 0) - (b[k] || 0)) < 1e-9);
22
+ async function run(ctx) {
23
+ const { args, api, out, err } = ctx;
24
+ const isJson = args.flags.has('json');
25
+ const debug = args.flags.has('debug');
26
+ const formulaFlag = args.flags.get('formula');
27
+ const formula = formulaFlag ? formulaFlag[formulaFlag.length - 1] : undefined;
28
+ const rest = args.positionals;
29
+ if (rest.length < 1) {
30
+ throw new UsageError('upt derive needs a target spec, e.g. upt derive period:time length:length gravity:acceleration');
31
+ }
32
+ let specs;
33
+ try {
34
+ specs = rest.map((a) => {
35
+ const c = a.indexOf(':');
36
+ if (c < 1)
37
+ throw new Error(`'${a}' must be name:dimension (e.g. period:time)`);
38
+ return { name: a.slice(0, c), dim: api.parseDimensionSpec(a.slice(c + 1)) };
39
+ });
40
+ }
41
+ catch (e) {
42
+ throw new UsageError(' ' + e.message);
43
+ }
44
+ const target = specs[0];
45
+ const governing = specs.slice(1);
46
+ const det = api.dimensionallyDetermines(target, governing);
47
+ // Text lines follow the OLD bin's exact interleaving (bin/upt.mjs lines
48
+ // 340-385): the header/determination block — and the dimensional-check
49
+ // line — hit stdout BEFORE the formula parse/evaluate error sites, so a
50
+ // failing formula still leaves the partial report on stdout (the
51
+ // error-conversion fidelity rule: output emitted before the old
52
+ // `process.exit(2)` stays emitted before the throw). In --json mode text
53
+ // is suppressed and errors emit no JSON, so nothing precedes a throw.
54
+ const textOut = isJson ? () => { } : out;
55
+ let full;
56
+ let formulaCheck;
57
+ let mean;
58
+ const emitEnvelope = () => {
59
+ emitJson({
60
+ command: 'derive',
61
+ result: {
62
+ determination: det,
63
+ ...(full !== undefined ? { buckingham: full } : {}),
64
+ ...(formulaCheck !== undefined ? { formulaCheck } : {}),
65
+ ...(mean !== undefined ? { prefactor: mean } : {}),
66
+ },
67
+ }, ctx.write);
68
+ };
69
+ textOut(`\n● ${target.name} from {${governing.map((g) => g.name).join(', ')}}`);
70
+ if (det.determined) {
71
+ textOut(` dimensionally determined up to a constant: ${target.name} ∝ ${fmtMono(det.monomial)}`);
72
+ }
73
+ else {
74
+ full = api.buckinghamPi([target, ...governing]);
75
+ textOut(` NOT a unique monomial — ${full.piGroupCount} free dimensionless group(s) (${full.verdict}):`);
76
+ for (const g of full.piGroups)
77
+ textOut(` ${g.formula}`);
78
+ textOut(` (${det.reason})`);
79
+ }
80
+ if (formula) {
81
+ const parser = await api.getFormulaParser();
82
+ if (debug)
83
+ err(` [parser: ${await api.getFormulaParserKind()}]`);
84
+ const checker = await api.getFormulaDimensionChecker();
85
+ const dims = Object.fromEntries(governing.map((g) => [g.name, g.dim]));
86
+ const r = checker.check(formula, dims);
87
+ formulaCheck = r;
88
+ if (!r.ok) {
89
+ textOut(` formula dimensional check: ✗ ${r.error}`);
90
+ }
91
+ else {
92
+ const matches = dimsEqualTol(r.dim, target.dim);
93
+ textOut(` formula dimension: ${api.format(r.dim)}`
94
+ + (matches ? ` ✓ homogeneous, matches target` : ` ⚠ homogeneous but ≠ target ${api.format(target.dim)}`));
95
+ }
96
+ let cf;
97
+ try {
98
+ cf = parser.parse(formula);
99
+ }
100
+ catch (e) {
101
+ throw new UsageError(' formula parse error: ' + e.message);
102
+ }
103
+ if (!det.determined) {
104
+ textOut(' formula given, but with no unique monomial there is no single prefactor to recover.');
105
+ if (isJson)
106
+ emitEnvelope();
107
+ return 0;
108
+ }
109
+ const ratios = [];
110
+ for (let j = 0; j < 3; j++) {
111
+ const scope = {};
112
+ governing.forEach((g, i) => {
113
+ scope[g.name] = Math.pow(1.7 + i, 1 + 0.3 * j);
114
+ });
115
+ let cand = 1;
116
+ for (const g of governing)
117
+ cand *= Math.pow(scope[g.name], det.monomial?.[g.name] || 0);
118
+ try {
119
+ ratios.push(cf.evaluate(scope) / cand);
120
+ }
121
+ catch (e) {
122
+ throw new UsageError(' formula uses an undeclared variable: ' + e.message);
123
+ }
124
+ }
125
+ mean = ratios.reduce((a, b) => a + b, 0) / ratios.length;
126
+ const cv = Math.sqrt(ratios.reduce((a, b) => a + (b - mean) ** 2, 0) / ratios.length) / Math.abs(mean);
127
+ textOut(cv < 1e-9
128
+ ? ` formula MATCHES the dimensional form — recovered prefactor ≈ ${mean.toExponential(4)}`
129
+ : ` formula does NOT match the dimensional monomial (different input-dependence — a decoy or different physics).`);
130
+ }
131
+ if (isJson)
132
+ emitEnvelope();
133
+ return 0;
134
+ }
135
+ export const command = {
136
+ name: 'derive',
137
+ aliases: ['dim'],
138
+ flags: FLAGS,
139
+ help: HELP,
140
+ run,
141
+ };
142
+ registerCommand(command);
143
+ //# sourceMappingURL=derive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.js","sourceRoot":"","sources":["../../../src/cli/commands/derive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type Command } from '../command.js';
2
+ export declare const command: Command;
3
+ //# sourceMappingURL=discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/discover.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmB,KAAK,OAAO,EAAmB,MAAM,eAAe,CAAC;AAqJ/E,eAAO,MAAM,OAAO,EAAE,OAMrB,CAAC"}
@@ -0,0 +1,137 @@
1
+ import { registerCommand } from '../command.js';
2
+ import { resolveGraph } from '../graphs.js';
3
+ import { emitJson } from '../output.js';
4
+ import { parseDiscoveryOpts } from './_discovery-opts.js';
5
+ const FLAGS = [
6
+ { name: '--source', valueStyle: 'attached' },
7
+ { name: '--max-orders', valueStyle: 'attached' },
8
+ { name: '--anchor', valueStyle: 'attached', repeatable: true },
9
+ { name: '--derive', valueStyle: 'none' },
10
+ { name: '--json', valueStyle: 'none' },
11
+ ];
12
+ const HELP = `upt discover [--source=catalog|canonical|both]
13
+ VET the link candidates through the inference suite: hypothesise
14
+ each identification a≡b and test whether it merges disconnected
15
+ physics, unlocks quantities, and stays numerically consistent.
16
+ Ranks promising / inert / contradictory.
17
+ --source=canonical runs the funnel on the standard-physics L-layer
18
+ ALONE (bridges excluded) — new candidates from established physics,
19
+ and a self-consistency check (expect 0 contradictory).
20
+ --derive emits, for each 'promising' identification, the ONE algebraic
21
+ relation it implies (monomial elimination) as an UNADJUDICATED, math-only
22
+ proposal — NOT a bridge (Part-VI §XXVII-B). Pairs with --source=canonical.
23
+ --max-orders=N tunes the magnitude-clash threshold (default 3); looser N
24
+ keeps more candidates 'promising', tighter N falsifies more as clashes.
25
+ --anchor=k=v[,k2=v2] overrides the numeric anchor (default mass=M_sun)
26
+ for the consistency/closure check. Both reshape the candidate pool that
27
+ --derive consumes.`;
28
+ const EPISTEMICS = '⚠ a REVIEW SURFACE: `promising` means "worth a physicist\'s minute", not "true".\n' +
29
+ ' Each candidate hypothesises an identification a≡b and tests its consequences.';
30
+ // ── discover --derive (identity-consequence proposals) ────────────────────
31
+ function deriveReport(api, ranked, label, out) {
32
+ const proposals = api.deriveProposedBridges(ranked);
33
+ out(`\nDerived identity-consequence PROPOSALS — UNADJUDICATED, math-only [source: ${label}]`);
34
+ out('⚠ Each is the ALGEBRAIC CONSEQUENCE of an unadjudicated identification — NOT a new');
35
+ out(' relation and NOT a bridge. No mechanism asserted. Promotion to the catalog needs');
36
+ out(' adversarial + literature review (Part-VI §XXVII-B). The enumerator proposes; humans dispose.\n');
37
+ if (!proposals.length) {
38
+ out(' no admissible proposal (need two fully-quantitative, monomial canonical targets).');
39
+ return;
40
+ }
41
+ for (const p of proposals) {
42
+ let approx = '';
43
+ try {
44
+ const vals = Object.fromEntries((p.governing || []).map((g) => [g.name, 300]));
45
+ const at = (p.governing || []).map((g) => `${g.name}=300`).join(', ');
46
+ approx = ` ≈ ${p.evaluate(vals).toExponential(2)}${at ? ` (${at})` : ''}`;
47
+ }
48
+ catch {
49
+ approx = '';
50
+ }
51
+ out(` ${p.id}`);
52
+ out(` ${p.formulaLatex} ${p.dimensionalSignature}${approx}`);
53
+ out(` from: ${p.derivedFrom.identification.a} ≟ ${p.derivedFrom.identification.b}` +
54
+ ` (${p.derivedFrom.sourceEquationIds[0]} = ${p.derivedFrom.sourceEquationIds[1]}); solved for ${p.derivedFrom.solvedFor}`);
55
+ if (p.alsoDerivableFrom && p.alsoDerivableFrom.length) {
56
+ out(` also derivable from: ${p.alsoDerivableFrom.join('; ')}`);
57
+ }
58
+ }
59
+ out('');
60
+ }
61
+ async function run(ctx) {
62
+ const { args, api, out } = ctx;
63
+ const { graph, label, source } = resolveGraph(api, args.flags);
64
+ const opts = parseDiscoveryOpts(args.flags);
65
+ const ranked = api.rankDiscoveries(graph, opts);
66
+ const isDerive = args.flags.has('derive');
67
+ if (args.flags.has('json')) {
68
+ const result = isDerive ? api.deriveProposedBridges(ranked) : ranked;
69
+ emitJson({ command: 'discover', source, options: opts, epistemics: EPISTEMICS, result }, ctx.write);
70
+ return 0;
71
+ }
72
+ if (Object.keys(opts).length) {
73
+ const bits = [];
74
+ if (opts.maxOrdersOfMagnitude !== undefined)
75
+ bits.push(`max-orders=${opts.maxOrdersOfMagnitude}`);
76
+ if (opts.groundTruth) {
77
+ bits.push(`anchor={${Object.entries(opts.groundTruth).map(([k, v]) => `${k}=${v}`).join(', ')}}`);
78
+ }
79
+ out(` [discovery options: ${bits.join('; ')}]`);
80
+ }
81
+ if (isDerive) {
82
+ deriveReport(api, ranked, label, out);
83
+ return 0;
84
+ }
85
+ const by = (v) => ranked.filter((r) => r.verdict === v);
86
+ const promising = by('promising');
87
+ const inert = by('inert');
88
+ const contra = by('contradictory');
89
+ const clash = by('magnitude-clash');
90
+ out(`\nDiscovery — link candidates VETTED through the inference suite [source: ${label}]`);
91
+ out('⚠ a REVIEW SURFACE: `promising` means "worth a physicist\'s minute", not "true".');
92
+ out(' Each candidate hypothesises an identification a≡b and tests its consequences.\n');
93
+ out(` funnel: ${ranked.length} candidates → ${promising.length} promising ` +
94
+ `· ${inert.length} inert · ${clash.length} magnitude-clash ` +
95
+ `· ${contra.length} contradictory (falsified)\n`);
96
+ if (promising.length) {
97
+ out(' PROMISING (merges disconnected physics, unlocks quantities, stays consistent):');
98
+ for (const r of promising) {
99
+ out(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} [${r.dim}] score ${r.score}`);
100
+ out(` unlocks: ${r.unlocksFromAnchor.join(', ') || '—'}`);
101
+ }
102
+ }
103
+ else {
104
+ out(' no candidate is `promising` from the default {mass} anchor.');
105
+ }
106
+ if (clash.length) {
107
+ out(`\n MAGNITUDE-CLASH (representative values differ by > N orders — a falsifier):`);
108
+ for (const r of clash) {
109
+ const basis = r.magnitudeUsedAnchor ? ' (anchor-derived)' : '';
110
+ out(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} ~${r.ordersApart.toFixed(1)} orders apart${basis}`);
111
+ }
112
+ }
113
+ const subsumed = inert.filter((r) => r.subsuming);
114
+ if (subsumed.length) {
115
+ out(`\n SUBSUMING (generic ≟ specialization — tautological, barred from promising):`);
116
+ for (const r of subsumed) {
117
+ out(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} [${r.dim}]`);
118
+ }
119
+ }
120
+ if (contra.length) {
121
+ out(`\n CONTRADICTORY (the identification falsifies itself numerically):`);
122
+ for (const r of contra) {
123
+ out(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} disagreeing node(s): ${r.inconsistentNodes.join(', ')}`);
124
+ }
125
+ }
126
+ out('\n (magnitude gate abstains where a representative value is unknown; weak priors on dimension.)');
127
+ return 0;
128
+ }
129
+ export const command = {
130
+ name: 'discover',
131
+ aliases: ['discovery'],
132
+ flags: FLAGS,
133
+ help: HELP,
134
+ run,
135
+ };
136
+ registerCommand(command);
137
+ //# sourceMappingURL=discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/cli/commands/discover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type Command } from '../command.js';
2
+ export declare const command: Command;
3
+ //# sourceMappingURL=eval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"AASA,OAAO,EAAmB,KAAK,OAAO,EAAmB,MAAM,eAAe,CAAC;AAiE/E,eAAO,MAAM,OAAO,EAAE,OAMrB,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { registerCommand } from '../command.js';
2
+ import { emitJson } from '../output.js';
3
+ import { UsageError } from '../errors.js';
4
+ const FLAGS = [
5
+ { name: '--debug', valueStyle: 'none' },
6
+ { name: '--json', valueStyle: 'none' },
7
+ ];
8
+ const HELP = `upt eval "<formula>" name=value ...
9
+ Evaluate YOUR OWN scalar formula (safe — arithmetic only). Knows
10
+ pi/tau and sqrt/exp/ln/sin/...; any other name must be supplied.
11
+ e.g. upt eval "hbar*c^3/(8*pi*G*M*k_B)" hbar=1.054571817e-34 \\
12
+ c=299792458 G=6.6743e-11 M=1.989e30 k_B=1.380649e-23`;
13
+ async function run(ctx) {
14
+ const { args, api, out, err } = ctx;
15
+ const debug = args.flags.has('debug');
16
+ const isJson = args.flags.has('json');
17
+ const positionals = args.positionals;
18
+ const expr = positionals[0];
19
+ if (!expr) {
20
+ throw new UsageError('upt eval needs a formula, e.g. upt eval "a*b^2" a=2 b=3');
21
+ }
22
+ const parser = await api.getFormulaParser();
23
+ if (debug)
24
+ err(`[parser: ${await api.getFormulaParserKind()}]`);
25
+ let cf;
26
+ try {
27
+ cf = parser.parse(expr);
28
+ }
29
+ catch (e) {
30
+ throw new UsageError('parse error: ' + e.message);
31
+ }
32
+ const scope = {};
33
+ for (const a of positionals.slice(1)) {
34
+ const i = a.indexOf('=');
35
+ if (i > 0)
36
+ scope[a.slice(0, i)] = Number(a.slice(i + 1));
37
+ }
38
+ const missing = cf.variables.filter((v) => !(v in scope));
39
+ if (missing.length) {
40
+ throw new UsageError(`missing values for: ${missing.join(', ')} (free variables: ${cf.variables.join(', ') || 'none'})`);
41
+ }
42
+ let value;
43
+ try {
44
+ value = cf.evaluate(scope);
45
+ }
46
+ catch (e) {
47
+ throw new UsageError(e.message);
48
+ }
49
+ if (isJson) {
50
+ emitJson({ command: 'eval', result: { value } }, ctx.write);
51
+ return 0;
52
+ }
53
+ out(String(value));
54
+ return 0;
55
+ }
56
+ export const command = {
57
+ name: 'eval',
58
+ aliases: ['calc'],
59
+ flags: FLAGS,
60
+ help: HELP,
61
+ run,
62
+ };
63
+ registerCommand(command);
64
+ //# sourceMappingURL=eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type Command } from '../command.js';
2
+ export declare const command: Command;
3
+ //# sourceMappingURL=explain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/explain.ts"],"names":[],"mappings":"AAeA,OAAO,EAAmB,KAAK,OAAO,EAAmB,MAAM,eAAe,CAAC;AAoF/E,eAAO,MAAM,OAAO,EAAE,OAMrB,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { registerCommand } from '../command.js';
2
+ import { resolveGraph } from '../graphs.js';
3
+ import { emitJson } from '../output.js';
4
+ import { UsageError } from '../errors.js';
5
+ const FLAGS = [
6
+ { name: '--source', valueStyle: 'attached' },
7
+ { name: '--json', valueStyle: 'none' },
8
+ ];
9
+ const HELP = `upt explain <quantity> [name=value | name] ...
10
+ Explain how the graph determines a quantity: the identifiability
11
+ verdict, recovered value, derivation chains, and whether the inputs
12
+ are dimensionally sufficient.
13
+ e.g. upt explain hawking-temperature mass=1.989e30`;
14
+ /**
15
+ * Two modes, never mixed: bare names (structural analysis) OR name=value
16
+ * (adds value recovery). Malformed inputs are rejected with a `UsageError`
17
+ * rather than silently coerced — `mass=abc`→dropped, `mass=`→0,
18
+ * `mass=1e500`→∞, and a bare name alongside a valued one were all silent
19
+ * wrong-physics footguns.
20
+ */
21
+ function parseKnown(args) {
22
+ const valued = args.filter((a) => a.includes('='));
23
+ if (valued.length === 0)
24
+ return [...args]; // names mode
25
+ if (valued.length !== args.length) {
26
+ const bare = args.filter((a) => !a.includes('=')).join(', ');
27
+ throw new UsageError(`upt: cannot mix bare names (${bare}) with name=value inputs. `
28
+ + 'Use all names (structural) or all name=value (with recovery). See `upt help`.');
29
+ }
30
+ const values = {};
31
+ for (const a of args) {
32
+ const eq = a.indexOf('=');
33
+ const name = a.slice(0, eq);
34
+ const raw = a.slice(eq + 1);
35
+ const num = Number(raw);
36
+ if (raw === '' || !Number.isFinite(num)) {
37
+ throw new UsageError(`upt: '${a}' is not a finite number. Expected ${name}=<number>. See \`upt help\`.`);
38
+ }
39
+ values[name] = num;
40
+ }
41
+ return values;
42
+ }
43
+ async function run(ctx) {
44
+ const { args, api, out } = ctx;
45
+ const { graph, source } = resolveGraph(api, args.flags);
46
+ const [target, ...rest] = args.positionals;
47
+ if (!target) {
48
+ throw new UsageError('upt explain needs a quantity name. See `upt help`.');
49
+ }
50
+ const known = parseKnown(rest);
51
+ const x = api.explainQuantity(graph, target, known);
52
+ if (args.flags.has('json')) {
53
+ emitJson({ command: 'explain', source, result: x }, ctx.write);
54
+ return 0;
55
+ }
56
+ out(`\n● ${target}`);
57
+ out(` ${x.summary}`);
58
+ if (x.derivations.length) {
59
+ out(' derivations:');
60
+ for (const d of x.derivations) {
61
+ const val = d.value !== undefined ? ` = ${d.value.toExponential(4)}` : '';
62
+ const chain = d.leafInputs.join(',') !== d.sources.join(',') ? ` [from leaves: ${d.leafInputs.join(', ')}]` : '';
63
+ out(` - ${d.edge} (${d.label})${val}${chain}`);
64
+ if (d.dimensionalForm)
65
+ out(` ${d.dimensionalForm.formula}`);
66
+ }
67
+ }
68
+ if (x.blockingFrontier.length) {
69
+ out(` to determine it, also supply: ${x.blockingFrontier.join(', ')}`);
70
+ }
71
+ return 0;
72
+ }
73
+ export const command = {
74
+ name: 'explain',
75
+ aliases: [],
76
+ flags: FLAGS,
77
+ help: HELP,
78
+ run,
79
+ };
80
+ registerCommand(command);
81
+ //# sourceMappingURL=explain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../src/cli/commands/explain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Side-effect barrel: importing this module registers every ported CLI
3
+ * command (each command module calls `registerCommand` at load time).
4
+ * `main.ts` imports this once so `runCli`'s dispatch body never needs to
5
+ * change as commands are added.
6
+ */
7
+ import './priority.js';
8
+ import './audit.js';
9
+ import './coverage.js';
10
+ import './canonical.js';
11
+ import './recover.js';
12
+ import './connectors.js';
13
+ import './predict.js';
14
+ import './candidates.js';
15
+ import './explain.js';
16
+ import './symbolic.js';
17
+ import './eval.js';
18
+ import './derive.js';
19
+ import './map.js';
20
+ import './discover.js';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,eAAe,CAAC;AACvB,OAAO,YAAY,CAAC;AACpB,OAAO,eAAe,CAAC;AACvB,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AACtB,OAAO,iBAAiB,CAAC;AACzB,OAAO,cAAc,CAAC;AACtB,OAAO,iBAAiB,CAAC;AACzB,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,UAAU,CAAC;AAClB,OAAO,eAAe,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Side-effect barrel: importing this module registers every ported CLI
3
+ * command (each command module calls `registerCommand` at load time).
4
+ * `main.ts` imports this once so `runCli`'s dispatch body never needs to
5
+ * change as commands are added.
6
+ */
7
+ import './priority.js';
8
+ import './audit.js';
9
+ import './coverage.js';
10
+ import './canonical.js';
11
+ import './recover.js';
12
+ import './connectors.js';
13
+ import './predict.js';
14
+ import './candidates.js';
15
+ import './explain.js';
16
+ import './symbolic.js';
17
+ import './eval.js';
18
+ import './derive.js';
19
+ import './map.js';
20
+ import './discover.js';
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,eAAe,CAAC;AACvB,OAAO,YAAY,CAAC;AACpB,OAAO,eAAe,CAAC;AACvB,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AACtB,OAAO,iBAAiB,CAAC;AACzB,OAAO,cAAc,CAAC;AACtB,OAAO,iBAAiB,CAAC;AACzB,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,UAAU,CAAC;AAClB,OAAO,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Command } from '../command.js';
2
+ export declare const command: Command;
3
+ //# sourceMappingURL=map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/map.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAmB,KAAK,OAAO,EAAmB,MAAM,eAAe,CAAC;AAyP/E,eAAO,MAAM,OAAO,EAAE,OAMrB,CAAC"}