memory-journal-mcp 6.1.2 → 6.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/README.md +44 -28
  2. package/dist/{chunk-X4SWFATC.js → chunk-BI4ZNSKA.js} +38 -24
  3. package/dist/{chunk-HCEWINSB.js → chunk-N6EBIDN7.js} +99 -102
  4. package/dist/cli.js +2 -2
  5. package/dist/index.js +2 -2
  6. package/dist/tools-WPRY5MJ6.js +2 -0
  7. package/package.json +10 -1
  8. package/skills/github-commander/SKILL.md +151 -0
  9. package/skills/github-commander/config/project-config.example.md +125 -0
  10. package/skills/github-commander/workflows/code-quality-audit.md +80 -0
  11. package/skills/github-commander/workflows/full-audit.md +134 -0
  12. package/skills/github-commander/workflows/issue-triage.md +239 -0
  13. package/skills/github-commander/workflows/milestone-sprint.md +81 -0
  14. package/skills/github-commander/workflows/perf-audit.md +142 -0
  15. package/skills/github-commander/workflows/pr-review.md +123 -0
  16. package/skills/github-commander/workflows/security-audit.md +170 -0
  17. package/skills/github-commander/workflows/update-deps.md +109 -0
  18. package/.dockerignore +0 -139
  19. package/.gitattributes +0 -20
  20. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -95
  21. package/.github/ISSUE_TEMPLATE/config.yml +0 -11
  22. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -110
  23. package/.github/ISSUE_TEMPLATE/question.md +0 -78
  24. package/.github/aw/actions-lock.json +0 -14
  25. package/.github/copilot-instructions.md +0 -122
  26. package/.github/dependabot.yml +0 -93
  27. package/.github/pull_request_template.md +0 -135
  28. package/.github/workflows/README.md +0 -133
  29. package/.github/workflows/agentics-maintenance.yml +0 -141
  30. package/.github/workflows/auto-release.yml +0 -68
  31. package/.github/workflows/ci-health-monitor.lock.yml +0 -1121
  32. package/.github/workflows/ci-health-monitor.md +0 -87
  33. package/.github/workflows/codeql.yml +0 -41
  34. package/.github/workflows/dependabot-auto-merge.yml +0 -42
  35. package/.github/workflows/dependency-maintenance.lock.yml +0 -1182
  36. package/.github/workflows/dependency-maintenance.md +0 -147
  37. package/.github/workflows/docker-publish.yml +0 -254
  38. package/.github/workflows/docs-drift-detector.lock.yml +0 -1142
  39. package/.github/workflows/docs-drift-detector.md +0 -115
  40. package/.github/workflows/lint-and-test.yml +0 -60
  41. package/.github/workflows/publish-npm.yml +0 -85
  42. package/.github/workflows/secrets-scanning.yml +0 -32
  43. package/.github/workflows/security-update.yml +0 -127
  44. package/.gitleaks.toml +0 -9
  45. package/.prettierignore +0 -21
  46. package/.prettierrc +0 -33
  47. package/.scout-ignore +0 -12
  48. package/.trivyignore +0 -21
  49. package/CHANGELOG.md +0 -1814
  50. package/CODE_OF_CONDUCT.md +0 -133
  51. package/CONTRIBUTING.md +0 -263
  52. package/DOCKER_README.md +0 -331
  53. package/Dockerfile +0 -128
  54. package/SECURITY.md +0 -227
  55. package/UNRELEASED.md +0 -1
  56. package/dist/tools-T4U5A3X4.js +0 -2
  57. package/docker-compose.yml +0 -71
  58. package/docs/README.md +0 -18
  59. package/docs/agentic-journal-synergy.md +0 -175
  60. package/docs/copilot-setup.md +0 -72
  61. package/eslint.config.js +0 -110
  62. package/mcp-config-example.json +0 -21
  63. package/playwright.config.ts +0 -35
  64. package/releases/v2.1.0.md +0 -220
  65. package/releases/v2.2.0.md +0 -168
  66. package/releases/v3.0.0.md +0 -237
  67. package/releases/v3.1.0.md +0 -104
  68. package/releases/v3.1.1.md +0 -42
  69. package/releases/v3.1.2.md +0 -40
  70. package/releases/v3.1.3.md +0 -64
  71. package/releases/v3.1.4.md +0 -32
  72. package/releases/v3.1.5.md +0 -44
  73. package/releases/v4.0.0.md +0 -71
  74. package/releases/v4.1.0.md +0 -88
  75. package/releases/v4.2.0.md +0 -90
  76. package/releases/v4.3.0.md +0 -92
  77. package/releases/v4.3.1.md +0 -69
  78. package/releases/v4.4.0.md +0 -120
  79. package/releases/v4.4.1.md +0 -33
  80. package/releases/v4.4.2.md +0 -31
  81. package/releases/v4.5.0.md +0 -116
  82. package/releases/v5.0.0.md +0 -105
  83. package/releases/v5.0.1.md +0 -25
  84. package/releases/v5.1.0.md +0 -83
  85. package/releases/v5.1.1.md +0 -10
  86. package/releases/v6.0.0.md +0 -48
  87. package/releases/v6.0.1.md +0 -36
  88. package/releases/v6.1.0.md +0 -68
  89. package/releases/v6.1.1.md +0 -30
  90. package/releases/v6.1.2.md +0 -23
  91. package/scripts/generate-server-instructions.ts +0 -306
  92. package/scripts/server-instructions-function-body.ts +0 -107
  93. package/scripts/server-instructions-gotchas.ts +0 -45
  94. package/server.json +0 -42
  95. package/social-preview.png +0 -0
  96. package/src/auth/auth-context.ts +0 -78
  97. package/src/auth/authorization-server-discovery.ts +0 -263
  98. package/src/auth/errors.ts +0 -215
  99. package/src/auth/index.ts +0 -58
  100. package/src/auth/middleware.ts +0 -392
  101. package/src/auth/oauth-resource-server.ts +0 -170
  102. package/src/auth/scope-map.ts +0 -46
  103. package/src/auth/scopes.ts +0 -256
  104. package/src/auth/token-validator.ts +0 -293
  105. package/src/auth/transport-agnostic.ts +0 -164
  106. package/src/auth/types.ts +0 -372
  107. package/src/cli.ts +0 -279
  108. package/src/codemode/api-constants.ts +0 -263
  109. package/src/codemode/api.ts +0 -302
  110. package/src/codemode/auto-return.ts +0 -65
  111. package/src/codemode/index.ts +0 -47
  112. package/src/codemode/sandbox-factory.ts +0 -144
  113. package/src/codemode/sandbox.ts +0 -220
  114. package/src/codemode/security.ts +0 -155
  115. package/src/codemode/types.ts +0 -228
  116. package/src/codemode/worker-sandbox.ts +0 -277
  117. package/src/codemode/worker-script.ts +0 -239
  118. package/src/constants/icons.ts +0 -183
  119. package/src/constants/server-instructions.md +0 -166
  120. package/src/constants/server-instructions.ts +0 -514
  121. package/src/database/adapter-factory.ts +0 -16
  122. package/src/database/core/entry-columns.ts +0 -10
  123. package/src/database/core/interfaces.ts +0 -188
  124. package/src/database/core/schema.ts +0 -152
  125. package/src/database/sqlite-adapter/backup.ts +0 -167
  126. package/src/database/sqlite-adapter/entries/crud.ts +0 -233
  127. package/src/database/sqlite-adapter/entries/importance.ts +0 -76
  128. package/src/database/sqlite-adapter/entries/index.ts +0 -142
  129. package/src/database/sqlite-adapter/entries/search.ts +0 -294
  130. package/src/database/sqlite-adapter/entries/shared.ts +0 -102
  131. package/src/database/sqlite-adapter/entries/statistics.ts +0 -162
  132. package/src/database/sqlite-adapter/index.ts +0 -265
  133. package/src/database/sqlite-adapter/native-connection.ts +0 -301
  134. package/src/database/sqlite-adapter/relationships.ts +0 -70
  135. package/src/database/sqlite-adapter/tags.ts +0 -182
  136. package/src/filtering/tool-filter.ts +0 -312
  137. package/src/github/github-integration/client.ts +0 -114
  138. package/src/github/github-integration/index.ts +0 -297
  139. package/src/github/github-integration/insights.ts +0 -155
  140. package/src/github/github-integration/issues.ts +0 -213
  141. package/src/github/github-integration/milestones.ts +0 -262
  142. package/src/github/github-integration/projects.ts +0 -414
  143. package/src/github/github-integration/pull-requests.ts +0 -235
  144. package/src/github/github-integration/repository.ts +0 -110
  145. package/src/github/github-integration/types.ts +0 -43
  146. package/src/handlers/prompts/github.ts +0 -210
  147. package/src/handlers/prompts/index.ts +0 -97
  148. package/src/handlers/prompts/workflow.ts +0 -361
  149. package/src/handlers/resources/core/briefing/context-section.ts +0 -182
  150. package/src/handlers/resources/core/briefing/github-section.ts +0 -354
  151. package/src/handlers/resources/core/briefing/index.ts +0 -106
  152. package/src/handlers/resources/core/briefing/user-message.ts +0 -114
  153. package/src/handlers/resources/core/health.ts +0 -75
  154. package/src/handlers/resources/core/index.ts +0 -31
  155. package/src/handlers/resources/core/instructions.ts +0 -45
  156. package/src/handlers/resources/core/utilities.ts +0 -310
  157. package/src/handlers/resources/github.ts +0 -340
  158. package/src/handlers/resources/graph.ts +0 -218
  159. package/src/handlers/resources/help.ts +0 -410
  160. package/src/handlers/resources/index.ts +0 -143
  161. package/src/handlers/resources/shared.ts +0 -219
  162. package/src/handlers/resources/team.ts +0 -134
  163. package/src/handlers/resources/templates.ts +0 -334
  164. package/src/handlers/tools/admin.ts +0 -351
  165. package/src/handlers/tools/analytics.ts +0 -346
  166. package/src/handlers/tools/backup.ts +0 -272
  167. package/src/handlers/tools/codemode.ts +0 -188
  168. package/src/handlers/tools/core.ts +0 -359
  169. package/src/handlers/tools/error-fields-mixin.ts +0 -10
  170. package/src/handlers/tools/export.ts +0 -150
  171. package/src/handlers/tools/github/copilot-tools.ts +0 -72
  172. package/src/handlers/tools/github/helpers.ts +0 -125
  173. package/src/handlers/tools/github/insights-tools.ts +0 -112
  174. package/src/handlers/tools/github/issue-tools.ts +0 -442
  175. package/src/handlers/tools/github/kanban-tools.ts +0 -153
  176. package/src/handlers/tools/github/milestone-tools.ts +0 -371
  177. package/src/handlers/tools/github/mutation-tools.ts +0 -17
  178. package/src/handlers/tools/github/read-tools.ts +0 -302
  179. package/src/handlers/tools/github/schemas.ts +0 -435
  180. package/src/handlers/tools/github.ts +0 -39
  181. package/src/handlers/tools/index.ts +0 -255
  182. package/src/handlers/tools/relationships.ts +0 -390
  183. package/src/handlers/tools/schemas.ts +0 -165
  184. package/src/handlers/tools/search.ts +0 -448
  185. package/src/handlers/tools/team/admin-tools.ts +0 -164
  186. package/src/handlers/tools/team/analytics-tools.ts +0 -233
  187. package/src/handlers/tools/team/backup-tools.ts +0 -83
  188. package/src/handlers/tools/team/core-tools.ts +0 -197
  189. package/src/handlers/tools/team/export-tools.ts +0 -130
  190. package/src/handlers/tools/team/helpers.ts +0 -66
  191. package/src/handlers/tools/team/index.ts +0 -45
  192. package/src/handlers/tools/team/relationship-tools.ts +0 -219
  193. package/src/handlers/tools/team/schemas.ts +0 -558
  194. package/src/handlers/tools/team/search-tools.ts +0 -145
  195. package/src/handlers/tools/team/vector-tools.ts +0 -261
  196. package/src/index.ts +0 -57
  197. package/src/server/mcp-server.ts +0 -446
  198. package/src/server/registration.ts +0 -141
  199. package/src/server/scheduler.ts +0 -283
  200. package/src/transports/http/handlers.ts +0 -78
  201. package/src/transports/http/index.ts +0 -8
  202. package/src/transports/http/security.ts +0 -147
  203. package/src/transports/http/server/index.ts +0 -397
  204. package/src/transports/http/server/legacy-sse.ts +0 -87
  205. package/src/transports/http/server/stateful.ts +0 -222
  206. package/src/transports/http/server/stateless.ts +0 -42
  207. package/src/transports/http/types.ts +0 -132
  208. package/src/types/entities.ts +0 -145
  209. package/src/types/error-types.ts +0 -92
  210. package/src/types/errors.ts +0 -200
  211. package/src/types/filtering.ts +0 -55
  212. package/src/types/github.ts +0 -216
  213. package/src/types/index.ts +0 -348
  214. package/src/utils/error-helpers.ts +0 -78
  215. package/src/utils/errors/error-response-fields.ts +0 -29
  216. package/src/utils/errors/suggestions.ts +0 -94
  217. package/src/utils/github-helpers.ts +0 -33
  218. package/src/utils/logger.ts +0 -107
  219. package/src/utils/mcp-logger.ts +0 -155
  220. package/src/utils/progress-utils.ts +0 -100
  221. package/src/utils/query-helpers.ts +0 -78
  222. package/src/utils/resource-annotations.ts +0 -75
  223. package/src/utils/security-utils.ts +0 -198
  224. package/src/utils/vector-index-helpers.ts +0 -24
  225. package/src/vector/vector-search-manager.ts +0 -409
  226. package/src/version.ts +0 -15
  227. package/test-server/README.md +0 -193
  228. package/test-server/code-map.md +0 -399
  229. package/test-server/test-agent-experience.md +0 -213
  230. package/test-server/test-filter-instructions.mjs +0 -295
  231. package/test-server/test-instruction-levels.mjs +0 -102
  232. package/test-server/test-preflight.md +0 -55
  233. package/test-server/test-prompts.mjs +0 -185
  234. package/test-server/test-scheduler.mjs +0 -174
  235. package/test-server/test-tool-annotations.mjs +0 -115
  236. package/test-server/test-tools-codemode.md +0 -632
  237. package/test-server/test-tools-codemode2.md +0 -1218
  238. package/test-server/test-tools-team.md +0 -215
  239. package/test-server/test-tools.md +0 -429
  240. package/test-server/test-tools2.md +0 -361
  241. package/test-server/test-tools3.md +0 -396
  242. package/test-server/tool-reference.md +0 -231
  243. package/tests/README.md +0 -54
  244. package/tests/auth/auth-context.test.ts +0 -162
  245. package/tests/auth/authorization-server-discovery.test.ts +0 -265
  246. package/tests/auth/errors.test.ts +0 -170
  247. package/tests/auth/middleware.test.ts +0 -585
  248. package/tests/auth/oauth-resource-server.test.ts +0 -173
  249. package/tests/auth/scope-map.test.ts +0 -66
  250. package/tests/auth/scopes.test.ts +0 -347
  251. package/tests/auth/token-validator.test.ts +0 -271
  252. package/tests/codemode/api.test.ts +0 -396
  253. package/tests/codemode/auto-return.test.ts +0 -167
  254. package/tests/codemode/codemode-tool-handlers.test.ts +0 -197
  255. package/tests/codemode/sandbox-factory.test.ts +0 -152
  256. package/tests/codemode/sandbox.test.ts +0 -190
  257. package/tests/codemode/security.test.ts +0 -242
  258. package/tests/codemode/worker-sandbox.test.ts +0 -106
  259. package/tests/constants/icons.test.ts +0 -101
  260. package/tests/constants/server-instructions.test.ts +0 -514
  261. package/tests/database/crud-workflow-branches.test.ts +0 -418
  262. package/tests/database/database-branches.test.ts +0 -132
  263. package/tests/database/entries-auth-branches.test.ts +0 -390
  264. package/tests/database/native-connection.test.ts +0 -249
  265. package/tests/database/shared-helpers.test.ts +0 -103
  266. package/tests/database/sqlite-adapter.bench.ts +0 -63
  267. package/tests/database/sqlite-adapter.test.ts +0 -690
  268. package/tests/database/tags.test.ts +0 -134
  269. package/tests/e2e/README.md +0 -39
  270. package/tests/e2e/auth.spec.ts +0 -106
  271. package/tests/e2e/codemode-abuse.spec.ts +0 -75
  272. package/tests/e2e/health.spec.ts +0 -63
  273. package/tests/e2e/helpers.ts +0 -139
  274. package/tests/e2e/oauth-discovery.spec.ts +0 -102
  275. package/tests/e2e/oauth-scopes.spec.ts +0 -222
  276. package/tests/e2e/payloads-admin.spec.ts +0 -76
  277. package/tests/e2e/payloads-analytics.spec.ts +0 -37
  278. package/tests/e2e/payloads-backup-restore.spec.ts +0 -102
  279. package/tests/e2e/payloads-backup.spec.ts +0 -44
  280. package/tests/e2e/payloads-codemode-api.spec.ts +0 -131
  281. package/tests/e2e/payloads-codemode-readonly.spec.ts +0 -116
  282. package/tests/e2e/payloads-codemode.spec.ts +0 -116
  283. package/tests/e2e/payloads-core.spec.ts +0 -82
  284. package/tests/e2e/payloads-error-contracts.spec.ts +0 -159
  285. package/tests/e2e/payloads-export.spec.ts +0 -46
  286. package/tests/e2e/payloads-github-degradation.spec.ts +0 -73
  287. package/tests/e2e/payloads-github.spec.ts +0 -176
  288. package/tests/e2e/payloads-relationships.spec.ts +0 -56
  289. package/tests/e2e/payloads-search.spec.ts +0 -64
  290. package/tests/e2e/payloads-team-happy.spec.ts +0 -231
  291. package/tests/e2e/payloads-team.spec.ts +0 -174
  292. package/tests/e2e/prompts-expanded.spec.ts +0 -137
  293. package/tests/e2e/prompts.spec.ts +0 -62
  294. package/tests/e2e/protocols.spec.ts +0 -134
  295. package/tests/e2e/rate-limiting.spec.ts +0 -291
  296. package/tests/e2e/resources-briefing-env.spec.ts +0 -106
  297. package/tests/e2e/resources-complete.spec.ts +0 -180
  298. package/tests/e2e/resources-expanded.spec.ts +0 -83
  299. package/tests/e2e/resources-instructions-levels.spec.ts +0 -145
  300. package/tests/e2e/resources-templates.spec.ts +0 -123
  301. package/tests/e2e/resources.spec.ts +0 -103
  302. package/tests/e2e/scheduler.spec.ts +0 -79
  303. package/tests/e2e/security.spec.ts +0 -112
  304. package/tests/e2e/session-advanced.spec.ts +0 -152
  305. package/tests/e2e/sessions.spec.ts +0 -95
  306. package/tests/e2e/stateless.spec.ts +0 -79
  307. package/tests/e2e/streaming.spec.ts +0 -176
  308. package/tests/e2e/tool-filtering-presets.spec.ts +0 -192
  309. package/tests/e2e/tool-filtering.spec.ts +0 -77
  310. package/tests/e2e/tools.spec.ts +0 -111
  311. package/tests/filtering/tool-filter.test.ts +0 -314
  312. package/tests/github/client-issues-errors.test.ts +0 -433
  313. package/tests/github/github-integration-branches.test.ts +0 -490
  314. package/tests/github/github-integration.test.ts +0 -1015
  315. package/tests/github/github-managers-branches.test.ts +0 -907
  316. package/tests/github/pull-requests.test.ts +0 -334
  317. package/tests/handlers/analytics-branches.test.ts +0 -222
  318. package/tests/handlers/backup-branches.test.ts +0 -270
  319. package/tests/handlers/briefing-context-section.test.ts +0 -388
  320. package/tests/handlers/briefing-github-section.test.ts +0 -392
  321. package/tests/handlers/briefing-user-message.test.ts +0 -405
  322. package/tests/handlers/codemode-tools.test.ts +0 -85
  323. package/tests/handlers/copilot-tools.test.ts +0 -126
  324. package/tests/handlers/error-path-coverage.test.ts +0 -324
  325. package/tests/handlers/export-tools.test.ts +0 -203
  326. package/tests/handlers/github-resource-handlers.test.ts +0 -929
  327. package/tests/handlers/github-tool-handlers.test.ts +0 -1452
  328. package/tests/handlers/handler-error-branches.test.ts +0 -346
  329. package/tests/handlers/help-resource.test.ts +0 -92
  330. package/tests/handlers/prompt-handler-coverage.test.ts +0 -108
  331. package/tests/handlers/prompt-handlers.test.ts +0 -131
  332. package/tests/handlers/resource-handler-coverage.test.ts +0 -281
  333. package/tests/handlers/resource-handlers.test.ts +0 -357
  334. package/tests/handlers/resource-prompt-branches.test.ts +0 -495
  335. package/tests/handlers/search-tool-handlers.test.ts +0 -379
  336. package/tests/handlers/targeted-gap-closure.test.ts +0 -387
  337. package/tests/handlers/team-admin.test.ts +0 -291
  338. package/tests/handlers/team-analytics.test.ts +0 -220
  339. package/tests/handlers/team-core.test.ts +0 -148
  340. package/tests/handlers/team-data.test.ts +0 -198
  341. package/tests/handlers/team-relationships.test.ts +0 -271
  342. package/tests/handlers/team-resource-handlers.test.ts +0 -161
  343. package/tests/handlers/team-search.test.ts +0 -134
  344. package/tests/handlers/team-tool-handlers.test.ts +0 -301
  345. package/tests/handlers/team-vector.test.ts +0 -213
  346. package/tests/handlers/template-github-branches.test.ts +0 -676
  347. package/tests/handlers/tool-annotations.test.ts +0 -90
  348. package/tests/handlers/tool-handler-coverage.test.ts +0 -514
  349. package/tests/handlers/tool-handlers.test.ts +0 -510
  350. package/tests/handlers/tool-output-schemas.test.ts +0 -116
  351. package/tests/handlers/vector-tool-handlers.test.ts +0 -238
  352. package/tests/security/sql-injection.test.ts +0 -284
  353. package/tests/server/mcp-server.bench.ts +0 -55
  354. package/tests/server/mcp-server.test.ts +0 -1326
  355. package/tests/server/scheduler.test.ts +0 -400
  356. package/tests/transports/http-legacy-sse.test.ts +0 -275
  357. package/tests/transports/http-security.test.ts +0 -322
  358. package/tests/transports/http-stateful.test.ts +0 -487
  359. package/tests/transports/http-transport-server.test.ts +0 -301
  360. package/tests/transports/http-transport.test.ts +0 -771
  361. package/tests/utils/github-helpers.test.ts +0 -58
  362. package/tests/utils/logger.test.ts +0 -180
  363. package/tests/utils/mcp-logger.test.ts +0 -211
  364. package/tests/utils/progress-utils.test.ts +0 -156
  365. package/tests/utils/query-helpers.test.ts +0 -80
  366. package/tests/utils/security-utils.test.ts +0 -82
  367. package/tests/vector/vector-search-branches.test.ts +0 -111
  368. package/tests/vector/vector-search-manager.test.ts +0 -375
  369. package/tests/vector/vector-search.bench.ts +0 -48
  370. package/tsconfig.json +0 -42
  371. package/tsup.config.ts +0 -19
  372. package/vitest.config.ts +0 -25
package/SECURITY.md DELETED
@@ -1,227 +0,0 @@
1
- # 🔒 Security Guide
2
-
3
- The Memory Journal MCP server implements comprehensive security measures to protect your personal journal data.
4
-
5
- ## 🛡️ **Database Security**
6
-
7
- ### **Native SQLite Architecture**
8
-
9
- The server uses the native **better-sqlite3** driver with **sqlite-vec** for vector operations, running directly against the filesystem.
10
-
11
- - ✅ **PRAGMA foreign_keys = ON** — enforces referential integrity and `ON DELETE CASCADE`
12
- - ✅ **Parameterized queries** — all user input bound via `?` placeholders
13
- - ✅ **WAL journal mode** — high concurrency with non-blocking reads (`PRAGMA journal_mode = WAL`)
14
- - ✅ **Synchronous Normal** — optimized durability and performance (`PRAGMA synchronous = NORMAL`)
15
-
16
- ### **File Permissions (Docker)**
17
-
18
- - ✅ **Data directory**: `700` (full access for owner only) in Docker
19
- - ✅ **Non-root user** (`appuser:appgroup`) owns data directory
20
-
21
- ## 🔐 **Input Validation**
22
-
23
- ### **Content Limits**
24
-
25
- - **Journal entries**: 50,000 characters maximum
26
- - **Tags**: 100 characters maximum
27
- - **Entry types**: 50 characters maximum
28
- - **Significance types**: 50 characters maximum
29
- - **HTTP request body**: 1MB maximum (prevents memory exhaustion)
30
-
31
- ### **Character Handling**
32
-
33
- Tags are stored as-is via parameterized queries. Special characters in tags
34
- are safely handled by the database layer and do not pose injection risks.
35
-
36
- ### **SQL Injection Prevention**
37
-
38
- - ✅ **Parameterized queries** used throughout
39
- - ✅ **Input validation** via Zod schemas before database operations
40
- - ✅ **Warning system** for potentially dangerous content patterns
41
- - ✅ **FTS5 / LIKE pattern sanitization** (escapes `%`, `_`, `\` wildcards and handles FTS5 syntax errors gracefully)
42
- - ✅ **Date format whitelisting** (prevents strftime injection)
43
-
44
- ### **Path Traversal Protection**
45
-
46
- - ✅ **Backup filenames validated** - rejects `/`, `\`, `..` in paths
47
- - ✅ **Typed security errors** with consistent error codes
48
-
49
- ## 🌐 **HTTP Transport Security**
50
-
51
- When running in HTTP mode (`--transport http`), the following security measures apply:
52
-
53
- ### **CORS Configuration**
54
-
55
- - ✅ **Configurable multiple origins** via comma-separated `--cors-origin` flag or `MCP_CORS_ORIGIN` environment variable
56
- - ✅ **Exact-match verification** (no wildcard matching for custom domains)
57
- - ⚠️ **Default: `*`** (allow all origins) for backward compatibility
58
- - 🔒 **Recommended**: Set specific origins for production deployments
59
-
60
- ```bash
61
- # Restrict CORS to specific origins
62
- memory-journal-mcp --transport http --cors-origin "http://localhost:3000,https://my-app.com"
63
-
64
- # Or via environment variable
65
- export MCP_CORS_ORIGIN="http://localhost:3000,https://my-app.com"
66
- ```
67
-
68
- ### **Security Headers & Protections**
69
-
70
- - ✅ **DNS Rebinding Protection** — `hostHeaderValidation` middleware prevents CVE-2025-66414
71
- - ✅ **Strict-Transport-Security (HSTS)** — max-age=31536000; includeSubDomains (opt-in via `--enable-hsts`)
72
- - ✅ **X-Content-Type-Options: nosniff** — prevents MIME sniffing
73
- - ✅ **X-Frame-Options: DENY** — prevents clickjacking
74
- - ✅ **Content-Security-Policy: default-src 'none'; frame-ancestors 'none'** — prevents XSS and framing
75
- - ✅ **Cache-Control: no-store, no-cache, must-revalidate** — prevents caching of sensitive journal data
76
- - ✅ **Referrer-Policy: no-referrer** — prevents referrer leakage
77
- - ⚠️ **CORS wildcard warning** — server logs a warning when CORS origin is `*`
78
-
79
- ### **Rate Limiting & Timeouts**
80
-
81
- - ✅ **Built-in Rate Limiting** — 100 requests/minute per IP (sliding window with `Retry-After` header)
82
- - ✅ **HTTP Timeouts** — Request timeout (120s), keep-alive timeout (65s), headers timeout (66s)
83
-
84
- ### **Session Management (Stateful Mode)**
85
-
86
- - ✅ **UUID-based session IDs** (cryptographically random)
87
- - ✅ **30-minute session timeout** - idle sessions automatically expired
88
- - ✅ **5-minute sweep interval** - periodic cleanup of abandoned sessions
89
- - ✅ **Explicit session termination** via `DELETE /mcp`
90
-
91
- ### **Request Size Limits**
92
-
93
- - ✅ **1MB body limit** on JSON requests (prevents memory exhaustion DoS)
94
-
95
- ## 🐙 **GitHub Token Security**
96
-
97
- ### **Token Handling**
98
-
99
- - ✅ **Environment variables only** - tokens never stored in config files
100
- - ✅ **Error message scrubbing** - Authorization headers stripped from error logs
101
- - ✅ **Optional integration** - server works fully offline without GitHub token
102
- - ✅ **Minimal scopes** - only requires `repo`, `project`, `read:org`
103
-
104
- ### **Environment Variables**
105
-
106
- ```bash
107
- # Required for GitHub features
108
- GITHUB_TOKEN=ghp_... # GitHub personal access token
109
-
110
- # Optional
111
- GITHUB_ORG_TOKEN=ghp_... # For organization projects
112
- GITHUB_REPO_PATH=/path/to/repo # For auto-detecting owner/repo
113
- DEFAULT_PROJECT_NUMBER=1 # Default project for issue assignment
114
- MCP_CORS_ORIGIN=* # CORS origin (default: *)
115
- MCP_HOST=localhost # Server bind host
116
- AUTO_REBUILD_INDEX=true # Rebuild vector index on startup
117
- ```
118
-
119
- ## 🐳 **Docker Security**
120
-
121
- ### **Non-Root User**
122
-
123
- - ✅ **Dedicated user**: `appuser` (UID 1001) with minimal privileges
124
- - ✅ **Restricted group**: `appgroup` (GID 1001)
125
- - ✅ **Restricted data directory**: `700` permissions
126
-
127
- ### **Container Hardening**
128
-
129
- - ✅ **Minimal base image**: `node:24-alpine`
130
- - ✅ **Multi-stage build**: Build dependencies not in production image
131
- - ✅ **Process isolation** from host system
132
- - ✅ **No shell access needed** for production
133
-
134
- ### **Volume Mounting Security**
135
-
136
- ```bash
137
- # Secure volume mounting
138
- docker run -v ./data:/app/data:rw,noexec,nosuid,nodev memory-journal-mcp
139
- ```
140
-
141
- ### **Resource Limits**
142
-
143
- ```bash
144
- # Apply resource limits
145
- docker run --memory=1g --cpus=1 memory-journal-mcp
146
- ```
147
-
148
- ## 🔍 **Data Privacy**
149
-
150
- ### **Local-First Architecture**
151
-
152
- - ✅ **No external services**: All processing happens locally
153
- - ✅ **No telemetry**: No data sent to external servers
154
- - ✅ **Full data ownership**: SQLite database stays on your machine
155
- - ✅ **Semantic search**: ML model runs locally via `@huggingface/transformers`
156
-
157
- ### **Context Security**
158
-
159
- - ✅ **Git context**: Only reads local repository information
160
- - ✅ **No sensitive data**: Doesn't access private keys or credentials
161
- - ✅ **Optional GitHub integration**: Only if explicitly configured with token
162
-
163
- ## 🔄 **CI/CD Security**
164
-
165
- - ✅ **CodeQL analysis** - automated static analysis on push/PR
166
- - ✅ **Trivy container scanning** - Docker image vulnerability detection
167
- - ✅ **TruffleHog + Gitleaks** - secret scanning on push/PR
168
- - ✅ **npm audit** - dependency vulnerability checking
169
- - ✅ **Dependabot** - automated dependency update PRs
170
-
171
- ## 🚨 **Security Best Practices**
172
-
173
- ### **For Users**
174
-
175
- 1. **Set a CORS origin** when exposing the HTTP transport on a network
176
- 2. **Keep Node.js updated**: Use Node.js 24+ (LTS)
177
- 3. **Secure host system**: Ensure your host machine is secure
178
- 4. **Regular backups**: Use the `backup_journal` tool or back up your `.db` file
179
- 5. **Limit network access**: Don't expose the HTTP transport to untrusted networks
180
- 6. **Use resource limits**: Apply Docker `--memory` and `--cpus` limits
181
-
182
- ### **For Developers**
183
-
184
- 1. **Regular updates**: Keep Node.js and npm dependencies updated
185
- 2. **Security scanning**: Regularly scan Docker images for vulnerabilities
186
- 3. **Code review**: All database operations use parameterized queries
187
- 4. **Input validation**: All tool inputs validated via Zod schemas
188
-
189
- ## 📋 **Security Checklist**
190
-
191
- - [x] Foreign key enforcement (`PRAGMA foreign_keys = ON`)
192
- - [x] Input validation and length limits (Zod schemas)
193
- - [x] Parameterized SQL queries
194
- - [x] SQL injection detection heuristics (defense-in-depth)
195
- - [x] Path traversal protection (`assertNoPathTraversal`)
196
- - [x] FTS5 / LIKE pattern sanitization (`sanitizeSearchQuery`)
197
- - [x] Date format whitelisting (`validateDateFormatPattern`)
198
- - [x] HTTP body size limit (1MB)
199
- - [x] Configurable CORS multi-origin with exact-match enforcement
200
- - [x] HTTP timeouts and built-in rate limiter (100 req/min)
201
- - [x] DNS rebinding protection and strict HSTS
202
- - [x] Security headers (CSP, X-Content-Type-Options, X-Frame-Options, Cache-Control, Referrer-Policy, Permissions-Policy)
203
- - [x] Session timeout (30 minutes)
204
- - [x] Non-root Docker user
205
- - [x] Multi-stage Docker build
206
- - [x] Local-first data architecture
207
- - [x] GitHub token error scrubbing
208
- - [x] CI/CD security pipeline (CodeQL, Trivy, secret scanning)
209
- - [x] Comprehensive security documentation
210
-
211
- ## 🚨 **Reporting Security Issues**
212
-
213
- If you discover a security vulnerability, please:
214
-
215
- 1. **Do not** open a public GitHub issue
216
- 2. **Contact** the maintainers privately
217
- 3. **Provide** detailed information about the vulnerability
218
- 4. **Allow** time for the issue to be addressed before public disclosure
219
-
220
- ## 🔄 **Security Updates**
221
-
222
- - **Container updates**: Rebuild Docker images when base images are updated
223
- - **Dependency updates**: Keep npm packages updated via `npm audit` and Dependabot
224
- - **Database maintenance**: Run `ANALYZE` and `PRAGMA optimize` regularly
225
- - **Security patches**: Apply host system security updates
226
-
227
- The Memory Journal MCP server is designed with **security-first principles** to protect your personal journal data while maintaining excellent performance and usability.
package/UNRELEASED.md DELETED
@@ -1 +0,0 @@
1
- ## [Unreleased]
@@ -1,2 +0,0 @@
1
- export { callTool, getTools } from './chunk-X4SWFATC.js';
2
- import './chunk-OKOVZ5QE.js';
@@ -1,71 +0,0 @@
1
- services:
2
- memory-journal-mcp:
3
- build: .
4
- container_name: memory-journal-mcp
5
- volumes:
6
- # Mount local data directory for persistent SQLite database
7
- - ./data:/app/data:rw,noexec,nosuid,nodev
8
- environment:
9
- - DB_PATH=/app/data/memory_journal.db
10
- # Optional: GitHub integration
11
- # - GITHUB_TOKEN=<your-github-token>
12
- # - GITHUB_REPO_PATH=/app/repo
13
- # Optional: CORS origin (default: *)
14
- # - MCP_CORS_ORIGIN=http://localhost:3000
15
- read_only: true
16
- tmpfs:
17
- - /tmp:noexec,nosuid,nodev
18
- security_opt:
19
- - no-new-privileges:true
20
- cap_drop:
21
- - ALL
22
- networks:
23
- - mcp-net
24
- stdin_open: true
25
- tty: true
26
- # MCP stdio communication (default transport)
27
- command: ['node', 'dist/cli.js']
28
- restart: unless-stopped
29
-
30
- # HTTP transport service for remote access
31
- memory-journal-mcp-http:
32
- build: .
33
- container_name: memory-journal-mcp-http
34
- volumes:
35
- - ./data:/app/data:rw,noexec,nosuid,nodev
36
- environment:
37
- - NODE_ENV=production
38
- - DB_PATH=/app/data/memory_journal.db
39
- - MCP_HOST=0.0.0.0
40
- # Optional: Bearer token authentication (recommended for production)
41
- # - MCP_AUTH_TOKEN=your_secret_token_here
42
- # Optional: GitHub integration
43
- # - GITHUB_TOKEN=<your-github-token>
44
- # - GITHUB_REPO_PATH=/app/repo
45
- # Optional: CORS origin (default: *)
46
- # - MCP_CORS_ORIGIN=http://localhost:3000
47
- read_only: true
48
- tmpfs:
49
- - /tmp:noexec,nosuid,nodev
50
- security_opt:
51
- - no-new-privileges:true
52
- cap_drop:
53
- - ALL
54
- networks:
55
- - mcp-net
56
- ports:
57
- - '3000:3000'
58
- command:
59
- ['node', 'dist/cli.js', '--transport', 'http', '--port', '3000', '--server-host', '0.0.0.0']
60
- restart: unless-stopped
61
- deploy:
62
- resources:
63
- limits:
64
- memory: 1g
65
- cpus: '1.0'
66
- profiles:
67
- - http
68
-
69
- networks:
70
- mcp-net:
71
- driver: bridge
package/docs/README.md DELETED
@@ -1,18 +0,0 @@
1
- # docs/
2
-
3
- Agent-optimized reference documentation for memory-journal-mcp internals.
4
-
5
- ## Files
6
-
7
- | Document | Purpose | Read When |
8
- | ------------------------------------ | ------------------------------------------------ | ------------------------------------------- |
9
- | [copilot-setup.md](copilot-setup.md) | GitHub Copilot ↔ memory-journal-mcp bridge setup | Configuring Copilot code review integration |
10
-
11
- ## See Also
12
-
13
- | Location | Contents |
14
- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
15
- | `test-server/` | Agent testing orchestration (test-tools.md, test-tools2.md, test-tools-codemode.md) |
16
- | [Wiki](https://github.com/neverinfamous/memory-journal-mcp/wiki) | User-facing documentation (installation, configuration, examples) |
17
- | `CHANGELOG.md` | Released version history |
18
- | `UNRELEASED.md` | Pending changes for next release |
@@ -1,175 +0,0 @@
1
- # Agentic Journal Synergy — Preliminary Plan
2
-
3
- > **Status**: Concept / Future Exploration
4
- > **Prerequisites**: Agentic workflows battle-tested, MCP server deployed in HTTP mode
5
-
6
- ## Overview
7
-
8
- The memory-journal-mcp server currently serves as persistent memory for IDE agents. Separately, GitHub Copilot Coding Agent workflows (dependency maintenance, docs drift detection, CI health monitoring) run on the repository's CI infrastructure. These two systems operate independently — but there is a natural integration point where the agentic workflows could **write findings into the journal**, creating a persistent, searchable audit trail that IDE agents see at session start.
9
-
10
- ## Current State
11
-
12
- ```
13
- ┌──────────────────────┐ ┌──────────────────────┐
14
- │ IDE Agent │ │ Copilot Workflows │
15
- │ (AntiGravity/Cursor)│ │ (GitHub Actions) │
16
- │ │ │ │
17
- │ Reads/writes │ │ Posts PR comments │
18
- │ memory-journal-mcp │ │ Creates issues │
19
- │ │ │ Opens PRs │
20
- └──────────┬───────────┘ └──────────────────────┘
21
- │ (no connection)
22
-
23
- ┌───────────────┐
24
- │ SQLite DB │
25
- │ (journal) │
26
- └───────────────┘
27
- ```
28
-
29
- ## Proposed State
30
-
31
- ```
32
- ┌──────────────────────┐ ┌─────────────────────┐
33
- │ IDE Agent │ │ Copilot Workflows │
34
- │ (AntiGravity/Cursor)│ │ (GitHub Actions) │
35
- │ │ │ │
36
- │ Reads/writes │ │ Writes findings │
37
- │ memory-journal-mcp │ │ via HTTP MCP calls │
38
- │ │ │ │
39
- └──────────┬───────────┘ └──────────┬───────────┘
40
- │ │
41
- ▼ ▼
42
- ┌───────────────────────────────────────┐
43
- │ memory-journal-mcp (HTTP mode) │
44
- │ SQLite DB (shared journal) │
45
- └───────────────────────────────────────┘
46
- ```
47
-
48
- ## Concrete Use Cases
49
-
50
- ### 1. Dependency Update Audit Trail
51
-
52
- **Workflow**: `dependency-maintenance.md`
53
- **Tag**: `deps-update`
54
-
55
- After updating dependencies, the agent writes a journal entry:
56
-
57
- ```javascript
58
- create_entry({
59
- content:
60
- 'Updated 3 npm packages: zod 4.3.6→4.4.0, @octokit/rest 21.1→21.2, tsup 9.1→9.2. Dockerfile tar patch 7.5.11→7.5.12 (CVE-2025-XXXX). npm audit clean.',
61
- entry_type: 'maintenance',
62
- tags: ['deps-update', 'automated', 'npm', 'docker'],
63
- })
64
- ```
65
-
66
- **IDE agent benefit**: `memory://briefing` shows recent dependency changes. The agent can `search_entries({ tags: ["deps-update"] })` to understand the dependency update cadence and any recurring issues.
67
-
68
- ### 2. Documentation Drift Findings
69
-
70
- **Workflow**: `docs-drift-detector.md`
71
- **Tag**: `docs-drift`
72
-
73
- When drift is detected, the agent writes a journal entry:
74
-
75
- ```javascript
76
- create_entry({
77
- content:
78
- 'PR #47: README.md tool count says 44 but tool-reference.md lists 46. DOCKER_README.md version badge says v5.1.2 but package.json is v5.2.0.',
79
- entry_type: 'documentation',
80
- tags: ['docs-drift', 'automated', 'readme'],
81
- pr_number: 47,
82
- })
83
- ```
84
-
85
- **IDE agent benefit**: Before updating docs, the agent searches `search_entries({ tags: ["docs-drift"] })` to see what patterns of drift recur — informing which sections are most fragile and need structural fixes (e.g., dynamic generation instead of hardcoded values).
86
-
87
- ### 3. CI Health Findings
88
-
89
- **Workflow**: `ci-health-monitor.md`
90
- **Tag**: `ci-health`
91
-
92
- When CI deprecations or issues are found:
93
-
94
- ```javascript
95
- create_entry({
96
- content:
97
- 'actions/checkout@v5 deprecated — upgrade to v6. TruffleHog action still on Node 20 runtime. Dependabot missing Docker ecosystem.',
98
- entry_type: 'maintenance',
99
- tags: ['ci-health', 'automated', 'github-actions'],
100
- })
101
- ```
102
-
103
- **IDE agent benefit**: The agent can proactively fix CI issues before they become blocking, and track the health trend over time via `get_analytics`.
104
-
105
- ## Architecture Requirements
106
-
107
- ### Option A: Direct HTTP Calls (Simplest)
108
-
109
- The agentic workflow `.md` prompts instruct Copilot to make HTTP requests to the journal's HTTP endpoint:
110
-
111
- ```bash
112
- curl -X POST https://journal.example.com/mcp \
113
- -H "Authorization: Bearer $MCP_TOKEN" \
114
- -d '{"method":"tools/call","params":{"name":"create_entry","arguments":{...}}}'
115
- ```
116
-
117
- **Pros**: Zero changes to memory-journal-mcp code
118
- **Cons**: Requires deployed HTTP instance, OAuth/token management in CI
119
-
120
- ### Option B: MCP Client in CI (Richer)
121
-
122
- Add memory-journal-mcp as an MCP server available to the Copilot agent:
123
-
124
- ```yaml
125
- # In the .md workflow frontmatter
126
- tools:
127
- - name: memory-journal
128
- type: mcp
129
- command: npx -y memory-journal-mcp
130
- env:
131
- DB_PATH: ./memory-journal.db
132
- ```
133
-
134
- **Pros**: Full MCP protocol, agent uses `create_entry` naturally
135
- **Cons**: Requires `gh-aw` to support MCP tool sources (may not be available yet)
136
-
137
- ### Option C: GitHub API Proxy (Interim)
138
-
139
- Use GitHub Issues or Discussions as the transport layer — the agentic workflow creates a labeled issue, and the IDE agent reads it via the existing GitHub integration:
140
-
141
- ```javascript
142
- // Agentic workflow creates a GitHub issue
143
- create - issue({ title: '[deps-audit] 2026-03-13', labels: ['deps-audit', 'automated'] })
144
-
145
- // IDE agent sees it via memory-journal's GitHub integration
146
- // Already built into memory://briefing
147
- ```
148
-
149
- **Pros**: Works today with zero changes
150
- **Cons**: Loses journal-specific features (tags, search, analytics, relationships)
151
-
152
- ## Implementation Phases
153
-
154
- ### Phase 1: Validate Concept (Option C)
155
-
156
- Use GitHub Issues as the transport. No code changes needed. The `dependency-maintenance` workflow already creates issues (fallback) and PRs. Add structured labels for filtering.
157
-
158
- ### Phase 2: Deploy HTTP Endpoint
159
-
160
- Deploy memory-journal-mcp in HTTP mode (Docker or bare metal). Set up OAuth for CI authentication. Test with manual `curl` calls from GitHub Actions.
161
-
162
- ### Phase 3: Integrate Workflows
163
-
164
- Update the 3 agentic workflow `.md` prompts to call the journal's HTTP endpoint after their primary task. Add a new `automated` entry type and corresponding `search_entries` filter.
165
-
166
- ### Phase 4: IDE Agent Awareness
167
-
168
- Update `memory://briefing` to surface automated entries separately (e.g., "🤖 Automated Findings" section). Update server instructions to guide IDE agents on how to leverage automated findings.
169
-
170
- ## Open Questions
171
-
172
- 1. **Where to host the HTTP endpoint?** — Cloudflare Worker, VPS, or same machine as the dev environment?
173
- 2. **Authentication for CI?** — OAuth token in GitHub Secrets, or shared API key?
174
- 3. **Entry retention?** — Should automated entries expire after N days, or persist indefinitely?
175
- 4. **Entry deduplication?** — If the same drift pattern recurs across PRs, should entries be merged or kept separate for trend analysis?
@@ -1,72 +0,0 @@
1
- # Copilot ↔ Memory Journal MCP Bridge
2
-
3
- Connect memory-journal-mcp to GitHub Copilot for cross-agent knowledge sharing. Two agents, one shared memory.
4
-
5
- ## How It Works
6
-
7
- ```
8
- IDE Agent (AntiGravity/Cursor) ←→ memory-journal-mcp ←→ Copilot (GitHub)
9
- reads reviews via API shared memory reads context via MCP
10
- ```
11
-
12
- **Pattern 1 — Learn from reviews:** The IDE agent reads Copilot's PR review findings with `get_copilot_reviews`, creates `copilot-finding` journal entries, and suggests rule updates.
13
-
14
- **Pattern 2 — Pre-emptive checking:** Before writing code, the IDE agent searches past `copilot-finding` entries and applies patterns proactively.
15
-
16
- **Pattern 3 — Context-aware reviews:** Copilot uses memory-journal-mcp as an MCP server during PR review, gaining access to project history and architectural decisions.
17
-
18
- ## Setup: Copilot → Memory Journal (MCP Server)
19
-
20
- ### Local MCP (VS Code / Copilot Chat)
21
-
22
- Add to your workspace `.vscode/mcp.json`:
23
-
24
- ```json
25
- {
26
- "servers": {
27
- "memory-journal": {
28
- "command": "npx",
29
- "args": ["-y", "memory-journal-mcp"],
30
- "env": {
31
- "DB_PATH": "./memory-journal.db",
32
- "GITHUB_TOKEN": "${env:GITHUB_TOKEN}",
33
- "GITHUB_REPO_PATH": "."
34
- }
35
- }
36
- }
37
- }
38
- ```
39
-
40
- ### Remote MCP (HTTP Transport)
41
-
42
- For Copilot Code Review or remote agents, deploy in HTTP mode:
43
-
44
- ```bash
45
- npx memory-journal-mcp --transport http --port 3100
46
- ```
47
-
48
- Then configure as a remote MCP server in your GitHub Copilot settings.
49
-
50
- ## Setup: IDE Agent → Copilot Reviews
51
-
52
- Enable Copilot review data in the briefing by setting:
53
-
54
- ```
55
- BRIEFING_COPILOT_REVIEWS=true
56
- ```
57
-
58
- Or use the CLI flag:
59
-
60
- ```
61
- --briefing-copilot
62
- ```
63
-
64
- Then use `get_copilot_reviews(pr_number)` to fetch Copilot's findings for any PR.
65
-
66
- ## Security Note
67
-
68
- When connecting memory-journal-mcp to Copilot:
69
-
70
- - Use **read-only OAuth scopes** (e.g., a `read`-level scope) and follow the principle of least privilege if OAuth is enabled
71
- - The journal database may contain project decisions, architecture notes, and code patterns — share only what's appropriate
72
- - Copilot's access follows your GitHub repository permissions
package/eslint.config.js DELETED
@@ -1,110 +0,0 @@
1
- import js from '@eslint/js'
2
- import globals from 'globals'
3
- import tseslint from 'typescript-eslint'
4
-
5
- export default tseslint.config(
6
- { ignores: ['dist', 'node_modules', '**/__tests__/**', '**/*.test.ts', '**/*.spec.ts'] },
7
- // Main source configuration
8
- {
9
- extends: [
10
- js.configs.recommended,
11
- ...tseslint.configs.strictTypeChecked,
12
- ...tseslint.configs.stylisticTypeChecked,
13
- ],
14
- files: ['src/**/*.ts'],
15
- languageOptions: {
16
- ecmaVersion: 2022,
17
- globals: {
18
- ...globals.node,
19
- },
20
- parserOptions: {
21
- projectService: true,
22
- tsconfigRootDir: import.meta.dirname,
23
- },
24
- },
25
- rules: {
26
- // Strict rules - type safety
27
- '@typescript-eslint/no-explicit-any': 'error',
28
- '@typescript-eslint/explicit-function-return-type': [
29
- 'error',
30
- {
31
- allowExpressions: true,
32
- allowTypedFunctionExpressions: true,
33
- allowHigherOrderFunctions: true,
34
- allowDirectConstAssertionInArrowFunctions: true,
35
- allowConciseArrowFunctionExpressionsStartingWithVoid: true,
36
- },
37
- ],
38
- '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
39
- '@typescript-eslint/no-non-null-assertion': 'error',
40
- '@typescript-eslint/strict-boolean-expressions': [
41
- 'error',
42
- {
43
- allowNullableBoolean: true,
44
- allowNullableString: true,
45
- allowNullableNumber: false,
46
- allowNullableObject: true,
47
- },
48
- ],
49
- '@typescript-eslint/no-floating-promises': 'error',
50
- '@typescript-eslint/no-misused-promises': [
51
- 'error',
52
- {
53
- checksVoidReturn: {
54
- attributes: false,
55
- properties: false,
56
- },
57
- },
58
- ],
59
- '@typescript-eslint/await-thenable': 'error',
60
- '@typescript-eslint/require-await': 'error',
61
- '@typescript-eslint/no-unnecessary-condition': 'off',
62
- '@typescript-eslint/prefer-nullish-coalescing': [
63
- 'error',
64
- {
65
- ignorePrimitives: { string: true, number: true },
66
- },
67
- ],
68
- '@typescript-eslint/prefer-optional-chain': 'error',
69
- // Unsafe any rules
70
- '@typescript-eslint/no-unsafe-assignment': 'error',
71
- '@typescript-eslint/no-unsafe-member-access': 'error',
72
- '@typescript-eslint/no-unsafe-call': 'error',
73
- '@typescript-eslint/no-unsafe-return': 'error',
74
- '@typescript-eslint/no-unsafe-argument': 'error',
75
- '@typescript-eslint/restrict-template-expressions': [
76
- 'error',
77
- {
78
- allowNumber: true,
79
- allowBoolean: true,
80
- },
81
- ],
82
- '@typescript-eslint/restrict-plus-operands': [
83
- 'error',
84
- {
85
- allowNumberAndString: true,
86
- allowAny: true,
87
- },
88
- ],
89
- '@typescript-eslint/no-confusing-void-expression': [
90
- 'error',
91
- {
92
- ignoreArrowShorthand: true,
93
- ignoreVoidOperator: true,
94
- },
95
- ],
96
- '@typescript-eslint/consistent-type-imports': [
97
- 'error',
98
- {
99
- prefer: 'type-imports',
100
- fixStyle: 'inline-type-imports',
101
- },
102
- ],
103
- '@typescript-eslint/consistent-type-exports': 'error',
104
- '@typescript-eslint/no-misused-spread': 'off',
105
- // Prevent console.log() which writes to stdout and corrupts MCP stdio transport
106
- // Only stderr output (error, warn) is safe for MCP servers
107
- 'no-console': ['error', { allow: ['error', 'warn'] }],
108
- },
109
- }
110
- )