universal-physics-tensor 10.0.0 → 11.0.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 (720) hide show
  1. package/README.md +4 -3
  2. package/bin/upt.mjs +13 -1
  3. package/data/atlas/atlas.json +25 -25
  4. package/data/atlas/atlas.jsonld +1 -1
  5. package/data/atlas/diffusion.json +6 -6
  6. package/data/atlas/oscillators.json +7 -7
  7. package/data/atlas/waves.json +14 -14
  8. package/data/atlas/witness-results.json +11 -11
  9. package/data/bridge-catalog.json +371 -228
  10. package/data/bridge-catalog.schema.json +45 -7
  11. package/dist/atlas/applicability.d.ts.map +1 -1
  12. package/dist/atlas/applicability.js +21 -15
  13. package/dist/atlas/applicability.js.map +1 -1
  14. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +9 -1
  15. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
  16. package/dist/atlas/benchmark/hybrid-retrieval.js +15 -13
  17. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
  18. package/dist/atlas/benchmark/loader.js +2 -2
  19. package/dist/atlas/benchmark/loader.js.map +1 -1
  20. package/dist/atlas/benchmark/stats.d.ts +2 -2
  21. package/dist/atlas/benchmark/stats.d.ts.map +1 -1
  22. package/dist/atlas/benchmark/stats.js +15 -7
  23. package/dist/atlas/benchmark/stats.js.map +1 -1
  24. package/dist/atlas/catalog-formal-ref.d.ts +26 -3
  25. package/dist/atlas/catalog-formal-ref.d.ts.map +1 -1
  26. package/dist/atlas/catalog-formal-ref.js +52 -5
  27. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  28. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  29. package/dist/atlas/chain-pipeline.js +7 -8
  30. package/dist/atlas/chain-pipeline.js.map +1 -1
  31. package/dist/atlas/diffusion/bridges-closure.d.ts +0 -4
  32. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  33. package/dist/atlas/diffusion/bridges-closure.js +8 -12
  34. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  35. package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
  36. package/dist/atlas/diffusion/bridges.js +27 -39
  37. package/dist/atlas/diffusion/bridges.js.map +1 -1
  38. package/dist/atlas/diffusion/dimensions.d.ts +6 -14
  39. package/dist/atlas/diffusion/dimensions.d.ts.map +1 -1
  40. package/dist/atlas/diffusion/dimensions.js +8 -16
  41. package/dist/atlas/diffusion/dimensions.js.map +1 -1
  42. package/dist/atlas/diffusion/models.d.ts +3 -3
  43. package/dist/atlas/diffusion/models.d.ts.map +1 -1
  44. package/dist/atlas/diffusion/models.js +5 -10
  45. package/dist/atlas/diffusion/models.js.map +1 -1
  46. package/dist/atlas/diffusion/numerics.d.ts +16 -4
  47. package/dist/atlas/diffusion/numerics.d.ts.map +1 -1
  48. package/dist/atlas/diffusion/numerics.js +38 -24
  49. package/dist/atlas/diffusion/numerics.js.map +1 -1
  50. package/dist/atlas/link-prediction.d.ts +106 -3
  51. package/dist/atlas/link-prediction.d.ts.map +1 -1
  52. package/dist/atlas/link-prediction.js +212 -66
  53. package/dist/atlas/link-prediction.js.map +1 -1
  54. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
  55. package/dist/atlas/oscillators/bridges-coarse.js +7 -11
  56. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
  57. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  58. package/dist/atlas/oscillators/bridges-exact.js +6 -7
  59. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  60. package/dist/atlas/oscillators/bridges-limits.d.ts +3 -16
  61. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  62. package/dist/atlas/oscillators/bridges-limits.js +23 -34
  63. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  64. package/dist/atlas/oscillators/dimensions.d.ts +9 -21
  65. package/dist/atlas/oscillators/dimensions.d.ts.map +1 -1
  66. package/dist/atlas/oscillators/dimensions.js +9 -21
  67. package/dist/atlas/oscillators/dimensions.js.map +1 -1
  68. package/dist/atlas/oscillators/limit-witnesses.d.ts +2 -2
  69. package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -1
  70. package/dist/atlas/oscillators/limit-witnesses.js +17 -15
  71. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
  72. package/dist/atlas/oscillators/models.d.ts.map +1 -1
  73. package/dist/atlas/oscillators/models.js +2 -6
  74. package/dist/atlas/oscillators/models.js.map +1 -1
  75. package/dist/atlas/oscillators/pendulum-motion.d.ts +29 -6
  76. package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -1
  77. package/dist/atlas/oscillators/pendulum-motion.js +60 -40
  78. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
  79. package/dist/atlas/oscillators/phase-translation.d.ts +0 -11
  80. package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -1
  81. package/dist/atlas/oscillators/phase-translation.js +3 -4
  82. package/dist/atlas/oscillators/phase-translation.js.map +1 -1
  83. package/dist/atlas/oscillators/position-translation.d.ts +68 -7
  84. package/dist/atlas/oscillators/position-translation.d.ts.map +1 -1
  85. package/dist/atlas/oscillators/position-translation.js +123 -12
  86. package/dist/atlas/oscillators/position-translation.js.map +1 -1
  87. package/dist/atlas/oscillators/rejections.d.ts +0 -2
  88. package/dist/atlas/oscillators/rejections.d.ts.map +1 -1
  89. package/dist/atlas/oscillators/rejections.js +0 -7
  90. package/dist/atlas/oscillators/rejections.js.map +1 -1
  91. package/dist/atlas/physjs-entries.generated.d.ts +25 -24
  92. package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
  93. package/dist/atlas/physjs-entries.generated.js +25 -24
  94. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  95. package/dist/atlas/physjs-ref.d.ts +34 -31
  96. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  97. package/dist/atlas/physjs-ref.js +55 -53
  98. package/dist/atlas/physjs-ref.js.map +1 -1
  99. package/dist/atlas/physjs-reviewed.d.ts +1 -1
  100. package/dist/atlas/physjs-reviewed.js +15 -15
  101. package/dist/atlas/physjs-reviewed.js.map +1 -1
  102. package/dist/atlas/poster/statements.d.ts +0 -19
  103. package/dist/atlas/poster/statements.d.ts.map +1 -1
  104. package/dist/atlas/poster/statements.js +1 -1
  105. package/dist/atlas/poster/statements.js.map +1 -1
  106. package/dist/atlas/proof-target.d.ts +1 -1
  107. package/dist/atlas/proof-target.js +1 -1
  108. package/dist/atlas/proof-target.js.map +1 -1
  109. package/dist/atlas/regime.d.ts +1 -1
  110. package/dist/atlas/regime.d.ts.map +1 -1
  111. package/dist/atlas/regime.js +1 -1
  112. package/dist/atlas/regime.js.map +1 -1
  113. package/dist/atlas/text-overlap.d.ts +23 -0
  114. package/dist/atlas/text-overlap.d.ts.map +1 -0
  115. package/dist/atlas/text-overlap.js +41 -0
  116. package/dist/atlas/text-overlap.js.map +1 -0
  117. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  118. package/dist/atlas/waves/bridges-closure.js +2 -6
  119. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  120. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  121. package/dist/atlas/waves/bridges.js +32 -48
  122. package/dist/atlas/waves/bridges.js.map +1 -1
  123. package/dist/atlas/waves/models.d.ts +5 -6
  124. package/dist/atlas/waves/models.d.ts.map +1 -1
  125. package/dist/atlas/waves/models.js +7 -13
  126. package/dist/atlas/waves/models.js.map +1 -1
  127. package/dist/atlas/waves/numerics.d.ts.map +1 -1
  128. package/dist/atlas/waves/numerics.js +10 -3
  129. package/dist/atlas/waves/numerics.js.map +1 -1
  130. package/dist/atlas/witness-numeric.d.ts +30 -0
  131. package/dist/atlas/witness-numeric.d.ts.map +1 -1
  132. package/dist/atlas/witness-numeric.js +53 -0
  133. package/dist/atlas/witness-numeric.js.map +1 -1
  134. package/dist/atlas/witness-specs.d.ts.map +1 -1
  135. package/dist/atlas/witness-specs.js +19 -0
  136. package/dist/atlas/witness-specs.js.map +1 -1
  137. package/dist/atlas/witness-symbolic.d.ts +75 -3
  138. package/dist/atlas/witness-symbolic.d.ts.map +1 -1
  139. package/dist/atlas/witness-symbolic.js +116 -10
  140. package/dist/atlas/witness-symbolic.js.map +1 -1
  141. package/dist/bridges/catalog-load.d.ts.map +1 -1
  142. package/dist/bridges/catalog-load.js +13 -8
  143. package/dist/bridges/catalog-load.js.map +1 -1
  144. package/dist/bridges/catalog-types.d.ts +26 -2
  145. package/dist/bridges/catalog-types.d.ts.map +1 -1
  146. package/dist/bridges/catalog-types.js +11 -1
  147. package/dist/bridges/catalog-types.js.map +1 -1
  148. package/dist/bridges/evaluation-errors.d.ts +31 -1
  149. package/dist/bridges/evaluation-errors.d.ts.map +1 -1
  150. package/dist/bridges/evaluation-errors.js +20 -2
  151. package/dist/bridges/evaluation-errors.js.map +1 -1
  152. package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
  153. package/dist/bridges/evaluator-inputs.js +7 -5
  154. package/dist/bridges/evaluator-inputs.js.map +1 -1
  155. package/dist/bridges/evaluators.d.ts.map +1 -1
  156. package/dist/bridges/evaluators.js +27 -12
  157. package/dist/bridges/evaluators.js.map +1 -1
  158. package/dist/bridges/expr-parse.d.ts +11 -0
  159. package/dist/bridges/expr-parse.d.ts.map +1 -1
  160. package/dist/bridges/expr-parse.js +14 -5
  161. package/dist/bridges/expr-parse.js.map +1 -1
  162. package/dist/bridges/holds.d.ts +35 -3
  163. package/dist/bridges/holds.d.ts.map +1 -1
  164. package/dist/bridges/holds.js +117 -23
  165. package/dist/bridges/holds.js.map +1 -1
  166. package/dist/bridges/notices.d.ts.map +1 -1
  167. package/dist/bridges/notices.js +5 -5
  168. package/dist/bridges/notices.js.map +1 -1
  169. package/dist/bridges/relation-eval.d.ts +4 -4
  170. package/dist/bridges/relation-eval.d.ts.map +1 -1
  171. package/dist/bridges/relation-eval.js +15 -16
  172. package/dist/bridges/relation-eval.js.map +1 -1
  173. package/dist/bridges/sensitivity.d.ts.map +1 -1
  174. package/dist/bridges/sensitivity.js +3 -3
  175. package/dist/bridges/sensitivity.js.map +1 -1
  176. package/dist/bridges/validity.d.ts +33 -0
  177. package/dist/bridges/validity.d.ts.map +1 -0
  178. package/dist/bridges/validity.js +67 -0
  179. package/dist/bridges/validity.js.map +1 -0
  180. package/dist/canonical/entries/atomic.js +1 -3
  181. package/dist/canonical/entries/atomic.js.map +1 -1
  182. package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
  183. package/dist/canonical/entries/condensed-matter.js +4 -5
  184. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  185. package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
  186. package/dist/canonical/entries/dimensional-classics.js +3 -4
  187. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  188. package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
  189. package/dist/canonical/entries/electromagnetism.js +4 -10
  190. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  191. package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
  192. package/dist/canonical/entries/fluids-waves.js +3 -7
  193. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  194. package/dist/canonical/entries/mechanics.d.ts.map +1 -1
  195. package/dist/canonical/entries/mechanics.js +4 -6
  196. package/dist/canonical/entries/mechanics.js.map +1 -1
  197. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  198. package/dist/canonical/entries/nonmonomial.js +9 -17
  199. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  200. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  201. package/dist/canonical/entries/relativity.js +6 -6
  202. package/dist/canonical/entries/relativity.js.map +1 -1
  203. package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
  204. package/dist/canonical/entries/thermo-nuclear-cosmo.js +6 -10
  205. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  206. package/dist/canonical/fixed-points.d.ts +94 -0
  207. package/dist/canonical/fixed-points.d.ts.map +1 -0
  208. package/dist/canonical/fixed-points.js +81 -0
  209. package/dist/canonical/fixed-points.js.map +1 -0
  210. package/dist/canonical/linkage.d.ts.map +1 -1
  211. package/dist/canonical/linkage.js +25 -44
  212. package/dist/canonical/linkage.js.map +1 -1
  213. package/dist/canonical/normal-form.d.ts.map +1 -1
  214. package/dist/canonical/normal-form.js +5 -11
  215. package/dist/canonical/normal-form.js.map +1 -1
  216. package/dist/canonical/structural.d.ts +21 -21
  217. package/dist/canonical/structural.d.ts.map +1 -1
  218. package/dist/canonical/structural.js +40 -19
  219. package/dist/canonical/structural.js.map +1 -1
  220. package/dist/cases/brownian-sphere.d.ts +3 -3
  221. package/dist/cases/brownian-sphere.d.ts.map +1 -1
  222. package/dist/cases/brownian-sphere.js +6 -5
  223. package/dist/cases/brownian-sphere.js.map +1 -1
  224. package/dist/cases/damped-resonator.d.ts.map +1 -1
  225. package/dist/cases/damped-resonator.js +6 -9
  226. package/dist/cases/damped-resonator.js.map +1 -1
  227. package/dist/cases/kepler-rv.d.ts +1 -1
  228. package/dist/cases/kepler-rv.d.ts.map +1 -1
  229. package/dist/cases/kepler-rv.js +3 -2
  230. package/dist/cases/kepler-rv.js.map +1 -1
  231. package/dist/cases/lumped-cooling.d.ts +8 -3
  232. package/dist/cases/lumped-cooling.d.ts.map +1 -1
  233. package/dist/cases/lumped-cooling.js +21 -23
  234. package/dist/cases/lumped-cooling.js.map +1 -1
  235. package/dist/cases/quadrature.d.ts +7 -9
  236. package/dist/cases/quadrature.d.ts.map +1 -1
  237. package/dist/cases/quadrature.js +28 -32
  238. package/dist/cases/quadrature.js.map +1 -1
  239. package/dist/cases/resistor-noise.js +4 -4
  240. package/dist/cases/resistor-noise.js.map +1 -1
  241. package/dist/cases/skin-depth.d.ts +0 -4
  242. package/dist/cases/skin-depth.d.ts.map +1 -1
  243. package/dist/cases/skin-depth.js +3 -7
  244. package/dist/cases/skin-depth.js.map +1 -1
  245. package/dist/cli/args.d.ts +23 -1
  246. package/dist/cli/args.d.ts.map +1 -1
  247. package/dist/cli/args.js +30 -8
  248. package/dist/cli/args.js.map +1 -1
  249. package/dist/cli/bindings.d.ts.map +1 -1
  250. package/dist/cli/bindings.js +5 -4
  251. package/dist/cli/bindings.js.map +1 -1
  252. package/dist/cli/command.d.ts +8 -1
  253. package/dist/cli/command.d.ts.map +1 -1
  254. package/dist/cli/command.js.map +1 -1
  255. package/dist/cli/commands/_atlas-map.d.ts +0 -9
  256. package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
  257. package/dist/cli/commands/_atlas-map.js +8 -18
  258. package/dist/cli/commands/_atlas-map.js.map +1 -1
  259. package/dist/cli/commands/_atlas-route.d.ts.map +1 -1
  260. package/dist/cli/commands/_atlas-route.js +6 -2
  261. package/dist/cli/commands/_atlas-route.js.map +1 -1
  262. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  263. package/dist/cli/commands/_discovery-opts.js +8 -9
  264. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  265. package/dist/cli/commands/atlas.d.ts.map +1 -1
  266. package/dist/cli/commands/atlas.js +8 -5
  267. package/dist/cli/commands/atlas.js.map +1 -1
  268. package/dist/cli/commands/audit.d.ts.map +1 -1
  269. package/dist/cli/commands/audit.js +8 -1
  270. package/dist/cli/commands/audit.js.map +1 -1
  271. package/dist/cli/commands/axes.d.ts.map +1 -1
  272. package/dist/cli/commands/axes.js +20 -1
  273. package/dist/cli/commands/axes.js.map +1 -1
  274. package/dist/cli/commands/confront.d.ts.map +1 -1
  275. package/dist/cli/commands/confront.js +8 -14
  276. package/dist/cli/commands/confront.js.map +1 -1
  277. package/dist/cli/commands/derive.d.ts.map +1 -1
  278. package/dist/cli/commands/derive.js +22 -22
  279. package/dist/cli/commands/derive.js.map +1 -1
  280. package/dist/cli/commands/discover.d.ts.map +1 -1
  281. package/dist/cli/commands/discover.js +6 -2
  282. package/dist/cli/commands/discover.js.map +1 -1
  283. package/dist/cli/commands/eval.d.ts.map +1 -1
  284. package/dist/cli/commands/eval.js +1 -0
  285. package/dist/cli/commands/eval.js.map +1 -1
  286. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  287. package/dist/cli/commands/evaluate.js +65 -37
  288. package/dist/cli/commands/evaluate.js.map +1 -1
  289. package/dist/cli/commands/explain.d.ts.map +1 -1
  290. package/dist/cli/commands/explain.js +2 -1
  291. package/dist/cli/commands/explain.js.map +1 -1
  292. package/dist/cli/commands/ground.d.ts.map +1 -1
  293. package/dist/cli/commands/ground.js +1 -0
  294. package/dist/cli/commands/ground.js.map +1 -1
  295. package/dist/cli/commands/map.d.ts.map +1 -1
  296. package/dist/cli/commands/map.js +75 -5
  297. package/dist/cli/commands/map.js.map +1 -1
  298. package/dist/cli/commands/metric.d.ts.map +1 -1
  299. package/dist/cli/commands/metric.js +12 -9
  300. package/dist/cli/commands/metric.js.map +1 -1
  301. package/dist/cli/commands/path.d.ts +10 -0
  302. package/dist/cli/commands/path.d.ts.map +1 -1
  303. package/dist/cli/commands/path.js +25 -3
  304. package/dist/cli/commands/path.js.map +1 -1
  305. package/dist/cli/commands/probe.d.ts.map +1 -1
  306. package/dist/cli/commands/probe.js +59 -16
  307. package/dist/cli/commands/probe.js.map +1 -1
  308. package/dist/cli/commands/regime.d.ts.map +1 -1
  309. package/dist/cli/commands/regime.js +1 -0
  310. package/dist/cli/commands/regime.js.map +1 -1
  311. package/dist/cli/commands/retrieve.d.ts.map +1 -1
  312. package/dist/cli/commands/retrieve.js +1 -0
  313. package/dist/cli/commands/retrieve.js.map +1 -1
  314. package/dist/cli/commands/search.d.ts.map +1 -1
  315. package/dist/cli/commands/search.js +1 -0
  316. package/dist/cli/commands/search.js.map +1 -1
  317. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  318. package/dist/cli/commands/symbolic.js +19 -28
  319. package/dist/cli/commands/symbolic.js.map +1 -1
  320. package/dist/cli/commands/testplan.d.ts.map +1 -1
  321. package/dist/cli/commands/testplan.js +4 -2
  322. package/dist/cli/commands/testplan.js.map +1 -1
  323. package/dist/cli/expr-print.d.ts +0 -2
  324. package/dist/cli/expr-print.d.ts.map +1 -1
  325. package/dist/cli/expr-print.js +7 -31
  326. package/dist/cli/expr-print.js.map +1 -1
  327. package/dist/cli/main.d.ts +7 -0
  328. package/dist/cli/main.d.ts.map +1 -1
  329. package/dist/cli/main.js +18 -3
  330. package/dist/cli/main.js.map +1 -1
  331. package/dist/cli/numeric-flag.d.ts +12 -0
  332. package/dist/cli/numeric-flag.d.ts.map +1 -0
  333. package/dist/cli/numeric-flag.js +44 -0
  334. package/dist/cli/numeric-flag.js.map +1 -0
  335. package/dist/cli/output.d.ts +20 -0
  336. package/dist/cli/output.d.ts.map +1 -1
  337. package/dist/cli/output.js +15 -0
  338. package/dist/cli/output.js.map +1 -1
  339. package/dist/cli/record-reach.js +2 -2
  340. package/dist/cli/record-reach.js.map +1 -1
  341. package/dist/cli/record-tables.d.ts.map +1 -1
  342. package/dist/cli/record-tables.js +6 -5
  343. package/dist/cli/record-tables.js.map +1 -1
  344. package/dist/cli/record.d.ts +1 -5
  345. package/dist/cli/record.d.ts.map +1 -1
  346. package/dist/cli/record.js +9 -8
  347. package/dist/cli/record.js.map +1 -1
  348. package/dist/cli/search-index.d.ts.map +1 -1
  349. package/dist/cli/search-index.js +7 -6
  350. package/dist/cli/search-index.js.map +1 -1
  351. package/dist/cli/statuses.d.ts +0 -2
  352. package/dist/cli/statuses.d.ts.map +1 -1
  353. package/dist/cli/statuses.js +0 -7
  354. package/dist/cli/statuses.js.map +1 -1
  355. package/dist/cli/stored-results.d.ts +7 -0
  356. package/dist/cli/stored-results.d.ts.map +1 -0
  357. package/dist/cli/stored-results.js +23 -0
  358. package/dist/cli/stored-results.js.map +1 -0
  359. package/dist/cli/version.d.ts.map +1 -1
  360. package/dist/cli/version.js +7 -5
  361. package/dist/cli/version.js.map +1 -1
  362. package/dist/cli-api.d.ts +34 -5
  363. package/dist/cli-api.d.ts.map +1 -1
  364. package/dist/cli-api.js +28 -4
  365. package/dist/cli-api.js.map +1 -1
  366. package/dist/composition/algebraic-equivalence.d.ts +43 -0
  367. package/dist/composition/algebraic-equivalence.d.ts.map +1 -0
  368. package/dist/composition/algebraic-equivalence.js +115 -0
  369. package/dist/composition/algebraic-equivalence.js.map +1 -0
  370. package/dist/composition/axes.d.ts +0 -6
  371. package/dist/composition/axes.d.ts.map +1 -1
  372. package/dist/composition/axes.js +6 -6
  373. package/dist/composition/axes.js.map +1 -1
  374. package/dist/composition/axis-audit.d.ts +47 -20
  375. package/dist/composition/axis-audit.d.ts.map +1 -1
  376. package/dist/composition/axis-audit.js +82 -9
  377. package/dist/composition/axis-audit.js.map +1 -1
  378. package/dist/composition/bridge-analysis.d.ts +17 -0
  379. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  380. package/dist/composition/bridge-analysis.js +102 -55
  381. package/dist/composition/bridge-analysis.js.map +1 -1
  382. package/dist/composition/canonical-compare.d.ts +40 -0
  383. package/dist/composition/canonical-compare.d.ts.map +1 -1
  384. package/dist/composition/canonical-compare.js +122 -24
  385. package/dist/composition/canonical-compare.js.map +1 -1
  386. package/dist/composition/canonical-graph.d.ts +1 -1
  387. package/dist/composition/canonical-graph.d.ts.map +1 -1
  388. package/dist/composition/canonical-graph.js +9 -36
  389. package/dist/composition/canonical-graph.js.map +1 -1
  390. package/dist/composition/canonical-json.js +2 -2
  391. package/dist/composition/canonical-json.js.map +1 -1
  392. package/dist/composition/catalog-graph.d.ts.map +1 -1
  393. package/dist/composition/catalog-graph.js +2 -5
  394. package/dist/composition/catalog-graph.js.map +1 -1
  395. package/dist/composition/chain-candidate.d.ts +8 -0
  396. package/dist/composition/chain-candidate.d.ts.map +1 -1
  397. package/dist/composition/chain-candidate.js +9 -2
  398. package/dist/composition/chain-candidate.js.map +1 -1
  399. package/dist/composition/chain-match.d.ts +6 -3
  400. package/dist/composition/chain-match.d.ts.map +1 -1
  401. package/dist/composition/chain-match.js +4 -1
  402. package/dist/composition/chain-match.js.map +1 -1
  403. package/dist/composition/chain-result.d.ts.map +1 -1
  404. package/dist/composition/chain-result.js +2 -14
  405. package/dist/composition/chain-result.js.map +1 -1
  406. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  407. package/dist/composition/compose-symbolic.js +3 -2
  408. package/dist/composition/compose-symbolic.js.map +1 -1
  409. package/dist/composition/compose.d.ts.map +1 -1
  410. package/dist/composition/compose.js +13 -5
  411. package/dist/composition/compose.js.map +1 -1
  412. package/dist/composition/composition-recovery.d.ts.map +1 -1
  413. package/dist/composition/composition-recovery.js +4 -7
  414. package/dist/composition/composition-recovery.js.map +1 -1
  415. package/dist/composition/discovery.d.ts +56 -0
  416. package/dist/composition/discovery.d.ts.map +1 -1
  417. package/dist/composition/discovery.js +114 -60
  418. package/dist/composition/discovery.js.map +1 -1
  419. package/dist/composition/edge.d.ts +21 -2
  420. package/dist/composition/edge.d.ts.map +1 -1
  421. package/dist/composition/edge.js +23 -1
  422. package/dist/composition/edge.js.map +1 -1
  423. package/dist/composition/enumerate.d.ts.map +1 -1
  424. package/dist/composition/enumerate.js +18 -3
  425. package/dist/composition/enumerate.js.map +1 -1
  426. package/dist/composition/evaluate-relation.d.ts +35 -11
  427. package/dist/composition/evaluate-relation.d.ts.map +1 -1
  428. package/dist/composition/evaluate-relation.js +60 -39
  429. package/dist/composition/evaluate-relation.js.map +1 -1
  430. package/dist/composition/explain.d.ts +3 -12
  431. package/dist/composition/explain.d.ts.map +1 -1
  432. package/dist/composition/explain.js +7 -20
  433. package/dist/composition/explain.js.map +1 -1
  434. package/dist/composition/expr-eval.d.ts.map +1 -1
  435. package/dist/composition/expr-eval.js +2 -11
  436. package/dist/composition/expr-eval.js.map +1 -1
  437. package/dist/composition/expr-simplify.d.ts +16 -0
  438. package/dist/composition/expr-simplify.d.ts.map +1 -1
  439. package/dist/composition/expr-simplify.js +15 -20
  440. package/dist/composition/expr-simplify.js.map +1 -1
  441. package/dist/composition/formula-shape.d.ts +23 -4
  442. package/dist/composition/formula-shape.d.ts.map +1 -1
  443. package/dist/composition/formula-shape.js +57 -17
  444. package/dist/composition/formula-shape.js.map +1 -1
  445. package/dist/composition/graph-structure.d.ts +98 -0
  446. package/dist/composition/graph-structure.d.ts.map +1 -0
  447. package/dist/composition/graph-structure.js +167 -0
  448. package/dist/composition/graph-structure.js.map +1 -0
  449. package/dist/composition/graph-viz-svg.d.ts.map +1 -1
  450. package/dist/composition/graph-viz-svg.js +1 -1
  451. package/dist/composition/graph-viz-svg.js.map +1 -1
  452. package/dist/composition/graph-viz.d.ts.map +1 -1
  453. package/dist/composition/graph-viz.js +8 -37
  454. package/dist/composition/graph-viz.js.map +1 -1
  455. package/dist/composition/identifiability.d.ts +91 -4
  456. package/dist/composition/identifiability.d.ts.map +1 -1
  457. package/dist/composition/identifiability.js +363 -6
  458. package/dist/composition/identifiability.js.map +1 -1
  459. package/dist/composition/index.d.ts +8 -4
  460. package/dist/composition/index.d.ts.map +1 -1
  461. package/dist/composition/index.js +3 -2
  462. package/dist/composition/index.js.map +1 -1
  463. package/dist/composition/mathts-quiet.d.ts +4 -3
  464. package/dist/composition/mathts-quiet.d.ts.map +1 -1
  465. package/dist/composition/mathts-quiet.js +4 -3
  466. package/dist/composition/mathts-quiet.js.map +1 -1
  467. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
  468. package/dist/composition/mathts-scalar-symbols.js +2 -1
  469. package/dist/composition/mathts-scalar-symbols.js.map +1 -1
  470. package/dist/composition/probe/corpus.d.ts +4 -2
  471. package/dist/composition/probe/corpus.d.ts.map +1 -1
  472. package/dist/composition/probe/corpus.js +20 -9
  473. package/dist/composition/probe/corpus.js.map +1 -1
  474. package/dist/composition/probe/dataset.d.ts +17 -0
  475. package/dist/composition/probe/dataset.d.ts.map +1 -1
  476. package/dist/composition/probe/dataset.js +95 -50
  477. package/dist/composition/probe/dataset.js.map +1 -1
  478. package/dist/composition/probe/experiment-design.d.ts +5 -1
  479. package/dist/composition/probe/experiment-design.d.ts.map +1 -1
  480. package/dist/composition/probe/experiment-design.js +44 -24
  481. package/dist/composition/probe/experiment-design.js.map +1 -1
  482. package/dist/composition/probe/falsify.d.ts.map +1 -1
  483. package/dist/composition/probe/falsify.js +2 -0
  484. package/dist/composition/probe/falsify.js.map +1 -1
  485. package/dist/composition/probe/fit.d.ts +6 -0
  486. package/dist/composition/probe/fit.d.ts.map +1 -1
  487. package/dist/composition/probe/fit.js +46 -22
  488. package/dist/composition/probe/fit.js.map +1 -1
  489. package/dist/composition/probe/frontier.d.ts.map +1 -1
  490. package/dist/composition/probe/frontier.js +33 -15
  491. package/dist/composition/probe/frontier.js.map +1 -1
  492. package/dist/composition/probe/generator.d.ts +27 -1
  493. package/dist/composition/probe/generator.d.ts.map +1 -1
  494. package/dist/composition/probe/generator.js +53 -30
  495. package/dist/composition/probe/generator.js.map +1 -1
  496. package/dist/composition/probe/index.d.ts +14 -0
  497. package/dist/composition/probe/index.d.ts.map +1 -1
  498. package/dist/composition/probe/index.js +6 -0
  499. package/dist/composition/probe/index.js.map +1 -1
  500. package/dist/composition/probe/limits.d.ts +24 -1
  501. package/dist/composition/probe/limits.d.ts.map +1 -1
  502. package/dist/composition/probe/limits.js +53 -11
  503. package/dist/composition/probe/limits.js.map +1 -1
  504. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  505. package/dist/composition/probe/pipeline.js +10 -4
  506. package/dist/composition/probe/pipeline.js.map +1 -1
  507. package/dist/composition/probe/power-law.d.ts +121 -0
  508. package/dist/composition/probe/power-law.d.ts.map +1 -0
  509. package/dist/composition/probe/power-law.js +255 -0
  510. package/dist/composition/probe/power-law.js.map +1 -0
  511. package/dist/composition/probe/problem.d.ts +7 -4
  512. package/dist/composition/probe/problem.d.ts.map +1 -1
  513. package/dist/composition/probe/problem.js +177 -49
  514. package/dist/composition/probe/problem.js.map +1 -1
  515. package/dist/composition/probe/report.js +1 -1
  516. package/dist/composition/probe/report.js.map +1 -1
  517. package/dist/composition/probe/residual.d.ts +6 -1
  518. package/dist/composition/probe/residual.d.ts.map +1 -1
  519. package/dist/composition/probe/residual.js +9 -7
  520. package/dist/composition/probe/residual.js.map +1 -1
  521. package/dist/composition/probe/structure.d.ts +82 -17
  522. package/dist/composition/probe/structure.d.ts.map +1 -1
  523. package/dist/composition/probe/structure.js +129 -55
  524. package/dist/composition/probe/structure.js.map +1 -1
  525. package/dist/composition/probe/study.d.ts +31 -9
  526. package/dist/composition/probe/study.d.ts.map +1 -1
  527. package/dist/composition/probe/study.js +236 -181
  528. package/dist/composition/probe/study.js.map +1 -1
  529. package/dist/composition/probe/t-tail.d.ts +17 -0
  530. package/dist/composition/probe/t-tail.d.ts.map +1 -0
  531. package/dist/composition/probe/t-tail.js +32 -0
  532. package/dist/composition/probe/t-tail.js.map +1 -0
  533. package/dist/composition/probe/types.d.ts +3 -0
  534. package/dist/composition/probe/types.d.ts.map +1 -1
  535. package/dist/composition/probe/types.js.map +1 -1
  536. package/dist/composition/proposed-bridges.d.ts +41 -10
  537. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  538. package/dist/composition/proposed-bridges.js +100 -55
  539. package/dist/composition/proposed-bridges.js.map +1 -1
  540. package/dist/composition/quantity-clusters.d.ts +48 -0
  541. package/dist/composition/quantity-clusters.d.ts.map +1 -0
  542. package/dist/composition/quantity-clusters.js +98 -0
  543. package/dist/composition/quantity-clusters.js.map +1 -0
  544. package/dist/composition/rational-exponent.d.ts +40 -0
  545. package/dist/composition/rational-exponent.d.ts.map +1 -0
  546. package/dist/composition/rational-exponent.js +65 -0
  547. package/dist/composition/rational-exponent.js.map +1 -0
  548. package/dist/composition/representative-values.d.ts +22 -0
  549. package/dist/composition/representative-values.d.ts.map +1 -1
  550. package/dist/composition/representative-values.js +23 -0
  551. package/dist/composition/representative-values.js.map +1 -1
  552. package/dist/composition/retrodiction.d.ts.map +1 -1
  553. package/dist/composition/retrodiction.js +2 -1
  554. package/dist/composition/retrodiction.js.map +1 -1
  555. package/dist/composition/user-equation.d.ts.map +1 -1
  556. package/dist/composition/user-equation.js +2 -2
  557. package/dist/composition/user-equation.js.map +1 -1
  558. package/dist/core/assignment.d.ts +19 -0
  559. package/dist/core/assignment.d.ts.map +1 -0
  560. package/dist/core/assignment.js +19 -0
  561. package/dist/core/assignment.js.map +1 -0
  562. package/dist/core/compare.d.ts +32 -0
  563. package/dist/core/compare.d.ts.map +1 -0
  564. package/dist/core/compare.js +46 -0
  565. package/dist/core/compare.js.map +1 -0
  566. package/dist/core/constants.d.ts +30 -30
  567. package/dist/core/constants.d.ts.map +1 -1
  568. package/dist/core/constants.js +47 -30
  569. package/dist/core/constants.js.map +1 -1
  570. package/dist/core/data-file.d.ts +7 -0
  571. package/dist/core/data-file.d.ts.map +1 -1
  572. package/dist/core/data-file.js +17 -0
  573. package/dist/core/data-file.js.map +1 -1
  574. package/dist/core/format.d.ts +36 -0
  575. package/dist/core/format.d.ts.map +1 -0
  576. package/dist/core/format.js +39 -0
  577. package/dist/core/format.js.map +1 -0
  578. package/dist/core/hash.d.ts +14 -0
  579. package/dist/core/hash.d.ts.map +1 -0
  580. package/dist/core/hash.js +17 -0
  581. package/dist/core/hash.js.map +1 -0
  582. package/dist/core/json-schema.d.ts +2 -0
  583. package/dist/core/json-schema.d.ts.map +1 -1
  584. package/dist/core/json-schema.js +14 -13
  585. package/dist/core/json-schema.js.map +1 -1
  586. package/dist/core/labeled-tensor.d.ts.map +1 -1
  587. package/dist/core/labeled-tensor.js +0 -8
  588. package/dist/core/labeled-tensor.js.map +1 -1
  589. package/dist/core/mathts-read.d.ts +25 -0
  590. package/dist/core/mathts-read.d.ts.map +1 -0
  591. package/dist/core/mathts-read.js +51 -0
  592. package/dist/core/mathts-read.js.map +1 -0
  593. package/dist/core/tensor.d.ts.map +1 -1
  594. package/dist/core/tensor.js +24 -0
  595. package/dist/core/tensor.js.map +1 -1
  596. package/dist/core/types.d.ts +5 -5
  597. package/dist/diff/bridge-gradient.d.ts +19 -6
  598. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  599. package/dist/diff/bridge-gradient.js +19 -11
  600. package/dist/diff/bridge-gradient.js.map +1 -1
  601. package/dist/diff/bridge-specs.d.ts.map +1 -1
  602. package/dist/diff/bridge-specs.js +3 -0
  603. package/dist/diff/bridge-specs.js.map +1 -1
  604. package/dist/dimensional/algebra.d.ts +18 -0
  605. package/dist/dimensional/algebra.d.ts.map +1 -1
  606. package/dist/dimensional/algebra.js +41 -1
  607. package/dist/dimensional/algebra.js.map +1 -1
  608. package/dist/dimensional/ast-builders.d.ts +7 -0
  609. package/dist/dimensional/ast-builders.d.ts.map +1 -1
  610. package/dist/dimensional/ast-builders.js +11 -0
  611. package/dist/dimensional/ast-builders.js.map +1 -1
  612. package/dist/dimensional/ast-leaves.d.ts +81 -0
  613. package/dist/dimensional/ast-leaves.d.ts.map +1 -0
  614. package/dist/dimensional/ast-leaves.js +146 -0
  615. package/dist/dimensional/ast-leaves.js.map +1 -0
  616. package/dist/dimensional/buckingham.d.ts.map +1 -1
  617. package/dist/dimensional/buckingham.js +15 -27
  618. package/dist/dimensional/buckingham.js.map +1 -1
  619. package/dist/dimensional/constant-rows.js +9 -9
  620. package/dist/dimensional/constant-rows.js.map +1 -1
  621. package/dist/dimensional/dimension-inference.d.ts.map +1 -1
  622. package/dist/dimensional/dimension-inference.js +1 -2
  623. package/dist/dimensional/dimension-inference.js.map +1 -1
  624. package/dist/dimensional/errors.d.ts +1 -1
  625. package/dist/dimensional/errors.d.ts.map +1 -1
  626. package/dist/dimensional/errors.js +1 -15
  627. package/dist/dimensional/errors.js.map +1 -1
  628. package/dist/dimensional/exact-scale.d.ts +0 -17
  629. package/dist/dimensional/exact-scale.d.ts.map +1 -1
  630. package/dist/dimensional/exact-scale.js +8 -8
  631. package/dist/dimensional/exact-scale.js.map +1 -1
  632. package/dist/dimensional/gauge-field.d.ts.map +1 -1
  633. package/dist/dimensional/gauge-field.js +2 -2
  634. package/dist/dimensional/gauge-field.js.map +1 -1
  635. package/dist/dimensional/hyphen-names.d.ts +12 -2
  636. package/dist/dimensional/hyphen-names.d.ts.map +1 -1
  637. package/dist/dimensional/hyphen-names.js +44 -19
  638. package/dist/dimensional/hyphen-names.js.map +1 -1
  639. package/dist/dimensional/metric.d.ts.map +1 -1
  640. package/dist/dimensional/metric.js +0 -1
  641. package/dist/dimensional/metric.js.map +1 -1
  642. package/dist/dimensional/symbolic-constants.d.ts +9 -0
  643. package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
  644. package/dist/dimensional/symbolic-constants.js +13 -1
  645. package/dist/dimensional/symbolic-constants.js.map +1 -1
  646. package/dist/dimensional/types.d.ts +36 -0
  647. package/dist/dimensional/types.d.ts.map +1 -1
  648. package/dist/dimensional/types.js +45 -7
  649. package/dist/dimensional/types.js.map +1 -1
  650. package/dist/dimensional/unit-data.js +2 -2
  651. package/dist/dimensional/unit-data.js.map +1 -1
  652. package/dist/index.d.ts +9 -3
  653. package/dist/index.d.ts.map +1 -1
  654. package/dist/index.js +10 -4
  655. package/dist/index.js.map +1 -1
  656. package/dist/numerical/christoffel-flat.d.ts.map +1 -1
  657. package/dist/numerical/christoffel-flat.js +3 -2
  658. package/dist/numerical/christoffel-flat.js.map +1 -1
  659. package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
  660. package/dist/numerical/covariant-eikonal.js +34 -11
  661. package/dist/numerical/covariant-eikonal.js.map +1 -1
  662. package/dist/numerical/curvature-lowering-helpers.js +3 -2
  663. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  664. package/dist/numerical/errors.d.ts.map +1 -1
  665. package/dist/numerical/errors.js +0 -3
  666. package/dist/numerical/errors.js.map +1 -1
  667. package/dist/numerical/finite-difference.d.ts +22 -0
  668. package/dist/numerical/finite-difference.d.ts.map +1 -0
  669. package/dist/numerical/finite-difference.js +27 -0
  670. package/dist/numerical/finite-difference.js.map +1 -0
  671. package/dist/numerical/geodesic-integrator.d.ts.map +1 -1
  672. package/dist/numerical/geodesic-integrator.js +22 -14
  673. package/dist/numerical/geodesic-integrator.js.map +1 -1
  674. package/dist/numerical/geometrized.d.ts.map +1 -1
  675. package/dist/numerical/geometrized.js +0 -1
  676. package/dist/numerical/geometrized.js.map +1 -1
  677. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  678. package/dist/numerical/mathts-engine.js +10 -24
  679. package/dist/numerical/mathts-engine.js.map +1 -1
  680. package/dist/numerical/metric-inverse.d.ts.map +1 -1
  681. package/dist/numerical/metric-inverse.js +83 -46
  682. package/dist/numerical/metric-inverse.js.map +1 -1
  683. package/dist/numerical/null-ray-integrator.d.ts +2 -1
  684. package/dist/numerical/null-ray-integrator.d.ts.map +1 -1
  685. package/dist/numerical/null-ray-integrator.js +12 -12
  686. package/dist/numerical/null-ray-integrator.js.map +1 -1
  687. package/dist/numerical/painleve-gullstrand-metric.js +2 -2
  688. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  689. package/dist/numerical/perihelion-finder.d.ts +0 -36
  690. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  691. package/dist/numerical/perihelion-finder.js +41 -87
  692. package/dist/numerical/perihelion-finder.js.map +1 -1
  693. package/dist/numerical/quadrature.d.ts.map +1 -1
  694. package/dist/numerical/quadrature.js +8 -10
  695. package/dist/numerical/quadrature.js.map +1 -1
  696. package/dist/numerical/rk4-trajectory.d.ts +10 -0
  697. package/dist/numerical/rk4-trajectory.d.ts.map +1 -0
  698. package/dist/numerical/rk4-trajectory.js +37 -0
  699. package/dist/numerical/rk4-trajectory.js.map +1 -0
  700. package/dist/numerical/schwarzschild.d.ts +14 -0
  701. package/dist/numerical/schwarzschild.d.ts.map +1 -0
  702. package/dist/numerical/schwarzschild.js +17 -0
  703. package/dist/numerical/schwarzschild.js.map +1 -0
  704. package/dist/numerical/spacetime-metrics.d.ts +12 -0
  705. package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
  706. package/dist/numerical/spacetime-metrics.js +72 -56
  707. package/dist/numerical/spacetime-metrics.js.map +1 -1
  708. package/dist/numerical/statistics.d.ts +24 -0
  709. package/dist/numerical/statistics.d.ts.map +1 -0
  710. package/dist/numerical/statistics.js +52 -0
  711. package/dist/numerical/statistics.js.map +1 -0
  712. package/dist/numerical/tensor-engine.d.ts +21 -0
  713. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  714. package/dist/numerical/tensor-engine.js +12 -0
  715. package/dist/numerical/tensor-engine.js.map +1 -1
  716. package/dist/relations/regime.d.ts +10 -0
  717. package/dist/relations/regime.d.ts.map +1 -1
  718. package/dist/relations/regime.js +18 -1
  719. package/dist/relations/regime.js.map +1 -1
  720. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"metric.js","sourceRoot":"","sources":["../../../src/cli/commands/metric.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `upt metric` — Christoffel symbols and curvature scalars for a named metric.\n *\n * `--geodesic` integrates a short Schwarzschild circular orbit, or a Kerr\n * geodesic. θ = π/2 is equatorial and circular. Any other θ is an inclined\n * spherical orbit with that polar turning point.\n *\n * @module cli/commands/metric\n */\nimport type { FlagSpec } from '../args.js';\nimport { registerCommand, type Command, type CommandCtx } from '../command.js';\nimport { commandHelp, JSON_FLAG } from '../flag-help.js';\nimport { emitJson } from '../output.js';\nimport { CliError, UsageError } from '../errors.js';\nimport { splitAssignments } from '../bindings.js';\nimport type { MetricId } from '../../cli-api.js';\n\nconst FLAGS: FlagSpec[] = [\n JSON_FLAG,\n {\n name: '--geodesic',\n valueStyle: 'none',\n description: 'Integrate a short Schwarzschild circular orbit, or a Kerr geodesic at the given θ.',\n },\n];\n\nconst NAMES = ['minkowski', 'schwarzschild', 'flrw', 'kerr'] as const;\n\nconst HELP = `upt metric <minkowski|schwarzschild|flrw|kerr> [key=value ...] [--geodesic] [--json]\n Christoffel symbols, the Ricci tensor, the Ricci scalar and the\n Kretschmann scalar of one exact metric. Alias: upt curvature.\n Signature of the line element is (-,+,+,+), the same mostly-plus\n signature as the canonical Einstein-equation metric node.\n Schwarzschild Kretschmann is checked against 48 G² M² / (c⁴ r⁶).\n FLRW prints the Friedmann equation including the curvature term\n −k c²/a² and Λ. Kerr Kretschmann uses the Boyer–Lindquist closed form.\n --geodesic integrates a short Schwarzschild circular orbit, or a Kerr\n geodesic (equatorial and circular at θ = π/2; inclined, with that\n polar turning point, at any other θ). Kerr's a is a length in metres;\n the report prints a/M = a/(GM/c²). A Ricci scalar that has a closed\n form is that form; a vacuum finite-difference residual is not listed\n as Ricci. A parameter is a number, a unit (M=1Msun, r=1km) or a\n constant expression (theta=pi/2). A bare number is already in the\n parameter's SI unit; a dimensioned quantity must match it.\n \\`upt help metric\\` describes every flag.\n e.g. upt metric schwarzschild M=1Msun r=1e8 theta=pi/2\n upt metric flrw k=1 t=2\n upt curvature kerr a=1000 r=1e8 theta=1.2`;\n\nfunction isMetric(s: string | undefined): s is MetricId {\n return (NAMES as readonly string[]).includes(s ?? '');\n}\n\n/**\n * The metric library refuses a bad value (a non-positive mass, a point inside\n * the horizon, an unknown parameter, a start the integrator cannot take, a\n * parameter in the wrong unit) with `MetricMassError`, a `UnitError`, or a\n * plain `Error`. Each is a bad value, exit 1. Any other class (a TypeError, a\n * RangeError) is a defect and is not converted.\n */\nfunction metricValueError(api: CommandCtx['api'], e: unknown): unknown {\n if (e instanceof api.MetricMassError || e instanceof api.UnitError) return new CliError(`upt metric: ${e.message}`);\n if (e instanceof Error && e.constructor === Error) return new CliError(`upt metric: ${e.message}`);\n return e;\n}\n\nasync function run(ctx: CommandCtx): Promise<number> {\n const { args, api, out } = ctx;\n const name = args.positionals[0];\n if (!isMetric(name)) {\n throw new UsageError(\n `upt metric needs one of ${NAMES.join(', ')}. See \\`upt help metric\\`.`,\n );\n }\n const pairs = args.positionals.slice(1);\n // A token with no `=` is usage (exit 2); a parameter given twice is refused (exit 1).\n splitAssignments('metric', pairs, 'key=value');\n let report;\n try {\n report = api.curvatureReport(name, pairs);\n } catch (e) {\n throw metricValueError(api, e);\n }\n let geodesic:\n | {\n readonly kind: 'circular' | 'inclined';\n readonly r0: number;\n readonly rEnd: number;\n readonly theta0?: number;\n readonly thetaEnd?: number;\n readonly phiAdvance: number;\n readonly steps: number;\n readonly E0?: number;\n readonly EEnd?: number;\n readonly L0?: number;\n readonly LEnd?: number;\n readonly Q0?: number;\n readonly QEnd?: number;\n readonly norm0?: number;\n readonly normEnd?: number;\n readonly note?: string;\n }\n | undefined;\n if (args.flags.has('geodesic')) {\n try {\n if (name === 'schwarzschild') {\n const M = report.parameters.M;\n const r = report.parameters.r;\n const orbit = api.schwarzschildCircularOrbit({\n ...(M === undefined ? {} : { M }),\n ...(r === undefined ? {} : { r }),\n });\n geodesic = { kind: 'circular', ...orbit };\n } else if (name === 'kerr') {\n const Mgeom = report.parameters.M_geom_m;\n const a = report.parameters.a ?? 0;\n const r = report.parameters.r;\n const theta = report.parameters.theta ?? Math.PI / 2;\n if (Mgeom === undefined || !(Mgeom > 0)) throw new CliError('Kerr geodesic needs a positive mass');\n const rOverM = (r ?? 10 * Mgeom) / Mgeom;\n const aOverM = a / Mgeom;\n if (!(Math.abs(aOverM) <= 1)) throw new CliError('Kerr geodesic wants |a| ≤ GM/c²');\n const equatorial = Math.abs(theta - Math.PI / 2) < 1e-6;\n if (a === 0) {\n // At a = 0 the Kerr metric is Schwarzschild. The Boyer–Lindquist integrator refuses the\n // circular start there (\"radial potential is negative at the start\"): the two terms of\n // its radial potential cancel to below its tolerance at a = 0, and only at a = 0. The\n // equatorial circular orbit is the Schwarzschild one and is integrated as that, so the\n // default parameters (a = 0) run. An inclined start has no Schwarzschild routine here.\n if (!equatorial) {\n throw new CliError(\n 'upt metric: at a = 0 an inclined Kerr orbit is a tilted Schwarzschild circular orbit, and this integrator needs a ≠ 0 for an inclined start; give a, or theta=pi/2',\n );\n }\n const M = report.parameters.M;\n geodesic = {\n kind: 'circular' as const,\n note: 'a = 0: the Kerr metric is Schwarzschild; the equatorial circular orbit is integrated by the Schwarzschild routine',\n ...api.schwarzschildCircularOrbit({ ...(M === undefined ? {} : { M }), ...(r === undefined ? {} : { r }) }),\n };\n } else {\n const shared = { M: Mgeom, aOverM, rOverM, fraction: 0.005, steps: 40 };\n geodesic =\n equatorial\n ? { kind: 'circular' as const, ...api.kerrEquatorialCircular(shared) }\n : {\n kind: 'inclined' as const,\n ...api.kerrGeodesic({\n ...shared,\n theta,\n ...api.kerrTurningPointOrbit({ M: Mgeom, aOverM, rOverM, theta }),\n mu2: 1,\n }),\n };\n }\n } else {\n throw new UsageError('upt metric: --geodesic is for schwarzschild or kerr.');\n }\n } catch (e) {\n if (e instanceof UsageError || e instanceof CliError) throw e;\n throw metricValueError(api, e);\n }\n }\n if (args.flags.has('json')) {\n emitJson({ command: 'metric', result: { ...report, ...(geodesic === undefined ? {} : { geodesic }) } }, ctx.write);\n return 0;\n }\n out(`\\n${report.metric} signature ${report.signature}`);\n out(` ${report.signatureNote}`);\n out(` coordinates ${report.coordinates}`);\n out(' parameters: ' + Object.entries(report.parameters).map(([k, v]) => `${k}=${v}`).join(' '));\n out(' point: ' + Object.entries(report.point).map(([k, v]) => `${k}=${v}`).join(' '));\n for (const note of report.notes) out(` ${note}`);\n out(' Christoffel (nonzero):');\n if (report.christoffel.length === 0) out(' (none)');\n for (const c of report.christoffel) out(` ${c.index} = ${c.value}`);\n out(' Ricci (nonzero):');\n if (report.ricci.length === 0) out(' (none)');\n for (const c of report.ricci) out(` ${c.index} = ${c.value}`);\n out(` Ricci scalar R = ${report.ricciScalar}`);\n out(` Kretschmann K = ${report.kretschmann}`);\n out(' closed form: ' + Object.entries(report.closedForm).map(([k, v]) => `${k}=${v}`).join(' '));\n if (geodesic) {\n const cons =\n geodesic.E0 === undefined\n ? ''\n : ` E ${geodesic.E0}→${geodesic.EEnd} L ${geodesic.L0}→${geodesic.LEnd} Q ${geodesic.Q0}→${geodesic.QEnd} norm ${geodesic.norm0}→${geodesic.normEnd}`;\n const polar =\n geodesic.theta0 === undefined ? '' : ` θ ${geodesic.theta0}→${geodesic.thetaEnd}`;\n const label = geodesic.kind === 'inclined' ? 'inclined orbit' : 'circular orbit';\n out(\n ` geodesic: ${label} r0=${geodesic.r0} rEnd=${geodesic.rEnd}${polar} Δφ=${geodesic.phiAdvance} over ${geodesic.steps} steps${cons}`,\n );\n if (geodesic.note !== undefined) out(` ${geodesic.note}`);\n }\n return 0;\n}\n\nexport const command: Command = {\n name: 'metric',\n aliases: ['curvature'],\n flags: FLAGS,\n help: commandHelp(HELP, FLAGS),\n summary: 'Print Christoffel symbols and curvature scalars for one exact metric.',\n example: 'upt metric schwarzschild M=1Msun r=1e8 theta=pi/2',\n group: 'evaluate',\n run,\n};\n\nregisterCommand(command);\n"]}
1
+ {"version":3,"file":"metric.js","sourceRoot":"","sources":["../../../src/cli/commands/metric.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `upt metric` — Christoffel symbols and curvature scalars for a named metric.\n *\n * `--geodesic` integrates a short Schwarzschild circular orbit, or a Kerr\n * geodesic. θ = π/2 is equatorial and circular. Any other θ is an inclined\n * spherical orbit with that polar turning point.\n *\n * @module cli/commands/metric\n */\nimport type { FlagSpec } from '../args.js';\nimport { registerCommand, type Command, type CommandCtx } from '../command.js';\nimport { commandHelp, JSON_FLAG } from '../flag-help.js';\nimport { emitJson } from '../output.js';\nimport { CliError, UsageError } from '../errors.js';\nimport { splitAssignments } from '../bindings.js';\nimport type { MetricId } from '../../cli-api.js';\n\nconst FLAGS: FlagSpec[] = [\n JSON_FLAG,\n {\n name: '--geodesic',\n valueStyle: 'none',\n description: 'Integrate a short Schwarzschild circular orbit, or a Kerr geodesic at the given θ.',\n },\n];\n\nconst NAMES = ['minkowski', 'schwarzschild', 'flrw', 'kerr'] as const;\n\nconst HELP = `upt metric <minkowski|schwarzschild|flrw|kerr> [key=value ...] [--geodesic] [--json]\n Christoffel symbols, the Ricci tensor, the Ricci scalar and the\n Kretschmann scalar of one exact metric. Alias: upt curvature.\n Signature of the line element is (-,+,+,+), the same mostly-plus\n signature as the canonical Einstein-equation metric node.\n Schwarzschild Kretschmann is checked against 48 G² M² / (c⁴ r⁶).\n FLRW prints the Friedmann equation including the curvature term\n −k c²/a² and Λ. Kerr Kretschmann uses the Boyer–Lindquist closed form.\n --geodesic integrates a short Schwarzschild circular orbit, or a Kerr\n geodesic (equatorial and circular at θ = π/2; inclined, with that\n polar turning point, at any other θ). Kerr's a is a length in metres;\n the report prints a/M = a/(GM/c²). A Ricci scalar that has a closed\n form is that form; a vacuum finite-difference residual is not listed\n as Ricci. A parameter is a number, a unit (M=1Msun, r=1km) or a\n constant expression (theta=pi/2). A bare number is already in the\n parameter's SI unit; a dimensioned quantity must match it.\n \\`upt help metric\\` describes every flag.\n e.g. upt metric schwarzschild M=1Msun r=1e8 theta=pi/2\n upt metric flrw k=1 t=2\n upt curvature kerr a=1000 r=1e8 theta=1.2`;\n\nfunction isMetric(s: string | undefined): s is MetricId {\n return (NAMES as readonly string[]).includes(s ?? '');\n}\n\n/**\n * The metric library refuses a bad value (a non-positive mass, a point inside\n * the horizon, an unknown or repeated parameter, a start the integrator cannot\n * take, a parameter in the wrong unit) with `MetricMassError`,\n * `MetricValueError` or a `UnitError`. Each is a bad value, exit 1. Any other\n * class (a plain `Error`, a TypeError, a RangeError) is a defect and is not\n * converted.\n */\nfunction metricValueError(api: CommandCtx['api'], e: unknown): unknown {\n if (e instanceof api.MetricMassError || e instanceof api.MetricValueError || e instanceof api.UnitError) {\n return new CliError(`upt metric: ${e.message}`);\n }\n return e;\n}\n\nasync function run(ctx: CommandCtx): Promise<number> {\n const { args, api, out } = ctx;\n const name = args.positionals[0];\n if (!isMetric(name)) {\n throw new UsageError(\n `upt metric needs one of ${NAMES.join(', ')}. See \\`upt help metric\\`.`,\n );\n }\n const pairs = args.positionals.slice(1);\n // A token with no `=` is usage (exit 2); a parameter given twice is refused (exit 1).\n splitAssignments('metric', pairs, 'key=value');\n let report;\n try {\n report = api.curvatureReport(name, pairs);\n } catch (e) {\n throw metricValueError(api, e);\n }\n let geodesic:\n | {\n readonly kind: 'circular' | 'inclined';\n readonly r0: number;\n readonly rEnd: number;\n readonly theta0?: number;\n readonly thetaEnd?: number;\n readonly phiAdvance: number;\n readonly steps: number;\n readonly E0?: number;\n readonly EEnd?: number;\n readonly L0?: number;\n readonly LEnd?: number;\n readonly Q0?: number;\n readonly QEnd?: number;\n readonly norm0?: number;\n readonly normEnd?: number;\n readonly note?: string;\n }\n | undefined;\n if (args.flags.has('geodesic')) {\n try {\n if (name === 'schwarzschild') {\n const M = report.parameters.M;\n const r = report.parameters.r;\n const orbit = api.schwarzschildCircularOrbit({\n ...(M === undefined ? {} : { M }),\n ...(r === undefined ? {} : { r }),\n });\n geodesic = { kind: 'circular', ...orbit };\n } else if (name === 'kerr') {\n const Mgeom = report.parameters.M_geom_m;\n const a = report.parameters.a ?? 0;\n const r = report.parameters.r;\n const theta = report.parameters.theta ?? Math.PI / 2;\n // Reachable: `curvatureReport` refuses M ≤ 0, but G=0 (or a c that overflows) makes\n // M_geom = G M / c² zero with M > 0, and a supplied r passes its own check.\n if (Mgeom === undefined || !(Mgeom > 0)) throw new CliError('upt metric: Kerr geodesic needs a positive mass');\n const rOverM = (r ?? 10 * Mgeom) / Mgeom;\n const aOverM = a / Mgeom;\n if (!(Math.abs(aOverM) <= 1)) throw new CliError('upt metric: Kerr geodesic wants |a| ≤ GM/c²');\n const equatorial = Math.abs(theta - Math.PI / 2) < 1e-6;\n if (a === 0) {\n // At a = 0 the Kerr metric is Schwarzschild. The Boyer–Lindquist integrator refuses the\n // circular start there (\"radial potential is negative at the start\"): the two terms of\n // its radial potential cancel to below its tolerance at a = 0, and only at a = 0. The\n // equatorial circular orbit is the Schwarzschild one and is integrated as that, so the\n // default parameters (a = 0) run. An inclined start has no Schwarzschild routine here.\n if (!equatorial) {\n throw new CliError(\n 'upt metric: at a = 0 an inclined Kerr orbit is a tilted Schwarzschild circular orbit, and this integrator needs a ≠ 0 for an inclined start; give a, or theta=pi/2',\n );\n }\n const M = report.parameters.M;\n geodesic = {\n kind: 'circular' as const,\n note: 'a = 0: the Kerr metric is Schwarzschild; the equatorial circular orbit is integrated by the Schwarzschild routine',\n ...api.schwarzschildCircularOrbit({ ...(M === undefined ? {} : { M }), ...(r === undefined ? {} : { r }) }),\n };\n } else {\n const shared = { M: Mgeom, aOverM, rOverM, fraction: 0.005, steps: 40 };\n geodesic =\n equatorial\n ? { kind: 'circular' as const, ...api.kerrEquatorialCircular(shared) }\n : {\n kind: 'inclined' as const,\n ...api.kerrGeodesic({\n ...shared,\n theta,\n ...api.kerrTurningPointOrbit({ M: Mgeom, aOverM, rOverM, theta }),\n mu2: 1,\n }),\n };\n }\n } else {\n throw new UsageError('upt metric: --geodesic is for schwarzschild or kerr.');\n }\n } catch (e) {\n if (e instanceof UsageError || e instanceof CliError) throw e;\n throw metricValueError(api, e);\n }\n }\n if (args.flags.has('json')) {\n emitJson({ command: 'metric', result: { ...report, ...(geodesic === undefined ? {} : { geodesic }) } }, ctx.write);\n return 0;\n }\n out(`\\n${report.metric} signature ${report.signature}`);\n out(` ${report.signatureNote}`);\n out(` coordinates ${report.coordinates}`);\n out(' parameters: ' + Object.entries(report.parameters).map(([k, v]) => `${k}=${v}`).join(' '));\n out(' point: ' + Object.entries(report.point).map(([k, v]) => `${k}=${v}`).join(' '));\n for (const note of report.notes) out(` ${note}`);\n out(' Christoffel (nonzero):');\n if (report.christoffel.length === 0) out(' (none)');\n for (const c of report.christoffel) out(` ${c.index} = ${c.value}`);\n out(' Ricci (nonzero):');\n if (report.ricci.length === 0) out(' (none)');\n for (const c of report.ricci) out(` ${c.index} = ${c.value}`);\n out(` Ricci scalar R = ${report.ricciScalar}`);\n out(` Kretschmann K = ${report.kretschmann}`);\n out(' closed form: ' + Object.entries(report.closedForm).map(([k, v]) => `${k}=${v}`).join(' '));\n if (geodesic) {\n const cons =\n geodesic.E0 === undefined\n ? ''\n : ` E ${geodesic.E0}→${geodesic.EEnd} L ${geodesic.L0}→${geodesic.LEnd} Q ${geodesic.Q0}→${geodesic.QEnd} norm ${geodesic.norm0}→${geodesic.normEnd}`;\n const polar =\n geodesic.theta0 === undefined ? '' : ` θ ${geodesic.theta0}→${geodesic.thetaEnd}`;\n const label = geodesic.kind === 'inclined' ? 'inclined orbit' : 'circular orbit';\n out(\n ` geodesic: ${label} r0=${geodesic.r0} rEnd=${geodesic.rEnd}${polar} Δφ=${geodesic.phiAdvance} over ${geodesic.steps} steps${cons}`,\n );\n if (geodesic.note !== undefined) out(` ${geodesic.note}`);\n }\n return 0;\n}\n\nexport const command: Command = {\n name: 'metric',\n aliases: ['curvature'],\n positionals: { max: Infinity },\n flags: FLAGS,\n help: commandHelp(HELP, FLAGS),\n summary: 'Print Christoffel symbols and curvature scalars for one exact metric.',\n example: 'upt metric schwarzschild M=1Msun r=1e8 theta=pi/2',\n group: 'evaluate',\n run,\n};\n\nregisterCommand(command);\n"]}
@@ -21,6 +21,16 @@ type AtlasBridge = import('../../cli-api.js').AtlasBridge;
21
21
  type Bridges = readonly AtlasBridge[];
22
22
  type Translation = import('../../cli-api.js').ObservableTranslation;
23
23
  type Carriage = import('../../cli-api.js').ObservableCarriage;
24
+ /**
25
+ * A translation declared on a bridge that states no bound. A translation restates the bound's
26
+ * error in another observable, so it presupposes the bound; a bridge without one declaring a
27
+ * translation is a defect of the atlas record, not a user error, and this is not a `CliError`.
28
+ */
29
+ export declare class TranslationWithoutBoundError extends Error {
30
+ constructor(bridgeId: string, observable: string);
31
+ }
32
+ /** The first bridge's bound, which the translation `tr` presupposes. @internal */
33
+ export declare function translatedBound(bridges: Bridges, tr: Translation): NonNullable<AtlasBridge['bound']>;
24
34
  /**
25
35
  * Whether the path is adequate for a requested tolerance at one point: every
26
36
  * regime holds, every horizon holds at the given t, and the closed-form point
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/path.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/path.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { registerCommand } from '../command.js';
2
2
  import { commandHelp, JSON_FLAG } from '../flag-help.js';
3
3
  import { CliError, EXIT_CHECK_FAILED, UsageError } from '../errors.js';
4
4
  import { emitJson } from '../output.js';
5
+ import { integerFlag } from '../numeric-flag.js';
5
6
  import { parseAt, resolveAtPoint, showInequality } from './regime.js';
6
7
  import { explainsRefusal, missingForComposite, routeClaim, selectRoute, transportReport } from './_atlas-route.js';
7
8
  const FLAGS = [
@@ -136,7 +137,8 @@ export function parseSweep(api, spec) {
136
137
  };
137
138
  const lo = endpoint(loS);
138
139
  const hi = endpoint(hiS);
139
- const n = Number(nS);
140
+ // The grammar first (`0x5` is usage, exit 2); the 2..MAX_SAMPLES range after (exit 1).
141
+ const n = integerFlag('path', '--sweep sample count', nS);
140
142
  const spacing = sp === 'log' ? 'log' : 'linear';
141
143
  if (!Number.isFinite(lo) || !Number.isFinite(hi) || !(lo < hi)) {
142
144
  throw new CliError(`upt path: --sweep '${spec}' needs finite lo < hi`);
@@ -149,6 +151,25 @@ export function parseSweep(api, spec) {
149
151
  const values = Array.from({ length: n }, (_, i) => spacing === 'log' ? lo * (hi / lo) ** (i / (n - 1)) : lo + ((hi - lo) * i) / (n - 1));
150
152
  return { name, values, spacing };
151
153
  }
154
+ /**
155
+ * A translation declared on a bridge that states no bound. A translation restates the bound's
156
+ * error in another observable, so it presupposes the bound; a bridge without one declaring a
157
+ * translation is a defect of the atlas record, not a user error, and this is not a `CliError`.
158
+ */
159
+ export class TranslationWithoutBoundError extends Error {
160
+ constructor(bridgeId, observable) {
161
+ super(`upt path: '${bridgeId}' declares a translation to ${observable} but states no bound; ` +
162
+ 'a translation presupposes the bound it translates (a defect of the record, not a usage error)');
163
+ this.name = 'TranslationWithoutBoundError';
164
+ }
165
+ }
166
+ /** The first bridge's bound, which the translation `tr` presupposes. @internal */
167
+ export function translatedBound(bridges, tr) {
168
+ const first = bridges[0];
169
+ if (first.bound === undefined)
170
+ throw new TranslationWithoutBoundError(first.id, tr.observable);
171
+ return first.bound;
172
+ }
152
173
  function modelFamilyOf(api, id) {
153
174
  if (id === null)
154
175
  return undefined;
@@ -448,7 +469,7 @@ export function judgeAtPoint(api, request, bridges, e, at, withControl) {
448
469
  }
449
470
  function thresholdOrigin(request, tr, bridges) {
450
471
  return (`t* is derived from the requested tolerance ${request.value} ${tr.unit} through the translation; ` +
451
- `${bridges[0].id}'s own horizon (${bridges[0].bound.horizon}) is the record's fixed threshold, judged separately`);
472
+ `${bridges[0].id}'s own horizon (${translatedBound(bridges, tr).horizon}) is the record's fixed threshold, judged separately`);
452
473
  }
453
474
  function observableReport(request, j, bridges, evidence) {
454
475
  const tr = j.translation;
@@ -479,7 +500,7 @@ function observableReport(request, j, bridges, evidence) {
479
500
  domainHorizon: j.domainHorizon,
480
501
  horizonConvention: tr.boundary,
481
502
  thresholdOrigin: thresholdOrigin(request, tr, bridges),
482
- bridgeHorizon: { horizon: bridges[0].bound.horizon, holds: j.bridgeHorizonHolds },
503
+ bridgeHorizon: { horizon: translatedBound(bridges, tr).horizon, holds: j.bridgeHorizonHolds },
483
504
  evidence,
484
505
  pointWitness: j.pointWitness,
485
506
  }),
@@ -1161,6 +1182,7 @@ async function run(ctx) {
1161
1182
  export const command = {
1162
1183
  name: 'path',
1163
1184
  aliases: [],
1185
+ positionals: { max: Infinity },
1164
1186
  flags: FLAGS,
1165
1187
  help: commandHelp(HELP, FLAGS),
1166
1188
  summary: 'Show the bridge chain between two models and whether a bound is claimed there.',