memkin 0.4.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 (914) hide show
  1. package/LICENSE +191 -0
  2. package/README.en.md +934 -0
  3. package/README.md +934 -0
  4. package/README.zh-CN.md +825 -0
  5. package/bin/memkin.mjs +41 -0
  6. package/dist/adapters/file.d.ts +19 -0
  7. package/dist/adapters/file.d.ts.map +1 -0
  8. package/dist/adapters/file.js +61 -0
  9. package/dist/adapters/file.js.map +1 -0
  10. package/dist/adapters/gbrain.d.ts +29 -0
  11. package/dist/adapters/gbrain.d.ts.map +1 -0
  12. package/dist/adapters/gbrain.js +622 -0
  13. package/dist/adapters/gbrain.js.map +1 -0
  14. package/dist/adapters/index.d.ts +6 -0
  15. package/dist/adapters/index.d.ts.map +1 -0
  16. package/dist/adapters/index.js +5 -0
  17. package/dist/adapters/index.js.map +1 -0
  18. package/dist/adapters/registry.d.ts +18 -0
  19. package/dist/adapters/registry.d.ts.map +1 -0
  20. package/dist/adapters/registry.js +18 -0
  21. package/dist/adapters/registry.js.map +1 -0
  22. package/dist/adapters/stdout.d.ts +12 -0
  23. package/dist/adapters/stdout.d.ts.map +1 -0
  24. package/dist/adapters/stdout.js +29 -0
  25. package/dist/adapters/stdout.js.map +1 -0
  26. package/dist/adapters/store.d.ts +47 -0
  27. package/dist/adapters/store.d.ts.map +1 -0
  28. package/dist/adapters/store.js +642 -0
  29. package/dist/adapters/store.js.map +1 -0
  30. package/dist/cli-helpers.d.ts +12 -0
  31. package/dist/cli-helpers.d.ts.map +1 -0
  32. package/dist/cli-helpers.js +11 -0
  33. package/dist/cli-helpers.js.map +1 -0
  34. package/dist/cli-stores.d.ts +61 -0
  35. package/dist/cli-stores.d.ts.map +1 -0
  36. package/dist/cli-stores.js +130 -0
  37. package/dist/cli-stores.js.map +1 -0
  38. package/dist/cli.d.ts +2 -0
  39. package/dist/cli.d.ts.map +1 -0
  40. package/dist/cli.js +1579 -0
  41. package/dist/cli.js.map +1 -0
  42. package/dist/collectors/agent/claude-code.d.ts +12 -0
  43. package/dist/collectors/agent/claude-code.d.ts.map +1 -0
  44. package/dist/collectors/agent/claude-code.js +94 -0
  45. package/dist/collectors/agent/claude-code.js.map +1 -0
  46. package/dist/collectors/agent/codex.d.ts +16 -0
  47. package/dist/collectors/agent/codex.d.ts.map +1 -0
  48. package/dist/collectors/agent/codex.js +149 -0
  49. package/dist/collectors/agent/codex.js.map +1 -0
  50. package/dist/collectors/agent/collector.d.ts +20 -0
  51. package/dist/collectors/agent/collector.d.ts.map +1 -0
  52. package/dist/collectors/agent/collector.js +108 -0
  53. package/dist/collectors/agent/collector.js.map +1 -0
  54. package/dist/collectors/agent/hermes.d.ts +13 -0
  55. package/dist/collectors/agent/hermes.d.ts.map +1 -0
  56. package/dist/collectors/agent/hermes.js +90 -0
  57. package/dist/collectors/agent/hermes.js.map +1 -0
  58. package/dist/collectors/agent/index.d.ts +6 -0
  59. package/dist/collectors/agent/index.d.ts.map +1 -0
  60. package/dist/collectors/agent/index.js +5 -0
  61. package/dist/collectors/agent/index.js.map +1 -0
  62. package/dist/collectors/agent/types.d.ts +61 -0
  63. package/dist/collectors/agent/types.d.ts.map +1 -0
  64. package/dist/collectors/agent/types.js +6 -0
  65. package/dist/collectors/agent/types.js.map +1 -0
  66. package/dist/collectors/feishu/auth.d.ts +13 -0
  67. package/dist/collectors/feishu/auth.d.ts.map +1 -0
  68. package/dist/collectors/feishu/auth.js +72 -0
  69. package/dist/collectors/feishu/auth.js.map +1 -0
  70. package/dist/collectors/feishu/chat-name-resolver.d.ts +33 -0
  71. package/dist/collectors/feishu/chat-name-resolver.d.ts.map +1 -0
  72. package/dist/collectors/feishu/chat-name-resolver.js +63 -0
  73. package/dist/collectors/feishu/chat-name-resolver.js.map +1 -0
  74. package/dist/collectors/feishu/collector.d.ts +27 -0
  75. package/dist/collectors/feishu/collector.d.ts.map +1 -0
  76. package/dist/collectors/feishu/collector.js +136 -0
  77. package/dist/collectors/feishu/collector.js.map +1 -0
  78. package/dist/collectors/feishu/cursor-staging.d.ts +11 -0
  79. package/dist/collectors/feishu/cursor-staging.d.ts.map +1 -0
  80. package/dist/collectors/feishu/cursor-staging.js +37 -0
  81. package/dist/collectors/feishu/cursor-staging.js.map +1 -0
  82. package/dist/collectors/feishu/docs/blocks.d.ts +25 -0
  83. package/dist/collectors/feishu/docs/blocks.d.ts.map +1 -0
  84. package/dist/collectors/feishu/docs/blocks.js +34 -0
  85. package/dist/collectors/feishu/docs/blocks.js.map +1 -0
  86. package/dist/collectors/feishu/docs/candidate.d.ts +17 -0
  87. package/dist/collectors/feishu/docs/candidate.d.ts.map +1 -0
  88. package/dist/collectors/feishu/docs/candidate.js +36 -0
  89. package/dist/collectors/feishu/docs/candidate.js.map +1 -0
  90. package/dist/collectors/feishu/docs/config.d.ts +41 -0
  91. package/dist/collectors/feishu/docs/config.d.ts.map +1 -0
  92. package/dist/collectors/feishu/docs/config.js +30 -0
  93. package/dist/collectors/feishu/docs/config.js.map +1 -0
  94. package/dist/collectors/feishu/docs/decision.d.ts +14 -0
  95. package/dist/collectors/feishu/docs/decision.d.ts.map +1 -0
  96. package/dist/collectors/feishu/docs/decision.js +43 -0
  97. package/dist/collectors/feishu/docs/decision.js.map +1 -0
  98. package/dist/collectors/feishu/docs/full-builder.d.ts +17 -0
  99. package/dist/collectors/feishu/docs/full-builder.d.ts.map +1 -0
  100. package/dist/collectors/feishu/docs/full-builder.js +136 -0
  101. package/dist/collectors/feishu/docs/full-builder.js.map +1 -0
  102. package/dist/collectors/feishu/docs/hash.d.ts +8 -0
  103. package/dist/collectors/feishu/docs/hash.d.ts.map +1 -0
  104. package/dist/collectors/feishu/docs/hash.js +15 -0
  105. package/dist/collectors/feishu/docs/hash.js.map +1 -0
  106. package/dist/collectors/feishu/docs/ingest.d.ts +54 -0
  107. package/dist/collectors/feishu/docs/ingest.d.ts.map +1 -0
  108. package/dist/collectors/feishu/docs/ingest.js +120 -0
  109. package/dist/collectors/feishu/docs/ingest.js.map +1 -0
  110. package/dist/collectors/feishu/docs/llm-json.d.ts +13 -0
  111. package/dist/collectors/feishu/docs/llm-json.d.ts.map +1 -0
  112. package/dist/collectors/feishu/docs/llm-json.js +40 -0
  113. package/dist/collectors/feishu/docs/llm-json.js.map +1 -0
  114. package/dist/collectors/feishu/docs/pointer-builder.d.ts +7 -0
  115. package/dist/collectors/feishu/docs/pointer-builder.d.ts.map +1 -0
  116. package/dist/collectors/feishu/docs/pointer-builder.js +11 -0
  117. package/dist/collectors/feishu/docs/pointer-builder.js.map +1 -0
  118. package/dist/collectors/feishu/docs/render.d.ts +8 -0
  119. package/dist/collectors/feishu/docs/render.d.ts.map +1 -0
  120. package/dist/collectors/feishu/docs/render.js +105 -0
  121. package/dist/collectors/feishu/docs/render.js.map +1 -0
  122. package/dist/collectors/feishu/docs/run.d.ts +37 -0
  123. package/dist/collectors/feishu/docs/run.d.ts.map +1 -0
  124. package/dist/collectors/feishu/docs/run.js +143 -0
  125. package/dist/collectors/feishu/docs/run.js.map +1 -0
  126. package/dist/collectors/feishu/docs/status.d.ts +16 -0
  127. package/dist/collectors/feishu/docs/status.d.ts.map +1 -0
  128. package/dist/collectors/feishu/docs/status.js +24 -0
  129. package/dist/collectors/feishu/docs/status.js.map +1 -0
  130. package/dist/collectors/feishu/docs/store-writer.d.ts +32 -0
  131. package/dist/collectors/feishu/docs/store-writer.d.ts.map +1 -0
  132. package/dist/collectors/feishu/docs/store-writer.js +71 -0
  133. package/dist/collectors/feishu/docs/store-writer.js.map +1 -0
  134. package/dist/collectors/feishu/docs/toc.d.ts +3 -0
  135. package/dist/collectors/feishu/docs/toc.d.ts.map +1 -0
  136. package/dist/collectors/feishu/docs/toc.js +19 -0
  137. package/dist/collectors/feishu/docs/toc.js.map +1 -0
  138. package/dist/collectors/feishu/docs/triggers.d.ts +7 -0
  139. package/dist/collectors/feishu/docs/triggers.d.ts.map +1 -0
  140. package/dist/collectors/feishu/docs/triggers.js +31 -0
  141. package/dist/collectors/feishu/docs/triggers.js.map +1 -0
  142. package/dist/collectors/feishu/docs/types.d.ts +109 -0
  143. package/dist/collectors/feishu/docs/types.d.ts.map +1 -0
  144. package/dist/collectors/feishu/docs/types.js +2 -0
  145. package/dist/collectors/feishu/docs/types.js.map +1 -0
  146. package/dist/collectors/feishu/docs/upgrade-queue.d.ts +19 -0
  147. package/dist/collectors/feishu/docs/upgrade-queue.d.ts.map +1 -0
  148. package/dist/collectors/feishu/docs/upgrade-queue.js +36 -0
  149. package/dist/collectors/feishu/docs/upgrade-queue.js.map +1 -0
  150. package/dist/collectors/feishu/docs/url-parser.d.ts +3 -0
  151. package/dist/collectors/feishu/docs/url-parser.d.ts.map +1 -0
  152. package/dist/collectors/feishu/docs/url-parser.js +39 -0
  153. package/dist/collectors/feishu/docs/url-parser.js.map +1 -0
  154. package/dist/collectors/feishu/docs/walkers.d.ts +24 -0
  155. package/dist/collectors/feishu/docs/walkers.d.ts.map +1 -0
  156. package/dist/collectors/feishu/docs/walkers.js +90 -0
  157. package/dist/collectors/feishu/docs/walkers.js.map +1 -0
  158. package/dist/collectors/feishu/docs/wiki-resolver.d.ts +15 -0
  159. package/dist/collectors/feishu/docs/wiki-resolver.d.ts.map +1 -0
  160. package/dist/collectors/feishu/docs/wiki-resolver.js +24 -0
  161. package/dist/collectors/feishu/docs/wiki-resolver.js.map +1 -0
  162. package/dist/collectors/feishu/http-client.d.ts +26 -0
  163. package/dist/collectors/feishu/http-client.d.ts.map +1 -0
  164. package/dist/collectors/feishu/http-client.js +94 -0
  165. package/dist/collectors/feishu/http-client.js.map +1 -0
  166. package/dist/collectors/feishu/index.d.ts +3 -0
  167. package/dist/collectors/feishu/index.d.ts.map +1 -0
  168. package/dist/collectors/feishu/index.js +2 -0
  169. package/dist/collectors/feishu/index.js.map +1 -0
  170. package/dist/collectors/feishu/lark-cli-client.d.ts +28 -0
  171. package/dist/collectors/feishu/lark-cli-client.d.ts.map +1 -0
  172. package/dist/collectors/feishu/lark-cli-client.js +104 -0
  173. package/dist/collectors/feishu/lark-cli-client.js.map +1 -0
  174. package/dist/collectors/feishu/lark-cli-identity-backend.d.ts +28 -0
  175. package/dist/collectors/feishu/lark-cli-identity-backend.d.ts.map +1 -0
  176. package/dist/collectors/feishu/lark-cli-identity-backend.js +110 -0
  177. package/dist/collectors/feishu/lark-cli-identity-backend.js.map +1 -0
  178. package/dist/collectors/feishu/rate-limiter.d.ts +10 -0
  179. package/dist/collectors/feishu/rate-limiter.d.ts.map +1 -0
  180. package/dist/collectors/feishu/rate-limiter.js +33 -0
  181. package/dist/collectors/feishu/rate-limiter.js.map +1 -0
  182. package/dist/collectors/feishu/self-open-id.d.ts +20 -0
  183. package/dist/collectors/feishu/self-open-id.d.ts.map +1 -0
  184. package/dist/collectors/feishu/self-open-id.js +31 -0
  185. package/dist/collectors/feishu/self-open-id.js.map +1 -0
  186. package/dist/collectors/feishu/sources/base.d.ts +9 -0
  187. package/dist/collectors/feishu/sources/base.d.ts.map +1 -0
  188. package/dist/collectors/feishu/sources/base.js +2 -0
  189. package/dist/collectors/feishu/sources/base.js.map +1 -0
  190. package/dist/collectors/feishu/sources/calendar.d.ts +16 -0
  191. package/dist/collectors/feishu/sources/calendar.d.ts.map +1 -0
  192. package/dist/collectors/feishu/sources/calendar.js +98 -0
  193. package/dist/collectors/feishu/sources/calendar.js.map +1 -0
  194. package/dist/collectors/feishu/sources/dm.d.ts +28 -0
  195. package/dist/collectors/feishu/sources/dm.d.ts.map +1 -0
  196. package/dist/collectors/feishu/sources/dm.js +156 -0
  197. package/dist/collectors/feishu/sources/dm.js.map +1 -0
  198. package/dist/collectors/feishu/sources/mail.d.ts +27 -0
  199. package/dist/collectors/feishu/sources/mail.d.ts.map +1 -0
  200. package/dist/collectors/feishu/sources/mail.js +149 -0
  201. package/dist/collectors/feishu/sources/mail.js.map +1 -0
  202. package/dist/collectors/feishu/sources/message-search.d.ts +37 -0
  203. package/dist/collectors/feishu/sources/message-search.d.ts.map +1 -0
  204. package/dist/collectors/feishu/sources/message-search.js +140 -0
  205. package/dist/collectors/feishu/sources/message-search.js.map +1 -0
  206. package/dist/collectors/feishu/sources/messages.d.ts +28 -0
  207. package/dist/collectors/feishu/sources/messages.d.ts.map +1 -0
  208. package/dist/collectors/feishu/sources/messages.js +175 -0
  209. package/dist/collectors/feishu/sources/messages.js.map +1 -0
  210. package/dist/collectors/feishu/sources/tasks.d.ts +15 -0
  211. package/dist/collectors/feishu/sources/tasks.d.ts.map +1 -0
  212. package/dist/collectors/feishu/sources/tasks.js +74 -0
  213. package/dist/collectors/feishu/sources/tasks.js.map +1 -0
  214. package/dist/collectors/feishu/types.d.ts +258 -0
  215. package/dist/collectors/feishu/types.d.ts.map +1 -0
  216. package/dist/collectors/feishu/types.js +17 -0
  217. package/dist/collectors/feishu/types.js.map +1 -0
  218. package/dist/collectors/index.d.ts +10 -0
  219. package/dist/collectors/index.d.ts.map +1 -0
  220. package/dist/collectors/index.js +18 -0
  221. package/dist/collectors/index.js.map +1 -0
  222. package/dist/config-center/connection-checks.d.ts +28 -0
  223. package/dist/config-center/connection-checks.d.ts.map +1 -0
  224. package/dist/config-center/connection-checks.js +114 -0
  225. package/dist/config-center/connection-checks.js.map +1 -0
  226. package/dist/config-center/document.d.ts +21 -0
  227. package/dist/config-center/document.d.ts.map +1 -0
  228. package/dist/config-center/document.js +93 -0
  229. package/dist/config-center/document.js.map +1 -0
  230. package/dist/config-center/index.d.ts +9 -0
  231. package/dist/config-center/index.d.ts.map +1 -0
  232. package/dist/config-center/index.js +29 -0
  233. package/dist/config-center/index.js.map +1 -0
  234. package/dist/config-center/recommendations.d.ts +16 -0
  235. package/dist/config-center/recommendations.d.ts.map +1 -0
  236. package/dist/config-center/recommendations.js +50 -0
  237. package/dist/config-center/recommendations.js.map +1 -0
  238. package/dist/config-center/reducer.d.ts +57 -0
  239. package/dist/config-center/reducer.d.ts.map +1 -0
  240. package/dist/config-center/reducer.js +192 -0
  241. package/dist/config-center/reducer.js.map +1 -0
  242. package/dist/config-center/schema.d.ts +31 -0
  243. package/dist/config-center/schema.d.ts.map +1 -0
  244. package/dist/config-center/schema.js +442 -0
  245. package/dist/config-center/schema.js.map +1 -0
  246. package/dist/config-center/secrets.d.ts +9 -0
  247. package/dist/config-center/secrets.d.ts.map +1 -0
  248. package/dist/config-center/secrets.js +51 -0
  249. package/dist/config-center/secrets.js.map +1 -0
  250. package/dist/config-center/source-dirs.d.ts +16 -0
  251. package/dist/config-center/source-dirs.d.ts.map +1 -0
  252. package/dist/config-center/source-dirs.js +81 -0
  253. package/dist/config-center/source-dirs.js.map +1 -0
  254. package/dist/config-center/tui/app.d.ts +22 -0
  255. package/dist/config-center/tui/app.d.ts.map +1 -0
  256. package/dist/config-center/tui/app.js +142 -0
  257. package/dist/config-center/tui/app.js.map +1 -0
  258. package/dist/config-center/tui/render.d.ts +20 -0
  259. package/dist/config-center/tui/render.d.ts.map +1 -0
  260. package/dist/config-center/tui/render.js +166 -0
  261. package/dist/config-center/tui/render.js.map +1 -0
  262. package/dist/config-center/validation.d.ts +9 -0
  263. package/dist/config-center/validation.d.ts.map +1 -0
  264. package/dist/config-center/validation.js +59 -0
  265. package/dist/config-center/validation.js.map +1 -0
  266. package/dist/consolidator/consolidator.d.ts +43 -0
  267. package/dist/consolidator/consolidator.d.ts.map +1 -0
  268. package/dist/consolidator/consolidator.js +67 -0
  269. package/dist/consolidator/consolidator.js.map +1 -0
  270. package/dist/consolidator/dead-link.d.ts +7 -0
  271. package/dist/consolidator/dead-link.d.ts.map +1 -0
  272. package/dist/consolidator/dead-link.js +57 -0
  273. package/dist/consolidator/dead-link.js.map +1 -0
  274. package/dist/consolidator/hot-warm.d.ts +9 -0
  275. package/dist/consolidator/hot-warm.d.ts.map +1 -0
  276. package/dist/consolidator/hot-warm.js +88 -0
  277. package/dist/consolidator/hot-warm.js.map +1 -0
  278. package/dist/consolidator/infer-preferences.d.ts +14 -0
  279. package/dist/consolidator/infer-preferences.d.ts.map +1 -0
  280. package/dist/consolidator/infer-preferences.js +73 -0
  281. package/dist/consolidator/infer-preferences.js.map +1 -0
  282. package/dist/consolidator/rules.d.ts +5 -0
  283. package/dist/consolidator/rules.d.ts.map +1 -0
  284. package/dist/consolidator/rules.js +53 -0
  285. package/dist/consolidator/rules.js.map +1 -0
  286. package/dist/consolidator/warm-cold.d.ts +13 -0
  287. package/dist/consolidator/warm-cold.d.ts.map +1 -0
  288. package/dist/consolidator/warm-cold.js +91 -0
  289. package/dist/consolidator/warm-cold.js.map +1 -0
  290. package/dist/core/block-builder.d.ts +15 -0
  291. package/dist/core/block-builder.d.ts.map +1 -0
  292. package/dist/core/block-builder.js +185 -0
  293. package/dist/core/block-builder.js.map +1 -0
  294. package/dist/core/canonicalize.d.ts +3 -0
  295. package/dist/core/canonicalize.d.ts.map +1 -0
  296. package/dist/core/canonicalize.js +141 -0
  297. package/dist/core/canonicalize.js.map +1 -0
  298. package/dist/core/concurrency.d.ts +2 -0
  299. package/dist/core/concurrency.d.ts.map +1 -0
  300. package/dist/core/concurrency.js +14 -0
  301. package/dist/core/concurrency.js.map +1 -0
  302. package/dist/core/config.d.ts +257 -0
  303. package/dist/core/config.d.ts.map +1 -0
  304. package/dist/core/config.js +247 -0
  305. package/dist/core/config.js.map +1 -0
  306. package/dist/core/cursors.d.ts +36 -0
  307. package/dist/core/cursors.d.ts.map +1 -0
  308. package/dist/core/cursors.js +90 -0
  309. package/dist/core/cursors.js.map +1 -0
  310. package/dist/core/dedup.d.ts +45 -0
  311. package/dist/core/dedup.d.ts.map +1 -0
  312. package/dist/core/dedup.js +111 -0
  313. package/dist/core/dedup.js.map +1 -0
  314. package/dist/core/entity-extract.d.ts +3 -0
  315. package/dist/core/entity-extract.d.ts.map +1 -0
  316. package/dist/core/entity-extract.js +54 -0
  317. package/dist/core/entity-extract.js.map +1 -0
  318. package/dist/core/env-validation.d.ts +9 -0
  319. package/dist/core/env-validation.d.ts.map +1 -0
  320. package/dist/core/env-validation.js +94 -0
  321. package/dist/core/env-validation.js.map +1 -0
  322. package/dist/core/helpers.d.ts +3 -0
  323. package/dist/core/helpers.d.ts.map +1 -0
  324. package/dist/core/helpers.js +10 -0
  325. package/dist/core/helpers.js.map +1 -0
  326. package/dist/core/identity-resolver.d.ts +42 -0
  327. package/dist/core/identity-resolver.d.ts.map +1 -0
  328. package/dist/core/identity-resolver.js +207 -0
  329. package/dist/core/identity-resolver.js.map +1 -0
  330. package/dist/core/person-identity.d.ts +140 -0
  331. package/dist/core/person-identity.d.ts.map +1 -0
  332. package/dist/core/person-identity.js +428 -0
  333. package/dist/core/person-identity.js.map +1 -0
  334. package/dist/core/person-slug.d.ts +21 -0
  335. package/dist/core/person-slug.d.ts.map +1 -0
  336. package/dist/core/person-slug.js +93 -0
  337. package/dist/core/person-slug.js.map +1 -0
  338. package/dist/core/pipeline-factory.d.ts +13 -0
  339. package/dist/core/pipeline-factory.d.ts.map +1 -0
  340. package/dist/core/pipeline-factory.js +37 -0
  341. package/dist/core/pipeline-factory.js.map +1 -0
  342. package/dist/core/pipeline.d.ts +77 -0
  343. package/dist/core/pipeline.d.ts.map +1 -0
  344. package/dist/core/pipeline.js +332 -0
  345. package/dist/core/pipeline.js.map +1 -0
  346. package/dist/core/resource-loader.d.ts +2 -0
  347. package/dist/core/resource-loader.d.ts.map +1 -0
  348. package/dist/core/resource-loader.js +12 -0
  349. package/dist/core/resource-loader.js.map +1 -0
  350. package/dist/core/schemas.d.ts +5142 -0
  351. package/dist/core/schemas.d.ts.map +1 -0
  352. package/dist/core/schemas.js +256 -0
  353. package/dist/core/schemas.js.map +1 -0
  354. package/dist/core/signal-scoring.d.ts +3 -0
  355. package/dist/core/signal-scoring.d.ts.map +1 -0
  356. package/dist/core/signal-scoring.js +128 -0
  357. package/dist/core/signal-scoring.js.map +1 -0
  358. package/dist/core/source-ref.d.ts +4 -0
  359. package/dist/core/source-ref.d.ts.map +1 -0
  360. package/dist/core/source-ref.js +24 -0
  361. package/dist/core/source-ref.js.map +1 -0
  362. package/dist/core/state.d.ts +22 -0
  363. package/dist/core/state.d.ts.map +1 -0
  364. package/dist/core/state.js +33 -0
  365. package/dist/core/state.js.map +1 -0
  366. package/dist/core/types.d.ts +266 -0
  367. package/dist/core/types.d.ts.map +1 -0
  368. package/dist/core/types.js +6 -0
  369. package/dist/core/types.js.map +1 -0
  370. package/dist/daemon/alerts.d.ts +12 -0
  371. package/dist/daemon/alerts.d.ts.map +1 -0
  372. package/dist/daemon/alerts.js +34 -0
  373. package/dist/daemon/alerts.js.map +1 -0
  374. package/dist/daemon/autostart/argv.d.ts +21 -0
  375. package/dist/daemon/autostart/argv.d.ts.map +1 -0
  376. package/dist/daemon/autostart/argv.js +37 -0
  377. package/dist/daemon/autostart/argv.js.map +1 -0
  378. package/dist/daemon/autostart/daemon-state.d.ts +19 -0
  379. package/dist/daemon/autostart/daemon-state.d.ts.map +1 -0
  380. package/dist/daemon/autostart/daemon-state.js +34 -0
  381. package/dist/daemon/autostart/daemon-state.js.map +1 -0
  382. package/dist/daemon/autostart/index.d.ts +40 -0
  383. package/dist/daemon/autostart/index.d.ts.map +1 -0
  384. package/dist/daemon/autostart/index.js +146 -0
  385. package/dist/daemon/autostart/index.js.map +1 -0
  386. package/dist/daemon/autostart/launchd.d.ts +13 -0
  387. package/dist/daemon/autostart/launchd.d.ts.map +1 -0
  388. package/dist/daemon/autostart/launchd.js +51 -0
  389. package/dist/daemon/autostart/launchd.js.map +1 -0
  390. package/dist/daemon/autostart/runner.d.ts +14 -0
  391. package/dist/daemon/autostart/runner.d.ts.map +1 -0
  392. package/dist/daemon/autostart/runner.js +30 -0
  393. package/dist/daemon/autostart/runner.js.map +1 -0
  394. package/dist/daemon/autostart/systemd.d.ts +11 -0
  395. package/dist/daemon/autostart/systemd.d.ts.map +1 -0
  396. package/dist/daemon/autostart/systemd.js +40 -0
  397. package/dist/daemon/autostart/systemd.js.map +1 -0
  398. package/dist/daemon/index.d.ts +6 -0
  399. package/dist/daemon/index.d.ts.map +1 -0
  400. package/dist/daemon/index.js +6 -0
  401. package/dist/daemon/index.js.map +1 -0
  402. package/dist/daemon/logger.d.ts +8 -0
  403. package/dist/daemon/logger.d.ts.map +1 -0
  404. package/dist/daemon/logger.js +35 -0
  405. package/dist/daemon/logger.js.map +1 -0
  406. package/dist/daemon/reload-manager.d.ts +41 -0
  407. package/dist/daemon/reload-manager.d.ts.map +1 -0
  408. package/dist/daemon/reload-manager.js +89 -0
  409. package/dist/daemon/reload-manager.js.map +1 -0
  410. package/dist/daemon/run-history.d.ts +29 -0
  411. package/dist/daemon/run-history.d.ts.map +1 -0
  412. package/dist/daemon/run-history.js +54 -0
  413. package/dist/daemon/run-history.js.map +1 -0
  414. package/dist/daemon/scheduler.d.ts +45 -0
  415. package/dist/daemon/scheduler.d.ts.map +1 -0
  416. package/dist/daemon/scheduler.js +217 -0
  417. package/dist/daemon/scheduler.js.map +1 -0
  418. package/dist/daemon/serve-runtime.d.ts +31 -0
  419. package/dist/daemon/serve-runtime.d.ts.map +1 -0
  420. package/dist/daemon/serve-runtime.js +230 -0
  421. package/dist/daemon/serve-runtime.js.map +1 -0
  422. package/dist/daemon/source-schedule.d.ts +25 -0
  423. package/dist/daemon/source-schedule.d.ts.map +1 -0
  424. package/dist/daemon/source-schedule.js +87 -0
  425. package/dist/daemon/source-schedule.js.map +1 -0
  426. package/dist/embedded-assets.generated.d.ts +4 -0
  427. package/dist/embedded-assets.generated.d.ts.map +1 -0
  428. package/dist/embedded-assets.generated.js +12 -0
  429. package/dist/embedded-assets.generated.js.map +1 -0
  430. package/dist/extractors/noise-filter.d.ts +30 -0
  431. package/dist/extractors/noise-filter.d.ts.map +1 -0
  432. package/dist/extractors/noise-filter.js +185 -0
  433. package/dist/extractors/noise-filter.js.map +1 -0
  434. package/dist/extractors/playbook-extractor.d.ts +35 -0
  435. package/dist/extractors/playbook-extractor.d.ts.map +1 -0
  436. package/dist/extractors/playbook-extractor.js +98 -0
  437. package/dist/extractors/playbook-extractor.js.map +1 -0
  438. package/dist/extractors/providers/anthropic.d.ts +13 -0
  439. package/dist/extractors/providers/anthropic.d.ts.map +1 -0
  440. package/dist/extractors/providers/anthropic.js +67 -0
  441. package/dist/extractors/providers/anthropic.js.map +1 -0
  442. package/dist/extractors/providers/index.d.ts +12 -0
  443. package/dist/extractors/providers/index.d.ts.map +1 -0
  444. package/dist/extractors/providers/index.js +41 -0
  445. package/dist/extractors/providers/index.js.map +1 -0
  446. package/dist/extractors/providers/mock.d.ts +14 -0
  447. package/dist/extractors/providers/mock.d.ts.map +1 -0
  448. package/dist/extractors/providers/mock.js +37 -0
  449. package/dist/extractors/providers/mock.js.map +1 -0
  450. package/dist/extractors/providers/openai.d.ts +15 -0
  451. package/dist/extractors/providers/openai.d.ts.map +1 -0
  452. package/dist/extractors/providers/openai.js +109 -0
  453. package/dist/extractors/providers/openai.js.map +1 -0
  454. package/dist/extractors/providers/types.d.ts +27 -0
  455. package/dist/extractors/providers/types.d.ts.map +1 -0
  456. package/dist/extractors/providers/types.js +6 -0
  457. package/dist/extractors/providers/types.js.map +1 -0
  458. package/dist/extractors/signal-extractor.d.ts +30 -0
  459. package/dist/extractors/signal-extractor.d.ts.map +1 -0
  460. package/dist/extractors/signal-extractor.js +371 -0
  461. package/dist/extractors/signal-extractor.js.map +1 -0
  462. package/dist/formatters/index.d.ts +3 -0
  463. package/dist/formatters/index.d.ts.map +1 -0
  464. package/dist/formatters/index.js +3 -0
  465. package/dist/formatters/index.js.map +1 -0
  466. package/dist/formatters/json.d.ts +6 -0
  467. package/dist/formatters/json.d.ts.map +1 -0
  468. package/dist/formatters/json.js +16 -0
  469. package/dist/formatters/json.js.map +1 -0
  470. package/dist/formatters/markdown.d.ts +6 -0
  471. package/dist/formatters/markdown.d.ts.map +1 -0
  472. package/dist/formatters/markdown.js +198 -0
  473. package/dist/formatters/markdown.js.map +1 -0
  474. package/dist/hooks/handlers.d.ts +21 -0
  475. package/dist/hooks/handlers.d.ts.map +1 -0
  476. package/dist/hooks/handlers.js +22 -0
  477. package/dist/hooks/handlers.js.map +1 -0
  478. package/dist/hooks/inject.d.ts +7 -0
  479. package/dist/hooks/inject.d.ts.map +1 -0
  480. package/dist/hooks/inject.js +18 -0
  481. package/dist/hooks/inject.js.map +1 -0
  482. package/dist/hooks/install.d.ts +14 -0
  483. package/dist/hooks/install.d.ts.map +1 -0
  484. package/dist/hooks/install.js +34 -0
  485. package/dist/hooks/install.js.map +1 -0
  486. package/dist/hooks/output.d.ts +19 -0
  487. package/dist/hooks/output.d.ts.map +1 -0
  488. package/dist/hooks/output.js +13 -0
  489. package/dist/hooks/output.js.map +1 -0
  490. package/dist/hooks/recall-client.d.ts +25 -0
  491. package/dist/hooks/recall-client.d.ts.map +1 -0
  492. package/dist/hooks/recall-client.js +56 -0
  493. package/dist/hooks/recall-client.js.map +1 -0
  494. package/dist/hooks/run-event.d.ts +13 -0
  495. package/dist/hooks/run-event.d.ts.map +1 -0
  496. package/dist/hooks/run-event.js +20 -0
  497. package/dist/hooks/run-event.js.map +1 -0
  498. package/dist/hooks/settings-edit.d.ts +10 -0
  499. package/dist/hooks/settings-edit.d.ts.map +1 -0
  500. package/dist/hooks/settings-edit.js +44 -0
  501. package/dist/hooks/settings-edit.js.map +1 -0
  502. package/dist/hooks/writeback.d.ts +12 -0
  503. package/dist/hooks/writeback.d.ts.map +1 -0
  504. package/dist/hooks/writeback.js +48 -0
  505. package/dist/hooks/writeback.js.map +1 -0
  506. package/dist/install/clients/claude-code.d.ts +3 -0
  507. package/dist/install/clients/claude-code.d.ts.map +1 -0
  508. package/dist/install/clients/claude-code.js +31 -0
  509. package/dist/install/clients/claude-code.js.map +1 -0
  510. package/dist/install/clients/claude-desktop.d.ts +3 -0
  511. package/dist/install/clients/claude-desktop.d.ts.map +1 -0
  512. package/dist/install/clients/claude-desktop.js +33 -0
  513. package/dist/install/clients/claude-desktop.js.map +1 -0
  514. package/dist/install/clients/codex.d.ts +3 -0
  515. package/dist/install/clients/codex.d.ts.map +1 -0
  516. package/dist/install/clients/codex.js +33 -0
  517. package/dist/install/clients/codex.js.map +1 -0
  518. package/dist/install/clients/cursor.d.ts +3 -0
  519. package/dist/install/clients/cursor.d.ts.map +1 -0
  520. package/dist/install/clients/cursor.js +37 -0
  521. package/dist/install/clients/cursor.js.map +1 -0
  522. package/dist/install/clients/hermes.d.ts +3 -0
  523. package/dist/install/clients/hermes.d.ts.map +1 -0
  524. package/dist/install/clients/hermes.js +37 -0
  525. package/dist/install/clients/hermes.js.map +1 -0
  526. package/dist/install/clients/index.d.ts +4 -0
  527. package/dist/install/clients/index.d.ts.map +1 -0
  528. package/dist/install/clients/index.js +18 -0
  529. package/dist/install/clients/index.js.map +1 -0
  530. package/dist/install/clients/windsurf.d.ts +3 -0
  531. package/dist/install/clients/windsurf.d.ts.map +1 -0
  532. package/dist/install/clients/windsurf.js +34 -0
  533. package/dist/install/clients/windsurf.js.map +1 -0
  534. package/dist/install/command.d.ts +14 -0
  535. package/dist/install/command.d.ts.map +1 -0
  536. package/dist/install/command.js +34 -0
  537. package/dist/install/command.js.map +1 -0
  538. package/dist/install/directive.d.ts +7 -0
  539. package/dist/install/directive.d.ts.map +1 -0
  540. package/dist/install/directive.js +31 -0
  541. package/dist/install/directive.js.map +1 -0
  542. package/dist/install/index.d.ts +28 -0
  543. package/dist/install/index.d.ts.map +1 -0
  544. package/dist/install/index.js +122 -0
  545. package/dist/install/index.js.map +1 -0
  546. package/dist/install/json-config.d.ts +8 -0
  547. package/dist/install/json-config.d.ts.map +1 -0
  548. package/dist/install/json-config.js +44 -0
  549. package/dist/install/json-config.js.map +1 -0
  550. package/dist/install/marked-block.d.ts +11 -0
  551. package/dist/install/marked-block.d.ts.map +1 -0
  552. package/dist/install/marked-block.js +34 -0
  553. package/dist/install/marked-block.js.map +1 -0
  554. package/dist/install/mcp-entry.d.ts +11 -0
  555. package/dist/install/mcp-entry.d.ts.map +1 -0
  556. package/dist/install/mcp-entry.js +7 -0
  557. package/dist/install/mcp-entry.js.map +1 -0
  558. package/dist/install/skill.d.ts +4 -0
  559. package/dist/install/skill.d.ts.map +1 -0
  560. package/dist/install/skill.js +61 -0
  561. package/dist/install/skill.js.map +1 -0
  562. package/dist/install/toml-config.d.ts +4 -0
  563. package/dist/install/toml-config.d.ts.map +1 -0
  564. package/dist/install/toml-config.js +54 -0
  565. package/dist/install/toml-config.js.map +1 -0
  566. package/dist/install/types.d.ts +40 -0
  567. package/dist/install/types.d.ts.map +1 -0
  568. package/dist/install/types.js +10 -0
  569. package/dist/install/types.js.map +1 -0
  570. package/dist/install/yaml-config.d.ts +4 -0
  571. package/dist/install/yaml-config.d.ts.map +1 -0
  572. package/dist/install/yaml-config.js +19 -0
  573. package/dist/install/yaml-config.js.map +1 -0
  574. package/dist/lifecycle/down.d.ts +19 -0
  575. package/dist/lifecycle/down.d.ts.map +1 -0
  576. package/dist/lifecycle/down.js +24 -0
  577. package/dist/lifecycle/down.js.map +1 -0
  578. package/dist/lifecycle/health-poll.d.ts +19 -0
  579. package/dist/lifecycle/health-poll.d.ts.map +1 -0
  580. package/dist/lifecycle/health-poll.js +39 -0
  581. package/dist/lifecycle/health-poll.js.map +1 -0
  582. package/dist/lifecycle/install-state.d.ts +34 -0
  583. package/dist/lifecycle/install-state.d.ts.map +1 -0
  584. package/dist/lifecycle/install-state.js +70 -0
  585. package/dist/lifecycle/install-state.js.map +1 -0
  586. package/dist/lifecycle/legacy-migration.d.ts +58 -0
  587. package/dist/lifecycle/legacy-migration.d.ts.map +1 -0
  588. package/dist/lifecycle/legacy-migration.js +212 -0
  589. package/dist/lifecycle/legacy-migration.js.map +1 -0
  590. package/dist/lifecycle/lifecycle-lock.d.ts +20 -0
  591. package/dist/lifecycle/lifecycle-lock.d.ts.map +1 -0
  592. package/dist/lifecycle/lifecycle-lock.js +98 -0
  593. package/dist/lifecycle/lifecycle-lock.js.map +1 -0
  594. package/dist/lifecycle/run-up.d.ts +38 -0
  595. package/dist/lifecycle/run-up.d.ts.map +1 -0
  596. package/dist/lifecycle/run-up.js +307 -0
  597. package/dist/lifecycle/run-up.js.map +1 -0
  598. package/dist/lifecycle/status.d.ts +38 -0
  599. package/dist/lifecycle/status.d.ts.map +1 -0
  600. package/dist/lifecycle/status.js +41 -0
  601. package/dist/lifecycle/status.js.map +1 -0
  602. package/dist/lifecycle/up.d.ts +35 -0
  603. package/dist/lifecycle/up.d.ts.map +1 -0
  604. package/dist/lifecycle/up.js +45 -0
  605. package/dist/lifecycle/up.js.map +1 -0
  606. package/dist/processors/privacy.d.ts +101 -0
  607. package/dist/processors/privacy.d.ts.map +1 -0
  608. package/dist/processors/privacy.js +273 -0
  609. package/dist/processors/privacy.js.map +1 -0
  610. package/dist/profile/accumulate.d.ts +28 -0
  611. package/dist/profile/accumulate.d.ts.map +1 -0
  612. package/dist/profile/accumulate.js +48 -0
  613. package/dist/profile/accumulate.js.map +1 -0
  614. package/dist/profile/behavior.d.ts +32 -0
  615. package/dist/profile/behavior.d.ts.map +1 -0
  616. package/dist/profile/behavior.js +122 -0
  617. package/dist/profile/behavior.js.map +1 -0
  618. package/dist/profile/four-color.d.ts +12 -0
  619. package/dist/profile/four-color.d.ts.map +1 -0
  620. package/dist/profile/four-color.js +39 -0
  621. package/dist/profile/four-color.js.map +1 -0
  622. package/dist/profile/profile-synth.d.ts +27 -0
  623. package/dist/profile/profile-synth.d.ts.map +1 -0
  624. package/dist/profile/profile-synth.js +174 -0
  625. package/dist/profile/profile-synth.js.map +1 -0
  626. package/dist/profile/types.d.ts +84 -0
  627. package/dist/profile/types.d.ts.map +1 -0
  628. package/dist/profile/types.js +11 -0
  629. package/dist/profile/types.js.map +1 -0
  630. package/dist/server/api.d.ts +49 -0
  631. package/dist/server/api.d.ts.map +1 -0
  632. package/dist/server/api.js +502 -0
  633. package/dist/server/api.js.map +1 -0
  634. package/dist/server/backfill-job.d.ts +36 -0
  635. package/dist/server/backfill-job.d.ts.map +1 -0
  636. package/dist/server/backfill-job.js +88 -0
  637. package/dist/server/backfill-job.js.map +1 -0
  638. package/dist/server/backfill-routes.d.ts +7 -0
  639. package/dist/server/backfill-routes.d.ts.map +1 -0
  640. package/dist/server/backfill-routes.js +146 -0
  641. package/dist/server/backfill-routes.js.map +1 -0
  642. package/dist/server/chat-name-refresh-job.d.ts +33 -0
  643. package/dist/server/chat-name-refresh-job.d.ts.map +1 -0
  644. package/dist/server/chat-name-refresh-job.js +120 -0
  645. package/dist/server/chat-name-refresh-job.js.map +1 -0
  646. package/dist/server/chat-name-routes.d.ts +13 -0
  647. package/dist/server/chat-name-routes.d.ts.map +1 -0
  648. package/dist/server/chat-name-routes.js +81 -0
  649. package/dist/server/chat-name-routes.js.map +1 -0
  650. package/dist/server/config-routes.d.ts +10 -0
  651. package/dist/server/config-routes.d.ts.map +1 -0
  652. package/dist/server/config-routes.js +122 -0
  653. package/dist/server/config-routes.js.map +1 -0
  654. package/dist/server/context.d.ts +13 -0
  655. package/dist/server/context.d.ts.map +1 -0
  656. package/dist/server/context.js +47 -0
  657. package/dist/server/context.js.map +1 -0
  658. package/dist/server/entity.d.ts +25 -0
  659. package/dist/server/entity.d.ts.map +1 -0
  660. package/dist/server/entity.js +34 -0
  661. package/dist/server/entity.js.map +1 -0
  662. package/dist/server/event-bus.d.ts +35 -0
  663. package/dist/server/event-bus.d.ts.map +1 -0
  664. package/dist/server/event-bus.js +4 -0
  665. package/dist/server/event-bus.js.map +1 -0
  666. package/dist/server/mcp-http-runtime.d.ts +28 -0
  667. package/dist/server/mcp-http-runtime.d.ts.map +1 -0
  668. package/dist/server/mcp-http-runtime.js +24 -0
  669. package/dist/server/mcp-http-runtime.js.map +1 -0
  670. package/dist/server/mcp-http.d.ts +41 -0
  671. package/dist/server/mcp-http.d.ts.map +1 -0
  672. package/dist/server/mcp-http.js +139 -0
  673. package/dist/server/mcp-http.js.map +1 -0
  674. package/dist/server/mcp.d.ts +292 -0
  675. package/dist/server/mcp.d.ts.map +1 -0
  676. package/dist/server/mcp.js +1146 -0
  677. package/dist/server/mcp.js.map +1 -0
  678. package/dist/server/open-browser.d.ts +3 -0
  679. package/dist/server/open-browser.d.ts.map +1 -0
  680. package/dist/server/open-browser.js +12 -0
  681. package/dist/server/open-browser.js.map +1 -0
  682. package/dist/server/runtime.d.ts +13 -0
  683. package/dist/server/runtime.d.ts.map +1 -0
  684. package/dist/server/runtime.js +27 -0
  685. package/dist/server/runtime.js.map +1 -0
  686. package/dist/server/server-security.d.ts +51 -0
  687. package/dist/server/server-security.d.ts.map +1 -0
  688. package/dist/server/server-security.js +76 -0
  689. package/dist/server/server-security.js.map +1 -0
  690. package/dist/server/setup-server.d.ts +7 -0
  691. package/dist/server/setup-server.d.ts.map +1 -0
  692. package/dist/server/setup-server.js +49 -0
  693. package/dist/server/setup-server.js.map +1 -0
  694. package/dist/setup/assess-hardware.d.ts +34 -0
  695. package/dist/setup/assess-hardware.d.ts.map +1 -0
  696. package/dist/setup/assess-hardware.js +179 -0
  697. package/dist/setup/assess-hardware.js.map +1 -0
  698. package/dist/setup/connection-tests.d.ts +17 -0
  699. package/dist/setup/connection-tests.d.ts.map +1 -0
  700. package/dist/setup/connection-tests.js +69 -0
  701. package/dist/setup/connection-tests.js.map +1 -0
  702. package/dist/setup/detect-api-keys.d.ts +13 -0
  703. package/dist/setup/detect-api-keys.d.ts.map +1 -0
  704. package/dist/setup/detect-api-keys.js +41 -0
  705. package/dist/setup/detect-api-keys.js.map +1 -0
  706. package/dist/setup/detect-runtime.d.ts +14 -0
  707. package/dist/setup/detect-runtime.d.ts.map +1 -0
  708. package/dist/setup/detect-runtime.js +43 -0
  709. package/dist/setup/detect-runtime.js.map +1 -0
  710. package/dist/setup/detect-sources.d.ts +14 -0
  711. package/dist/setup/detect-sources.d.ts.map +1 -0
  712. package/dist/setup/detect-sources.js +75 -0
  713. package/dist/setup/detect-sources.js.map +1 -0
  714. package/dist/setup/doctor.d.ts +48 -0
  715. package/dist/setup/doctor.d.ts.map +1 -0
  716. package/dist/setup/doctor.js +157 -0
  717. package/dist/setup/doctor.js.map +1 -0
  718. package/dist/setup/generate-config.d.ts +13 -0
  719. package/dist/setup/generate-config.d.ts.map +1 -0
  720. package/dist/setup/generate-config.js +163 -0
  721. package/dist/setup/generate-config.js.map +1 -0
  722. package/dist/setup/index.d.ts +9 -0
  723. package/dist/setup/index.d.ts.map +1 -0
  724. package/dist/setup/index.js +9 -0
  725. package/dist/setup/index.js.map +1 -0
  726. package/dist/setup/init-wizard.d.ts +20 -0
  727. package/dist/setup/init-wizard.d.ts.map +1 -0
  728. package/dist/setup/init-wizard.js +531 -0
  729. package/dist/setup/init-wizard.js.map +1 -0
  730. package/dist/setup/terminal.d.ts +28 -0
  731. package/dist/setup/terminal.d.ts.map +1 -0
  732. package/dist/setup/terminal.js +258 -0
  733. package/dist/setup/terminal.js.map +1 -0
  734. package/dist/setup/validate-config.d.ts +30 -0
  735. package/dist/setup/validate-config.d.ts.map +1 -0
  736. package/dist/setup/validate-config.js +45 -0
  737. package/dist/setup/validate-config.js.map +1 -0
  738. package/dist/store/chunks.d.ts +25 -0
  739. package/dist/store/chunks.d.ts.map +1 -0
  740. package/dist/store/chunks.js +78 -0
  741. package/dist/store/chunks.js.map +1 -0
  742. package/dist/store/data-dir-lock.d.ts +15 -0
  743. package/dist/store/data-dir-lock.d.ts.map +1 -0
  744. package/dist/store/data-dir-lock.js +96 -0
  745. package/dist/store/data-dir-lock.js.map +1 -0
  746. package/dist/store/database.d.ts +31 -0
  747. package/dist/store/database.d.ts.map +1 -0
  748. package/dist/store/database.js +113 -0
  749. package/dist/store/database.js.map +1 -0
  750. package/dist/store/embedding.d.ts +23 -0
  751. package/dist/store/embedding.d.ts.map +1 -0
  752. package/dist/store/embedding.js +62 -0
  753. package/dist/store/embedding.js.map +1 -0
  754. package/dist/store/engine-factory.d.ts +4 -0
  755. package/dist/store/engine-factory.d.ts.map +1 -0
  756. package/dist/store/engine-factory.js +18 -0
  757. package/dist/store/engine-factory.js.map +1 -0
  758. package/dist/store/graph.d.ts +75 -0
  759. package/dist/store/graph.d.ts.map +1 -0
  760. package/dist/store/graph.js +276 -0
  761. package/dist/store/graph.js.map +1 -0
  762. package/dist/store/managed/managed-engine.d.ts +35 -0
  763. package/dist/store/managed/managed-engine.d.ts.map +1 -0
  764. package/dist/store/managed/managed-engine.js +40 -0
  765. package/dist/store/managed/managed-engine.js.map +1 -0
  766. package/dist/store/managed/managed-lock.d.ts +2 -0
  767. package/dist/store/managed/managed-lock.d.ts.map +1 -0
  768. package/dist/store/managed/managed-lock.js +68 -0
  769. package/dist/store/managed/managed-lock.js.map +1 -0
  770. package/dist/store/managed/new-install.d.ts +12 -0
  771. package/dist/store/managed/new-install.d.ts.map +1 -0
  772. package/dist/store/managed/new-install.js +23 -0
  773. package/dist/store/managed/new-install.js.map +1 -0
  774. package/dist/store/managed/pg-paths.d.ts +28 -0
  775. package/dist/store/managed/pg-paths.d.ts.map +1 -0
  776. package/dist/store/managed/pg-paths.js +41 -0
  777. package/dist/store/managed/pg-paths.js.map +1 -0
  778. package/dist/store/managed/pg-runtime-provider.d.ts +47 -0
  779. package/dist/store/managed/pg-runtime-provider.d.ts.map +1 -0
  780. package/dist/store/managed/pg-runtime-provider.js +249 -0
  781. package/dist/store/managed/pg-runtime-provider.js.map +1 -0
  782. package/dist/store/managed/pg-supervisor.d.ts +30 -0
  783. package/dist/store/managed/pg-supervisor.d.ts.map +1 -0
  784. package/dist/store/managed/pg-supervisor.js +308 -0
  785. package/dist/store/managed/pg-supervisor.js.map +1 -0
  786. package/dist/store/managed/recovery-loop.d.ts +41 -0
  787. package/dist/store/managed/recovery-loop.d.ts.map +1 -0
  788. package/dist/store/managed/recovery-loop.js +87 -0
  789. package/dist/store/managed/recovery-loop.js.map +1 -0
  790. package/dist/store/managed/stop-from-state.d.ts +11 -0
  791. package/dist/store/managed/stop-from-state.d.ts.map +1 -0
  792. package/dist/store/managed/stop-from-state.js +26 -0
  793. package/dist/store/managed/stop-from-state.js.map +1 -0
  794. package/dist/store/migrations/index.d.ts +9 -0
  795. package/dist/store/migrations/index.d.ts.map +1 -0
  796. package/dist/store/migrations/index.js +121 -0
  797. package/dist/store/migrations/index.js.map +1 -0
  798. package/dist/store/pages.d.ts +81 -0
  799. package/dist/store/pages.d.ts.map +1 -0
  800. package/dist/store/pages.js +286 -0
  801. package/dist/store/pages.js.map +1 -0
  802. package/dist/store/person-behavior.d.ts +37 -0
  803. package/dist/store/person-behavior.d.ts.map +1 -0
  804. package/dist/store/person-behavior.js +134 -0
  805. package/dist/store/person-behavior.js.map +1 -0
  806. package/dist/store/pglite-assets.d.ts +15 -0
  807. package/dist/store/pglite-assets.d.ts.map +1 -0
  808. package/dist/store/pglite-assets.js +47 -0
  809. package/dist/store/pglite-assets.js.map +1 -0
  810. package/dist/store/pglite-executor.d.ts +21 -0
  811. package/dist/store/pglite-executor.d.ts.map +1 -0
  812. package/dist/store/pglite-executor.js +61 -0
  813. package/dist/store/pglite-executor.js.map +1 -0
  814. package/dist/store/postgres-executor.d.ts +16 -0
  815. package/dist/store/postgres-executor.d.ts.map +1 -0
  816. package/dist/store/postgres-executor.js +77 -0
  817. package/dist/store/postgres-executor.js.map +1 -0
  818. package/dist/store/query-rewrite.d.ts +28 -0
  819. package/dist/store/query-rewrite.d.ts.map +1 -0
  820. package/dist/store/query-rewrite.js +97 -0
  821. package/dist/store/query-rewrite.js.map +1 -0
  822. package/dist/store/search.d.ts +65 -0
  823. package/dist/store/search.d.ts.map +1 -0
  824. package/dist/store/search.js +312 -0
  825. package/dist/store/search.js.map +1 -0
  826. package/dist/store/sequence-sync.d.ts +22 -0
  827. package/dist/store/sequence-sync.d.ts.map +1 -0
  828. package/dist/store/sequence-sync.js +46 -0
  829. package/dist/store/sequence-sync.js.map +1 -0
  830. package/dist/store/sql-executor.d.ts +17 -0
  831. package/dist/store/sql-executor.d.ts.map +1 -0
  832. package/dist/store/sql-executor.js +3 -0
  833. package/dist/store/sql-executor.js.map +1 -0
  834. package/dist/store/store-meta.d.ts +10 -0
  835. package/dist/store/store-meta.d.ts.map +1 -0
  836. package/dist/store/store-meta.js +13 -0
  837. package/dist/store/store-meta.js.map +1 -0
  838. package/dist/store/tags.d.ts +10 -0
  839. package/dist/store/tags.d.ts.map +1 -0
  840. package/dist/store/tags.js +35 -0
  841. package/dist/store/tags.js.map +1 -0
  842. package/dist/store/timeline.d.ts +38 -0
  843. package/dist/store/timeline.d.ts.map +1 -0
  844. package/dist/store/timeline.js +173 -0
  845. package/dist/store/timeline.js.map +1 -0
  846. package/dist/store/trgm-search.d.ts +13 -0
  847. package/dist/store/trgm-search.d.ts.map +1 -0
  848. package/dist/store/trgm-search.js +53 -0
  849. package/dist/store/trgm-search.js.map +1 -0
  850. package/dist/store/wikilink.d.ts +17 -0
  851. package/dist/store/wikilink.d.ts.map +1 -0
  852. package/dist/store/wikilink.js +58 -0
  853. package/dist/store/wikilink.js.map +1 -0
  854. package/dist/sync/obsidian.d.ts +136 -0
  855. package/dist/sync/obsidian.d.ts.map +1 -0
  856. package/dist/sync/obsidian.js +543 -0
  857. package/dist/sync/obsidian.js.map +1 -0
  858. package/dist/synth/cache.d.ts +17 -0
  859. package/dist/synth/cache.d.ts.map +1 -0
  860. package/dist/synth/cache.js +67 -0
  861. package/dist/synth/cache.js.map +1 -0
  862. package/dist/synth/citations.d.ts +12 -0
  863. package/dist/synth/citations.d.ts.map +1 -0
  864. package/dist/synth/citations.js +28 -0
  865. package/dist/synth/citations.js.map +1 -0
  866. package/dist/synth/context.d.ts +10 -0
  867. package/dist/synth/context.d.ts.map +1 -0
  868. package/dist/synth/context.js +67 -0
  869. package/dist/synth/context.js.map +1 -0
  870. package/dist/synth/engine.d.ts +16 -0
  871. package/dist/synth/engine.d.ts.map +1 -0
  872. package/dist/synth/engine.js +111 -0
  873. package/dist/synth/engine.js.map +1 -0
  874. package/dist/synth/gaps.d.ts +17 -0
  875. package/dist/synth/gaps.d.ts.map +1 -0
  876. package/dist/synth/gaps.js +57 -0
  877. package/dist/synth/gaps.js.map +1 -0
  878. package/dist/synth/index.d.ts +6 -0
  879. package/dist/synth/index.d.ts.map +1 -0
  880. package/dist/synth/index.js +6 -0
  881. package/dist/synth/index.js.map +1 -0
  882. package/dist/synth/intent.d.ts +6 -0
  883. package/dist/synth/intent.d.ts.map +1 -0
  884. package/dist/synth/intent.js +13 -0
  885. package/dist/synth/intent.js.map +1 -0
  886. package/dist/synth/intents/daily-report.d.ts +7 -0
  887. package/dist/synth/intents/daily-report.d.ts.map +1 -0
  888. package/dist/synth/intents/daily-report.js +37 -0
  889. package/dist/synth/intents/daily-report.js.map +1 -0
  890. package/dist/synth/intents/index.d.ts +2 -0
  891. package/dist/synth/intents/index.d.ts.map +1 -0
  892. package/dist/synth/intents/index.js +12 -0
  893. package/dist/synth/intents/index.js.map +1 -0
  894. package/dist/synth/intents/person-strategy.d.ts +40 -0
  895. package/dist/synth/intents/person-strategy.d.ts.map +1 -0
  896. package/dist/synth/intents/person-strategy.js +66 -0
  897. package/dist/synth/intents/person-strategy.js.map +1 -0
  898. package/dist/synth/intents/recall.d.ts +8 -0
  899. package/dist/synth/intents/recall.d.ts.map +1 -0
  900. package/dist/synth/intents/recall.js +26 -0
  901. package/dist/synth/intents/recall.js.map +1 -0
  902. package/dist/synth/intents/troubleshoot.d.ts +11 -0
  903. package/dist/synth/intents/troubleshoot.d.ts.map +1 -0
  904. package/dist/synth/intents/troubleshoot.js +66 -0
  905. package/dist/synth/intents/troubleshoot.js.map +1 -0
  906. package/dist/synth/scope.d.ts +13 -0
  907. package/dist/synth/scope.d.ts.map +1 -0
  908. package/dist/synth/scope.js +139 -0
  909. package/dist/synth/scope.js.map +1 -0
  910. package/dist/synth/types.d.ts +117 -0
  911. package/dist/synth/types.d.ts.map +1 -0
  912. package/dist/synth/types.js +2 -0
  913. package/dist/synth/types.js.map +1 -0
  914. package/package.json +98 -0
@@ -0,0 +1,94 @@
1
+ const ENV_REF_PATTERN = /\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
2
+ function placeholdersIn(value) {
3
+ const result = new Set();
4
+ function walk(item) {
5
+ if (typeof item === "string") {
6
+ for (const match of item.matchAll(ENV_REF_PATTERN)) {
7
+ result.add(match[1]);
8
+ }
9
+ return;
10
+ }
11
+ if (Array.isArray(item)) {
12
+ for (const child of item)
13
+ walk(child);
14
+ return;
15
+ }
16
+ if (item !== null && typeof item === "object") {
17
+ for (const child of Object.values(item))
18
+ walk(child);
19
+ }
20
+ }
21
+ walk(value);
22
+ return Array.from(result).sort();
23
+ }
24
+ function hasUsableSecret(value) {
25
+ return Boolean(value && !value.match(ENV_REF_PATTERN));
26
+ }
27
+ function llmEnvVar(provider) {
28
+ return provider === "anthropic" ? "ANTHROPIC_API_KEY" : "OPENAI_API_KEY";
29
+ }
30
+ function missingLlmVars(config) {
31
+ const missing = new Set();
32
+ const providerEnv = llmEnvVar(config.llm.provider);
33
+ for (const name of placeholdersIn(config.llm)) {
34
+ if (config.__context.missingEnvVars.includes(name))
35
+ missing.add(name);
36
+ }
37
+ if (!hasUsableSecret(config.llm.api_key) && !process.env[providerEnv]) {
38
+ missing.add(providerEnv);
39
+ }
40
+ return Array.from(missing).sort();
41
+ }
42
+ function missingEmbeddingVars(config) {
43
+ if (config.embedding.provider !== "openai")
44
+ return [];
45
+ const missing = new Set();
46
+ for (const name of placeholdersIn(config.embedding)) {
47
+ if (config.__context.missingEnvVars.includes(name))
48
+ missing.add(name);
49
+ }
50
+ if (!hasUsableSecret(config.embedding.api_key) && !process.env.OPENAI_API_KEY) {
51
+ missing.add("OPENAI_API_KEY");
52
+ }
53
+ return Array.from(missing).sort();
54
+ }
55
+ export function getMissingEnvVarsForCommand(config, command, opts = {}) {
56
+ const missing = new Set();
57
+ if (command === "extract") {
58
+ for (const name of missingLlmVars(config))
59
+ missing.add(name);
60
+ }
61
+ else if (command === "embed") {
62
+ for (const name of missingEmbeddingVars(config))
63
+ missing.add(name);
64
+ }
65
+ else if (command === "search") {
66
+ if (opts.searchMode !== "fts") {
67
+ for (const name of missingEmbeddingVars(config))
68
+ missing.add(name);
69
+ }
70
+ }
71
+ else if (command === "doctor") {
72
+ for (const name of config.__context.missingEnvVars)
73
+ missing.add(name);
74
+ for (const name of missingLlmVars(config))
75
+ missing.add(name);
76
+ for (const name of missingEmbeddingVars(config))
77
+ missing.add(name);
78
+ }
79
+ else if (command === "serve") {
80
+ for (const name of config.__context.missingEnvVars)
81
+ missing.add(name);
82
+ }
83
+ return Array.from(missing).sort();
84
+ }
85
+ export function validateEnvForCommand(config, command, opts = {}) {
86
+ const missing = getMissingEnvVarsForCommand(config, command, opts);
87
+ if (missing.length === 0)
88
+ return;
89
+ throw new Error(`Missing required environment variables: ${missing.join(", ")}\n` +
90
+ `Referenced by: ${config.__context.configPath}\n` +
91
+ "Set them in your shell or replace the $" +
92
+ "{VAR} placeholders in memkin.yaml.");
93
+ }
94
+ //# sourceMappingURL=env-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-validation.js","sourceRoot":"","sources":["../../src/core/env-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ExtractionResult } from "./types.js";
2
+ export declare function isEmptyExtraction(result: ExtractionResult): boolean;
3
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/core/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAUnE"}
@@ -0,0 +1,10 @@
1
+ export function isEmptyExtraction(result) {
2
+ return (result.entities.length === 0 &&
3
+ result.timeline.length === 0 &&
4
+ result.links.length === 0 &&
5
+ result.decisions.length === 0 &&
6
+ result.tasks.length === 0 &&
7
+ result.discoveries.length === 0 &&
8
+ result.knowledge.length === 0);
9
+ }
10
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/core/helpers.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,MAAwB;IACxD,OAAO,CACL,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QACzB,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QACzB,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAC/B,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAC9B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { SqlExecutor } from "../store/sql-executor.js";
2
+ import type { ExtractionResult, RawMessage } from "./types.js";
3
+ export interface IdentityBackend {
4
+ resolveFeishuOpenId(openId: string): Promise<{
5
+ name: string;
6
+ slugHint?: string;
7
+ } | null>;
8
+ resolveFeishuChatId(channel: string): Promise<{
9
+ name: string;
10
+ } | null>;
11
+ }
12
+ export declare class IdentityResolver {
13
+ private db;
14
+ private backend?;
15
+ private readonly identity;
16
+ constructor(db: SqlExecutor, backend?: IdentityBackend | undefined);
17
+ enrichBatch(messages: RawMessage[]): Promise<RawMessage[]>;
18
+ private resolve;
19
+ private isUnresolvedId;
20
+ /**
21
+ * Canonicalize a person slug using pinyin rules and cache the result.
22
+ *
23
+ * @param name - The person's display name (e.g., "王建都")
24
+ * @param modelSlug - The model-produced slug (e.g., "person/wang-jian-du")
25
+ * @returns Canonical slug and whether the input was an alias
26
+ */
27
+ canonicalizePersonSlug(name: string, modelSlug: string): Promise<{
28
+ slug: string;
29
+ isAlias: boolean;
30
+ }>;
31
+ /**
32
+ * Canonicalize all person slugs in an ExtractionResult and rewrite references.
33
+ *
34
+ * @param result - The extraction result to canonicalize
35
+ * @returns Canonicalized result and alias map (canonical -> list of old slugs)
36
+ */
37
+ canonicalizeExtractionResult(result: ExtractionResult): Promise<{
38
+ result: ExtractionResult;
39
+ aliases: Map<string, string[]>;
40
+ }>;
41
+ }
42
+ //# sourceMappingURL=identity-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-resolver.d.ts","sourceRoot":"","sources":["../../src/core/identity-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAKzF,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACxE;AAOD,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;gBAGrC,EAAE,EAAE,WAAW,EACf,OAAO,CAAC,EAAE,eAAe,YAAA;IAK7B,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAwBlD,OAAO;IAqCrB,OAAO,CAAC,cAAc;IAItB;;;;;;OAMG;IACG,sBAAsB,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAyF9C;;;;;OAKG;IACG,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC;QACpE,MAAM,EAAE,gBAAgB,CAAC;QACzB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KAChC,CAAC;CAmFH"}
@@ -0,0 +1,207 @@
1
+ import { PersonIdentityStore } from "./person-identity.js";
2
+ import { toPersonCanonicalSlug } from "./person-slug.js";
3
+ export class IdentityResolver {
4
+ db;
5
+ backend;
6
+ identity;
7
+ constructor(db, backend) {
8
+ this.db = db;
9
+ this.backend = backend;
10
+ this.identity = new PersonIdentityStore(db);
11
+ }
12
+ async enrichBatch(messages) {
13
+ const unresolvedIds = new Set();
14
+ for (const msg of messages) {
15
+ if (this.isUnresolvedId(msg.contact)) {
16
+ unresolvedIds.add(msg.contact);
17
+ }
18
+ }
19
+ if (unresolvedIds.size === 0)
20
+ return messages;
21
+ const resolved = new Map();
22
+ for (const id of unresolvedIds) {
23
+ const name = await this.resolve("feishu", id);
24
+ if (name)
25
+ resolved.set(id, name);
26
+ }
27
+ return messages.map((msg) => {
28
+ const name = resolved.get(msg.contact);
29
+ if (!name)
30
+ return msg;
31
+ return { ...msg, contact: name };
32
+ });
33
+ }
34
+ async resolve(platform, externalId) {
35
+ const cached = await this.db.query("SELECT display_name, slug_hint FROM identity_cache WHERE platform = $1 AND external_id = $2", [platform, externalId]);
36
+ if (cached.rows.length > 0) {
37
+ const row = cached.rows[0];
38
+ if (row.display_name) {
39
+ return row.slug_hint ? `${row.display_name} (${row.slug_hint})` : row.display_name;
40
+ }
41
+ // display_name is NULL — cache row exists but is incomplete; fall through to backend
42
+ }
43
+ if (!this.backend)
44
+ return null;
45
+ try {
46
+ const result = await this.backend.resolveFeishuOpenId(externalId);
47
+ if (!result)
48
+ return null;
49
+ await this.db.query(`INSERT INTO identity_cache (platform, external_id, display_name, slug_hint)
50
+ VALUES ($1, $2, $3, $4)
51
+ ON CONFLICT (platform, external_id) DO UPDATE SET
52
+ display_name = EXCLUDED.display_name,
53
+ slug_hint = EXCLUDED.slug_hint,
54
+ resolved_at = NOW()`, [platform, externalId, result.name, result.slugHint ?? null]);
55
+ return result.slugHint ? `${result.name} (${result.slugHint})` : result.name;
56
+ }
57
+ catch (error) {
58
+ console.warn(`[IdentityResolver] Failed to resolve ${externalId}:`, error);
59
+ return null;
60
+ }
61
+ }
62
+ isUnresolvedId(contact) {
63
+ return contact.startsWith("ou_");
64
+ }
65
+ /**
66
+ * Canonicalize a person slug using pinyin rules and cache the result.
67
+ *
68
+ * @param name - The person's display name (e.g., "王建都")
69
+ * @param modelSlug - The model-produced slug (e.g., "person/wang-jian-du")
70
+ * @returns Canonical slug and whether the input was an alias
71
+ */
72
+ async canonicalizePersonSlug(name, modelSlug) {
73
+ // 0. Explicit handle table wins (Layer 1): a previously-linked alias —
74
+ // open id / email / exact name / nickname — pins the canonical slug.
75
+ const byHandle = await this.identity.resolveForExtraction(name, modelSlug);
76
+ if (byHandle) {
77
+ return { slug: byHandle, isAlias: modelSlug !== byHandle };
78
+ }
79
+ // 1. Check cache by modelSlug
80
+ const cacheBySlug = await this.db.query("SELECT display_name FROM identity_cache WHERE platform = $1 AND external_id = $2", ["canonical", modelSlug]);
81
+ if (cacheBySlug.rows.length > 0) {
82
+ const canonicalSlug = cacheBySlug.rows[0].display_name;
83
+ if (canonicalSlug)
84
+ return { slug: canonicalSlug, isAlias: modelSlug !== canonicalSlug };
85
+ // display_name is NULL: deliberate fallthrough — cacheByName (Step 2) may still have a valid canonical
86
+ }
87
+ // 2. Check cache by name
88
+ const cacheByName = await this.db.query("SELECT display_name FROM identity_cache WHERE platform = $1 AND external_id = $2", ["canonical", name]);
89
+ if (cacheByName.rows.length > 0) {
90
+ const canonicalSlug = cacheByName.rows[0].display_name;
91
+ if (canonicalSlug) {
92
+ // Insert modelSlug -> canonical mapping (if not already there)
93
+ await this.db.query(`INSERT INTO identity_cache (platform, external_id, display_name, slug_hint)
94
+ VALUES ($1, $2, $3, $4)
95
+ ON CONFLICT (platform, external_id) DO NOTHING`, ["canonical", modelSlug, canonicalSlug, name]);
96
+ return { slug: canonicalSlug, isAlias: modelSlug !== canonicalSlug };
97
+ }
98
+ // display_name is NULL: treat as cache miss, fall through to pinyin step
99
+ }
100
+ // 3. Generate canonical slug
101
+ const canonicalSlug = toPersonCanonicalSlug(name);
102
+ // 4. If null (unsupported script), return original
103
+ if (canonicalSlug === null) {
104
+ return { slug: modelSlug, isAlias: false };
105
+ }
106
+ // 5. Collision guard: check if canonical slug already exists with different name
107
+ const collision = await this.db.query("SELECT slug_hint FROM identity_cache WHERE platform = $1 AND display_name = $2 AND slug_hint != $3", ["canonical", canonicalSlug, name]);
108
+ if (collision.rows.length > 0) {
109
+ const canonicalOpenId = canonicalSlug.match(/^person\/(ou_[a-z0-9]+)$/)?.[1];
110
+ const nameOpenId = name.match(/\bou_[a-zA-Z0-9]+\b/)?.[0].toLowerCase();
111
+ if (!canonicalOpenId || canonicalOpenId !== nameOpenId) {
112
+ console.warn(`[IdentityResolver] Slug collision detected: canonical slug '${canonicalSlug}' already exists for '${collision.rows[0].slug_hint}', keeping original slug '${modelSlug}' for '${name}'`);
113
+ return { slug: modelSlug, isAlias: false };
114
+ }
115
+ }
116
+ // 6. Insert both mappings: modelSlug -> canonical and name -> canonical
117
+ await this.db.query(`INSERT INTO identity_cache (platform, external_id, display_name, slug_hint)
118
+ VALUES ($1, $2, $3, $4)
119
+ ON CONFLICT (platform, external_id) DO NOTHING`, ["canonical", modelSlug, canonicalSlug, name]);
120
+ await this.db.query(`INSERT INTO identity_cache (platform, external_id, display_name, slug_hint)
121
+ VALUES ($1, $2, $3, $4)
122
+ ON CONFLICT (platform, external_id) DO NOTHING`, ["canonical", name, canonicalSlug, name]);
123
+ // Record the strong handles (name/slug/open id) so future explicit aliases
124
+ // and merges can build on a populated handle table.
125
+ await this.identity.recordCanonical(name, canonicalSlug);
126
+ return { slug: canonicalSlug, isAlias: modelSlug !== canonicalSlug };
127
+ }
128
+ /**
129
+ * Canonicalize all person slugs in an ExtractionResult and rewrite references.
130
+ *
131
+ * @param result - The extraction result to canonicalize
132
+ * @returns Canonicalized result and alias map (canonical -> list of old slugs)
133
+ */
134
+ async canonicalizeExtractionResult(result) {
135
+ // 1. Build rewrite map for person entities
136
+ const rewriteMap = new Map();
137
+ const aliasesMap = new Map();
138
+ for (const entity of result.entities) {
139
+ if (entity.type !== "person")
140
+ continue;
141
+ const { slug: canonicalSlug, isAlias } = await this.canonicalizePersonSlug(entity.name, entity.slug);
142
+ rewriteMap.set(entity.slug, canonicalSlug);
143
+ if (isAlias && entity.slug !== canonicalSlug) {
144
+ if (!aliasesMap.has(canonicalSlug)) {
145
+ aliasesMap.set(canonicalSlug, []);
146
+ }
147
+ const aliases = aliasesMap.get(canonicalSlug);
148
+ if (aliases) {
149
+ aliases.push(entity.slug);
150
+ }
151
+ }
152
+ }
153
+ // 2. Helper to rewrite a slug if it's in the map
154
+ const rewriteSlug = (slug) => {
155
+ return rewriteMap.get(slug) ?? slug;
156
+ };
157
+ // 3. Rewrite entities and deduplicate
158
+ const entityMap = new Map();
159
+ for (const entity of result.entities) {
160
+ const slug = entity.type === "person" ? rewriteSlug(entity.slug) : entity.slug;
161
+ // Keep first entity for each canonical slug
162
+ if (!entityMap.has(slug)) {
163
+ entityMap.set(slug, { ...entity, slug });
164
+ }
165
+ }
166
+ // 4. Rewrite all slug references
167
+ const canonicalized = {
168
+ source: result.source,
169
+ entities: Array.from(entityMap.values()),
170
+ timeline: result.timeline.map((t) => ({
171
+ ...t,
172
+ entities: t.entities.map(rewriteSlug),
173
+ })),
174
+ links: result.links.map((link) => ({
175
+ ...link,
176
+ from: rewriteSlug(link.from),
177
+ to: rewriteSlug(link.to),
178
+ })),
179
+ decisions: result.decisions.map((d) => ({
180
+ ...d,
181
+ entities: d.entities.map(rewriteSlug),
182
+ })),
183
+ tasks: result.tasks.map((task) => ({
184
+ ...task,
185
+ owner: task.owner?.startsWith("person/") ? rewriteSlug(task.owner) : task.owner,
186
+ })),
187
+ discoveries: result.discoveries.map((d) => ({
188
+ ...d,
189
+ entities: d.entities.map(rewriteSlug),
190
+ })),
191
+ knowledge: result.knowledge.map((k) => ({
192
+ ...k,
193
+ related_entities: k.related_entities.map(rewriteSlug),
194
+ })),
195
+ preferences: (result.preferences ?? []).map((p) => ({
196
+ ...p,
197
+ entities: p.entities.map(rewriteSlug),
198
+ })),
199
+ references: (result.references ?? []).map((r) => ({
200
+ ...r,
201
+ entities: r.entities.map(rewriteSlug),
202
+ })),
203
+ };
204
+ return { result: canonicalized, aliases: aliasesMap };
205
+ }
206
+ }
207
+ //# sourceMappingURL=identity-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-resolver.js","sourceRoot":"","sources":["../../src/core/identity-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Person identity — Layer 1: typed handle/alias resolution.
3
+ *
4
+ * A person is anchored by a human-readable canonical page slug (e.g.
5
+ * `person/li-yinglong`). Every other way the person is referred to — a Feishu
6
+ * open id, an email, an exact display name, a nickname / 花名 — is a *handle*
7
+ * stored in `person_handles` and pointing at that canonical slug.
8
+ *
9
+ * Resolution rules (mirrors openhuman's `people` resolver contract):
10
+ * - Strong handles (feishu_open_id / email / name / slug) auto-resolve and
11
+ * are recorded automatically during canonicalization.
12
+ * - Weak handles (nickname / 花名) are NEVER created automatically — they
13
+ * only enter the table via an explicit `addAlias` / `link`, so an
14
+ * ambiguous nickname like "龙哥" can never silently merge two people.
15
+ * - Merging two existing person pages is always an explicit operation.
16
+ */
17
+ import type { PageStore } from "../store/pages.js";
18
+ import type { PersonBehaviorStore } from "../store/person-behavior.js";
19
+ import type { SqlExecutor } from "../store/sql-executor.js";
20
+ export type HandleKind = "feishu_open_id" | "email" | "name" | "nickname" | "slug";
21
+ export type HandleStrength = "strong" | "weak";
22
+ export interface PersonHandle {
23
+ kind: HandleKind;
24
+ value: string;
25
+ canonical_slug: string;
26
+ strength: HandleStrength;
27
+ }
28
+ /** Default strength for a handle kind. Nicknames are weak; everything else strong. */
29
+ export declare function defaultStrength(kind: HandleKind): HandleStrength;
30
+ /**
31
+ * Canonicalize a handle value for storage and lookup. Emails and open ids are
32
+ * lowercased; names and nicknames are whitespace-collapsed; slugs are passed
33
+ * through (already normalized lowercase).
34
+ */
35
+ export declare function canonicalizeHandleValue(kind: HandleKind, value: string): string;
36
+ /** Canonical slug of the special "me" identity page (Spec 9 §4.1). */
37
+ export declare const ME_SLUG = "entities/me";
38
+ export interface PersonIdentityStores {
39
+ pages: PageStore;
40
+ }
41
+ /** Optional extra stores kept consistent across identity operations (Spec 8). */
42
+ export interface PersonIdentityExtraStores {
43
+ /** Spec 8 behavior layer — counters are merged when two persons merge. */
44
+ behavior?: PersonBehaviorStore;
45
+ }
46
+ export declare class PersonIdentityStore {
47
+ private db;
48
+ private stores?;
49
+ private extra?;
50
+ constructor(db: SqlExecutor, stores?: PersonIdentityStores | undefined, extra?: PersonIdentityExtraStores | undefined);
51
+ /** Resolve a single handle to its canonical person slug, or null. */
52
+ resolveHandle(kind: HandleKind, value: string): Promise<string | null>;
53
+ /**
54
+ * Resolve an extraction's (name, modelSlug) to a canonical slug via known
55
+ * handles. Tries strong handles first (slug, embedded open id / email, exact
56
+ * name), then any explicitly-linked nickname. Returns null if nothing known.
57
+ */
58
+ resolveForExtraction(name: string, modelSlug: string): Promise<string | null>;
59
+ /**
60
+ * Record the strong handles implied by a freshly-canonicalized person
61
+ * (name → slug, slug → slug, and any embedded open id). Idempotent and
62
+ * non-destructive: existing rows are left untouched.
63
+ */
64
+ recordCanonical(name: string, canonicalSlug: string): Promise<void>;
65
+ /**
66
+ * Ensure the special `entities/me` self-identity page exists (Spec 9 §4.1).
67
+ * Idempotent — returns the canonical slug; creates a minimal person page the
68
+ * user can hand-edit (role / company / team / handles) when absent.
69
+ */
70
+ ensureEntitiesMe(): Promise<string>;
71
+ /**
72
+ * Register one of the current user's own handles (open_id / email / name),
73
+ * pointing it at `entities/me` as a strong handle (Spec 9 §4.2 manual path).
74
+ * Ensures the me page exists first.
75
+ *
76
+ * Spike (Spec 9 §4.2): auto-resolving the self open_id via
77
+ * `resolveSelfOpenId()` (src/collectors/feishu/self-open-id.ts) is wired as a
78
+ * best-effort enhancement only — it depends on a live lark-cli user-level
79
+ * OAuth session (user_access_token, separate from the bot token). That session
80
+ * is not available in CI/test, so only this manual path is exercised by tests
81
+ * and is the reliable default. Callers may best-effort call resolveSelfOpenId
82
+ * and feed the result here when a real session exists.
83
+ */
84
+ registerSelfHandle(kind: HandleKind, value: string): Promise<void>;
85
+ /**
86
+ * Whether `slugOrHandle` is the current user (Spec 9 §4.3). Accepts either a
87
+ * canonical slug (e.g. `entities/me`, `people/alice`) or a raw handle value
88
+ * (open_id / email / name / nickname); resolves to a canonical slug and
89
+ * compares against `entities/me`.
90
+ */
91
+ isMe(slugOrHandle: string): Promise<boolean>;
92
+ /**
93
+ * Explicitly attach a handle (alias) to a canonical person. Defaults to the
94
+ * kind's natural strength. Throws if the handle already points at a
95
+ * different person (use `merge` / `removeHandle` to reassign).
96
+ */
97
+ addAlias(canonicalSlug: string, kind: HandleKind, value: string, strength?: HandleStrength): Promise<void>;
98
+ /** List all handles attached to a canonical person. */
99
+ listHandles(canonicalSlug: string): Promise<PersonHandle[]>;
100
+ /** Remove a handle by (kind, value). */
101
+ removeHandle(kind: HandleKind, value: string): Promise<void>;
102
+ /**
103
+ * Rename a person's canonical slug (correct a wrong canonicalization).
104
+ * Renames the page, re-points handles + identity_cache, leaves the old slug
105
+ * behind as a resolvable alias.
106
+ */
107
+ recanonicalize(oldSlug: string, newSlug: string): Promise<void>;
108
+ /**
109
+ * Merge person page `fromSlug` into `intoSlug`. Re-points links, timeline
110
+ * entries, and tags; folds the body and aliases into the target; records the
111
+ * old slug + handles as aliases of the target; deletes the old page.
112
+ *
113
+ * All direct SQL is executed inside a single transaction. Page rows are
114
+ * locked in sorted slug order to prevent deadlocks between concurrent
115
+ * reverse merges. If the source page no longer exists inside the transaction
116
+ * (already merged by a concurrent caller), the method returns as a no-op.
117
+ *
118
+ * Note: the old page's embeddings (chunks) are dropped with it — run
119
+ * `memkin embed` afterwards to re-embed the folded content.
120
+ */
121
+ merge(fromSlug: string, intoSlug: string): Promise<void>;
122
+ private requirePages;
123
+ private insertHandle;
124
+ private repointIdentityCache;
125
+ /** tx-scoped variant of repointIdentityCache for use inside merge transaction. */
126
+ private repointIdentityCacheTx;
127
+ /** tx-scoped variant of insertHandle for use inside merge transaction. */
128
+ private insertHandleTx;
129
+ private frontmatterAliases;
130
+ private appendAliasesToPage;
131
+ private writePage;
132
+ /**
133
+ * tx-scoped page write for use inside the merge transaction.
134
+ * Executes the putPage SQL directly against the tx connection so the update
135
+ * participates in the outer transaction (avoids using a pool connection from
136
+ * PageStore which would be outside the tx boundary).
137
+ */
138
+ private writePageTx;
139
+ }
140
+ //# sourceMappingURL=person-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"person-identity.d.ts","sourceRoot":"","sources":["../../src/core/person-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AACnF,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAY/E;AAKD,sEAAsE;AACtE,eAAO,MAAM,OAAO,gBAAgB,CAAC;AAErC,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,iFAAiF;AACjF,MAAM,WAAW,yBAAyB;IACxC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,KAAK,CAAC;gBAFN,EAAE,EAAE,WAAW,EACf,MAAM,CAAC,EAAE,oBAAoB,YAAA,EAC7B,KAAK,CAAC,EAAE,yBAAyB,YAAA;IAG3C,qEAAqE;IAC/D,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS5E;;;;OAIG;IACG,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAuBnF;;;;OAIG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzE;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAWzC;;;;;;;;;;;;OAYG;IACG,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxE;;;;;OAKG;IACG,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlD;;;;OAIG;IACG,QAAQ,CACZ,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,IAAI,CAAC;IAehB,uDAAuD;IACjD,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAQjE,wCAAwC;IAClC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlE;;;;OAIG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrE;;;;;;;;;;;;OAYG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8H9D,OAAO,CAAC,YAAY;YAON,YAAY;YA2BZ,oBAAoB;IAalC,kFAAkF;YACpE,sBAAsB;IAiBpC,0EAA0E;YAC5D,cAAc;IA4B5B,OAAO,CAAC,kBAAkB;YAKZ,mBAAmB;YAQnB,SAAS;IAiBvB;;;;;OAKG;YACW,WAAW;CA+B1B"}