@vorionsys/atsf-core 0.2.4 → 0.3.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 (376) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/LICENSE +1 -1
  3. package/README.md +82 -29
  4. package/dist/adapters/base-adapter.d.ts +94 -0
  5. package/dist/adapters/base-adapter.d.ts.map +1 -0
  6. package/dist/adapters/base-adapter.js +233 -0
  7. package/dist/adapters/base-adapter.js.map +1 -0
  8. package/dist/adapters/index.d.ts +9 -0
  9. package/dist/adapters/index.d.ts.map +1 -0
  10. package/dist/adapters/index.js +5 -0
  11. package/dist/adapters/index.js.map +1 -0
  12. package/dist/adapters/types.d.ts +83 -0
  13. package/dist/adapters/types.d.ts.map +1 -0
  14. package/dist/adapters/types.js +4 -0
  15. package/dist/adapters/types.js.map +1 -0
  16. package/dist/adapters/webhook-handler.d.ts +64 -0
  17. package/dist/adapters/webhook-handler.d.ts.map +1 -0
  18. package/dist/adapters/webhook-handler.js +170 -0
  19. package/dist/adapters/webhook-handler.js.map +1 -0
  20. package/dist/api/index.d.ts.map +1 -1
  21. package/dist/api/index.js +2 -0
  22. package/dist/api/index.js.map +1 -1
  23. package/dist/api/server.d.ts.map +1 -1
  24. package/dist/api/server.js +2 -0
  25. package/dist/api/server.js.map +1 -1
  26. package/dist/arbitration/index.d.ts +0 -8
  27. package/dist/arbitration/index.d.ts.map +1 -1
  28. package/dist/arbitration/index.js +2 -0
  29. package/dist/arbitration/index.js.map +1 -1
  30. package/dist/arbitration/types.d.ts.map +1 -1
  31. package/dist/arbitration/types.js +2 -8
  32. package/dist/arbitration/types.js.map +1 -1
  33. package/dist/basis/evaluator.d.ts +0 -5
  34. package/dist/basis/evaluator.d.ts.map +1 -1
  35. package/dist/basis/evaluator.js +2 -0
  36. package/dist/basis/evaluator.js.map +1 -1
  37. package/dist/basis/index.d.ts.map +1 -1
  38. package/dist/basis/index.js +2 -0
  39. package/dist/basis/index.js.map +1 -1
  40. package/dist/basis/parser.d.ts +46 -46
  41. package/dist/basis/parser.d.ts.map +1 -1
  42. package/dist/basis/parser.js +2 -0
  43. package/dist/basis/parser.js.map +1 -1
  44. package/dist/basis/types.d.ts.map +1 -1
  45. package/dist/basis/types.js +2 -3
  46. package/dist/basis/types.js.map +1 -1
  47. package/dist/chain/index.d.ts +0 -8
  48. package/dist/chain/index.d.ts.map +1 -1
  49. package/dist/chain/index.js +2 -0
  50. package/dist/chain/index.js.map +1 -1
  51. package/dist/cognigate/index.d.ts +0 -8
  52. package/dist/cognigate/index.d.ts.map +1 -1
  53. package/dist/cognigate/index.js +2 -0
  54. package/dist/cognigate/index.js.map +1 -1
  55. package/dist/common/adapters.d.ts.map +1 -1
  56. package/dist/common/adapters.js +2 -8
  57. package/dist/common/adapters.js.map +1 -1
  58. package/dist/common/config.d.ts.map +1 -1
  59. package/dist/common/config.js +2 -0
  60. package/dist/common/config.js.map +1 -1
  61. package/dist/common/index.d.ts.map +1 -1
  62. package/dist/common/index.js +2 -0
  63. package/dist/common/index.js.map +1 -1
  64. package/dist/common/logger.d.ts.map +1 -1
  65. package/dist/common/logger.js +2 -0
  66. package/dist/common/logger.js.map +1 -1
  67. package/dist/common/types.d.ts +8 -8
  68. package/dist/common/types.d.ts.map +1 -1
  69. package/dist/common/types.js +2 -9
  70. package/dist/common/types.js.map +1 -1
  71. package/dist/containment/index.d.ts +0 -8
  72. package/dist/containment/index.d.ts.map +1 -1
  73. package/dist/containment/index.js +2 -0
  74. package/dist/containment/index.js.map +1 -1
  75. package/dist/containment/types.d.ts.map +1 -1
  76. package/dist/containment/types.js +2 -8
  77. package/dist/containment/types.js.map +1 -1
  78. package/dist/contracts/index.d.ts +0 -8
  79. package/dist/contracts/index.d.ts.map +1 -1
  80. package/dist/contracts/index.js +2 -0
  81. package/dist/contracts/index.js.map +1 -1
  82. package/dist/contracts/types.d.ts.map +1 -1
  83. package/dist/contracts/types.js +2 -8
  84. package/dist/contracts/types.js.map +1 -1
  85. package/dist/crewai/callback.d.ts +0 -7
  86. package/dist/crewai/callback.d.ts.map +1 -1
  87. package/dist/crewai/callback.js +2 -0
  88. package/dist/crewai/callback.js.map +1 -1
  89. package/dist/crewai/executor.d.ts +0 -7
  90. package/dist/crewai/executor.d.ts.map +1 -1
  91. package/dist/crewai/executor.js +2 -0
  92. package/dist/crewai/executor.js.map +1 -1
  93. package/dist/crewai/index.d.ts.map +1 -1
  94. package/dist/crewai/index.js +2 -0
  95. package/dist/crewai/index.js.map +1 -1
  96. package/dist/crewai/tools.d.ts.map +1 -1
  97. package/dist/crewai/tools.js +2 -7
  98. package/dist/crewai/tools.js.map +1 -1
  99. package/dist/crewai/types.d.ts.map +1 -1
  100. package/dist/crewai/types.js +2 -7
  101. package/dist/crewai/types.js.map +1 -1
  102. package/dist/enforce/index.d.ts +0 -15
  103. package/dist/enforce/index.d.ts.map +1 -1
  104. package/dist/enforce/index.js +3 -1
  105. package/dist/enforce/index.js.map +1 -1
  106. package/dist/enforce/trust-aware-enforcement-service.d.ts +0 -15
  107. package/dist/enforce/trust-aware-enforcement-service.d.ts.map +1 -1
  108. package/dist/enforce/trust-aware-enforcement-service.js +2 -0
  109. package/dist/enforce/trust-aware-enforcement-service.js.map +1 -1
  110. package/dist/governance/fluid-workflow.d.ts +0 -8
  111. package/dist/governance/fluid-workflow.d.ts.map +1 -1
  112. package/dist/governance/fluid-workflow.js +2 -0
  113. package/dist/governance/fluid-workflow.js.map +1 -1
  114. package/dist/governance/index.d.ts +0 -8
  115. package/dist/governance/index.d.ts.map +1 -1
  116. package/dist/governance/index.js +2 -0
  117. package/dist/governance/index.js.map +1 -1
  118. package/dist/governance/proof-bridge.d.ts.map +1 -1
  119. package/dist/governance/proof-bridge.js +2 -12
  120. package/dist/governance/proof-bridge.js.map +1 -1
  121. package/dist/governance/types.d.ts.map +1 -1
  122. package/dist/governance/types.js +2 -8
  123. package/dist/governance/types.js.map +1 -1
  124. package/dist/index.d.ts +3 -0
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +8 -0
  127. package/dist/index.js.map +1 -1
  128. package/dist/intent/index.d.ts +0 -13
  129. package/dist/intent/index.d.ts.map +1 -1
  130. package/dist/intent/index.js +4 -2
  131. package/dist/intent/index.js.map +1 -1
  132. package/dist/intent/persistent-intent-service.d.ts +0 -15
  133. package/dist/intent/persistent-intent-service.d.ts.map +1 -1
  134. package/dist/intent/persistent-intent-service.js +2 -0
  135. package/dist/intent/persistent-intent-service.js.map +1 -1
  136. package/dist/intent/supabase-intent-repository.d.ts +0 -17
  137. package/dist/intent/supabase-intent-repository.d.ts.map +1 -1
  138. package/dist/intent/supabase-intent-repository.js +2 -0
  139. package/dist/intent/supabase-intent-repository.js.map +1 -1
  140. package/dist/intent-gateway/index.d.ts +499 -0
  141. package/dist/intent-gateway/index.d.ts.map +1 -0
  142. package/dist/intent-gateway/index.js +1332 -0
  143. package/dist/intent-gateway/index.js.map +1 -0
  144. package/dist/langchain/callback.d.ts +0 -7
  145. package/dist/langchain/callback.d.ts.map +1 -1
  146. package/dist/langchain/callback.js +2 -0
  147. package/dist/langchain/callback.js.map +1 -1
  148. package/dist/langchain/executor.d.ts +0 -7
  149. package/dist/langchain/executor.d.ts.map +1 -1
  150. package/dist/langchain/executor.js +2 -0
  151. package/dist/langchain/executor.js.map +1 -1
  152. package/dist/langchain/index.d.ts.map +1 -1
  153. package/dist/langchain/index.js +2 -0
  154. package/dist/langchain/index.js.map +1 -1
  155. package/dist/langchain/tools.d.ts.map +1 -1
  156. package/dist/langchain/tools.js +2 -7
  157. package/dist/langchain/tools.js.map +1 -1
  158. package/dist/langchain/types.d.ts.map +1 -1
  159. package/dist/langchain/types.js +2 -7
  160. package/dist/langchain/types.js.map +1 -1
  161. package/dist/layers/implementations/L0-request-format.d.ts.map +1 -1
  162. package/dist/layers/implementations/L0-request-format.js +2 -0
  163. package/dist/layers/implementations/L0-request-format.js.map +1 -1
  164. package/dist/layers/implementations/L1-input-size.d.ts.map +1 -1
  165. package/dist/layers/implementations/L1-input-size.js +2 -0
  166. package/dist/layers/implementations/L1-input-size.js.map +1 -1
  167. package/dist/layers/implementations/L2-charset-sanitizer.d.ts.map +1 -1
  168. package/dist/layers/implementations/L2-charset-sanitizer.js +2 -0
  169. package/dist/layers/implementations/L2-charset-sanitizer.js.map +1 -1
  170. package/dist/layers/implementations/L3-schema-conformance.d.ts.map +1 -1
  171. package/dist/layers/implementations/L3-schema-conformance.js +2 -0
  172. package/dist/layers/implementations/L3-schema-conformance.js.map +1 -1
  173. package/dist/layers/implementations/L4-injection-detector.d.ts.map +1 -1
  174. package/dist/layers/implementations/L4-injection-detector.js +2 -0
  175. package/dist/layers/implementations/L4-injection-detector.js.map +1 -1
  176. package/dist/layers/implementations/L5-rate-limiter.d.ts.map +1 -1
  177. package/dist/layers/implementations/L5-rate-limiter.js +2 -0
  178. package/dist/layers/implementations/L5-rate-limiter.js.map +1 -1
  179. package/dist/layers/implementations/index.d.ts.map +1 -1
  180. package/dist/layers/implementations/index.js +2 -0
  181. package/dist/layers/implementations/index.js.map +1 -1
  182. package/dist/layers/index.d.ts +0 -8
  183. package/dist/layers/index.d.ts.map +1 -1
  184. package/dist/layers/index.js +2 -0
  185. package/dist/layers/index.js.map +1 -1
  186. package/dist/layers/types.d.ts.map +1 -1
  187. package/dist/layers/types.js +2 -8
  188. package/dist/layers/types.js.map +1 -1
  189. package/dist/paramesphere/activation-collector.d.ts +128 -0
  190. package/dist/paramesphere/activation-collector.d.ts.map +1 -0
  191. package/dist/paramesphere/activation-collector.js +260 -0
  192. package/dist/paramesphere/activation-collector.js.map +1 -0
  193. package/dist/paramesphere/cognitive-envelope.d.ts +117 -0
  194. package/dist/paramesphere/cognitive-envelope.d.ts.map +1 -0
  195. package/dist/paramesphere/cognitive-envelope.js +220 -0
  196. package/dist/paramesphere/cognitive-envelope.js.map +1 -0
  197. package/dist/paramesphere/envelope-integration.d.ts +60 -0
  198. package/dist/paramesphere/envelope-integration.d.ts.map +1 -0
  199. package/dist/paramesphere/envelope-integration.js +114 -0
  200. package/dist/paramesphere/envelope-integration.js.map +1 -0
  201. package/dist/paramesphere/fingerprint-monitor.d.ts +143 -0
  202. package/dist/paramesphere/fingerprint-monitor.d.ts.map +1 -0
  203. package/dist/paramesphere/fingerprint-monitor.js +240 -0
  204. package/dist/paramesphere/fingerprint-monitor.js.map +1 -0
  205. package/dist/paramesphere/fingerprint-store.d.ts +85 -0
  206. package/dist/paramesphere/fingerprint-store.d.ts.map +1 -0
  207. package/dist/paramesphere/fingerprint-store.js +68 -0
  208. package/dist/paramesphere/fingerprint-store.js.map +1 -0
  209. package/dist/paramesphere/index.d.ts +22 -0
  210. package/dist/paramesphere/index.d.ts.map +1 -0
  211. package/dist/paramesphere/index.js +19 -0
  212. package/dist/paramesphere/index.js.map +1 -0
  213. package/dist/paramesphere/monitor-integration.d.ts +47 -0
  214. package/dist/paramesphere/monitor-integration.d.ts.map +1 -0
  215. package/dist/paramesphere/monitor-integration.js +102 -0
  216. package/dist/paramesphere/monitor-integration.js.map +1 -0
  217. package/dist/paramesphere/paramesphere-engine.d.ts +126 -0
  218. package/dist/paramesphere/paramesphere-engine.d.ts.map +1 -0
  219. package/dist/paramesphere/paramesphere-engine.js +610 -0
  220. package/dist/paramesphere/paramesphere-engine.js.map +1 -0
  221. package/dist/paramesphere/types.d.ts +191 -0
  222. package/dist/paramesphere/types.d.ts.map +1 -0
  223. package/dist/paramesphere/types.js +9 -0
  224. package/dist/paramesphere/types.js.map +1 -0
  225. package/dist/persistence/file.d.ts +0 -7
  226. package/dist/persistence/file.d.ts.map +1 -1
  227. package/dist/persistence/file.js +2 -0
  228. package/dist/persistence/file.js.map +1 -1
  229. package/dist/persistence/index.d.ts.map +1 -1
  230. package/dist/persistence/index.js +2 -0
  231. package/dist/persistence/index.js.map +1 -1
  232. package/dist/persistence/memory.d.ts.map +1 -1
  233. package/dist/persistence/memory.js +2 -7
  234. package/dist/persistence/memory.js.map +1 -1
  235. package/dist/persistence/sqlite.d.ts +0 -8
  236. package/dist/persistence/sqlite.d.ts.map +1 -1
  237. package/dist/persistence/sqlite.js +3 -1
  238. package/dist/persistence/sqlite.js.map +1 -1
  239. package/dist/persistence/supabase.d.ts.map +1 -1
  240. package/dist/persistence/supabase.js +3 -8
  241. package/dist/persistence/supabase.js.map +1 -1
  242. package/dist/persistence/types.d.ts.map +1 -1
  243. package/dist/persistence/types.js +2 -7
  244. package/dist/persistence/types.js.map +1 -1
  245. package/dist/phase6/ceiling.d.ts +0 -16
  246. package/dist/phase6/ceiling.d.ts.map +1 -1
  247. package/dist/phase6/ceiling.js +2 -0
  248. package/dist/phase6/ceiling.js.map +1 -1
  249. package/dist/phase6/context.d.ts +0 -17
  250. package/dist/phase6/context.d.ts.map +1 -1
  251. package/dist/phase6/context.js +2 -0
  252. package/dist/phase6/context.js.map +1 -1
  253. package/dist/phase6/index.d.ts.map +1 -1
  254. package/dist/phase6/index.js +2 -0
  255. package/dist/phase6/index.js.map +1 -1
  256. package/dist/phase6/presets.d.ts +0 -16
  257. package/dist/phase6/presets.d.ts.map +1 -1
  258. package/dist/phase6/presets.js +5 -3
  259. package/dist/phase6/presets.js.map +1 -1
  260. package/dist/phase6/provenance.d.ts +7 -16
  261. package/dist/phase6/provenance.d.ts.map +1 -1
  262. package/dist/phase6/provenance.js +18 -10
  263. package/dist/phase6/provenance.js.map +1 -1
  264. package/dist/phase6/role-gates/index.d.ts.map +1 -1
  265. package/dist/phase6/role-gates/index.js +2 -0
  266. package/dist/phase6/role-gates/index.js.map +1 -1
  267. package/dist/phase6/role-gates/kernel.d.ts.map +1 -1
  268. package/dist/phase6/role-gates/kernel.js +2 -0
  269. package/dist/phase6/role-gates/kernel.js.map +1 -1
  270. package/dist/phase6/role-gates/policy.d.ts.map +1 -1
  271. package/dist/phase6/role-gates/policy.js +2 -11
  272. package/dist/phase6/role-gates/policy.js.map +1 -1
  273. package/dist/phase6/role-gates.d.ts +0 -16
  274. package/dist/phase6/role-gates.d.ts.map +1 -1
  275. package/dist/phase6/role-gates.js +2 -0
  276. package/dist/phase6/role-gates.js.map +1 -1
  277. package/dist/phase6/types.d.ts +217 -188
  278. package/dist/phase6/types.d.ts.map +1 -1
  279. package/dist/phase6/types.js +50 -1
  280. package/dist/phase6/types.js.map +1 -1
  281. package/dist/phase6/weight-presets/canonical.d.ts.map +1 -1
  282. package/dist/phase6/weight-presets/canonical.js +2 -0
  283. package/dist/phase6/weight-presets/canonical.js.map +1 -1
  284. package/dist/phase6/weight-presets/deltas.d.ts.map +1 -1
  285. package/dist/phase6/weight-presets/deltas.js +2 -10
  286. package/dist/phase6/weight-presets/deltas.js.map +1 -1
  287. package/dist/phase6/weight-presets/index.d.ts.map +1 -1
  288. package/dist/phase6/weight-presets/index.js +2 -0
  289. package/dist/phase6/weight-presets/index.js.map +1 -1
  290. package/dist/phase6/weight-presets/merger.d.ts +0 -10
  291. package/dist/phase6/weight-presets/merger.d.ts.map +1 -1
  292. package/dist/phase6/weight-presets/merger.js +2 -0
  293. package/dist/phase6/weight-presets/merger.js.map +1 -1
  294. package/dist/proof/index.d.ts +3 -10
  295. package/dist/proof/index.d.ts.map +1 -1
  296. package/dist/proof/index.js +27 -9
  297. package/dist/proof/index.js.map +1 -1
  298. package/dist/proof/merkle.d.ts +0 -16
  299. package/dist/proof/merkle.d.ts.map +1 -1
  300. package/dist/proof/merkle.js +2 -0
  301. package/dist/proof/merkle.js.map +1 -1
  302. package/dist/proof/zk-proofs.d.ts +0 -18
  303. package/dist/proof/zk-proofs.d.ts.map +1 -1
  304. package/dist/proof/zk-proofs.js +2 -0
  305. package/dist/proof/zk-proofs.js.map +1 -1
  306. package/dist/provenance/index.d.ts +0 -8
  307. package/dist/provenance/index.d.ts.map +1 -1
  308. package/dist/provenance/index.js +2 -0
  309. package/dist/provenance/index.js.map +1 -1
  310. package/dist/provenance/types.d.ts.map +1 -1
  311. package/dist/provenance/types.js +2 -8
  312. package/dist/provenance/types.js.map +1 -1
  313. package/dist/sandbox-training/challenges.d.ts.map +1 -1
  314. package/dist/sandbox-training/challenges.js +2 -8
  315. package/dist/sandbox-training/challenges.js.map +1 -1
  316. package/dist/sandbox-training/graduation.d.ts.map +1 -1
  317. package/dist/sandbox-training/graduation.js +2 -8
  318. package/dist/sandbox-training/graduation.js.map +1 -1
  319. package/dist/sandbox-training/index.d.ts.map +1 -1
  320. package/dist/sandbox-training/index.js +2 -0
  321. package/dist/sandbox-training/index.js.map +1 -1
  322. package/dist/sandbox-training/promotion-service.d.ts.map +1 -1
  323. package/dist/sandbox-training/promotion-service.js +2 -11
  324. package/dist/sandbox-training/promotion-service.js.map +1 -1
  325. package/dist/sandbox-training/runner.d.ts.map +1 -1
  326. package/dist/sandbox-training/runner.js +2 -8
  327. package/dist/sandbox-training/runner.js.map +1 -1
  328. package/dist/sandbox-training/scorer.d.ts.map +1 -1
  329. package/dist/sandbox-training/scorer.js +2 -8
  330. package/dist/sandbox-training/scorer.js.map +1 -1
  331. package/dist/sandbox-training/types.d.ts.map +1 -1
  332. package/dist/sandbox-training/types.js +2 -8
  333. package/dist/sandbox-training/types.js.map +1 -1
  334. package/dist/trust-engine/ceiling-enforcement/audit.d.ts +0 -8
  335. package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -1
  336. package/dist/trust-engine/ceiling-enforcement/audit.js +2 -8
  337. package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -1
  338. package/dist/trust-engine/ceiling-enforcement/index.d.ts.map +1 -1
  339. package/dist/trust-engine/ceiling-enforcement/index.js +2 -0
  340. package/dist/trust-engine/ceiling-enforcement/index.js.map +1 -1
  341. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -1
  342. package/dist/trust-engine/ceiling-enforcement/kernel.js +2 -0
  343. package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -1
  344. package/dist/trust-engine/context-policy/enforcement.d.ts +0 -9
  345. package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -1
  346. package/dist/trust-engine/context-policy/enforcement.js +2 -9
  347. package/dist/trust-engine/context-policy/enforcement.js.map +1 -1
  348. package/dist/trust-engine/context-policy/factory.d.ts.map +1 -1
  349. package/dist/trust-engine/context-policy/factory.js +2 -0
  350. package/dist/trust-engine/context-policy/factory.js.map +1 -1
  351. package/dist/trust-engine/context-policy/index.d.ts.map +1 -1
  352. package/dist/trust-engine/context-policy/index.js +2 -0
  353. package/dist/trust-engine/context-policy/index.js.map +1 -1
  354. package/dist/trust-engine/creation-modifiers/index.d.ts.map +1 -1
  355. package/dist/trust-engine/creation-modifiers/index.js +2 -0
  356. package/dist/trust-engine/creation-modifiers/index.js.map +1 -1
  357. package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -1
  358. package/dist/trust-engine/creation-modifiers/types.js +2 -0
  359. package/dist/trust-engine/creation-modifiers/types.js.map +1 -1
  360. package/dist/trust-engine/decay-profiles.d.ts +20 -11
  361. package/dist/trust-engine/decay-profiles.d.ts.map +1 -1
  362. package/dist/trust-engine/decay-profiles.js +15 -23
  363. package/dist/trust-engine/decay-profiles.js.map +1 -1
  364. package/dist/trust-engine/index.d.ts +419 -80
  365. package/dist/trust-engine/index.d.ts.map +1 -1
  366. package/dist/trust-engine/index.js +1048 -186
  367. package/dist/trust-engine/index.js.map +1 -1
  368. package/dist/trust-engine/phase6-types.d.ts +3 -13
  369. package/dist/trust-engine/phase6-types.d.ts.map +1 -1
  370. package/dist/trust-engine/phase6-types.js +5 -13
  371. package/dist/trust-engine/phase6-types.js.map +1 -1
  372. package/dist/trust-engine/trust-verifier.d.ts +121 -0
  373. package/dist/trust-engine/trust-verifier.d.ts.map +1 -0
  374. package/dist/trust-engine/trust-verifier.js +226 -0
  375. package/dist/trust-engine/trust-verifier.js.map +1 -0
  376. package/package.json +140 -135
@@ -0,0 +1,610 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright 2024-2026 Vorion LLC
3
+ /**
4
+ * ParameSphere SVD Fingerprinting Engine
5
+ *
6
+ * Production implementation of the SVD-based model fingerprinting system
7
+ * described in the Vorion patent specification. Uses power-iteration to
8
+ * extract the top-K singular values from sampled weight matrices, combines
9
+ * them with activation statistics, and produces a cryptographic hash of
10
+ * the composite fingerprint vector.
11
+ *
12
+ * Key design choices:
13
+ * - Power iteration for SVD: no external linear-algebra library needed.
14
+ * - Float64Array internally for precision; inputs accepted as Float32Array.
15
+ * - Incremental updates cache previous singular values and compute deltas.
16
+ * - Dual-hash option (SHA-256 + SHA3-256) for high-assurance use cases.
17
+ *
18
+ * @packageDocumentation
19
+ */
20
+ import * as nodeCrypto from 'node:crypto';
21
+ import { DEFAULT_INTEGRITY_WEIGHTS } from './types.js';
22
+ // ---------------------------------------------------------------------------
23
+ // Defaults
24
+ // ---------------------------------------------------------------------------
25
+ const DEFAULT_CONFIG = {
26
+ K: 64,
27
+ layerSampleRatio: 0.15,
28
+ cacheSize: 5,
29
+ driftThreshold: 0.05,
30
+ dualHash: false,
31
+ };
32
+ // Power iteration parameters
33
+ const POWER_ITER_MAX = 300;
34
+ const POWER_ITER_TOL = 1e-10;
35
+ // ---------------------------------------------------------------------------
36
+ // Helpers — Linear Algebra via Power Iteration
37
+ // ---------------------------------------------------------------------------
38
+ /**
39
+ * Compute the top-K singular values of a matrix using the deflated
40
+ * power-iteration method.
41
+ *
42
+ * Given an m × n matrix A (stored row-major in a flat Float64Array),
43
+ * this iteratively finds the largest singular value via the power method
44
+ * on A^T A, then deflates the matrix and repeats for the next largest.
45
+ *
46
+ * @param data Row-major flat array of the matrix.
47
+ * @param rows Number of rows (m).
48
+ * @param cols Number of columns (n).
49
+ * @param k Number of singular values to extract.
50
+ * @returns Float64Array of length min(k, min(m,n)) with the top
51
+ * singular values in descending order.
52
+ */
53
+ function topKSingularValues(data, rows, cols, k) {
54
+ if (rows < 0 || cols < 0) {
55
+ throw new Error(`Invalid matrix dimensions: rows and cols must be non-negative, got [${rows} x ${cols}]`);
56
+ }
57
+ const expectedLength = rows * cols;
58
+ if (data.length !== expectedLength) {
59
+ throw new Error(`Matrix dimension mismatch: expected data length ${expectedLength} for dimensions [${rows} x ${cols}], got ${data.length}`);
60
+ }
61
+ const rank = Math.min(rows, cols, k);
62
+ const sigmas = new Float64Array(rank);
63
+ // Work on a copy so deflation doesn't mutate the input.
64
+ const A = new Float64Array(data);
65
+ for (let s = 0; s < rank; s++) {
66
+ // --- power iteration on A^T A to find the dominant right singular vector ---
67
+ let v = new Float64Array(cols);
68
+ // Initialise v with a deterministic pseudo-random vector (seeded on s).
69
+ for (let j = 0; j < cols; j++) {
70
+ v[j] = Math.sin((s + 1) * (j + 1) * 0.7071);
71
+ }
72
+ normalizeVec(v);
73
+ let sigma = 0;
74
+ for (let iter = 0; iter < POWER_ITER_MAX; iter++) {
75
+ // u = A * v
76
+ const u = matVecMul(A, rows, cols, v);
77
+ sigma = vecNorm(u);
78
+ if (sigma < 1e-15)
79
+ break;
80
+ scaleVec(u, 1 / sigma);
81
+ // v_new = A^T * u
82
+ const vNew = matTransVecMul(A, rows, cols, u);
83
+ const sigmaNew = vecNorm(vNew);
84
+ if (sigmaNew < 1e-15)
85
+ break;
86
+ scaleVec(vNew, 1 / sigmaNew);
87
+ // Convergence check: |sigma - sigmaNew| / sigma
88
+ const diff = Math.abs(sigma - sigmaNew);
89
+ v = vNew;
90
+ sigma = sigmaNew;
91
+ if (diff < POWER_ITER_TOL * sigma)
92
+ break;
93
+ }
94
+ sigmas[s] = sigma;
95
+ // Deflate: A <- A - sigma * u * v^T
96
+ const u = matVecMul(A, rows, cols, v);
97
+ const uNorm = vecNorm(u);
98
+ if (uNorm > 1e-15) {
99
+ scaleVec(u, 1 / uNorm);
100
+ for (let i = 0; i < rows; i++) {
101
+ for (let j = 0; j < cols; j++) {
102
+ A[i * cols + j] -= sigma * u[i] * v[j];
103
+ }
104
+ }
105
+ }
106
+ }
107
+ return sigmas;
108
+ }
109
+ /** Multiply matrix A (m×n, row-major) by vector v (length n). */
110
+ function matVecMul(A, m, n, v) {
111
+ const result = new Float64Array(m);
112
+ for (let i = 0; i < m; i++) {
113
+ let sum = 0;
114
+ const rowOff = i * n;
115
+ for (let j = 0; j < n; j++) {
116
+ sum += A[rowOff + j] * v[j];
117
+ }
118
+ result[i] = sum;
119
+ }
120
+ return result;
121
+ }
122
+ /** Multiply A^T (n×m) by vector u (length m). */
123
+ function matTransVecMul(A, m, n, u) {
124
+ const result = new Float64Array(n);
125
+ for (let j = 0; j < n; j++) {
126
+ let sum = 0;
127
+ for (let i = 0; i < m; i++) {
128
+ sum += A[i * n + j] * u[i];
129
+ }
130
+ result[j] = sum;
131
+ }
132
+ return result;
133
+ }
134
+ /** Euclidean norm of a vector. */
135
+ function vecNorm(v) {
136
+ let sum = 0;
137
+ for (let i = 0; i < v.length; i++)
138
+ sum += v[i] * v[i];
139
+ return Math.sqrt(sum);
140
+ }
141
+ /** In-place normalisation. */
142
+ function normalizeVec(v) {
143
+ const n = vecNorm(v);
144
+ if (n > 1e-15)
145
+ scaleVec(v, 1 / n);
146
+ }
147
+ /** In-place scalar multiply. */
148
+ function scaleVec(v, s) {
149
+ for (let i = 0; i < v.length; i++)
150
+ v[i] *= s;
151
+ }
152
+ // ---------------------------------------------------------------------------
153
+ // Helpers — Hashing
154
+ // ---------------------------------------------------------------------------
155
+ function sha256Hex(bytes) {
156
+ return nodeCrypto.createHash('sha256').update(bytes).digest('hex');
157
+ }
158
+ function sha3_256Hex(bytes) {
159
+ return nodeCrypto.createHash('sha3-256').update(bytes).digest('hex');
160
+ }
161
+ /** Convert a Float64Array to its raw byte representation. */
162
+ function float64ToBytes(arr) {
163
+ return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);
164
+ }
165
+ // ---------------------------------------------------------------------------
166
+ // Helpers — Geometry
167
+ // ---------------------------------------------------------------------------
168
+ function cosineSimilarity(a, b) {
169
+ const len = Math.min(a.length, b.length);
170
+ let dot = 0;
171
+ let normA = 0;
172
+ let normB = 0;
173
+ for (let i = 0; i < len; i++) {
174
+ dot += a[i] * b[i];
175
+ normA += a[i] * a[i];
176
+ normB += b[i] * b[i];
177
+ }
178
+ const denom = Math.sqrt(normA) * Math.sqrt(normB);
179
+ return denom < 1e-15 ? 0 : dot / denom;
180
+ }
181
+ function l2Distance(a, b) {
182
+ const len = Math.min(a.length, b.length);
183
+ let sum = 0;
184
+ for (let i = 0; i < len; i++) {
185
+ const d = a[i] - b[i];
186
+ sum += d * d;
187
+ }
188
+ return Math.sqrt(sum);
189
+ }
190
+ // ---------------------------------------------------------------------------
191
+ // Layer Sampling
192
+ // ---------------------------------------------------------------------------
193
+ /**
194
+ * Select which layer indices to sample.
195
+ *
196
+ * Uses a deterministic spread strategy: always include first and last layer,
197
+ * then fill in evenly-spaced layers up to the target count.
198
+ */
199
+ function selectLayers(totalLayers, ratio) {
200
+ if (totalLayers <= 0)
201
+ return [];
202
+ if (totalLayers === 1)
203
+ return [0];
204
+ const count = Math.max(2, Math.min(totalLayers, Math.ceil(totalLayers * ratio)));
205
+ if (count >= totalLayers) {
206
+ return Array.from({ length: totalLayers }, (_, i) => i);
207
+ }
208
+ const indices = new Set();
209
+ indices.add(0);
210
+ indices.add(totalLayers - 1);
211
+ const step = (totalLayers - 1) / (count - 1);
212
+ for (let i = 1; i < count - 1; i++) {
213
+ indices.add(Math.round(i * step));
214
+ }
215
+ return Array.from(indices).sort((a, b) => a - b);
216
+ }
217
+ // ---------------------------------------------------------------------------
218
+ // ParameSphereEngine
219
+ // ---------------------------------------------------------------------------
220
+ export class ParameSphereEngine {
221
+ config;
222
+ baseline = null;
223
+ cache = [];
224
+ /** Cached singular values from the last computation, keyed by layer index. */
225
+ prevSingularValues = new Map();
226
+ /** Optional persistent store for fingerprints and baselines. */
227
+ store;
228
+ /** Entity ID for store operations. */
229
+ entityId;
230
+ constructor(config) {
231
+ this.config = { ...DEFAULT_CONFIG, ...config };
232
+ if (this.config.layerSampleRatio <= 0 || this.config.layerSampleRatio > 1) {
233
+ throw new Error('layerSampleRatio must be in (0, 1]');
234
+ }
235
+ if (this.config.K < 1) {
236
+ throw new Error('K must be >= 1');
237
+ }
238
+ this.store = this.config.store;
239
+ this.entityId = this.config.entityId;
240
+ if (this.store && !this.entityId) {
241
+ throw new Error('entityId is required when a fingerprint store is provided');
242
+ }
243
+ }
244
+ // -----------------------------------------------------------------------
245
+ // Public API
246
+ // -----------------------------------------------------------------------
247
+ /**
248
+ * Compute a full fingerprint from scratch.
249
+ *
250
+ * @param weights Array of weight matrices, one per layer.
251
+ * Each Float32Array is treated as a flat row-major
252
+ * matrix. The engine infers rows/cols by assuming a
253
+ * roughly square shape (sqrt heuristic) unless the
254
+ * layer is clearly rectangular.
255
+ * @param activationStats Optional per-layer activation statistics.
256
+ */
257
+ computeFingerprint(weights, activationStats) {
258
+ if (weights.length === 0) {
259
+ return this.emptyFingerprint(0);
260
+ }
261
+ const sampledLayers = selectLayers(weights.length, this.config.layerSampleRatio);
262
+ const allSigmas = [];
263
+ for (const idx of sampledLayers) {
264
+ const w = weights[idx];
265
+ if (w.length === 0) {
266
+ throw new Error(`Invalid weight matrix at layer ${idx}: matrix is empty (0 elements). ` +
267
+ `Expected a non-empty Float32Array.`);
268
+ }
269
+ const { rows, cols } = inferShape(w.length);
270
+ const data = float32ToFloat64(w);
271
+ const sigmas = topKSingularValues(data, rows, cols, this.config.K);
272
+ allSigmas.push(sigmas);
273
+ this.prevSingularValues.set(idx, new Float64Array(sigmas));
274
+ }
275
+ return this.buildFingerprint(allSigmas, sampledLayers, weights.length, activationStats);
276
+ }
277
+ /**
278
+ * Incremental fingerprint update.
279
+ *
280
+ * Re-uses cached singular values where the delta is negligible, only
281
+ * recomputing layers whose weights have changed significantly.
282
+ */
283
+ updateFingerprint(newWeights, activationStats) {
284
+ if (newWeights.length === 0) {
285
+ return this.emptyFingerprint(0);
286
+ }
287
+ const sampledLayers = selectLayers(newWeights.length, this.config.layerSampleRatio);
288
+ const allSigmas = [];
289
+ for (const idx of sampledLayers) {
290
+ const w = newWeights[idx];
291
+ if (w.length === 0) {
292
+ throw new Error(`Invalid weight matrix at layer ${idx}: matrix is empty (0 elements). ` +
293
+ `Expected a non-empty Float32Array.`);
294
+ }
295
+ const { rows, cols } = inferShape(w.length);
296
+ const data = float32ToFloat64(w);
297
+ const sigmas = topKSingularValues(data, rows, cols, this.config.K);
298
+ // Compute delta from cached if available
299
+ const prev = this.prevSingularValues.get(idx);
300
+ if (prev && prev.length === sigmas.length) {
301
+ // Use incremental low-rank update: if delta is tiny, blend with prev
302
+ let maxDelta = 0;
303
+ for (let i = 0; i < sigmas.length; i++) {
304
+ const d = Math.abs(sigmas[i] - prev[i]);
305
+ if (d > maxDelta)
306
+ maxDelta = d;
307
+ }
308
+ // If max delta < 1% of largest singular value, use cached (saves downstream noise)
309
+ const largest = Math.max(sigmas[0] || 0, prev[0] || 0);
310
+ if (largest > 0 && maxDelta / largest < 0.01) {
311
+ allSigmas.push(prev);
312
+ continue;
313
+ }
314
+ }
315
+ this.prevSingularValues.set(idx, new Float64Array(sigmas));
316
+ allSigmas.push(sigmas);
317
+ }
318
+ return this.buildFingerprint(allSigmas, sampledLayers, newWeights.length, activationStats);
319
+ }
320
+ /**
321
+ * Compare two fingerprints.
322
+ */
323
+ compareFingerprints(a, b) {
324
+ const sim = cosineSimilarity(a.vector, b.vector);
325
+ const dist = 1 - sim;
326
+ const l2 = l2Distance(a.vector, b.vector);
327
+ // Max singular-value delta across sampled layers
328
+ let maxSVDelta = 0;
329
+ const len = Math.min(a.singularValues.length, b.singularValues.length);
330
+ for (let i = 0; i < len; i++) {
331
+ const d = Math.abs(a.singularValues[i] - b.singularValues[i]);
332
+ if (d > maxSVDelta)
333
+ maxSVDelta = d;
334
+ }
335
+ return {
336
+ cosineSimilarity: sim,
337
+ cosineDistance: dist,
338
+ l2Distance: l2,
339
+ driftDetected: dist > this.config.driftThreshold,
340
+ maxSingularValueDelta: maxSVDelta,
341
+ };
342
+ }
343
+ /**
344
+ * Store a fingerprint as the drift-detection baseline.
345
+ *
346
+ * When a persistent store is configured, the baseline is also saved
347
+ * to the store so it survives process restarts.
348
+ */
349
+ setBaseline(fingerprint) {
350
+ this.baseline = fingerprint;
351
+ if (this.store && this.entityId) {
352
+ const stored = this.toStoredFingerprint(fingerprint);
353
+ this.store.setBaseline(this.entityId, stored).catch(() => {
354
+ /* persistence is best-effort */
355
+ });
356
+ }
357
+ }
358
+ /**
359
+ * Check drift of a current fingerprint against the stored baseline.
360
+ *
361
+ * When a persistent store is configured and no in-memory baseline exists,
362
+ * the engine attempts to load the baseline from the store before comparing.
363
+ * Use the async overload `checkDriftAsync` if your store backend is truly
364
+ * async; this synchronous version will throw if neither in-memory nor store
365
+ * baseline is available.
366
+ */
367
+ checkDrift(current) {
368
+ if (!this.baseline) {
369
+ throw new Error('No baseline set — call setBaseline() first');
370
+ }
371
+ const comparison = this.compareFingerprints(this.baseline, current);
372
+ return {
373
+ drifted: comparison.driftDetected,
374
+ cosineDistance: comparison.cosineDistance,
375
+ maxSingularValueDelta: comparison.maxSingularValueDelta,
376
+ comparison,
377
+ };
378
+ }
379
+ /**
380
+ * Async drift check that loads baseline from store if needed.
381
+ *
382
+ * Preferred when using a persistent store: on the first call after a
383
+ * restart, this method transparently restores the baseline from the
384
+ * store so drift detection resumes seamlessly.
385
+ */
386
+ async checkDriftAsync(current) {
387
+ if (!this.baseline && this.store && this.entityId) {
388
+ const stored = await this.store.getBaseline(this.entityId);
389
+ if (stored) {
390
+ this.baseline = this.fromStoredFingerprint(stored);
391
+ }
392
+ }
393
+ return this.checkDrift(current);
394
+ }
395
+ /**
396
+ * Clear the incremental cache and baseline.
397
+ */
398
+ clearCache() {
399
+ this.prevSingularValues.clear();
400
+ this.cache = [];
401
+ this.baseline = null;
402
+ }
403
+ /** Get the current cache of recent fingerprints. */
404
+ getCache() {
405
+ return this.cache;
406
+ }
407
+ // -----------------------------------------------------------------------
408
+ // Internal
409
+ // -----------------------------------------------------------------------
410
+ buildFingerprint(allSigmas, sampledLayers, totalLayers, activationStats) {
411
+ // Flatten singular values
412
+ const flatSigmas = concatFloat64Arrays(allSigmas);
413
+ // Build composite vector: singular values ‖ activation stat values
414
+ const statValues = this.extractActivationVector(activationStats, sampledLayers);
415
+ const vector = concatFloat64Arrays([flatSigmas, statValues]);
416
+ // Cryptographic hash
417
+ const bytes = float64ToBytes(vector);
418
+ const sha256 = sha256Hex(bytes);
419
+ const sha3 = this.config.dualHash ? sha3_256Hex(bytes) : undefined;
420
+ const fp = {
421
+ vector,
422
+ sha256,
423
+ sha3_256: sha3,
424
+ sampledLayers,
425
+ singularValues: flatSigmas,
426
+ timestamp: new Date().toISOString(),
427
+ totalLayers,
428
+ };
429
+ // Cache management
430
+ this.cache.push(fp);
431
+ if (this.cache.length > this.config.cacheSize) {
432
+ this.cache.shift();
433
+ }
434
+ // Persist to store (fire-and-forget — errors are intentionally swallowed
435
+ // so the hot path is never blocked by a slow or failing backend).
436
+ if (this.store && this.entityId) {
437
+ const stored = this.toStoredFingerprint(fp, activationStats);
438
+ this.store.saveFingerprint(this.entityId, stored).catch(() => {
439
+ /* persistence is best-effort */
440
+ });
441
+ }
442
+ return fp;
443
+ }
444
+ /** Pull activation stats into a flat Float64Array for the composite vector. */
445
+ extractActivationVector(stats, sampledLayers) {
446
+ if (!stats || stats.length === 0)
447
+ return new Float64Array(0);
448
+ // Four values per sampled layer with stats
449
+ const values = [];
450
+ for (const idx of sampledLayers) {
451
+ if (idx < stats.length) {
452
+ const s = stats[idx];
453
+ values.push(s.mean, s.stddev, s.kurtosis, s.skewness);
454
+ }
455
+ }
456
+ return Float64Array.from(values);
457
+ }
458
+ emptyFingerprint(totalLayers) {
459
+ const vector = new Float64Array(0);
460
+ const bytes = float64ToBytes(vector);
461
+ return {
462
+ vector,
463
+ sha256: sha256Hex(bytes),
464
+ sha3_256: this.config.dualHash ? sha3_256Hex(bytes) : undefined,
465
+ sampledLayers: [],
466
+ singularValues: new Float64Array(0),
467
+ timestamp: new Date().toISOString(),
468
+ totalLayers,
469
+ };
470
+ }
471
+ // -----------------------------------------------------------------------
472
+ // Store conversion helpers
473
+ // -----------------------------------------------------------------------
474
+ /** Convert a ParameSphereFingerprint to a StoredFingerprint for persistence. */
475
+ toStoredFingerprint(fp, activationStats) {
476
+ const stored = {
477
+ entityId: this.entityId,
478
+ hash: fp.sha256,
479
+ singularValues: Array.from(fp.singularValues),
480
+ createdAt: new Date(fp.timestamp),
481
+ metadata: {
482
+ sampledLayers: fp.sampledLayers,
483
+ totalLayers: fp.totalLayers,
484
+ sha3_256: fp.sha3_256,
485
+ vectorLength: fp.vector.length,
486
+ // Store the full vector as a plain array for reconstruction
487
+ vector: Array.from(fp.vector),
488
+ },
489
+ };
490
+ if (activationStats && activationStats.length > 0) {
491
+ stored.activationStats = activationStats.map((s) => ({
492
+ mean: s.mean,
493
+ stddev: s.stddev,
494
+ kurtosis: s.kurtosis,
495
+ skewness: s.skewness,
496
+ }));
497
+ }
498
+ return stored;
499
+ }
500
+ /** Reconstruct a ParameSphereFingerprint from a StoredFingerprint. */
501
+ fromStoredFingerprint(stored) {
502
+ const meta = (stored.metadata ?? {});
503
+ const vectorArr = meta.vector;
504
+ const vector = vectorArr ? Float64Array.from(vectorArr) : Float64Array.from(stored.singularValues);
505
+ return {
506
+ vector,
507
+ sha256: stored.hash,
508
+ sha3_256: meta.sha3_256,
509
+ sampledLayers: meta.sampledLayers ?? [],
510
+ singularValues: Float64Array.from(stored.singularValues),
511
+ timestamp: stored.createdAt.toISOString(),
512
+ totalLayers: meta.totalLayers ?? 0,
513
+ };
514
+ }
515
+ // -----------------------------------------------------------------------
516
+ // Integrity Multiplier I(θ)
517
+ // -----------------------------------------------------------------------
518
+ /**
519
+ * Compute the Integrity Multiplier I(θ) — the atomic trust signal.
520
+ *
521
+ * I(θ) = w1 × fingerprintMatch + w2 × (1 - driftMagnitude) + w3 × envelopeHealth
522
+ *
523
+ * Returns a number between 0 and 1 that answers:
524
+ * "Is this agent in an authorized internal state?"
525
+ *
526
+ * When no baseline exists (API-only models, no weight access), returns I(θ) = 1.0.
527
+ *
528
+ * @param driftResult - Result from checkDrift() or null if no drift data
529
+ * @param envelopeHealth - Trust multiplier from CognitiveEnvelope (1.0/0.9/0.7) or 1.0 if unavailable
530
+ * @param weights - Component weights (default: 0.4/0.3/0.3)
531
+ */
532
+ computeIntegrityMultiplier(driftResult, envelopeHealth = 1.0, weights = DEFAULT_INTEGRITY_WEIGHTS) {
533
+ // No ParameSphere data available — passthrough (I(θ) = 1.0)
534
+ if (!driftResult && !this.baseline) {
535
+ return {
536
+ composite: 1.0,
537
+ fingerprintComponent: weights.fingerprintWeight,
538
+ driftComponent: weights.driftWeight,
539
+ envelopeComponent: weights.envelopeWeight,
540
+ available: false,
541
+ computedAt: new Date().toISOString(),
542
+ };
543
+ }
544
+ // Compute each component
545
+ const fingerprintMatch = driftResult
546
+ ? Math.max(0, Math.min(1, 1 - driftResult.cosineDistance))
547
+ : 1.0;
548
+ const normalizedDrift = driftResult
549
+ ? Math.max(0, Math.min(1, driftResult.cosineDistance / this.config.driftThreshold))
550
+ : 0.0;
551
+ const clampedEnvelopeHealth = Math.max(0, Math.min(1, envelopeHealth));
552
+ // Weighted components
553
+ const fingerprintComponent = weights.fingerprintWeight * fingerprintMatch;
554
+ const driftComponent = weights.driftWeight * (1 - normalizedDrift);
555
+ const envelopeComponent = weights.envelopeWeight * clampedEnvelopeHealth;
556
+ // Composite: sum of weighted components, clamped to [0, 1]
557
+ const composite = Math.max(0, Math.min(1, fingerprintComponent + driftComponent + envelopeComponent));
558
+ return {
559
+ composite,
560
+ fingerprintComponent,
561
+ driftComponent,
562
+ envelopeComponent,
563
+ available: true,
564
+ computedAt: new Date().toISOString(),
565
+ };
566
+ }
567
+ }
568
+ // ---------------------------------------------------------------------------
569
+ // Utility
570
+ // ---------------------------------------------------------------------------
571
+ function float32ToFloat64(src) {
572
+ const dst = new Float64Array(src.length);
573
+ for (let i = 0; i < src.length; i++)
574
+ dst[i] = src[i];
575
+ return dst;
576
+ }
577
+ function concatFloat64Arrays(arrays) {
578
+ let totalLen = 0;
579
+ for (const a of arrays)
580
+ totalLen += a.length;
581
+ const result = new Float64Array(totalLen);
582
+ let offset = 0;
583
+ for (const a of arrays) {
584
+ result.set(a, offset);
585
+ offset += a.length;
586
+ }
587
+ return result;
588
+ }
589
+ /**
590
+ * Infer a (rows, cols) shape from a flat array length.
591
+ *
592
+ * Heuristic: find the factor pair closest to sqrt that gives a valid
593
+ * factorisation. Falls back to (1, length) for primes / small arrays.
594
+ */
595
+ function inferShape(length) {
596
+ if (length <= 0)
597
+ return { rows: 0, cols: 0 };
598
+ if (length === 1)
599
+ return { rows: 1, cols: 1 };
600
+ const sqrt = Math.floor(Math.sqrt(length));
601
+ for (let r = sqrt; r >= 1; r--) {
602
+ if (length % r === 0) {
603
+ return { rows: r, cols: length / r };
604
+ }
605
+ }
606
+ return { rows: 1, cols: length };
607
+ }
608
+ // Export helpers for testing
609
+ export { topKSingularValues, selectLayers, inferShape, cosineSimilarity, l2Distance };
610
+ //# sourceMappingURL=paramesphere-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paramesphere-engine.js","sourceRoot":"","sources":["../../src/paramesphere/paramesphere-engine.ts"],"names":[],"mappings":"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"}