@co-engram/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +167 -0
  3. package/dist/config/defaults.d.ts +45 -0
  4. package/dist/config/defaults.d.ts.map +1 -0
  5. package/dist/config/defaults.js +70 -0
  6. package/dist/config/defaults.js.map +1 -0
  7. package/dist/config/index.d.ts +84 -0
  8. package/dist/config/index.d.ts.map +1 -0
  9. package/dist/config/index.js +230 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/config/types.d.ts +145 -0
  12. package/dist/config/types.d.ts.map +1 -0
  13. package/dist/config/types.js +14 -0
  14. package/dist/config/types.js.map +1 -0
  15. package/dist/contradiction/arbiter.d.ts +51 -0
  16. package/dist/contradiction/arbiter.d.ts.map +1 -0
  17. package/dist/contradiction/arbiter.js +112 -0
  18. package/dist/contradiction/arbiter.js.map +1 -0
  19. package/dist/contradiction/auto-degrade.d.ts +53 -0
  20. package/dist/contradiction/auto-degrade.d.ts.map +1 -0
  21. package/dist/contradiction/auto-degrade.js +79 -0
  22. package/dist/contradiction/auto-degrade.js.map +1 -0
  23. package/dist/contradiction/detector.d.ts +33 -0
  24. package/dist/contradiction/detector.d.ts.map +1 -0
  25. package/dist/contradiction/detector.js +76 -0
  26. package/dist/contradiction/detector.js.map +1 -0
  27. package/dist/contradiction/index.d.ts +11 -0
  28. package/dist/contradiction/index.d.ts.map +1 -0
  29. package/dist/contradiction/index.js +11 -0
  30. package/dist/contradiction/index.js.map +1 -0
  31. package/dist/contradiction/resolver.d.ts +45 -0
  32. package/dist/contradiction/resolver.d.ts.map +1 -0
  33. package/dist/contradiction/resolver.js +196 -0
  34. package/dist/contradiction/resolver.js.map +1 -0
  35. package/dist/contradiction/types.d.ts +73 -0
  36. package/dist/contradiction/types.d.ts.map +1 -0
  37. package/dist/contradiction/types.js +7 -0
  38. package/dist/contradiction/types.js.map +1 -0
  39. package/dist/dedup/dedupe.d.ts +49 -0
  40. package/dist/dedup/dedupe.d.ts.map +1 -0
  41. package/dist/dedup/dedupe.js +111 -0
  42. package/dist/dedup/dedupe.js.map +1 -0
  43. package/dist/dedup/hash.d.ts +27 -0
  44. package/dist/dedup/hash.d.ts.map +1 -0
  45. package/dist/dedup/hash.js +43 -0
  46. package/dist/dedup/hash.js.map +1 -0
  47. package/dist/dedup/index.d.ts +12 -0
  48. package/dist/dedup/index.d.ts.map +1 -0
  49. package/dist/dedup/index.js +12 -0
  50. package/dist/dedup/index.js.map +1 -0
  51. package/dist/dedup/llm-triage.d.ts +48 -0
  52. package/dist/dedup/llm-triage.d.ts.map +1 -0
  53. package/dist/dedup/llm-triage.js +100 -0
  54. package/dist/dedup/llm-triage.js.map +1 -0
  55. package/dist/dedup/merge.d.ts +41 -0
  56. package/dist/dedup/merge.d.ts.map +1 -0
  57. package/dist/dedup/merge.js +55 -0
  58. package/dist/dedup/merge.js.map +1 -0
  59. package/dist/dedup/similar.d.ts +45 -0
  60. package/dist/dedup/similar.d.ts.map +1 -0
  61. package/dist/dedup/similar.js +103 -0
  62. package/dist/dedup/similar.js.map +1 -0
  63. package/dist/dedup/types.d.ts +72 -0
  64. package/dist/dedup/types.d.ts.map +1 -0
  65. package/dist/dedup/types.js +18 -0
  66. package/dist/dedup/types.js.map +1 -0
  67. package/dist/disclosure/adaptive.d.ts +86 -0
  68. package/dist/disclosure/adaptive.d.ts.map +1 -0
  69. package/dist/disclosure/adaptive.js +196 -0
  70. package/dist/disclosure/adaptive.js.map +1 -0
  71. package/dist/disclosure/budget.d.ts +51 -0
  72. package/dist/disclosure/budget.d.ts.map +1 -0
  73. package/dist/disclosure/budget.js +91 -0
  74. package/dist/disclosure/budget.js.map +1 -0
  75. package/dist/disclosure/index.d.ts +11 -0
  76. package/dist/disclosure/index.d.ts.map +1 -0
  77. package/dist/disclosure/index.js +11 -0
  78. package/dist/disclosure/index.js.map +1 -0
  79. package/dist/disclosure/tier-loader.d.ts +58 -0
  80. package/dist/disclosure/tier-loader.d.ts.map +1 -0
  81. package/dist/disclosure/tier-loader.js +205 -0
  82. package/dist/disclosure/tier-loader.js.map +1 -0
  83. package/dist/dreaming/decay.d.ts +46 -0
  84. package/dist/dreaming/decay.d.ts.map +1 -0
  85. package/dist/dreaming/decay.js +69 -0
  86. package/dist/dreaming/decay.js.map +1 -0
  87. package/dist/dreaming/deep.d.ts +48 -0
  88. package/dist/dreaming/deep.d.ts.map +1 -0
  89. package/dist/dreaming/deep.js +41 -0
  90. package/dist/dreaming/deep.js.map +1 -0
  91. package/dist/dreaming/index.d.ts +12 -0
  92. package/dist/dreaming/index.d.ts.map +1 -0
  93. package/dist/dreaming/index.js +12 -0
  94. package/dist/dreaming/index.js.map +1 -0
  95. package/dist/dreaming/light.d.ts +54 -0
  96. package/dist/dreaming/light.d.ts.map +1 -0
  97. package/dist/dreaming/light.js +114 -0
  98. package/dist/dreaming/light.js.map +1 -0
  99. package/dist/dreaming/rem.d.ts +128 -0
  100. package/dist/dreaming/rem.d.ts.map +1 -0
  101. package/dist/dreaming/rem.js +228 -0
  102. package/dist/dreaming/rem.js.map +1 -0
  103. package/dist/dreaming/scheduler.d.ts +75 -0
  104. package/dist/dreaming/scheduler.d.ts.map +1 -0
  105. package/dist/dreaming/scheduler.js +138 -0
  106. package/dist/dreaming/scheduler.js.map +1 -0
  107. package/dist/dreaming/trash.d.ts +174 -0
  108. package/dist/dreaming/trash.d.ts.map +1 -0
  109. package/dist/dreaming/trash.js +466 -0
  110. package/dist/dreaming/trash.js.map +1 -0
  111. package/dist/evolution/category.d.ts +127 -0
  112. package/dist/evolution/category.d.ts.map +1 -0
  113. package/dist/evolution/category.js +271 -0
  114. package/dist/evolution/category.js.map +1 -0
  115. package/dist/evolution/index.d.ts +8 -0
  116. package/dist/evolution/index.d.ts.map +1 -0
  117. package/dist/evolution/index.js +8 -0
  118. package/dist/evolution/index.js.map +1 -0
  119. package/dist/evolution/triggered.d.ts +107 -0
  120. package/dist/evolution/triggered.d.ts.map +1 -0
  121. package/dist/evolution/triggered.js +278 -0
  122. package/dist/evolution/triggered.js.map +1 -0
  123. package/dist/generative/cross-pollinate.d.ts +144 -0
  124. package/dist/generative/cross-pollinate.d.ts.map +1 -0
  125. package/dist/generative/cross-pollinate.js +390 -0
  126. package/dist/generative/cross-pollinate.js.map +1 -0
  127. package/dist/generative/gap-detector.d.ts +80 -0
  128. package/dist/generative/gap-detector.d.ts.map +1 -0
  129. package/dist/generative/gap-detector.js +250 -0
  130. package/dist/generative/gap-detector.js.map +1 -0
  131. package/dist/generative/hypothesis.d.ts +161 -0
  132. package/dist/generative/hypothesis.d.ts.map +1 -0
  133. package/dist/generative/hypothesis.js +356 -0
  134. package/dist/generative/hypothesis.js.map +1 -0
  135. package/dist/generative/index.d.ts +9 -0
  136. package/dist/generative/index.d.ts.map +1 -0
  137. package/dist/generative/index.js +9 -0
  138. package/dist/generative/index.js.map +1 -0
  139. package/dist/graph/clustering.d.ts +117 -0
  140. package/dist/graph/clustering.d.ts.map +1 -0
  141. package/dist/graph/clustering.js +196 -0
  142. package/dist/graph/clustering.js.map +1 -0
  143. package/dist/graph/index.d.ts +13 -0
  144. package/dist/graph/index.d.ts.map +1 -0
  145. package/dist/graph/index.js +13 -0
  146. package/dist/graph/index.js.map +1 -0
  147. package/dist/graph/layout.d.ts +46 -0
  148. package/dist/graph/layout.d.ts.map +1 -0
  149. package/dist/graph/layout.js +269 -0
  150. package/dist/graph/layout.js.map +1 -0
  151. package/dist/graph/presets.d.ts +134 -0
  152. package/dist/graph/presets.d.ts.map +1 -0
  153. package/dist/graph/presets.js +190 -0
  154. package/dist/graph/presets.js.map +1 -0
  155. package/dist/graph/registry.d.ts +42 -0
  156. package/dist/graph/registry.d.ts.map +1 -0
  157. package/dist/graph/registry.js +158 -0
  158. package/dist/graph/registry.js.map +1 -0
  159. package/dist/graph/snapshot.d.ts +113 -0
  160. package/dist/graph/snapshot.d.ts.map +1 -0
  161. package/dist/graph/snapshot.js +194 -0
  162. package/dist/graph/snapshot.js.map +1 -0
  163. package/dist/graph/traverse.d.ts +84 -0
  164. package/dist/graph/traverse.d.ts.map +1 -0
  165. package/dist/graph/traverse.js +190 -0
  166. package/dist/graph/traverse.js.map +1 -0
  167. package/dist/graph/view-config.d.ts +99 -0
  168. package/dist/graph/view-config.d.ts.map +1 -0
  169. package/dist/graph/view-config.js +208 -0
  170. package/dist/graph/view-config.js.map +1 -0
  171. package/dist/host/detect-git-author.d.ts +26 -0
  172. package/dist/host/detect-git-author.d.ts.map +1 -0
  173. package/dist/host/detect-git-author.js +53 -0
  174. package/dist/host/detect-git-author.js.map +1 -0
  175. package/dist/host/index.d.ts +7 -0
  176. package/dist/host/index.d.ts.map +1 -0
  177. package/dist/host/index.js +7 -0
  178. package/dist/host/index.js.map +1 -0
  179. package/dist/i18n/en.d.ts +8 -0
  180. package/dist/i18n/en.d.ts.map +1 -0
  181. package/dist/i18n/en.js +211 -0
  182. package/dist/i18n/en.js.map +1 -0
  183. package/dist/i18n/field-names.d.ts +95 -0
  184. package/dist/i18n/field-names.d.ts.map +1 -0
  185. package/dist/i18n/field-names.js +329 -0
  186. package/dist/i18n/field-names.js.map +1 -0
  187. package/dist/i18n/index.d.ts +92 -0
  188. package/dist/i18n/index.d.ts.map +1 -0
  189. package/dist/i18n/index.js +135 -0
  190. package/dist/i18n/index.js.map +1 -0
  191. package/dist/i18n/types.d.ts +92 -0
  192. package/dist/i18n/types.d.ts.map +1 -0
  193. package/dist/i18n/types.js +7 -0
  194. package/dist/i18n/types.js.map +1 -0
  195. package/dist/i18n/zh.d.ts +197 -0
  196. package/dist/i18n/zh.d.ts.map +1 -0
  197. package/dist/i18n/zh.js +216 -0
  198. package/dist/i18n/zh.js.map +1 -0
  199. package/dist/importance/index.d.ts +7 -0
  200. package/dist/importance/index.d.ts.map +1 -0
  201. package/dist/importance/index.js +7 -0
  202. package/dist/importance/index.js.map +1 -0
  203. package/dist/importance/vector.d.ts +113 -0
  204. package/dist/importance/vector.d.ts.map +1 -0
  205. package/dist/importance/vector.js +202 -0
  206. package/dist/importance/vector.js.map +1 -0
  207. package/dist/index/digest-builder.d.ts +59 -0
  208. package/dist/index/digest-builder.d.ts.map +1 -0
  209. package/dist/index/digest-builder.js +195 -0
  210. package/dist/index/digest-builder.js.map +1 -0
  211. package/dist/index/graph-builder.d.ts +32 -0
  212. package/dist/index/graph-builder.d.ts.map +1 -0
  213. package/dist/index/graph-builder.js +104 -0
  214. package/dist/index/graph-builder.js.map +1 -0
  215. package/dist/index/incremental.d.ts +31 -0
  216. package/dist/index/incremental.d.ts.map +1 -0
  217. package/dist/index/incremental.js +47 -0
  218. package/dist/index/incremental.js.map +1 -0
  219. package/dist/index/index.d.ts +11 -0
  220. package/dist/index/index.d.ts.map +1 -0
  221. package/dist/index/index.js +11 -0
  222. package/dist/index/index.js.map +1 -0
  223. package/dist/index/orchestrator.d.ts +60 -0
  224. package/dist/index/orchestrator.d.ts.map +1 -0
  225. package/dist/index/orchestrator.js +99 -0
  226. package/dist/index/orchestrator.js.map +1 -0
  227. package/dist/index/types.d.ts +116 -0
  228. package/dist/index/types.d.ts.map +1 -0
  229. package/dist/index/types.js +10 -0
  230. package/dist/index/types.js.map +1 -0
  231. package/dist/index.d.ts +37 -0
  232. package/dist/index.d.ts.map +1 -0
  233. package/dist/index.js +37 -0
  234. package/dist/index.js.map +1 -0
  235. package/dist/learning/index.d.ts +7 -0
  236. package/dist/learning/index.d.ts.map +1 -0
  237. package/dist/learning/index.js +7 -0
  238. package/dist/learning/index.js.map +1 -0
  239. package/dist/learning/loop.d.ts +79 -0
  240. package/dist/learning/loop.d.ts.map +1 -0
  241. package/dist/learning/loop.js +116 -0
  242. package/dist/learning/loop.js.map +1 -0
  243. package/dist/lifecycle/freshness.d.ts +35 -0
  244. package/dist/lifecycle/freshness.d.ts.map +1 -0
  245. package/dist/lifecycle/freshness.js +60 -0
  246. package/dist/lifecycle/freshness.js.map +1 -0
  247. package/dist/lifecycle/index.d.ts +7 -0
  248. package/dist/lifecycle/index.d.ts.map +1 -0
  249. package/dist/lifecycle/index.js +7 -0
  250. package/dist/lifecycle/index.js.map +1 -0
  251. package/dist/lineage/index.d.ts +10 -0
  252. package/dist/lineage/index.d.ts.map +1 -0
  253. package/dist/lineage/index.js +10 -0
  254. package/dist/lineage/index.js.map +1 -0
  255. package/dist/lineage/trace.d.ts +142 -0
  256. package/dist/lineage/trace.d.ts.map +1 -0
  257. package/dist/lineage/trace.js +316 -0
  258. package/dist/lineage/trace.js.map +1 -0
  259. package/dist/maintenance/engine.d.ts +78 -0
  260. package/dist/maintenance/engine.d.ts.map +1 -0
  261. package/dist/maintenance/engine.js +291 -0
  262. package/dist/maintenance/engine.js.map +1 -0
  263. package/dist/maintenance/index.d.ts +8 -0
  264. package/dist/maintenance/index.d.ts.map +1 -0
  265. package/dist/maintenance/index.js +8 -0
  266. package/dist/maintenance/index.js.map +1 -0
  267. package/dist/maintenance/types.d.ts +111 -0
  268. package/dist/maintenance/types.d.ts.map +1 -0
  269. package/dist/maintenance/types.js +24 -0
  270. package/dist/maintenance/types.js.map +1 -0
  271. package/dist/observability/audit-log.d.ts +77 -0
  272. package/dist/observability/audit-log.d.ts.map +1 -0
  273. package/dist/observability/audit-log.js +101 -0
  274. package/dist/observability/audit-log.js.map +1 -0
  275. package/dist/observability/effectiveness-tracker.d.ts +162 -0
  276. package/dist/observability/effectiveness-tracker.d.ts.map +1 -0
  277. package/dist/observability/effectiveness-tracker.js +251 -0
  278. package/dist/observability/effectiveness-tracker.js.map +1 -0
  279. package/dist/observability/index.d.ts +16 -0
  280. package/dist/observability/index.d.ts.map +1 -0
  281. package/dist/observability/index.js +16 -0
  282. package/dist/observability/index.js.map +1 -0
  283. package/dist/observability/necessity-evaluator.d.ts +116 -0
  284. package/dist/observability/necessity-evaluator.d.ts.map +1 -0
  285. package/dist/observability/necessity-evaluator.js +487 -0
  286. package/dist/observability/necessity-evaluator.js.map +1 -0
  287. package/dist/observability/proposal-engine.d.ts +224 -0
  288. package/dist/observability/proposal-engine.d.ts.map +1 -0
  289. package/dist/observability/proposal-engine.js +651 -0
  290. package/dist/observability/proposal-engine.js.map +1 -0
  291. package/dist/perspectives/index.d.ts +7 -0
  292. package/dist/perspectives/index.d.ts.map +1 -0
  293. package/dist/perspectives/index.js +7 -0
  294. package/dist/perspectives/index.js.map +1 -0
  295. package/dist/perspectives/multi-view.d.ts +81 -0
  296. package/dist/perspectives/multi-view.d.ts.map +1 -0
  297. package/dist/perspectives/multi-view.js +221 -0
  298. package/dist/perspectives/multi-view.js.map +1 -0
  299. package/dist/prompt-builder/builder.d.ts +47 -0
  300. package/dist/prompt-builder/builder.d.ts.map +1 -0
  301. package/dist/prompt-builder/builder.js +136 -0
  302. package/dist/prompt-builder/builder.js.map +1 -0
  303. package/dist/prompt-builder/index.d.ts +8 -0
  304. package/dist/prompt-builder/index.d.ts.map +1 -0
  305. package/dist/prompt-builder/index.js +8 -0
  306. package/dist/prompt-builder/index.js.map +1 -0
  307. package/dist/prompt-builder/types.d.ts +42 -0
  308. package/dist/prompt-builder/types.d.ts.map +1 -0
  309. package/dist/prompt-builder/types.js +10 -0
  310. package/dist/prompt-builder/types.js.map +1 -0
  311. package/dist/prompt-signals/cache.d.ts +36 -0
  312. package/dist/prompt-signals/cache.d.ts.map +1 -0
  313. package/dist/prompt-signals/cache.js +70 -0
  314. package/dist/prompt-signals/cache.js.map +1 -0
  315. package/dist/prompt-signals/index.d.ts +12 -0
  316. package/dist/prompt-signals/index.d.ts.map +1 -0
  317. package/dist/prompt-signals/index.js +11 -0
  318. package/dist/prompt-signals/index.js.map +1 -0
  319. package/dist/prompt-signals/stats.d.ts +45 -0
  320. package/dist/prompt-signals/stats.d.ts.map +1 -0
  321. package/dist/prompt-signals/stats.js +119 -0
  322. package/dist/prompt-signals/stats.js.map +1 -0
  323. package/dist/prompt-signals/types.d.ts +53 -0
  324. package/dist/prompt-signals/types.d.ts.map +1 -0
  325. package/dist/prompt-signals/types.js +34 -0
  326. package/dist/prompt-signals/types.js.map +1 -0
  327. package/dist/provenance/index.d.ts +7 -0
  328. package/dist/provenance/index.d.ts.map +1 -0
  329. package/dist/provenance/index.js +7 -0
  330. package/dist/provenance/index.js.map +1 -0
  331. package/dist/provenance/reliability.d.ts +133 -0
  332. package/dist/provenance/reliability.d.ts.map +1 -0
  333. package/dist/provenance/reliability.js +213 -0
  334. package/dist/provenance/reliability.js.map +1 -0
  335. package/dist/reinforcement/config.d.ts +34 -0
  336. package/dist/reinforcement/config.d.ts.map +1 -0
  337. package/dist/reinforcement/config.js +43 -0
  338. package/dist/reinforcement/config.js.map +1 -0
  339. package/dist/reinforcement/index.d.ts +12 -0
  340. package/dist/reinforcement/index.d.ts.map +1 -0
  341. package/dist/reinforcement/index.js +12 -0
  342. package/dist/reinforcement/index.js.map +1 -0
  343. package/dist/reinforcement/ltd.d.ts +59 -0
  344. package/dist/reinforcement/ltd.d.ts.map +1 -0
  345. package/dist/reinforcement/ltd.js +90 -0
  346. package/dist/reinforcement/ltd.js.map +1 -0
  347. package/dist/reinforcement/ltp.d.ts +63 -0
  348. package/dist/reinforcement/ltp.d.ts.map +1 -0
  349. package/dist/reinforcement/ltp.js +99 -0
  350. package/dist/reinforcement/ltp.js.map +1 -0
  351. package/dist/reinforcement/related.d.ts +39 -0
  352. package/dist/reinforcement/related.d.ts.map +1 -0
  353. package/dist/reinforcement/related.js +92 -0
  354. package/dist/reinforcement/related.js.map +1 -0
  355. package/dist/retrieval/filter.d.ts +18 -0
  356. package/dist/retrieval/filter.d.ts.map +1 -0
  357. package/dist/retrieval/filter.js +68 -0
  358. package/dist/retrieval/filter.js.map +1 -0
  359. package/dist/retrieval/fts.d.ts +44 -0
  360. package/dist/retrieval/fts.d.ts.map +1 -0
  361. package/dist/retrieval/fts.js +120 -0
  362. package/dist/retrieval/fts.js.map +1 -0
  363. package/dist/retrieval/index.d.ts +10 -0
  364. package/dist/retrieval/index.d.ts.map +1 -0
  365. package/dist/retrieval/index.js +10 -0
  366. package/dist/retrieval/index.js.map +1 -0
  367. package/dist/retrieval/orchestrator.d.ts +78 -0
  368. package/dist/retrieval/orchestrator.d.ts.map +1 -0
  369. package/dist/retrieval/orchestrator.js +156 -0
  370. package/dist/retrieval/orchestrator.js.map +1 -0
  371. package/dist/retrieval/scoring.d.ts +105 -0
  372. package/dist/retrieval/scoring.d.ts.map +1 -0
  373. package/dist/retrieval/scoring.js +165 -0
  374. package/dist/retrieval/scoring.js.map +1 -0
  375. package/dist/signals/extract.d.ts +98 -0
  376. package/dist/signals/extract.d.ts.map +1 -0
  377. package/dist/signals/extract.js +388 -0
  378. package/dist/signals/extract.js.map +1 -0
  379. package/dist/signals/file-sink.d.ts +81 -0
  380. package/dist/signals/file-sink.d.ts.map +1 -0
  381. package/dist/signals/file-sink.js +227 -0
  382. package/dist/signals/file-sink.js.map +1 -0
  383. package/dist/signals/index.d.ts +12 -0
  384. package/dist/signals/index.d.ts.map +1 -0
  385. package/dist/signals/index.js +12 -0
  386. package/dist/signals/index.js.map +1 -0
  387. package/dist/signals/rpe.d.ts +60 -0
  388. package/dist/signals/rpe.d.ts.map +1 -0
  389. package/dist/signals/rpe.js +68 -0
  390. package/dist/signals/rpe.js.map +1 -0
  391. package/dist/signals/types.d.ts +80 -0
  392. package/dist/signals/types.d.ts.map +1 -0
  393. package/dist/signals/types.js +14 -0
  394. package/dist/signals/types.js.map +1 -0
  395. package/dist/storage/engram-index.d.ts +73 -0
  396. package/dist/storage/engram-index.d.ts.map +1 -0
  397. package/dist/storage/engram-index.js +215 -0
  398. package/dist/storage/engram-index.js.map +1 -0
  399. package/dist/storage/engram-store.d.ts +147 -0
  400. package/dist/storage/engram-store.d.ts.map +1 -0
  401. package/dist/storage/engram-store.js +221 -0
  402. package/dist/storage/engram-store.js.map +1 -0
  403. package/dist/storage/git-stage.d.ts +56 -0
  404. package/dist/storage/git-stage.d.ts.map +1 -0
  405. package/dist/storage/git-stage.js +147 -0
  406. package/dist/storage/git-stage.js.map +1 -0
  407. package/dist/storage/git.d.ts +57 -0
  408. package/dist/storage/git.d.ts.map +1 -0
  409. package/dist/storage/git.js +156 -0
  410. package/dist/storage/git.js.map +1 -0
  411. package/dist/storage/hash.d.ts +23 -0
  412. package/dist/storage/hash.d.ts.map +1 -0
  413. package/dist/storage/hash.js +31 -0
  414. package/dist/storage/hash.js.map +1 -0
  415. package/dist/storage/index.d.ts +14 -0
  416. package/dist/storage/index.d.ts.map +1 -0
  417. package/dist/storage/index.js +14 -0
  418. package/dist/storage/index.js.map +1 -0
  419. package/dist/storage/path.d.ts +51 -0
  420. package/dist/storage/path.d.ts.map +1 -0
  421. package/dist/storage/path.js +72 -0
  422. package/dist/storage/path.js.map +1 -0
  423. package/dist/storage/repository.d.ts +342 -0
  424. package/dist/storage/repository.d.ts.map +1 -0
  425. package/dist/storage/repository.js +1221 -0
  426. package/dist/storage/repository.js.map +1 -0
  427. package/dist/storage/synapse-store.d.ts +113 -0
  428. package/dist/storage/synapse-store.d.ts.map +1 -0
  429. package/dist/storage/synapse-store.js +279 -0
  430. package/dist/storage/synapse-store.js.map +1 -0
  431. package/dist/tools/doctor-tools.d.ts +53 -0
  432. package/dist/tools/doctor-tools.d.ts.map +1 -0
  433. package/dist/tools/doctor-tools.js +97 -0
  434. package/dist/tools/doctor-tools.js.map +1 -0
  435. package/dist/tools/engram-tools.d.ts +166 -0
  436. package/dist/tools/engram-tools.d.ts.map +1 -0
  437. package/dist/tools/engram-tools.js +834 -0
  438. package/dist/tools/engram-tools.js.map +1 -0
  439. package/dist/tools/index.d.ts +16 -0
  440. package/dist/tools/index.d.ts.map +1 -0
  441. package/dist/tools/index.js +16 -0
  442. package/dist/tools/index.js.map +1 -0
  443. package/dist/tools/llm-descriptions.d.ts +61 -0
  444. package/dist/tools/llm-descriptions.d.ts.map +1 -0
  445. package/dist/tools/llm-descriptions.js +556 -0
  446. package/dist/tools/llm-descriptions.js.map +1 -0
  447. package/dist/tools/proposal-tools.d.ts +40 -0
  448. package/dist/tools/proposal-tools.d.ts.map +1 -0
  449. package/dist/tools/proposal-tools.js +99 -0
  450. package/dist/tools/proposal-tools.js.map +1 -0
  451. package/dist/tools/registry.d.ts +30 -0
  452. package/dist/tools/registry.d.ts.map +1 -0
  453. package/dist/tools/registry.js +43 -0
  454. package/dist/tools/registry.js.map +1 -0
  455. package/dist/tools/schemas.d.ts +715 -0
  456. package/dist/tools/schemas.d.ts.map +1 -0
  457. package/dist/tools/schemas.js +383 -0
  458. package/dist/tools/schemas.js.map +1 -0
  459. package/dist/tools/skill-tools.d.ts +26 -0
  460. package/dist/tools/skill-tools.d.ts.map +1 -0
  461. package/dist/tools/skill-tools.js +84 -0
  462. package/dist/tools/skill-tools.js.map +1 -0
  463. package/dist/tools/synapse-tools.d.ts +28 -0
  464. package/dist/tools/synapse-tools.d.ts.map +1 -0
  465. package/dist/tools/synapse-tools.js +177 -0
  466. package/dist/tools/synapse-tools.js.map +1 -0
  467. package/dist/tools/tool.d.ts +84 -0
  468. package/dist/tools/tool.d.ts.map +1 -0
  469. package/dist/tools/tool.js +22 -0
  470. package/dist/tools/tool.js.map +1 -0
  471. package/dist/tools/wrapped.d.ts +28 -0
  472. package/dist/tools/wrapped.d.ts.map +1 -0
  473. package/dist/tools/wrapped.js +172 -0
  474. package/dist/tools/wrapped.js.map +1 -0
  475. package/dist/types/disclosure.d.ts +70 -0
  476. package/dist/types/disclosure.d.ts.map +1 -0
  477. package/dist/types/disclosure.js +9 -0
  478. package/dist/types/disclosure.js.map +1 -0
  479. package/dist/types/engram.d.ts +203 -0
  480. package/dist/types/engram.d.ts.map +1 -0
  481. package/dist/types/engram.js +7 -0
  482. package/dist/types/engram.js.map +1 -0
  483. package/dist/types/index.d.ts +15 -0
  484. package/dist/types/index.d.ts.map +1 -0
  485. package/dist/types/index.js +15 -0
  486. package/dist/types/index.js.map +1 -0
  487. package/dist/types/intention.d.ts +91 -0
  488. package/dist/types/intention.d.ts.map +1 -0
  489. package/dist/types/intention.js +9 -0
  490. package/dist/types/intention.js.map +1 -0
  491. package/dist/types/repository-types.d.ts +113 -0
  492. package/dist/types/repository-types.d.ts.map +1 -0
  493. package/dist/types/repository-types.js +18 -0
  494. package/dist/types/repository-types.js.map +1 -0
  495. package/dist/types/scene.d.ts +52 -0
  496. package/dist/types/scene.d.ts.map +1 -0
  497. package/dist/types/scene.js +12 -0
  498. package/dist/types/scene.js.map +1 -0
  499. package/dist/types/skill.d.ts +107 -0
  500. package/dist/types/skill.d.ts.map +1 -0
  501. package/dist/types/skill.js +10 -0
  502. package/dist/types/skill.js.map +1 -0
  503. package/dist/types/slugify.d.ts +34 -0
  504. package/dist/types/slugify.d.ts.map +1 -0
  505. package/dist/types/slugify.js +55 -0
  506. package/dist/types/slugify.js.map +1 -0
  507. package/dist/types/synapse-id.d.ts +22 -0
  508. package/dist/types/synapse-id.d.ts.map +1 -0
  509. package/dist/types/synapse-id.js +34 -0
  510. package/dist/types/synapse-id.js.map +1 -0
  511. package/dist/types/synapse.d.ts +99 -0
  512. package/dist/types/synapse.d.ts.map +1 -0
  513. package/dist/types/synapse.js +9 -0
  514. package/dist/types/synapse.js.map +1 -0
  515. package/dist/verification/index.d.ts +11 -0
  516. package/dist/verification/index.d.ts.map +1 -0
  517. package/dist/verification/index.js +11 -0
  518. package/dist/verification/index.js.map +1 -0
  519. package/dist/verification/metacognition.d.ts +102 -0
  520. package/dist/verification/metacognition.d.ts.map +1 -0
  521. package/dist/verification/metacognition.js +284 -0
  522. package/dist/verification/metacognition.js.map +1 -0
  523. package/dist/verification/state-machine.d.ts +77 -0
  524. package/dist/verification/state-machine.d.ts.map +1 -0
  525. package/dist/verification/state-machine.js +126 -0
  526. package/dist/verification/state-machine.js.map +1 -0
  527. package/dist/verification/upgrade.d.ts +133 -0
  528. package/dist/verification/upgrade.d.ts.map +1 -0
  529. package/dist/verification/upgrade.js +364 -0
  530. package/dist/verification/upgrade.js.map +1 -0
  531. package/package.json +70 -0
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Metacognition 五维度真值评分(P4 C.1)
3
+ *
4
+ * 人类"元认知"机制的工程化映射:根据结构化证据自动判定 engram 真实性。
5
+ *
6
+ * 五维度(权重):
7
+ * crossContext 0.30 跨情境稳定性(不同 domainTag 出现次数)
8
+ * timeStable 0.25 时间稳定性(ageDays,30 天饱和)
9
+ * mutuallySupported 0.25 互相支持(extends+consolidates 占比)
10
+ * sourceReliable 0.20 来源可靠性(createdBy 的可靠性分数)
11
+ * executable 门槛 procedure kind 的可执行性(默认 0.5,不参与加权)
12
+ *
13
+ * 综合 score + thresholds → recommendation:
14
+ * - upgrade_verified :overall ≥ 0.85 且 ageDays ≥ 7
15
+ * - upgrade_one_level :overall ≥ 0.70
16
+ * - refute :overall < 0.30 且有 contradicts
17
+ * - hold :其他
18
+ *
19
+ * applyMetacognition 把 recommendation 落库(调 verification/upgrade.ts)。
20
+ *
21
+ * 设计原则:纯结构化,不调 LLM。每条 engram 评分 O(1)。
22
+ *
23
+ * @module @co-engram/core/verification
24
+ */
25
+ import { upgradeVerification, refuteEngram } from "./upgrade.js";
26
+ import { canTransition } from "./state-machine.js";
27
+ /** 维度权重(executable 不参与加权,仅作门槛) */
28
+ export const TRUTH_WEIGHTS = {
29
+ crossContext: 0.3,
30
+ timeStable: 0.25,
31
+ mutuallySupported: 0.25,
32
+ sourceReliable: 0.2,
33
+ executable: 0, // 不加权
34
+ };
35
+ /** 阈值 */
36
+ export const TRUTH_THRESHOLDS = {
37
+ upgradeVerifiedOverall: 0.85,
38
+ upgradeVerifiedMinAgeDays: 7,
39
+ upgradeOneLevelOverall: 0.7,
40
+ refuteOverall: 0.3,
41
+ };
42
+ /** 时间稳定性饱和天数(30 天) */
43
+ export const TIME_STABLE_SATURATION_DAYS = 30;
44
+ /** 跨情境稳定性的 domainTag 饱和数(≥2 个 domain 视为跨情境) */
45
+ export const CROSS_CONTEXT_SATURATION_DOMAINS = 2;
46
+ /**
47
+ * 计算五维度真值评分(纯函数,不写库)
48
+ */
49
+ export function computeTruthScore(input) {
50
+ const dimensions = computeDimensions(input);
51
+ const overall = computeOverall(dimensions);
52
+ const recommendation = computeRecommendation(overall, input, dimensions);
53
+ const reasoning = buildReasoning(input, dimensions, overall, recommendation);
54
+ return { overall, dimensions, recommendation, reasoning };
55
+ }
56
+ /**
57
+ * 应用元认知评分到 engram(写库)
58
+ *
59
+ * 根据 recommendation:
60
+ * - upgrade_verified → 升级到 verified
61
+ * - upgrade_one_level → 升级一级(unverified → plausible → probable)
62
+ * - refute → refuteEngram(任意状态 → refuted)
63
+ * - hold → 不动
64
+ *
65
+ * 可选参数:
66
+ * - ageDays: 覆盖自动计算的年龄(测试 / 强制重新评分用)
67
+ * - createdByReliability: 创建者可靠性分数
68
+ */
69
+ export async function applyMetacognition(repo, engramId, input) {
70
+ const engram = repo.readEngram(engramId);
71
+ const synapseStats = collectSynapseStats(repo, engramId);
72
+ const ageDays = input?.ageDays ?? computeAgeDays(engram.createdAt);
73
+ const fullInput = {
74
+ engram,
75
+ synapseStats,
76
+ ageDays,
77
+ createdByReliability: input?.createdByReliability,
78
+ };
79
+ const score = computeTruthScore(fullInput);
80
+ let applied = false;
81
+ let newStatus;
82
+ let reason = score.reasoning;
83
+ try {
84
+ if (score.recommendation === "refute") {
85
+ const result = refuteEngram(repo, engramId, {
86
+ description: `metacognition_refute: overall=${score.overall.toFixed(2)} < ${TRUTH_THRESHOLDS.refuteOverall} with ${synapseStats.contradicts} contradicts`,
87
+ verifiedBy: "metacognition",
88
+ confidence: 1 - score.overall,
89
+ }, { force: true });
90
+ applied = result.applied;
91
+ newStatus = result.newStatus;
92
+ }
93
+ else if (score.recommendation === "upgrade_verified") {
94
+ // 按状态机逐步升到 verified(跳级被 canTransition 拦下)
95
+ const result = upgradeToTarget(repo, engramId, "verified", score, ageDays);
96
+ applied = result.applied;
97
+ newStatus = result.newStatus;
98
+ }
99
+ else if (score.recommendation === "upgrade_one_level") {
100
+ const next = nextStatusLevel(engram.verificationStatus);
101
+ if (next) {
102
+ const result = upgradeVerification(repo, engramId, next, {
103
+ description: `metacognition_upgrade: overall=${score.overall.toFixed(2)} ≥ ${TRUTH_THRESHOLDS.upgradeOneLevelOverall}`,
104
+ verifiedBy: "metacognition",
105
+ confidence: score.overall,
106
+ }, { force: true });
107
+ applied = result.applied;
108
+ newStatus = result.newStatus;
109
+ }
110
+ else {
111
+ reason = reasoningHold("already verified");
112
+ }
113
+ }
114
+ }
115
+ catch (err) {
116
+ reason = `apply failed: ${err instanceof Error ? err.message : String(err)}`;
117
+ }
118
+ return {
119
+ engramId,
120
+ score,
121
+ applied,
122
+ newStatus,
123
+ reason,
124
+ };
125
+ }
126
+ // ============================================================
127
+ // 内部辅助
128
+ // ============================================================
129
+ function computeDimensions(input) {
130
+ const domains = input.engram.domainTags?.length ?? 0;
131
+ const crossContext = Math.min(1, domains / CROSS_CONTEXT_SATURATION_DOMAINS);
132
+ const timeStable = Math.min(1, input.ageDays / TIME_STABLE_SATURATION_DAYS);
133
+ const denom = input.synapseStats.extends +
134
+ input.synapseStats.consolidates +
135
+ input.synapseStats.contradicts;
136
+ const mutuallySupported = denom === 0
137
+ ? 0.5
138
+ : (input.synapseStats.extends + input.synapseStats.consolidates) / denom;
139
+ const sourceReliable = input.createdByReliability ?? 0.5;
140
+ // executable:仅 procedure kind 有意义,默认 0.5
141
+ const executable = input.engram.kind === "procedure" ||
142
+ (input.engram.kinds?.includes("procedure") ?? false)
143
+ ? 0.7 // procedure kind 默认 0.7(高于平均)
144
+ : 0.5;
145
+ return {
146
+ crossContext,
147
+ timeStable,
148
+ mutuallySupported,
149
+ sourceReliable,
150
+ executable,
151
+ };
152
+ }
153
+ function computeOverall(d) {
154
+ return (TRUTH_WEIGHTS.crossContext * d.crossContext +
155
+ TRUTH_WEIGHTS.timeStable * d.timeStable +
156
+ TRUTH_WEIGHTS.mutuallySupported * d.mutuallySupported +
157
+ TRUTH_WEIGHTS.sourceReliable * d.sourceReliable);
158
+ }
159
+ function computeRecommendation(overall, input, d) {
160
+ if (overall >= TRUTH_THRESHOLDS.upgradeVerifiedOverall &&
161
+ d.timeStable * TIME_STABLE_SATURATION_DAYS >=
162
+ TRUTH_THRESHOLDS.upgradeVerifiedMinAgeDays) {
163
+ return "upgrade_verified";
164
+ }
165
+ if (overall >= TRUTH_THRESHOLDS.upgradeOneLevelOverall) {
166
+ return "upgrade_one_level";
167
+ }
168
+ if (overall < TRUTH_THRESHOLDS.refuteOverall &&
169
+ input.synapseStats.contradicts >= 1) {
170
+ return "refute";
171
+ }
172
+ return "hold";
173
+ }
174
+ function buildReasoning(input, d, overall, rec) {
175
+ const parts = [];
176
+ parts.push(`overall=${overall.toFixed(2)}`);
177
+ parts.push(`cross=${d.crossContext.toFixed(2)}(${input.engram.domainTags?.length ?? 0}d)`);
178
+ parts.push(`time=${d.timeStable.toFixed(2)}(${input.ageDays}d)`);
179
+ parts.push(`mutual=${d.mutuallySupported.toFixed(2)}(e=${input.synapseStats.extends},c=${input.synapseStats.contradicts})`);
180
+ parts.push(`source=${d.sourceReliable.toFixed(2)}`);
181
+ parts.push(`→ ${rec}`);
182
+ return parts.join(" ");
183
+ }
184
+ function reasoningHold(extra) {
185
+ return `hold (${extra})`;
186
+ }
187
+ /**
188
+ * 从仓库读取 synapse 统计
189
+ *
190
+ * 简单实现:读 outgoing + incoming(通过遍历所有 engram 的 outgoing 查找指向 engramId 的)。
191
+ * 注意:这是 O(n) 操作,适合 REM 阶段(低频)。
192
+ */
193
+ function collectSynapseStats(repo, engramId) {
194
+ const stats = { extends: 0, consolidates: 0, contradicts: 0, derivesFrom: 0 };
195
+ try {
196
+ // 自己的 outgoing
197
+ const own = repo.readSynapses(engramId);
198
+ for (const s of own.outgoing) {
199
+ if (s.kind === "extends")
200
+ stats.extends += 1;
201
+ else if (s.kind === "consolidates")
202
+ stats.consolidates += 1;
203
+ else if (s.kind === "contradicts")
204
+ stats.contradicts += 1;
205
+ else if (s.kind === "derives_from")
206
+ stats.derivesFrom += 1;
207
+ }
208
+ }
209
+ catch {
210
+ // engram 可能已被删除
211
+ }
212
+ // incoming:遍历所有 engram 的 outgoing 找指向 engramId 的
213
+ // 注意:这是 O(n),REM 阶段可接受
214
+ try {
215
+ const all = repo.collectAllSynapses();
216
+ for (const { synapse } of all) {
217
+ if (synapse.to !== engramId)
218
+ continue;
219
+ if (synapse.kind === "extends")
220
+ stats.extends += 1;
221
+ else if (synapse.kind === "consolidates")
222
+ stats.consolidates += 1;
223
+ else if (synapse.kind === "contradicts")
224
+ stats.contradicts += 1;
225
+ else if (synapse.kind === "derives_from")
226
+ stats.derivesFrom += 1;
227
+ }
228
+ }
229
+ catch {
230
+ // ignore
231
+ }
232
+ return stats;
233
+ }
234
+ function computeAgeDays(createdAt) {
235
+ const created = new Date(createdAt).getTime();
236
+ if (Number.isNaN(created))
237
+ return 0;
238
+ return Math.max(0, (Date.now() - created) / (24 * 60 * 60 * 1000));
239
+ }
240
+ /** 升级一级:unverified → plausible → probable(已 verified 则无下一级) */
241
+ function nextStatusLevel(current) {
242
+ if (current === undefined || current === "unverified")
243
+ return "plausible";
244
+ if (current === "plausible")
245
+ return "probable";
246
+ if (current === "probable")
247
+ return "verified";
248
+ return undefined; // verified 或 refuted,无升级
249
+ }
250
+ /**
251
+ * 按状态机逐步升级到目标状态
252
+ *
253
+ * canTransition 强制相邻级别,所以 metacognition 一次大跨度升级需要分步。
254
+ * 每步都用 force=true(已通过 metacognition 评分,不再查升级条件)。
255
+ */
256
+ function upgradeToTarget(repo, engramId, target, score, ageDays) {
257
+ const UPGRADE_PATH = [
258
+ "plausible",
259
+ "probable",
260
+ "verified",
261
+ ];
262
+ let current = repo.readEngram(engramId).verificationStatus;
263
+ let applied = false;
264
+ for (const step of UPGRADE_PATH) {
265
+ if (current === target)
266
+ break;
267
+ if (!canTransition(current, step))
268
+ break;
269
+ const result = upgradeVerification(repo, engramId, step, {
270
+ description: `metacognition_upgrade: overall=${score.overall.toFixed(2)}, ageDays=${ageDays}, step=${step}`,
271
+ verifiedBy: "metacognition",
272
+ confidence: score.overall,
273
+ }, { force: true });
274
+ if (result.applied) {
275
+ applied = true;
276
+ current = result.newStatus;
277
+ }
278
+ else {
279
+ break;
280
+ }
281
+ }
282
+ return { applied, newStatus: current };
283
+ }
284
+ //# sourceMappingURL=metacognition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metacognition.js","sourceRoot":"","sources":["../../src/verification/metacognition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * 验证状态机(spec §3.9, P3 4.5.1)
3
+ *
4
+ * 状态序列:unverified → plausible → probable → verified
5
+ * 终态:refuted
6
+ *
7
+ * 合法转移规则:
8
+ * 1. undefined(创建后未设置)→ 任意状态:首次设置,允许
9
+ * 2. 任何状态 → refuted:随时可以反驳(发现新证据)
10
+ * 3. 相邻级别升级:unverified → plausible → probable → verified(不允许跳级)
11
+ * 4. refuted → 任何:不允许(终态)
12
+ *
13
+ * 升级条件(spec §4.5.2)在 upgrade.ts 中实现,不在本文件。
14
+ *
15
+ * @module @co-engram/core/verification
16
+ */
17
+ import type { VerificationStatus } from "../types/engram.js";
18
+ /**
19
+ * 状态级别(数字越大越成熟)
20
+ *
21
+ * refuted 特殊处理:作为终态,不参与升降序比较。
22
+ */
23
+ export declare const STATUS_ORDER: Record<VerificationStatus, number>;
24
+ /**
25
+ * 正向升级路径(不含 refuted)
26
+ *
27
+ * unverified → plausible → probable → verified
28
+ */
29
+ export declare const UPGRADE_PATH: readonly VerificationStatus[];
30
+ /** 终态集合(不允许转出) */
31
+ export declare const TERMINAL_STATUSES: ReadonlySet<VerificationStatus>;
32
+ /**
33
+ * 判断状态转移是否合法
34
+ *
35
+ * 设计原则:
36
+ * - 首次设置(from=undefined)允许到 unverified 或 plausible(基础起点)
37
+ * 或 refuted(直接反驳);不允许跳到 probable/verified(跳级)
38
+ * - 已有状态:严格相邻升级,或直接 refute
39
+ * - refuted 是终态
40
+ *
41
+ * @param from 当前状态;undefined 表示尚未设置
42
+ * @param to 目标状态
43
+ */
44
+ export declare function canTransition(from: VerificationStatus | undefined, to: VerificationStatus): boolean;
45
+ /**
46
+ * 获取下一个正向升级状态
47
+ *
48
+ * - undefined → unverified
49
+ * - verified 已经最高,返回 verified
50
+ * - refuted 返回 refuted(终态)
51
+ */
52
+ export declare function nextUpgradeStatus(current: VerificationStatus | undefined): VerificationStatus;
53
+ /**
54
+ * 比较状态成熟度
55
+ *
56
+ * 返回值:
57
+ * - 正数:a 比 b 成熟
58
+ * - 负数:b 比 a 成熟
59
+ * - 0:相等
60
+ *
61
+ * 注意:refuted 不与 verified/plausible 等比较"成熟度"。
62
+ * 此函数仅用于升级路径排序,调用方应先排除 refuted。
63
+ */
64
+ export declare function compareStatus(a: VerificationStatus, b: VerificationStatus): number;
65
+ /**
66
+ * 是否为终态
67
+ */
68
+ export declare function isTerminal(status: VerificationStatus | undefined): boolean;
69
+ /**
70
+ * 是否为反驳状态
71
+ */
72
+ export declare function isRefuted(status: VerificationStatus | undefined): boolean;
73
+ /**
74
+ * 是否为已验证状态(verified)
75
+ */
76
+ export declare function isVerified(status: VerificationStatus | undefined): boolean;
77
+ //# sourceMappingURL=state-machine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-machine.d.ts","sourceRoot":"","sources":["../../src/verification/state-machine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAM3D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,kBAAkB,EAKrD,CAAC;AAEF,kBAAkB;AAClB,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,kBAAkB,CACpB,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,kBAAkB,GAAG,SAAS,EACpC,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAoBT;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,kBAAkB,CASpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,kBAAkB,EACrB,CAAC,EAAE,kBAAkB,GACpB,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAG1E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAEzE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAE1E"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * 验证状态机(spec §3.9, P3 4.5.1)
3
+ *
4
+ * 状态序列:unverified → plausible → probable → verified
5
+ * 终态:refuted
6
+ *
7
+ * 合法转移规则:
8
+ * 1. undefined(创建后未设置)→ 任意状态:首次设置,允许
9
+ * 2. 任何状态 → refuted:随时可以反驳(发现新证据)
10
+ * 3. 相邻级别升级:unverified → plausible → probable → verified(不允许跳级)
11
+ * 4. refuted → 任何:不允许(终态)
12
+ *
13
+ * 升级条件(spec §4.5.2)在 upgrade.ts 中实现,不在本文件。
14
+ *
15
+ * @module @co-engram/core/verification
16
+ */
17
+ /**
18
+ * 状态级别(数字越大越成熟)
19
+ *
20
+ * refuted 特殊处理:作为终态,不参与升降序比较。
21
+ */
22
+ export const STATUS_ORDER = {
23
+ unverified: 0,
24
+ plausible: 1,
25
+ probable: 2,
26
+ verified: 3,
27
+ refuted: 4,
28
+ };
29
+ /**
30
+ * 正向升级路径(不含 refuted)
31
+ *
32
+ * unverified → plausible → probable → verified
33
+ */
34
+ export const UPGRADE_PATH = [
35
+ "unverified",
36
+ "plausible",
37
+ "probable",
38
+ "verified",
39
+ ];
40
+ /** 终态集合(不允许转出) */
41
+ export const TERMINAL_STATUSES = new Set(["refuted"]);
42
+ /**
43
+ * 判断状态转移是否合法
44
+ *
45
+ * 设计原则:
46
+ * - 首次设置(from=undefined)允许到 unverified 或 plausible(基础起点)
47
+ * 或 refuted(直接反驳);不允许跳到 probable/verified(跳级)
48
+ * - 已有状态:严格相邻升级,或直接 refute
49
+ * - refuted 是终态
50
+ *
51
+ * @param from 当前状态;undefined 表示尚未设置
52
+ * @param to 目标状态
53
+ */
54
+ export function canTransition(from, to) {
55
+ // 首次设置:允许 unverified(默认起点)/ plausible(部分验证起点)/ refuted(直接反驳)
56
+ if (from === undefined) {
57
+ return to === "unverified" || to === "plausible" || to === "refuted";
58
+ }
59
+ // 终态不允许转出
60
+ if (TERMINAL_STATUSES.has(from)) {
61
+ return false;
62
+ }
63
+ // 任何非终态都可以直接 refute(发现反例即可)
64
+ if (to === "refuted") {
65
+ return true;
66
+ }
67
+ // 升级:必须是相邻级别
68
+ const fromLevel = STATUS_ORDER[from];
69
+ const toLevel = STATUS_ORDER[to];
70
+ return toLevel === fromLevel + 1;
71
+ }
72
+ /**
73
+ * 获取下一个正向升级状态
74
+ *
75
+ * - undefined → unverified
76
+ * - verified 已经最高,返回 verified
77
+ * - refuted 返回 refuted(终态)
78
+ */
79
+ export function nextUpgradeStatus(current) {
80
+ if (current === undefined)
81
+ return "unverified";
82
+ if (current === "refuted")
83
+ return "refuted";
84
+ if (current === "verified")
85
+ return "verified";
86
+ const idx = UPGRADE_PATH.indexOf(current);
87
+ if (idx < 0 || idx >= UPGRADE_PATH.length - 1) {
88
+ return current;
89
+ }
90
+ return UPGRADE_PATH[idx + 1];
91
+ }
92
+ /**
93
+ * 比较状态成熟度
94
+ *
95
+ * 返回值:
96
+ * - 正数:a 比 b 成熟
97
+ * - 负数:b 比 a 成熟
98
+ * - 0:相等
99
+ *
100
+ * 注意:refuted 不与 verified/plausible 等比较"成熟度"。
101
+ * 此函数仅用于升级路径排序,调用方应先排除 refuted。
102
+ */
103
+ export function compareStatus(a, b) {
104
+ return STATUS_ORDER[a] - STATUS_ORDER[b];
105
+ }
106
+ /**
107
+ * 是否为终态
108
+ */
109
+ export function isTerminal(status) {
110
+ if (status === undefined)
111
+ return false;
112
+ return TERMINAL_STATUSES.has(status);
113
+ }
114
+ /**
115
+ * 是否为反驳状态
116
+ */
117
+ export function isRefuted(status) {
118
+ return status === "refuted";
119
+ }
120
+ /**
121
+ * 是否为已验证状态(verified)
122
+ */
123
+ export function isVerified(status) {
124
+ return status === "verified";
125
+ }
126
+ //# sourceMappingURL=state-machine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-machine.js","sourceRoot":"","sources":["../../src/verification/state-machine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAuC;IAC9D,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;CACX,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAkC;IACzD,YAAY;IACZ,WAAW;IACX,UAAU;IACV,UAAU;CACX,CAAC;AAEF,kBAAkB;AAClB,MAAM,CAAC,MAAM,iBAAiB,GAC5B,IAAI,GAAG,CAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAoC,EACpC,EAAsB;IAEtB,6DAA6D;IAC7D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,KAAK,YAAY,IAAI,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,SAAS,CAAC;IACvE,CAAC;IAED,UAAU;IACV,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4BAA4B;IAC5B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa;IACb,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IACjC,OAAO,OAAO,KAAK,SAAS,GAAG,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAuC;IAEvC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IAC/C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,YAAY,CAAC,GAAG,GAAG,CAAC,CAAE,CAAC;AAChC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,CAAqB,EACrB,CAAqB;IAErB,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAsC;IAC/D,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAsC;IAC9D,OAAO,MAAM,KAAK,SAAS,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAsC;IAC/D,OAAO,MAAM,KAAK,UAAU,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * 验证状态升级(spec §4.5.2-4.5.3, P3 4.5)
3
+ *
4
+ * 升级条件(spec §4.5.2 三维证据):
5
+ * 1. evidenceCount:累积证据数量
6
+ * 2. 跨情境验证:distinctDomainTags(来自 evidence 或 source engram)
7
+ * 3. 时间稳定:自首次编码以来的天数
8
+ *
9
+ * 升级到不同状态的阈值:
10
+ * - plausible:evidenceCount ≥ 1
11
+ * - probable:evidenceCount ≥ 2 + distinctDomains ≥ 2
12
+ * - verified:evidenceCount ≥ 3 + distinctDomains ≥ 2 + ageDays ≥ stabilityDays
13
+ * - refuted:无条件(只需要 refute 证据)
14
+ *
15
+ * 证据追加规则:
16
+ * - evidence 同时追加到 engram 的所有 derives_from synapse(如果有)
17
+ * - 跨情境证据的 domainTags 从 evidence.domainTags 提取
18
+ *
19
+ * @module @co-engram/core/verification
20
+ */
21
+ import type { EngramRepository } from "../storage/repository.js";
22
+ import type { EngramId, VerificationStatus } from "../types/engram.js";
23
+ import type { VerificationEvidence } from "../generative/hypothesis.js";
24
+ /** 升级条件配置 */
25
+ export interface VerificationConditionConfig {
26
+ /** 升级到 plausible 所需的最少 evidence 数 */
27
+ readonly minEvidenceForPlausible: number;
28
+ /** 升级到 probable 所需的最少 evidence 数 */
29
+ readonly minEvidenceForProbable: number;
30
+ /** 升级到 verified 所需的最少 evidence 数 */
31
+ readonly minEvidenceForVerified: number;
32
+ /** 升级到 probable 所需的最少 distinct domainTags 数 */
33
+ readonly minDomainsForProbable: number;
34
+ /** 升级到 verified 所需的最少 distinct domainTags 数 */
35
+ readonly minDomainsForVerified: number;
36
+ /** 升级到 verified 所需的时间稳定天数(自 engram 创建起算) */
37
+ readonly minStabilityDaysForVerified: number;
38
+ }
39
+ export declare const DEFAULT_VERIFICATION_CONFIG: VerificationConditionConfig;
40
+ /**
41
+ * 升级证据(扩展自 generative 的 VerificationEvidence)
42
+ *
43
+ * 增加 `domainTags` 用于跨情境证据聚合。
44
+ * 复用 generative 模块的基础结构,避免双接口并存。
45
+ */
46
+ export interface UpgradeEvidence extends VerificationEvidence {
47
+ /** 跨情境标签:来自哪个 domain/context */
48
+ readonly domainTags?: readonly string[];
49
+ }
50
+ /** 单项条件检查结果 */
51
+ export interface ConditionCheck {
52
+ readonly key: string;
53
+ readonly required: string;
54
+ readonly actual: string;
55
+ readonly passed: boolean;
56
+ }
57
+ /** 资格检查结果 */
58
+ export interface CheckUpgradeEligibilityResult {
59
+ readonly engramId: EngramId;
60
+ readonly fromStatus: VerificationStatus | undefined;
61
+ readonly toStatus: VerificationStatus;
62
+ readonly eligible: boolean;
63
+ /** 未满足的条件 key 列表 */
64
+ readonly missing: readonly string[];
65
+ readonly checks: readonly ConditionCheck[];
66
+ readonly evidenceCount: number;
67
+ readonly distinctDomains: number;
68
+ readonly ageDays: number;
69
+ }
70
+ /**
71
+ * 检查升级资格(不写盘)
72
+ *
73
+ * 计算当前 engram 的三维证据状态,判断是否满足目标状态的升级条件。
74
+ *
75
+ * @returns CheckUpgradeEligibilityResult
76
+ */
77
+ export declare function checkUpgradeEligibility(repo: EngramRepository, engramId: EngramId, newStatus: VerificationStatus, newEvidence: UpgradeEvidence, options?: {
78
+ readonly config?: VerificationConditionConfig;
79
+ readonly nowIso?: string;
80
+ }): CheckUpgradeEligibilityResult;
81
+ /** upgradeVerification 结果 */
82
+ export interface UpgradeVerificationResult {
83
+ readonly engramId: EngramId;
84
+ readonly previousStatus: VerificationStatus | undefined;
85
+ readonly newStatus: VerificationStatus;
86
+ readonly eligible: boolean;
87
+ readonly applied: boolean;
88
+ readonly checks: readonly ConditionCheck[];
89
+ readonly evidenceAppended: boolean;
90
+ /** evidence 被追加到的 synapse ID 列表(通常 0 或 1 条 derives_from) */
91
+ readonly synapseIds: readonly string[];
92
+ readonly reason: string;
93
+ }
94
+ /**
95
+ * 升级验证状态(主入口)
96
+ *
97
+ * 行为:
98
+ * 1. 校验 engram 存在
99
+ * 2. 校验状态机合法转移(canTransition)
100
+ * 3. 检查升级条件(除非 force=true)
101
+ * 4. 落盘 verificationStatus
102
+ * 5. 追加 evidence 到所有 derives_from synapse(如果有)
103
+ *
104
+ * @param options.force 强制升级(跳过条件检查,但仍然校验状态机)。用于人工裁决。
105
+ */
106
+ export declare function upgradeVerification(repo: EngramRepository, engramId: EngramId, newStatus: VerificationStatus, evidence: UpgradeEvidence, options?: {
107
+ readonly config?: VerificationConditionConfig;
108
+ readonly nowIso?: string;
109
+ readonly force?: boolean;
110
+ }): UpgradeVerificationResult;
111
+ /**
112
+ * 反驳(refute)便捷函数
113
+ *
114
+ * 等同于 upgradeVerification(repo, engramId, 'refuted', evidence),
115
+ * 但允许从任何状态跳转。
116
+ */
117
+ export declare function refuteEngram(repo: EngramRepository, engramId: EngramId, evidence: UpgradeEvidence, options?: {
118
+ readonly nowIso?: string;
119
+ readonly force?: boolean;
120
+ }): UpgradeVerificationResult;
121
+ /**
122
+ * 批量查询一组 engram 的验证状态摘要
123
+ *
124
+ * 用于统计 / dashboard。
125
+ */
126
+ export interface VerificationStatusSummary {
127
+ readonly total: number;
128
+ readonly byStatus: Readonly<Record<VerificationStatus, number>>;
129
+ readonly refutedCount: number;
130
+ readonly verifiedCount: number;
131
+ }
132
+ export declare function summarizeVerificationStatus(repo: EngramRepository): VerificationStatusSummary;
133
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/verification/upgrade.ts"],"names":[],"mappings":"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"}