universal-physics-tensor 0.47.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (591) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +396 -383
  3. package/bin/upt.mjs +28 -22
  4. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +108 -0
  5. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -0
  6. package/dist/atlas/benchmark/hybrid-retrieval.js +241 -0
  7. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -0
  8. package/dist/atlas/catalog-formal-ref.d.ts +24 -0
  9. package/dist/atlas/catalog-formal-ref.d.ts.map +1 -0
  10. package/dist/atlas/catalog-formal-ref.js +36 -0
  11. package/dist/atlas/catalog-formal-ref.js.map +1 -0
  12. package/dist/atlas/composition-table.d.ts +11 -46
  13. package/dist/atlas/composition-table.d.ts.map +1 -1
  14. package/dist/atlas/composition-table.js +7 -124
  15. package/dist/atlas/composition-table.js.map +1 -1
  16. package/dist/atlas/conventions.d.ts +4 -58
  17. package/dist/atlas/conventions.d.ts.map +1 -1
  18. package/dist/atlas/conventions.js +3 -88
  19. package/dist/atlas/conventions.js.map +1 -1
  20. package/dist/atlas/derive-evidence.d.ts +50 -3
  21. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  22. package/dist/atlas/derive-evidence.js +73 -4
  23. package/dist/atlas/derive-evidence.js.map +1 -1
  24. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  25. package/dist/atlas/diffusion/bridges-closure.js +5 -1
  26. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  27. package/dist/atlas/index.d.ts +9 -7
  28. package/dist/atlas/index.d.ts.map +1 -1
  29. package/dist/atlas/index.js +6 -5
  30. package/dist/atlas/index.js.map +1 -1
  31. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  32. package/dist/atlas/oscillators/bridges-exact.js +6 -0
  33. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  34. package/dist/atlas/oscillators/bridges-limits.d.ts +2 -0
  35. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  36. package/dist/atlas/oscillators/bridges-limits.js +20 -19
  37. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  38. package/dist/atlas/oscillators/limit-witnesses.d.ts +93 -0
  39. package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -0
  40. package/dist/atlas/oscillators/limit-witnesses.js +152 -0
  41. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -0
  42. package/dist/atlas/oscillators/models.d.ts +2 -1
  43. package/dist/atlas/oscillators/models.d.ts.map +1 -1
  44. package/dist/atlas/oscillators/models.js +4 -3
  45. package/dist/atlas/oscillators/models.js.map +1 -1
  46. package/dist/atlas/oscillators/norm-transport-witness.d.ts +37 -0
  47. package/dist/atlas/oscillators/norm-transport-witness.d.ts.map +1 -0
  48. package/dist/atlas/oscillators/norm-transport-witness.js +58 -0
  49. package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -0
  50. package/dist/atlas/oscillators/norm-transport.d.ts +44 -0
  51. package/dist/atlas/oscillators/norm-transport.d.ts.map +1 -0
  52. package/dist/atlas/oscillators/norm-transport.js +66 -0
  53. package/dist/atlas/oscillators/norm-transport.js.map +1 -0
  54. package/dist/atlas/oscillators/norms.d.ts +11 -0
  55. package/dist/atlas/oscillators/norms.d.ts.map +1 -0
  56. package/dist/atlas/oscillators/norms.js +11 -0
  57. package/dist/atlas/oscillators/norms.js.map +1 -0
  58. package/dist/atlas/oscillators/pendulum-motion.d.ts +38 -0
  59. package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -0
  60. package/dist/atlas/oscillators/pendulum-motion.js +122 -0
  61. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -0
  62. package/dist/atlas/oscillators/phase-carriage.d.ts +38 -0
  63. package/dist/atlas/oscillators/phase-carriage.d.ts.map +1 -0
  64. package/dist/atlas/oscillators/phase-carriage.js +96 -0
  65. package/dist/atlas/oscillators/phase-carriage.js.map +1 -0
  66. package/dist/atlas/oscillators/phase-translation.d.ts +46 -0
  67. package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -0
  68. package/dist/atlas/oscillators/phase-translation.js +178 -0
  69. package/dist/atlas/oscillators/phase-translation.js.map +1 -0
  70. package/dist/atlas/oscillators/position-translation.d.ts +59 -0
  71. package/dist/atlas/oscillators/position-translation.d.ts.map +1 -0
  72. package/dist/atlas/oscillators/position-translation.js +254 -0
  73. package/dist/atlas/oscillators/position-translation.js.map +1 -0
  74. package/dist/atlas/path-bound.d.ts +126 -9
  75. package/dist/atlas/path-bound.d.ts.map +1 -1
  76. package/dist/atlas/path-bound.js +372 -23
  77. package/dist/atlas/path-bound.js.map +1 -1
  78. package/dist/atlas/physjs-ref.d.ts +112 -0
  79. package/dist/atlas/physjs-ref.d.ts.map +1 -0
  80. package/dist/atlas/physjs-ref.js +842 -0
  81. package/dist/atlas/physjs-ref.js.map +1 -0
  82. package/dist/atlas/regime.d.ts +12 -136
  83. package/dist/atlas/regime.d.ts.map +1 -1
  84. package/dist/atlas/regime.js +8 -254
  85. package/dist/atlas/regime.js.map +1 -1
  86. package/dist/atlas/serialize.d.ts.map +1 -1
  87. package/dist/atlas/serialize.js +25 -0
  88. package/dist/atlas/serialize.js.map +1 -1
  89. package/dist/atlas/translation-registry.d.ts +22 -0
  90. package/dist/atlas/translation-registry.d.ts.map +1 -0
  91. package/dist/atlas/translation-registry.js +31 -0
  92. package/dist/atlas/translation-registry.js.map +1 -0
  93. package/dist/atlas/translation.d.ts +116 -0
  94. package/dist/atlas/translation.d.ts.map +1 -0
  95. package/dist/atlas/translation.js +34 -0
  96. package/dist/atlas/translation.js.map +1 -0
  97. package/dist/atlas/types.d.ts +74 -240
  98. package/dist/atlas/types.d.ts.map +1 -1
  99. package/dist/atlas/types.js +5 -37
  100. package/dist/atlas/types.js.map +1 -1
  101. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  102. package/dist/atlas/waves/bridges-closure.js +4 -0
  103. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  104. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  105. package/dist/atlas/waves/bridges.js +3 -0
  106. package/dist/atlas/waves/bridges.js.map +1 -1
  107. package/dist/atlas/waves/models.js +1 -1
  108. package/dist/atlas/waves/models.js.map +1 -1
  109. package/dist/atlas/witness-dominance.d.ts +50 -0
  110. package/dist/atlas/witness-dominance.d.ts.map +1 -0
  111. package/dist/atlas/witness-dominance.js +86 -0
  112. package/dist/atlas/witness-dominance.js.map +1 -0
  113. package/dist/atlas/witness-specs.d.ts +30 -0
  114. package/dist/atlas/witness-specs.d.ts.map +1 -1
  115. package/dist/atlas/witness-specs.js +107 -0
  116. package/dist/atlas/witness-specs.js.map +1 -1
  117. package/dist/bridges/be53-yang-mills-confrontation.d.ts +81 -0
  118. package/dist/bridges/be53-yang-mills-confrontation.d.ts.map +1 -0
  119. package/dist/bridges/be53-yang-mills-confrontation.js +110 -0
  120. package/dist/bridges/be53-yang-mills-confrontation.js.map +1 -0
  121. package/dist/bridges/confrontations.d.ts +1 -1
  122. package/dist/bridges/confrontations.d.ts.map +1 -1
  123. package/dist/bridges/confrontations.js +291 -3
  124. package/dist/bridges/confrontations.js.map +1 -1
  125. package/dist/bridges/equations/be-13-einstein-trace.d.ts +2 -3
  126. package/dist/bridges/equations/be-13-einstein-trace.d.ts.map +1 -1
  127. package/dist/bridges/equations/be-13-einstein-trace.js +2 -3
  128. package/dist/bridges/equations/be-13-einstein-trace.js.map +1 -1
  129. package/dist/bridges/equations/be-38-mond.d.ts +7 -5
  130. package/dist/bridges/equations/be-38-mond.d.ts.map +1 -1
  131. package/dist/bridges/equations/be-38-mond.js +7 -5
  132. package/dist/bridges/equations/be-38-mond.js.map +1 -1
  133. package/dist/bridges/equations/be-53-yang-mills-beta.d.ts +21 -0
  134. package/dist/bridges/equations/be-53-yang-mills-beta.d.ts.map +1 -1
  135. package/dist/bridges/equations/be-53-yang-mills-beta.js +12 -0
  136. package/dist/bridges/equations/be-53-yang-mills-beta.js.map +1 -1
  137. package/dist/bridges/evaluator-inputs.d.ts +21 -0
  138. package/dist/bridges/evaluator-inputs.d.ts.map +1 -0
  139. package/dist/bridges/evaluator-inputs.js +75 -0
  140. package/dist/bridges/evaluator-inputs.js.map +1 -0
  141. package/dist/bridges/evaluators.d.ts +38 -0
  142. package/dist/bridges/evaluators.d.ts.map +1 -1
  143. package/dist/bridges/evaluators.js +41 -15
  144. package/dist/bridges/evaluators.js.map +1 -1
  145. package/dist/bridges/gravitational-lensing.d.ts +1 -1
  146. package/dist/bridges/gravitational-lensing.js +1 -1
  147. package/dist/bridges/index.d.ts +1 -1
  148. package/dist/bridges/index.d.ts.map +1 -1
  149. package/dist/bridges/index.js +13 -13
  150. package/dist/bridges/index.js.map +1 -1
  151. package/dist/bridges/observations/types.d.ts +110 -2
  152. package/dist/bridges/observations/types.d.ts.map +1 -1
  153. package/dist/bridges/observations/types.js +29 -0
  154. package/dist/bridges/observations/types.js.map +1 -1
  155. package/dist/bridges/perihelion-precession.d.ts +1 -1
  156. package/dist/bridges/perihelion-precession.js +1 -1
  157. package/dist/canonical/canonical-equation.d.ts +1 -1
  158. package/dist/canonical/canonical-equation.d.ts.map +1 -1
  159. package/dist/canonical/entries/atomic.d.ts.map +1 -1
  160. package/dist/canonical/entries/atomic.js +32 -10
  161. package/dist/canonical/entries/atomic.js.map +1 -1
  162. package/dist/canonical/entries/dimensional-classics.js +2 -2
  163. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  164. package/dist/canonical/entries/mechanics.d.ts.map +1 -1
  165. package/dist/canonical/entries/mechanics.js +10 -6
  166. package/dist/canonical/entries/mechanics.js.map +1 -1
  167. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  168. package/dist/canonical/entries/relativity.js +41 -8
  169. package/dist/canonical/entries/relativity.js.map +1 -1
  170. package/dist/canonical/entries/thermo-nuclear-cosmo.js +5 -5
  171. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  172. package/dist/canonical/linkage.d.ts.map +1 -1
  173. package/dist/canonical/linkage.js +14 -8
  174. package/dist/canonical/linkage.js.map +1 -1
  175. package/dist/canonical/normal-form.d.ts +17 -0
  176. package/dist/canonical/normal-form.d.ts.map +1 -1
  177. package/dist/canonical/normal-form.js +21 -4
  178. package/dist/canonical/normal-form.js.map +1 -1
  179. package/dist/cases/brownian-sphere.d.ts +68 -0
  180. package/dist/cases/brownian-sphere.d.ts.map +1 -0
  181. package/dist/cases/brownian-sphere.js +353 -0
  182. package/dist/cases/brownian-sphere.js.map +1 -0
  183. package/dist/cases/damped-resonator.d.ts +23 -0
  184. package/dist/cases/damped-resonator.d.ts.map +1 -0
  185. package/dist/cases/damped-resonator.js +224 -0
  186. package/dist/cases/damped-resonator.js.map +1 -0
  187. package/dist/cases/index.d.ts +11 -0
  188. package/dist/cases/index.d.ts.map +1 -0
  189. package/dist/cases/index.js +29 -0
  190. package/dist/cases/index.js.map +1 -0
  191. package/dist/cases/kepler-rv.d.ts +13 -0
  192. package/dist/cases/kepler-rv.d.ts.map +1 -0
  193. package/dist/cases/kepler-rv.js +168 -0
  194. package/dist/cases/kepler-rv.js.map +1 -0
  195. package/dist/cases/lumped-cooling.d.ts +46 -0
  196. package/dist/cases/lumped-cooling.d.ts.map +1 -0
  197. package/dist/cases/lumped-cooling.js +261 -0
  198. package/dist/cases/lumped-cooling.js.map +1 -0
  199. package/dist/cases/quadrature.d.ts +14 -0
  200. package/dist/cases/quadrature.d.ts.map +1 -0
  201. package/dist/cases/quadrature.js +41 -0
  202. package/dist/cases/quadrature.js.map +1 -0
  203. package/dist/cases/resistor-noise.d.ts +14 -0
  204. package/dist/cases/resistor-noise.d.ts.map +1 -0
  205. package/dist/cases/resistor-noise.js +210 -0
  206. package/dist/cases/resistor-noise.js.map +1 -0
  207. package/dist/cases/skin-depth.d.ts +21 -0
  208. package/dist/cases/skin-depth.d.ts.map +1 -0
  209. package/dist/cases/skin-depth.js +174 -0
  210. package/dist/cases/skin-depth.js.map +1 -0
  211. package/dist/cases/types.d.ts +115 -0
  212. package/dist/cases/types.d.ts.map +1 -0
  213. package/dist/cases/types.js +20 -0
  214. package/dist/cases/types.js.map +1 -0
  215. package/dist/cli/commands/_atlas-map.d.ts +409 -0
  216. package/dist/cli/commands/_atlas-map.d.ts.map +1 -0
  217. package/dist/cli/commands/_atlas-map.js +1014 -0
  218. package/dist/cli/commands/_atlas-map.js.map +1 -0
  219. package/dist/cli/commands/_atlas-route.d.ts +111 -0
  220. package/dist/cli/commands/_atlas-route.d.ts.map +1 -0
  221. package/dist/cli/commands/_atlas-route.js +140 -0
  222. package/dist/cli/commands/_atlas-route.js.map +1 -0
  223. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  224. package/dist/cli/commands/_discovery-opts.js +10 -1
  225. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  226. package/dist/cli/commands/atlas.d.ts +20 -0
  227. package/dist/cli/commands/atlas.d.ts.map +1 -1
  228. package/dist/cli/commands/atlas.js +333 -19
  229. package/dist/cli/commands/atlas.js.map +1 -1
  230. package/dist/cli/commands/audit.d.ts.map +1 -1
  231. package/dist/cli/commands/audit.js +14 -5
  232. package/dist/cli/commands/audit.js.map +1 -1
  233. package/dist/cli/commands/axes.js +4 -4
  234. package/dist/cli/commands/candidates.d.ts.map +1 -1
  235. package/dist/cli/commands/candidates.js +6 -5
  236. package/dist/cli/commands/candidates.js.map +1 -1
  237. package/dist/cli/commands/canonical.d.ts.map +1 -1
  238. package/dist/cli/commands/canonical.js +41 -12
  239. package/dist/cli/commands/canonical.js.map +1 -1
  240. package/dist/cli/commands/confront.d.ts.map +1 -1
  241. package/dist/cli/commands/confront.js +210 -28
  242. package/dist/cli/commands/confront.js.map +1 -1
  243. package/dist/cli/commands/connectors.d.ts.map +1 -1
  244. package/dist/cli/commands/connectors.js +11 -10
  245. package/dist/cli/commands/connectors.js.map +1 -1
  246. package/dist/cli/commands/coverage.js +3 -3
  247. package/dist/cli/commands/derive.d.ts.map +1 -1
  248. package/dist/cli/commands/derive.js +22 -10
  249. package/dist/cli/commands/derive.js.map +1 -1
  250. package/dist/cli/commands/discover.d.ts.map +1 -1
  251. package/dist/cli/commands/discover.js +149 -32
  252. package/dist/cli/commands/discover.js.map +1 -1
  253. package/dist/cli/commands/eval.d.ts.map +1 -1
  254. package/dist/cli/commands/eval.js +76 -17
  255. package/dist/cli/commands/eval.js.map +1 -1
  256. package/dist/cli/commands/evaluate.d.ts +30 -0
  257. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  258. package/dist/cli/commands/evaluate.js +440 -25
  259. package/dist/cli/commands/evaluate.js.map +1 -1
  260. package/dist/cli/commands/explain.d.ts.map +1 -1
  261. package/dist/cli/commands/explain.js +38 -11
  262. package/dist/cli/commands/explain.js.map +1 -1
  263. package/dist/cli/commands/frontier.d.ts +3 -0
  264. package/dist/cli/commands/frontier.d.ts.map +1 -0
  265. package/dist/cli/commands/frontier.js +28 -0
  266. package/dist/cli/commands/frontier.js.map +1 -0
  267. package/dist/cli/commands/ground.d.ts.map +1 -1
  268. package/dist/cli/commands/ground.js +37 -12
  269. package/dist/cli/commands/ground.js.map +1 -1
  270. package/dist/cli/commands/index.d.ts +5 -0
  271. package/dist/cli/commands/index.d.ts.map +1 -1
  272. package/dist/cli/commands/index.js +5 -0
  273. package/dist/cli/commands/index.js.map +1 -1
  274. package/dist/cli/commands/map.d.ts +8 -0
  275. package/dist/cli/commands/map.d.ts.map +1 -1
  276. package/dist/cli/commands/map.js +401 -64
  277. package/dist/cli/commands/map.js.map +1 -1
  278. package/dist/cli/commands/metric.d.ts +3 -0
  279. package/dist/cli/commands/metric.d.ts.map +1 -0
  280. package/dist/cli/commands/metric.js +136 -0
  281. package/dist/cli/commands/metric.js.map +1 -0
  282. package/dist/cli/commands/path.d.ts +109 -1
  283. package/dist/cli/commands/path.d.ts.map +1 -1
  284. package/dist/cli/commands/path.js +1019 -109
  285. package/dist/cli/commands/path.js.map +1 -1
  286. package/dist/cli/commands/predict.d.ts.map +1 -1
  287. package/dist/cli/commands/predict.js +6 -5
  288. package/dist/cli/commands/predict.js.map +1 -1
  289. package/dist/cli/commands/priority.d.ts.map +1 -1
  290. package/dist/cli/commands/priority.js +4 -3
  291. package/dist/cli/commands/priority.js.map +1 -1
  292. package/dist/cli/commands/probe.d.ts +7 -0
  293. package/dist/cli/commands/probe.d.ts.map +1 -1
  294. package/dist/cli/commands/probe.js +234 -52
  295. package/dist/cli/commands/probe.js.map +1 -1
  296. package/dist/cli/commands/recover.d.ts.map +1 -1
  297. package/dist/cli/commands/recover.js +17 -6
  298. package/dist/cli/commands/recover.js.map +1 -1
  299. package/dist/cli/commands/regime.d.ts +1 -1
  300. package/dist/cli/commands/regime.d.ts.map +1 -1
  301. package/dist/cli/commands/regime.js +134 -33
  302. package/dist/cli/commands/regime.js.map +1 -1
  303. package/dist/cli/commands/retrieve.d.ts +3 -0
  304. package/dist/cli/commands/retrieve.d.ts.map +1 -0
  305. package/dist/cli/commands/retrieve.js +65 -0
  306. package/dist/cli/commands/retrieve.js.map +1 -0
  307. package/dist/cli/commands/search.d.ts +3 -0
  308. package/dist/cli/commands/search.d.ts.map +1 -0
  309. package/dist/cli/commands/search.js +70 -0
  310. package/dist/cli/commands/search.js.map +1 -0
  311. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  312. package/dist/cli/commands/symbolic.js +112 -21
  313. package/dist/cli/commands/symbolic.js.map +1 -1
  314. package/dist/cli/commands/testplan.d.ts +3 -0
  315. package/dist/cli/commands/testplan.d.ts.map +1 -0
  316. package/dist/cli/commands/testplan.js +131 -0
  317. package/dist/cli/commands/testplan.js.map +1 -0
  318. package/dist/cli/conventions.d.ts +22 -0
  319. package/dist/cli/conventions.d.ts.map +1 -0
  320. package/dist/cli/conventions.js +48 -0
  321. package/dist/cli/conventions.js.map +1 -0
  322. package/dist/cli/euler-guard.d.ts +9 -0
  323. package/dist/cli/euler-guard.d.ts.map +1 -0
  324. package/dist/cli/euler-guard.js +11 -0
  325. package/dist/cli/euler-guard.js.map +1 -0
  326. package/dist/cli/eval-numbers.d.ts +26 -0
  327. package/dist/cli/eval-numbers.d.ts.map +1 -0
  328. package/dist/cli/eval-numbers.js +49 -0
  329. package/dist/cli/eval-numbers.js.map +1 -0
  330. package/dist/cli/expr-print.d.ts +25 -0
  331. package/dist/cli/expr-print.d.ts.map +1 -0
  332. package/dist/cli/expr-print.js +123 -0
  333. package/dist/cli/expr-print.js.map +1 -0
  334. package/dist/cli/graphs.d.ts +26 -0
  335. package/dist/cli/graphs.d.ts.map +1 -1
  336. package/dist/cli/graphs.js +19 -0
  337. package/dist/cli/graphs.js.map +1 -1
  338. package/dist/cli/main.d.ts +4 -10
  339. package/dist/cli/main.d.ts.map +1 -1
  340. package/dist/cli/main.js +370 -167
  341. package/dist/cli/main.js.map +1 -1
  342. package/dist/cli/map-evidence.d.ts +47 -0
  343. package/dist/cli/map-evidence.d.ts.map +1 -0
  344. package/dist/cli/map-evidence.js +53 -0
  345. package/dist/cli/map-evidence.js.map +1 -0
  346. package/dist/cli/output.d.ts +21 -1
  347. package/dist/cli/output.d.ts.map +1 -1
  348. package/dist/cli/output.js +5 -1
  349. package/dist/cli/output.js.map +1 -1
  350. package/dist/{composition → cli}/poster-source.d.ts +3 -2
  351. package/dist/cli/poster-source.d.ts.map +1 -0
  352. package/dist/{composition → cli}/poster-source.js +2 -1
  353. package/dist/cli/poster-source.js.map +1 -0
  354. package/dist/cli/record-reach.d.ts +44 -0
  355. package/dist/cli/record-reach.d.ts.map +1 -0
  356. package/dist/cli/record-reach.js +228 -0
  357. package/dist/cli/record-reach.js.map +1 -0
  358. package/dist/cli/record-tables.d.ts +38 -0
  359. package/dist/cli/record-tables.d.ts.map +1 -0
  360. package/dist/cli/record-tables.js +110 -0
  361. package/dist/cli/record-tables.js.map +1 -0
  362. package/dist/cli/record.d.ts +141 -0
  363. package/dist/cli/record.d.ts.map +1 -0
  364. package/dist/cli/record.js +612 -0
  365. package/dist/cli/record.js.map +1 -0
  366. package/dist/cli/search-index.d.ts +56 -0
  367. package/dist/cli/search-index.d.ts.map +1 -0
  368. package/dist/cli/search-index.js +190 -0
  369. package/dist/cli/search-index.js.map +1 -0
  370. package/dist/cli/statuses.d.ts +25 -0
  371. package/dist/cli/statuses.d.ts.map +1 -0
  372. package/dist/cli/statuses.js +276 -0
  373. package/dist/cli/statuses.js.map +1 -0
  374. package/dist/cli/version.d.ts +8 -0
  375. package/dist/cli/version.d.ts.map +1 -1
  376. package/dist/cli/version.js +32 -1
  377. package/dist/cli/version.js.map +1 -1
  378. package/dist/cli-api.d.ts +33 -15
  379. package/dist/cli-api.d.ts.map +1 -1
  380. package/dist/cli-api.js +31 -11
  381. package/dist/cli-api.js.map +1 -1
  382. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  383. package/dist/composition/bridge-analysis.js +2 -1
  384. package/dist/composition/bridge-analysis.js.map +1 -1
  385. package/dist/composition/canonical-compare.d.ts +36 -11
  386. package/dist/composition/canonical-compare.d.ts.map +1 -1
  387. package/dist/composition/canonical-compare.js +424 -56
  388. package/dist/composition/canonical-compare.js.map +1 -1
  389. package/dist/composition/canonical-graph.d.ts +2 -2
  390. package/dist/composition/canonical-graph.js +3 -3
  391. package/dist/composition/canonical-graph.js.map +1 -1
  392. package/dist/composition/canonical-prefactors.d.ts +24 -1
  393. package/dist/composition/canonical-prefactors.d.ts.map +1 -1
  394. package/dist/composition/canonical-prefactors.js +97 -1
  395. package/dist/composition/canonical-prefactors.js.map +1 -1
  396. package/dist/composition/compose-symbolic.js +1 -1
  397. package/dist/composition/compose-symbolic.js.map +1 -1
  398. package/dist/composition/compose.d.ts.map +1 -1
  399. package/dist/composition/compose.js +17 -9
  400. package/dist/composition/compose.js.map +1 -1
  401. package/dist/composition/composition-recovery.d.ts +47 -0
  402. package/dist/composition/composition-recovery.d.ts.map +1 -0
  403. package/dist/composition/composition-recovery.js +77 -0
  404. package/dist/composition/composition-recovery.js.map +1 -0
  405. package/dist/composition/consequence.d.ts +39 -0
  406. package/dist/composition/consequence.d.ts.map +1 -1
  407. package/dist/composition/consequence.js +37 -0
  408. package/dist/composition/consequence.js.map +1 -1
  409. package/dist/composition/discovery.d.ts +20 -0
  410. package/dist/composition/discovery.d.ts.map +1 -1
  411. package/dist/composition/discovery.js +27 -5
  412. package/dist/composition/discovery.js.map +1 -1
  413. package/dist/composition/edge.d.ts +1 -1
  414. package/dist/composition/edge.d.ts.map +1 -1
  415. package/dist/composition/edge.js.map +1 -1
  416. package/dist/composition/edges/_catalog-helpers.d.ts +4 -0
  417. package/dist/composition/edges/_catalog-helpers.d.ts.map +1 -1
  418. package/dist/composition/edges/_catalog-helpers.js +15 -0
  419. package/dist/composition/edges/_catalog-helpers.js.map +1 -1
  420. package/dist/composition/edges/calibration.d.ts.map +1 -1
  421. package/dist/composition/edges/calibration.js +57 -0
  422. package/dist/composition/edges/calibration.js.map +1 -1
  423. package/dist/composition/edges/catalog-fields.d.ts.map +1 -1
  424. package/dist/composition/edges/catalog-fields.js +2 -1
  425. package/dist/composition/edges/catalog-fields.js.map +1 -1
  426. package/dist/composition/edges/catalog-gravitation-cosmology.d.ts.map +1 -1
  427. package/dist/composition/edges/catalog-gravitation-cosmology.js +2 -1
  428. package/dist/composition/edges/catalog-gravitation-cosmology.js.map +1 -1
  429. package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
  430. package/dist/composition/edges/catalog-quantum.js +26 -0
  431. package/dist/composition/edges/catalog-quantum.js.map +1 -1
  432. package/dist/composition/edges/catalog-tranche.d.ts.map +1 -1
  433. package/dist/composition/edges/catalog-tranche.js +2 -1
  434. package/dist/composition/edges/catalog-tranche.js.map +1 -1
  435. package/dist/composition/expr-eval.d.ts.map +1 -1
  436. package/dist/composition/expr-eval.js +4 -1
  437. package/dist/composition/expr-eval.js.map +1 -1
  438. package/dist/composition/expr-simplify.js +1 -1
  439. package/dist/composition/expr-simplify.js.map +1 -1
  440. package/dist/composition/frontier-account.d.ts +78 -0
  441. package/dist/composition/frontier-account.d.ts.map +1 -0
  442. package/dist/composition/frontier-account.js +127 -0
  443. package/dist/composition/frontier-account.js.map +1 -0
  444. package/dist/composition/graph-viz.d.ts +7 -22
  445. package/dist/composition/graph-viz.d.ts.map +1 -1
  446. package/dist/composition/graph-viz.js +4 -27
  447. package/dist/composition/graph-viz.js.map +1 -1
  448. package/dist/composition/grounding.d.ts +49 -0
  449. package/dist/composition/grounding.d.ts.map +1 -1
  450. package/dist/composition/grounding.js +38 -0
  451. package/dist/composition/grounding.js.map +1 -1
  452. package/dist/composition/index.d.ts +0 -2
  453. package/dist/composition/index.d.ts.map +1 -1
  454. package/dist/composition/index.js +1 -1
  455. package/dist/composition/index.js.map +1 -1
  456. package/dist/composition/probe/expression-gaps.d.ts +27 -0
  457. package/dist/composition/probe/expression-gaps.d.ts.map +1 -0
  458. package/dist/composition/probe/expression-gaps.js +47 -0
  459. package/dist/composition/probe/expression-gaps.js.map +1 -0
  460. package/dist/composition/probe/frontier.d.ts +2 -1
  461. package/dist/composition/probe/frontier.d.ts.map +1 -1
  462. package/dist/composition/probe/frontier.js +3 -2
  463. package/dist/composition/probe/frontier.js.map +1 -1
  464. package/dist/composition/probe/index.d.ts +4 -1
  465. package/dist/composition/probe/index.d.ts.map +1 -1
  466. package/dist/composition/probe/index.js +3 -1
  467. package/dist/composition/probe/index.js.map +1 -1
  468. package/dist/composition/probe/pipeline.d.ts +2 -0
  469. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  470. package/dist/composition/probe/pipeline.js +6 -2
  471. package/dist/composition/probe/pipeline.js.map +1 -1
  472. package/dist/composition/probe/problem.d.ts +7 -0
  473. package/dist/composition/probe/problem.d.ts.map +1 -1
  474. package/dist/composition/probe/problem.js +15 -5
  475. package/dist/composition/probe/problem.js.map +1 -1
  476. package/dist/composition/probe/search-budget.d.ts.map +1 -1
  477. package/dist/composition/probe/search-budget.js +6 -2
  478. package/dist/composition/probe/search-budget.js.map +1 -1
  479. package/dist/composition/probe/study.d.ts +340 -0
  480. package/dist/composition/probe/study.d.ts.map +1 -0
  481. package/dist/composition/probe/study.js +1519 -0
  482. package/dist/composition/probe/study.js.map +1 -0
  483. package/dist/composition/proposed-bridges.js +1 -1
  484. package/dist/composition/proposed-bridges.js.map +1 -1
  485. package/dist/composition/quantities.d.ts +4 -16
  486. package/dist/composition/quantities.d.ts.map +1 -1
  487. package/dist/composition/quantities.js +4 -16
  488. package/dist/composition/quantities.js.map +1 -1
  489. package/dist/composition/retrodiction.d.ts.map +1 -1
  490. package/dist/composition/retrodiction.js +6 -2
  491. package/dist/composition/retrodiction.js.map +1 -1
  492. package/dist/composition/uncertainty.d.ts +1 -1
  493. package/dist/composition/uncertainty.d.ts.map +1 -1
  494. package/dist/composition/user-equation.d.ts +87 -14
  495. package/dist/composition/user-equation.d.ts.map +1 -1
  496. package/dist/composition/user-equation.js +266 -59
  497. package/dist/composition/user-equation.js.map +1 -1
  498. package/dist/core/constants.d.ts +9 -4
  499. package/dist/core/constants.d.ts.map +1 -1
  500. package/dist/core/constants.js +9 -4
  501. package/dist/core/constants.js.map +1 -1
  502. package/dist/core/types.d.ts +1 -1
  503. package/dist/core/types.d.ts.map +1 -1
  504. package/dist/core/types.js +2 -1
  505. package/dist/core/types.js.map +1 -1
  506. package/dist/dimensional/curvature.d.ts +7 -56
  507. package/dist/dimensional/curvature.d.ts.map +1 -1
  508. package/dist/dimensional/curvature.js +7 -76
  509. package/dist/dimensional/curvature.js.map +1 -1
  510. package/dist/dimensional/dimension-spec.d.ts +7 -1
  511. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  512. package/dist/dimensional/dimension-spec.js +131 -3
  513. package/dist/dimensional/dimension-spec.js.map +1 -1
  514. package/dist/dimensional/formula-names.d.ts +30 -0
  515. package/dist/dimensional/formula-names.d.ts.map +1 -0
  516. package/dist/dimensional/formula-names.js +37 -0
  517. package/dist/dimensional/formula-names.js.map +1 -0
  518. package/dist/dimensional/natural-units.d.ts +33 -0
  519. package/dist/dimensional/natural-units.d.ts.map +1 -0
  520. package/dist/dimensional/natural-units.js +58 -0
  521. package/dist/dimensional/natural-units.js.map +1 -0
  522. package/dist/{composition → dimensional}/symbolic-constants.d.ts +21 -2
  523. package/dist/dimensional/symbolic-constants.d.ts.map +1 -0
  524. package/dist/dimensional/symbolic-constants.js +116 -0
  525. package/dist/dimensional/symbolic-constants.js.map +1 -0
  526. package/dist/dimensional/unit-convention.d.ts +30 -0
  527. package/dist/dimensional/unit-convention.d.ts.map +1 -0
  528. package/dist/dimensional/unit-convention.js +60 -0
  529. package/dist/dimensional/unit-convention.js.map +1 -0
  530. package/dist/dimensional/units.d.ts +43 -0
  531. package/dist/dimensional/units.d.ts.map +1 -0
  532. package/dist/dimensional/units.js +197 -0
  533. package/dist/dimensional/units.js.map +1 -0
  534. package/dist/index.d.ts +8 -4
  535. package/dist/index.d.ts.map +1 -1
  536. package/dist/index.js +7 -3
  537. package/dist/index.js.map +1 -1
  538. package/dist/numerical/bianchi-residual.d.ts +55 -0
  539. package/dist/numerical/bianchi-residual.d.ts.map +1 -0
  540. package/dist/numerical/bianchi-residual.js +79 -0
  541. package/dist/numerical/bianchi-residual.js.map +1 -0
  542. package/dist/numerical/binding-value.d.ts +67 -0
  543. package/dist/numerical/binding-value.d.ts.map +1 -0
  544. package/dist/numerical/binding-value.js +347 -0
  545. package/dist/numerical/binding-value.js.map +1 -0
  546. package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
  547. package/dist/numerical/connection-lowering-helpers.js +13 -26
  548. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  549. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  550. package/dist/numerical/curvature-lowering-helpers.js +9 -0
  551. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  552. package/dist/numerical/float64-engine.d.ts.map +1 -1
  553. package/dist/numerical/float64-engine.js +23 -16
  554. package/dist/numerical/float64-engine.js.map +1 -1
  555. package/dist/numerical/formula-dimension.d.ts +7 -0
  556. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  557. package/dist/numerical/formula-dimension.js +23 -6
  558. package/dist/numerical/formula-dimension.js.map +1 -1
  559. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  560. package/dist/numerical/formula-mathts.js +68 -6
  561. package/dist/numerical/formula-mathts.js.map +1 -1
  562. package/dist/numerical/formula.d.ts +27 -0
  563. package/dist/numerical/formula.d.ts.map +1 -1
  564. package/dist/numerical/formula.js +68 -6
  565. package/dist/numerical/formula.js.map +1 -1
  566. package/dist/numerical/spacetime-metrics.d.ts +243 -0
  567. package/dist/numerical/spacetime-metrics.d.ts.map +1 -0
  568. package/dist/numerical/spacetime-metrics.js +1056 -0
  569. package/dist/numerical/spacetime-metrics.js.map +1 -0
  570. package/dist/relations/composition-table.d.ts +61 -0
  571. package/dist/relations/composition-table.d.ts.map +1 -0
  572. package/dist/relations/composition-table.js +140 -0
  573. package/dist/relations/composition-table.js.map +1 -0
  574. package/dist/relations/conventions.d.ts +63 -0
  575. package/dist/relations/conventions.d.ts.map +1 -0
  576. package/dist/relations/conventions.js +93 -0
  577. package/dist/relations/conventions.js.map +1 -0
  578. package/dist/relations/regime.d.ts +159 -0
  579. package/dist/relations/regime.d.ts.map +1 -0
  580. package/dist/relations/regime.js +304 -0
  581. package/dist/relations/regime.js.map +1 -0
  582. package/dist/relations/types.d.ts +259 -0
  583. package/dist/relations/types.d.ts.map +1 -0
  584. package/dist/relations/types.js +37 -0
  585. package/dist/relations/types.js.map +1 -0
  586. package/package.json +166 -163
  587. package/dist/composition/poster-source.d.ts.map +0 -1
  588. package/dist/composition/poster-source.js.map +0 -1
  589. package/dist/composition/symbolic-constants.d.ts.map +0 -1
  590. package/dist/composition/symbolic-constants.js +0 -65
  591. package/dist/composition/symbolic-constants.js.map +0 -1
package/bin/upt.mjs CHANGED
@@ -1,22 +1,28 @@
1
- #!/usr/bin/env node
2
- /**
3
- * upt — thin launcher. All logic lives in src/cli/ (compiled to dist/cli/).
4
- * This shim only resolves dist/, guards the not-built case, and maps the
5
- * returned code onto process.exitCode (NOT process.exit — a hard exit can
6
- * truncate piped stdout).
7
- */
8
- import { fileURLToPath, pathToFileURL } from 'node:url';
9
- import { dirname, join } from 'node:path';
10
-
11
- const here = dirname(fileURLToPath(import.meta.url));
12
- const entry = pathToFileURL(join(here, '..', 'dist', 'cli', 'main.js')).href;
13
-
14
- let main;
15
- try {
16
- main = await import(entry);
17
- } catch (err) {
18
- console.error('Could not load the built package. Run `npm run build` first.');
19
- console.error(String(err && err.message ? err.message : err));
20
- process.exit(1);
21
- }
22
- process.exitCode = await main.runCli(process.argv.slice(2));
1
+ #!/usr/bin/env node
2
+ /**
3
+ * upt — thin launcher. All logic lives in src/cli/ (compiled to dist/cli/).
4
+ * This shim only resolves dist/, guards the not-built case, and maps the
5
+ * returned code onto process.exitCode (NOT process.exit — a hard exit can
6
+ * truncate piped stdout). The one exception is a reader that closed the pipe
7
+ * (`upt map | head -1`): nothing more can be delivered, so the run ends quietly.
8
+ */
9
+ import { fileURLToPath, pathToFileURL } from 'node:url';
10
+ import { dirname, join } from 'node:path';
11
+
12
+ const here = dirname(fileURLToPath(import.meta.url));
13
+ const entry = pathToFileURL(join(here, '..', 'dist', 'cli', 'main.js')).href;
14
+
15
+ process.stdout.on('error', (err) => {
16
+ if (err && err.code === 'EPIPE') process.exit(0);
17
+ throw err;
18
+ });
19
+
20
+ let main;
21
+ try {
22
+ main = await import(entry);
23
+ } catch (err) {
24
+ console.error('Could not load the built package. Run `npm run build` first.');
25
+ console.error(String(err && err.message ? err.message : err));
26
+ process.exit(1);
27
+ }
28
+ process.exitCode = await main.runCli(process.argv.slice(2));
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Optional embedding retrieval. An embedder proposes an order. `rankByStructure`
3
+ * decides what is accepted. Cosine similarity does not enter that score.
4
+ *
5
+ * The Ollama implementation speaks HTTP to a local process. Nothing here
6
+ * imports an embedding library, and nothing calls out of process unless a
7
+ * caller asks for embeddings and supplies that implementation.
8
+ *
9
+ * The query form is the one registered in pre-registration Amendment 11.
10
+ * Corpus records are embedded as their text, with no instruction prefix.
11
+ *
12
+ * @module atlas/benchmark/hybrid-retrieval
13
+ * @internal
14
+ */
15
+ import { type CorpusRecord, type RetrievalQuery } from './baselines.js';
16
+ /** The instruction line registered with the embedding condition. @internal */
17
+ export declare const EMBEDDING_INSTRUCTION = "Given a physics claim, retrieve the established physical relation that the claim restates or misuses";
18
+ /** qwen3-embedding:4b, the model the design names. The package does not install it. @internal */
19
+ export declare const OLLAMA_EMBEDDING_MODEL = "qwen3-embedding:4b";
20
+ /**
21
+ * Length stored in the frozen vector file
22
+ * `docs/research/criterion3/embeddings/qwen3-embedding-4b.json`.
23
+ * A live reply of another length is not that file's vector.
24
+ * @internal
25
+ */
26
+ export declare const FROZEN_VECTOR_DIMS = 2560;
27
+ /** SHA-256 of that frozen file, as registered in Amendment 11. @internal */
28
+ export declare const FROZEN_VECTOR_SHA256 = "8fd79d2c6aaaf95c67f9a29ceb5fe4b88b42970c8e514d98c72c00a2c519cbdc";
29
+ /**
30
+ * How long a local Ollama call may run before it counts as not finishing.
31
+ * The design names that outcome and does not name a duration.
32
+ * @internal
33
+ */
34
+ export declare const OLLAMA_TIMEOUT_MS = 5000;
35
+ /** What the caller hears when embeddings were not asked for. @internal */
36
+ export declare const ATLAS_ONLY_NOTE = "Embeddings were not requested. This is the atlas search.";
37
+ /** What the caller hears when an embedding order was computed and then not accepted. @internal */
38
+ export declare const PROPOSAL_NOTE = "The embedding order is a proposal, not evidence and not an acceptance. rankByStructure accepted a separate order. Cosine similarity does not enter that score.";
39
+ declare const REASON_TEXT: {
40
+ readonly 'process-not-there': 'the process is not there';
41
+ readonly 'model-not-there': 'the model is not there';
42
+ readonly 'reply-not-a-vector': 'the reply is not a vector, or its length is not the length stored in the frozen file';
43
+ readonly 'call-did-not-finish': 'the call does not finish';
44
+ };
45
+ /** Why an embedding request fell back to the atlas search. @internal */
46
+ export type EmbeddingFallbackReason = keyof typeof REASON_TEXT;
47
+ /** An embedding request that cannot be used. The atlas search still answers. @internal */
48
+ export declare class EmbeddingUnavailable extends Error {
49
+ readonly reason: EmbeddingFallbackReason;
50
+ constructor(reason: EmbeddingFallbackReason);
51
+ }
52
+ /** One vector per string, every vector the same length. @internal */
53
+ export type Embedder = (texts: readonly string[]) => Promise<readonly (readonly number[])[]>;
54
+ /** `Instruct: …` newline `Query: …`, the registered query form. @internal */
55
+ export declare function queryInput(claim: string): string;
56
+ /**
57
+ * A pure function of the text. The same text is the same vector.
58
+ * `v = [sum of char codes, sum of (index+1) times char code]`.
59
+ * @internal
60
+ */
61
+ export declare function stubVector(text: string): readonly number[];
62
+ /** The stub embedder. It does not open a socket. @internal */
63
+ export declare const stubEmbedder: Embedder;
64
+ /** Cosine similarity. Unequal lengths are not a similarity. @internal */
65
+ export declare function cosine(a: ArrayLike<number>, b: ArrayLike<number>): number;
66
+ /**
67
+ * Best cosine first. A tie breaks by record id, so the order does not depend
68
+ * on which vector was computed last.
69
+ * @internal
70
+ */
71
+ export declare function rankByCosine(query: ArrayLike<number>, records: readonly {
72
+ readonly id: string;
73
+ readonly vector: ArrayLike<number>;
74
+ }[]): string[];
75
+ /** Decode a little-endian float32 vector stored as base64, the frozen file's encoding. @internal */
76
+ export declare function decodeFloat32(encoded: string): Float32Array;
77
+ /** The live canonical registry as retrieval records. Text is the name and the latex. @internal */
78
+ export declare function canonicalRetrievalCorpus(): CorpusRecord[];
79
+ export interface OllamaEmbedderOptions {
80
+ readonly baseUrl: string;
81
+ readonly model?: string;
82
+ readonly expectedDims?: number;
83
+ readonly timeoutMs?: number;
84
+ readonly fetchImpl?: (url: string, init?: RequestInit) => Promise<Response>;
85
+ }
86
+ /** A local Ollama embedder. Off unless a caller constructs it. @internal */
87
+ export declare function ollamaEmbedder(options: OllamaEmbedderOptions): Embedder;
88
+ /** Both orders, kept apart. `accepted` is always `rankByStructure`. @internal */
89
+ export interface HybridRetrieval {
90
+ readonly embeddings: 'not-requested' | 'used' | 'fallback';
91
+ readonly fallback: EmbeddingFallbackReason | null;
92
+ readonly proposals: readonly string[] | null;
93
+ readonly accepted: readonly string[];
94
+ readonly note: string;
95
+ }
96
+ /**
97
+ * Atlas search, optionally after an embedding proposal. A fallback is the
98
+ * atlas answer plus a named reason. It does not throw.
99
+ * @internal
100
+ */
101
+ export declare function retrieveHybrid(args: {
102
+ readonly query: RetrievalQuery;
103
+ readonly corpus: readonly CorpusRecord[];
104
+ readonly embeddings?: boolean;
105
+ readonly embedder?: Embedder;
106
+ }): Promise<HybridRetrieval>;
107
+ export {};
108
+ //# sourceMappingURL=hybrid-retrieval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hybrid-retrieval.d.ts","sourceRoot":"","sources":["../../../src/atlas/benchmark/hybrid-retrieval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Optional embedding retrieval. An embedder proposes an order. `rankByStructure`
3
+ * decides what is accepted. Cosine similarity does not enter that score.
4
+ *
5
+ * The Ollama implementation speaks HTTP to a local process. Nothing here
6
+ * imports an embedding library, and nothing calls out of process unless a
7
+ * caller asks for embeddings and supplies that implementation.
8
+ *
9
+ * The query form is the one registered in pre-registration Amendment 11.
10
+ * Corpus records are embedded as their text, with no instruction prefix.
11
+ *
12
+ * @module atlas/benchmark/hybrid-retrieval
13
+ * @internal
14
+ */
15
+ import { CANONICAL_EQUATIONS } from '../../canonical/registry.js';
16
+ import { rankByStructure } from './baselines.js';
17
+ /** The instruction line registered with the embedding condition. @internal */
18
+ export const EMBEDDING_INSTRUCTION = 'Given a physics claim, retrieve the established physical relation that the claim restates or misuses';
19
+ /** qwen3-embedding:4b, the model the design names. The package does not install it. @internal */
20
+ export const OLLAMA_EMBEDDING_MODEL = 'qwen3-embedding:4b';
21
+ /**
22
+ * Length stored in the frozen vector file
23
+ * `docs/research/criterion3/embeddings/qwen3-embedding-4b.json`.
24
+ * A live reply of another length is not that file's vector.
25
+ * @internal
26
+ */
27
+ export const FROZEN_VECTOR_DIMS = 2560;
28
+ /** SHA-256 of that frozen file, as registered in Amendment 11. @internal */
29
+ export const FROZEN_VECTOR_SHA256 = '8fd79d2c6aaaf95c67f9a29ceb5fe4b88b42970c8e514d98c72c00a2c519cbdc';
30
+ /**
31
+ * How long a local Ollama call may run before it counts as not finishing.
32
+ * The design names that outcome and does not name a duration.
33
+ * @internal
34
+ */
35
+ export const OLLAMA_TIMEOUT_MS = 5000;
36
+ /** What the caller hears when embeddings were not asked for. @internal */
37
+ export const ATLAS_ONLY_NOTE = 'Embeddings were not requested. This is the atlas search.';
38
+ /** What the caller hears when an embedding order was computed and then not accepted. @internal */
39
+ export const PROPOSAL_NOTE = 'The embedding order is a proposal, not evidence and not an acceptance. rankByStructure accepted a separate order. Cosine similarity does not enter that score.';
40
+ const REASON_TEXT = {
41
+ 'process-not-there': 'the process is not there',
42
+ 'model-not-there': 'the model is not there',
43
+ 'reply-not-a-vector': 'the reply is not a vector, or its length is not the length stored in the frozen file',
44
+ 'call-did-not-finish': 'the call does not finish',
45
+ };
46
+ /** An embedding request that cannot be used. The atlas search still answers. @internal */
47
+ export class EmbeddingUnavailable extends Error {
48
+ reason;
49
+ constructor(reason) {
50
+ super(REASON_TEXT[reason]);
51
+ this.name = 'EmbeddingUnavailable';
52
+ this.reason = reason;
53
+ }
54
+ }
55
+ /** `Instruct: …` newline `Query: …`, the registered query form. @internal */
56
+ export function queryInput(claim) {
57
+ return `Instruct: ${EMBEDDING_INSTRUCTION}\nQuery: ${claim}`;
58
+ }
59
+ /**
60
+ * A pure function of the text. The same text is the same vector.
61
+ * `v = [sum of char codes, sum of (index+1) times char code]`.
62
+ * @internal
63
+ */
64
+ export function stubVector(text) {
65
+ let sum = 0;
66
+ let weighted = 0;
67
+ for (let i = 0; i < text.length; i++) {
68
+ const code = text.charCodeAt(i);
69
+ sum += code;
70
+ weighted += (i + 1) * code;
71
+ }
72
+ return [sum, weighted];
73
+ }
74
+ /** The stub embedder. It does not open a socket. @internal */
75
+ export const stubEmbedder = async (texts) => texts.map((text) => stubVector(text));
76
+ /** Cosine similarity. Unequal lengths are not a similarity. @internal */
77
+ export function cosine(a, b) {
78
+ if (a.length !== b.length) {
79
+ throw new EmbeddingUnavailable('reply-not-a-vector');
80
+ }
81
+ let dot = 0;
82
+ let na = 0;
83
+ let nb = 0;
84
+ for (let i = 0; i < a.length; i++) {
85
+ const x = a[i];
86
+ const y = b[i];
87
+ dot += x * y;
88
+ na += x * x;
89
+ nb += y * y;
90
+ }
91
+ if (na === 0 || nb === 0)
92
+ return 0;
93
+ return dot / Math.sqrt(na * nb);
94
+ }
95
+ /**
96
+ * Best cosine first. A tie breaks by record id, so the order does not depend
97
+ * on which vector was computed last.
98
+ * @internal
99
+ */
100
+ export function rankByCosine(query, records) {
101
+ return records
102
+ .map((r) => ({ id: r.id, s: cosine(query, r.vector) }))
103
+ .sort((a, b) => (b.s !== a.s ? b.s - a.s : a.id < b.id ? -1 : a.id > b.id ? 1 : 0))
104
+ .map((x) => x.id);
105
+ }
106
+ /** Decode a little-endian float32 vector stored as base64, the frozen file's encoding. @internal */
107
+ export function decodeFloat32(encoded) {
108
+ const bytes = Buffer.from(encoded, 'base64');
109
+ if (bytes.byteLength === 0 || bytes.byteLength % 4 !== 0) {
110
+ throw new EmbeddingUnavailable('reply-not-a-vector');
111
+ }
112
+ return new Float32Array(bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength));
113
+ }
114
+ /** The live canonical registry as retrieval records. Text is the name and the latex. @internal */
115
+ export function canonicalRetrievalCorpus() {
116
+ return CANONICAL_EQUATIONS.map((equation) => ({
117
+ id: equation.id,
118
+ text: `${equation.name}. ${equation.formula_latex}`,
119
+ ...(equation.scalarAst === undefined ? {} : { expr: equation.scalarAst }),
120
+ }));
121
+ }
122
+ /** A local Ollama embedder. Off unless a caller constructs it. @internal */
123
+ export function ollamaEmbedder(options) {
124
+ const model = options.model ?? OLLAMA_EMBEDDING_MODEL;
125
+ const expectedDims = options.expectedDims ?? FROZEN_VECTOR_DIMS;
126
+ const timeoutMs = options.timeoutMs ?? OLLAMA_TIMEOUT_MS;
127
+ const fetchImpl = options.fetchImpl ?? fetch;
128
+ const base = options.baseUrl.replace(/\/$/, '');
129
+ return async (texts) => {
130
+ const controller = new AbortController();
131
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
132
+ try {
133
+ let response;
134
+ try {
135
+ response = await fetchImpl(`${base}/api/embed`, {
136
+ method: 'POST',
137
+ headers: { 'content-type': 'application/json' },
138
+ body: JSON.stringify({ model, input: [...texts] }),
139
+ signal: controller.signal,
140
+ });
141
+ }
142
+ catch {
143
+ if (controller.signal.aborted)
144
+ throw new EmbeddingUnavailable('call-did-not-finish');
145
+ throw new EmbeddingUnavailable('process-not-there');
146
+ }
147
+ if (response.status === 404)
148
+ throw new EmbeddingUnavailable('model-not-there');
149
+ let body;
150
+ try {
151
+ body = await response.json();
152
+ }
153
+ catch {
154
+ throw new EmbeddingUnavailable('reply-not-a-vector');
155
+ }
156
+ if (!response.ok) {
157
+ const message = typeof body === 'object' && body !== null ? JSON.stringify(body) : '';
158
+ if (/not found/i.test(message))
159
+ throw new EmbeddingUnavailable('model-not-there');
160
+ throw new EmbeddingUnavailable('reply-not-a-vector');
161
+ }
162
+ const embeddings = body.embeddings;
163
+ if (!Array.isArray(embeddings) || embeddings.length !== texts.length) {
164
+ throw new EmbeddingUnavailable('reply-not-a-vector');
165
+ }
166
+ const vectors = [];
167
+ for (const row of embeddings) {
168
+ if (!Array.isArray(row) || row.length !== expectedDims || row.some((x) => typeof x !== 'number' || !Number.isFinite(x))) {
169
+ throw new EmbeddingUnavailable('reply-not-a-vector');
170
+ }
171
+ vectors.push(row);
172
+ }
173
+ return vectors;
174
+ }
175
+ finally {
176
+ clearTimeout(timer);
177
+ }
178
+ };
179
+ }
180
+ function noteFor(base, query) {
181
+ if (query.expr !== undefined)
182
+ return base;
183
+ return `${base} The claim has no expression, so the structural score is zero and the atlas order is by id.`;
184
+ }
185
+ function fallbackResult(query, accepted, reason) {
186
+ return {
187
+ embeddings: 'fallback',
188
+ fallback: reason,
189
+ proposals: null,
190
+ accepted,
191
+ note: noteFor(`Embeddings were requested. ${REASON_TEXT[reason]}. This is the atlas search.`, query),
192
+ };
193
+ }
194
+ /**
195
+ * Atlas search, optionally after an embedding proposal. A fallback is the
196
+ * atlas answer plus a named reason. It does not throw.
197
+ * @internal
198
+ */
199
+ export async function retrieveHybrid(args) {
200
+ const accepted = rankByStructure(args.query, args.corpus);
201
+ if (args.embeddings !== true) {
202
+ return {
203
+ embeddings: 'not-requested',
204
+ fallback: null,
205
+ proposals: null,
206
+ accepted,
207
+ note: noteFor(ATLAS_ONLY_NOTE, args.query),
208
+ };
209
+ }
210
+ if (args.embedder === undefined) {
211
+ return fallbackResult(args.query, accepted, 'process-not-there');
212
+ }
213
+ const inputs = [queryInput(args.query.text), ...args.corpus.map((record) => record.text)];
214
+ let vectors;
215
+ try {
216
+ vectors = await args.embedder(inputs);
217
+ }
218
+ catch (error) {
219
+ if (error instanceof EmbeddingUnavailable)
220
+ return fallbackResult(args.query, accepted, error.reason);
221
+ throw error;
222
+ }
223
+ if (vectors.length !== inputs.length)
224
+ return fallbackResult(args.query, accepted, 'reply-not-a-vector');
225
+ try {
226
+ const proposals = rankByCosine(vectors[0], args.corpus.map((record, index) => ({ id: record.id, vector: vectors[index + 1] })));
227
+ return {
228
+ embeddings: 'used',
229
+ fallback: null,
230
+ proposals,
231
+ accepted,
232
+ note: noteFor(PROPOSAL_NOTE, args.query),
233
+ };
234
+ }
235
+ catch (error) {
236
+ if (error instanceof EmbeddingUnavailable)
237
+ return fallbackResult(args.query, accepted, error.reason);
238
+ throw error;
239
+ }
240
+ }
241
+ //# sourceMappingURL=hybrid-retrieval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hybrid-retrieval.js","sourceRoot":"","sources":["../../../src/atlas/benchmark/hybrid-retrieval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Catalog formal references, keyed by bridge id.
3
+ *
4
+ * These used to be `formalRef: physjsFormalRef('be-N')` on the catalog
5
+ * rows in `src/bridges/index.ts`. That import was an upward edge. The
6
+ * catalog row does not keep a second copy. A reader that needs the
7
+ * reference calls {@link catalogFormalRef}.
8
+ *
9
+ * The reference is built by `physjsFormalRef`, so kind, url, and covers
10
+ * are the manifest's, not a hand copy. An id this map does not contain
11
+ * resolves to no reference. Evidence tags stay derived: this module
12
+ * does not store a tag.
13
+ *
14
+ * @module atlas/catalog-formal-ref
15
+ */
16
+ import type { FormalRef } from '../relations/types.js';
17
+ /**
18
+ * The reviewed PhysJS reference for a catalog id, or `undefined` when
19
+ * this overlay has none.
20
+ *
21
+ * @internal
22
+ */
23
+ export declare function catalogFormalRef(id: number): FormalRef | undefined;
24
+ //# sourceMappingURL=catalog-formal-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-formal-ref.d.ts","sourceRoot":"","sources":["../../src/atlas/catalog-formal-ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAiBvD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAElE"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Catalog formal references, keyed by bridge id.
3
+ *
4
+ * These used to be `formalRef: physjsFormalRef('be-N')` on the catalog
5
+ * rows in `src/bridges/index.ts`. That import was an upward edge. The
6
+ * catalog row does not keep a second copy. A reader that needs the
7
+ * reference calls {@link catalogFormalRef}.
8
+ *
9
+ * The reference is built by `physjsFormalRef`, so kind, url, and covers
10
+ * are the manifest's, not a hand copy. An id this map does not contain
11
+ * resolves to no reference. Evidence tags stay derived: this module
12
+ * does not store a tag.
13
+ *
14
+ * @module atlas/catalog-formal-ref
15
+ */
16
+ import { physjsFormalRef } from './physjs-ref.js';
17
+ /**
18
+ * Catalog ids that had a `physjsFormalRef` call on the bridge row.
19
+ * File order of those calls. `be-20` is absent: its Friedmann corollary
20
+ * stays nested on `be-13`.
21
+ */
22
+ const CATALOG_FORMAL_REF_IDS = [
23
+ 11, 12, 13, 14, 15, 16, 17, 19, 21, 22, 24, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 40, 42, 43,
24
+ 50, 51, 54, 53, 55, 58, 59, 60, 61, 63, 64, 65,
25
+ ];
26
+ const BY_ID = new Map(CATALOG_FORMAL_REF_IDS.map((id) => [id, physjsFormalRef(`be-${id}`)]));
27
+ /**
28
+ * The reviewed PhysJS reference for a catalog id, or `undefined` when
29
+ * this overlay has none.
30
+ *
31
+ * @internal
32
+ */
33
+ export function catalogFormalRef(id) {
34
+ return BY_ID.get(id);
35
+ }
36
+ //# sourceMappingURL=catalog-formal-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-formal-ref.js","sourceRoot":"","sources":["../../src/atlas/catalog-formal-ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;GAIG;AACH,MAAM,sBAAsB,GAAG;IAC7B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9F,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACtC,CAAC;AAEX,MAAM,KAAK,GAAmC,IAAI,GAAG,CACnD,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CACtE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC"}
@@ -1,55 +1,20 @@
1
1
  /**
2
- * The composition table for `RelationType` — a literal 8×8 matrix.
3
- *
4
- * `composeRelation(first, second)` answers: if one bridge asserts `first` and a
5
- * second bridge asserts `second`, what relation does the chain assert? The
6
- * argument order is the `First ∘ Second` column order of design note
7
- * `docs/planning/Atlas-Phase-1-Design.md` §2.1.
8
- *
9
- * **The table is a deliberate UNDER-approximation of Blueprint v2 §4.2.** Every
10
- * cell not named in §2.1 is `'no-composite-claim'`, because a wrong composite
11
- * type is a false physical claim while silence is only silence. Eight of the
12
- * sixty-four cells are defined; the remaining fifty-six are silent, and the
13
- * reasons for the notable silences are §2.2.
14
- *
15
- * Two cells the implementation plan asserts are NOT defined here, on the
16
- * authority of the design note (§0 and §2.2 item 5):
17
- *
18
- * - `exact-equivalence ∘ approximation`, either order. An exact equivalence
19
- * contributes `IDENTITY_BOUND` only *in the norm a given bridge states* (see
20
- * `./error-algebra.ts`), and no field in Sprint 1 records a norm, so
21
- * norm-compatibility cannot be checked. A `norm?` field unblocks it in
22
- * Phase 2.
23
- * - `structural-analogy ∘ structural-analogy`. Analogy is not transitive: the
24
- * shared structure can dilute to nothing across a chain.
25
- *
26
- * Widening this table is a reviewed act — `tests/atlas/composition-table.test.ts`
27
- * pins the count of silent cells.
28
- *
29
- * Pure: no I/O, no registry reads, and no import from `src/composition/`.
2
+ * Re-export of the composition table. The table lives in
3
+ * `src/relations/composition-table.ts`. These consts are the same bindings.
30
4
  *
31
5
  * @module atlas/composition-table
32
6
  */
33
- import type { RelationType } from './types.js';
34
- /** What `composeRelation` returns when the chain asserts nothing. @public */
35
- export type NoCompositeClaim = 'no-composite-claim';
36
- /** The result of composing two relations. @public */
37
- export type CompositionResult = RelationType | NoCompositeClaim;
7
+ import { composeRelation as composeRelationValue } from '../relations/composition-table.js';
38
8
  /** @public */
39
- export declare const NO_COMPOSITE_CLAIM: NoCompositeClaim;
40
- /**
41
- * Every row of every column, written out. `Record<RelationType, …>` makes the
42
- * exhaustiveness structural: a ninth `RelationType` member fails to compile
43
- * here rather than silently acquiring a row of `'no-composite-claim'`.
44
- *
45
- * @public
46
- */
47
- export declare const COMPOSITION_TABLE: Readonly<Record<RelationType, Readonly<Record<RelationType, CompositionResult>>>>;
9
+ export declare const NO_COMPOSITE_CLAIM: "no-composite-claim";
48
10
  /**
49
- * The relation a chain of two bridges asserts, or `'no-composite-claim'` when
50
- * this sprint declines to assert one. A table lookup — no rules, no inference.
51
- *
52
11
  * @public
53
12
  */
54
- export declare function composeRelation(first: RelationType, second: RelationType): CompositionResult;
13
+ export declare const COMPOSITION_TABLE: Readonly<Record<import("../relations/types.js").RelationType, Readonly<Record<import("../relations/types.js").RelationType, import("../relations/composition-table.js").CompositionResult>>>>;
14
+ /** @public */
15
+ export declare const composeRelation: typeof composeRelationValue;
16
+ /** @public */
17
+ export type NoCompositeClaim = import('../relations/composition-table.js').NoCompositeClaim;
18
+ /** @public */
19
+ export type CompositionResult = import('../relations/composition-table.js').CompositionResult;
55
20
  //# sourceMappingURL=composition-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"composition-table.d.ts","sourceRoot":"","sources":["../../src/atlas/composition-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,qDAAqD;AACrD,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAEhE,cAAc;AACd,eAAO,MAAM,kBAAkB,EAAE,gBAAuC,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CACtC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAkFxE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,GACnB,iBAAiB,CAEnB"}
1
+ {"version":3,"file":"composition-table.d.ts","sourceRoot":"","sources":["../../src/atlas/composition-table.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,eAAe,IAAI,oBAAoB,EAExC,MAAM,mCAAmC,CAAC;AAE3C,cAAc;AACd,eAAO,MAAM,kBAAkB,sBAAwB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,iBAAiB,+LAAwB,CAAC;AAEvD,cAAc;AACd,eAAO,MAAM,eAAe,6BAAuB,CAAC;AAEpD,cAAc;AACd,MAAM,MAAM,gBAAgB,GAAG,OAAO,mCAAmC,EAAE,gBAAgB,CAAC;AAE5F,cAAc;AACd,MAAM,MAAM,iBAAiB,GAAG,OAAO,mCAAmC,EAAE,iBAAiB,CAAC"}