@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,95 @@
1
+ /**
2
+ * Engram / Synapse 磁盘字段名双语映射
3
+ *
4
+ * 设计要点:
5
+ * - 内存运行时字段名永远是英文(`EngramFrontmatter` interface 的硬约束)
6
+ * - 磁盘 YAML 字段名根据当前 language 决定(英文 identity / 中文映射)
7
+ * - `__lang` / `__语言` 是保留字段:写入时填入,读取后剥离(不进入运行时对象)
8
+ * - 反向索引在模块加载时一次性构建(O(1) lookup)
9
+ *
10
+ * @module @co-engram/core/i18n
11
+ */
12
+ import type { Language } from "./types.js";
13
+ /**
14
+ * Frontmatter 中标记语言的保留字段(写入时填入,delocalize 时剥离)
15
+ *
16
+ * 英文模式:`__lang: en`
17
+ * 中文模式:`__语言: zh`
18
+ */
19
+ export declare const LANG_MARKER_FIELD_EN = "__lang";
20
+ export declare const LANG_MARKER_FIELD_ZH = "__\u8BED\u8A00";
21
+ /**
22
+ * Engram frontmatter 字段映射
23
+ *
24
+ * key = 运行时英文字段名(与 `EngramFrontmatter` interface 对齐)
25
+ * value = 该语言下的磁盘字段名
26
+ */
27
+ export declare const ENGRAM_FIELD_MAP: Readonly<Record<Language, Readonly<Record<string, string>>>>;
28
+ /**
29
+ * Synapse 顶层字段映射
30
+ */
31
+ export declare const SYNAPSE_FIELD_MAP: Readonly<Record<Language, Readonly<Record<string, string>>>>;
32
+ /**
33
+ * SynapseEvidence 嵌套字段映射(数组元素的 shape)
34
+ */
35
+ export declare const SYNAPSE_EVIDENCE_FIELD_MAP: Readonly<Record<Language, Readonly<Record<string, string>>>>;
36
+ /**
37
+ * SynapseResolutionState 嵌套字段映射
38
+ */
39
+ export declare const SYNAPSE_RESOLUTION_FIELD_MAP: Readonly<Record<Language, Readonly<Record<string, string>>>>;
40
+ export declare const ENGRAM_FIELD_REVERSE_MAP: Readonly<Record<string, string>>;
41
+ export declare const SYNAPSE_FIELD_REVERSE_MAP: Readonly<Record<string, string>>;
42
+ export declare const SYNAPSE_EVIDENCE_FIELD_REVERSE_MAP: Readonly<Record<string, string>>;
43
+ export declare const SYNAPSE_RESOLUTION_FIELD_REVERSE_MAP: Readonly<Record<string, string>>;
44
+ /**
45
+ * 把对象的所有 key 按 fieldMap 替换为目标语言的磁盘字段名
46
+ *
47
+ * - 值保持不变(包括嵌套数组/对象,调用方负责递归)
48
+ * - 写入前调用
49
+ *
50
+ * @param obj 原始对象(运行时英文 keys)
51
+ * @param language 目标语言
52
+ * @param fieldMap 字段映射表(ENGRAM_FIELD_MAP / SYNAPSE_FIELD_MAP / ...)
53
+ * @param options.attachLangMarker 是否追加 `__lang` / `__语言` 标记字段
54
+ */
55
+ export declare function localizeKeys<T extends Record<string, unknown>>(obj: T, language: Language, fieldMap: Readonly<Record<Language, Readonly<Record<string, string>>>>, options?: {
56
+ attachLangMarker?: boolean;
57
+ }): Record<string, unknown>;
58
+ /**
59
+ * 把磁盘读出的对象 key 归一化为运行时英文字段名
60
+ *
61
+ * - 反向索引找不到的 key 原样保留(兼容未知字段 / 扩展字段)
62
+ * - 剥离语言标记字段(`__lang` / `__语言`),返回值附带检测到的语言
63
+ *
64
+ * @param rawObj 磁盘读出的对象(YAML parse 结果)
65
+ * @param reverseMap 反向索引
66
+ */
67
+ export declare function delocalizeKeys(rawObj: Record<string, unknown>, reverseMap: Readonly<Record<string, string>>): {
68
+ normalized: Record<string, unknown>;
69
+ detectedLanguage: Language | undefined;
70
+ };
71
+ /**
72
+ * 递归 localize Synapse 完整对象(顶层 + evidence[] + resolutionState)
73
+ *
74
+ * Synapse 的嵌套结构需要递归处理,不能只映射顶层。
75
+ */
76
+ export declare function localizeSynapse(synapse: Record<string, unknown>, language: Language, options?: {
77
+ attachLangMarker?: boolean;
78
+ }): Record<string, unknown>;
79
+ /**
80
+ * 递归 delocalize Synapse 完整对象(磁盘 → 运行时)
81
+ */
82
+ export declare function delocalizeSynapse(rawSynapse: Record<string, unknown>): {
83
+ normalized: Record<string, unknown>;
84
+ detectedLanguage: Language | undefined;
85
+ };
86
+ /**
87
+ * 启发式检测:磁盘读出的对象是否使用中文字段名
88
+ *
89
+ * 仅在 `__lang` / `__语言` 标记缺失时使用。检测条件:
90
+ * - 对象包含任意一个中文 keys(来自 ENGRAM_FIELD_MAP.zh / SYNAPSE_FIELD_MAP.zh)
91
+ *
92
+ * @param rawKeys 磁盘读出的对象的所有 key
93
+ */
94
+ export declare function detectChineseKeys(rawKeys: readonly string[]): boolean;
95
+ //# sourceMappingURL=field-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-names.d.ts","sourceRoot":"","sources":["../../src/i18n/field-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAC7C,eAAO,MAAM,oBAAoB,mBAAS,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CACrC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CA4EnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CACtC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAkCnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAC/C,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAgBnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CACjD,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CA0BnD,CAAC;AAwBF,eAAO,MAAM,wBAAwB,kCAAoC,CAAC;AAC1E,eAAO,MAAM,yBAAyB,kCAAqC,CAAC;AAC5E,eAAO,MAAM,kCAAkC,kCAE9C,CAAC;AACF,eAAO,MAAM,oCAAoC,kCAEhD,CAAC;AAUF;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,GAAG,EAAE,CAAC,EACN,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EACtE,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC3C;IACD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,gBAAgB,EAAE,QAAQ,GAAG,SAAS,CAAC;CACxC,CAeA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+BzB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACtE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,gBAAgB,EAAE,QAAQ,GAAG,SAAS,CAAC;CACxC,CA6BA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAQrE"}
@@ -0,0 +1,329 @@
1
+ /**
2
+ * Engram / Synapse 磁盘字段名双语映射
3
+ *
4
+ * 设计要点:
5
+ * - 内存运行时字段名永远是英文(`EngramFrontmatter` interface 的硬约束)
6
+ * - 磁盘 YAML 字段名根据当前 language 决定(英文 identity / 中文映射)
7
+ * - `__lang` / `__语言` 是保留字段:写入时填入,读取后剥离(不进入运行时对象)
8
+ * - 反向索引在模块加载时一次性构建(O(1) lookup)
9
+ *
10
+ * @module @co-engram/core/i18n
11
+ */
12
+ /**
13
+ * Frontmatter 中标记语言的保留字段(写入时填入,delocalize 时剥离)
14
+ *
15
+ * 英文模式:`__lang: en`
16
+ * 中文模式:`__语言: zh`
17
+ */
18
+ export const LANG_MARKER_FIELD_EN = "__lang";
19
+ export const LANG_MARKER_FIELD_ZH = "__语言";
20
+ /**
21
+ * Engram frontmatter 字段映射
22
+ *
23
+ * key = 运行时英文字段名(与 `EngramFrontmatter` interface 对齐)
24
+ * value = 该语言下的磁盘字段名
25
+ */
26
+ export const ENGRAM_FIELD_MAP = {
27
+ en: {
28
+ id: "id",
29
+ title: "title",
30
+ slug: "slug",
31
+ kind: "kind",
32
+ kinds: "kinds",
33
+ tags: "tags",
34
+ domainTags: "domainTags",
35
+ summary: "summary",
36
+ contentHash: "contentHash",
37
+ contentSize: "contentSize",
38
+ createdBy: "createdBy",
39
+ createdAt: "createdAt",
40
+ updatedBy: "updatedBy",
41
+ updatedAt: "updatedAt",
42
+ version: "version",
43
+ importance: "importance",
44
+ confidence: "confidence",
45
+ emotionalValence: "emotionalValence",
46
+ sourceType: "sourceType",
47
+ evidenceCount: "evidenceCount",
48
+ retrievalCount: "retrievalCount",
49
+ effectiveRetrievals: "effectiveRetrievals",
50
+ failedUses: "failedUses",
51
+ reinforcementScore: "reinforcementScore",
52
+ decayHalfLifeDays: "decayHalfLifeDays",
53
+ lastRetrievedAt: "lastRetrievedAt",
54
+ lastEffectiveAt: "lastEffectiveAt",
55
+ lastRetrievalScore: "lastRetrievalScore",
56
+ forcedFreshness: "forcedFreshness",
57
+ status: "status",
58
+ visibility: "visibility",
59
+ verificationStatus: "verificationStatus",
60
+ encodingContext: "encodingContext",
61
+ perspective: "perspective",
62
+ contextTags: "contextTags",
63
+ },
64
+ zh: {
65
+ id: "标识",
66
+ title: "标题",
67
+ slug: "别名",
68
+ kind: "类型",
69
+ kinds: "类型列表",
70
+ tags: "标签",
71
+ domainTags: "领域标签",
72
+ summary: "摘要",
73
+ contentHash: "内容哈希",
74
+ contentSize: "内容大小",
75
+ createdBy: "创建者",
76
+ createdAt: "创建时间",
77
+ updatedBy: "更新者",
78
+ updatedAt: "更新时间",
79
+ version: "版本",
80
+ importance: "重要性",
81
+ confidence: "置信度",
82
+ emotionalValence: "情感极性",
83
+ sourceType: "来源类型",
84
+ evidenceCount: "证据数",
85
+ retrievalCount: "检索次数",
86
+ effectiveRetrievals: "有效检索数",
87
+ failedUses: "失败使用数",
88
+ reinforcementScore: "强化分数",
89
+ decayHalfLifeDays: "半衰期天数",
90
+ lastRetrievedAt: "最近检索时间",
91
+ lastEffectiveAt: "最近有效时间",
92
+ lastRetrievalScore: "最近检索分数",
93
+ forcedFreshness: "强制新鲜度",
94
+ status: "状态",
95
+ visibility: "可见性",
96
+ verificationStatus: "验证状态",
97
+ encodingContext: "编码情境",
98
+ perspective: "视角",
99
+ contextTags: "情境标签",
100
+ },
101
+ };
102
+ /**
103
+ * Synapse 顶层字段映射
104
+ */
105
+ export const SYNAPSE_FIELD_MAP = {
106
+ en: {
107
+ id: "id",
108
+ from: "from",
109
+ to: "to",
110
+ kind: "kind",
111
+ weight: "weight",
112
+ direction: "direction",
113
+ evidence: "evidence",
114
+ createdBy: "createdBy",
115
+ createdAt: "createdAt",
116
+ updatedAt: "updatedAt",
117
+ retrievalWeight: "retrievalWeight",
118
+ sourceSemantic: "sourceSemantic",
119
+ targetSemantic: "targetSemantic",
120
+ resolutionState: "resolutionState",
121
+ },
122
+ zh: {
123
+ id: "标识",
124
+ from: "起点",
125
+ to: "终点",
126
+ kind: "类型",
127
+ weight: "权重",
128
+ direction: "方向",
129
+ evidence: "证据",
130
+ createdBy: "创建者",
131
+ createdAt: "创建时间",
132
+ updatedAt: "更新时间",
133
+ retrievalWeight: "检索权重",
134
+ sourceSemantic: "源语义",
135
+ targetSemantic: "目标语义",
136
+ resolutionState: "裁决状态",
137
+ },
138
+ };
139
+ /**
140
+ * SynapseEvidence 嵌套字段映射(数组元素的 shape)
141
+ */
142
+ export const SYNAPSE_EVIDENCE_FIELD_MAP = {
143
+ en: {
144
+ description: "description",
145
+ source: "source",
146
+ confidence: "confidence",
147
+ addedAt: "addedAt",
148
+ addedBy: "addedBy",
149
+ },
150
+ zh: {
151
+ description: "描述",
152
+ source: "来源",
153
+ confidence: "置信度",
154
+ addedAt: "添加时间",
155
+ addedBy: "添加者",
156
+ },
157
+ };
158
+ /**
159
+ * SynapseResolutionState 嵌套字段映射
160
+ */
161
+ export const SYNAPSE_RESOLUTION_FIELD_MAP = {
162
+ en: {
163
+ status: "status",
164
+ phase: "phase",
165
+ verdict: "verdict",
166
+ rationale: "rationale",
167
+ confidence: "confidence",
168
+ escalatedTo: "escalatedTo",
169
+ escalatedAt: "escalatedAt",
170
+ expiresAt: "expiresAt",
171
+ resolvedAt: "resolvedAt",
172
+ resolvedBy: "resolvedBy",
173
+ },
174
+ zh: {
175
+ status: "状态",
176
+ phase: "阶段",
177
+ verdict: "裁决",
178
+ rationale: "理由",
179
+ confidence: "置信度",
180
+ escalatedTo: "升级给",
181
+ escalatedAt: "升级时间",
182
+ expiresAt: "过期时间",
183
+ resolvedAt: "解决时间",
184
+ resolvedBy: "解决者",
185
+ },
186
+ };
187
+ /**
188
+ * 模块加载时构建的反向索引:磁盘字段名(任意语言)→ 运行时英文字段名
189
+ *
190
+ * 若同一个中文 key 恰好与某个英文 key 重名(实际不会发生,因为中文 keys 都是中文词),
191
+ * 英文优先(先注册)。
192
+ */
193
+ function buildReverseMap(fieldMap) {
194
+ const reverse = {};
195
+ // 先注册英文(identity),再注册中文;若冲突英文优先
196
+ for (const [enKey, enDiskKey] of Object.entries(fieldMap.en)) {
197
+ reverse[enDiskKey] = enKey;
198
+ }
199
+ for (const [enKey, zhDiskKey] of Object.entries(fieldMap.zh)) {
200
+ if (!(zhDiskKey in reverse)) {
201
+ reverse[zhDiskKey] = enKey;
202
+ }
203
+ }
204
+ return Object.freeze(reverse);
205
+ }
206
+ export const ENGRAM_FIELD_REVERSE_MAP = buildReverseMap(ENGRAM_FIELD_MAP);
207
+ export const SYNAPSE_FIELD_REVERSE_MAP = buildReverseMap(SYNAPSE_FIELD_MAP);
208
+ export const SYNAPSE_EVIDENCE_FIELD_REVERSE_MAP = buildReverseMap(SYNAPSE_EVIDENCE_FIELD_MAP);
209
+ export const SYNAPSE_RESOLUTION_FIELD_REVERSE_MAP = buildReverseMap(SYNAPSE_RESOLUTION_FIELD_MAP);
210
+ /**
211
+ * 语言标记字段的反向索引:磁盘标记名 → 是否中文
212
+ */
213
+ const LANG_MARKER_REVERSE = {
214
+ [LANG_MARKER_FIELD_EN]: false,
215
+ [LANG_MARKER_FIELD_ZH]: true,
216
+ };
217
+ /**
218
+ * 把对象的所有 key 按 fieldMap 替换为目标语言的磁盘字段名
219
+ *
220
+ * - 值保持不变(包括嵌套数组/对象,调用方负责递归)
221
+ * - 写入前调用
222
+ *
223
+ * @param obj 原始对象(运行时英文 keys)
224
+ * @param language 目标语言
225
+ * @param fieldMap 字段映射表(ENGRAM_FIELD_MAP / SYNAPSE_FIELD_MAP / ...)
226
+ * @param options.attachLangMarker 是否追加 `__lang` / `__语言` 标记字段
227
+ */
228
+ export function localizeKeys(obj, language, fieldMap, options) {
229
+ const targetMap = fieldMap[language];
230
+ const out = {};
231
+ for (const [runtimeKey, value] of Object.entries(obj)) {
232
+ const diskKey = targetMap[runtimeKey] ?? runtimeKey;
233
+ out[diskKey] = value;
234
+ }
235
+ if (options?.attachLangMarker) {
236
+ if (language === "zh") {
237
+ out[LANG_MARKER_FIELD_ZH] = "zh";
238
+ }
239
+ else {
240
+ out[LANG_MARKER_FIELD_EN] = "en";
241
+ }
242
+ }
243
+ return out;
244
+ }
245
+ /**
246
+ * 把磁盘读出的对象 key 归一化为运行时英文字段名
247
+ *
248
+ * - 反向索引找不到的 key 原样保留(兼容未知字段 / 扩展字段)
249
+ * - 剥离语言标记字段(`__lang` / `__语言`),返回值附带检测到的语言
250
+ *
251
+ * @param rawObj 磁盘读出的对象(YAML parse 结果)
252
+ * @param reverseMap 反向索引
253
+ */
254
+ export function delocalizeKeys(rawObj, reverseMap) {
255
+ const normalized = {};
256
+ let detectedLanguage;
257
+ for (const [diskKey, value] of Object.entries(rawObj)) {
258
+ // 先检测语言标记
259
+ if (diskKey in LANG_MARKER_REVERSE) {
260
+ detectedLanguage = LANG_MARKER_REVERSE[diskKey] ? "zh" : "en";
261
+ continue; // 标记字段不进入运行时对象
262
+ }
263
+ const runtimeKey = reverseMap[diskKey] ?? diskKey;
264
+ normalized[runtimeKey] = value;
265
+ }
266
+ return { normalized, detectedLanguage };
267
+ }
268
+ /**
269
+ * 递归 localize Synapse 完整对象(顶层 + evidence[] + resolutionState)
270
+ *
271
+ * Synapse 的嵌套结构需要递归处理,不能只映射顶层。
272
+ */
273
+ export function localizeSynapse(synapse, language, options) {
274
+ const topLocalized = localizeKeys(synapse, language, SYNAPSE_FIELD_MAP, options);
275
+ const synapseMap = SYNAPSE_FIELD_MAP[language];
276
+ // evidence: 数组,每个元素用 SYNAPSE_EVIDENCE_FIELD_MAP
277
+ const evidenceDiskKey = synapseMap.evidence;
278
+ if (Array.isArray(topLocalized[evidenceDiskKey])) {
279
+ topLocalized[evidenceDiskKey] = topLocalized[evidenceDiskKey].map((item) => localizeKeys(item, language, SYNAPSE_EVIDENCE_FIELD_MAP));
280
+ }
281
+ // resolutionState: 对象(可选),用 SYNAPSE_RESOLUTION_FIELD_MAP
282
+ const resolutionDiskKey = synapseMap.resolutionState;
283
+ if (topLocalized[resolutionDiskKey] &&
284
+ typeof topLocalized[resolutionDiskKey] === "object") {
285
+ topLocalized[resolutionDiskKey] = localizeKeys(topLocalized[resolutionDiskKey], language, SYNAPSE_RESOLUTION_FIELD_MAP);
286
+ }
287
+ return topLocalized;
288
+ }
289
+ /**
290
+ * 递归 delocalize Synapse 完整对象(磁盘 → 运行时)
291
+ */
292
+ export function delocalizeSynapse(rawSynapse) {
293
+ const { normalized: topNormalized, detectedLanguage } = delocalizeKeys(rawSynapse, SYNAPSE_FIELD_REVERSE_MAP);
294
+ // evidence 反向映射
295
+ if (Array.isArray(topNormalized.evidence)) {
296
+ topNormalized.evidence = topNormalized.evidence.map((item) => {
297
+ const ev = delocalizeKeys(item, SYNAPSE_EVIDENCE_FIELD_REVERSE_MAP);
298
+ return ev.normalized;
299
+ });
300
+ }
301
+ // resolutionState 反向映射
302
+ if (topNormalized.resolutionState &&
303
+ typeof topNormalized.resolutionState === "object") {
304
+ const rs = delocalizeKeys(topNormalized.resolutionState, SYNAPSE_RESOLUTION_FIELD_REVERSE_MAP);
305
+ topNormalized.resolutionState = rs.normalized;
306
+ }
307
+ return { normalized: topNormalized, detectedLanguage };
308
+ }
309
+ /**
310
+ * 启发式检测:磁盘读出的对象是否使用中文字段名
311
+ *
312
+ * 仅在 `__lang` / `__语言` 标记缺失时使用。检测条件:
313
+ * - 对象包含任意一个中文 keys(来自 ENGRAM_FIELD_MAP.zh / SYNAPSE_FIELD_MAP.zh)
314
+ *
315
+ * @param rawKeys 磁盘读出的对象的所有 key
316
+ */
317
+ export function detectChineseKeys(rawKeys) {
318
+ const zhKeys = new Set();
319
+ for (const zk of Object.values(ENGRAM_FIELD_MAP.zh))
320
+ zhKeys.add(zk);
321
+ for (const zk of Object.values(SYNAPSE_FIELD_MAP.zh))
322
+ zhKeys.add(zk);
323
+ for (const zk of Object.values(SYNAPSE_EVIDENCE_FIELD_MAP.zh))
324
+ zhKeys.add(zk);
325
+ for (const zk of Object.values(SYNAPSE_RESOLUTION_FIELD_MAP.zh))
326
+ zhKeys.add(zk);
327
+ return rawKeys.some((k) => zhKeys.has(k));
328
+ }
329
+ //# sourceMappingURL=field-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-names.js","sourceRoot":"","sources":["../../src/i18n/field-names.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * i18n 公共 API
3
+ *
4
+ * 翻译函数 + 工具描述本地化 + 语言解析工具。
5
+ *
6
+ * @module @co-engram/core/i18n
7
+ */
8
+ import type { Language, StringKey, TranslationDict } from "./types.js";
9
+ import { en } from "./en.js";
10
+ import { zh } from "./zh.js";
11
+ export { TEAM_MEMORY_CONFIG_FILENAME, readTeamMemoryConfig, writeTeamMemoryConfig, } from "../config/index.js";
12
+ export type { TeamMemoryConfig } from "../config/types.js";
13
+ import type { TeamMemoryConfig } from "../config/types.js";
14
+ /**
15
+ * 默认语言
16
+ *
17
+ * 默认中文(本项目主要面向中文团队)。国际团队可在 `.co-engram/config.json`
18
+ * 或 `CO_ENGRAM_LANGUAGE=en` 显式覆盖。
19
+ */
20
+ export declare const DEFAULT_LANGUAGE: Language;
21
+ /**
22
+ * 所有支持的语言
23
+ */
24
+ export declare const SUPPORTED_LANGUAGES: readonly Language[];
25
+ /**
26
+ * 把任意字符串解析为 Language,无法识别时返回默认语言
27
+ *
28
+ * 接受 'en' / 'zh' / 'EN' / 'ZH' / 'english' / 'chinese' / 'zh-CN' / 'zh-CN' 等。
29
+ */
30
+ export declare function parseLanguage(raw: string | undefined | null): Language;
31
+ /**
32
+ * 翻译函数
33
+ *
34
+ * - 在字典里找不到 key 时,返回 key 本身(便于发现遗漏)
35
+ * - 接受可选的 vars 参数,做 ${name} 模板替换
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * t('en', 'tool.engram_create')
40
+ * t('zh', 'prompt.proposal_prompt', { count: 3, plural: 's' })
41
+ * ```
42
+ */
43
+ export declare function t(language: Language, key: StringKey, vars?: Readonly<Record<string, string | number>>): string;
44
+ /**
45
+ * 本地化工具描述
46
+ *
47
+ * 在 i18n 字典里没有对应翻译时,fallback 到原始 description(向后兼容)。
48
+ *
49
+ * @param toolName snake_case 工具名,如 'engram_create'
50
+ * @param language 目标语言
51
+ * @param fallback 原始 description(host adapter 注入)
52
+ */
53
+ export declare function localizeToolDescription(toolName: string, language: Language, fallback?: string): string;
54
+ /**
55
+ * 翻译字符串并把模板变量替换好(等价于 t())
56
+ *
57
+ * 主要用于 host adapter 在 register 时一次性把模板字符串转成最终文本。
58
+ */
59
+ export declare function translatePrompt(language: Language, key: StringKey, vars?: Readonly<Record<string, string | number>>): string;
60
+ /**
61
+ * 把数字按英文复数规则返回 's' 或 ''
62
+ *
63
+ * 中文场景下返回 ''(中文没有复数形式),英文场景下 1 返回 '' 其余返回 's'。
64
+ */
65
+ export declare function pluralSuffix(language: Language, count: number): string;
66
+ /**
67
+ * 解析语言优先级
68
+ *
69
+ * 解析顺序(高 → 低):
70
+ * 1. envLanguage 显式传入(来自 CO_ENGRAM_LANGUAGE)
71
+ * 2. team-memory 持久化配置(`.co-engram/config.json`)
72
+ * 3. DEFAULT_LANGUAGE
73
+ *
74
+ * 这样可以让 env 覆盖持久化配置(临时实验),持久化覆盖默认。
75
+ *
76
+ * @param envLanguage 来自环境变量的值(可识别 'en'/'zh' 等)
77
+ * @param persistedConfig 来自 .co-engram/config.json 的配置(可能为 undefined)
78
+ */
79
+ export declare function resolveLanguage(envLanguage: string | undefined, persistedConfig?: TeamMemoryConfig): Language;
80
+ /**
81
+ * 读取 team-memory 持久化配置
82
+ *
83
+ * 文件路径:`${dataRoot}/.co-engram/${TEAM_MEMORY_CONFIG_FILENAME}`
84
+ *
85
+ * 如果文件不存在或解析失败,返回 undefined(不抛错,因为首次启动时确实没有)。
86
+ *
87
+ * @param dataRoot team-memory 根目录
88
+ * @param fsRead 可选的自定义读取函数(测试注入用);默认走 node:fs
89
+ */
90
+ export { en, zh };
91
+ export type { Language, StringKey, TranslationDict };
92
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAG7B,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAe,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,QAAQ,EAAiB,CAAC;AAUrE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,CAOtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,CAAC,CACf,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,SAAS,EACd,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAC/C,MAAM,CAOR;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAQR;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,SAAS,EACd,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAC/C,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,eAAe,CAAC,EAAE,gBAAgB,GACjC,QAAQ,CAIV;AAED;;;;;;;;;GASG;AAKH,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAClB,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * i18n 公共 API
3
+ *
4
+ * 翻译函数 + 工具描述本地化 + 语言解析工具。
5
+ *
6
+ * @module @co-engram/core/i18n
7
+ */
8
+ import { en } from "./en.js";
9
+ import { zh } from "./zh.js";
10
+ // 配置相关 API 已迁至 @co-engram/core/config。这里保留 re-export 以向后兼容。
11
+ export { TEAM_MEMORY_CONFIG_FILENAME, readTeamMemoryConfig, writeTeamMemoryConfig, } from "../config/index.js";
12
+ /**
13
+ * 默认语言
14
+ *
15
+ * 默认中文(本项目主要面向中文团队)。国际团队可在 `.co-engram/config.json`
16
+ * 或 `CO_ENGRAM_LANGUAGE=en` 显式覆盖。
17
+ */
18
+ export const DEFAULT_LANGUAGE = "zh";
19
+ /**
20
+ * 所有支持的语言
21
+ */
22
+ export const SUPPORTED_LANGUAGES = ["en", "zh"];
23
+ /**
24
+ * 字典表(只读)
25
+ */
26
+ const DICTIONARIES = {
27
+ en,
28
+ zh,
29
+ };
30
+ /**
31
+ * 把任意字符串解析为 Language,无法识别时返回默认语言
32
+ *
33
+ * 接受 'en' / 'zh' / 'EN' / 'ZH' / 'english' / 'chinese' / 'zh-CN' / 'zh-CN' 等。
34
+ */
35
+ export function parseLanguage(raw) {
36
+ if (!raw)
37
+ return DEFAULT_LANGUAGE;
38
+ const lower = raw.toLowerCase().trim();
39
+ if (lower === "en" || lower === "english")
40
+ return "en";
41
+ if (lower.startsWith("zh") || lower === "chinese" || lower === "cn")
42
+ return "zh";
43
+ return DEFAULT_LANGUAGE;
44
+ }
45
+ /**
46
+ * 翻译函数
47
+ *
48
+ * - 在字典里找不到 key 时,返回 key 本身(便于发现遗漏)
49
+ * - 接受可选的 vars 参数,做 ${name} 模板替换
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * t('en', 'tool.engram_create')
54
+ * t('zh', 'prompt.proposal_prompt', { count: 3, plural: 's' })
55
+ * ```
56
+ */
57
+ export function t(language, key, vars) {
58
+ const dict = DICTIONARIES[language] ?? en;
59
+ const template = dict[key] ?? en[key] ?? key;
60
+ if (!vars)
61
+ return template;
62
+ return template.replace(/\$\{(\w+)\}/g, (_, name) => vars[name] !== undefined ? String(vars[name]) : `\${${name}}`);
63
+ }
64
+ /**
65
+ * 本地化工具描述
66
+ *
67
+ * 在 i18n 字典里没有对应翻译时,fallback 到原始 description(向后兼容)。
68
+ *
69
+ * @param toolName snake_case 工具名,如 'engram_create'
70
+ * @param language 目标语言
71
+ * @param fallback 原始 description(host adapter 注入)
72
+ */
73
+ export function localizeToolDescription(toolName, language, fallback) {
74
+ const key = `tool.${toolName}`;
75
+ const dict = DICTIONARIES[language];
76
+ const translated = dict[key];
77
+ if (translated)
78
+ return translated;
79
+ // fallback 顺序:目标语言找不到 → 英文 → 原始
80
+ const enDict = en;
81
+ return enDict[key] ?? fallback ?? toolName;
82
+ }
83
+ /**
84
+ * 翻译字符串并把模板变量替换好(等价于 t())
85
+ *
86
+ * 主要用于 host adapter 在 register 时一次性把模板字符串转成最终文本。
87
+ */
88
+ export function translatePrompt(language, key, vars) {
89
+ return t(language, key, vars);
90
+ }
91
+ /**
92
+ * 把数字按英文复数规则返回 's' 或 ''
93
+ *
94
+ * 中文场景下返回 ''(中文没有复数形式),英文场景下 1 返回 '' 其余返回 's'。
95
+ */
96
+ export function pluralSuffix(language, count) {
97
+ if (language === "en")
98
+ return count === 1 ? "" : "s";
99
+ return "";
100
+ }
101
+ /**
102
+ * 解析语言优先级
103
+ *
104
+ * 解析顺序(高 → 低):
105
+ * 1. envLanguage 显式传入(来自 CO_ENGRAM_LANGUAGE)
106
+ * 2. team-memory 持久化配置(`.co-engram/config.json`)
107
+ * 3. DEFAULT_LANGUAGE
108
+ *
109
+ * 这样可以让 env 覆盖持久化配置(临时实验),持久化覆盖默认。
110
+ *
111
+ * @param envLanguage 来自环境变量的值(可识别 'en'/'zh' 等)
112
+ * @param persistedConfig 来自 .co-engram/config.json 的配置(可能为 undefined)
113
+ */
114
+ export function resolveLanguage(envLanguage, persistedConfig) {
115
+ if (envLanguage)
116
+ return parseLanguage(envLanguage);
117
+ if (persistedConfig?.language)
118
+ return parseLanguage(persistedConfig.language);
119
+ return DEFAULT_LANGUAGE;
120
+ }
121
+ /**
122
+ * 读取 team-memory 持久化配置
123
+ *
124
+ * 文件路径:`${dataRoot}/.co-engram/${TEAM_MEMORY_CONFIG_FILENAME}`
125
+ *
126
+ * 如果文件不存在或解析失败,返回 undefined(不抛错,因为首次启动时确实没有)。
127
+ *
128
+ * @param dataRoot team-memory 根目录
129
+ * @param fsRead 可选的自定义读取函数(测试注入用);默认走 node:fs
130
+ */
131
+ // readTeamMemoryConfig / writeTeamMemoryConfig 已迁至 @co-engram/core/config,
132
+ // 此处由顶部 `export ... from '../config/index.js'` 提供。
133
+ // 保留 unresolved re-export 以维持向后兼容的命名导入。
134
+ export { en, zh };
135
+ //# sourceMappingURL=index.js.map