@andre.li/memoark 0.3.1 → 0.3.2

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 (497) hide show
  1. package/README.en.md +388 -69
  2. package/README.md +674 -309
  3. package/README.zh-CN.md +816 -0
  4. package/bin/memoark.mjs +7 -2
  5. package/dist/adapters/store.d.ts.map +1 -1
  6. package/dist/adapters/store.js +6 -5
  7. package/dist/adapters/store.js.map +1 -1
  8. package/dist/cli-helpers.d.ts +12 -0
  9. package/dist/cli-helpers.d.ts.map +1 -0
  10. package/dist/cli-helpers.js +11 -0
  11. package/dist/cli-helpers.js.map +1 -0
  12. package/dist/cli.js +682 -126
  13. package/dist/cli.js.map +1 -1
  14. package/dist/collectors/feishu/chat-name-resolver.d.ts +33 -0
  15. package/dist/collectors/feishu/chat-name-resolver.d.ts.map +1 -0
  16. package/dist/collectors/feishu/chat-name-resolver.js +63 -0
  17. package/dist/collectors/feishu/chat-name-resolver.js.map +1 -0
  18. package/dist/collectors/feishu/collector.d.ts +4 -0
  19. package/dist/collectors/feishu/collector.d.ts.map +1 -1
  20. package/dist/collectors/feishu/collector.js +27 -4
  21. package/dist/collectors/feishu/collector.js.map +1 -1
  22. package/dist/collectors/feishu/docs/blocks.d.ts +25 -0
  23. package/dist/collectors/feishu/docs/blocks.d.ts.map +1 -0
  24. package/dist/collectors/feishu/docs/blocks.js +34 -0
  25. package/dist/collectors/feishu/docs/blocks.js.map +1 -0
  26. package/dist/collectors/feishu/docs/candidate.d.ts +17 -0
  27. package/dist/collectors/feishu/docs/candidate.d.ts.map +1 -0
  28. package/dist/collectors/feishu/docs/candidate.js +36 -0
  29. package/dist/collectors/feishu/docs/candidate.js.map +1 -0
  30. package/dist/collectors/feishu/docs/config.d.ts +41 -0
  31. package/dist/collectors/feishu/docs/config.d.ts.map +1 -0
  32. package/dist/collectors/feishu/docs/config.js +30 -0
  33. package/dist/collectors/feishu/docs/config.js.map +1 -0
  34. package/dist/collectors/feishu/docs/decision.d.ts +14 -0
  35. package/dist/collectors/feishu/docs/decision.d.ts.map +1 -0
  36. package/dist/collectors/feishu/docs/decision.js +43 -0
  37. package/dist/collectors/feishu/docs/decision.js.map +1 -0
  38. package/dist/collectors/feishu/docs/full-builder.d.ts +17 -0
  39. package/dist/collectors/feishu/docs/full-builder.d.ts.map +1 -0
  40. package/dist/collectors/feishu/docs/full-builder.js +136 -0
  41. package/dist/collectors/feishu/docs/full-builder.js.map +1 -0
  42. package/dist/collectors/feishu/docs/hash.d.ts +8 -0
  43. package/dist/collectors/feishu/docs/hash.d.ts.map +1 -0
  44. package/dist/collectors/feishu/docs/hash.js +15 -0
  45. package/dist/collectors/feishu/docs/hash.js.map +1 -0
  46. package/dist/collectors/feishu/docs/ingest.d.ts +54 -0
  47. package/dist/collectors/feishu/docs/ingest.d.ts.map +1 -0
  48. package/dist/collectors/feishu/docs/ingest.js +120 -0
  49. package/dist/collectors/feishu/docs/ingest.js.map +1 -0
  50. package/dist/collectors/feishu/docs/llm-json.d.ts +13 -0
  51. package/dist/collectors/feishu/docs/llm-json.d.ts.map +1 -0
  52. package/dist/collectors/feishu/docs/llm-json.js +40 -0
  53. package/dist/collectors/feishu/docs/llm-json.js.map +1 -0
  54. package/dist/collectors/feishu/docs/pointer-builder.d.ts +7 -0
  55. package/dist/collectors/feishu/docs/pointer-builder.d.ts.map +1 -0
  56. package/dist/collectors/feishu/docs/pointer-builder.js +11 -0
  57. package/dist/collectors/feishu/docs/pointer-builder.js.map +1 -0
  58. package/dist/collectors/feishu/docs/render.d.ts +8 -0
  59. package/dist/collectors/feishu/docs/render.d.ts.map +1 -0
  60. package/dist/collectors/feishu/docs/render.js +105 -0
  61. package/dist/collectors/feishu/docs/render.js.map +1 -0
  62. package/dist/collectors/feishu/docs/run.d.ts +37 -0
  63. package/dist/collectors/feishu/docs/run.d.ts.map +1 -0
  64. package/dist/collectors/feishu/docs/run.js +143 -0
  65. package/dist/collectors/feishu/docs/run.js.map +1 -0
  66. package/dist/collectors/feishu/docs/status.d.ts +16 -0
  67. package/dist/collectors/feishu/docs/status.d.ts.map +1 -0
  68. package/dist/collectors/feishu/docs/status.js +24 -0
  69. package/dist/collectors/feishu/docs/status.js.map +1 -0
  70. package/dist/collectors/feishu/docs/store-writer.d.ts +32 -0
  71. package/dist/collectors/feishu/docs/store-writer.d.ts.map +1 -0
  72. package/dist/collectors/feishu/docs/store-writer.js +71 -0
  73. package/dist/collectors/feishu/docs/store-writer.js.map +1 -0
  74. package/dist/collectors/feishu/docs/toc.d.ts +3 -0
  75. package/dist/collectors/feishu/docs/toc.d.ts.map +1 -0
  76. package/dist/collectors/feishu/docs/toc.js +19 -0
  77. package/dist/collectors/feishu/docs/toc.js.map +1 -0
  78. package/dist/collectors/feishu/docs/triggers.d.ts +7 -0
  79. package/dist/collectors/feishu/docs/triggers.d.ts.map +1 -0
  80. package/dist/collectors/feishu/docs/triggers.js +31 -0
  81. package/dist/collectors/feishu/docs/triggers.js.map +1 -0
  82. package/dist/collectors/feishu/docs/types.d.ts +109 -0
  83. package/dist/collectors/feishu/docs/types.d.ts.map +1 -0
  84. package/dist/collectors/feishu/docs/types.js +2 -0
  85. package/dist/collectors/feishu/docs/types.js.map +1 -0
  86. package/dist/collectors/feishu/docs/upgrade-queue.d.ts +19 -0
  87. package/dist/collectors/feishu/docs/upgrade-queue.d.ts.map +1 -0
  88. package/dist/collectors/feishu/docs/upgrade-queue.js +36 -0
  89. package/dist/collectors/feishu/docs/upgrade-queue.js.map +1 -0
  90. package/dist/collectors/feishu/docs/url-parser.d.ts +3 -0
  91. package/dist/collectors/feishu/docs/url-parser.d.ts.map +1 -0
  92. package/dist/collectors/feishu/docs/url-parser.js +39 -0
  93. package/dist/collectors/feishu/docs/url-parser.js.map +1 -0
  94. package/dist/collectors/feishu/docs/walkers.d.ts +24 -0
  95. package/dist/collectors/feishu/docs/walkers.d.ts.map +1 -0
  96. package/dist/collectors/feishu/docs/walkers.js +90 -0
  97. package/dist/collectors/feishu/docs/walkers.js.map +1 -0
  98. package/dist/collectors/feishu/docs/wiki-resolver.d.ts +15 -0
  99. package/dist/collectors/feishu/docs/wiki-resolver.d.ts.map +1 -0
  100. package/dist/collectors/feishu/docs/wiki-resolver.js +24 -0
  101. package/dist/collectors/feishu/docs/wiki-resolver.js.map +1 -0
  102. package/dist/collectors/feishu/lark-cli-client.d.ts +12 -0
  103. package/dist/collectors/feishu/lark-cli-client.d.ts.map +1 -1
  104. package/dist/collectors/feishu/lark-cli-client.js +37 -2
  105. package/dist/collectors/feishu/lark-cli-client.js.map +1 -1
  106. package/dist/collectors/feishu/lark-cli-identity-backend.d.ts +28 -0
  107. package/dist/collectors/feishu/lark-cli-identity-backend.d.ts.map +1 -0
  108. package/dist/collectors/feishu/lark-cli-identity-backend.js +110 -0
  109. package/dist/collectors/feishu/lark-cli-identity-backend.js.map +1 -0
  110. package/dist/collectors/feishu/self-open-id.d.ts +20 -0
  111. package/dist/collectors/feishu/self-open-id.d.ts.map +1 -0
  112. package/dist/collectors/feishu/self-open-id.js +31 -0
  113. package/dist/collectors/feishu/self-open-id.js.map +1 -0
  114. package/dist/collectors/feishu/sources/dm.d.ts.map +1 -1
  115. package/dist/collectors/feishu/sources/dm.js +4 -0
  116. package/dist/collectors/feishu/sources/dm.js.map +1 -1
  117. package/dist/collectors/feishu/sources/mail.d.ts.map +1 -1
  118. package/dist/collectors/feishu/sources/mail.js +18 -20
  119. package/dist/collectors/feishu/sources/mail.js.map +1 -1
  120. package/dist/collectors/feishu/sources/messages.d.ts +2 -0
  121. package/dist/collectors/feishu/sources/messages.d.ts.map +1 -1
  122. package/dist/collectors/feishu/sources/messages.js +28 -1
  123. package/dist/collectors/feishu/sources/messages.js.map +1 -1
  124. package/dist/collectors/feishu/types.d.ts +37 -3
  125. package/dist/collectors/feishu/types.d.ts.map +1 -1
  126. package/dist/collectors/feishu/types.js.map +1 -1
  127. package/dist/config-center/connection-checks.d.ts.map +1 -1
  128. package/dist/config-center/connection-checks.js +1 -1
  129. package/dist/config-center/connection-checks.js.map +1 -1
  130. package/dist/config-center/schema.d.ts.map +1 -1
  131. package/dist/config-center/schema.js +77 -0
  132. package/dist/config-center/schema.js.map +1 -1
  133. package/dist/consolidator/consolidator.d.ts +13 -1
  134. package/dist/consolidator/consolidator.d.ts.map +1 -1
  135. package/dist/consolidator/consolidator.js +12 -2
  136. package/dist/consolidator/consolidator.js.map +1 -1
  137. package/dist/core/canonicalize.js +5 -1
  138. package/dist/core/canonicalize.js.map +1 -1
  139. package/dist/core/config.d.ts +52 -9
  140. package/dist/core/config.d.ts.map +1 -1
  141. package/dist/core/config.js +86 -24
  142. package/dist/core/config.js.map +1 -1
  143. package/dist/core/env-validation.d.ts +9 -0
  144. package/dist/core/env-validation.d.ts.map +1 -0
  145. package/dist/core/env-validation.js +94 -0
  146. package/dist/core/env-validation.js.map +1 -0
  147. package/dist/core/identity-resolver.d.ts +24 -3
  148. package/dist/core/identity-resolver.d.ts.map +1 -1
  149. package/dist/core/identity-resolver.js +147 -2
  150. package/dist/core/identity-resolver.js.map +1 -1
  151. package/dist/core/person-identity.d.ts +124 -0
  152. package/dist/core/person-identity.d.ts.map +1 -0
  153. package/dist/core/person-identity.js +342 -0
  154. package/dist/core/person-identity.js.map +1 -0
  155. package/dist/core/person-slug.d.ts +21 -0
  156. package/dist/core/person-slug.d.ts.map +1 -0
  157. package/dist/core/person-slug.js +93 -0
  158. package/dist/core/person-slug.js.map +1 -0
  159. package/dist/core/pipeline-factory.d.ts +1 -1
  160. package/dist/core/pipeline-factory.d.ts.map +1 -1
  161. package/dist/core/pipeline-factory.js +8 -3
  162. package/dist/core/pipeline-factory.js.map +1 -1
  163. package/dist/core/pipeline.d.ts +16 -0
  164. package/dist/core/pipeline.d.ts.map +1 -1
  165. package/dist/core/pipeline.js +49 -1
  166. package/dist/core/pipeline.js.map +1 -1
  167. package/dist/core/resource-loader.d.ts +2 -0
  168. package/dist/core/resource-loader.d.ts.map +1 -0
  169. package/dist/core/resource-loader.js +12 -0
  170. package/dist/core/resource-loader.js.map +1 -0
  171. package/dist/core/schemas.d.ts +2981 -309
  172. package/dist/core/schemas.d.ts.map +1 -1
  173. package/dist/core/schemas.js +27 -0
  174. package/dist/core/schemas.js.map +1 -1
  175. package/dist/core/signal-scoring.d.ts.map +1 -1
  176. package/dist/core/signal-scoring.js +5 -1
  177. package/dist/core/signal-scoring.js.map +1 -1
  178. package/dist/core/source-ref.d.ts +4 -0
  179. package/dist/core/source-ref.d.ts.map +1 -0
  180. package/dist/core/source-ref.js +24 -0
  181. package/dist/core/source-ref.js.map +1 -0
  182. package/dist/core/state.d.ts +1 -1
  183. package/dist/core/state.d.ts.map +1 -1
  184. package/dist/core/state.js +3 -2
  185. package/dist/core/state.js.map +1 -1
  186. package/dist/core/types.d.ts +34 -6
  187. package/dist/core/types.d.ts.map +1 -1
  188. package/dist/daemon/reload-manager.d.ts +27 -0
  189. package/dist/daemon/reload-manager.d.ts.map +1 -0
  190. package/dist/daemon/reload-manager.js +67 -0
  191. package/dist/daemon/reload-manager.js.map +1 -0
  192. package/dist/daemon/scheduler.d.ts +9 -1
  193. package/dist/daemon/scheduler.d.ts.map +1 -1
  194. package/dist/daemon/scheduler.js +113 -38
  195. package/dist/daemon/scheduler.js.map +1 -1
  196. package/dist/daemon/serve-runtime.d.ts +31 -0
  197. package/dist/daemon/serve-runtime.d.ts.map +1 -0
  198. package/dist/daemon/serve-runtime.js +230 -0
  199. package/dist/daemon/serve-runtime.js.map +1 -0
  200. package/dist/embedded-assets.generated.d.ts.map +1 -1
  201. package/dist/embedded-assets.generated.js +3 -3
  202. package/dist/embedded-assets.generated.js.map +1 -1
  203. package/dist/extractors/playbook-extractor.d.ts +35 -0
  204. package/dist/extractors/playbook-extractor.d.ts.map +1 -0
  205. package/dist/extractors/playbook-extractor.js +98 -0
  206. package/dist/extractors/playbook-extractor.js.map +1 -0
  207. package/dist/extractors/prompts/examples/agent-session.md +257 -0
  208. package/dist/extractors/prompts/signal-extract.md +199 -0
  209. package/dist/extractors/prompts/system.md +45 -0
  210. package/dist/extractors/signal-extractor.d.ts +2 -1
  211. package/dist/extractors/signal-extractor.d.ts.map +1 -1
  212. package/dist/extractors/signal-extractor.js +99 -7
  213. package/dist/extractors/signal-extractor.js.map +1 -1
  214. package/dist/hooks/handlers.d.ts +21 -0
  215. package/dist/hooks/handlers.d.ts.map +1 -0
  216. package/dist/hooks/handlers.js +22 -0
  217. package/dist/hooks/handlers.js.map +1 -0
  218. package/dist/hooks/inject.d.ts +7 -0
  219. package/dist/hooks/inject.d.ts.map +1 -0
  220. package/dist/hooks/inject.js +18 -0
  221. package/dist/hooks/inject.js.map +1 -0
  222. package/dist/hooks/install.d.ts +14 -0
  223. package/dist/hooks/install.d.ts.map +1 -0
  224. package/dist/hooks/install.js +34 -0
  225. package/dist/hooks/install.js.map +1 -0
  226. package/dist/hooks/output.d.ts +19 -0
  227. package/dist/hooks/output.d.ts.map +1 -0
  228. package/dist/hooks/output.js +13 -0
  229. package/dist/hooks/output.js.map +1 -0
  230. package/dist/hooks/recall-client.d.ts +25 -0
  231. package/dist/hooks/recall-client.d.ts.map +1 -0
  232. package/dist/hooks/recall-client.js +56 -0
  233. package/dist/hooks/recall-client.js.map +1 -0
  234. package/dist/hooks/run-event.d.ts +13 -0
  235. package/dist/hooks/run-event.d.ts.map +1 -0
  236. package/dist/hooks/run-event.js +20 -0
  237. package/dist/hooks/run-event.js.map +1 -0
  238. package/dist/hooks/settings-edit.d.ts +10 -0
  239. package/dist/hooks/settings-edit.d.ts.map +1 -0
  240. package/dist/hooks/settings-edit.js +44 -0
  241. package/dist/hooks/settings-edit.js.map +1 -0
  242. package/dist/hooks/writeback.d.ts +12 -0
  243. package/dist/hooks/writeback.d.ts.map +1 -0
  244. package/dist/hooks/writeback.js +48 -0
  245. package/dist/hooks/writeback.js.map +1 -0
  246. package/dist/install/clients/claude-code.d.ts +3 -0
  247. package/dist/install/clients/claude-code.d.ts.map +1 -0
  248. package/dist/install/clients/claude-code.js +30 -0
  249. package/dist/install/clients/claude-code.js.map +1 -0
  250. package/dist/install/clients/claude-desktop.d.ts +3 -0
  251. package/dist/install/clients/claude-desktop.d.ts.map +1 -0
  252. package/dist/install/clients/claude-desktop.js +31 -0
  253. package/dist/install/clients/claude-desktop.js.map +1 -0
  254. package/dist/install/clients/codex.d.ts +3 -0
  255. package/dist/install/clients/codex.d.ts.map +1 -0
  256. package/dist/install/clients/codex.js +32 -0
  257. package/dist/install/clients/codex.js.map +1 -0
  258. package/dist/install/clients/cursor.d.ts +3 -0
  259. package/dist/install/clients/cursor.d.ts.map +1 -0
  260. package/dist/install/clients/cursor.js +35 -0
  261. package/dist/install/clients/cursor.js.map +1 -0
  262. package/dist/install/clients/hermes.d.ts +3 -0
  263. package/dist/install/clients/hermes.d.ts.map +1 -0
  264. package/dist/install/clients/hermes.js +35 -0
  265. package/dist/install/clients/hermes.js.map +1 -0
  266. package/dist/install/clients/index.d.ts +4 -0
  267. package/dist/install/clients/index.d.ts.map +1 -0
  268. package/dist/install/clients/index.js +18 -0
  269. package/dist/install/clients/index.js.map +1 -0
  270. package/dist/install/clients/windsurf.d.ts +3 -0
  271. package/dist/install/clients/windsurf.d.ts.map +1 -0
  272. package/dist/install/clients/windsurf.js +32 -0
  273. package/dist/install/clients/windsurf.js.map +1 -0
  274. package/dist/install/command.d.ts +14 -0
  275. package/dist/install/command.d.ts.map +1 -0
  276. package/dist/install/command.js +34 -0
  277. package/dist/install/command.js.map +1 -0
  278. package/dist/install/directive.d.ts +7 -0
  279. package/dist/install/directive.d.ts.map +1 -0
  280. package/dist/install/directive.js +31 -0
  281. package/dist/install/directive.js.map +1 -0
  282. package/dist/install/index.d.ts +26 -0
  283. package/dist/install/index.d.ts.map +1 -0
  284. package/dist/install/index.js +117 -0
  285. package/dist/install/index.js.map +1 -0
  286. package/dist/install/json-config.d.ts +11 -0
  287. package/dist/install/json-config.d.ts.map +1 -0
  288. package/dist/install/json-config.js +39 -0
  289. package/dist/install/json-config.js.map +1 -0
  290. package/dist/install/marked-block.d.ts +11 -0
  291. package/dist/install/marked-block.d.ts.map +1 -0
  292. package/dist/install/marked-block.js +34 -0
  293. package/dist/install/marked-block.js.map +1 -0
  294. package/dist/install/skill.d.ts +4 -0
  295. package/dist/install/skill.d.ts.map +1 -0
  296. package/dist/install/skill.js +61 -0
  297. package/dist/install/skill.js.map +1 -0
  298. package/dist/install/toml-config.d.ts +4 -0
  299. package/dist/install/toml-config.d.ts.map +1 -0
  300. package/dist/install/toml-config.js +51 -0
  301. package/dist/install/toml-config.js.map +1 -0
  302. package/dist/install/types.d.ts +37 -0
  303. package/dist/install/types.d.ts.map +1 -0
  304. package/dist/install/types.js +4 -0
  305. package/dist/install/types.js.map +1 -0
  306. package/dist/install/yaml-config.d.ts +4 -0
  307. package/dist/install/yaml-config.d.ts.map +1 -0
  308. package/dist/install/yaml-config.js +18 -0
  309. package/dist/install/yaml-config.js.map +1 -0
  310. package/dist/processors/privacy.d.ts +4 -1
  311. package/dist/processors/privacy.d.ts.map +1 -1
  312. package/dist/processors/privacy.js +5 -3
  313. package/dist/processors/privacy.js.map +1 -1
  314. package/dist/profile/accumulate.d.ts +28 -0
  315. package/dist/profile/accumulate.d.ts.map +1 -0
  316. package/dist/profile/accumulate.js +48 -0
  317. package/dist/profile/accumulate.js.map +1 -0
  318. package/dist/profile/behavior.d.ts +32 -0
  319. package/dist/profile/behavior.d.ts.map +1 -0
  320. package/dist/profile/behavior.js +122 -0
  321. package/dist/profile/behavior.js.map +1 -0
  322. package/dist/profile/four-color.d.ts +12 -0
  323. package/dist/profile/four-color.d.ts.map +1 -0
  324. package/dist/profile/four-color.js +39 -0
  325. package/dist/profile/four-color.js.map +1 -0
  326. package/dist/profile/profile-synth.d.ts +27 -0
  327. package/dist/profile/profile-synth.d.ts.map +1 -0
  328. package/dist/profile/profile-synth.js +174 -0
  329. package/dist/profile/profile-synth.js.map +1 -0
  330. package/dist/profile/types.d.ts +84 -0
  331. package/dist/profile/types.d.ts.map +1 -0
  332. package/dist/profile/types.js +11 -0
  333. package/dist/profile/types.js.map +1 -0
  334. package/dist/server/api.d.ts +8 -2
  335. package/dist/server/api.d.ts.map +1 -1
  336. package/dist/server/api.js +69 -34
  337. package/dist/server/api.js.map +1 -1
  338. package/dist/server/backfill-routes.d.ts.map +1 -1
  339. package/dist/server/backfill-routes.js +14 -1
  340. package/dist/server/backfill-routes.js.map +1 -1
  341. package/dist/server/chat-name-refresh-job.d.ts +33 -0
  342. package/dist/server/chat-name-refresh-job.d.ts.map +1 -0
  343. package/dist/server/chat-name-refresh-job.js +120 -0
  344. package/dist/server/chat-name-refresh-job.js.map +1 -0
  345. package/dist/server/chat-name-routes.d.ts +13 -0
  346. package/dist/server/chat-name-routes.d.ts.map +1 -0
  347. package/dist/server/chat-name-routes.js +81 -0
  348. package/dist/server/chat-name-routes.js.map +1 -0
  349. package/dist/server/config-routes.d.ts +2 -0
  350. package/dist/server/config-routes.d.ts.map +1 -1
  351. package/dist/server/config-routes.js +2 -1
  352. package/dist/server/config-routes.js.map +1 -1
  353. package/dist/server/mcp-http.d.ts +26 -0
  354. package/dist/server/mcp-http.d.ts.map +1 -0
  355. package/dist/server/mcp-http.js +102 -0
  356. package/dist/server/mcp-http.js.map +1 -0
  357. package/dist/server/mcp.d.ts +191 -25
  358. package/dist/server/mcp.d.ts.map +1 -1
  359. package/dist/server/mcp.js +1111 -68
  360. package/dist/server/mcp.js.map +1 -1
  361. package/dist/server/open-browser.d.ts +3 -0
  362. package/dist/server/open-browser.d.ts.map +1 -0
  363. package/dist/server/open-browser.js +12 -0
  364. package/dist/server/open-browser.js.map +1 -0
  365. package/dist/server/runtime.d.ts +13 -0
  366. package/dist/server/runtime.d.ts.map +1 -0
  367. package/dist/server/runtime.js +27 -0
  368. package/dist/server/runtime.js.map +1 -0
  369. package/dist/server/setup-server.d.ts.map +1 -1
  370. package/dist/server/setup-server.js +8 -11
  371. package/dist/server/setup-server.js.map +1 -1
  372. package/dist/setup/connection-tests.d.ts +1 -1
  373. package/dist/setup/connection-tests.d.ts.map +1 -1
  374. package/dist/setup/connection-tests.js +4 -2
  375. package/dist/setup/connection-tests.js.map +1 -1
  376. package/dist/setup/generate-config.d.ts.map +1 -1
  377. package/dist/setup/generate-config.js +31 -1
  378. package/dist/setup/generate-config.js.map +1 -1
  379. package/dist/setup/init-wizard.d.ts +1 -0
  380. package/dist/setup/init-wizard.d.ts.map +1 -1
  381. package/dist/setup/init-wizard.js +38 -21
  382. package/dist/setup/init-wizard.js.map +1 -1
  383. package/dist/setup/validate-config.d.ts +5 -1
  384. package/dist/setup/validate-config.d.ts.map +1 -1
  385. package/dist/setup/validate-config.js +18 -0
  386. package/dist/setup/validate-config.js.map +1 -1
  387. package/dist/store/data-dir-lock.d.ts +15 -0
  388. package/dist/store/data-dir-lock.d.ts.map +1 -0
  389. package/dist/store/data-dir-lock.js +96 -0
  390. package/dist/store/data-dir-lock.js.map +1 -0
  391. package/dist/store/database.d.ts +2 -0
  392. package/dist/store/database.d.ts.map +1 -1
  393. package/dist/store/database.js +23 -10
  394. package/dist/store/database.js.map +1 -1
  395. package/dist/store/graph.d.ts +22 -0
  396. package/dist/store/graph.d.ts.map +1 -1
  397. package/dist/store/graph.js +97 -7
  398. package/dist/store/graph.js.map +1 -1
  399. package/dist/store/migrations/index.d.ts.map +1 -1
  400. package/dist/store/migrations/index.js +52 -0
  401. package/dist/store/migrations/index.js.map +1 -1
  402. package/dist/store/pages.d.ts +7 -0
  403. package/dist/store/pages.d.ts.map +1 -1
  404. package/dist/store/pages.js +56 -1
  405. package/dist/store/pages.js.map +1 -1
  406. package/dist/store/person-behavior.d.ts +28 -0
  407. package/dist/store/person-behavior.d.ts.map +1 -0
  408. package/dist/store/person-behavior.js +127 -0
  409. package/dist/store/person-behavior.js.map +1 -0
  410. package/dist/store/pglite-assets.d.ts +15 -0
  411. package/dist/store/pglite-assets.d.ts.map +1 -0
  412. package/dist/store/pglite-assets.js +47 -0
  413. package/dist/store/pglite-assets.js.map +1 -0
  414. package/dist/store/query-rewrite.d.ts +28 -0
  415. package/dist/store/query-rewrite.d.ts.map +1 -0
  416. package/dist/store/query-rewrite.js +97 -0
  417. package/dist/store/query-rewrite.js.map +1 -0
  418. package/dist/store/schema.sql +107 -0
  419. package/dist/store/search.d.ts +36 -8
  420. package/dist/store/search.d.ts.map +1 -1
  421. package/dist/store/search.js +188 -76
  422. package/dist/store/search.js.map +1 -1
  423. package/dist/store/tags.d.ts.map +1 -1
  424. package/dist/store/tags.js +6 -2
  425. package/dist/store/tags.js.map +1 -1
  426. package/dist/store/timeline.d.ts +13 -1
  427. package/dist/store/timeline.d.ts.map +1 -1
  428. package/dist/store/timeline.js +134 -4
  429. package/dist/store/timeline.js.map +1 -1
  430. package/dist/store/trgm-search.d.ts +13 -0
  431. package/dist/store/trgm-search.d.ts.map +1 -0
  432. package/dist/store/trgm-search.js +53 -0
  433. package/dist/store/trgm-search.js.map +1 -0
  434. package/dist/store/wikilink.d.ts +17 -0
  435. package/dist/store/wikilink.d.ts.map +1 -0
  436. package/dist/store/wikilink.js +58 -0
  437. package/dist/store/wikilink.js.map +1 -0
  438. package/dist/sync/obsidian.d.ts.map +1 -1
  439. package/dist/sync/obsidian.js +5 -1
  440. package/dist/sync/obsidian.js.map +1 -1
  441. package/dist/synth/cache.d.ts +17 -0
  442. package/dist/synth/cache.d.ts.map +1 -0
  443. package/dist/synth/cache.js +67 -0
  444. package/dist/synth/cache.js.map +1 -0
  445. package/dist/synth/citations.d.ts +12 -0
  446. package/dist/synth/citations.d.ts.map +1 -0
  447. package/dist/synth/citations.js +28 -0
  448. package/dist/synth/citations.js.map +1 -0
  449. package/dist/synth/context.d.ts +10 -0
  450. package/dist/synth/context.d.ts.map +1 -0
  451. package/dist/synth/context.js +67 -0
  452. package/dist/synth/context.js.map +1 -0
  453. package/dist/synth/engine.d.ts +16 -0
  454. package/dist/synth/engine.d.ts.map +1 -0
  455. package/dist/synth/engine.js +111 -0
  456. package/dist/synth/engine.js.map +1 -0
  457. package/dist/synth/gaps.d.ts +17 -0
  458. package/dist/synth/gaps.d.ts.map +1 -0
  459. package/dist/synth/gaps.js +57 -0
  460. package/dist/synth/gaps.js.map +1 -0
  461. package/dist/synth/index.d.ts +6 -0
  462. package/dist/synth/index.d.ts.map +1 -0
  463. package/dist/synth/index.js +6 -0
  464. package/dist/synth/index.js.map +1 -0
  465. package/dist/synth/intent.d.ts +6 -0
  466. package/dist/synth/intent.d.ts.map +1 -0
  467. package/dist/synth/intent.js +13 -0
  468. package/dist/synth/intent.js.map +1 -0
  469. package/dist/synth/intents/daily-report.d.ts +7 -0
  470. package/dist/synth/intents/daily-report.d.ts.map +1 -0
  471. package/dist/synth/intents/daily-report.js +37 -0
  472. package/dist/synth/intents/daily-report.js.map +1 -0
  473. package/dist/synth/intents/index.d.ts +2 -0
  474. package/dist/synth/intents/index.d.ts.map +1 -0
  475. package/dist/synth/intents/index.js +12 -0
  476. package/dist/synth/intents/index.js.map +1 -0
  477. package/dist/synth/intents/person-strategy.d.ts +40 -0
  478. package/dist/synth/intents/person-strategy.d.ts.map +1 -0
  479. package/dist/synth/intents/person-strategy.js +66 -0
  480. package/dist/synth/intents/person-strategy.js.map +1 -0
  481. package/dist/synth/intents/recall.d.ts +8 -0
  482. package/dist/synth/intents/recall.d.ts.map +1 -0
  483. package/dist/synth/intents/recall.js +26 -0
  484. package/dist/synth/intents/recall.js.map +1 -0
  485. package/dist/synth/intents/troubleshoot.d.ts +11 -0
  486. package/dist/synth/intents/troubleshoot.d.ts.map +1 -0
  487. package/dist/synth/intents/troubleshoot.js +66 -0
  488. package/dist/synth/intents/troubleshoot.js.map +1 -0
  489. package/dist/synth/scope.d.ts +13 -0
  490. package/dist/synth/scope.d.ts.map +1 -0
  491. package/dist/synth/scope.js +139 -0
  492. package/dist/synth/scope.js.map +1 -0
  493. package/dist/synth/types.d.ts +117 -0
  494. package/dist/synth/types.d.ts.map +1 -0
  495. package/dist/synth/types.js +2 -0
  496. package/dist/synth/types.js.map +1 -0
  497. package/package.json +18 -6
@@ -0,0 +1,48 @@
1
+ import { spawn } from "node:child_process";
2
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { homedir } from "node:os";
4
+ import { join } from "node:path";
5
+ // Opt-in, debounced, non-blocking auto write-back for the SessionEnd hook.
6
+ // When enabled, triggers a detached `memoark extract --source claude-code`
7
+ // (incremental + deduped + L1/L2 noise-filtered) at most once per debounce window.
8
+ const DEFAULT_DEBOUNCE_MS = 10 * 60 * 1000; // 10 minutes
9
+ function stampPath(home) {
10
+ return join(home, ".memoark", ".last-writeback");
11
+ }
12
+ function defaultReadStamp(home) {
13
+ const p = stampPath(home);
14
+ if (!existsSync(p))
15
+ return null;
16
+ const n = Number(readFileSync(p, "utf8").trim());
17
+ return Number.isFinite(n) ? n : null;
18
+ }
19
+ function defaultWriteStamp(home, t) {
20
+ try {
21
+ writeFileSync(stampPath(home), String(t));
22
+ }
23
+ catch {
24
+ // best-effort; a missing ~/.memoark just means no debounce persistence
25
+ }
26
+ }
27
+ function defaultSpawn() {
28
+ const child = spawn("memoark", ["extract", "--source", "claude-code"], {
29
+ detached: true,
30
+ stdio: "ignore",
31
+ });
32
+ child.unref();
33
+ }
34
+ /** Returns true if a write-back was triggered. Never blocks (extract is detached). */
35
+ export function runWriteback(deps) {
36
+ if (!deps.enabled)
37
+ return false;
38
+ const home = deps.home ?? homedir();
39
+ const now = deps.now ?? Date.now();
40
+ const debounce = deps.debounceMs ?? DEFAULT_DEBOUNCE_MS;
41
+ const last = (deps.readStamp ?? (() => defaultReadStamp(home)))();
42
+ if (last !== null && now - last < debounce)
43
+ return false;
44
+ (deps.writeStamp ?? ((t) => defaultWriteStamp(home, t)))(now);
45
+ (deps.spawnExtract ?? defaultSpawn)();
46
+ return true;
47
+ }
48
+ //# sourceMappingURL=writeback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeback.js","sourceRoot":"","sources":["../../src/hooks/writeback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,2EAA2E;AAC3E,2EAA2E;AAC3E,mFAAmF;AAEnF,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAEzD,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,CAAS;IAChD,IAAI,CAAC;QACH,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;IACzE,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE;QACrE,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAYD,sFAAsF;AACtF,MAAM,UAAU,YAAY,CAAC,IAAmB;IAC9C,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC;IACxD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,QAAQ;QAAE,OAAO,KAAK,CAAC;IACzD,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,EAAE,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ClientAdapter } from "../types.js";
2
+ export declare const claudeCode: ClientAdapter;
3
+ //# sourceMappingURL=claude-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/install/clients/claude-code.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,aAAa,CAAC;AAEzE,eAAO,MAAM,UAAU,EAAE,aA0BxB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { DIRECTIVE_L1 } from "../directive.js";
4
+ import { mcpEntry } from "../types.js";
5
+ export const claudeCode = {
6
+ id: "claude-code",
7
+ displayName: "Claude Code",
8
+ detect(home) {
9
+ return existsSync(join(home, ".claude")) || existsSync(join(home, ".claude.json"));
10
+ },
11
+ plan(ctx) {
12
+ const mcpPath = ctx.scope === "project" ? join(ctx.cwd, ".mcp.json") : join(ctx.home, ".claude.json");
13
+ const rulesPath = ctx.scope === "project" ? join(ctx.cwd, "CLAUDE.md") : join(ctx.home, ".claude", "CLAUDE.md");
14
+ return [
15
+ {
16
+ path: mcpPath,
17
+ kind: "json-mcp",
18
+ action: ctx.action,
19
+ entry: ctx.action === "upsert" ? mcpEntry(ctx) : undefined,
20
+ },
21
+ {
22
+ path: rulesPath,
23
+ kind: "marked-block",
24
+ action: ctx.action,
25
+ content: ctx.action === "upsert" ? DIRECTIVE_L1 : undefined,
26
+ },
27
+ ];
28
+ },
29
+ };
30
+ //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/install/clients/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAsB,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAEzE,MAAM,CAAC,MAAM,UAAU,GAAkB;IACvC,EAAE,EAAE,aAAa;IACjB,WAAW,EAAE,aAAa;IAC1B,MAAM,CAAC,IAAI;QACT,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,CAAC,GAAY;QACf,MAAM,OAAO,GACX,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACxF,MAAM,SAAS,GACb,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAChG,OAAO;YACL;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aAC3D;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;aAC5D;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ClientAdapter } from "../types.js";
2
+ export declare const claudeDesktop: ClientAdapter;
3
+ //# sourceMappingURL=claude-desktop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-desktop.d.ts","sourceRoot":"","sources":["../../../src/install/clients/claude-desktop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,aAAa,CAAC;AAUzE,eAAO,MAAM,aAAa,EAAE,aAiB3B,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { mcpEntry } from "../types.js";
4
+ // Claude Desktop has no rules-file mechanism; it relies on the L2 MCP
5
+ // `instructions` field. Install only registers the MCP server.
6
+ function configDir(home, platform) {
7
+ if (platform === "darwin")
8
+ return join(home, "Library", "Application Support", "Claude");
9
+ if (platform === "win32")
10
+ return join(home, "AppData", "Roaming", "Claude");
11
+ return join(home, ".config", "Claude");
12
+ }
13
+ export const claudeDesktop = {
14
+ id: "claude-desktop",
15
+ displayName: "Claude Desktop",
16
+ detect(home, platform) {
17
+ return existsSync(configDir(home, platform));
18
+ },
19
+ plan(ctx) {
20
+ const path = join(configDir(ctx.home, ctx.platform), "claude_desktop_config.json");
21
+ return [
22
+ {
23
+ path,
24
+ kind: "json-mcp",
25
+ action: ctx.action,
26
+ entry: ctx.action === "upsert" ? mcpEntry(ctx) : undefined,
27
+ },
28
+ ];
29
+ },
30
+ };
31
+ //# sourceMappingURL=claude-desktop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-desktop.js","sourceRoot":"","sources":["../../../src/install/clients/claude-desktop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAsB,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAEzE,sEAAsE;AACtE,+DAA+D;AAC/D,SAAS,SAAS,CAAC,IAAY,EAAE,QAAyB;IACxD,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IACzF,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,EAAE,EAAE,gBAAgB;IACpB,WAAW,EAAE,gBAAgB;IAC7B,MAAM,CAAC,IAAI,EAAE,QAAQ;QACnB,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,GAAY;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,4BAA4B,CAAC,CAAC;QACnF,OAAO;YACL;gBACE,IAAI;gBACJ,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aAC3D;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ClientAdapter } from "../types.js";
2
+ export declare const codex: ClientAdapter;
3
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/install/clients/codex.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,aAAa,CAAC;AAIzE,eAAO,MAAM,KAAK,EAAE,aAyBnB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { DIRECTIVE_L1 } from "../directive.js";
4
+ import { mcpEntry } from "../types.js";
5
+ // Codex MCP config is global-only (~/.codex/config.toml); rules go to AGENTS.md
6
+ // (global ~/.codex/AGENTS.md or project ./AGENTS.md).
7
+ export const codex = {
8
+ id: "codex",
9
+ displayName: "Codex",
10
+ detect(home) {
11
+ return existsSync(join(home, ".codex"));
12
+ },
13
+ plan(ctx) {
14
+ const mcpPath = join(ctx.home, ".codex", "config.toml");
15
+ const rulesPath = ctx.scope === "project" ? join(ctx.cwd, "AGENTS.md") : join(ctx.home, ".codex", "AGENTS.md");
16
+ return [
17
+ {
18
+ path: mcpPath,
19
+ kind: "toml-mcp",
20
+ action: ctx.action,
21
+ entry: ctx.action === "upsert" ? mcpEntry(ctx) : undefined,
22
+ },
23
+ {
24
+ path: rulesPath,
25
+ kind: "marked-block",
26
+ action: ctx.action,
27
+ content: ctx.action === "upsert" ? DIRECTIVE_L1 : undefined,
28
+ },
29
+ ];
30
+ },
31
+ };
32
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/install/clients/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAsB,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAEzE,gFAAgF;AAChF,sDAAsD;AACtD,MAAM,CAAC,MAAM,KAAK,GAAkB;IAClC,EAAE,EAAE,OAAO;IACX,WAAW,EAAE,OAAO;IACpB,MAAM,CAAC,IAAI;QACT,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,GAAY;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QACxD,MAAM,SAAS,GACb,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC/F,OAAO;YACL;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aAC3D;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;aAC5D;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ClientAdapter } from "../types.js";
2
+ export declare const cursor: ClientAdapter;
3
+ //# sourceMappingURL=cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../src/install/clients/cursor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,aAAa,CAAC;AAOzE,eAAO,MAAM,MAAM,EAAE,aAyBpB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { DIRECTIVE_L1, MEMOARK_BLOCK_END, MEMOARK_BLOCK_START } from "../directive.js";
4
+ import { mcpEntry } from "../types.js";
5
+ // Cursor rules use `.mdc` with required frontmatter, so memoark owns the whole
6
+ // file (managed-file) rather than appending a marker block.
7
+ const L1_BODY = DIRECTIVE_L1.replace(MEMOARK_BLOCK_START, "").replace(MEMOARK_BLOCK_END, "").trim();
8
+ const CURSOR_MDC = `---\nalwaysApply: true\n---\n\n${L1_BODY}\n`;
9
+ export const cursor = {
10
+ id: "cursor",
11
+ displayName: "Cursor",
12
+ detect(home) {
13
+ return existsSync(join(home, ".cursor"));
14
+ },
15
+ plan(ctx) {
16
+ const base = ctx.scope === "project" ? ctx.cwd : ctx.home;
17
+ const mcpPath = join(base, ".cursor", "mcp.json");
18
+ const rulesPath = join(base, ".cursor", "rules", "memoark.mdc");
19
+ return [
20
+ {
21
+ path: mcpPath,
22
+ kind: "json-mcp",
23
+ action: ctx.action,
24
+ entry: ctx.action === "upsert" ? mcpEntry(ctx) : undefined,
25
+ },
26
+ {
27
+ path: rulesPath,
28
+ kind: "managed-file",
29
+ action: ctx.action,
30
+ content: ctx.action === "upsert" ? CURSOR_MDC : undefined,
31
+ },
32
+ ];
33
+ },
34
+ };
35
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../src/install/clients/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAsB,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAEzE,+EAA+E;AAC/E,4DAA4D;AAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACpG,MAAM,UAAU,GAAG,kCAAkC,OAAO,IAAI,CAAC;AAEjE,MAAM,CAAC,MAAM,MAAM,GAAkB;IACnC,EAAE,EAAE,QAAQ;IACZ,WAAW,EAAE,QAAQ;IACrB,MAAM,CAAC,IAAI;QACT,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,GAAY;QACf,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAChE,OAAO;YACL;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aAC3D;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;aAC1D;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ClientAdapter } from "../types.js";
2
+ export declare const hermes: ClientAdapter;
3
+ //# sourceMappingURL=hermes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../../src/install/clients/hermes.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,aAAa,CAAC;AASzE,eAAO,MAAM,MAAM,EAAE,aAuBpB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { MEMOARK_SKILL } from "../skill.js";
4
+ import { mcpEntry } from "../types.js";
5
+ // OpenClaw / Hermes. MCP lives in config.yaml `mcp_servers`; the skill drops
6
+ // into the skills dir. Newer Hermes uses ~/.hermes; older OpenClaw layout uses
7
+ // ~/.openclaw — detect either and pin the root accordingly.
8
+ function hermesRoot(home) {
9
+ return existsSync(join(home, ".hermes")) ? join(home, ".hermes") : join(home, ".openclaw");
10
+ }
11
+ export const hermes = {
12
+ id: "hermes",
13
+ displayName: "OpenClaw / Hermes",
14
+ detect(home) {
15
+ return existsSync(join(home, ".hermes")) || existsSync(join(home, ".openclaw"));
16
+ },
17
+ plan(ctx) {
18
+ const root = hermesRoot(ctx.home);
19
+ return [
20
+ {
21
+ path: join(root, "config.yaml"),
22
+ kind: "yaml-mcp",
23
+ action: ctx.action,
24
+ entry: ctx.action === "upsert" ? mcpEntry(ctx) : undefined,
25
+ },
26
+ {
27
+ path: join(root, "skills", "memoark", "SKILL.md"),
28
+ kind: "managed-file",
29
+ action: ctx.action,
30
+ content: ctx.action === "upsert" ? MEMOARK_SKILL : undefined,
31
+ },
32
+ ];
33
+ },
34
+ };
35
+ //# sourceMappingURL=hermes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../../src/install/clients/hermes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAsB,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAEzE,6EAA6E;AAC7E,+EAA+E;AAC/E,4DAA4D;AAC5D,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAkB;IACnC,EAAE,EAAE,QAAQ;IACZ,WAAW,EAAE,mBAAmB;IAChC,MAAM,CAAC,IAAI;QACT,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,GAAY;QACf,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO;YACL;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;gBAC/B,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aAC3D;YACD;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC;gBACjD,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;aAC7D;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ClientAdapter } from "../types.js";
2
+ export declare const ADAPTERS: ClientAdapter[];
3
+ export declare function getAdapter(id: string): ClientAdapter | undefined;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/install/clients/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQjD,eAAO,MAAM,QAAQ,EAAE,aAAa,EAOnC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEhE"}
@@ -0,0 +1,18 @@
1
+ import { claudeCode } from "./claude-code.js";
2
+ import { claudeDesktop } from "./claude-desktop.js";
3
+ import { codex } from "./codex.js";
4
+ import { cursor } from "./cursor.js";
5
+ import { hermes } from "./hermes.js";
6
+ import { windsurf } from "./windsurf.js";
7
+ export const ADAPTERS = [
8
+ claudeCode,
9
+ claudeDesktop,
10
+ cursor,
11
+ codex,
12
+ windsurf,
13
+ hermes,
14
+ ];
15
+ export function getAdapter(id) {
16
+ return ADAPTERS.find((a) => a.id === id);
17
+ }
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/install/clients/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,UAAU;IACV,aAAa;IACb,MAAM;IACN,KAAK;IACL,QAAQ;IACR,MAAM;CACP,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ClientAdapter } from "../types.js";
2
+ export declare const windsurf: ClientAdapter;
3
+ //# sourceMappingURL=windsurf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windsurf.d.ts","sourceRoot":"","sources":["../../../src/install/clients/windsurf.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,aAAa,CAAC;AAEzE,eAAO,MAAM,QAAQ,EAAE,aA2BtB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { DIRECTIVE_L1 } from "../directive.js";
4
+ import { mcpEntry } from "../types.js";
5
+ export const windsurf = {
6
+ id: "windsurf",
7
+ displayName: "Windsurf",
8
+ detect(home) {
9
+ return existsSync(join(home, ".codeium", "windsurf"));
10
+ },
11
+ plan(ctx) {
12
+ const mcpPath = join(ctx.home, ".codeium", "windsurf", "mcp_config.json");
13
+ const rulesPath = ctx.scope === "project"
14
+ ? join(ctx.cwd, ".windsurfrules")
15
+ : join(ctx.home, ".codeium", "windsurf", "memories", "global_rules.md");
16
+ return [
17
+ {
18
+ path: mcpPath,
19
+ kind: "json-mcp",
20
+ action: ctx.action,
21
+ entry: ctx.action === "upsert" ? mcpEntry(ctx) : undefined,
22
+ },
23
+ {
24
+ path: rulesPath,
25
+ kind: "marked-block",
26
+ action: ctx.action,
27
+ content: ctx.action === "upsert" ? DIRECTIVE_L1 : undefined,
28
+ },
29
+ ];
30
+ },
31
+ };
32
+ //# sourceMappingURL=windsurf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windsurf.js","sourceRoot":"","sources":["../../../src/install/clients/windsurf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAsB,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAEzE,MAAM,CAAC,MAAM,QAAQ,GAAkB;IACrC,EAAE,EAAE,UAAU;IACd,WAAW,EAAE,UAAU;IACvB,MAAM,CAAC,IAAI;QACT,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,GAAY;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAC1E,MAAM,SAAS,GACb,GAAG,CAAC,KAAK,KAAK,SAAS;YACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAC5E,OAAO;YACL;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aAC3D;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;aAC5D;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface LaunchCmd {
2
+ command: string;
3
+ args: string[];
4
+ }
5
+ export interface ResolveOpts {
6
+ /** Use the Streamable HTTP transport instead of stdio. */
7
+ http?: boolean;
8
+ /** Injectable PATH lookup for tests. */
9
+ onPath?: (bin: string) => boolean;
10
+ }
11
+ /** Default check: is `bin` an executable on PATH? */
12
+ export declare function isOnPath(bin: string, env?: NodeJS.ProcessEnv): boolean;
13
+ export declare function resolveLaunchCmd(opts?: ResolveOpts): LaunchCmd;
14
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/install/command.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACnC;AAED,qDAAqD;AACrD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAenF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,WAAgB,GAAG,SAAS,CAOlE"}
@@ -0,0 +1,34 @@
1
+ import { accessSync, constants } from "node:fs";
2
+ import { delimiter, join } from "node:path";
3
+ // Resolves the command an MCP client should spawn to launch Memoark's stdio
4
+ // (or HTTP) server. Prefers a globally-installed `memoark` binary; otherwise
5
+ // falls back to `npx -y @andre.li/memoark`.
6
+ const PACKAGE = "@andre.li/memoark";
7
+ /** Default check: is `bin` an executable on PATH? */
8
+ export function isOnPath(bin, env = process.env) {
9
+ const path = env.PATH ?? "";
10
+ const exts = process.platform === "win32" ? ["", ".cmd", ".exe", ".bat"] : [""];
11
+ for (const dir of path.split(delimiter)) {
12
+ if (!dir)
13
+ continue;
14
+ for (const ext of exts) {
15
+ try {
16
+ accessSync(join(dir, bin + ext), constants.X_OK);
17
+ return true;
18
+ }
19
+ catch {
20
+ // not here; keep looking
21
+ }
22
+ }
23
+ }
24
+ return false;
25
+ }
26
+ export function resolveLaunchCmd(opts = {}) {
27
+ const transport = opts.http ? "--mcp-http" : "--mcp";
28
+ const onPath = opts.onPath ?? isOnPath;
29
+ if (onPath("memoark")) {
30
+ return { command: "memoark", args: ["serve", transport] };
31
+ }
32
+ return { command: "npx", args: ["-y", PACKAGE, "serve", transport] };
33
+ }
34
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/install/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,4EAA4E;AAC5E,6EAA6E;AAC7E,4CAA4C;AAE5C,MAAM,OAAO,GAAG,mBAAmB,CAAC;AAcpC,qDAAqD;AACrD,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,MAAyB,OAAO,CAAC,GAAG;IACxE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBACjD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAoB,EAAE;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC;IACvC,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;AACvE,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const MEMOARK_BLOCK_START = "<!-- memoark:start -->";
2
+ export declare const MEMOARK_BLOCK_END = "<!-- memoark:end -->";
3
+ /** L1: minimal directive block for rules files (CLAUDE.md / AGENTS.md / …). */
4
+ export declare const DIRECTIVE_L1 = "<!-- memoark:start -->\n## Memoark \u2014 \u4F60\u7684\u4E2A\u4EBA\u8BB0\u5FC6\u5E93\n\u4F60\u63A5\u5165\u4E86 Memoark\uFF1A\u7528\u6237\u5173\u4E8E\u300C\u4EBA / \u9879\u76EE / \u51B3\u7B56 / \u4EFB\u52A1 / \u8FC7\u5F80\u300D\u7684\u672C\u5730\u6301\u4E45\u8BB0\u5FC6\uFF0C\u662F\u8FD9\u4E9B\u4E8B\u7684**\u4E8B\u5B9E\u6765\u6E90**\u3002\n- **\u4F55\u65F6\u67E5**\uFF1A\u95EE\u9898\u6D89\u53CA\u5177\u4F53\u7684\u4EBA\u3001\u9879\u76EE\u8FDB\u5C55\u3001\u8FC7\u53BB\u7684\u51B3\u5B9A\u3001\u5F85\u529E\uFF0C\u6216\u5E26\u300C\u4E0A\u5468 / \u4E4B\u524D / \u6211\u4EEC\u5F53\u65F6\u2026\u300D\u65F6\u2014\u2014\u5148\u67E5 Memoark\uFF0C\u522B\u53EA\u51ED\u4EE3\u7801\u6216\u731C\u6D4B\u3002\n- **\u600E\u4E48\u67E5\uFF08\u4FBF\u5B9C\u4F18\u5148\uFF09**\uFF1A\u5148 `search`\uFF08\u5173\u952E\u8BCD\uFF0C\u96F6\u6210\u672C\uFF09\u2192 \u4E0D\u591F\u518D `query` / `recall`\uFF08\u8BED\u4E49 + \u5F15\u7528\uFF09\uFF1B\u4F1A\u8BDD\u5F00\u59CB\u53EF\u5148 `get_session_context` \u8FDB\u5165\u72B6\u6001\u3002\n- **\u4F55\u65F6\u4E0D\u67E5**\uFF1A\u4E0E\u7528\u6237\u4E2A\u4EBA\u4E16\u754C\u65E0\u5173\u7684\u901A\u7528\u95EE\u9898\uFF08\u7EAF\u8BED\u6CD5 / \u901A\u7528\u7B97\u6CD5\uFF09\uFF0C\u522B\u6253\u6270\u8BB0\u5FC6\u5E93\u3002\n- \u66F4\u591A\u7528\u6CD5\uFF08\u5199\u56DE\u3001\u56FE\u8C31\u3001\u4EBA\u7269\u753B\u50CF\uFF09\u6309\u9700\u53D1\u73B0\uFF1A\u8C03\u7528\u5DE5\u5177\u65F6\u770B\u5176\u8BF4\u660E\uFF0C\u6216 `get_health`\u3002\n<!-- memoark:end -->";
5
+ /** L2: medium directive used as the MCP server `instructions` field. */
6
+ export declare const DIRECTIVE_L2 = "Memoark is the user's local-first personal memory \u2014 the source of truth about the user's people, projects, decisions, tasks, and history.\n\nBrain-first, cheap-first. When a request concerns a specific person, a project's status/history, a past decision, a todo, or contains \"last week / earlier / what did we\u2026\", consult Memoark BEFORE answering from code or assumptions:\n 1) search (keyword, zero-cost)\n 2) query / recall (semantic + cited) \u2014 only if search is thin\n Accept good results; do not over-escalate.\nSession start: call get_session_context for a compact digest of active projects, recent decisions, open tasks, and key people.\nProject-status questions: combine Memoark (decisions/tasks/timeline) WITH repo reality (git/code); do not answer from code alone.\nDo NOT consult Memoark for generic questions unrelated to the user's world (pure syntax, general algorithms).\nWrite-back (conservative): on a clear decision/discovery, or when the user says \"remember this\", persist via put_page / add_timeline_entry; if unsure, ask.\nMore tools (graph traversal, person profile, daily report, troubleshoot) are discoverable via their tool descriptions and get_health.";
7
+ //# sourceMappingURL=directive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directive.d.ts","sourceRoot":"","sources":["../../src/install/directive.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,+EAA+E;AAC/E,eAAO,MAAM,YAAY,k8CAOJ,CAAC;AAEtB,wEAAwE;AACxE,eAAO,MAAM,YAAY,orCAU6G,CAAC"}
@@ -0,0 +1,31 @@
1
+ // Single source of truth for Memoark's agent-facing memory directives.
2
+ //
3
+ // Progressive disclosure (Spec 12):
4
+ // L1 — minimal, written into each client's rules file (always resident).
5
+ // L2 — medium, passed as the MCP server `instructions` field (injected by
6
+ // clients that support it; covers clients without a rules file).
7
+ // L3 — full detail, lives in tool descriptions / the optional skill (on demand).
8
+ export const MEMOARK_BLOCK_START = "<!-- memoark:start -->";
9
+ export const MEMOARK_BLOCK_END = "<!-- memoark:end -->";
10
+ /** L1: minimal directive block for rules files (CLAUDE.md / AGENTS.md / …). */
11
+ export const DIRECTIVE_L1 = `${MEMOARK_BLOCK_START}
12
+ ## Memoark — 你的个人记忆库
13
+ 你接入了 Memoark:用户关于「人 / 项目 / 决策 / 任务 / 过往」的本地持久记忆,是这些事的**事实来源**。
14
+ - **何时查**:问题涉及具体的人、项目进展、过去的决定、待办,或带「上周 / 之前 / 我们当时…」时——先查 Memoark,别只凭代码或猜测。
15
+ - **怎么查(便宜优先)**:先 \`search\`(关键词,零成本)→ 不够再 \`query\` / \`recall\`(语义 + 引用);会话开始可先 \`get_session_context\` 进入状态。
16
+ - **何时不查**:与用户个人世界无关的通用问题(纯语法 / 通用算法),别打扰记忆库。
17
+ - 更多用法(写回、图谱、人物画像)按需发现:调用工具时看其说明,或 \`get_health\`。
18
+ ${MEMOARK_BLOCK_END}`;
19
+ /** L2: medium directive used as the MCP server `instructions` field. */
20
+ export const DIRECTIVE_L2 = `Memoark is the user's local-first personal memory — the source of truth about the user's people, projects, decisions, tasks, and history.
21
+
22
+ Brain-first, cheap-first. When a request concerns a specific person, a project's status/history, a past decision, a todo, or contains "last week / earlier / what did we…", consult Memoark BEFORE answering from code or assumptions:
23
+ 1) search (keyword, zero-cost)
24
+ 2) query / recall (semantic + cited) — only if search is thin
25
+ Accept good results; do not over-escalate.
26
+ Session start: call get_session_context for a compact digest of active projects, recent decisions, open tasks, and key people.
27
+ Project-status questions: combine Memoark (decisions/tasks/timeline) WITH repo reality (git/code); do not answer from code alone.
28
+ Do NOT consult Memoark for generic questions unrelated to the user's world (pure syntax, general algorithms).
29
+ Write-back (conservative): on a clear decision/discovery, or when the user says "remember this", persist via put_page / add_timeline_entry; if unsure, ask.
30
+ More tools (graph traversal, person profile, daily report, troubleshoot) are discoverable via their tool descriptions and get_health.`;
31
+ //# sourceMappingURL=directive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directive.js","sourceRoot":"","sources":["../../src/install/directive.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,oCAAoC;AACpC,2EAA2E;AAC3E,4EAA4E;AAC5E,wEAAwE;AACxE,mFAAmF;AAEnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AAExD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,mBAAmB;;;;;;;EAOhD,iBAAiB,EAAE,CAAC;AAEtB,wEAAwE;AACxE,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;sIAU0G,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { type LaunchCmd } from "./command.js";
2
+ import type { InstallAction, InstallOp, Scope } from "./types.js";
3
+ export interface InstallOptions {
4
+ /** Explicit client ids; empty/undefined → install to all detected. */
5
+ agent?: string[];
6
+ scope?: Scope;
7
+ http?: boolean;
8
+ dryRun?: boolean;
9
+ home?: string;
10
+ cwd?: string;
11
+ platform?: NodeJS.Platform;
12
+ launch?: LaunchCmd;
13
+ }
14
+ export interface PlannedClient {
15
+ id: string;
16
+ displayName: string;
17
+ ops: InstallOp[];
18
+ }
19
+ /** Plan without touching disk (for `--dry-run`). */
20
+ export declare function planInstall(opts: InstallOptions, action: InstallAction): PlannedClient[];
21
+ export declare function runInstall(opts?: InstallOptions): PlannedClient[];
22
+ export declare function runUninstall(opts?: InstallOptions): PlannedClient[];
23
+ /** Ids of clients detected as installed on this machine. */
24
+ export declare function detectInstalledAgents(home?: string, platform?: NodeJS.Platform): string[];
25
+ export { ADAPTERS } from "./clients/index.js";
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/install/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,cAAc,CAAC;AAShE,OAAO,KAAK,EAAiB,aAAa,EAAE,SAAS,EAAW,KAAK,EAAE,MAAM,YAAY,CAAC;AAG1F,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,SAAS,EAAE,CAAC;CAClB;AA8FD,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,aAAa,EAAE,CAExF;AAYD,wBAAgB,UAAU,CAAC,IAAI,GAAE,cAAmB,GAAG,aAAa,EAAE,CAErE;AAED,wBAAgB,YAAY,CAAC,IAAI,GAAE,cAAmB,GAAG,aAAa,EAAE,CAEvE;AAED,4DAA4D;AAC5D,wBAAgB,qBAAqB,CAAC,IAAI,SAAY,EAAE,QAAQ,kBAAmB,GAAG,MAAM,EAAE,CAE7F;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC"}