@remnic/core 9.69.88 → 9.69.90

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 (431) hide show
  1. package/dist/access-admin-ops-surface.js +74 -72
  2. package/dist/access-authorization-probe.js +75 -73
  3. package/dist/access-boundary.js +74 -72
  4. package/dist/access-cli.js +168 -165
  5. package/dist/access-cli.js.map +1 -1
  6. package/dist/access-extraction-force-flush.js +74 -72
  7. package/dist/access-http-briefing.js +75 -73
  8. package/dist/access-http-query.js +76 -74
  9. package/dist/access-http.js +98 -96
  10. package/dist/access-identity-continuity-surface.js +74 -72
  11. package/dist/access-lcm-surface.js +74 -72
  12. package/dist/access-mcp-output-schemas.d.ts.map +1 -1
  13. package/dist/access-mcp-output-schemas.js +1 -1
  14. package/dist/access-mcp.js +86 -84
  15. package/dist/access-memory-search-fanout.js +3 -3
  16. package/dist/access-namespace-preflight.js +74 -72
  17. package/dist/access-observe-write-category.js +11 -10
  18. package/dist/access-observe-write-surface.js +74 -72
  19. package/dist/access-offline-manifest.js +10 -9
  20. package/dist/access-operations-batch.js +76 -74
  21. package/dist/access-operations.js +83 -81
  22. package/dist/access-recall-concurrency.js +74 -72
  23. package/dist/access-recall-corpus-versions.d.ts +12 -0
  24. package/dist/access-recall-corpus-versions.d.ts.map +1 -0
  25. package/dist/access-recall-corpus-versions.js +10 -0
  26. package/dist/access-recall-diagnostics.js +5 -5
  27. package/dist/access-recall-response.d.ts +4 -0
  28. package/dist/access-recall-response.d.ts.map +1 -1
  29. package/dist/access-recall-response.js +74 -72
  30. package/dist/access-recall-surface.d.ts +8 -0
  31. package/dist/access-recall-surface.d.ts.map +1 -1
  32. package/dist/access-recall-surface.js +74 -72
  33. package/dist/access-schema.js +10 -9
  34. package/dist/access-service.d.ts +5 -0
  35. package/dist/access-service.d.ts.map +1 -1
  36. package/dist/access-service.js +74 -72
  37. package/dist/access-surface-catalog.js +76 -74
  38. package/dist/access-surface-catalog.js.map +1 -1
  39. package/dist/active-memory-bridge.js +3 -3
  40. package/dist/active-recall.js +27 -24
  41. package/dist/active-recall.js.map +1 -1
  42. package/dist/adapters/index.js +7 -7
  43. package/dist/adapters/registry.js +3 -3
  44. package/dist/{auto-sync-U5N3CB5Y.js → auto-sync-PAWBFQWL.js} +5 -5
  45. package/dist/briefing.js +19 -19
  46. package/dist/buffer.js +8 -8
  47. package/dist/calibration.js +2 -2
  48. package/dist/capabilities.d.ts +2 -1
  49. package/dist/capabilities.d.ts.map +1 -1
  50. package/dist/capabilities.js +1 -1
  51. package/dist/{capsule-crypto-YO5QJ6L3.js → capsule-crypto-7FJQINUR.js} +2 -2
  52. package/dist/causal-consolidation.js +19 -19
  53. package/dist/{chunk-BMXEBWBT.js → chunk-2EMROIXS.js} +2 -1
  54. package/dist/{chunk-BMXEBWBT.js.map → chunk-2EMROIXS.js.map} +1 -1
  55. package/dist/{chunk-MCTM4YPL.js → chunk-2FLFJTCI.js} +4 -2
  56. package/dist/chunk-2FLFJTCI.js.map +1 -0
  57. package/dist/{chunk-RDJ6C7NZ.js → chunk-2IWBHZ3H.js} +5 -5
  58. package/dist/{chunk-UP75KL3L.js → chunk-2JRB3Z5N.js} +2 -2
  59. package/dist/{chunk-BXLOS5AJ.js → chunk-2NLLXCJG.js} +2 -2
  60. package/dist/{chunk-KN6CIN7I.js → chunk-32HO62I4.js} +2 -2
  61. package/dist/{chunk-JLPNONPH.js → chunk-35A7GCHG.js} +2 -2
  62. package/dist/{chunk-MXCAJKMA.js → chunk-37ZQYFX4.js} +6 -6
  63. package/dist/{chunk-LW3HKRL7.js → chunk-3BTHXB7Z.js} +3 -3
  64. package/dist/{chunk-C7V3KPKJ.js → chunk-47LTKAGL.js} +2 -2
  65. package/dist/{chunk-3O5BB45T.js → chunk-4DXNOVNW.js} +10 -10
  66. package/dist/{chunk-65I2LZEK.js → chunk-4G2YCKLT.js} +2 -2
  67. package/dist/{chunk-OK52IY3W.js → chunk-4GEBLO7S.js} +10 -10
  68. package/dist/{chunk-M6C7SOR6.js → chunk-4I6PEEFA.js} +3 -3
  69. package/dist/{chunk-Z4TXB4K7.js → chunk-5BUCKFRE.js} +2 -2
  70. package/dist/{chunk-BGI4NUAO.js → chunk-5S7SNRSJ.js} +2 -2
  71. package/dist/{chunk-JVPWRNHA.js → chunk-5YR4UGF2.js} +5 -5
  72. package/dist/{chunk-YJ7MW627.js → chunk-6BG364RN.js} +2 -2
  73. package/dist/{chunk-D5BSQR63.js → chunk-76LNUSS5.js} +2 -2
  74. package/dist/{chunk-7CRUDH7G.js → chunk-77HNHT6S.js} +2 -2
  75. package/dist/{chunk-OWYHHW67.js → chunk-7XI2UJHL.js} +4 -4
  76. package/dist/{chunk-BJVO4H5C.js → chunk-7Z2UKRNJ.js} +4 -4
  77. package/dist/{chunk-2WLMWP2T.js → chunk-A3K2KKSG.js} +2 -2
  78. package/dist/chunk-A5ZYP4K5.js +130 -0
  79. package/dist/chunk-A5ZYP4K5.js.map +1 -0
  80. package/dist/{chunk-AWG3TIAY.js → chunk-ACCOC6UM.js} +2 -2
  81. package/dist/{chunk-3JDA3XF5.js → chunk-AEGNDL24.js} +2 -2
  82. package/dist/{chunk-2NAD4YCI.js → chunk-AEUMONCD.js} +2 -2
  83. package/dist/{chunk-C6U57KG4.js → chunk-AF5PW35O.js} +3 -3
  84. package/dist/{chunk-IOSZHHJC.js → chunk-ANGZWYL2.js} +6 -6
  85. package/dist/{chunk-K6T33R4Q.js → chunk-AXGJMDBS.js} +156 -7
  86. package/dist/chunk-AXGJMDBS.js.map +1 -0
  87. package/dist/{chunk-6LYAEM54.js → chunk-AXHU56C3.js} +2 -2
  88. package/dist/{chunk-GWM6T5EQ.js → chunk-BCGMG2RD.js} +2 -2
  89. package/dist/{chunk-HXCJF4XU.js → chunk-BFIZXFUG.js} +2 -2
  90. package/dist/{chunk-DBYAY6UW.js → chunk-BTOHGPHC.js} +3 -3
  91. package/dist/{chunk-5X4MXNEU.js → chunk-C6HPNPNK.js} +3 -3
  92. package/dist/{chunk-4MP7XR5J.js → chunk-CAKHZAXH.js} +2 -2
  93. package/dist/{chunk-YSBL7VPO.js → chunk-CDWFWOSZ.js} +2 -2
  94. package/dist/{chunk-QAW55ZHJ.js → chunk-CZ44FH45.js} +4 -4
  95. package/dist/{chunk-T3FMRLWQ.js → chunk-D5HQ3VEX.js} +4 -4
  96. package/dist/{chunk-S7LWX2PQ.js → chunk-DPG5HQLE.js} +4 -4
  97. package/dist/{chunk-C7ZDKWPS.js → chunk-DVSAMW5T.js} +3 -3
  98. package/dist/{chunk-WBYQA3VN.js → chunk-E5H4TM4Y.js} +3 -3
  99. package/dist/{chunk-4RL3JOB3.js → chunk-EEDI3OXB.js} +2 -2
  100. package/dist/{chunk-3TB2XQ3C.js → chunk-EUL3S3LE.js} +4 -4
  101. package/dist/{chunk-Q4AUIFUA.js → chunk-F23U5YE7.js} +7 -7
  102. package/dist/{chunk-ZZZ4I455.js → chunk-GDVORIFM.js} +2 -2
  103. package/dist/{chunk-QB57WIS6.js → chunk-GXETU7AE.js} +98 -73
  104. package/dist/chunk-GXETU7AE.js.map +1 -0
  105. package/dist/{chunk-SWBC3UER.js → chunk-HCPUVB7S.js} +3 -3
  106. package/dist/{chunk-R3X2T2LP.js → chunk-HFOY2SBG.js} +2 -2
  107. package/dist/{chunk-LU7E2MXE.js → chunk-HQCUUVG2.js} +20 -20
  108. package/dist/{chunk-FJLQXMTU.js → chunk-I6B3S62A.js} +2 -2
  109. package/dist/{chunk-RBITPCMK.js → chunk-IDSSDL4W.js} +9 -9
  110. package/dist/{chunk-OCFXVDBZ.js → chunk-IVEHY2VT.js} +54 -123
  111. package/dist/chunk-IVEHY2VT.js.map +1 -0
  112. package/dist/{chunk-B3OFQP5Y.js → chunk-IY47KPML.js} +6 -6
  113. package/dist/{chunk-AXC4WSF3.js → chunk-JDOBIFBK.js} +2 -2
  114. package/dist/{chunk-P2ODTYOF.js → chunk-JGXHQV5N.js} +3 -3
  115. package/dist/{chunk-7LNHRQKR.js → chunk-JLIGUFPF.js} +2 -2
  116. package/dist/{chunk-EDIH6X2P.js → chunk-JZ66PN72.js} +2 -2
  117. package/dist/{chunk-BLVR4WYU.js → chunk-KICEAGKM.js} +2 -2
  118. package/dist/{chunk-S2GE2K36.js → chunk-KNI4SGQE.js} +109 -96
  119. package/dist/chunk-KNI4SGQE.js.map +1 -0
  120. package/dist/{chunk-VDX2J7OX.js → chunk-KQAFEZQX.js} +2 -2
  121. package/dist/{chunk-PEBHPCX2.js → chunk-KTG23JDX.js} +2 -2
  122. package/dist/{chunk-BOZJD5PK.js → chunk-KYOZ5E6V.js} +2 -2
  123. package/dist/{chunk-2DLWLNO4.js → chunk-L3TZXELN.js} +4 -4
  124. package/dist/{chunk-VALKBYBN.js → chunk-M3N2TUZ7.js} +2 -2
  125. package/dist/{chunk-76M5OK7V.js → chunk-M7T2NKET.js} +5 -5
  126. package/dist/chunk-MSAI3Q7D.js +372 -0
  127. package/dist/chunk-MSAI3Q7D.js.map +1 -0
  128. package/dist/{chunk-Z5LP6ILP.js → chunk-MZAH3CBT.js} +2 -2
  129. package/dist/{chunk-QI7K7BZ5.js → chunk-NJW2ZG64.js} +2 -2
  130. package/dist/{chunk-CZJA2EQE.js → chunk-NSKXRTVZ.js} +2 -2
  131. package/dist/{chunk-4O4XCBOS.js → chunk-NUSQ3YEL.js} +2 -2
  132. package/dist/{chunk-4OQET73E.js → chunk-O57FCN42.js} +15 -15
  133. package/dist/{chunk-WKY7N3L7.js → chunk-OEBUAC3O.js} +10 -10
  134. package/dist/{chunk-Y23L4YJV.js → chunk-OEIA4IHU.js} +2 -2
  135. package/dist/{chunk-66DKTOBY.js → chunk-OGZC2WUX.js} +2 -2
  136. package/dist/{chunk-3SGTV7RD.js → chunk-P62DSJUK.js} +6 -6
  137. package/dist/{chunk-FKD656D2.js → chunk-PH2V7EXZ.js} +2 -2
  138. package/dist/{chunk-KKNZ7PUZ.js → chunk-QAIKLICT.js} +2 -2
  139. package/dist/{chunk-SSUDD72S.js → chunk-QPWUG2S3.js} +2 -2
  140. package/dist/{chunk-QI2E6ISQ.js → chunk-R2TVWQLR.js} +2 -2
  141. package/dist/chunk-R2TVWQLR.js.map +1 -0
  142. package/dist/{chunk-GZDTVYK2.js → chunk-R36IBI2M.js} +3 -3
  143. package/dist/{chunk-W3XXFPRI.js → chunk-R5B3OWI4.js} +64 -64
  144. package/dist/{chunk-VL4X7ZHC.js → chunk-RFIJRZ4K.js} +2 -2
  145. package/dist/{chunk-PWF4JXKD.js → chunk-RKDSELA3.js} +1 -1
  146. package/dist/chunk-RKDSELA3.js.map +1 -0
  147. package/dist/{chunk-AEHVZY3X.js → chunk-RPVHRZ5C.js} +2 -2
  148. package/dist/{chunk-X5SHE2O3.js → chunk-RVBLCU5C.js} +4 -4
  149. package/dist/{chunk-BUQKSQXL.js → chunk-S533KGX6.js} +5 -5
  150. package/dist/{chunk-STEOT4DI.js → chunk-SCPHU3RW.js} +7 -7
  151. package/dist/{chunk-LV5H6FTN.js → chunk-SFSD5Q6O.js} +3 -3
  152. package/dist/{chunk-AE5U5NMS.js → chunk-SMLKHXPF.js} +2 -2
  153. package/dist/{chunk-AEU4EQGV.js → chunk-T7R5HI6A.js} +1 -1
  154. package/dist/{chunk-H5BJWPUI.js → chunk-TVQZAQPE.js} +2 -2
  155. package/dist/{chunk-H56VY4BY.js → chunk-U36GYZ2P.js} +10 -5
  156. package/dist/chunk-U36GYZ2P.js.map +1 -0
  157. package/dist/{chunk-XOV7NRY5.js → chunk-U46P4UAR.js} +3 -3
  158. package/dist/{chunk-DZ42MDZE.js → chunk-UCJINCZT.js} +2 -2
  159. package/dist/{chunk-5E6RYRYW.js → chunk-UG5V3Z3R.js} +7 -7
  160. package/dist/{chunk-IW3RMBPB.js → chunk-VAOC6GHN.js} +2 -2
  161. package/dist/{chunk-6UQFJULG.js → chunk-VBNA2JEN.js} +2 -2
  162. package/dist/{chunk-HLB7GKGG.js → chunk-VOZNBQNL.js} +2 -2
  163. package/dist/{chunk-NYKIUQL6.js → chunk-WHIGRW7T.js} +2 -2
  164. package/dist/{chunk-AZSGSRIM.js → chunk-WHTMVTU4.js} +3 -3
  165. package/dist/{chunk-AERXJCOG.js → chunk-WL7N5VGG.js} +5 -5
  166. package/dist/{chunk-TFA6HPOA.js → chunk-WQUGCOKF.js} +4 -4
  167. package/dist/{chunk-A4VSOUCB.js → chunk-WTZQM74L.js} +5 -5
  168. package/dist/{chunk-DQEMWVMT.js → chunk-X7Y7WX73.js} +1 -1
  169. package/dist/{chunk-T2YX56QI.js → chunk-XWSUK5GL.js} +4 -4
  170. package/dist/{chunk-ACX55QDO.js → chunk-XYOT5GQU.js} +3 -3
  171. package/dist/{chunk-Z6EZCN6Z.js → chunk-Y7427SL7.js} +10 -10
  172. package/dist/{chunk-4KN2JLQV.js → chunk-YHZWVDP7.js} +2 -2
  173. package/dist/chunk-YVRQ5JRA.js +49 -0
  174. package/dist/chunk-YVRQ5JRA.js.map +1 -0
  175. package/dist/{chunk-5MNUBT7T.js → chunk-ZFTODDTX.js} +2 -2
  176. package/dist/{chunk-VVX5PZFS.js → chunk-ZHXSOMYH.js} +2 -2
  177. package/dist/{chunk-CRXRZA3G.js → chunk-ZQTYWSO3.js} +2 -2
  178. package/dist/cli.js +126 -122
  179. package/dist/coding/export-okf-codegraph.js +17 -17
  180. package/dist/compounding/engine.js +19 -19
  181. package/dist/config.d.ts.map +1 -1
  182. package/dist/config.js +27 -24
  183. package/dist/connectors/codex-materialize-runner.js +18 -18
  184. package/dist/connectors/index.js +20 -20
  185. package/dist/contradiction/index.js +3 -3
  186. package/dist/{contradiction-scan-TAGMOUQ2.js → contradiction-scan-GGRTVB7C.js} +3 -3
  187. package/dist/convergence-refresh.js +20 -20
  188. package/dist/conversation-index/backend.js +2 -2
  189. package/dist/corpus-watermark.js +20 -20
  190. package/dist/day-summary.js +2 -2
  191. package/dist/deep-recall-http-glue.js +11 -10
  192. package/dist/embedding-fallback.js +2 -2
  193. package/dist/entity-retrieval.js +19 -19
  194. package/dist/explicit-capture.js +2 -2
  195. package/dist/external-wiki-access.js +75 -73
  196. package/dist/extraction-judge.js +3 -3
  197. package/dist/extraction-normalization.js +3 -3
  198. package/dist/extraction-prompt.js +2 -2
  199. package/dist/extraction.js +32 -32
  200. package/dist/{first-start-migration-7OATHJKB.js → first-start-migration-OM3PHMZO.js} +2 -2
  201. package/dist/harmonic-retrieval.js +1 -1
  202. package/dist/index.d.ts +1 -1
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +198 -195
  205. package/dist/lcm/engine.js +4 -4
  206. package/dist/lcm/index.js +10 -10
  207. package/dist/local-llm-config.js +1 -1
  208. package/dist/local-llm.js +3 -3
  209. package/dist/location/index.js +20 -20
  210. package/dist/maintenance/memory-governance.js +18 -18
  211. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +18 -18
  212. package/dist/maintenance/rebuild-memory-projection.js +19 -19
  213. package/dist/memory-browse-operations.js +75 -73
  214. package/dist/memory-browse.js +5 -5
  215. package/dist/namespaces/migrate.js +19 -19
  216. package/dist/namespaces/principal.js +2 -2
  217. package/dist/namespaces/search.js +13 -13
  218. package/dist/namespaces/storage.js +18 -18
  219. package/dist/offline-sync-changeset-generations.d.ts +82 -0
  220. package/dist/offline-sync-changeset-generations.d.ts.map +1 -0
  221. package/dist/offline-sync-changeset-generations.js +21 -0
  222. package/dist/offline-sync-changeset-generations.js.map +1 -0
  223. package/dist/offline-sync-embedding-generation.d.ts +50 -0
  224. package/dist/offline-sync-embedding-generation.d.ts.map +1 -1
  225. package/dist/offline-sync-embedding-generation.js +4 -2
  226. package/dist/offline-sync-impression-drain.js +5 -5
  227. package/dist/offline-sync-snapshot-stream.js +5 -4
  228. package/dist/offline-sync.d.ts +12 -1
  229. package/dist/offline-sync.d.ts.map +1 -1
  230. package/dist/offline-sync.js +6 -5
  231. package/dist/operator-doctor-corpus.js +21 -21
  232. package/dist/operator-toolkit.js +39 -36
  233. package/dist/orchestration/compression-guideline-coordinator.js +2 -2
  234. package/dist/orchestration/maintenance.js +33 -33
  235. package/dist/orchestration/orchestrator-helpers.d.ts +1 -0
  236. package/dist/orchestration/orchestrator-helpers.d.ts.map +1 -1
  237. package/dist/orchestration/recall-entry.d.ts.map +1 -1
  238. package/dist/orchestration/recall-search-pipeline.d.ts.map +1 -1
  239. package/dist/orchestrator.js +168 -165
  240. package/dist/outcome-boost-config.d.ts +17 -0
  241. package/dist/outcome-boost-config.d.ts.map +1 -0
  242. package/dist/outcome-boost-config.js +1 -0
  243. package/dist/outcome-boost-config.js.map +1 -0
  244. package/dist/qmd.js +4 -4
  245. package/dist/recall-explain-renderer.js +3 -3
  246. package/dist/recall-navigate-access.js +2 -2
  247. package/dist/recall-navigate-disclosure.js +2 -2
  248. package/dist/recall-navigate.js +2 -2
  249. package/dist/recall-navigation-operations.js +75 -73
  250. package/dist/recall-navigation.js +74 -72
  251. package/dist/recall-state-view-admission.js +5 -5
  252. package/dist/recall-why-service.js +9 -9
  253. package/dist/recall-why.js +3 -3
  254. package/dist/recall-xray-cli.js +4 -4
  255. package/dist/recall-xray-renderer.js +3 -3
  256. package/dist/recall-xray.js +2 -2
  257. package/dist/rerank-outcome.d.ts +73 -0
  258. package/dist/rerank-outcome.d.ts.map +1 -0
  259. package/dist/rerank-outcome.js +28 -0
  260. package/dist/rerank-outcome.js.map +1 -0
  261. package/dist/{resolution-K4A3VPKZ.js → resolution-BROE3TRO.js} +4 -4
  262. package/dist/resolution-BROE3TRO.js.map +1 -0
  263. package/dist/resume-bundles.js +28 -25
  264. package/dist/search/embed-helper.js +2 -2
  265. package/dist/search/factory.js +12 -12
  266. package/dist/search/index.js +18 -18
  267. package/dist/search/lancedb-backend.js +2 -2
  268. package/dist/search/meilisearch-backend.js +2 -2
  269. package/dist/search/orama-backend.js +2 -2
  270. package/dist/semantic-consolidation.js +19 -19
  271. package/dist/semantic-rule-promotion.js +18 -18
  272. package/dist/semantic-rule-verifier.js +18 -18
  273. package/dist/shared-context/manager.js +2 -2
  274. package/dist/source-agent-qualifier.js +26 -26
  275. package/dist/standup/build.js +18 -18
  276. package/dist/storage.js +17 -17
  277. package/dist/summarizer.js +4 -4
  278. package/dist/support-passport/index.js +77 -75
  279. package/dist/support-passport/offline-sync-guard.d.ts +6 -2
  280. package/dist/support-passport/offline-sync-guard.d.ts.map +1 -1
  281. package/dist/{tier-stats-VF6DS52E.js → tier-stats-M2FMMD2N.js} +2 -2
  282. package/dist/transfer/backup.js +2 -2
  283. package/dist/transfer/capsule-export.js +2 -2
  284. package/dist/transfer/capsule-import.js +2 -2
  285. package/dist/transfer/export-okf.js +18 -18
  286. package/dist/types.d.ts +4 -2
  287. package/dist/types.d.ts.map +1 -1
  288. package/dist/types.js +1 -1
  289. package/dist/verified-recall.js +18 -18
  290. package/dist/who-knows-cli.js +19 -19
  291. package/dist/who-knows.js +18 -18
  292. package/package.json +13 -3
  293. package/src/access-mcp-output-schemas.ts +2 -0
  294. package/src/access-recall-corpus-versions.ts +59 -0
  295. package/src/access-recall-response.ts +3 -0
  296. package/src/access-recall-surface.ts +22 -23
  297. package/src/access-service-raw-excerpt-read-gate.test.ts +1 -1
  298. package/src/access-service.ts +3 -0
  299. package/src/capabilities.test.ts +1 -0
  300. package/src/capabilities.ts +6 -8
  301. package/src/config.ts +3 -0
  302. package/src/index.ts +1 -1
  303. package/src/offline-sync-changeset-generations.test.ts +962 -0
  304. package/src/offline-sync-changeset-generations.ts +549 -0
  305. package/src/offline-sync-embedding-generation.ts +272 -4
  306. package/src/offline-sync.ts +75 -162
  307. package/src/orchestration/orchestrator-helpers.ts +1 -1
  308. package/src/orchestration/recall-entry.ts +32 -16
  309. package/src/orchestration/recall-internal.ts +2 -2
  310. package/src/orchestration/recall-search-pipeline.ts +3 -0
  311. package/src/outcome-boost-config.ts +16 -0
  312. package/src/recall-retrieval-failure.test.ts +456 -4
  313. package/src/rerank-outcome.test.ts +218 -0
  314. package/src/rerank-outcome.ts +219 -0
  315. package/src/support-passport/offline-sync-guard.ts +16 -2
  316. package/src/types.ts +3 -3
  317. package/dist/chunk-H56VY4BY.js.map +0 -1
  318. package/dist/chunk-K6T33R4Q.js.map +0 -1
  319. package/dist/chunk-MCTM4YPL.js.map +0 -1
  320. package/dist/chunk-OCFXVDBZ.js.map +0 -1
  321. package/dist/chunk-PWF4JXKD.js.map +0 -1
  322. package/dist/chunk-QB57WIS6.js.map +0 -1
  323. package/dist/chunk-QI2E6ISQ.js.map +0 -1
  324. package/dist/chunk-S2GE2K36.js.map +0 -1
  325. /package/dist/{capsule-crypto-YO5QJ6L3.js.map → access-recall-corpus-versions.js.map} +0 -0
  326. /package/dist/{auto-sync-U5N3CB5Y.js.map → auto-sync-PAWBFQWL.js.map} +0 -0
  327. /package/dist/{contradiction-scan-TAGMOUQ2.js.map → capsule-crypto-7FJQINUR.js.map} +0 -0
  328. /package/dist/{chunk-RDJ6C7NZ.js.map → chunk-2IWBHZ3H.js.map} +0 -0
  329. /package/dist/{chunk-UP75KL3L.js.map → chunk-2JRB3Z5N.js.map} +0 -0
  330. /package/dist/{chunk-BXLOS5AJ.js.map → chunk-2NLLXCJG.js.map} +0 -0
  331. /package/dist/{chunk-KN6CIN7I.js.map → chunk-32HO62I4.js.map} +0 -0
  332. /package/dist/{chunk-JLPNONPH.js.map → chunk-35A7GCHG.js.map} +0 -0
  333. /package/dist/{chunk-MXCAJKMA.js.map → chunk-37ZQYFX4.js.map} +0 -0
  334. /package/dist/{chunk-LW3HKRL7.js.map → chunk-3BTHXB7Z.js.map} +0 -0
  335. /package/dist/{chunk-C7V3KPKJ.js.map → chunk-47LTKAGL.js.map} +0 -0
  336. /package/dist/{chunk-3O5BB45T.js.map → chunk-4DXNOVNW.js.map} +0 -0
  337. /package/dist/{chunk-65I2LZEK.js.map → chunk-4G2YCKLT.js.map} +0 -0
  338. /package/dist/{chunk-OK52IY3W.js.map → chunk-4GEBLO7S.js.map} +0 -0
  339. /package/dist/{chunk-M6C7SOR6.js.map → chunk-4I6PEEFA.js.map} +0 -0
  340. /package/dist/{chunk-Z4TXB4K7.js.map → chunk-5BUCKFRE.js.map} +0 -0
  341. /package/dist/{chunk-BGI4NUAO.js.map → chunk-5S7SNRSJ.js.map} +0 -0
  342. /package/dist/{chunk-JVPWRNHA.js.map → chunk-5YR4UGF2.js.map} +0 -0
  343. /package/dist/{chunk-YJ7MW627.js.map → chunk-6BG364RN.js.map} +0 -0
  344. /package/dist/{chunk-D5BSQR63.js.map → chunk-76LNUSS5.js.map} +0 -0
  345. /package/dist/{chunk-7CRUDH7G.js.map → chunk-77HNHT6S.js.map} +0 -0
  346. /package/dist/{chunk-OWYHHW67.js.map → chunk-7XI2UJHL.js.map} +0 -0
  347. /package/dist/{chunk-BJVO4H5C.js.map → chunk-7Z2UKRNJ.js.map} +0 -0
  348. /package/dist/{chunk-2WLMWP2T.js.map → chunk-A3K2KKSG.js.map} +0 -0
  349. /package/dist/{chunk-AWG3TIAY.js.map → chunk-ACCOC6UM.js.map} +0 -0
  350. /package/dist/{chunk-3JDA3XF5.js.map → chunk-AEGNDL24.js.map} +0 -0
  351. /package/dist/{chunk-2NAD4YCI.js.map → chunk-AEUMONCD.js.map} +0 -0
  352. /package/dist/{chunk-C6U57KG4.js.map → chunk-AF5PW35O.js.map} +0 -0
  353. /package/dist/{chunk-IOSZHHJC.js.map → chunk-ANGZWYL2.js.map} +0 -0
  354. /package/dist/{chunk-6LYAEM54.js.map → chunk-AXHU56C3.js.map} +0 -0
  355. /package/dist/{chunk-GWM6T5EQ.js.map → chunk-BCGMG2RD.js.map} +0 -0
  356. /package/dist/{chunk-HXCJF4XU.js.map → chunk-BFIZXFUG.js.map} +0 -0
  357. /package/dist/{chunk-DBYAY6UW.js.map → chunk-BTOHGPHC.js.map} +0 -0
  358. /package/dist/{chunk-5X4MXNEU.js.map → chunk-C6HPNPNK.js.map} +0 -0
  359. /package/dist/{chunk-4MP7XR5J.js.map → chunk-CAKHZAXH.js.map} +0 -0
  360. /package/dist/{chunk-YSBL7VPO.js.map → chunk-CDWFWOSZ.js.map} +0 -0
  361. /package/dist/{chunk-QAW55ZHJ.js.map → chunk-CZ44FH45.js.map} +0 -0
  362. /package/dist/{chunk-T3FMRLWQ.js.map → chunk-D5HQ3VEX.js.map} +0 -0
  363. /package/dist/{chunk-S7LWX2PQ.js.map → chunk-DPG5HQLE.js.map} +0 -0
  364. /package/dist/{chunk-C7ZDKWPS.js.map → chunk-DVSAMW5T.js.map} +0 -0
  365. /package/dist/{chunk-WBYQA3VN.js.map → chunk-E5H4TM4Y.js.map} +0 -0
  366. /package/dist/{chunk-4RL3JOB3.js.map → chunk-EEDI3OXB.js.map} +0 -0
  367. /package/dist/{chunk-3TB2XQ3C.js.map → chunk-EUL3S3LE.js.map} +0 -0
  368. /package/dist/{chunk-Q4AUIFUA.js.map → chunk-F23U5YE7.js.map} +0 -0
  369. /package/dist/{chunk-ZZZ4I455.js.map → chunk-GDVORIFM.js.map} +0 -0
  370. /package/dist/{chunk-SWBC3UER.js.map → chunk-HCPUVB7S.js.map} +0 -0
  371. /package/dist/{chunk-R3X2T2LP.js.map → chunk-HFOY2SBG.js.map} +0 -0
  372. /package/dist/{chunk-LU7E2MXE.js.map → chunk-HQCUUVG2.js.map} +0 -0
  373. /package/dist/{chunk-FJLQXMTU.js.map → chunk-I6B3S62A.js.map} +0 -0
  374. /package/dist/{chunk-RBITPCMK.js.map → chunk-IDSSDL4W.js.map} +0 -0
  375. /package/dist/{chunk-B3OFQP5Y.js.map → chunk-IY47KPML.js.map} +0 -0
  376. /package/dist/{chunk-AXC4WSF3.js.map → chunk-JDOBIFBK.js.map} +0 -0
  377. /package/dist/{chunk-P2ODTYOF.js.map → chunk-JGXHQV5N.js.map} +0 -0
  378. /package/dist/{chunk-7LNHRQKR.js.map → chunk-JLIGUFPF.js.map} +0 -0
  379. /package/dist/{chunk-EDIH6X2P.js.map → chunk-JZ66PN72.js.map} +0 -0
  380. /package/dist/{chunk-BLVR4WYU.js.map → chunk-KICEAGKM.js.map} +0 -0
  381. /package/dist/{chunk-VDX2J7OX.js.map → chunk-KQAFEZQX.js.map} +0 -0
  382. /package/dist/{chunk-PEBHPCX2.js.map → chunk-KTG23JDX.js.map} +0 -0
  383. /package/dist/{chunk-BOZJD5PK.js.map → chunk-KYOZ5E6V.js.map} +0 -0
  384. /package/dist/{chunk-2DLWLNO4.js.map → chunk-L3TZXELN.js.map} +0 -0
  385. /package/dist/{chunk-VALKBYBN.js.map → chunk-M3N2TUZ7.js.map} +0 -0
  386. /package/dist/{chunk-76M5OK7V.js.map → chunk-M7T2NKET.js.map} +0 -0
  387. /package/dist/{chunk-Z5LP6ILP.js.map → chunk-MZAH3CBT.js.map} +0 -0
  388. /package/dist/{chunk-QI7K7BZ5.js.map → chunk-NJW2ZG64.js.map} +0 -0
  389. /package/dist/{chunk-CZJA2EQE.js.map → chunk-NSKXRTVZ.js.map} +0 -0
  390. /package/dist/{chunk-4O4XCBOS.js.map → chunk-NUSQ3YEL.js.map} +0 -0
  391. /package/dist/{chunk-4OQET73E.js.map → chunk-O57FCN42.js.map} +0 -0
  392. /package/dist/{chunk-WKY7N3L7.js.map → chunk-OEBUAC3O.js.map} +0 -0
  393. /package/dist/{chunk-Y23L4YJV.js.map → chunk-OEIA4IHU.js.map} +0 -0
  394. /package/dist/{chunk-66DKTOBY.js.map → chunk-OGZC2WUX.js.map} +0 -0
  395. /package/dist/{chunk-3SGTV7RD.js.map → chunk-P62DSJUK.js.map} +0 -0
  396. /package/dist/{chunk-FKD656D2.js.map → chunk-PH2V7EXZ.js.map} +0 -0
  397. /package/dist/{chunk-KKNZ7PUZ.js.map → chunk-QAIKLICT.js.map} +0 -0
  398. /package/dist/{chunk-SSUDD72S.js.map → chunk-QPWUG2S3.js.map} +0 -0
  399. /package/dist/{chunk-GZDTVYK2.js.map → chunk-R36IBI2M.js.map} +0 -0
  400. /package/dist/{chunk-W3XXFPRI.js.map → chunk-R5B3OWI4.js.map} +0 -0
  401. /package/dist/{chunk-VL4X7ZHC.js.map → chunk-RFIJRZ4K.js.map} +0 -0
  402. /package/dist/{chunk-AEHVZY3X.js.map → chunk-RPVHRZ5C.js.map} +0 -0
  403. /package/dist/{chunk-X5SHE2O3.js.map → chunk-RVBLCU5C.js.map} +0 -0
  404. /package/dist/{chunk-BUQKSQXL.js.map → chunk-S533KGX6.js.map} +0 -0
  405. /package/dist/{chunk-STEOT4DI.js.map → chunk-SCPHU3RW.js.map} +0 -0
  406. /package/dist/{chunk-LV5H6FTN.js.map → chunk-SFSD5Q6O.js.map} +0 -0
  407. /package/dist/{chunk-AE5U5NMS.js.map → chunk-SMLKHXPF.js.map} +0 -0
  408. /package/dist/{chunk-AEU4EQGV.js.map → chunk-T7R5HI6A.js.map} +0 -0
  409. /package/dist/{chunk-H5BJWPUI.js.map → chunk-TVQZAQPE.js.map} +0 -0
  410. /package/dist/{chunk-XOV7NRY5.js.map → chunk-U46P4UAR.js.map} +0 -0
  411. /package/dist/{chunk-DZ42MDZE.js.map → chunk-UCJINCZT.js.map} +0 -0
  412. /package/dist/{chunk-5E6RYRYW.js.map → chunk-UG5V3Z3R.js.map} +0 -0
  413. /package/dist/{chunk-IW3RMBPB.js.map → chunk-VAOC6GHN.js.map} +0 -0
  414. /package/dist/{chunk-6UQFJULG.js.map → chunk-VBNA2JEN.js.map} +0 -0
  415. /package/dist/{chunk-HLB7GKGG.js.map → chunk-VOZNBQNL.js.map} +0 -0
  416. /package/dist/{chunk-NYKIUQL6.js.map → chunk-WHIGRW7T.js.map} +0 -0
  417. /package/dist/{chunk-AZSGSRIM.js.map → chunk-WHTMVTU4.js.map} +0 -0
  418. /package/dist/{chunk-AERXJCOG.js.map → chunk-WL7N5VGG.js.map} +0 -0
  419. /package/dist/{chunk-TFA6HPOA.js.map → chunk-WQUGCOKF.js.map} +0 -0
  420. /package/dist/{chunk-A4VSOUCB.js.map → chunk-WTZQM74L.js.map} +0 -0
  421. /package/dist/{chunk-DQEMWVMT.js.map → chunk-X7Y7WX73.js.map} +0 -0
  422. /package/dist/{chunk-T2YX56QI.js.map → chunk-XWSUK5GL.js.map} +0 -0
  423. /package/dist/{chunk-ACX55QDO.js.map → chunk-XYOT5GQU.js.map} +0 -0
  424. /package/dist/{chunk-Z6EZCN6Z.js.map → chunk-Y7427SL7.js.map} +0 -0
  425. /package/dist/{chunk-4KN2JLQV.js.map → chunk-YHZWVDP7.js.map} +0 -0
  426. /package/dist/{chunk-5MNUBT7T.js.map → chunk-ZFTODDTX.js.map} +0 -0
  427. /package/dist/{chunk-VVX5PZFS.js.map → chunk-ZHXSOMYH.js.map} +0 -0
  428. /package/dist/{chunk-CRXRZA3G.js.map → chunk-ZQTYWSO3.js.map} +0 -0
  429. /package/dist/{resolution-K4A3VPKZ.js.map → contradiction-scan-GGRTVB7C.js.map} +0 -0
  430. /package/dist/{first-start-migration-7OATHJKB.js.map → first-start-migration-OM3PHMZO.js.map} +0 -0
  431. /package/dist/{tier-stats-VF6DS52E.js.map → tier-stats-M2FMMD2N.js.map} +0 -0
@@ -0,0 +1,130 @@
1
+ import {
2
+ memoryForResult
3
+ } from "./chunk-D3V3UMET.js";
4
+ import {
5
+ coerceNumber
6
+ } from "./chunk-PQVCH2AE.js";
7
+ import {
8
+ resolveRecallEnhancementCapabilities
9
+ } from "./chunk-2EMROIXS.js";
10
+
11
+ // src/rerank-outcome.ts
12
+ var OUTCOME_STATE_UNOBSERVED = "UNOBSERVED";
13
+ var OUTCOME_STATE_OBSERVED = "OBSERVED";
14
+ function scaleTextScore(score) {
15
+ if (!Number.isFinite(score) || score <= 0) return 0;
16
+ if (score >= 1) return 1;
17
+ return score;
18
+ }
19
+ function finiteNonNegative(value) {
20
+ if (value === void 0) return void 0;
21
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 0) return void 0;
22
+ return value;
23
+ }
24
+ function resolveOutcomeObservation(counters) {
25
+ if (!counters) return { state: OUTCOME_STATE_UNOBSERVED };
26
+ const successPresent = counters.success !== void 0;
27
+ const failPresent = counters.fail !== void 0;
28
+ if (!successPresent && !failPresent) return { state: OUTCOME_STATE_UNOBSERVED };
29
+ const success = finiteNonNegative(counters.success);
30
+ const fail = finiteNonNegative(counters.fail);
31
+ if (successPresent && success === void 0) return { state: OUTCOME_STATE_UNOBSERVED };
32
+ if (failPresent && fail === void 0) return { state: OUTCOME_STATE_UNOBSERVED };
33
+ const successes = success ?? 0;
34
+ const failures = fail ?? 0;
35
+ if (successes === 0 && failures === 0) return { state: OUTCOME_STATE_UNOBSERVED };
36
+ return {
37
+ state: OUTCOME_STATE_OBSERVED,
38
+ outcomeScore: successes / (successes + failures)
39
+ };
40
+ }
41
+ function blendOutcomeScore(textScore, observation, weight) {
42
+ if (weight === 0) return textScore;
43
+ const textUnit = scaleTextScore(textScore);
44
+ if (observation.state === OUTCOME_STATE_UNOBSERVED || observation.outcomeScore === void 0) {
45
+ return textUnit;
46
+ }
47
+ return (1 - weight) * textUnit + weight * observation.outcomeScore;
48
+ }
49
+ function assertOutcomeWeight(weight) {
50
+ if (!Number.isFinite(weight) || weight < 0 || weight > 1) {
51
+ throw new Error(
52
+ `outcomeBoostWeight must be a finite number in [0, 1] (got ${JSON.stringify(weight)}).`
53
+ );
54
+ }
55
+ }
56
+ function compareRanked(left, right) {
57
+ const leftScore = Number.isFinite(left.score) ? left.score : Number.NEGATIVE_INFINITY;
58
+ const rightScore = Number.isFinite(right.score) ? right.score : Number.NEGATIVE_INFINITY;
59
+ if (leftScore !== rightScore) return leftScore > rightScore ? -1 : 1;
60
+ if (left.originalIndex === right.originalIndex) return 0;
61
+ return left.originalIndex < right.originalIndex ? -1 : 1;
62
+ }
63
+ function rerankWithOutcomePrior(candidates, weight) {
64
+ assertOutcomeWeight(weight);
65
+ const ranked = candidates.map((candidate, originalIndex) => {
66
+ const observation = resolveOutcomeObservation({
67
+ success: candidate.success,
68
+ fail: candidate.fail
69
+ });
70
+ return {
71
+ item: candidate.item,
72
+ textScore: candidate.textScore,
73
+ score: blendOutcomeScore(candidate.textScore, observation, weight),
74
+ state: observation.state,
75
+ originalIndex
76
+ };
77
+ });
78
+ if (weight === 0) return ranked;
79
+ ranked.sort(compareRanked);
80
+ return ranked;
81
+ }
82
+ function outcomePriorBoostActive(config) {
83
+ const weight = config.outcomeBoostWeight;
84
+ return resolveRecallEnhancementCapabilities(config).outcomeBoost === true && typeof weight === "number" && Number.isFinite(weight) && weight > 0;
85
+ }
86
+ function applyOutcomePriorScores(results, memoryByPath, config) {
87
+ const weight = config.outcomeBoostWeight;
88
+ if (typeof weight !== "number" || !Number.isFinite(weight) || weight < 0) return;
89
+ assertOutcomeWeight(weight);
90
+ if (weight === 0) return;
91
+ const ranked = results.map((result, originalIndex) => {
92
+ const memory = memoryForResult(memoryByPath, result);
93
+ const observation = resolveOutcomeObservation(
94
+ memory ? { success: memory.frontmatter.mw_success, fail: memory.frontmatter.mw_fail } : void 0
95
+ );
96
+ return {
97
+ result,
98
+ originalIndex,
99
+ score: blendOutcomeScore(result.score, observation, weight)
100
+ };
101
+ });
102
+ ranked.sort(compareRanked);
103
+ const next = ranked.map(
104
+ (row) => row.score === row.result.score ? row.result : { ...row.result, score: row.score }
105
+ );
106
+ results.splice(0, results.length, ...next);
107
+ }
108
+ function parseOutcomeBoostWeight(raw) {
109
+ if (raw === void 0 || raw === null || raw === "") return 0;
110
+ const parsed = coerceNumber(raw, "outcomeBoostWeight");
111
+ if (parsed === void 0 || parsed < 0 || parsed > 1) {
112
+ throw new Error(
113
+ `outcomeBoostWeight must be a number in [0, 1] (got ${JSON.stringify(raw)}).`
114
+ );
115
+ }
116
+ return parsed;
117
+ }
118
+
119
+ export {
120
+ OUTCOME_STATE_UNOBSERVED,
121
+ OUTCOME_STATE_OBSERVED,
122
+ scaleTextScore,
123
+ resolveOutcomeObservation,
124
+ blendOutcomeScore,
125
+ rerankWithOutcomePrior,
126
+ outcomePriorBoostActive,
127
+ applyOutcomePriorScores,
128
+ parseOutcomeBoostWeight
129
+ };
130
+ //# sourceMappingURL=chunk-A5ZYP4K5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/rerank-outcome.ts"],"sourcesContent":["/**\n * H1 outcome-prior blend (issue #1958). Scaffolding only — no experiment runner.\n *\n * Text scores map onto [0, 1] with a fixed clamp. The clamp is not a batch\n * min-max, so one candidate cannot move another's scale.\n *\n * UNOBSERVED (no past result) keeps that unit text score when the weight is\n * positive. It does not use the Memory Worth Laplace prior (s+1)/(s+f+2).\n * An observed result uses the maximum-likelihood rate success/(success+fail).\n *\n * Turning the blend on (enabled and weight > 0) clamps every candidate's text\n * score into [0, 1] before mixing, including UNOBSERVED items. Raw scores\n * outside that range can change order relative to the weight-0 path. Weight 0\n * does not clamp.\n *\n * Weight 0 is an identity on the raw input score: same values, same order.\n * The recall pipeline calls `applyOutcomePriorScores` only when\n * `outcomeBoostEnabled === true` and the weight is greater than 0, so the\n * production default stays on the existing sort.\n */\n\nimport {\n type RecallEnhancementConfigProjection,\n resolveRecallEnhancementCapabilities,\n} from \"./capabilities.js\";\nimport { coerceNumber } from \"./connectors/coerce.js\";\nimport { memoryForResult } from \"./recall-memory-map.js\";\nimport type { MemoryFile, QmdSearchResult } from \"./types.js\";\n\nexport const OUTCOME_STATE_UNOBSERVED = \"UNOBSERVED\" as const;\nexport const OUTCOME_STATE_OBSERVED = \"OBSERVED\" as const;\n\nexport type OutcomeObservationState =\n | typeof OUTCOME_STATE_UNOBSERVED\n | typeof OUTCOME_STATE_OBSERVED;\n\nexport interface OutcomeCounters {\n success?: number;\n fail?: number;\n}\n\nexport interface OutcomeObservation {\n state: OutcomeObservationState;\n /** Present only for OBSERVED. Maximum-likelihood rate in [0, 1]. */\n outcomeScore?: number;\n}\n\nexport function scaleTextScore(score: number): number {\n if (!Number.isFinite(score) || score <= 0) return 0;\n if (score >= 1) return 1;\n return score;\n}\n\nfunction finiteNonNegative(value: number | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) return undefined;\n return value;\n}\n\n/**\n * Both counters missing, explicit 0+0, or any present-but-invalid counter\n * (non-finite or negative) is UNOBSERVED. One counter present and positive\n * with the other missing is OBSERVED; the missing counter counts as 0.\n */\nexport function resolveOutcomeObservation(\n counters: OutcomeCounters | undefined,\n): OutcomeObservation {\n if (!counters) return { state: OUTCOME_STATE_UNOBSERVED };\n const successPresent = counters.success !== undefined;\n const failPresent = counters.fail !== undefined;\n if (!successPresent && !failPresent) return { state: OUTCOME_STATE_UNOBSERVED };\n\n const success = finiteNonNegative(counters.success);\n const fail = finiteNonNegative(counters.fail);\n if (successPresent && success === undefined) return { state: OUTCOME_STATE_UNOBSERVED };\n if (failPresent && fail === undefined) return { state: OUTCOME_STATE_UNOBSERVED };\n\n const successes = success ?? 0;\n const failures = fail ?? 0;\n if (successes === 0 && failures === 0) return { state: OUTCOME_STATE_UNOBSERVED };\n return {\n state: OUTCOME_STATE_OBSERVED,\n outcomeScore: successes / (successes + failures),\n };\n}\n\n/**\n * Weight 0 returns `textScore` unchanged. A positive weight clamps `textScore`\n * into [0, 1] first. UNOBSERVED stays on that clamped value. OBSERVED mixes it\n * with the success rate.\n */\nexport function blendOutcomeScore(\n textScore: number,\n observation: OutcomeObservation,\n weight: number,\n): number {\n if (weight === 0) return textScore;\n const textUnit = scaleTextScore(textScore);\n if (observation.state === OUTCOME_STATE_UNOBSERVED || observation.outcomeScore === undefined) {\n return textUnit;\n }\n return (1 - weight) * textUnit + weight * observation.outcomeScore;\n}\n\nexport interface OutcomePriorCandidate<T> {\n item: T;\n textScore: number;\n success?: number;\n fail?: number;\n}\n\nexport interface OutcomePriorRanked<T> {\n item: T;\n textScore: number;\n score: number;\n state: OutcomeObservationState;\n originalIndex: number;\n}\n\nfunction assertOutcomeWeight(weight: number): void {\n if (!Number.isFinite(weight) || weight < 0 || weight > 1) {\n throw new Error(\n `outcomeBoostWeight must be a finite number in [0, 1] (got ${JSON.stringify(weight)}).`,\n );\n }\n}\n\nfunction compareRanked(\n left: { score: number; originalIndex: number },\n right: { score: number; originalIndex: number },\n): number {\n const leftScore = Number.isFinite(left.score) ? left.score : Number.NEGATIVE_INFINITY;\n const rightScore = Number.isFinite(right.score) ? right.score : Number.NEGATIVE_INFINITY;\n if (leftScore !== rightScore) return leftScore > rightScore ? -1 : 1;\n if (left.originalIndex === right.originalIndex) return 0;\n return left.originalIndex < right.originalIndex ? -1 : 1;\n}\n\nexport function rerankWithOutcomePrior<T>(\n candidates: readonly OutcomePriorCandidate<T>[],\n weight: number,\n): OutcomePriorRanked<T>[] {\n assertOutcomeWeight(weight);\n const ranked = candidates.map((candidate, originalIndex) => {\n const observation = resolveOutcomeObservation({\n success: candidate.success,\n fail: candidate.fail,\n });\n return {\n item: candidate.item,\n textScore: candidate.textScore,\n score: blendOutcomeScore(candidate.textScore, observation, weight),\n state: observation.state,\n originalIndex,\n };\n });\n if (weight === 0) return ranked;\n ranked.sort(compareRanked);\n return ranked;\n}\n\nexport function outcomePriorBoostActive(\n config: RecallEnhancementConfigProjection & { outcomeBoostWeight?: number },\n): boolean {\n const weight = config.outcomeBoostWeight;\n return (\n resolveRecallEnhancementCapabilities(config).outcomeBoost === true &&\n typeof weight === \"number\" &&\n Number.isFinite(weight) &&\n weight > 0\n );\n}\n\nexport function applyOutcomePriorScores(\n results: QmdSearchResult[],\n memoryByPath: ReadonlyMap<string, MemoryFile>,\n config: { outcomeBoostWeight?: number },\n): void {\n const weight = config.outcomeBoostWeight;\n // Non-numbers, non-finite values, and negatives are a no-op. Zero is an\n // identity. assertOutcomeWeight is the upper bound (> 1 throws); it is not\n // a second copy of the positivity check.\n if (typeof weight !== \"number\" || !Number.isFinite(weight) || weight < 0) return;\n assertOutcomeWeight(weight);\n if (weight === 0) return;\n const ranked = results.map((result, originalIndex) => {\n const memory = memoryForResult(memoryByPath, result);\n const observation = resolveOutcomeObservation(\n memory\n ? { success: memory.frontmatter.mw_success, fail: memory.frontmatter.mw_fail }\n : undefined,\n );\n return {\n result,\n originalIndex,\n score: blendOutcomeScore(result.score, observation, weight),\n };\n });\n ranked.sort(compareRanked);\n const next = ranked.map((row) =>\n row.score === row.result.score ? row.result : { ...row.result, score: row.score },\n );\n results.splice(0, results.length, ...next);\n}\n\n/**\n * Absent / null / exact empty string → 0. A present value that is not a\n * finite number in [0, 1] throws. Boolean false is not a zero weight.\n */\nexport function parseOutcomeBoostWeight(raw: unknown): number {\n if (raw === undefined || raw === null || raw === \"\") return 0;\n const parsed = coerceNumber(raw, \"outcomeBoostWeight\");\n if (parsed === undefined || parsed < 0 || parsed > 1) {\n throw new Error(\n `outcomeBoostWeight must be a number in [0, 1] (got ${JSON.stringify(raw)}).`,\n );\n }\n return parsed;\n}\n"],"mappings":"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","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-TBBDFYXW.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-STEOT4DI.js";
6
+ } from "./chunk-SCPHU3RW.js";
7
7
  import {
8
8
  bumpMemoryCorpusVersionForDir
9
9
  } from "./chunk-XCB6QDL6.js";
@@ -765,4 +765,4 @@ export {
765
765
  listMemoryGovernanceRuns,
766
766
  readMemoryGovernanceRunArtifact
767
767
  };
768
- //# sourceMappingURL=chunk-AWG3TIAY.js.map
768
+ //# sourceMappingURL=chunk-ACCOC6UM.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EXTRACTION_RESPONSE_PLACEHOLDERS
3
- } from "./chunk-7LNHRQKR.js";
3
+ } from "./chunk-JLIGUFPF.js";
4
4
  import {
5
5
  normalizeRecallTokens
6
6
  } from "./chunk-YCVB7X56.js";
@@ -69,4 +69,4 @@ export {
69
69
  extractionAttributes,
70
70
  extractionCueAnchors
71
71
  };
72
- //# sourceMappingURL=chunk-3JDA3XF5.js.map
72
+ //# sourceMappingURL=chunk-AEGNDL24.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-STEOT4DI.js";
3
+ } from "./chunk-SCPHU3RW.js";
4
4
  import {
5
5
  getCachedRuleMemories,
6
6
  setCachedRuleMemories
@@ -119,4 +119,4 @@ export {
119
119
  compareVerifiedSemanticRuleResults,
120
120
  searchVerifiedSemanticRules
121
121
  };
122
- //# sourceMappingURL=chunk-2NAD4YCI.js.map
122
+ //# sourceMappingURL=chunk-AEUMONCD.js.map
@@ -8,10 +8,10 @@ import {
8
8
  } from "./chunk-N7QV3CMX.js";
9
9
  import {
10
10
  offlineSyncStorageForSnapshot
11
- } from "./chunk-UP75KL3L.js";
11
+ } from "./chunk-2JRB3Z5N.js";
12
12
  import {
13
13
  iterateOfflineSyncSnapshotFileRecords
14
- } from "./chunk-OCFXVDBZ.js";
14
+ } from "./chunk-IVEHY2VT.js";
15
15
  import {
16
16
  createPersistedSupportPassportPrivateFileExclusion
17
17
  } from "./chunk-PWPIERBM.js";
@@ -250,4 +250,4 @@ export {
250
250
  retainExcludedClassifications,
251
251
  createOfflineSyncManifestStream
252
252
  };
253
- //# sourceMappingURL=chunk-C6U57KG4.js.map
253
+ //# sourceMappingURL=chunk-AF5PW35O.js.map
@@ -24,7 +24,7 @@ import {
24
24
  } from "./chunk-E4RMZGRS.js";
25
25
  import {
26
26
  RECALL_WHY_MCP_TOOLS
27
- } from "./chunk-AZSGSRIM.js";
27
+ } from "./chunk-WHTMVTU4.js";
28
28
  import {
29
29
  sharedContextMcpTools
30
30
  } from "./chunk-JATHBCAV.js";
@@ -43,19 +43,19 @@ import {
43
43
  } from "./chunk-AB3A7EFH.js";
44
44
  import {
45
45
  applyToolOutputSchemas
46
- } from "./chunk-MCTM4YPL.js";
46
+ } from "./chunk-2FLFJTCI.js";
47
47
  import {
48
48
  getOperation
49
- } from "./chunk-QB57WIS6.js";
49
+ } from "./chunk-GXETU7AE.js";
50
50
  import {
51
51
  WHO_KNOWS_MCP_TOOLS
52
- } from "./chunk-6UQFJULG.js";
52
+ } from "./chunk-VBNA2JEN.js";
53
53
  import {
54
54
  PROMOTION_CANDIDATES_MCP_TOOLS
55
55
  } from "./chunk-PO7NXNGC.js";
56
56
  import {
57
57
  validateRequest
58
- } from "./chunk-LW3HKRL7.js";
58
+ } from "./chunk-3BTHXB7Z.js";
59
59
  import {
60
60
  assertOperationAllowed,
61
61
  capabilityAllowsOp,
@@ -4023,4 +4023,4 @@ export {
4023
4023
  MCP_MIGRATED_OPERATIONS,
4024
4024
  EngramMcpServer
4025
4025
  };
4026
- //# sourceMappingURL=chunk-IOSZHHJC.js.map
4026
+ //# sourceMappingURL=chunk-ANGZWYL2.js.map
@@ -1,12 +1,12 @@
1
+ import {
2
+ EMBEDDING_SHARD_FILE_PATTERN
3
+ } from "./chunk-TYT4TEQV.js";
1
4
  import {
2
5
  matchesOfflineSyncDefaultExclude
3
6
  } from "./chunk-4NSLQ7EU.js";
4
7
  import {
5
8
  resolveSafeArchiveTarget
6
9
  } from "./chunk-GCGJW34D.js";
7
- import {
8
- EMBEDDING_SHARD_FILE_PATTERN
9
- } from "./chunk-TYT4TEQV.js";
10
10
  import {
11
11
  assertEmbeddingGenerationLockHeld,
12
12
  embeddingGenerationLockPath,
@@ -151,6 +151,7 @@ async function applyEmbeddingGenerationTransaction(input) {
151
151
  if (await store.recoverIfInterrupted(fence)) {
152
152
  await resolveSafeArchiveTarget(root, shardDirRel);
153
153
  }
154
+ const justifiedRemovals = input.justifiedRemovals ?? /* @__PURE__ */ new Set();
154
155
  const baseStates = baseStatesForGeneration(input.baseStates, shardDirRel);
155
156
  if (baseStates.size > 0) {
156
157
  const localCensus = await censusGenerationState(io, root, markerRel, markerAbs, shardDirAbs, shardDirRel);
@@ -158,10 +159,18 @@ async function applyEmbeddingGenerationTransaction(input) {
158
159
  const censusArr = [...localCensus].map(([relPath, sha256]) => ({ path: relPath, sha256 }));
159
160
  const deferrals = divergedEmbeddingGenerationDeferrals({
160
161
  incomingFiles: incomingGenerationStates(input),
161
- baseFiles: baseArr,
162
+ // A pre-authorized removal keeps its base entry only while still on
163
+ // disk (digest auth): present members are compared normally — a
164
+ // daemon rewrite still defers — while an absent member is already
165
+ // applied and must not diverge the retry (#3150 review).
166
+ baseFiles: baseArr.filter((member) => !justifiedRemovals.has(member.path) || localCensus.has(member.path)),
162
167
  currentFiles: censusArr
163
168
  });
164
- const addedOrRemovedSinceBase = censusArr.some((member) => !baseStates.has(member.path)) || baseArr.some((member) => !localCensus.has(member.path));
169
+ const incomingShardPaths = new Set(input.incomingShardPaths);
170
+ const addedOrRemovedSinceBase = censusArr.some((member) => !baseStates.has(member.path) && !justifiedRemovals.has(member.path) && // An incoming member found in the census is the apply's own
171
+ // already-published work (response-loss retry), not a local
172
+ // addition; its bytes were verified above.
173
+ !incomingShardPaths.has(member.path)) || baseArr.some((member) => !localCensus.has(member.path) && !justifiedRemovals.has(member.path));
165
174
  if (deferrals.length > 0 || addedOrRemovedSinceBase) {
166
175
  const handled = new Set(input.incomingShardPaths);
167
176
  if (input.incomingMarker) handled.add(input.incomingMarker.path);
@@ -180,6 +189,31 @@ async function applyEmbeddingGenerationTransaction(input) {
180
189
  deferredLocalDivergence: true
181
190
  };
182
191
  }
192
+ } else if (input.freshCreateClaim) {
193
+ const localCensus = await censusGenerationState(io, root, markerRel, markerAbs, shardDirAbs, shardDirRel);
194
+ if (localCensus.size > 0) {
195
+ const incomingArr = incomingGenerationStates(input).sort((left, right) => left.path.localeCompare(right.path));
196
+ const censusArr = [...localCensus].map(([relPath, sha256]) => ({ path: relPath, sha256 })).sort((left, right) => left.path.localeCompare(right.path));
197
+ const identical = censusArr.length === incomingArr.length && censusArr.every((member, index) => member.path === incomingArr[index]?.path && member.sha256 === incomingArr[index]?.sha256);
198
+ if (!identical) {
199
+ const handled = new Set(input.incomingShardPaths);
200
+ if (input.incomingMarker) handled.add(input.incomingMarker.path);
201
+ if (input.incomingMarkerPresent) handled.add(markerRel);
202
+ for (const relPath of localCensus.keys()) handled.add(relPath);
203
+ log.warn(
204
+ `embedding generation ${shardDirRel} deferred: base-less creation does not match the existing local generation under the mutation lock; nothing published, nothing removed`
205
+ );
206
+ return {
207
+ shardDirRel,
208
+ upserted: 0,
209
+ deleted: 0,
210
+ writtenStates: /* @__PURE__ */ new Map(),
211
+ removedPaths: /* @__PURE__ */ new Set(),
212
+ handledPaths: handled,
213
+ deferredLocalDivergence: true
214
+ };
215
+ }
216
+ }
183
217
  }
184
218
  const published = /* @__PURE__ */ new Map();
185
219
  let identity = null;
@@ -301,6 +335,23 @@ async function applyEmbeddingGenerationTransaction(input) {
301
335
  log.warn(`embedding generation ${shardDirRel}: marker cleanup deferred after publish: ${err}`);
302
336
  }
303
337
  }
338
+ if (input.deletionMtimeByPath !== void 0 && io.deleteFile) {
339
+ let firstTombstoneError = null;
340
+ for (const relPath of removedPaths) {
341
+ try {
342
+ await io.deleteFile({
343
+ root: root.abs,
344
+ path: relPath,
345
+ filePath: await resolveSafeArchiveTarget(root, relPath),
346
+ mtimeMs: input.deletionMtimeByPath.get(relPath) ?? input.now
347
+ });
348
+ } catch (err) {
349
+ firstTombstoneError ??= err;
350
+ log.warn(`embedding generation ${shardDirRel}: tombstone recording failed for ${relPath}: ${err instanceof Error ? err.message : String(err)}`);
351
+ }
352
+ }
353
+ if (firstTombstoneError) throw firstTombstoneError;
354
+ }
304
355
  return {
305
356
  shardDirRel,
306
357
  upserted: published.size,
@@ -515,6 +566,103 @@ function divergedEmbeddingGenerationDeferrals(options) {
515
566
  }
516
567
  return deferred.sort((left, right) => left.localeCompare(right));
517
568
  }
569
+ async function applyIncomingEmbeddingGenerations(options) {
570
+ const incomingGenerations = detectIncomingEmbeddingGenerations(options.incomingMap.keys());
571
+ const generationDirs = /* @__PURE__ */ new Set([
572
+ ...incomingGenerations.shardDirs,
573
+ ...incomingGenerations.legacyMarkerDirs
574
+ ]);
575
+ const deferredGenerationDirs = /* @__PURE__ */ new Set();
576
+ for (const deferredPath of options.deferredPaths) {
577
+ const membership = embeddingGenerationMembership(deferredPath);
578
+ if (membership) deferredGenerationDirs.add(membership.shardDir);
579
+ }
580
+ const transactionResults = [];
581
+ for (const shardDir of generationDirs) {
582
+ if (options.omittedGenerationDirs.has(shardDir)) {
583
+ throw new EmbeddingIndexStorageError(
584
+ `offline sync snapshot both includes and omits embedding generation ${shardDir}; refusing to apply`
585
+ );
586
+ }
587
+ }
588
+ if (generationDirs.size > 0 && options.customIoPresent && !(options.io.writeStagingFile && options.io.readStagingFile)) {
589
+ throw new EmbeddingIndexStorageError(
590
+ "refusing to replace embedding generation: custom storage IO requires both writeStagingFile and readStagingFile hooks; unencrypted raw staging would plaintext-downgrade the index"
591
+ );
592
+ }
593
+ for (const shardDir of generationDirs) {
594
+ if (deferredGenerationDirs.has(shardDir)) continue;
595
+ if (incomingGenerations.legacyMarkerDirs.has(shardDir) && !incomingGenerations.shardDirs.has(shardDir)) {
596
+ const markerRel = [...options.incomingMap.keys()].find(
597
+ (relPath) => embeddingMarkerDirOf(relPath) === shardDir.slice(0, -`/${EMBEDDING_SHARD_DIR_BASENAME}`.length)
598
+ );
599
+ if (!markerRel) continue;
600
+ transactionResults.push(await applyEmbeddingGenerationTransaction({
601
+ root: options.root,
602
+ shardDirRel: shardDir,
603
+ incomingShardPaths: [],
604
+ incomingMarker: {
605
+ path: markerRel,
606
+ sha256: options.incomingMap.get(markerRel).sha256,
607
+ buffer: options.incomingBuffers.get(markerRel) ?? null
608
+ },
609
+ incomingMarkerPresent: false,
610
+ incomingShardStates: /* @__PURE__ */ new Map(),
611
+ incomingBuffers: options.incomingBuffers,
612
+ baseStates: options.baseMap,
613
+ io: options.io,
614
+ now: options.now
615
+ }));
616
+ continue;
617
+ }
618
+ transactionResults.push(await applyEmbeddingGenerationTransaction({
619
+ root: options.root,
620
+ shardDirRel: shardDir,
621
+ incomingShardPaths: [...options.incomingMap.keys()].filter((relPath) => embeddingShardDirOf(relPath) === shardDir).sort(),
622
+ incomingMarker: null,
623
+ incomingMarkerPresent: Boolean(
624
+ incomingGenerations.legacyMarkerDirs.has(shardDir)
625
+ ),
626
+ incomingShardStates: new Map(
627
+ [...options.incomingMap.values()].filter((state) => embeddingShardDirOf(state.path) === shardDir).map((state) => [state.path, state])
628
+ ),
629
+ incomingBuffers: options.incomingBuffers,
630
+ baseStates: options.baseMap,
631
+ io: options.io,
632
+ now: options.now
633
+ }));
634
+ }
635
+ const localGenerationDirs = /* @__PURE__ */ new Set();
636
+ for (const relPath of options.currentMap.keys()) {
637
+ const membership = embeddingGenerationMembership(relPath);
638
+ if (membership?.kind === "shard") localGenerationDirs.add(membership.shardDir);
639
+ }
640
+ for (const shardDir of localGenerationDirs) {
641
+ if (generationDirs.has(shardDir) || deferredGenerationDirs.has(shardDir) || options.omittedGenerationDirs.has(shardDir)) {
642
+ continue;
643
+ }
644
+ const localMembers = [...options.currentMap.keys()].filter(
645
+ (relPath) => embeddingGenerationMembership(relPath)?.shardDir === shardDir
646
+ );
647
+ if (localMembers.length === 0) continue;
648
+ const baseMembers = localMembers.filter((relPath) => options.baseMap.has(relPath));
649
+ const tombstonedMembers = options.deletionMtimeByPath === void 0 ? [] : [...options.deletionMtimeByPath.keys()].filter(
650
+ (relPath) => embeddingGenerationMembership(relPath)?.shardDir === shardDir
651
+ );
652
+ const tombstoneCovered = tombstonedMembers.length > 0;
653
+ const baseEvidenced = baseMembers.length > 0 && baseMembers.every((relPath) => !options.incomingMap.has(relPath));
654
+ if (!tombstoneCovered && !baseEvidenced) continue;
655
+ transactionResults.push(await applyEmbeddingGenerationRemoval({
656
+ root: options.root,
657
+ shardDirRel: shardDir,
658
+ io: { deleteFile: options.io.deleteFile, readFile: options.io.readFile },
659
+ deletionMtimeByPath: options.deletionMtimeByPath,
660
+ baseStates: options.baseMap,
661
+ now: options.now
662
+ }));
663
+ }
664
+ return { transactionResults, deferredGenerationDirs };
665
+ }
518
666
 
519
667
  export {
520
668
  EMBEDDING_SHARD_DIR_BASENAME,
@@ -530,6 +678,7 @@ export {
530
678
  resolvePushEmbeddingGenerationState,
531
679
  storageBackedIndexStoreIo,
532
680
  applyEmbeddingGenerationRemoval,
533
- divergedEmbeddingGenerationDeferrals
681
+ divergedEmbeddingGenerationDeferrals,
682
+ applyIncomingEmbeddingGenerations
534
683
  };
535
- //# sourceMappingURL=chunk-K6T33R4Q.js.map
684
+ //# sourceMappingURL=chunk-AXGJMDBS.js.map