@cachly-dev/mcp-server 0.10.65 → 0.10.67

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 (277) hide show
  1. package/dist/src/embeddings.js +10 -0
  2. package/dist/src/embeddings.js.map +1 -1
  3. package/dist/src/handlers/brain.js +2 -1
  4. package/dist/src/handlers/brain.js.map +1 -1
  5. package/dist/src/handlers/cache.js +4 -0
  6. package/dist/src/handlers/cache.js.map +1 -1
  7. package/dist/src/handlers/tco.js +1 -0
  8. package/dist/src/handlers/tco.js.map +1 -1
  9. package/dist/src/index.js +2 -2
  10. package/dist/src/index.js.map +1 -1
  11. package/package.json +7 -1
  12. package/server.json +2 -2
  13. package/.env.test.example +0 -23
  14. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -50
  15. package/.github/ISSUE_TEMPLATE/config.yml +0 -8
  16. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -25
  17. package/.github/workflows/eas-build-android.yml +0 -58
  18. package/.github/workflows/eas-update.yml +0 -55
  19. package/.github/workflows/publish.yml +0 -72
  20. package/BENCH.md +0 -113
  21. package/CHANGELOG.md +0 -653
  22. package/Dockerfile +0 -16
  23. package/LAUNCH_TEXTS.md +0 -182
  24. package/PROGRESS.md +0 -141
  25. package/STRATEGY.md +0 -228
  26. package/VISION_10X.md +0 -133
  27. package/apps/travel-chaos-organizer/.env.example +0 -49
  28. package/apps/travel-chaos-organizer/DEPLOY.md +0 -328
  29. package/apps/travel-chaos-organizer/Makefile +0 -57
  30. package/apps/travel-chaos-organizer/README.md +0 -159
  31. package/apps/travel-chaos-organizer/backend/.env.example +0 -10
  32. package/apps/travel-chaos-organizer/backend/Dockerfile +0 -25
  33. package/apps/travel-chaos-organizer/backend/alembic/env.py +0 -56
  34. package/apps/travel-chaos-organizer/backend/alembic/script.py.mako +0 -24
  35. package/apps/travel-chaos-organizer/backend/alembic/versions/.gitkeep +0 -0
  36. package/apps/travel-chaos-organizer/backend/alembic/versions/0001_stripe_customer_id.py +0 -24
  37. package/apps/travel-chaos-organizer/backend/alembic/versions/0002_telegram_chat_id.py +0 -24
  38. package/apps/travel-chaos-organizer/backend/alembic.ini +0 -39
  39. package/apps/travel-chaos-organizer/backend/app/__init__.py +0 -0
  40. package/apps/travel-chaos-organizer/backend/app/auth/__init__.py +0 -0
  41. package/apps/travel-chaos-organizer/backend/app/auth/keycloak.py +0 -81
  42. package/apps/travel-chaos-organizer/backend/app/config.py +0 -66
  43. package/apps/travel-chaos-organizer/backend/app/db/__init__.py +0 -0
  44. package/apps/travel-chaos-organizer/backend/app/db/database.py +0 -20
  45. package/apps/travel-chaos-organizer/backend/app/db/migrations/001_init.sql +0 -71
  46. package/apps/travel-chaos-organizer/backend/app/db/migrations/002_telemetry_freemium.sql +0 -31
  47. package/apps/travel-chaos-organizer/backend/app/db/migrations/003_telegram_chat_id.sql +0 -4
  48. package/apps/travel-chaos-organizer/backend/app/db/migrations/004_stripe_and_email.sql +0 -5
  49. package/apps/travel-chaos-organizer/backend/app/limiter.py +0 -4
  50. package/apps/travel-chaos-organizer/backend/app/logging_config.py +0 -25
  51. package/apps/travel-chaos-organizer/backend/app/main.py +0 -77
  52. package/apps/travel-chaos-organizer/backend/app/models/__init__.py +0 -0
  53. package/apps/travel-chaos-organizer/backend/app/models/schemas.py +0 -142
  54. package/apps/travel-chaos-organizer/backend/app/routers/__init__.py +0 -0
  55. package/apps/travel-chaos-organizer/backend/app/routers/admin.py +0 -237
  56. package/apps/travel-chaos-organizer/backend/app/routers/cache.py +0 -13
  57. package/apps/travel-chaos-organizer/backend/app/routers/events.py +0 -29
  58. package/apps/travel-chaos-organizer/backend/app/routers/export.py +0 -122
  59. package/apps/travel-chaos-organizer/backend/app/routers/inbox.py +0 -122
  60. package/apps/travel-chaos-organizer/backend/app/routers/items.py +0 -130
  61. package/apps/travel-chaos-organizer/backend/app/routers/mail.py +0 -108
  62. package/apps/travel-chaos-organizer/backend/app/routers/parse.py +0 -303
  63. package/apps/travel-chaos-organizer/backend/app/routers/payments.py +0 -179
  64. package/apps/travel-chaos-organizer/backend/app/routers/trips.py +0 -134
  65. package/apps/travel-chaos-organizer/backend/app/routers/users.py +0 -169
  66. package/apps/travel-chaos-organizer/backend/app/routers/waitlist.py +0 -37
  67. package/apps/travel-chaos-organizer/backend/app/services/__init__.py +0 -0
  68. package/apps/travel-chaos-organizer/backend/app/services/cache.py +0 -131
  69. package/apps/travel-chaos-organizer/backend/app/services/drip.py +0 -128
  70. package/apps/travel-chaos-organizer/backend/app/services/email.py +0 -61
  71. package/apps/travel-chaos-organizer/backend/app/services/errors.py +0 -44
  72. package/apps/travel-chaos-organizer/backend/app/services/notifier.py +0 -10
  73. package/apps/travel-chaos-organizer/backend/app/services/ollama.py +0 -101
  74. package/apps/travel-chaos-organizer/backend/app/services/parser.py +0 -22
  75. package/apps/travel-chaos-organizer/backend/app/services/quota.py +0 -85
  76. package/apps/travel-chaos-organizer/backend/app/services/sentry.py +0 -11
  77. package/apps/travel-chaos-organizer/backend/app/services/telemetry.py +0 -35
  78. package/apps/travel-chaos-organizer/backend/pytest.ini +0 -4
  79. package/apps/travel-chaos-organizer/backend/requirements-dev.txt +0 -6
  80. package/apps/travel-chaos-organizer/backend/requirements.txt +0 -25
  81. package/apps/travel-chaos-organizer/backend/tests/__init__.py +0 -0
  82. package/apps/travel-chaos-organizer/backend/tests/conftest.py +0 -223
  83. package/apps/travel-chaos-organizer/backend/tests/test_admin.py +0 -99
  84. package/apps/travel-chaos-organizer/backend/tests/test_cache.py +0 -142
  85. package/apps/travel-chaos-organizer/backend/tests/test_drip.py +0 -32
  86. package/apps/travel-chaos-organizer/backend/tests/test_e2e_chain.py +0 -121
  87. package/apps/travel-chaos-organizer/backend/tests/test_export.py +0 -48
  88. package/apps/travel-chaos-organizer/backend/tests/test_inbox.py +0 -107
  89. package/apps/travel-chaos-organizer/backend/tests/test_items.py +0 -138
  90. package/apps/travel-chaos-organizer/backend/tests/test_mail.py +0 -113
  91. package/apps/travel-chaos-organizer/backend/tests/test_ollama.py +0 -145
  92. package/apps/travel-chaos-organizer/backend/tests/test_parse_url.py +0 -98
  93. package/apps/travel-chaos-organizer/backend/tests/test_parser.py +0 -72
  94. package/apps/travel-chaos-organizer/backend/tests/test_payments.py +0 -163
  95. package/apps/travel-chaos-organizer/backend/tests/test_quota.py +0 -46
  96. package/apps/travel-chaos-organizer/backend/tests/test_search.py +0 -67
  97. package/apps/travel-chaos-organizer/backend/tests/test_trips.py +0 -123
  98. package/apps/travel-chaos-organizer/backend/tests/test_users.py +0 -52
  99. package/apps/travel-chaos-organizer/backups/.gitkeep +0 -0
  100. package/apps/travel-chaos-organizer/caddy/Caddyfile +0 -27
  101. package/apps/travel-chaos-organizer/docker-compose.node1.yml +0 -31
  102. package/apps/travel-chaos-organizer/docker-compose.override.yml +0 -14
  103. package/apps/travel-chaos-organizer/docker-compose.yml +0 -128
  104. package/apps/travel-chaos-organizer/frontend/.env.example +0 -13
  105. package/apps/travel-chaos-organizer/frontend/app/(app)/_layout.tsx +0 -80
  106. package/apps/travel-chaos-organizer/frontend/app/(app)/inbox.tsx +0 -166
  107. package/apps/travel-chaos-organizer/frontend/app/(app)/search.tsx +0 -130
  108. package/apps/travel-chaos-organizer/frontend/app/(app)/settings.tsx +0 -381
  109. package/apps/travel-chaos-organizer/frontend/app/(app)/trips/[id].tsx +0 -346
  110. package/apps/travel-chaos-organizer/frontend/app/(app)/trips.tsx +0 -363
  111. package/apps/travel-chaos-organizer/frontend/app/(app)/upgrade/cancel.tsx +0 -34
  112. package/apps/travel-chaos-organizer/frontend/app/(app)/upgrade/success.tsx +0 -35
  113. package/apps/travel-chaos-organizer/frontend/app/(auth)/login.tsx +0 -91
  114. package/apps/travel-chaos-organizer/frontend/app/_layout.tsx +0 -71
  115. package/apps/travel-chaos-organizer/frontend/app/auth.tsx +0 -29
  116. package/apps/travel-chaos-organizer/frontend/app/index.tsx +0 -16
  117. package/apps/travel-chaos-organizer/frontend/app/onboarding.tsx +0 -119
  118. package/apps/travel-chaos-organizer/frontend/app.config.ts +0 -54
  119. package/apps/travel-chaos-organizer/frontend/assets/adaptive-icon.svg +0 -66
  120. package/apps/travel-chaos-organizer/frontend/assets/icon.svg +0 -79
  121. package/apps/travel-chaos-organizer/frontend/assets/splash.svg +0 -15
  122. package/apps/travel-chaos-organizer/frontend/components/BottomSheet.tsx +0 -102
  123. package/apps/travel-chaos-organizer/frontend/components/ConfettiCannon.tsx +0 -107
  124. package/apps/travel-chaos-organizer/frontend/components/ConfirmDialog.tsx +0 -109
  125. package/apps/travel-chaos-organizer/frontend/components/ErrorBoundary.tsx +0 -45
  126. package/apps/travel-chaos-organizer/frontend/components/FileUploadButton.tsx +0 -19
  127. package/apps/travel-chaos-organizer/frontend/components/ImportSheet.tsx +0 -155
  128. package/apps/travel-chaos-organizer/frontend/components/OfflineBadge.tsx +0 -55
  129. package/apps/travel-chaos-organizer/frontend/components/QRCodeViewer.tsx +0 -80
  130. package/apps/travel-chaos-organizer/frontend/components/ScoreRing.tsx +0 -39
  131. package/apps/travel-chaos-organizer/frontend/components/Screen.tsx +0 -39
  132. package/apps/travel-chaos-organizer/frontend/components/Skeleton.tsx +0 -70
  133. package/apps/travel-chaos-organizer/frontend/components/SwipeableInboxItem.tsx +0 -121
  134. package/apps/travel-chaos-organizer/frontend/components/SwipeableTimelineItem.tsx +0 -70
  135. package/apps/travel-chaos-organizer/frontend/components/TimelineItem.tsx +0 -73
  136. package/apps/travel-chaos-organizer/frontend/components/TimelineItemDetail.tsx +0 -130
  137. package/apps/travel-chaos-organizer/frontend/components/Toast.tsx +0 -60
  138. package/apps/travel-chaos-organizer/frontend/components/ToastContext.tsx +0 -42
  139. package/apps/travel-chaos-organizer/frontend/components/TripCard.tsx +0 -146
  140. package/apps/travel-chaos-organizer/frontend/components/TripQRModal.tsx +0 -70
  141. package/apps/travel-chaos-organizer/frontend/components/UpgradeBanner.tsx +0 -44
  142. package/apps/travel-chaos-organizer/frontend/eas.json +0 -22
  143. package/apps/travel-chaos-organizer/frontend/hooks/useInbox.ts +0 -24
  144. package/apps/travel-chaos-organizer/frontend/hooks/useNetworkSync.ts +0 -60
  145. package/apps/travel-chaos-organizer/frontend/hooks/useTrips.ts +0 -112
  146. package/apps/travel-chaos-organizer/frontend/lib/api.ts +0 -223
  147. package/apps/travel-chaos-organizer/frontend/lib/auth.ts +0 -93
  148. package/apps/travel-chaos-organizer/frontend/lib/db.ts +0 -86
  149. package/apps/travel-chaos-organizer/frontend/lib/fileCache.ts +0 -54
  150. package/apps/travel-chaos-organizer/frontend/lib/haptics.ts +0 -13
  151. package/apps/travel-chaos-organizer/frontend/lib/notifications.ts +0 -112
  152. package/apps/travel-chaos-organizer/frontend/lib/offlineQueue.ts +0 -145
  153. package/apps/travel-chaos-organizer/frontend/lib/quota.tsx +0 -43
  154. package/apps/travel-chaos-organizer/frontend/lib/sentry.ts +0 -28
  155. package/apps/travel-chaos-organizer/frontend/lib/shareIntent.ts +0 -44
  156. package/apps/travel-chaos-organizer/frontend/package-lock.json +0 -13221
  157. package/apps/travel-chaos-organizer/frontend/package.json +0 -44
  158. package/apps/travel-chaos-organizer/frontend/tsconfig.json +0 -23
  159. package/apps/travel-chaos-organizer/keycloak/realm-export.json +0 -59
  160. package/apps/travel-chaos-organizer/landing/index.html +0 -773
  161. package/apps/travel-chaos-organizer/scripts/backup.sh +0 -14
  162. package/apps/travel-chaos-organizer/scripts/configure-env.sh +0 -82
  163. package/apps/travel-chaos-organizer/scripts/deploy.sh +0 -54
  164. package/apps/travel-chaos-organizer/scripts/health-check.sh +0 -36
  165. package/apps/travel-chaos-organizer/scripts/migrate.sh +0 -7
  166. package/apps/travel-chaos-organizer/scripts/server-setup.sh +0 -85
  167. package/apps/travel-chaos-organizer/scripts/smoke-test.sh +0 -29
  168. package/apps/travel-chaos-organizer/scripts/verify-tracking.sh +0 -71
  169. package/apps/travel-chaos-organizer/telegram-bot/.env.example +0 -3
  170. package/apps/travel-chaos-organizer/telegram-bot/Dockerfile +0 -6
  171. package/apps/travel-chaos-organizer/telegram-bot/bot.py +0 -504
  172. package/apps/travel-chaos-organizer/telegram-bot/requirements.txt +0 -3
  173. package/dist/src/__tests__/auth.test.d.ts +0 -1
  174. package/dist/src/__tests__/auth.test.js +0 -107
  175. package/dist/src/__tests__/auth.test.js.map +0 -1
  176. package/dist/src/__tests__/brain-flow.test.d.ts +0 -12
  177. package/dist/src/__tests__/brain-flow.test.js +0 -1241
  178. package/dist/src/__tests__/brain-flow.test.js.map +0 -1
  179. package/dist/src/__tests__/confidence.test.d.ts +0 -13
  180. package/dist/src/__tests__/confidence.test.js +0 -233
  181. package/dist/src/__tests__/confidence.test.js.map +0 -1
  182. package/dist/src/__tests__/e2e/api-auth.test.d.ts +0 -7
  183. package/dist/src/__tests__/e2e/api-auth.test.js +0 -162
  184. package/dist/src/__tests__/e2e/api-auth.test.js.map +0 -1
  185. package/dist/src/__tests__/e2e/api-health.test.d.ts +0 -7
  186. package/dist/src/__tests__/e2e/api-health.test.js +0 -95
  187. package/dist/src/__tests__/e2e/api-health.test.js.map +0 -1
  188. package/dist/src/__tests__/e2e/cli.test.d.ts +0 -10
  189. package/dist/src/__tests__/e2e/cli.test.js +0 -204
  190. package/dist/src/__tests__/e2e/cli.test.js.map +0 -1
  191. package/dist/src/__tests__/e2e/config.d.ts +0 -35
  192. package/dist/src/__tests__/e2e/config.js +0 -53
  193. package/dist/src/__tests__/e2e/config.js.map +0 -1
  194. package/dist/src/__tests__/e2e/funnel.test.d.ts +0 -13
  195. package/dist/src/__tests__/e2e/funnel.test.js +0 -90
  196. package/dist/src/__tests__/e2e/funnel.test.js.map +0 -1
  197. package/dist/src/__tests__/e2e/mcp-tools.test.d.ts +0 -7
  198. package/dist/src/__tests__/e2e/mcp-tools.test.js +0 -129
  199. package/dist/src/__tests__/e2e/mcp-tools.test.js.map +0 -1
  200. package/dist/src/__tests__/e2e/provisioning.test.d.ts +0 -15
  201. package/dist/src/__tests__/e2e/provisioning.test.js +0 -123
  202. package/dist/src/__tests__/e2e/provisioning.test.js.map +0 -1
  203. package/dist/src/__tests__/handlers-unit.test.d.ts +0 -12
  204. package/dist/src/__tests__/handlers-unit.test.js +0 -505
  205. package/dist/src/__tests__/handlers-unit.test.js.map +0 -1
  206. package/dist/src/__tests__/namespace.test.d.ts +0 -1
  207. package/dist/src/__tests__/namespace.test.js +0 -114
  208. package/dist/src/__tests__/namespace.test.js.map +0 -1
  209. package/dist/src/__tests__/rerank.test.d.ts +0 -1
  210. package/dist/src/__tests__/rerank.test.js +0 -125
  211. package/dist/src/__tests__/rerank.test.js.map +0 -1
  212. package/dist/src/__tests__/utils.test.d.ts +0 -1
  213. package/dist/src/__tests__/utils.test.js +0 -83
  214. package/dist/src/__tests__/utils.test.js.map +0 -1
  215. package/dist/src/bench/cachly-bench.d.ts +0 -39
  216. package/dist/src/bench/cachly-bench.js +0 -223
  217. package/dist/src/bench/cachly-bench.js.map +0 -1
  218. package/dist/src/bench/fixtures.d.ts +0 -37
  219. package/dist/src/bench/fixtures.js +0 -225
  220. package/dist/src/bench/fixtures.js.map +0 -1
  221. package/dist/src/search.test.d.ts +0 -1
  222. package/dist/src/search.test.js +0 -713
  223. package/dist/src/search.test.js.map +0 -1
  224. package/eslint.config.js +0 -16
  225. package/glama.json +0 -36
  226. package/llms.txt +0 -155
  227. package/packages/telegram-notify/SPLIT_PLAN.md +0 -106
  228. package/packages/telegram-notify/client.ts +0 -88
  229. package/packages/telegram-notify/emojis.json +0 -22
  230. package/packages/telegram-notify/pyproject.toml +0 -17
  231. package/packages/telegram-notify/telegram_notify/__init__.py +0 -3
  232. package/packages/telegram-notify/telegram_notify/client.py +0 -87
  233. package/packages/telegram-notify/telegram_notify/emojis.json +0 -22
  234. package/scripts/e2e-run.sh +0 -160
  235. package/scripts/generate-icons.js +0 -28
  236. package/smithery.yaml +0 -45
  237. package/src/__tests__/auth.test.ts +0 -147
  238. package/src/__tests__/brain-flow.test.ts +0 -1472
  239. package/src/__tests__/confidence.test.ts +0 -285
  240. package/src/__tests__/e2e/api-auth.test.ts +0 -182
  241. package/src/__tests__/e2e/api-health.test.ts +0 -103
  242. package/src/__tests__/e2e/cli.test.ts +0 -228
  243. package/src/__tests__/e2e/config.ts +0 -53
  244. package/src/__tests__/e2e/funnel.test.ts +0 -99
  245. package/src/__tests__/e2e/mcp-tools.test.ts +0 -191
  246. package/src/__tests__/e2e/provisioning.test.ts +0 -128
  247. package/src/__tests__/handlers-unit.test.ts +0 -677
  248. package/src/__tests__/namespace.test.ts +0 -126
  249. package/src/__tests__/rerank.test.ts +0 -141
  250. package/src/__tests__/utils.test.ts +0 -81
  251. package/src/auth.ts +0 -46
  252. package/src/bench/cachly-bench.ts +0 -263
  253. package/src/bench/fixtures.ts +0 -256
  254. package/src/ckg.ts +0 -103
  255. package/src/confidence.ts +0 -38
  256. package/src/embeddings.ts +0 -217
  257. package/src/handlers/advanced.ts +0 -647
  258. package/src/handlers/brain.ts +0 -2622
  259. package/src/handlers/cache.ts +0 -633
  260. package/src/handlers/context.ts +0 -222
  261. package/src/handlers/fedbrain.ts +0 -1232
  262. package/src/handlers/instances.ts +0 -180
  263. package/src/handlers/roadmap.ts +0 -201
  264. package/src/handlers/syndicate.ts +0 -460
  265. package/src/handlers/tco.ts +0 -345
  266. package/src/handlers/team.ts +0 -1249
  267. package/src/index.ts +0 -2815
  268. package/src/namespace.ts +0 -128
  269. package/src/notifier.ts +0 -5
  270. package/src/rerank.ts +0 -148
  271. package/src/search.test.ts +0 -848
  272. package/src/search.ts +0 -1781
  273. package/src/tools.ts +0 -2056
  274. package/src/utils.ts +0 -90
  275. package/test-features.cjs +0 -23
  276. package/tsconfig.json +0 -16
  277. package/vitest.config.ts +0 -14
package/CHANGELOG.md DELETED
@@ -1,653 +0,0 @@
1
- # Changelog – cachly SDK (mcp)
2
-
3
- **Language:** MCP (Model Context Protocol)
4
- **Package:** `@cachly-dev/mcp-server` on **npm**
5
-
6
- > Full cross-SDK release notes: [../CHANGELOG.md](../CHANGELOG.md)
7
-
8
- ---
9
-
10
- ## [0.10.65] – 2026-05-29
11
-
12
- ### Flat-file head-to-head in the benchmark (the proof gets honest)
13
-
14
- - **Cachly-Bench now compares three rankers**, not two: a `flatfile` ranker
15
- (naive term-overlap, no IDF, no length norm, **no quality signal**, recency
16
- tiebreak) joins the BM25 `baseline` and `cachly`. The flat-file ranker is an
17
- honest — in fact *charitable* — stand-in for "an LLM reading its own memory files."
18
- - **Result:** cachly wins the metrics an agent depends on — **Precision@1 +10.0 %,
19
- MRR +4.4 % vs. flat-file** (and +22.2 % / +10.9 % vs. BM25). The report and BENCH.md
20
- are honest about *why* flat-file's Precision@3 / Recall@3 look higher (it ranks the
21
- whole corpus; we did not rig that away).
22
- - **CI-defended:** a new regression test asserts cachly ≥ flat-file on Precision@1
23
- and MRR, and that the flat-file simulation isn't trivially weak (MRR > 0.5).
24
-
25
- ## [0.10.64] – 2026-05-29
26
-
27
- ### The three decisive metrics, now measurable
28
-
29
- - **`brain_metrics(instance_id)`** — new tool (101st). Reports the three metrics
30
- that decide whether the Brain delivers value:
31
- 1. **Time-to-first-recall** — `born_at` (first learn) → `first_recall_at` (first
32
- proven recall), both `SET NX` so only the first event wins.
33
- 2. **Recall-lift** — published Cachly-Bench headline (+22.2 % P@1), CI-defended.
34
- 3. **Team-knowledge-reuse** — % of proven recalls that used a *teammate's* lesson.
35
- - **Cross-author reuse tracking.** `smart_recall` gains an optional `author`. When
36
- you recall a lesson written by someone else, cachly increments
37
- `cross_author_recalls`, records the distinct reuse pair, and surfaces a
38
- "👥 Team knowledge reuse" banner inline — the value only a shared brain delivers.
39
-
40
- ## [0.10.63] – 2026-05-29
41
-
42
- ### Graceful-degradation stability
43
-
44
- - New utilities: `withTimeout`, `scanKeys` (capped + timed-out scan), `normalizeGitPath`.
45
- - `skill_gaps` / `brain_coverage` / `team_expertise_map` / `brain_file_map` now scan
46
- via `scanKeys` — a huge keyspace can no longer hang the agent turn (3 s cap + key cap).
47
- - `brain_from_git` normalizes git rename paths (`src/{old => new}/f.ts`) so file nodes
48
- don't fragment on renames. Removed a dead person-node scan in `skill_gaps`.
49
- - +13 utils tests.
50
-
51
- ## [0.10.62] – 2026-05-29
52
-
53
- ### Hardened Phase 3 tools
54
-
55
- - `brain_who_knows`: reject empty/undefined `topic` (was crashing in `ckgSlug`); clamp `limit` to [1,50].
56
- - `brain_file_map`: filter empty path strings, handle non-array input gracefully.
57
- - +5 stability tests.
58
-
59
- ## [0.10.61] – 2026-05-29
60
-
61
- ### Phase 3C: 100 MCP tools milestone — zero-setup knowledge graph
62
-
63
- - **`brain_from_git` enhanced.** Now auto-builds Person nodes + File nodes from git
64
- history. Every commit that brain_from_git ingests now upserts the author as a
65
- PersonNode and each changed file as a FileNode, with `authored` and `touched` CKG
66
- edges. Run once and your entire org-wide knowledge graph is populated retroactively
67
- — no `author` fields needed in individual `learn_from_attempts` calls.
68
- The git log format is updated to `--name-only` so file attribution happens without
69
- extra git subprocess calls per commit.
70
- - **`skill_gaps()`** — new tool. Scans all lessons and surfaces knowledge blind spots:
71
- - 🔴 **critical**: domains with ≥1 failure and 0 success lessons
72
- - 🟡 **warn**: fewer failures than threshold but still unresolved
73
- - 🔵 **info**: domains with ≥3 lessons but no attribution (brain_who_knows can't help)
74
- Private lessons are excluded from gap analysis.
75
- - **`brain_coverage()`** — new tool. Knowledge-coverage health score 0–100 based on
76
- 4 equally-weighted factors: lesson volume, success ratio, attribution completeness,
77
- and team engagement. Also computes file coverage ratio vs `git ls-files` when run
78
- inside a git repo. Use `skill_gaps` to find what to improve.
79
- - **+6 tests** → 400 total.
80
- - **100 MCP tools** (was 98). 🎯
81
-
82
- ## [0.10.60] – 2026-05-29
83
-
84
- ### Phase 3B: File knowledge map + team expertise overview + visibility scopes
85
-
86
- - **`brain_file_map(file_paths=[...])`** — before touching a file, see who has
87
- worked on it (from `learn_from_attempts` author+file_paths history) and which
88
- lessons reference it. Experts shown with medal rankings 🥇🥈🥉 + touch count +
89
- recency. Related lessons shown with outcome + severity + author badges.
90
- - **`team_expertise_map()`** — full team skills matrix as a markdown table:
91
- contributor · lesson count · top domains · last active. Zero setup: auto-built
92
- from `author` fields. Useful for onboarding and knowledge-gap detection.
93
- - **`visibility: "private" | "team" | "public"`** on `learn_from_attempts`:
94
- `private` lessons are never surfaced in `smart_recall` or team views — only
95
- accessible via exact `recall_best_solution(topic=...)`. Default remains `"team"`.
96
- - **Resilient `smart_recall`**: `apiFetch` for instance info now has a null guard
97
- so semantic search degrades gracefully when API is unreachable.
98
- - **+8 tests** covering visibility storage, private filtering in smart_recall,
99
- brain_file_map expert attribution, and team_expertise_map → 394 total.
100
- - **98 MCP tools** (was 96).
101
-
102
- ## [0.10.59] – 2026-05-29
103
-
104
- ### Phase 3A: Org-wide knowledge graph — "Who Knows What?"
105
-
106
- - **`brain_who_knows(topic="...")`** — new tool (96th). Queries the org-wide
107
- knowledge graph to find your team's top experts on any topic. Returns a ranked
108
- list with lesson count, confidence %, primary domains, and last-active recency.
109
- Medal rankings: 🥇 🥈 🥉 for top 3.
110
- - **Person nodes auto-built.** Every `learn_from_attempts(author="name", ...)` call
111
- now upserts a `PersonNode` in the CKG and creates an `authored` edge from the
112
- person to the lesson concept. No extra setup needed.
113
- - **File nodes auto-built.** `file_paths` in `learn_from_attempts` upsert `FileNode`
114
- entries + `touched` edges from the author → file. Enables future "who worked on X
115
- file?" queries.
116
- - **Author attribution in `smart_recall`.** Results now show `👤 author-handle`
117
- inline whenever the matched lesson carries an author field.
118
- - **`+7` tests** covering `ckgUpsertPersonNode`, `ckgUpsertFileNode`, and the full
119
- `brain_who_knows` flow including ranking order correctness.
120
- - **96 MCP tools** (was 95).
121
-
122
- ## [0.10.58] – 2026-05-29
123
-
124
- ### Zero lint warnings
125
-
126
- - Systematic unused-import cleanup across all handler files and index.ts
127
- - ESLint exits clean: 0 errors, 0 warnings
128
- - `eslint.config.js`: added `varsIgnorePattern: '^_'`
129
-
130
- ## [0.10.57] – 2026-05-29
131
-
132
- ### Critical: fixed broken npm entry point + version hygiene
133
-
134
- - **Fixed the package entry point.** When the shared `telegram-notify` package was
135
- added to the TypeScript build, tsc began emitting to `dist/src/index.js`, but
136
- `bin`/`main`/`start` still pointed at `dist/index.js`. Versions **0.10.50–0.10.52
137
- shipped a non-existent entry point** (`npx @cachly-dev/mcp-server` failed). All
138
- paths now correctly point to `dist/src/index.js`, verified by running the built
139
- binary.
140
- - **Version re-sync.** `package.json`, `server.json` (MCP registry manifest, was
141
- stuck at 0.10.23), `package-lock.json` (was 0.10.49), and `MCP_VERSION` are now
142
- all `0.10.57`. Bumped ahead of the previously published 0.10.55/0.10.56 so
143
- `latest` points forward again instead of regressing to 0.10.52.
144
- - **Accurate tool count (95).** README badge, `server.json`, `package.json`, and CLI
145
- banners claimed 80/89 tools; corrected to the actual 95.
146
-
147
- ## [0.10.52] – 2026-05-29
148
-
149
- - `smart_recall`: CKG traversal as a 3rd retrieval signal — surfaces lessons that
150
- *fixed* causal-graph-similar problems even when vocabulary differs (🕸️ badge).
151
- - Cachly-Bench corpus expanded with a governance adversarial pair; headline lift
152
- rose to **Precision@1 +22.2%, MRR +10.9%**.
153
-
154
- ## [0.10.51] – 2026-05-29
155
-
156
- - `team_confirm`: human review (🛡️ senior / ✔️ peer) raises a lesson's recall
157
- ranking — confirmed knowledge outranks unreviewed auto-learned entries.
158
-
159
- ## [0.10.50] – 2026-05-29
160
-
161
- - `smart_recall`: unified keyword + semantic results into one hybrid-ranked list.
162
- - "Brain saved you here" banner surfaces estimated time saved per proven recall.
163
-
164
- ## [0.10.49] – 2026-05-29
165
-
166
- - Persist JWT after device flow (telemetry showed zero authenticated calls after
167
- restarts). Quality-aware reranking + Cachly-Bench (the moat proof) introduced.
168
-
169
- > Note: 0.10.39–0.10.48 and 0.10.53–0.10.56 were interim/parallel publishes; see
170
- > git history for details. 0.10.57 supersedes all of them.
171
-
172
- ---
173
-
174
- ## [0.10.38] – 2026-05-25
175
-
176
- ### `cachly status` — Brain health at a glance
177
-
178
- - New CLI command `npx @cachly-dev/mcp-server@latest status`: shows lessons, recalls, quality score, Brain level, team contributors (with count), and your personal invite link — all in one terminal card.
179
-
180
- ---
181
-
182
- ## [0.10.37] – 2026-05-25
183
-
184
- ### Viral wow moments — invite link + first-recall tweet button
185
-
186
- - **`cachly invite` fixed** — previously called a non-existent `/api/v1/team/invite` endpoint (always 404). Now calls `GET /api/v1/referral/me` and shows your personal referral link with pre-written Slack DM + tweet text. One command = shareable invite.
187
- - **First-recall email** — the "Your AI just remembered" email now includes a one-click `𝕏 Share this moment` tweet button and a `🤝 Share with your team` section with your personal referral link (shows only if referral code exists). The highest-value wow moment now has a viral exit.
188
-
189
- ---
190
-
191
- ## [0.10.36] – 2026-05-25
192
-
193
- ### ESLint flat-config (ESLint 10 / v9 API)
194
-
195
- - Added `eslint` v9 and `typescript-eslint` v8 as devDependencies.
196
- - Created `eslint.config.js` using ESLint flat-config API — replaces the legacy `--ext .ts` syntax that broke with ESLint 10.
197
- - Updated lint script: `eslint src --ext .ts` → `eslint src`.
198
- - Rules: `no-explicit-any` warn, `no-unused-vars` warns but ignores `_`-prefixed params.
199
-
200
- ---
201
-
202
- ## [0.10.35] – 2026-05-25
203
-
204
- ### Docs catch-up
205
-
206
- - Backfilled CHANGELOG entries for 0.10.25–0.10.34 (they were missing).
207
- - README now documents the `index` and `learn-git` CLI commands plus the PR-merge auto-learn GitHub Action tip.
208
-
209
- ---
210
-
211
- ## [0.10.34] – 2026-05-25
212
-
213
- ### `learn-git` CLI — auto-learn from commits (PR-merge ready)
214
-
215
- - New command `npx @cachly-dev/mcp-server learn-git [./repo] [--max-commits N]` runs `brain_from_git` over recent commits and fires the `brain_from_git` telemetry event. Building block for PR-merge auto-learning in CI.
216
-
217
- ---
218
-
219
- ## [0.10.33] – 2026-05-25
220
-
221
- ### Close the setup funnel
222
-
223
- - The setup wizard now fires `setup_completed` at the end of a successful run (with `instance_id` + JWT attribution), so the onboarding funnel `setup_started → setup_completed` is finally traceable.
224
-
225
- ---
226
-
227
- ## [0.10.32] – 2026-05-25
228
-
229
- ### Viral moments: shareable digest card + team first-briefing
230
-
231
- - `cachly digest` now prints a tweet-ready card with a pre-filled X/Twitter URL (lessons, recalls, tokens saved, top lesson, brain level).
232
- - **Team-virality**: when `session_start` runs for a user who has lessons from teammates but has never seen them, a one-time "Your team's AI brain has been briefing you" section surfaces exactly which teammate solved what.
233
-
234
- ---
235
-
236
- ## [0.10.31] – 2026-05-25
237
-
238
- ### Unblock npm publish — tests green
239
-
240
- - `vitest.config.ts` excludes `**/__tests__/e2e/**` from the unit-test suite (E2E tests require live credentials and were failing CI, blocking every publish since 0.10.27).
241
- - CLI with no args now writes the setup banner to **stdout** and exits 0 (was stderr + exit 1, invisible to callers).
242
- - `process.exit(0)` guarded with an `_isMain` check so importing modules never trigger early exit.
243
-
244
- ---
245
-
246
- ## [0.10.30] – 2026-05-24
247
-
248
- ### CLAUDE.md delivers a visible briefing
249
-
250
- - CLAUDE.md template now calls `session_start` (with `workspace_path`) as the first action of every conversation and `session_end` as the last, so the brain briefing is visible to the user instead of running silently.
251
-
252
- ---
253
-
254
- ## [0.10.29] – 2026-05-24
255
-
256
- ### Fix: recall counting + git bootstrap actually fires
257
-
258
- - `smart_recall` (the primary recall tool in CLAUDE.md) now also fires `recall_best_solution` when it returns lessons, so `BrainRecallCount` reflects real usage.
259
- - Auto-session-start now passes `process.cwd()` as `workspace_path` so the git auto-bootstrap introduced in 0.10.28 actually triggers.
260
-
261
- ---
262
-
263
- ## [0.10.28] – 2026-05-24
264
-
265
- ### Auto-bootstrap the brain from git on first session
266
-
267
- - On a first session with a `workspace_path`, `brain_from_git` runs automatically and its summary is appended inline to the `session_start` briefing — the brain learns from your repo history with zero setup.
268
-
269
- ---
270
-
271
- ## [0.10.27] – 2026-05-24
272
-
273
- ### Fix: session_start counts as a recall
274
-
275
- - `session_start` now fires `recall_best_solution` when the brain has lessons (not the first-session welcome), so the dashboard activation nudge clears and the first-recall email fires for active users.
276
-
277
- ---
278
-
279
- ## [0.10.26] – 2026-05-14
280
-
281
- ### Fix: brain_from_git + brain_predict telemetry
282
-
283
- - `brain_from_git` and `brain_predict` telemetry events were dead code paths and never fired; both now correctly send per-tool telemetry.
284
-
285
- ---
286
-
287
- ## [0.10.25] – 2026-05-14
288
-
289
- ### Per-tool telemetry events for all brain tools
290
-
291
- - Every brain tool (`session_start`, `session_end`, `learn_from_attempts`, `smart_recall`, `recall_best_solution`) now emits a dedicated telemetry event for accurate funnel + report breakdowns.
292
-
293
- ---
294
-
295
- ## [0.10.24] – 2026-05-14
296
-
297
- ### Funnel visibility + server.json version sync
298
-
299
- - `first_call_success` now includes `instance_id` for full per-tenant attribution in the `mcp_events` table.
300
- - `server.json` version bumped to 0.10.24 — Smithery and MCP directory indexes now show the current version.
301
-
302
- ---
303
-
304
- ## [0.10.23] – 2026-05-14
305
-
306
- ### Full activation funnel + UTM tracking
307
-
308
- - **`sendFunnelEvent` carries JWT**: all funnel events (`setup_started`, `device_flow_completed`, `first_call_success`) now include the JWT so the backend can resolve them to a tenant. Activation funnel is now fully attributable per user.
309
- - **`cachly share` UTM link**: the generated tweet now includes `https://cachly.dev?ref=share&utm_source=x&utm_medium=social&utm_campaign=cli-share` so shares can be traced back to new signups.
310
-
311
- ---
312
-
313
- ## [0.10.22] – 2026-05-14
314
-
315
- ### Activation telemetry, health Redis ping, join backup
316
-
317
- - **`first_call_success` telemetry**: fires once per process on the first successful brain/context tool call. Combined with `setup_started → device_flow_completed → first_call_success`, the full activation funnel is now visible.
318
- - **`cachly health` Redis PING**: section 3 now opens an actual Redis connection and sends `PING` — verifies end-to-end connectivity, not just instance metadata.
319
- - **`cachly join` corrupt JSON**: backs up corrupted config files to `.bak` before overwriting, matching the `mergeMcpConfig` behavior.
320
-
321
- ---
322
-
323
- ## [0.10.21] – 2026-05-14
324
-
325
- ### Stability hardening — corrupt configs, silent auth failures, upgrade validation
326
-
327
- - **`mergeMcpConfig` corrupt JSON**: instead of silently overwriting, backs up the corrupted file to `.bak` and prints a warning so the user knows their previous config was preserved.
328
- - **`getConnection` auth failure**: if the `/connection` endpoint returns 401/403, throws an actionable "run `cachly setup` to refresh credentials" error instead of silently attempting a password-less Redis connect that fails with cryptic `NOAUTH`.
329
- - **`upgrade` version validation**: validates that the npm registry response contains a valid semver string before comparing — prevents false "update available" from a malformed registry response.
330
-
331
- ---
332
-
333
- ## [0.10.20] – 2026-05-14
334
-
335
- ### Edge case hardening — silent failures eliminated
336
-
337
- - **`getConnection` status messages**: `failed`, `suspended`, and `pending_payment` now each get a specific actionable message instead of the generic "not reachable" fallback. Users know exactly what happened and where to go to fix it.
338
- - **`setup` write errors**: config file write failures now print a clear warning with the OS error and a recovery hint instead of silently succeeding.
339
- - **`join` write errors**: permission and unexpected filesystem errors are surfaced per-file instead of silently swallowed. Expected "editor not installed" cases are still quiet.
340
- - **Auto-provision telemetry**: if free-tier auto-provision returns a non-2xx response, a `auto_provision_failed` telemetry event fires so the team can detect new-user activation failures in real time.
341
-
342
- ---
343
-
344
- ## [0.10.19] – 2026-05-14
345
-
346
- ### Fix: accurate provisioning time estimate
347
-
348
- - `getConnection` no longer says "30 seconds" — the message now correctly says "1–3 minutes" for first-time provisioning. This prevents users from thinking their instance failed just because the first tool call waited 25 s and still saw `provisioning`.
349
- - Dashboard instance detail page provisioning banner updated to match ("1–3 minutes" instead of "under 60 seconds").
350
-
351
- ---
352
-
353
- ## [0.10.17] – 2026-05-14
354
-
355
- ### `cachly upgrade` — check for newer versions
356
-
357
- - **`cachly upgrade`** — fetches the latest version from the npm registry and compares with the running version. If outdated, shows current vs. latest and the one-liner to update (`npx @cachly-dev/mcp-server@latest setup`). No auth required.
358
- - Added `upgrade` to no-auth bypass list and splash screen.
359
-
360
- ### Dashboard — Brain Badge widget
361
-
362
- - Instance detail page now shows a live badge preview + copy-ready Markdown and HTML snippets directly in the dashboard. No CLI needed.
363
- - Badge renders as `![cachly Brain](https://api.cachly.dev/api/v1/badge/<id>)` — one click to copy.
364
-
365
- ---
366
-
367
- ## [0.10.16] – 2026-05-14
368
-
369
- ### `cachly join` — accept a Brain invite in one command
370
-
371
- - **`cachly join <token>`** — the missing half of the invite loop. Accepts a shared Brain invite link:
372
- 1. Fetches invite info (public, no auth) — shows Brain name, tier, expiry
373
- 2. Prompts for confirmation
374
- 3. If no JWT: starts Device Flow sign-in (browser, 10 s)
375
- 4. Writes `CACHLY_BRAIN_INSTANCE_ID` into every detected editor MCP config (`.mcp.json`, `.cursor/mcp.json`, `.windsurf/mcp.json`, `.vscode/mcp.json`, `~/.claude/mcp.json`)
376
- 5. Suggests `cachly badge` as next step
377
- - Added `join` to no-auth bypass list
378
- - Splash screen updated to list `join` command
379
-
380
- ### MCP Directory metadata
381
-
382
- - **`smithery.yaml`** — added `name` + `description` block for Smithery listing quality
383
- - **`glama.json`** — added keywords: `cline`, `zed`, `brain-from-git`, `failure-prediction`, `memory-crystals`, `readme-badge`, `incremental-learning`
384
- - **`server.json`** — version bumped to `0.10.15`
385
-
386
- ---
387
-
388
- ## [0.10.15] – 2026-05-14
389
-
390
- ### Brain Badge
391
-
392
- - **`cachly badge`** — new CLI command that outputs the Markdown + HTML snippet for embedding a live lesson-count badge in any README or website. Badge SVG served by `GET /api/v1/badge/:instanceId` (public, no auth, rate-limited 30 req/min, result cached 1 h in instance Valkey). Badge shows lesson count only — no topic names or content.
393
- - **Setup CTA** — both setup flows now print `npx ... badge` as the next suggested action after successful configuration.
394
- - **README** — Brain Badge section added with copy-paste Markdown snippet and explanation. Badge shield added to header.
395
-
396
- ---
397
-
398
- ## [0.10.8] – 2026-05-14
399
-
400
- ### Viral CLI — 6 new commands
401
-
402
- - **`cachly demo`** — zero-signup Brain preview. Reads local `.git/` history, classifies commits by type (fix/feat/security/deploy/refactor/perf), and renders an ASCII table showing commit count, date range, contributors, per-category bar charts, and sample security + bug-fix lessons. No account or token required — works before any sign-in.
403
-
404
- - **`cachly share`** — shareable ASCII stats card. Fetches live Brain stats (lessons, recalls, tokens/cost saved, Brain level) and generates a tweet-ready text block with `#AIMemory #ClaudeCode #Cursor` hashtags. Requires `CACHLY_JWT`.
405
-
406
- - **`cachly digest`** — weekly Brain summary. Displays a formatted summary table: lessons stored, recalls performed, tokens saved, estimated cost saved, Brain level, top team contributors, and top-recalled lessons. Includes a crontab snippet for automated Monday morning delivery. Requires `CACHLY_JWT`.
407
-
408
- - **`cachly invite [email]`** — team referral. Accepts an email address as argument or via interactive prompt, then POSTs to `/api/v1/team/invite`. Handles 409 (already a member) gracefully. Requires `CACHLY_JWT`.
409
-
410
- - **`cachly health`** — connection check. Validates JWT (decode + expiry), tests API reachability, checks Brain instance status, scans all editor MCP config files (Claude Code, Cursor, Windsurf, VS Code, Zed, Continue), and verifies the git post-commit hook. Exits 1 if any checks fail — CI-friendly.
411
-
412
- - **No-args splash screen** — running `npx @cachly-dev/mcp-server@latest` in a TTY now shows a violet-framed help card listing all commands instead of silently starting the MCP server.
413
-
414
- ### brain_from_git — Incremental mode + progress feedback
415
-
416
- - **Incremental by default** — after the first full run, subsequent calls only process commits since the last ingested SHA (stored in Redis with 90-day TTL). Repeated calls on active repos are near-instant.
417
- - **Progress output** — reports progress to stderr every ~10% of commits (`⏳ Processing N/total…`) and prints a completion summary (`✅ brain_from_git complete: N/total commits ingested`).
418
- - New `incremental` boolean parameter (default `true`). Pass `false` to force a full reprocess.
419
-
420
- ### README
421
-
422
- - Complete rewrite: `cachly demo` featured at the very top with embedded ASCII preview output, all 6 CLI commands documented, Zed manual-setup section added, competitor table updated, FAQ expanded with incremental `brain_from_git` Q&A.
423
-
424
- ---
425
-
426
- ## [0.10.0] – 2026-05-08
427
-
428
- ### Zero-Friction Onboarding
429
-
430
- - **Global Claude Code config** — `setup` now writes `~/.claude/mcp.json` (global) in addition to project-level `.mcp.json`. cachly is available in every Claude Code project after running setup once — no per-project re-configuration needed. Existing MCP servers in the global config are preserved (merge, not overwrite).
431
-
432
- - **Device Flow authentication** — No credentials required in MCP config. On the first tool call without a `CACHLY_JWT`, the server starts an OAuth Device Flow: the AI shows a one-click sign-in URL in chat, polls for completion, exchanges the token for a long-lived API key, and auto-provisions a Brain instance. Fully transparent to the user.
433
-
434
- - **Fully automatic sessions** — `session_start` and `session_end` are called automatically (on first tool call and on SIGTERM). Users never need to call them manually.
435
-
436
- - **Auto project indexing** — On session start, the project is indexed in the background if the last index is older than 24 hours. Zero extra calls.
437
-
438
- ### CLAUDE.md Rules — Mandatory Brain Behavior
439
-
440
- The CLAUDE.md block written by `setup` now instructs the AI with binding rules (not suggestions):
441
-
442
- - `smart_recall` before every task
443
- - `causal_trace` before grepping/reading files when debugging
444
- - `brain_predict` before deploys, migrations, and dependency upgrades
445
- - `remember_context` before editing any file (WIP registry)
446
- - `learn_from_attempts` after every fix, deploy, or discovery
447
-
448
- ### SEO & Search AI Optimization
449
-
450
- - **`llms.txt`** added — AI crawler standard file with complete tool catalog (89 tools + descriptions), competitor comparison, architecture overview. Indexed by Perplexity, ChatGPT Search, Claude web search.
451
- - **README** — FAQ section, competitor table (cachly vs mem0 vs MemGPT vs CLAUDE.md), `autopilot` tool documented prominently.
452
- - **GitHub topics** set: `mcp`, `mcp-server`, `ai-memory`, `persistent-memory`, `claude-code`, `cursor`, `github-copilot`, `causal-trace`, `developer-tools`, `typescript`.
453
- - **package.json** — description and keywords updated: `causal-trace`, `root-cause-analysis`, `failure-prediction`, `long-term-memory`, `llm-memory`, `claude-code-memory`.
454
-
455
- ### Auth Module
456
-
457
- - `jwtExpiryMs`, `checkJwt`, `handleApiError` extracted from `index.ts` into `src/auth.ts`
458
- - 23 unit tests added for auth module (Vitest)
459
- - Publish workflow now runs tests before building
460
-
461
- ### Bug Fixes
462
-
463
- - `safeJsonParse` applied to all `JSON.parse` calls in `advanced.ts` and `syndicate.ts`
464
- - Removed dead warm-up code
465
-
466
- ---
467
-
468
- ## [0.9.3] – 2026-05-06
469
-
470
- ### 🧠 10x Vision Phase 2 — Layers 3, 5 & 6
471
-
472
- #### Layer 3 — Multi-Agent Deliberation Chamber (MADC)
473
-
474
- New tool: **`madc_deliberate`** — When conflicting lessons exist for a topic, run deliberation between 6 specialist expert agents (InfraAgent, AuthAgent, DeployAgent, DatabaseAgent, DebugAgent, APIAgent). Each agent votes based on its CKG domain coverage. Unanimous → loser superseded. Split → contested flag. Resolutions stored as permanent CKG nodes.
475
-
476
- Auto-trigger: `learn_from_attempts` now detects contradictions, writes a `contradicts` CKG edge, and suggests `madc_deliberate` automatically.
477
-
478
- #### Layer 5 — Continuous Learning Stream (CLS)
479
-
480
- Two new tools for learning **without `session_end`**:
481
-
482
- - **`cls_ingest`** — Ingest learning signals from 3 sources: `git_commit` (commit message + files → CKG edges + lesson), `ci_outcome` (green after red → confirmed fix at 75% confidence), `ide_diagnostic` (compiler error + fix pair → instant lesson + CKG `fixes` edge).
483
-
484
- - **`cls_install_hooks`** — Outputs a ready-to-paste git post-commit hook + GitHub Actions step. Once installed: every commit and CI run feeds the brain automatically. Zero `session_end` required.
485
-
486
- #### Layer 6 — Federation Protocol (FedBrain)
487
-
488
- Four new tools for AI-to-AI knowledge transfer with cryptographic provenance:
489
-
490
- - **`fedbrain_contribute`** — Contribute a lesson to the global commons with a HMAC-signed knowledge certificate (domain fingerprint + confidence + outcome chain hash).
491
-
492
- - **`fedbrain_search`** — Context-weighted search: your domain fingerprint (from contributed lessons + `context_hints`) weights results from brains with matching tech stacks higher. Shows Gold Standard badges (10+ confirms).
493
-
494
- - **`fedbrain_confirm`** — Confirm that a syndicated lesson worked. Propagates back to global commons (increments `confirm_count`). Updates local CKG confidence. At 10 independent confirmations → 🏆 Gold Standard.
495
-
496
- - **`fedbrain_status`** — Dashboard: contributed lessons, confirm history, Gold Standard count, pending propagations.
497
-
498
- #### Summary
499
-
500
- | Layer | Tool(s) | What it does |
501
- |-------|---------|--------------|
502
- | 3 (MADC) | `madc_deliberate` | Expert agent voting on contradicting beliefs |
503
- | 5 (CLS) | `cls_ingest`, `cls_install_hooks` | Continuous learning without session_end |
504
- | 6 (FedBrain) | `fedbrain_contribute`, `fedbrain_search`, `fedbrain_confirm`, `fedbrain_status` | Federated knowledge with crypto certificates |
505
-
506
- Total tools: **63** (was 54 in v0.9.2)
507
-
508
- ---
509
-
510
- ## [0.9.2] – 2026-05-06
511
-
512
- ### 🧠 10x Vision Phase 1 — Layers 1, 2, 4 & 7
513
-
514
- - **Layer 1 (CKG):** Redis-backed Causal Knowledge Graph. Typed edges: `fixes`, `requires`, `co-occurs`, `causes`, `contradicts`.
515
- - **Layer 2 (BUE):** `learn_from_attempts` now writes CKG edges with Bayesian confidence `(s+1)/(t+2)`.
516
- - **Layer 4 (PPE):** `brain_predict` — CKG traversal + text fallback for failure prediction.
517
- - **Layer 7 (MCM):** Domain coverage map in `session_start` with confidence bars.
518
- - New: `brain_search` (BM25+ over all brain data), `ckg_inspect` (BFS with confidence bars).
519
- - `causal_trace` upgraded: CKG graph-first, text similarity fallback.
520
-
521
- ---
522
-
523
-
524
-
525
- ### 🌐 Knowledge Syndication — The Global AI Brain
526
-
527
- The first collective intelligence layer for AI memory.
528
- Every instance contributes. Every instance learns. Privacy-preserving by design.
529
-
530
- #### New Tools
531
-
532
- - **`syndicate`** — Contribute a verified lesson to the **global Knowledge Commons**. Your identity is a one-way HMAC hash — completely anonymous. The lesson is immediately searchable by every other AI brain on the planet. Call this after any `learn_from_attempts` that is worth sharing: critical bugs, deployment gotchas, architecture discoveries. This is how individual knowledge becomes collective intelligence.
533
-
534
- - **`syndicate_search`** — Search the **global Knowledge Commons** for solutions discovered by the entire community. Results ranked by `confirm_count` (trust score) then recency. Use this *before* debugging any unknown issue — someone in the global brain likely solved it already. Returns: topic, what worked, what failed, trust bar `████████░░ ×47`.
535
-
536
- #### Privacy Design
537
- - Contributors identified only by HMAC-SHA256 of user_id — irreversible, not linkable to any identity
538
- - Absolute file paths stripped from all content before storage
539
- - Community flagging: lessons with 3+ flags are hidden globally
540
- - Trust scoring: `confirm_count` rises as independent instances verify a lesson works
541
-
542
- ---
543
-
544
- ## [0.6.1] – 2026-05-04
545
-
546
- ### 🧠 Cognitive Cache — v0.6 Major Feature
547
-
548
- The first AI Memory system with **reasoning over its own knowledge**. No other cache has ever done this.
549
-
550
- #### New Tools
551
-
552
- - **`memory_consolidate`** — Weekly garbage collector for your AI Brain. Detects contradictions (same topic, different outcomes), merges duplicate lesson clusters, flags stale entries (0 recalls in N days). Like `git gc` for knowledge. Returns a full consolidation report with before/after counts.
553
-
554
- - **`brain_diff`** — `git log` for your AI Brain. Shows exactly what changed since a given time window (`"7d"`, `"30d"`, ISO-8601). New lessons, updated lessons, recalled lessons. Perfect for weekly reviews: *"What did my AI learn this week?"*
555
-
556
- - **`causal_trace`** — Root Cause Analysis through memory. Given a problem description, scores all lessons by relevance, reconstructs the failure chain (root → intermediate → symptom), and surfaces the exact solution that worked before. *"auth breaks after restart"* → root: `k8s:namespace-terminating` → via: `keycloak:jwks-race` → fix: `PollUntilContextTimeout 3min`. No other system can do this.
557
-
558
- - **`knowledge_decay`** — Confidence scoring per lesson. Age × recall-frequency × outcome = decay score (0–100%). Visual bars: `████░░░░░░ 40%`. Lessons recalled recently score high; 90-day-old untouched lessons score low. Run before a big refactor to know which knowledge to trust.
559
-
560
- - **`autopilot`** — Generates a `CLAUDE.md` / `copilot-instructions.md` that turns any AI (Claude, Cursor, Copilot, Windsurf, Gemini) into a self-managing Brain operator. No manual `session_start`, `learn_from_attempts`, or `session_end` calls ever again. One command. Every AI. Forever.
561
-
562
- ---
563
-
564
- ## [0.5.80] – 2026-05-01
565
-
566
-
567
-
568
- ### Added
569
-
570
- - **RTL language support (Arabic, Hebrew)** — word-level tokenization with Unicode ranges U+0590–U+05FF (Hebrew) and U+0600–U+06FF (Arabic); Arabic light stemmer strips definite article `ال` and single-char prefix particles (`و`,`ب`,`ل`,`ف`,`ك`)
571
- - **Arabic and Hebrew stopwords** — ~60 high-frequency function words per language added to the STOPWORDS set
572
- - **Romanization matching** — katakana segments now additionally emit Hepburn romaji tokens at index time (e.g. `デプロイ` → `depuroi`), so users can query Japanese docs using romaji
573
- - **Full katakana→romaji converter** — handles digraphs (シャ→sha, チェ→che, ファ→fa), voiced consonants, geminate consonants (ッ), long vowel marks (ー), and loanword combinations
574
- - **Cross-language retrieval** — 130+ tech term synonyms spanning EN↔JA↔ZH↔KO↔AR↔HE; searching `deploy` now finds docs containing `デプロイ`, `部署`, `배포` and vice versa; applies bidirectionally at tokenize time (zero runtime overhead)
575
- - **73 unit tests** all passing — new test suites for `katakanaToRomaji`, `arabicLightStem`, `expandCrossLingual`, RTL tokenization, and cross-lingual expansion
576
-
577
- ---
578
-
579
- ## [0.5.36] – 2026-04-22
580
-
581
- ### Added
582
-
583
- - **Roadmap tools** — `roadmap_add`, `roadmap_update`, `roadmap_list`, `roadmap_next` for persistent project planning inside the Brain
584
- - `session_start` now shows open roadmap items automatically
585
-
586
- ---
587
-
588
- ## [0.5.35] – 2026-04-20
589
-
590
- ### Added
591
-
592
- - **CJK language support** — Chinese (Simplified + Traditional), Japanese, Korean
593
- - Character bigram extraction for CJK Unicode ranges
594
- - ~140 CJK stopwords (Chinese particles, Japanese hiragana particles, Korean postpositions)
595
-
596
- ---
597
-
598
-
599
-
600
- ### Added
601
-
602
- - **`setup` command** — interactive zero-arg CLI wizard (`npx @cachly-dev/mcp-server setup`):
603
- - Reads `CACHLY_JWT` from env or prompts interactively via readline
604
- - Fetches instances from API; presents list when multiple exist
605
- - Auto-detects installed editors (Cursor, Windsurf, VS Code, Continue.dev) by checking for their config directories
606
- - Writes the correct MCP config file for each detected editor in one step
607
- - Always writes/updates `CLAUDE.md` (idempotent via `<!-- cachly-brain-start/end -->` markers)
608
- - **`init` command** now idempotent — re-running `npx @cachly-dev/mcp-server init` updates the brain block in `CLAUDE.md` instead of appending a duplicate
609
- - Shared helpers: `buildMcpConfig()`, `buildClaudeMdBlock()`, `writeClaudeMd()` — used by both `setup` and `init`
610
-
611
- ### Fixed
612
-
613
- - `init` no longer duplicates the brain block in `CLAUDE.md` when run multiple times
614
- - Correct package name `@cachly-dev/mcp-server` used consistently (was `@cachly-dev/mcp` in generated configs)
615
-
616
- ---
617
-
618
- ## [0.1.1] – 2026-04-07
619
-
620
- ### Fixed
621
-
622
- - Broken `index_project` tool schema – properties were accidentally placed outside the `TOOLS` array
623
- - Unused `openai` variable removed from `cache_warmup` handler
624
- - `readdir` type mismatch (`Dirent<string>` vs. `NonSharedBuffer`) fixed
625
- - Version bumped to `0.3.0` in server metadata
626
-
627
- ---
628
-
629
- ## [0.1.0] – 2026-04-07
630
-
631
- Initial release.
632
-
633
- ### Added
634
-
635
- - MCP tool: `cache_set` – store a value with optional TTL
636
- - MCP tool: `cache_get` – retrieve a cached value
637
- - MCP tool: `cache_delete` – remove a key
638
- - MCP tool: `semantic_search` – vector-similarity lookup for LLM response caching
639
- - MCP tool: `cache_clear` – flush namespace or entire cache
640
- - Compatible with Claude Desktop, Cursor, Windsurf, and any MCP-capable host
641
- - API-key-based authentication
642
- - EU data residency (German servers, DSGVO compliant)
643
-
644
- ### Known limitations
645
-
646
- - ~~Streaming tools not yet supported~~ (tracked for a future release)
647
-
648
- ---
649
-
650
- ## [Unreleased]
651
-
652
- See [../CHANGELOG.md](../CHANGELOG.md) for upcoming features.
653
-
package/Dockerfile DELETED
@@ -1,16 +0,0 @@
1
- FROM node:22-alpine AS builder
2
- WORKDIR /app
3
- COPY package*.json tsconfig*.json ./
4
- RUN npm ci --ignore-scripts
5
- COPY src/ ./src/
6
- RUN npm run build
7
-
8
- FROM node:22-alpine
9
- WORKDIR /app
10
- COPY package*.json ./
11
- RUN npm ci --omit=dev --ignore-scripts
12
- COPY --from=builder /app/dist/ ./dist/
13
- ENV NODE_ENV=production
14
- ENV PORT=3000
15
- EXPOSE 3000
16
- ENTRYPOINT ["node", "dist/index.js"]