@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,356 @@
1
+ /**
2
+ * 生成式巩固(spec §5.3 机制 1,P3 4.1)
3
+ *
4
+ * 从一组相关 engram(同 topic / domain)通过 Provider 接口生成可验证 hypothesis。
5
+ *
6
+ * 流程:
7
+ * 1. 召集相关 engram(按 domainTags / contextTags 过滤;observation + fact 优先)
8
+ * 2. Provider.generate 生成候选假设(标题/正文/置信度/理由)
9
+ * 3. 自动采纳:confidence ≥ autoAdoptionThreshold → 创建 hypothesis engram
10
+ * + derives_from synapse 连接每个 source
11
+ * 4. 验证流程:verifyHypothesis 把 verificationStatus 升级为
12
+ * plausible / verified / refuted
13
+ *
14
+ * 与 REM 做梦(spec §3.2)的区别:
15
+ * - REM 是被动 sleep-time consolidation,从相似 cluster 抽象出 pattern
16
+ * - hypothesis 是主动 wake-time 推理,生成可证伪假设并保留多视角
17
+ *
18
+ * core 层不绑定 LLM;HypothesisProvider 由宿主注入。
19
+ *
20
+ * @module @co-engram/core/generative
21
+ */
22
+ import { randomUUID } from "node:crypto";
23
+ /** 默认配置 */
24
+ const DEFAULT_MIN_SOURCES = 3;
25
+ const DEFAULT_MAX_SOURCES = 10;
26
+ const DEFAULT_ADOPTION_THRESHOLD = 0.6;
27
+ /**
28
+ * 默认启发式假设生成器(无 LLM)
29
+ *
30
+ * 算法:
31
+ * 1. 收集所有 source 的 tokens(title + summary + content)
32
+ * 2. 找出 ≥ 半数 source 共现的关键词
33
+ * 3. title = "Hypothesis: 在 {topic} 中,{top1} 与 {top2} 相关"
34
+ * 4. confidence = 共现 token 数 / topTokens 期望
35
+ */
36
+ export class LocalHeuristicHypothesisProvider {
37
+ options;
38
+ constructor(options = {}) {
39
+ this.options = options;
40
+ }
41
+ generate(input) {
42
+ const topTokens = this.options.topTokens ?? 5;
43
+ const minConfidence = this.options.minConfidence ?? 0.3;
44
+ if (input.engrams.length === 0) {
45
+ return {
46
+ title: `Hypothesis: <empty> (${input.topic})`,
47
+ content: "",
48
+ summary: "空候选",
49
+ confidence: 0,
50
+ reason: "no source engrams provided",
51
+ };
52
+ }
53
+ const tokenFreq = new Map();
54
+ for (const e of input.engrams) {
55
+ const tokens = extractTokens(`${e.title} ${e.summary} ${e.content}`);
56
+ const unique = new Set(tokens);
57
+ for (const t of unique) {
58
+ tokenFreq.set(t, (tokenFreq.get(t) ?? 0) + 1);
59
+ }
60
+ }
61
+ // 共现 = 至少出现在 2 个 source 中(或半数以上,取大者)
62
+ const threshold = Math.max(2, Math.ceil(input.engrams.length / 2));
63
+ const common = [...tokenFreq.entries()]
64
+ .filter(([, c]) => c >= threshold)
65
+ .sort((a, b) => b[1] - a[1])
66
+ .slice(0, topTokens)
67
+ .map(([t]) => t);
68
+ if (common.length === 0) {
69
+ return {
70
+ title: `Hypothesis: ${input.topic} 存在未被抽象的共同点`,
71
+ content: "候选 source 共现关键词不足,无法形成可验证假设",
72
+ summary: "低相似度候选",
73
+ confidence: minConfidence,
74
+ reason: "no common tokens above threshold",
75
+ };
76
+ }
77
+ const title = `Hypothesis: 在 ${input.topic} 中,${common.slice(0, 3).join(" / ")} 存在共现规律`;
78
+ const content = [
79
+ `# ${title}`,
80
+ "",
81
+ `**候选 source**:${input.engrams.length} 个 engram`,
82
+ "",
83
+ "**共现关键词**:",
84
+ ...common.map((t) => `- ${t}`),
85
+ "",
86
+ "**候选来源**:",
87
+ ...input.engrams.map((e) => `- [${e.id}] ${e.title}`),
88
+ "",
89
+ "---",
90
+ "",
91
+ "**验证建议**:",
92
+ `- 收集更多 ${common[0]} 相关 observation`,
93
+ "- 寻找反例(contradicts)",
94
+ `- 跨情境验证(不同 ${input.engrams[0].domainTags.join(",")} 域)`,
95
+ ].join("\n");
96
+ // confidence = 每个 common token 覆盖率的平均值([0,1])
97
+ // 覆盖率 = 出现该 token 的 source 数 / 总 source 数
98
+ // 例如 5 source 中 adb 全覆盖(1.0)、wireless 出现 3 次(0.6)
99
+ // → avg = 0.8
100
+ const coverage = common.map((t) => tokenFreq.get(t) / input.engrams.length);
101
+ const confidence = coverage.reduce((a, b) => a + b, 0) / coverage.length;
102
+ return {
103
+ title,
104
+ content,
105
+ summary: `${common.length} 个共现关键词`,
106
+ confidence,
107
+ reason: `${common.length} common tokens across ${input.engrams.length} sources`,
108
+ };
109
+ }
110
+ }
111
+ /**
112
+ * 生成假设(主入口)
113
+ *
114
+ * 行为:
115
+ * - 召集 source:按 domainTags/contextTags 过滤,observation/fact 优先
116
+ * - source 数量 < minSources → 不生成(返回空 hypotheses)
117
+ * - 调 Provider.generate → proposal
118
+ * - confidence ≥ autoAdoptionThreshold → 创建 hypothesis engram + derives_from synapse
119
+ *
120
+ * @returns GenerateHypothesesResult
121
+ */
122
+ export async function generateHypotheses(repo, provider, input) {
123
+ const startMs = Date.now();
124
+ const minSources = input.minSources ?? DEFAULT_MIN_SOURCES;
125
+ const maxSources = input.maxSources ?? DEFAULT_MAX_SOURCES;
126
+ const autoAdoptionThreshold = input.autoAdoptionThreshold ?? DEFAULT_ADOPTION_THRESHOLD;
127
+ const persist = input.persist ?? true;
128
+ const dryRun = input.dryRun ?? false;
129
+ const nowIso = input.nowIso ?? new Date().toISOString();
130
+ // 召集候选 source
131
+ const candidates = collectSources(repo, {
132
+ domainTags: input.domainTags,
133
+ contextTags: input.contextTags,
134
+ minSources,
135
+ maxSources,
136
+ });
137
+ if (candidates.length < minSources) {
138
+ return {
139
+ topic: input.topic,
140
+ candidateCount: candidates.length,
141
+ hypotheses: [],
142
+ durationMs: Date.now() - startMs,
143
+ persisted: false,
144
+ };
145
+ }
146
+ // Provider 生成
147
+ const providerInput = {
148
+ topic: input.topic,
149
+ engrams: candidates.map((e) => ({
150
+ id: e.id,
151
+ title: e.title,
152
+ content: e.content,
153
+ summary: e.summary,
154
+ domainTags: e.domainTags,
155
+ kind: e.kind,
156
+ })),
157
+ };
158
+ const output = await provider.generate(providerInput);
159
+ const proposal = {
160
+ ...output,
161
+ sourceIds: candidates.map((e) => e.id),
162
+ };
163
+ const adopted = !dryRun && output.confidence >= autoAdoptionThreshold;
164
+ let engramId = null;
165
+ let reason;
166
+ if (dryRun) {
167
+ reason = `dryRun; confidence=${output.confidence.toFixed(2)}`;
168
+ }
169
+ else if (!adopted) {
170
+ reason = `confidence ${output.confidence.toFixed(2)} < threshold ${autoAdoptionThreshold}`;
171
+ }
172
+ else {
173
+ // 自动采纳:创建 hypothesis engram
174
+ const domainTags = input.domainTags
175
+ ? [...input.domainTags]
176
+ : [...new Set(candidates.flatMap((e) => [...e.domainTags]))].sort();
177
+ const newEngram = repo.createEngram({
178
+ title: proposal.title,
179
+ content: proposal.content,
180
+ summary: proposal.summary,
181
+ kind: "hypothesis",
182
+ domainTags,
183
+ importance: 0.6,
184
+ confidence: proposal.confidence,
185
+ sourceType: "inferred",
186
+ createdBy: input.createdBy,
187
+ });
188
+ engramId = newEngram.id;
189
+ // 验证状态初始为 unverified
190
+ repo.updateVerificationStatus(newEngram.id, "unverified");
191
+ // derives_from 每个 source
192
+ for (const sourceId of proposal.sourceIds) {
193
+ const synapse = {
194
+ id: `hyp-${randomUUID().slice(0, 12)}`,
195
+ from: newEngram.id,
196
+ to: sourceId,
197
+ kind: "derives_from",
198
+ weight: 0.7,
199
+ direction: "directional",
200
+ evidence: [
201
+ {
202
+ description: `hypothesis generated from ${proposal.sourceIds.length} sources (confidence=${proposal.confidence.toFixed(2)})`,
203
+ addedAt: nowIso,
204
+ addedBy: input.createdBy,
205
+ confidence: proposal.confidence,
206
+ },
207
+ ],
208
+ createdBy: input.createdBy,
209
+ createdAt: nowIso,
210
+ updatedAt: nowIso,
211
+ retrievalWeight: 0.7,
212
+ };
213
+ repo.addOutgoingSynapse(newEngram.id, synapse);
214
+ }
215
+ persist; // no-op(保留语义)
216
+ reason = `adopted; confidence=${output.confidence.toFixed(2)}`;
217
+ }
218
+ return {
219
+ topic: input.topic,
220
+ candidateCount: candidates.length,
221
+ hypotheses: [
222
+ {
223
+ engramId,
224
+ proposal,
225
+ adopted,
226
+ reason,
227
+ },
228
+ ],
229
+ durationMs: Date.now() - startMs,
230
+ persisted: persist && !dryRun,
231
+ };
232
+ }
233
+ /**
234
+ * 验证假设(升级或反驳)
235
+ *
236
+ * verdict 对应 verificationStatus:
237
+ * - plausible → plausible
238
+ * - verified → verified
239
+ * - refuted → refuted
240
+ *
241
+ * 行为:
242
+ * 1. 把 engram.verificationStatus 设为 newStatus
243
+ * 2. 追加 evidence 到所有 derives_from synapse(如果有)
244
+ *
245
+ * 注意:本函数只更新 engram 自身;如需对 source 触发 reliability
246
+ * 更新,由上层调用 provenance.applyProvenanceSignal。
247
+ */
248
+ export function verifyHypothesis(repo, engramId, verdict, evidence, options = {}) {
249
+ if (!repo.exists(engramId)) {
250
+ throw new Error(`Engram not found: ${engramId}`);
251
+ }
252
+ const nowIso = options.nowIso ?? new Date().toISOString();
253
+ const engram = repo.readEngram(engramId);
254
+ if (engram.kind !== "hypothesis") {
255
+ throw new Error(`Engram ${engramId} is not a hypothesis (kind=${engram.kind})`);
256
+ }
257
+ const statusMap = {
258
+ plausible: "plausible",
259
+ verified: "verified",
260
+ refuted: "refuted",
261
+ };
262
+ const newStatus = statusMap[verdict];
263
+ const previousStatus = engram.verificationStatus;
264
+ repo.updateVerificationStatus(engramId, newStatus);
265
+ // 追加 evidence 到 derives_from synapse
266
+ const synapseFile = repo.readSynapses(engramId);
267
+ const derivesSynapse = synapseFile.outgoing.find((s) => s.kind === "derives_from");
268
+ let evidenceAppended = false;
269
+ let synapseId;
270
+ if (derivesSynapse) {
271
+ const newEvidence = [
272
+ ...derivesSynapse.evidence,
273
+ {
274
+ description: `[${verdict}] ${evidence.description}`,
275
+ addedAt: nowIso,
276
+ addedBy: evidence.verifiedBy,
277
+ confidence: evidence.confidence,
278
+ },
279
+ ];
280
+ repo.replaceSynapseEvidence(engramId, derivesSynapse.id, newEvidence);
281
+ evidenceAppended = true;
282
+ synapseId = derivesSynapse.id;
283
+ }
284
+ return {
285
+ engramId,
286
+ previousStatus,
287
+ newStatus,
288
+ evidenceAppended,
289
+ synapseId,
290
+ };
291
+ }
292
+ // ============================================================
293
+ // 辅助函数
294
+ // ============================================================
295
+ /**
296
+ * 召集 source engram:按 domainTags/contextTags 过滤
297
+ *
298
+ * 优先级:observation > fact > pattern > procedure(不召回其他 hypothesis)
299
+ */
300
+ function collectSources(repo, options) {
301
+ const kindPriority = {
302
+ observation: 0,
303
+ fact: 1,
304
+ pattern: 2,
305
+ procedure: 3,
306
+ hypothesis: 4, // 不召回其他 hypothesis
307
+ };
308
+ const all = repo.listEngrams();
309
+ const candidates = [];
310
+ for (const entry of all) {
311
+ const engram = repo.readEngram(entry.id);
312
+ if (engram.status !== "active")
313
+ continue;
314
+ if (engram.kind === "hypothesis")
315
+ continue;
316
+ // domainTags 过滤
317
+ if (options.domainTags && options.domainTags.length > 0) {
318
+ const hasOverlap = options.domainTags.some((t) => engram.domainTags.includes(t));
319
+ if (!hasOverlap)
320
+ continue;
321
+ }
322
+ // contextTags 过滤
323
+ if (options.contextTags && options.contextTags.length > 0) {
324
+ const hasOverlap = options.contextTags.some((t) => engram.contextTags.includes(t));
325
+ if (!hasOverlap)
326
+ continue;
327
+ }
328
+ candidates.push(engram);
329
+ }
330
+ // 排序:kind 优先级 + id 字典序(稳定)
331
+ candidates.sort((a, b) => {
332
+ const pa = kindPriority[a.kind];
333
+ const pb = kindPriority[b.kind];
334
+ if (pa !== pb)
335
+ return pa - pb;
336
+ return a.id < b.id ? -1 : 1;
337
+ });
338
+ return candidates.slice(0, options.maxSources);
339
+ }
340
+ /** 简易 token 提取(与 dedup / triggered 一致:英文 word + 中文 bigram) */
341
+ function extractTokens(content) {
342
+ const trimmed = content.trim();
343
+ if (!trimmed)
344
+ return [];
345
+ const tokens = [];
346
+ const enWords = trimmed.match(/[A-Za-z][A-Za-z0-9_-]{1,}/g) ?? [];
347
+ tokens.push(...enWords.map((w) => w.toLowerCase()));
348
+ const cn = trimmed.match(/[一-鿿]+/g) ?? [];
349
+ for (const seg of cn) {
350
+ for (let i = 0; i < seg.length - 1; i++) {
351
+ tokens.push(seg.slice(i, i + 2));
352
+ }
353
+ }
354
+ return tokens;
355
+ }
356
+ //# sourceMappingURL=hypothesis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hypothesis.js","sourceRoot":"","sources":["../../src/generative/hypothesis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2GzC,WAAW;AACX,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC;;;;;;;;GAQG;AACH,MAAM,OAAO,gCAAgC;IAExB;IADnB,YACmB,UAGb,EAAE;QAHW,YAAO,GAAP,OAAO,CAGlB;IACL,CAAC;IAEJ,QAAQ,CAAC,KAA8B;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,GAAG,CAAC;QAExD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,KAAK,EAAE,wBAAwB,KAAK,CAAC,KAAK,GAAG;gBAC7C,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,4BAA4B;aACrC,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC;aACjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;aACnB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,KAAK,EAAE,eAAe,KAAK,CAAC,KAAK,aAAa;gBAC9C,OAAO,EAAE,6BAA6B;gBACtC,OAAO,EAAE,QAAQ;gBACjB,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE,kCAAkC;aAC3C,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,iBAAiB,KAAK,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACxF,MAAM,OAAO,GAAG;YACd,KAAK,KAAK,EAAE;YACZ,EAAE;YACF,iBAAiB,KAAK,CAAC,OAAO,CAAC,MAAM,WAAW;YAChD,EAAE;YACF,YAAY;YACZ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,EAAE;YACF,WAAW;YACX,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YACrD,EAAE;YACF,KAAK;YACL,EAAE;YACF,WAAW;YACX,UAAU,MAAM,CAAC,CAAC,CAAC,iBAAiB;YACpC,qBAAqB;YACrB,cAAc,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;SAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,8CAA8C;QAC9C,4CAA4C;QAC5C,kDAAkD;QAClD,gBAAgB;QAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAChD,CAAC;QACF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;QACzE,OAAO;YACL,KAAK;YACL,OAAO;YACP,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,SAAS;YAClC,UAAU;YACV,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,yBAAyB,KAAK,CAAC,OAAO,CAAC,MAAM,UAAU;SAChF,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAsB,EACtB,QAA4B,EAC5B,KAA8B;IAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,mBAAmB,CAAC;IAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,mBAAmB,CAAC;IAC3D,MAAM,qBAAqB,GACzB,KAAK,CAAC,qBAAqB,IAAI,0BAA0B,CAAC;IAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAExD,cAAc;IACd,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE;QACtC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU;QACV,UAAU;KACX,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QACnC,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,cAAc,EAAE,UAAU,CAAC,MAAM;YACjC,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAChC,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAED,cAAc;IACd,MAAM,aAAa,GAA4B;QAC7C,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC,CAAC;KACJ,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAuB;QACnC,GAAG,MAAM;QACT,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,qBAAqB,CAAC;IACtE,IAAI,QAAQ,GAAoB,IAAI,CAAC;IACrC,IAAI,MAAc,CAAC;IAEnB,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,sBAAsB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,CAAC;SAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,GAAG,cAAc,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,qBAAqB,EAAE,CAAC;IAC7F,CAAC;SAAM,CAAC;QACN,4BAA4B;QAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU;YACjC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;YACvB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEtE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,IAAI,EAAE,YAAY;YAClB,UAAU;YACV,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU,EAAE,UAAU;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;QACH,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;QAExB,qBAAqB;QACrB,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAE1D,yBAAyB;QACzB,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAY;gBACvB,EAAE,EAAE,OAAO,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;gBACtC,IAAI,EAAE,SAAS,CAAC,EAAE;gBAClB,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE;oBACR;wBACE,WAAW,EAAE,6BAA6B,QAAQ,CAAC,SAAS,CAAC,MAAM,wBAAwB,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;wBAC5H,OAAO,EAAE,MAAM;wBACf,OAAO,EAAE,KAAK,CAAC,SAAS;wBACxB,UAAU,EAAE,QAAQ,CAAC,UAAU;qBAChC;iBACF;gBACD,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,MAAM;gBACjB,SAAS,EAAE,MAAM;gBACjB,eAAe,EAAE,GAAG;aACrB,CAAC;YACF,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,CAAC,CAAC,cAAc;QACvB,MAAM,GAAG,uBAAuB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,cAAc,EAAE,UAAU,CAAC,MAAM;QACjC,UAAU,EAAE;YACV;gBACE,QAAQ;gBACR,QAAQ;gBACR,OAAO;gBACP,MAAM;aACP;SACF;QACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;QAChC,SAAS,EAAE,OAAO,IAAI,CAAC,MAAM;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAsB,EACtB,QAAkB,EAClB,OAA0B,EAC1B,QAA8B,EAC9B,UAA+B,EAAE;IAEjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,UAAU,QAAQ,8BAA8B,MAAM,CAAC,IAAI,GAAG,CAC/D,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAkD;QAC/D,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,SAAS;KACnB,CAAC;IACF,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAErC,MAAM,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC;IACjD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEnD,qCAAqC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CACjC,CAAC;IACF,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,SAA6B,CAAC;IAElC,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG;YAClB,GAAG,cAAc,CAAC,QAAQ;YAC1B;gBACE,WAAW,EAAE,IAAI,OAAO,KAAK,QAAQ,CAAC,WAAW,EAAE;gBACnD,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,QAAQ,CAAC,UAAU;gBAC5B,UAAU,EAAE,QAAQ,CAAC,UAAU;aAChC;SACF,CAAC;QACF,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACtE,gBAAgB,GAAG,IAAI,CAAC;QACxB,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC;IAChC,CAAC;IAED,OAAO;QACL,QAAQ;QACR,cAAc;QACd,SAAS;QACT,gBAAgB;QAChB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,OAAO;AACP,+DAA+D;AAE/D;;;;GAIG;AACH,SAAS,cAAc,CACrB,IAAsB,EACtB,OAKC;IAED,MAAM,YAAY,GAAmC;QACnD,WAAW,EAAE,CAAC;QACd,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC,EAAE,mBAAmB;KACnC,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;YAAE,SAAS;QACzC,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY;YAAE,SAAS;QAE3C,gBAAgB;QAChB,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC9B,CAAC;YACF,IAAI,CAAC,UAAU;gBAAE,SAAS;QAC5B,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAChD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC/B,CAAC;YACF,IAAI,CAAC,UAAU;gBAAE,SAAS;QAC5B,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,2BAA2B;IAC3B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,8DAA8D;AAC9D,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,IAAI,EAAE,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,EAAE,EAAE,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Generative 模块 barrel(P3 4.1-4.3)
3
+ *
4
+ * @module @co-engram/core/generative
5
+ */
6
+ export * from "./hypothesis.js";
7
+ export * from "./gap-detector.js";
8
+ export * from "./cross-pollinate.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generative/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Generative 模块 barrel(P3 4.1-4.3)
3
+ *
4
+ * @module @co-engram/core/generative
5
+ */
6
+ export * from "./hypothesis.js";
7
+ export * from "./gap-detector.js";
8
+ export * from "./cross-pollinate.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generative/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Graph View 自动聚类(spec §12.8,P3 4.7.3)
3
+ *
4
+ * 当节点数超过阈值(默认 5000)时,按 domain 自动折叠为超节点(super-node)。
5
+ * 用户点击 super-node 时再展开子图。
6
+ *
7
+ * 聚类策略:
8
+ * - 主聚类维度:domainTags[0](与 domain-cluster 布局一致)
9
+ * - 二级聚类:kind(同 domain 内按 kind 分子簇)
10
+ * - 边聚合:跨簇的边被合并为簇间边(带 weight sum)
11
+ *
12
+ * 输出:ClusteredGraph(superNodes + superEdges)
13
+ *
14
+ * @module @co-engram/core/graph
15
+ */
16
+ import type { GraphSnapshot, SnapshotNode, SnapshotEdge } from "./snapshot.js";
17
+ /** 节点数阈值(spec §12.8:> 5000 节点时启用聚类) */
18
+ export declare const DEFAULT_CLUSTER_THRESHOLD = 5000;
19
+ /** 每个超节点最少包含的原始节点数(少于则不合并) */
20
+ export declare const DEFAULT_MIN_CLUSTER_SIZE = 5;
21
+ /** 超节点(聚类后的虚拟节点) */
22
+ export interface SuperNode {
23
+ /** Cluster ID:`cluster:<domain>:<kind>` 或 `cluster:<domain>` */
24
+ readonly id: string;
25
+ /** 显示标签 */
26
+ readonly label: string;
27
+ /** 主 domain */
28
+ readonly domain: string;
29
+ /** 主 kind(如果按 kind 二级聚类) */
30
+ readonly kind?: string;
31
+ /** 包含的原始节点 ID 列表 */
32
+ readonly memberIds: readonly string[];
33
+ /** 成员数 */
34
+ readonly memberCount: number;
35
+ /** 派生:平均 importance */
36
+ readonly avgImportance: number;
37
+ /** 派生:平均 retrievalCount */
38
+ readonly totalRetrievalCount: number;
39
+ /** 派生:总 effectiveRetrievals */
40
+ readonly totalEffectiveRetrievals: number;
41
+ /** 派生:是否 hub 簇(memberCount ≥ hubClusterSize) */
42
+ readonly isHubCluster: boolean;
43
+ }
44
+ /** 超边(聚类后的虚拟边) */
45
+ export interface SuperEdge {
46
+ readonly id: string;
47
+ readonly from: string;
48
+ readonly to: string;
49
+ /** 聚合的原始边数 */
50
+ readonly aggregatedCount: number;
51
+ /** 总 weight(求和) */
52
+ readonly totalWeight: number;
53
+ /** 主导 kind(出现频率最高的) */
54
+ readonly dominantKind: string;
55
+ /** 是否含 contradicts(至少一条原始边是 contradicts) */
56
+ readonly hasContradiction: boolean;
57
+ }
58
+ /** 聚类后的图 */
59
+ export interface ClusteredGraph {
60
+ readonly superNodes: readonly SuperNode[];
61
+ readonly superEdges: readonly SuperEdge[];
62
+ /** 未被聚类的独立节点(memberCount < minClusterSize) */
63
+ readonly standaloneNodes: readonly SnapshotNode[];
64
+ /** 未被聚类的独立边 */
65
+ readonly standaloneEdges: readonly SnapshotEdge[];
66
+ readonly stats: ClusterStats;
67
+ }
68
+ export interface ClusterStats {
69
+ readonly totalSuperNodes: number;
70
+ readonly totalSuperEdges: number;
71
+ readonly totalStandaloneNodes: number;
72
+ /** 聚类压缩比 = superNodes / originalNodes */
73
+ readonly compressionRatio: number;
74
+ /** 最大簇大小 */
75
+ readonly maxClusterSize: number;
76
+ readonly avgClusterSize: number;
77
+ }
78
+ export interface ClusterOptions {
79
+ /** 启用阈值:节点数 > threshold 才聚类(默认 5000) */
80
+ readonly threshold?: number;
81
+ /** 最小簇大小(小于则作为 standalone 保留) */
82
+ readonly minClusterSize?: number;
83
+ /** hub 簇阈值(memberCount ≥ 此值视为 hub) */
84
+ readonly hubClusterSize?: number;
85
+ /** 二级聚类:同 domain 内按 kind 分子簇(默认 true) */
86
+ readonly secondaryByKind?: boolean;
87
+ }
88
+ export declare const DEFAULT_HUB_CLUSTER_SIZE = 50;
89
+ /**
90
+ * 主聚类函数
91
+ *
92
+ * 行为:
93
+ * 1. 节点数 ≤ threshold → 直接返回(不聚类)
94
+ * 2. 按 domain 分组(domainTags[0])
95
+ * 3. 可选:同 domain 内按 kind 二级分组
96
+ * 4. 每个 size ≥ minClusterSize 的组成为一个 SuperNode
97
+ * 5. 边聚合:跨 super-node 的边合并
98
+ *
99
+ * @returns ClusteredGraph
100
+ */
101
+ export declare function clusterSnapshot(snapshot: GraphSnapshot, options?: ClusterOptions): ClusteredGraph;
102
+ /**
103
+ * 展开一个 super-node:返回其成员节点的子图
104
+ *
105
+ * 用于"点击 super-node 展开子图"场景(spec §12.8)。
106
+ */
107
+ export declare function expandSuperNode(snapshot: GraphSnapshot, superNode: SuperNode): {
108
+ readonly nodes: readonly SnapshotNode[];
109
+ readonly edges: readonly SnapshotEdge[];
110
+ };
111
+ /**
112
+ * 判断是否需要聚类
113
+ *
114
+ * 工具函数:UI 层可以根据节点数决定是否切换到聚类模式。
115
+ */
116
+ export declare function shouldCluster(nodeCount: number, threshold?: number): boolean;
117
+ //# sourceMappingURL=clustering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clustering.d.ts","sourceRoot":"","sources":["../../src/graph/clustering.ts"],"names":[],"mappings":"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"}