@andre.li/memoark 0.3.1

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 (441) hide show
  1. package/LICENSE +191 -0
  2. package/README.en.md +606 -0
  3. package/README.md +560 -0
  4. package/bin/memoark.mjs +36 -0
  5. package/dist/adapters/file.d.ts +19 -0
  6. package/dist/adapters/file.d.ts.map +1 -0
  7. package/dist/adapters/file.js +61 -0
  8. package/dist/adapters/file.js.map +1 -0
  9. package/dist/adapters/gbrain.d.ts +29 -0
  10. package/dist/adapters/gbrain.d.ts.map +1 -0
  11. package/dist/adapters/gbrain.js +622 -0
  12. package/dist/adapters/gbrain.js.map +1 -0
  13. package/dist/adapters/index.d.ts +6 -0
  14. package/dist/adapters/index.d.ts.map +1 -0
  15. package/dist/adapters/index.js +5 -0
  16. package/dist/adapters/index.js.map +1 -0
  17. package/dist/adapters/registry.d.ts +18 -0
  18. package/dist/adapters/registry.d.ts.map +1 -0
  19. package/dist/adapters/registry.js +18 -0
  20. package/dist/adapters/registry.js.map +1 -0
  21. package/dist/adapters/stdout.d.ts +12 -0
  22. package/dist/adapters/stdout.d.ts.map +1 -0
  23. package/dist/adapters/stdout.js +29 -0
  24. package/dist/adapters/stdout.js.map +1 -0
  25. package/dist/adapters/store.d.ts +47 -0
  26. package/dist/adapters/store.d.ts.map +1 -0
  27. package/dist/adapters/store.js +641 -0
  28. package/dist/adapters/store.js.map +1 -0
  29. package/dist/cli.d.ts +2 -0
  30. package/dist/cli.d.ts.map +1 -0
  31. package/dist/cli.js +694 -0
  32. package/dist/cli.js.map +1 -0
  33. package/dist/collectors/agent/claude-code.d.ts +12 -0
  34. package/dist/collectors/agent/claude-code.d.ts.map +1 -0
  35. package/dist/collectors/agent/claude-code.js +94 -0
  36. package/dist/collectors/agent/claude-code.js.map +1 -0
  37. package/dist/collectors/agent/codex.d.ts +16 -0
  38. package/dist/collectors/agent/codex.d.ts.map +1 -0
  39. package/dist/collectors/agent/codex.js +149 -0
  40. package/dist/collectors/agent/codex.js.map +1 -0
  41. package/dist/collectors/agent/collector.d.ts +20 -0
  42. package/dist/collectors/agent/collector.d.ts.map +1 -0
  43. package/dist/collectors/agent/collector.js +108 -0
  44. package/dist/collectors/agent/collector.js.map +1 -0
  45. package/dist/collectors/agent/hermes.d.ts +13 -0
  46. package/dist/collectors/agent/hermes.d.ts.map +1 -0
  47. package/dist/collectors/agent/hermes.js +90 -0
  48. package/dist/collectors/agent/hermes.js.map +1 -0
  49. package/dist/collectors/agent/index.d.ts +6 -0
  50. package/dist/collectors/agent/index.d.ts.map +1 -0
  51. package/dist/collectors/agent/index.js +5 -0
  52. package/dist/collectors/agent/index.js.map +1 -0
  53. package/dist/collectors/agent/types.d.ts +61 -0
  54. package/dist/collectors/agent/types.d.ts.map +1 -0
  55. package/dist/collectors/agent/types.js +6 -0
  56. package/dist/collectors/agent/types.js.map +1 -0
  57. package/dist/collectors/feishu/auth.d.ts +13 -0
  58. package/dist/collectors/feishu/auth.d.ts.map +1 -0
  59. package/dist/collectors/feishu/auth.js +72 -0
  60. package/dist/collectors/feishu/auth.js.map +1 -0
  61. package/dist/collectors/feishu/collector.d.ts +23 -0
  62. package/dist/collectors/feishu/collector.d.ts.map +1 -0
  63. package/dist/collectors/feishu/collector.js +113 -0
  64. package/dist/collectors/feishu/collector.js.map +1 -0
  65. package/dist/collectors/feishu/cursor-staging.d.ts +11 -0
  66. package/dist/collectors/feishu/cursor-staging.d.ts.map +1 -0
  67. package/dist/collectors/feishu/cursor-staging.js +37 -0
  68. package/dist/collectors/feishu/cursor-staging.js.map +1 -0
  69. package/dist/collectors/feishu/http-client.d.ts +26 -0
  70. package/dist/collectors/feishu/http-client.d.ts.map +1 -0
  71. package/dist/collectors/feishu/http-client.js +94 -0
  72. package/dist/collectors/feishu/http-client.js.map +1 -0
  73. package/dist/collectors/feishu/index.d.ts +3 -0
  74. package/dist/collectors/feishu/index.d.ts.map +1 -0
  75. package/dist/collectors/feishu/index.js +2 -0
  76. package/dist/collectors/feishu/index.js.map +1 -0
  77. package/dist/collectors/feishu/lark-cli-client.d.ts +16 -0
  78. package/dist/collectors/feishu/lark-cli-client.d.ts.map +1 -0
  79. package/dist/collectors/feishu/lark-cli-client.js +69 -0
  80. package/dist/collectors/feishu/lark-cli-client.js.map +1 -0
  81. package/dist/collectors/feishu/rate-limiter.d.ts +10 -0
  82. package/dist/collectors/feishu/rate-limiter.d.ts.map +1 -0
  83. package/dist/collectors/feishu/rate-limiter.js +33 -0
  84. package/dist/collectors/feishu/rate-limiter.js.map +1 -0
  85. package/dist/collectors/feishu/sources/base.d.ts +9 -0
  86. package/dist/collectors/feishu/sources/base.d.ts.map +1 -0
  87. package/dist/collectors/feishu/sources/base.js +2 -0
  88. package/dist/collectors/feishu/sources/base.js.map +1 -0
  89. package/dist/collectors/feishu/sources/calendar.d.ts +16 -0
  90. package/dist/collectors/feishu/sources/calendar.d.ts.map +1 -0
  91. package/dist/collectors/feishu/sources/calendar.js +93 -0
  92. package/dist/collectors/feishu/sources/calendar.js.map +1 -0
  93. package/dist/collectors/feishu/sources/dm.d.ts +28 -0
  94. package/dist/collectors/feishu/sources/dm.d.ts.map +1 -0
  95. package/dist/collectors/feishu/sources/dm.js +152 -0
  96. package/dist/collectors/feishu/sources/dm.js.map +1 -0
  97. package/dist/collectors/feishu/sources/docs.d.ts +23 -0
  98. package/dist/collectors/feishu/sources/docs.d.ts.map +1 -0
  99. package/dist/collectors/feishu/sources/docs.js +154 -0
  100. package/dist/collectors/feishu/sources/docs.js.map +1 -0
  101. package/dist/collectors/feishu/sources/mail.d.ts +27 -0
  102. package/dist/collectors/feishu/sources/mail.d.ts.map +1 -0
  103. package/dist/collectors/feishu/sources/mail.js +136 -0
  104. package/dist/collectors/feishu/sources/mail.js.map +1 -0
  105. package/dist/collectors/feishu/sources/message-search.d.ts +37 -0
  106. package/dist/collectors/feishu/sources/message-search.d.ts.map +1 -0
  107. package/dist/collectors/feishu/sources/message-search.js +140 -0
  108. package/dist/collectors/feishu/sources/message-search.js.map +1 -0
  109. package/dist/collectors/feishu/sources/messages.d.ts +26 -0
  110. package/dist/collectors/feishu/sources/messages.d.ts.map +1 -0
  111. package/dist/collectors/feishu/sources/messages.js +148 -0
  112. package/dist/collectors/feishu/sources/messages.js.map +1 -0
  113. package/dist/collectors/feishu/sources/tasks.d.ts +15 -0
  114. package/dist/collectors/feishu/sources/tasks.d.ts.map +1 -0
  115. package/dist/collectors/feishu/sources/tasks.js +74 -0
  116. package/dist/collectors/feishu/sources/tasks.js.map +1 -0
  117. package/dist/collectors/feishu/types.d.ts +224 -0
  118. package/dist/collectors/feishu/types.d.ts.map +1 -0
  119. package/dist/collectors/feishu/types.js +17 -0
  120. package/dist/collectors/feishu/types.js.map +1 -0
  121. package/dist/collectors/index.d.ts +10 -0
  122. package/dist/collectors/index.d.ts.map +1 -0
  123. package/dist/collectors/index.js +18 -0
  124. package/dist/collectors/index.js.map +1 -0
  125. package/dist/config-center/connection-checks.d.ts +28 -0
  126. package/dist/config-center/connection-checks.d.ts.map +1 -0
  127. package/dist/config-center/connection-checks.js +114 -0
  128. package/dist/config-center/connection-checks.js.map +1 -0
  129. package/dist/config-center/document.d.ts +21 -0
  130. package/dist/config-center/document.d.ts.map +1 -0
  131. package/dist/config-center/document.js +93 -0
  132. package/dist/config-center/document.js.map +1 -0
  133. package/dist/config-center/index.d.ts +9 -0
  134. package/dist/config-center/index.d.ts.map +1 -0
  135. package/dist/config-center/index.js +29 -0
  136. package/dist/config-center/index.js.map +1 -0
  137. package/dist/config-center/recommendations.d.ts +16 -0
  138. package/dist/config-center/recommendations.d.ts.map +1 -0
  139. package/dist/config-center/recommendations.js +50 -0
  140. package/dist/config-center/recommendations.js.map +1 -0
  141. package/dist/config-center/reducer.d.ts +57 -0
  142. package/dist/config-center/reducer.d.ts.map +1 -0
  143. package/dist/config-center/reducer.js +192 -0
  144. package/dist/config-center/reducer.js.map +1 -0
  145. package/dist/config-center/schema.d.ts +31 -0
  146. package/dist/config-center/schema.d.ts.map +1 -0
  147. package/dist/config-center/schema.js +365 -0
  148. package/dist/config-center/schema.js.map +1 -0
  149. package/dist/config-center/secrets.d.ts +4 -0
  150. package/dist/config-center/secrets.d.ts.map +1 -0
  151. package/dist/config-center/secrets.js +27 -0
  152. package/dist/config-center/secrets.js.map +1 -0
  153. package/dist/config-center/source-dirs.d.ts +16 -0
  154. package/dist/config-center/source-dirs.d.ts.map +1 -0
  155. package/dist/config-center/source-dirs.js +81 -0
  156. package/dist/config-center/source-dirs.js.map +1 -0
  157. package/dist/config-center/tui/app.d.ts +22 -0
  158. package/dist/config-center/tui/app.d.ts.map +1 -0
  159. package/dist/config-center/tui/app.js +142 -0
  160. package/dist/config-center/tui/app.js.map +1 -0
  161. package/dist/config-center/tui/render.d.ts +20 -0
  162. package/dist/config-center/tui/render.d.ts.map +1 -0
  163. package/dist/config-center/tui/render.js +166 -0
  164. package/dist/config-center/tui/render.js.map +1 -0
  165. package/dist/config-center/validation.d.ts +9 -0
  166. package/dist/config-center/validation.d.ts.map +1 -0
  167. package/dist/config-center/validation.js +59 -0
  168. package/dist/config-center/validation.js.map +1 -0
  169. package/dist/consolidator/consolidator.d.ts +31 -0
  170. package/dist/consolidator/consolidator.d.ts.map +1 -0
  171. package/dist/consolidator/consolidator.js +57 -0
  172. package/dist/consolidator/consolidator.js.map +1 -0
  173. package/dist/consolidator/dead-link.d.ts +7 -0
  174. package/dist/consolidator/dead-link.d.ts.map +1 -0
  175. package/dist/consolidator/dead-link.js +57 -0
  176. package/dist/consolidator/dead-link.js.map +1 -0
  177. package/dist/consolidator/hot-warm.d.ts +9 -0
  178. package/dist/consolidator/hot-warm.d.ts.map +1 -0
  179. package/dist/consolidator/hot-warm.js +88 -0
  180. package/dist/consolidator/hot-warm.js.map +1 -0
  181. package/dist/consolidator/infer-preferences.d.ts +14 -0
  182. package/dist/consolidator/infer-preferences.d.ts.map +1 -0
  183. package/dist/consolidator/infer-preferences.js +73 -0
  184. package/dist/consolidator/infer-preferences.js.map +1 -0
  185. package/dist/consolidator/rules.d.ts +5 -0
  186. package/dist/consolidator/rules.d.ts.map +1 -0
  187. package/dist/consolidator/rules.js +53 -0
  188. package/dist/consolidator/rules.js.map +1 -0
  189. package/dist/consolidator/warm-cold.d.ts +13 -0
  190. package/dist/consolidator/warm-cold.d.ts.map +1 -0
  191. package/dist/consolidator/warm-cold.js +91 -0
  192. package/dist/consolidator/warm-cold.js.map +1 -0
  193. package/dist/core/block-builder.d.ts +15 -0
  194. package/dist/core/block-builder.d.ts.map +1 -0
  195. package/dist/core/block-builder.js +185 -0
  196. package/dist/core/block-builder.js.map +1 -0
  197. package/dist/core/canonicalize.d.ts +3 -0
  198. package/dist/core/canonicalize.d.ts.map +1 -0
  199. package/dist/core/canonicalize.js +137 -0
  200. package/dist/core/canonicalize.js.map +1 -0
  201. package/dist/core/concurrency.d.ts +2 -0
  202. package/dist/core/concurrency.d.ts.map +1 -0
  203. package/dist/core/concurrency.js +14 -0
  204. package/dist/core/concurrency.js.map +1 -0
  205. package/dist/core/config.d.ts +184 -0
  206. package/dist/core/config.d.ts.map +1 -0
  207. package/dist/core/config.js +136 -0
  208. package/dist/core/config.js.map +1 -0
  209. package/dist/core/cursors.d.ts +36 -0
  210. package/dist/core/cursors.d.ts.map +1 -0
  211. package/dist/core/cursors.js +90 -0
  212. package/dist/core/cursors.js.map +1 -0
  213. package/dist/core/dedup.d.ts +45 -0
  214. package/dist/core/dedup.d.ts.map +1 -0
  215. package/dist/core/dedup.js +111 -0
  216. package/dist/core/dedup.js.map +1 -0
  217. package/dist/core/entity-extract.d.ts +3 -0
  218. package/dist/core/entity-extract.d.ts.map +1 -0
  219. package/dist/core/entity-extract.js +54 -0
  220. package/dist/core/entity-extract.js.map +1 -0
  221. package/dist/core/helpers.d.ts +3 -0
  222. package/dist/core/helpers.d.ts.map +1 -0
  223. package/dist/core/helpers.js +10 -0
  224. package/dist/core/helpers.js.map +1 -0
  225. package/dist/core/identity-resolver.d.ts +21 -0
  226. package/dist/core/identity-resolver.d.ts.map +1 -0
  227. package/dist/core/identity-resolver.js +62 -0
  228. package/dist/core/identity-resolver.js.map +1 -0
  229. package/dist/core/pipeline-factory.d.ts +13 -0
  230. package/dist/core/pipeline-factory.d.ts.map +1 -0
  231. package/dist/core/pipeline-factory.js +32 -0
  232. package/dist/core/pipeline-factory.js.map +1 -0
  233. package/dist/core/pipeline.d.ts +61 -0
  234. package/dist/core/pipeline.d.ts.map +1 -0
  235. package/dist/core/pipeline.js +261 -0
  236. package/dist/core/pipeline.js.map +1 -0
  237. package/dist/core/schemas.d.ts +2470 -0
  238. package/dist/core/schemas.d.ts.map +1 -0
  239. package/dist/core/schemas.js +229 -0
  240. package/dist/core/schemas.js.map +1 -0
  241. package/dist/core/signal-scoring.d.ts +3 -0
  242. package/dist/core/signal-scoring.d.ts.map +1 -0
  243. package/dist/core/signal-scoring.js +124 -0
  244. package/dist/core/signal-scoring.js.map +1 -0
  245. package/dist/core/state.d.ts +22 -0
  246. package/dist/core/state.d.ts.map +1 -0
  247. package/dist/core/state.js +32 -0
  248. package/dist/core/state.js.map +1 -0
  249. package/dist/core/types.d.ts +231 -0
  250. package/dist/core/types.d.ts.map +1 -0
  251. package/dist/core/types.js +6 -0
  252. package/dist/core/types.js.map +1 -0
  253. package/dist/daemon/alerts.d.ts +12 -0
  254. package/dist/daemon/alerts.d.ts.map +1 -0
  255. package/dist/daemon/alerts.js +34 -0
  256. package/dist/daemon/alerts.js.map +1 -0
  257. package/dist/daemon/index.d.ts +6 -0
  258. package/dist/daemon/index.d.ts.map +1 -0
  259. package/dist/daemon/index.js +6 -0
  260. package/dist/daemon/index.js.map +1 -0
  261. package/dist/daemon/logger.d.ts +8 -0
  262. package/dist/daemon/logger.d.ts.map +1 -0
  263. package/dist/daemon/logger.js +35 -0
  264. package/dist/daemon/logger.js.map +1 -0
  265. package/dist/daemon/run-history.d.ts +29 -0
  266. package/dist/daemon/run-history.d.ts.map +1 -0
  267. package/dist/daemon/run-history.js +54 -0
  268. package/dist/daemon/run-history.js.map +1 -0
  269. package/dist/daemon/scheduler.d.ts +37 -0
  270. package/dist/daemon/scheduler.d.ts.map +1 -0
  271. package/dist/daemon/scheduler.js +142 -0
  272. package/dist/daemon/scheduler.js.map +1 -0
  273. package/dist/daemon/source-schedule.d.ts +25 -0
  274. package/dist/daemon/source-schedule.d.ts.map +1 -0
  275. package/dist/daemon/source-schedule.js +87 -0
  276. package/dist/daemon/source-schedule.js.map +1 -0
  277. package/dist/embedded-assets.generated.d.ts +4 -0
  278. package/dist/embedded-assets.generated.d.ts.map +1 -0
  279. package/dist/embedded-assets.generated.js +12 -0
  280. package/dist/embedded-assets.generated.js.map +1 -0
  281. package/dist/extractors/noise-filter.d.ts +30 -0
  282. package/dist/extractors/noise-filter.d.ts.map +1 -0
  283. package/dist/extractors/noise-filter.js +185 -0
  284. package/dist/extractors/noise-filter.js.map +1 -0
  285. package/dist/extractors/providers/anthropic.d.ts +13 -0
  286. package/dist/extractors/providers/anthropic.d.ts.map +1 -0
  287. package/dist/extractors/providers/anthropic.js +67 -0
  288. package/dist/extractors/providers/anthropic.js.map +1 -0
  289. package/dist/extractors/providers/index.d.ts +12 -0
  290. package/dist/extractors/providers/index.d.ts.map +1 -0
  291. package/dist/extractors/providers/index.js +41 -0
  292. package/dist/extractors/providers/index.js.map +1 -0
  293. package/dist/extractors/providers/mock.d.ts +14 -0
  294. package/dist/extractors/providers/mock.d.ts.map +1 -0
  295. package/dist/extractors/providers/mock.js +37 -0
  296. package/dist/extractors/providers/mock.js.map +1 -0
  297. package/dist/extractors/providers/openai.d.ts +15 -0
  298. package/dist/extractors/providers/openai.d.ts.map +1 -0
  299. package/dist/extractors/providers/openai.js +109 -0
  300. package/dist/extractors/providers/openai.js.map +1 -0
  301. package/dist/extractors/providers/types.d.ts +27 -0
  302. package/dist/extractors/providers/types.d.ts.map +1 -0
  303. package/dist/extractors/providers/types.js +6 -0
  304. package/dist/extractors/providers/types.js.map +1 -0
  305. package/dist/extractors/signal-extractor.d.ts +29 -0
  306. package/dist/extractors/signal-extractor.d.ts.map +1 -0
  307. package/dist/extractors/signal-extractor.js +279 -0
  308. package/dist/extractors/signal-extractor.js.map +1 -0
  309. package/dist/formatters/index.d.ts +3 -0
  310. package/dist/formatters/index.d.ts.map +1 -0
  311. package/dist/formatters/index.js +3 -0
  312. package/dist/formatters/index.js.map +1 -0
  313. package/dist/formatters/json.d.ts +6 -0
  314. package/dist/formatters/json.d.ts.map +1 -0
  315. package/dist/formatters/json.js +16 -0
  316. package/dist/formatters/json.js.map +1 -0
  317. package/dist/formatters/markdown.d.ts +6 -0
  318. package/dist/formatters/markdown.d.ts.map +1 -0
  319. package/dist/formatters/markdown.js +198 -0
  320. package/dist/formatters/markdown.js.map +1 -0
  321. package/dist/processors/privacy.d.ts +98 -0
  322. package/dist/processors/privacy.d.ts.map +1 -0
  323. package/dist/processors/privacy.js +271 -0
  324. package/dist/processors/privacy.js.map +1 -0
  325. package/dist/server/api.d.ts +35 -0
  326. package/dist/server/api.d.ts.map +1 -0
  327. package/dist/server/api.js +453 -0
  328. package/dist/server/api.js.map +1 -0
  329. package/dist/server/backfill-job.d.ts +36 -0
  330. package/dist/server/backfill-job.d.ts.map +1 -0
  331. package/dist/server/backfill-job.js +88 -0
  332. package/dist/server/backfill-job.js.map +1 -0
  333. package/dist/server/backfill-routes.d.ts +7 -0
  334. package/dist/server/backfill-routes.d.ts.map +1 -0
  335. package/dist/server/backfill-routes.js +123 -0
  336. package/dist/server/backfill-routes.js.map +1 -0
  337. package/dist/server/config-routes.d.ts +8 -0
  338. package/dist/server/config-routes.d.ts.map +1 -0
  339. package/dist/server/config-routes.js +114 -0
  340. package/dist/server/config-routes.js.map +1 -0
  341. package/dist/server/context.d.ts +13 -0
  342. package/dist/server/context.d.ts.map +1 -0
  343. package/dist/server/context.js +47 -0
  344. package/dist/server/context.js.map +1 -0
  345. package/dist/server/entity.d.ts +25 -0
  346. package/dist/server/entity.d.ts.map +1 -0
  347. package/dist/server/entity.js +34 -0
  348. package/dist/server/entity.js.map +1 -0
  349. package/dist/server/event-bus.d.ts +35 -0
  350. package/dist/server/event-bus.d.ts.map +1 -0
  351. package/dist/server/event-bus.js +4 -0
  352. package/dist/server/event-bus.js.map +1 -0
  353. package/dist/server/mcp.d.ts +126 -0
  354. package/dist/server/mcp.d.ts.map +1 -0
  355. package/dist/server/mcp.js +103 -0
  356. package/dist/server/mcp.js.map +1 -0
  357. package/dist/server/setup-server.d.ts +7 -0
  358. package/dist/server/setup-server.d.ts.map +1 -0
  359. package/dist/server/setup-server.js +52 -0
  360. package/dist/server/setup-server.js.map +1 -0
  361. package/dist/setup/assess-hardware.d.ts +34 -0
  362. package/dist/setup/assess-hardware.d.ts.map +1 -0
  363. package/dist/setup/assess-hardware.js +179 -0
  364. package/dist/setup/assess-hardware.js.map +1 -0
  365. package/dist/setup/connection-tests.d.ts +17 -0
  366. package/dist/setup/connection-tests.d.ts.map +1 -0
  367. package/dist/setup/connection-tests.js +67 -0
  368. package/dist/setup/connection-tests.js.map +1 -0
  369. package/dist/setup/detect-api-keys.d.ts +13 -0
  370. package/dist/setup/detect-api-keys.d.ts.map +1 -0
  371. package/dist/setup/detect-api-keys.js +41 -0
  372. package/dist/setup/detect-api-keys.js.map +1 -0
  373. package/dist/setup/detect-runtime.d.ts +14 -0
  374. package/dist/setup/detect-runtime.d.ts.map +1 -0
  375. package/dist/setup/detect-runtime.js +43 -0
  376. package/dist/setup/detect-runtime.js.map +1 -0
  377. package/dist/setup/detect-sources.d.ts +14 -0
  378. package/dist/setup/detect-sources.d.ts.map +1 -0
  379. package/dist/setup/detect-sources.js +75 -0
  380. package/dist/setup/detect-sources.js.map +1 -0
  381. package/dist/setup/generate-config.d.ts +5 -0
  382. package/dist/setup/generate-config.d.ts.map +1 -0
  383. package/dist/setup/generate-config.js +103 -0
  384. package/dist/setup/generate-config.js.map +1 -0
  385. package/dist/setup/index.d.ts +9 -0
  386. package/dist/setup/index.d.ts.map +1 -0
  387. package/dist/setup/index.js +9 -0
  388. package/dist/setup/index.js.map +1 -0
  389. package/dist/setup/init-wizard.d.ts +19 -0
  390. package/dist/setup/init-wizard.d.ts.map +1 -0
  391. package/dist/setup/init-wizard.js +501 -0
  392. package/dist/setup/init-wizard.js.map +1 -0
  393. package/dist/setup/terminal.d.ts +28 -0
  394. package/dist/setup/terminal.d.ts.map +1 -0
  395. package/dist/setup/terminal.js +258 -0
  396. package/dist/setup/terminal.js.map +1 -0
  397. package/dist/setup/validate-config.d.ts +26 -0
  398. package/dist/setup/validate-config.d.ts.map +1 -0
  399. package/dist/setup/validate-config.js +27 -0
  400. package/dist/setup/validate-config.js.map +1 -0
  401. package/dist/store/chunks.d.ts +19 -0
  402. package/dist/store/chunks.d.ts.map +1 -0
  403. package/dist/store/chunks.js +70 -0
  404. package/dist/store/chunks.js.map +1 -0
  405. package/dist/store/database.d.ts +24 -0
  406. package/dist/store/database.d.ts.map +1 -0
  407. package/dist/store/database.js +62 -0
  408. package/dist/store/database.js.map +1 -0
  409. package/dist/store/embedding.d.ts +23 -0
  410. package/dist/store/embedding.d.ts.map +1 -0
  411. package/dist/store/embedding.js +62 -0
  412. package/dist/store/embedding.js.map +1 -0
  413. package/dist/store/graph.d.ts +53 -0
  414. package/dist/store/graph.d.ts.map +1 -0
  415. package/dist/store/graph.js +186 -0
  416. package/dist/store/graph.js.map +1 -0
  417. package/dist/store/migrations/index.d.ts +9 -0
  418. package/dist/store/migrations/index.d.ts.map +1 -0
  419. package/dist/store/migrations/index.js +68 -0
  420. package/dist/store/migrations/index.js.map +1 -0
  421. package/dist/store/pages.d.ts +39 -0
  422. package/dist/store/pages.d.ts.map +1 -0
  423. package/dist/store/pages.js +150 -0
  424. package/dist/store/pages.js.map +1 -0
  425. package/dist/store/search.d.ts +37 -0
  426. package/dist/store/search.d.ts.map +1 -0
  427. package/dist/store/search.js +200 -0
  428. package/dist/store/search.js.map +1 -0
  429. package/dist/store/tags.d.ts +10 -0
  430. package/dist/store/tags.d.ts.map +1 -0
  431. package/dist/store/tags.js +31 -0
  432. package/dist/store/tags.js.map +1 -0
  433. package/dist/store/timeline.d.ts +26 -0
  434. package/dist/store/timeline.d.ts.map +1 -0
  435. package/dist/store/timeline.js +43 -0
  436. package/dist/store/timeline.js.map +1 -0
  437. package/dist/sync/obsidian.d.ts +136 -0
  438. package/dist/sync/obsidian.d.ts.map +1 -0
  439. package/dist/sync/obsidian.js +539 -0
  440. package/dist/sync/obsidian.js.map +1 -0
  441. package/package.json +84 -0
@@ -0,0 +1,279 @@
1
+ /**
2
+ * Signal Extractor - Core LLM-based signal extraction
3
+ *
4
+ * Orchestrates the extraction of structured signals from conversation blocks:
5
+ * 1. Formats conversation into readable text
6
+ * 2. Calls LLM with structured JSON schema
7
+ * 3. Validates output with Zod
8
+ * 4. Retries once on validation failure with error feedback
9
+ * 5. Returns BlockResult (ok/failed) - never returns empty on failure
10
+ */
11
+ import { createHash } from "node:crypto";
12
+ import { extractQuickEntities } from "../core/entity-extract.js";
13
+ import { parseExtractionResult } from "../core/schemas.js";
14
+ import { PROMPTS } from "../embedded-assets.generated.js";
15
+ function extractJson(raw) {
16
+ // Strip leading/trailing whitespace and code fences
17
+ let s = raw.trim();
18
+ // Remove leading ```json or ``` (any number of backticks)
19
+ s = s.replace(/^`{3,}(?:json|JSON)?\s*\n?/, "");
20
+ // Remove trailing ```
21
+ s = s.replace(/\n?\s*`{3,}\s*$/, "");
22
+ s = s.trim();
23
+ // Try direct parse first
24
+ try {
25
+ JSON.parse(s);
26
+ return s;
27
+ }
28
+ catch { }
29
+ // Find the outermost { ... } or [ ... ] via bracket matching
30
+ const firstBrace = s.indexOf("{");
31
+ const firstBracket = s.indexOf("[");
32
+ const start = firstBrace >= 0 && (firstBracket < 0 || firstBrace < firstBracket) ? firstBrace : firstBracket;
33
+ if (start < 0)
34
+ return null;
35
+ const open = s[start];
36
+ const close = open === "{" ? "}" : "]";
37
+ let depth = 0;
38
+ let inString = false;
39
+ let isEscaped = false;
40
+ for (let i = start; i < s.length; i++) {
41
+ const ch = s[i];
42
+ if (isEscaped) {
43
+ isEscaped = false;
44
+ continue;
45
+ }
46
+ if (ch === "\\" && inString) {
47
+ isEscaped = true;
48
+ continue;
49
+ }
50
+ if (ch === '"') {
51
+ inString = !inString;
52
+ continue;
53
+ }
54
+ if (inString)
55
+ continue;
56
+ if (ch === open)
57
+ depth++;
58
+ if (ch === close) {
59
+ depth--;
60
+ if (depth === 0)
61
+ return s.slice(start, i + 1);
62
+ }
63
+ }
64
+ return null;
65
+ }
66
+ /**
67
+ * Load prompt template from file
68
+ */
69
+ function loadPrompt(filename) {
70
+ const prompt = PROMPTS[filename];
71
+ if (prompt === undefined)
72
+ throw new Error(`Embedded prompt not found: ${filename}`);
73
+ return prompt;
74
+ }
75
+ /**
76
+ * Build a "Detected Structural Signals" hint section from quick-entity extraction.
77
+ * Returns empty string when no entities are found (no section injected).
78
+ * Exported for unit testing.
79
+ */
80
+ export function buildEntityHintsSection(text) {
81
+ const entities = extractQuickEntities(text);
82
+ if (entities.length === 0)
83
+ return "";
84
+ const byType = new Map();
85
+ for (const e of entities) {
86
+ const list = byType.get(e.type) ?? [];
87
+ list.push(e.value);
88
+ byType.set(e.type, list);
89
+ }
90
+ const lines = ["## Detected Structural Signals", ""];
91
+ for (const [type, values] of byType) {
92
+ const preview = values.slice(0, 5).join(", ");
93
+ const overflow = values.length > 5 ? ` (+${values.length - 5} more)` : "";
94
+ lines.push(`- ${type}s: ${preview}${overflow}`);
95
+ }
96
+ return `\n\n${lines.join("\n")}`;
97
+ }
98
+ /**
99
+ * Format conversation messages into readable text
100
+ */
101
+ function formatConversation(messages) {
102
+ return messages
103
+ .map((msg) => {
104
+ const timestamp = new Date(msg.timestamp).toISOString();
105
+ const direction = msg.direction === "sent" ? "→" : "←";
106
+ return `[${timestamp}] ${direction} ${msg.contact}: ${msg.content}`;
107
+ })
108
+ .join("\n");
109
+ }
110
+ /**
111
+ * Hash function for generating raw_hash from conversation block
112
+ */
113
+ function hashBlock(block) {
114
+ const messageIds = block.messages
115
+ .map((m) => {
116
+ const mid = m.metadata?.message_id;
117
+ if (mid)
118
+ return mid;
119
+ const contentHash = createHash("sha256").update(m.content).digest("hex").slice(0, 8);
120
+ return `${m.timestamp}:${m.contact}:${contentHash}`;
121
+ })
122
+ .sort()
123
+ .join(",");
124
+ const data = [
125
+ block.platform,
126
+ block.channel,
127
+ block.thread_id ?? "",
128
+ messageIds,
129
+ block.start_time,
130
+ block.end_time,
131
+ ].join("|");
132
+ return createHash("sha256").update(data).digest("hex").slice(0, 16);
133
+ }
134
+ function buildSourceRef(block) {
135
+ return {
136
+ platform: block.platform,
137
+ channel: block.channel,
138
+ timestamp: block.start_time,
139
+ start_time: block.start_time,
140
+ end_time: block.end_time,
141
+ thread_id: block.thread_id,
142
+ message_ids: block.messages.map((m) => m.metadata?.message_id).filter(Boolean),
143
+ raw_hash: hashBlock(block),
144
+ quote: "",
145
+ };
146
+ }
147
+ function stampSourceRefs(result, canonical) {
148
+ result.source = { ...canonical, quote: result.source.quote || canonical.quote };
149
+ const stamp = (s) => ({ ...canonical, quote: s.quote || canonical.quote });
150
+ for (const d of result.decisions)
151
+ d.source = stamp(d.source);
152
+ for (const t of result.tasks)
153
+ t.source = stamp(t.source);
154
+ for (const disc of result.discoveries)
155
+ disc.source = stamp(disc.source);
156
+ for (const k of result.knowledge)
157
+ k.source = stamp(k.source);
158
+ for (const tl of result.timeline)
159
+ tl.source = stamp(tl.source);
160
+ for (const link of result.links)
161
+ link.source = stamp(link.source);
162
+ }
163
+ /**
164
+ * Create a signal extractor with the given LLM provider
165
+ */
166
+ export function createSignalExtractor(provider) {
167
+ const systemPrompt = loadPrompt("system.md");
168
+ const signalExtractPrompt = loadPrompt("signal-extract.md");
169
+ return {
170
+ async extract(input) {
171
+ // Determine input type and extract the underlying block and conversation text
172
+ const isCanonicalized = "canonical_markdown" in input;
173
+ const block = isCanonicalized
174
+ ? input.block
175
+ : input;
176
+ const cb = isCanonicalized ? input : null;
177
+ // Get conversation text: use canonical_markdown for email/document/structured sources
178
+ let conversationText;
179
+ if (cb &&
180
+ (cb.source_type === "email" ||
181
+ cb.source_type === "document" ||
182
+ cb.source_type === "structured")) {
183
+ conversationText = cb.canonical_markdown;
184
+ }
185
+ else {
186
+ conversationText = formatConversation(block.messages);
187
+ }
188
+ // Build prompt with context
189
+ const entityHints = buildEntityHintsSection(conversationText);
190
+ const userPrompt = `${signalExtractPrompt}
191
+
192
+ ## Conversation Block
193
+
194
+ **Platform:** ${block.platform}
195
+ **Channel:** ${block.channel}
196
+ **Thread ID:** ${block.thread_id || "N/A"}
197
+ **Time Range:** ${block.start_time} to ${block.end_time}
198
+ **Participants:** ${block.participants.join(", ")}
199
+
200
+ ## Messages
201
+
202
+ ${conversationText}${entityHints}
203
+
204
+ ## Instructions
205
+
206
+ Extract all signals from the above conversation following the schema and examples.
207
+ Output ONLY valid JSON matching ExtractionResultSchema.`;
208
+ // First attempt
209
+ let lastError = null;
210
+ for (let attempt = 0; attempt < 2; attempt++) {
211
+ try {
212
+ const messages = [
213
+ { role: "system", content: systemPrompt },
214
+ { role: "user", content: userPrompt },
215
+ ];
216
+ // If this is a retry, include error feedback
217
+ if (attempt > 0 && lastError) {
218
+ messages.push({
219
+ role: "user",
220
+ content: `The previous response had validation errors:\n${lastError}\n\nPlease fix the issues and provide valid JSON matching the schema.`,
221
+ });
222
+ }
223
+ // Call LLM
224
+ const response = await provider.chat(messages, {
225
+ responseFormat: "json",
226
+ temperature: 0.2,
227
+ maxTokens: 32000,
228
+ });
229
+ // Parse and validate JSON
230
+ let jsonData;
231
+ try {
232
+ jsonData = JSON.parse(response);
233
+ }
234
+ catch {
235
+ // Try harder: extract JSON from markdown/text wrapping
236
+ const cleaned = extractJson(response);
237
+ if (cleaned) {
238
+ try {
239
+ jsonData = JSON.parse(cleaned);
240
+ }
241
+ catch (err2) {
242
+ lastError = `JSON parse error after cleanup: ${err2 instanceof Error ? err2.message : String(err2)}. Cleaned content starts: ${cleaned.substring(0, 100)}`;
243
+ continue;
244
+ }
245
+ }
246
+ else {
247
+ lastError = `No valid JSON found in response (len=${response.length}, starts: ${response.substring(0, 80)}...)`;
248
+ continue;
249
+ }
250
+ }
251
+ // Validate with Zod
252
+ const result = parseExtractionResult(jsonData);
253
+ // System stamp: overwrite LLM-generated source fields with canonical provenance
254
+ const canonical = buildSourceRef(block);
255
+ stampSourceRefs(result, canonical);
256
+ return { status: "ok", data: result };
257
+ }
258
+ catch (err) {
259
+ // Capture validation error for retry
260
+ lastError = err instanceof Error ? err.message : String(err);
261
+ if (attempt === 1) {
262
+ // Second attempt failed - give up
263
+ return {
264
+ status: "failed",
265
+ error: `Signal extraction validation failed after retry: ${lastError}`,
266
+ };
267
+ }
268
+ // Continue to retry
269
+ }
270
+ }
271
+ // Should not reach here, but handle it
272
+ return {
273
+ status: "failed",
274
+ error: `Signal extraction failed: ${lastError || "unknown error"}`,
275
+ };
276
+ },
277
+ };
278
+ }
279
+ //# sourceMappingURL=signal-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-extractor.js","sourceRoot":"","sources":["../../src/extractors/signal-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { JSONFormatter } from "./json.js";
2
+ export { MarkdownFormatter } from "./markdown.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { JSONFormatter } from "./json.js";
2
+ export { MarkdownFormatter } from "./markdown.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ExtractionResult, Formatter } from "../core/types.js";
2
+ export declare class JSONFormatter implements Formatter {
3
+ id: string;
4
+ format(result: ExtractionResult): string;
5
+ }
6
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/formatters/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEpE,qBAAa,aAAc,YAAW,SAAS;IAC7C,EAAE,SAAU;IAEZ,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CAazC"}
@@ -0,0 +1,16 @@
1
+ export class JSONFormatter {
2
+ id = "json";
3
+ format(result) {
4
+ const output = {
5
+ version: "1.0",
6
+ extracted_at: new Date().toISOString(),
7
+ source: {
8
+ platform: result.source.platform,
9
+ channel: result.source.channel,
10
+ },
11
+ signals: result,
12
+ };
13
+ return JSON.stringify(output, null, 2);
14
+ }
15
+ }
16
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/formatters/json.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACxB,EAAE,GAAG,MAAM,CAAC;IAEZ,MAAM,CAAC,MAAwB;QAC7B,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACtC,MAAM,EAAE;gBACN,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;gBAChC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;aAC/B;YACD,OAAO,EAAE,MAAM;SAChB,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import type { ExtractionResult, Formatter } from "../core/types.js";
2
+ export declare class MarkdownFormatter implements Formatter {
3
+ id: string;
4
+ format(result: ExtractionResult): string;
5
+ }
6
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/formatters/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEpE,qBAAa,iBAAkB,YAAW,SAAS;IACjD,EAAE,SAAc;IAEhB,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CA6NzC"}
@@ -0,0 +1,198 @@
1
+ export class MarkdownFormatter {
2
+ id = "markdown";
3
+ format(result) {
4
+ const parts = [];
5
+ // YAML Frontmatter
6
+ parts.push("---");
7
+ parts.push(`title: Extraction Report`);
8
+ parts.push(`platform: ${result.source.platform}`);
9
+ parts.push(`channel: ${result.source.channel}`);
10
+ parts.push(`extracted_at: ${new Date().toISOString()}`);
11
+ if (result.entities.length > 0) {
12
+ parts.push("entities:");
13
+ for (const entity of result.entities) {
14
+ parts.push(` - ${entity.slug}`);
15
+ }
16
+ }
17
+ parts.push("---");
18
+ parts.push("");
19
+ // Decisions Section
20
+ parts.push("## Decisions");
21
+ parts.push("");
22
+ if (result.decisions.length === 0) {
23
+ parts.push("No decisions extracted.");
24
+ }
25
+ else {
26
+ for (const decision of result.decisions) {
27
+ parts.push(`### ${decision.summary}`);
28
+ parts.push("");
29
+ if (decision.reasoning) {
30
+ parts.push(`**Reasoning:** ${decision.reasoning}`);
31
+ parts.push("");
32
+ }
33
+ if (decision.alternatives && decision.alternatives.length > 0) {
34
+ parts.push("**Alternatives:**");
35
+ for (const alt of decision.alternatives) {
36
+ parts.push(`- ${alt}`);
37
+ }
38
+ parts.push("");
39
+ }
40
+ if (decision.entities.length > 0) {
41
+ parts.push(`**Entities:** ${decision.entities.join(", ")}`);
42
+ parts.push("");
43
+ }
44
+ parts.push(`**Date:** ${decision.date} | **Confidence:** ${decision.confidence}`);
45
+ parts.push("");
46
+ }
47
+ }
48
+ // Tasks Section
49
+ parts.push("## Tasks");
50
+ parts.push("");
51
+ if (result.tasks.length === 0) {
52
+ parts.push("No tasks extracted.");
53
+ }
54
+ else {
55
+ for (const task of result.tasks) {
56
+ const checkbox = task.status === "done" ? "[x]" : "[ ]";
57
+ parts.push(`- ${checkbox} **${task.title}** (${task.status})`);
58
+ if (task.owner) {
59
+ parts.push(` - Owner: ${task.owner}`);
60
+ }
61
+ if (task.project) {
62
+ parts.push(` - Project: ${task.project}`);
63
+ }
64
+ if (task.due_date) {
65
+ parts.push(` - Due: ${task.due_date}`);
66
+ }
67
+ parts.push(` - Confidence: ${task.confidence}`);
68
+ parts.push("");
69
+ }
70
+ }
71
+ // Timeline Section
72
+ parts.push("## Timeline");
73
+ parts.push("");
74
+ if (result.timeline.length === 0) {
75
+ parts.push("No timeline entries extracted.");
76
+ }
77
+ else {
78
+ for (const entry of result.timeline) {
79
+ parts.push(`### ${entry.date}`);
80
+ parts.push("");
81
+ parts.push(`${entry.summary}`);
82
+ parts.push("");
83
+ if (entry.entities.length > 0) {
84
+ parts.push(`**Entities:** ${entry.entities.join(", ")}`);
85
+ parts.push("");
86
+ }
87
+ parts.push(`**Confidence:** ${entry.confidence}`);
88
+ parts.push("");
89
+ }
90
+ }
91
+ // Entities Section
92
+ parts.push("## Entities");
93
+ parts.push("");
94
+ if (result.entities.length === 0) {
95
+ parts.push("No entities extracted.");
96
+ }
97
+ else {
98
+ for (const entity of result.entities) {
99
+ parts.push(`### ${entity.name}`);
100
+ parts.push("");
101
+ parts.push(`**Slug:** ${entity.slug}`);
102
+ parts.push(`**Type:** ${entity.type}`);
103
+ parts.push(`**Context:** ${entity.context}`);
104
+ parts.push(`**Confidence:** ${entity.confidence}`);
105
+ parts.push("");
106
+ }
107
+ }
108
+ // Discoveries Section
109
+ parts.push("## Discoveries");
110
+ parts.push("");
111
+ if (result.discoveries.length === 0) {
112
+ parts.push("No discoveries extracted.");
113
+ }
114
+ else {
115
+ for (const discovery of result.discoveries) {
116
+ parts.push(`### ${discovery.summary}`);
117
+ parts.push("");
118
+ if (discovery.detail) {
119
+ parts.push(`${discovery.detail}`);
120
+ parts.push("");
121
+ }
122
+ parts.push(`**Type:** ${discovery.type}`);
123
+ if (discovery.entities.length > 0) {
124
+ parts.push(`**Entities:** ${discovery.entities.join(", ")}`);
125
+ }
126
+ parts.push(`**Confidence:** ${discovery.confidence}`);
127
+ parts.push("");
128
+ }
129
+ }
130
+ // Knowledge Section
131
+ parts.push("## Knowledge");
132
+ parts.push("");
133
+ if (result.knowledge.length === 0) {
134
+ parts.push("No knowledge extracted.");
135
+ }
136
+ else {
137
+ for (const knowledge of result.knowledge) {
138
+ parts.push(`### ${knowledge.topic}`);
139
+ parts.push("");
140
+ parts.push(knowledge.content);
141
+ parts.push("");
142
+ parts.push(`**Source Type:** ${knowledge.source_type} | **Confidence:** ${knowledge.confidence}`);
143
+ parts.push(`**Related Entities:** ${knowledge.related_entities.length > 0 ? knowledge.related_entities.join(", ") : "none"}`);
144
+ parts.push("");
145
+ }
146
+ }
147
+ // Preferences Section
148
+ const preferences = result.preferences ?? [];
149
+ parts.push("## Preferences");
150
+ parts.push("");
151
+ if (preferences.length === 0) {
152
+ parts.push("No preferences extracted.");
153
+ }
154
+ else {
155
+ for (const preference of preferences) {
156
+ parts.push(`### ${preference.summary}`);
157
+ parts.push("");
158
+ if (preference.detail) {
159
+ parts.push(`${preference.detail}`);
160
+ parts.push("");
161
+ }
162
+ parts.push(`**Category:** ${preference.category}`);
163
+ if (preference.entities.length > 0) {
164
+ parts.push(`**Entities:** ${preference.entities.join(", ")}`);
165
+ }
166
+ parts.push(`**Confidence:** ${preference.confidence}`);
167
+ parts.push("");
168
+ }
169
+ }
170
+ // References Section
171
+ const references = result.references ?? [];
172
+ parts.push("## References");
173
+ parts.push("");
174
+ if (references.length === 0) {
175
+ parts.push("No references extracted.");
176
+ }
177
+ else {
178
+ for (const reference of references) {
179
+ parts.push(`### ${reference.title}`);
180
+ parts.push("");
181
+ parts.push(`<${reference.url}>`);
182
+ parts.push("");
183
+ parts.push(`${reference.summary}`);
184
+ parts.push("");
185
+ if (reference.trigger) {
186
+ parts.push(`**When:** ${reference.trigger}`);
187
+ }
188
+ if (reference.entities.length > 0) {
189
+ parts.push(`**Entities:** ${reference.entities.join(", ")}`);
190
+ }
191
+ parts.push(`**Confidence:** ${reference.confidence}`);
192
+ parts.push("");
193
+ }
194
+ }
195
+ return parts.join("\n");
196
+ }
197
+ }
198
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/formatters/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Privacy Processor for DigitalBrainExtractor
3
+ * Redacts sensitive data in ExtractionResult with configurable L1/L2/L3 patterns
4
+ */
5
+ import type { PrivacyConfig } from "../core/config.js";
6
+ import type { ExtractionResult } from "../core/types.js";
7
+ /**
8
+ * Privacy Processor - redacts sensitive data in ExtractionResult
9
+ *
10
+ * Supports three levels of patterns:
11
+ * - L1: Phone numbers, ID cards, bank cards (configurable)
12
+ * - L2: IP addresses (always active)
13
+ * - L3: Blocked words from config
14
+ *
15
+ * Modes:
16
+ * - reversible: generates .memoark/redaction_map.jsonl for recovery
17
+ * - irreversible: redacts without keeping recovery map
18
+ *
19
+ * Protected fields (never redacted):
20
+ * - Entity.name
21
+ * - SourceRef.raw_hash
22
+ */
23
+ export declare class PrivacyProcessor {
24
+ private config;
25
+ private redactionMap;
26
+ private phoneRegex;
27
+ private idCardRegex;
28
+ private bankCardRegex;
29
+ private ipRegex;
30
+ constructor(config: PrivacyConfig);
31
+ /**
32
+ * Main entry point - process ExtractionResult and apply redactions
33
+ */
34
+ process(result: ExtractionResult): ExtractionResult;
35
+ /**
36
+ * Process SourceRef - redacts quote and url, but NOT raw_hash
37
+ */
38
+ private processSourceRef;
39
+ /**
40
+ * Process Entity - redacts context, but NOT name or slug
41
+ */
42
+ private processEntity;
43
+ /**
44
+ * Process Decision - redacts summary and reasoning
45
+ */
46
+ private processDecision;
47
+ /**
48
+ * Process TaskSignal - redacts title
49
+ */
50
+ private processTask;
51
+ /**
52
+ * Process Link - redacts context
53
+ */
54
+ private processLink;
55
+ /**
56
+ * Process Discovery - redacts summary and detail
57
+ */
58
+ private processDiscovery;
59
+ /**
60
+ * Process Knowledge - redacts content and applies blocked words to topic
61
+ * Topic only gets L3 (blocked words) redaction, NOT L1/L2
62
+ * related_entities are NEVER redacted
63
+ */
64
+ private processKnowledge;
65
+ /**
66
+ * Process Preference - redacts summary and detail
67
+ */
68
+ private processPreference;
69
+ /**
70
+ * Process Reference - redacts summary and trigger
71
+ * title and url are NOT redacted (url is the core field; title is a document name)
72
+ */
73
+ private processReference;
74
+ /**
75
+ * Redact blocked words only (L3 only, no L1/L2 regex)
76
+ * Used for topic field which should not match phone/ID/IP patterns
77
+ */
78
+ private redactBlockedWordsOnly;
79
+ /**
80
+ * Redact text by applying all enabled patterns
81
+ * Tracks replacements for reversible mode
82
+ */
83
+ private redactText;
84
+ /**
85
+ * Apply redaction with pattern and track in map if reversible mode
86
+ * Important: pattern matching happens on the original text before any replacements
87
+ */
88
+ private applyRedaction;
89
+ /**
90
+ * Escape special regex characters
91
+ */
92
+ private escapeRegex;
93
+ /**
94
+ * Write redaction map to .memoark/redaction_map.jsonl
95
+ */
96
+ private writeRedactionMap;
97
+ }
98
+ //# sourceMappingURL=privacy.d.ts.map