memory-journal-mcp 4.4.2 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/.github/workflows/codeql.yml +1 -6
  2. package/.github/workflows/docker-publish.yml +15 -49
  3. package/.github/workflows/lint-and-test.yml +1 -1
  4. package/.github/workflows/secrets-scanning.yml +4 -3
  5. package/.github/workflows/security-update.yml +3 -3
  6. package/CHANGELOG.md +213 -0
  7. package/CONTRIBUTING.md +132 -97
  8. package/DOCKER_README.md +184 -235
  9. package/Dockerfile +27 -24
  10. package/README.md +218 -190
  11. package/SECURITY.md +27 -35
  12. package/dist/cli.js +16 -1
  13. package/dist/cli.js.map +1 -1
  14. package/dist/constants/ServerInstructions.d.ts +5 -1
  15. package/dist/constants/ServerInstructions.d.ts.map +1 -1
  16. package/dist/constants/ServerInstructions.js +133 -73
  17. package/dist/constants/ServerInstructions.js.map +1 -1
  18. package/dist/constants/icons.d.ts +2 -2
  19. package/dist/constants/icons.d.ts.map +1 -1
  20. package/dist/constants/icons.js +7 -6
  21. package/dist/constants/icons.js.map +1 -1
  22. package/dist/database/SqliteAdapter.d.ts +37 -24
  23. package/dist/database/SqliteAdapter.d.ts.map +1 -1
  24. package/dist/database/SqliteAdapter.js +319 -157
  25. package/dist/database/SqliteAdapter.js.map +1 -1
  26. package/dist/database/schema.d.ts +45 -0
  27. package/dist/database/schema.d.ts.map +1 -0
  28. package/dist/database/schema.js +92 -0
  29. package/dist/database/schema.js.map +1 -0
  30. package/dist/filtering/ToolFilter.d.ts +1 -1
  31. package/dist/filtering/ToolFilter.d.ts.map +1 -1
  32. package/dist/filtering/ToolFilter.js +13 -2
  33. package/dist/filtering/ToolFilter.js.map +1 -1
  34. package/dist/github/GitHubIntegration.d.ts.map +1 -1
  35. package/dist/github/GitHubIntegration.js +1 -3
  36. package/dist/github/GitHubIntegration.js.map +1 -1
  37. package/dist/handlers/prompts/github.d.ts +12 -0
  38. package/dist/handlers/prompts/github.d.ts.map +1 -0
  39. package/dist/handlers/prompts/github.js +178 -0
  40. package/dist/handlers/prompts/github.js.map +1 -0
  41. package/dist/handlers/prompts/index.d.ts +23 -2
  42. package/dist/handlers/prompts/index.d.ts.map +1 -1
  43. package/dist/handlers/prompts/index.js +7 -432
  44. package/dist/handlers/prompts/index.js.map +1 -1
  45. package/dist/handlers/prompts/workflow.d.ts +12 -0
  46. package/dist/handlers/prompts/workflow.d.ts.map +1 -0
  47. package/dist/handlers/prompts/workflow.js +277 -0
  48. package/dist/handlers/prompts/workflow.js.map +1 -0
  49. package/dist/handlers/resources/core.d.ts +11 -0
  50. package/dist/handlers/resources/core.d.ts.map +1 -0
  51. package/dist/handlers/resources/core.js +433 -0
  52. package/dist/handlers/resources/core.js.map +1 -0
  53. package/dist/handlers/resources/github.d.ts +11 -0
  54. package/dist/handlers/resources/github.d.ts.map +1 -0
  55. package/dist/handlers/resources/github.js +314 -0
  56. package/dist/handlers/resources/github.js.map +1 -0
  57. package/dist/handlers/resources/graph.d.ts +11 -0
  58. package/dist/handlers/resources/graph.d.ts.map +1 -0
  59. package/dist/handlers/resources/graph.js +204 -0
  60. package/dist/handlers/resources/graph.js.map +1 -0
  61. package/dist/handlers/resources/index.d.ts +5 -20
  62. package/dist/handlers/resources/index.d.ts.map +1 -1
  63. package/dist/handlers/resources/index.js +16 -1278
  64. package/dist/handlers/resources/index.js.map +1 -1
  65. package/dist/handlers/resources/shared.d.ts +60 -0
  66. package/dist/handlers/resources/shared.d.ts.map +1 -0
  67. package/dist/handlers/resources/shared.js +49 -0
  68. package/dist/handlers/resources/shared.js.map +1 -0
  69. package/dist/handlers/resources/team.d.ts +13 -0
  70. package/dist/handlers/resources/team.d.ts.map +1 -0
  71. package/dist/handlers/resources/team.js +119 -0
  72. package/dist/handlers/resources/team.js.map +1 -0
  73. package/dist/handlers/resources/templates.d.ts +13 -0
  74. package/dist/handlers/resources/templates.d.ts.map +1 -0
  75. package/dist/handlers/resources/templates.js +310 -0
  76. package/dist/handlers/resources/templates.js.map +1 -0
  77. package/dist/handlers/tools/admin.d.ts +8 -0
  78. package/dist/handlers/tools/admin.d.ts.map +1 -0
  79. package/dist/handlers/tools/admin.js +270 -0
  80. package/dist/handlers/tools/admin.js.map +1 -0
  81. package/dist/handlers/tools/analytics.d.ts +8 -0
  82. package/dist/handlers/tools/analytics.d.ts.map +1 -0
  83. package/dist/handlers/tools/analytics.js +256 -0
  84. package/dist/handlers/tools/analytics.js.map +1 -0
  85. package/dist/handlers/tools/backup.d.ts +8 -0
  86. package/dist/handlers/tools/backup.d.ts.map +1 -0
  87. package/dist/handlers/tools/backup.js +224 -0
  88. package/dist/handlers/tools/backup.js.map +1 -0
  89. package/dist/handlers/tools/core.d.ts +9 -0
  90. package/dist/handlers/tools/core.d.ts.map +1 -0
  91. package/dist/handlers/tools/core.js +326 -0
  92. package/dist/handlers/tools/core.js.map +1 -0
  93. package/dist/handlers/tools/export.d.ts +8 -0
  94. package/dist/handlers/tools/export.d.ts.map +1 -0
  95. package/dist/handlers/tools/export.js +89 -0
  96. package/dist/handlers/tools/export.js.map +1 -0
  97. package/dist/handlers/tools/github/helpers.d.ts +34 -0
  98. package/dist/handlers/tools/github/helpers.d.ts.map +1 -0
  99. package/dist/handlers/tools/github/helpers.js +52 -0
  100. package/dist/handlers/tools/github/helpers.js.map +1 -0
  101. package/dist/handlers/tools/github/insights-tools.d.ts +8 -0
  102. package/dist/handlers/tools/github/insights-tools.d.ts.map +1 -0
  103. package/dist/handlers/tools/github/insights-tools.js +104 -0
  104. package/dist/handlers/tools/github/insights-tools.js.map +1 -0
  105. package/dist/handlers/tools/github/issue-tools.d.ts +8 -0
  106. package/dist/handlers/tools/github/issue-tools.d.ts.map +1 -0
  107. package/dist/handlers/tools/github/issue-tools.js +359 -0
  108. package/dist/handlers/tools/github/issue-tools.js.map +1 -0
  109. package/dist/handlers/tools/github/kanban-tools.d.ts +8 -0
  110. package/dist/handlers/tools/github/kanban-tools.d.ts.map +1 -0
  111. package/dist/handlers/tools/github/kanban-tools.js +108 -0
  112. package/dist/handlers/tools/github/kanban-tools.js.map +1 -0
  113. package/dist/handlers/tools/github/milestone-tools.d.ts +9 -0
  114. package/dist/handlers/tools/github/milestone-tools.d.ts.map +1 -0
  115. package/dist/handlers/tools/github/milestone-tools.js +302 -0
  116. package/dist/handlers/tools/github/milestone-tools.js.map +1 -0
  117. package/dist/handlers/tools/github/mutation-tools.d.ts +12 -0
  118. package/dist/handlers/tools/github/mutation-tools.d.ts.map +1 -0
  119. package/dist/handlers/tools/github/mutation-tools.js +15 -0
  120. package/dist/handlers/tools/github/mutation-tools.js.map +1 -0
  121. package/dist/handlers/tools/github/read-tools.d.ts +8 -0
  122. package/dist/handlers/tools/github/read-tools.d.ts.map +1 -0
  123. package/dist/handlers/tools/github/read-tools.js +260 -0
  124. package/dist/handlers/tools/github/read-tools.js.map +1 -0
  125. package/dist/handlers/tools/github/schemas.d.ts +467 -0
  126. package/dist/handlers/tools/github/schemas.d.ts.map +1 -0
  127. package/dist/handlers/tools/github/schemas.js +335 -0
  128. package/dist/handlers/tools/github/schemas.js.map +1 -0
  129. package/dist/handlers/tools/github.d.ts +14 -0
  130. package/dist/handlers/tools/github.d.ts.map +1 -0
  131. package/dist/handlers/tools/github.js +28 -0
  132. package/dist/handlers/tools/github.js.map +1 -0
  133. package/dist/handlers/tools/index.d.ts +15 -20
  134. package/dist/handlers/tools/index.d.ts.map +1 -1
  135. package/dist/handlers/tools/index.js +117 -2909
  136. package/dist/handlers/tools/index.js.map +1 -1
  137. package/dist/handlers/tools/relationships.d.ts +8 -0
  138. package/dist/handlers/tools/relationships.d.ts.map +1 -0
  139. package/dist/handlers/tools/relationships.js +308 -0
  140. package/dist/handlers/tools/relationships.js.map +1 -0
  141. package/dist/handlers/tools/schemas.d.ts +108 -0
  142. package/dist/handlers/tools/schemas.d.ts.map +1 -0
  143. package/dist/handlers/tools/schemas.js +122 -0
  144. package/dist/handlers/tools/schemas.js.map +1 -0
  145. package/dist/handlers/tools/search.d.ts +8 -0
  146. package/dist/handlers/tools/search.d.ts.map +1 -0
  147. package/dist/handlers/tools/search.js +282 -0
  148. package/dist/handlers/tools/search.js.map +1 -0
  149. package/dist/handlers/tools/team.d.ts +11 -0
  150. package/dist/handlers/tools/team.d.ts.map +1 -0
  151. package/dist/handlers/tools/team.js +239 -0
  152. package/dist/handlers/tools/team.js.map +1 -0
  153. package/dist/server/McpServer.d.ts +4 -0
  154. package/dist/server/McpServer.d.ts.map +1 -1
  155. package/dist/server/McpServer.js +48 -297
  156. package/dist/server/McpServer.js.map +1 -1
  157. package/dist/server/Scheduler.d.ts +91 -0
  158. package/dist/server/Scheduler.d.ts.map +1 -0
  159. package/dist/server/Scheduler.js +201 -0
  160. package/dist/server/Scheduler.js.map +1 -0
  161. package/dist/transports/http.d.ts +66 -0
  162. package/dist/transports/http.d.ts.map +1 -0
  163. package/dist/transports/http.js +519 -0
  164. package/dist/transports/http.js.map +1 -0
  165. package/dist/types/entities.d.ts +101 -0
  166. package/dist/types/entities.d.ts.map +1 -0
  167. package/dist/types/entities.js +5 -0
  168. package/dist/types/entities.js.map +1 -0
  169. package/dist/types/filtering.d.ts +34 -0
  170. package/dist/types/filtering.d.ts.map +1 -0
  171. package/dist/types/filtering.js +5 -0
  172. package/dist/types/filtering.js.map +1 -0
  173. package/dist/types/github.d.ts +166 -0
  174. package/dist/types/github.d.ts.map +1 -0
  175. package/dist/types/github.js +5 -0
  176. package/dist/types/github.js.map +1 -0
  177. package/dist/types/index.d.ts +35 -292
  178. package/dist/types/index.d.ts.map +1 -1
  179. package/dist/types/index.js +2 -2
  180. package/dist/types/index.js.map +1 -1
  181. package/dist/utils/error-helpers.d.ts +37 -0
  182. package/dist/utils/error-helpers.d.ts.map +1 -0
  183. package/dist/utils/error-helpers.js +47 -0
  184. package/dist/utils/error-helpers.js.map +1 -0
  185. package/dist/utils/logger.d.ts.map +1 -1
  186. package/dist/utils/logger.js +6 -3
  187. package/dist/utils/logger.js.map +1 -1
  188. package/dist/utils/security-utils.d.ts +0 -21
  189. package/dist/utils/security-utils.d.ts.map +1 -1
  190. package/dist/utils/security-utils.js +0 -47
  191. package/dist/utils/security-utils.js.map +1 -1
  192. package/dist/vector/VectorSearchManager.d.ts.map +1 -1
  193. package/dist/vector/VectorSearchManager.js +9 -32
  194. package/dist/vector/VectorSearchManager.js.map +1 -1
  195. package/docker-compose.yml +11 -2
  196. package/hooks/README.md +107 -0
  197. package/hooks/cursor/hooks.json +10 -0
  198. package/hooks/cursor/memory-journal.mdc +22 -0
  199. package/hooks/cursor/session-end.sh +19 -0
  200. package/hooks/kilo-code/session-end-mode.json +11 -0
  201. package/hooks/kiro/session-end.md +13 -0
  202. package/mcp-config-example.json +1 -0
  203. package/package.json +11 -9
  204. package/playwright.config.ts +29 -0
  205. package/releases/v4.5.0.md +116 -0
  206. package/releases/v5.0.0.md +105 -0
  207. package/scripts/generate-server-instructions.ts +176 -0
  208. package/scripts/server-instructions-function-body.ts +77 -0
  209. package/server.json +3 -3
  210. package/src/cli.ts +45 -1
  211. package/src/constants/ServerInstructions.ts +133 -73
  212. package/src/constants/icons.ts +8 -7
  213. package/src/constants/server-instructions.md +268 -0
  214. package/src/database/SqliteAdapter.ts +358 -192
  215. package/src/database/schema.ts +125 -0
  216. package/src/filtering/ToolFilter.ts +13 -2
  217. package/src/github/GitHubIntegration.ts +1 -3
  218. package/src/handlers/prompts/github.ts +209 -0
  219. package/src/handlers/prompts/index.ts +10 -499
  220. package/src/handlers/prompts/workflow.ts +314 -0
  221. package/src/handlers/resources/core.ts +528 -0
  222. package/src/handlers/resources/github.ts +358 -0
  223. package/src/handlers/resources/graph.ts +254 -0
  224. package/src/handlers/resources/index.ts +23 -1570
  225. package/src/handlers/resources/shared.ts +103 -0
  226. package/src/handlers/resources/team.ts +133 -0
  227. package/src/handlers/resources/templates.ts +374 -0
  228. package/src/handlers/tools/admin.ts +285 -0
  229. package/src/handlers/tools/analytics.ts +301 -0
  230. package/src/handlers/tools/backup.ts +242 -0
  231. package/src/handlers/tools/core.ts +350 -0
  232. package/src/handlers/tools/export.ts +115 -0
  233. package/src/handlers/tools/github/helpers.ts +86 -0
  234. package/src/handlers/tools/github/insights-tools.ts +119 -0
  235. package/src/handlers/tools/github/issue-tools.ts +439 -0
  236. package/src/handlers/tools/github/kanban-tools.ts +134 -0
  237. package/src/handlers/tools/github/milestone-tools.ts +392 -0
  238. package/src/handlers/tools/github/mutation-tools.ts +17 -0
  239. package/src/handlers/tools/github/read-tools.ts +328 -0
  240. package/src/handlers/tools/github/schemas.ts +369 -0
  241. package/src/handlers/tools/github.ts +36 -0
  242. package/src/handlers/tools/index.ts +144 -3325
  243. package/src/handlers/tools/relationships.ts +358 -0
  244. package/src/handlers/tools/schemas.ts +132 -0
  245. package/src/handlers/tools/search.ts +343 -0
  246. package/src/handlers/tools/team.ts +273 -0
  247. package/src/server/McpServer.ts +63 -358
  248. package/src/server/Scheduler.ts +278 -0
  249. package/src/transports/http.ts +635 -0
  250. package/src/types/entities.ts +145 -0
  251. package/src/types/filtering.ts +54 -0
  252. package/src/types/github.ts +180 -0
  253. package/src/types/index.ts +67 -375
  254. package/src/utils/error-helpers.ts +52 -0
  255. package/src/utils/logger.ts +6 -3
  256. package/src/utils/security-utils.ts +0 -52
  257. package/src/vector/VectorSearchManager.ts +9 -33
  258. package/tests/constants/icons.test.ts +1 -2
  259. package/tests/constants/server-instructions.test.ts +30 -4
  260. package/tests/database/sqlite-adapter.test.ts +91 -7
  261. package/tests/e2e/auth.spec.ts +154 -0
  262. package/tests/e2e/health.spec.ts +63 -0
  263. package/tests/e2e/protocols.spec.ts +134 -0
  264. package/tests/e2e/resources.spec.ts +103 -0
  265. package/tests/e2e/scheduler.spec.ts +79 -0
  266. package/tests/e2e/security.spec.ts +91 -0
  267. package/tests/e2e/sessions.spec.ts +95 -0
  268. package/tests/e2e/stateless.spec.ts +121 -0
  269. package/tests/e2e/tools.spec.ts +111 -0
  270. package/tests/filtering/tool-filter.test.ts +46 -0
  271. package/tests/handlers/error-path-coverage.test.ts +324 -0
  272. package/tests/handlers/github-resource-handlers.test.ts +453 -0
  273. package/tests/handlers/github-tool-handlers.test.ts +899 -0
  274. package/tests/handlers/prompt-handler-coverage.test.ts +106 -0
  275. package/tests/handlers/prompt-handlers.test.ts +40 -0
  276. package/tests/handlers/resource-handler-coverage.test.ts +181 -0
  277. package/tests/handlers/resource-handlers.test.ts +33 -9
  278. package/tests/handlers/search-tool-handlers.test.ts +272 -0
  279. package/tests/handlers/targeted-gap-closure.test.ts +387 -0
  280. package/tests/handlers/team-resource-handlers.test.ts +156 -0
  281. package/tests/handlers/team-tool-handlers.test.ts +301 -0
  282. package/tests/handlers/tool-handler-coverage.test.ts +469 -0
  283. package/tests/handlers/tool-handlers.test.ts +2 -2
  284. package/tests/security/sql-injection.test.ts +3 -54
  285. package/tests/server/mcp-server.test.ts +503 -8
  286. package/tests/server/scheduler.test.ts +400 -0
  287. package/tests/transports/http-transport.test.ts +620 -0
  288. package/tests/vector/vector-search-manager.test.ts +60 -0
  289. package/vitest.config.ts +4 -1
  290. package/.memory-journal-team.db +0 -0
  291. package/.vscode/settings.json +0 -84
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Shared Zod Schemas for Tool Handlers
3
+ *
4
+ * Contains cross-group schemas used by multiple tool modules:
5
+ * - EntryOutputSchema: used by core, search, export, admin
6
+ * - EntriesListOutputSchema: used by search, core
7
+ * - RelationshipOutputSchema: used by core, relationships
8
+ * - TagOutputSchema: used by core, analytics
9
+ * - ImportanceBreakdownSchema: used by core
10
+ * - Shared constants: ENTRY_TYPES, SIGNIFICANCE_TYPES, DATE_FORMAT_REGEX
11
+ *
12
+ * Group-specific output schemas stay colocated with their group files.
13
+ */
14
+ import { z } from 'zod';
15
+ /**
16
+ * Valid entry types (matches EntryType union in types/index.ts)
17
+ */
18
+ export declare const ENTRY_TYPES: readonly ["personal_reflection", "project_decision", "technical_achievement", "bug_fix", "feature_implementation", "code_review", "meeting_notes", "learning", "research", "planning", "retrospective", "standup", "technical_note", "development_note", "enhancement", "milestone", "system_integration_test", "test_entry", "other"];
19
+ /**
20
+ * Valid significance types (matches SignificanceType union in types/index.ts)
21
+ */
22
+ export declare const SIGNIFICANCE_TYPES: readonly ["milestone", "breakthrough", "technical_breakthrough", "decision", "lesson_learned", "blocker_resolved", "release"];
23
+ /** YYYY-MM-DD date format regex */
24
+ export declare const DATE_FORMAT_REGEX: RegExp;
25
+ export declare const DATE_FORMAT_MESSAGE = "Date must be YYYY-MM-DD format";
26
+ /**
27
+ * Schema for a journal entry in output responses.
28
+ * Uses camelCase to match actual database output format.
29
+ */
30
+ export declare const EntryOutputSchema: z.ZodObject<{
31
+ id: z.ZodNumber;
32
+ content: z.ZodString;
33
+ entryType: z.ZodString;
34
+ isPersonal: z.ZodBoolean;
35
+ timestamp: z.ZodString;
36
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
37
+ significanceType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
38
+ autoContext: z.ZodOptional<z.ZodNullable<z.ZodString>>;
39
+ deletedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
40
+ projectNumber: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
41
+ projectOwner: z.ZodOptional<z.ZodNullable<z.ZodString>>;
42
+ issueNumber: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
43
+ issueUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
44
+ prNumber: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
45
+ prUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
46
+ prStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
47
+ workflowRunId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
48
+ workflowName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
49
+ workflowStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
50
+ }, z.core.$strip>;
51
+ /**
52
+ * Schema for list of entries with count.
53
+ * Used by get_recent_entries, search_entries, search_by_date_range.
54
+ */
55
+ export declare const EntriesListOutputSchema: z.ZodObject<{
56
+ entries: z.ZodOptional<z.ZodArray<z.ZodObject<{
57
+ id: z.ZodNumber;
58
+ content: z.ZodString;
59
+ entryType: z.ZodString;
60
+ isPersonal: z.ZodBoolean;
61
+ timestamp: z.ZodString;
62
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
63
+ significanceType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
64
+ autoContext: z.ZodOptional<z.ZodNullable<z.ZodString>>;
65
+ deletedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
66
+ projectNumber: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
67
+ projectOwner: z.ZodOptional<z.ZodNullable<z.ZodString>>;
68
+ issueNumber: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
69
+ issueUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
70
+ prNumber: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
71
+ prUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
72
+ prStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
73
+ workflowRunId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
74
+ workflowName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
75
+ workflowStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
76
+ }, z.core.$strip>>>;
77
+ count: z.ZodOptional<z.ZodNumber>;
78
+ success: z.ZodOptional<z.ZodBoolean>;
79
+ error: z.ZodOptional<z.ZodString>;
80
+ }, z.core.$strip>;
81
+ /**
82
+ * Schema for a relationship between entries.
83
+ */
84
+ export declare const RelationshipOutputSchema: z.ZodObject<{
85
+ id: z.ZodNumber;
86
+ fromEntryId: z.ZodNumber;
87
+ toEntryId: z.ZodNumber;
88
+ relationshipType: z.ZodString;
89
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
90
+ createdAt: z.ZodString;
91
+ }, z.core.$strip>;
92
+ /**
93
+ * Importance score breakdown schema.
94
+ */
95
+ export declare const ImportanceBreakdownSchema: z.ZodObject<{
96
+ significance: z.ZodNumber;
97
+ relationships: z.ZodNumber;
98
+ causal: z.ZodNumber;
99
+ recency: z.ZodNumber;
100
+ }, z.core.$strip>;
101
+ /**
102
+ * Tag with usage count.
103
+ */
104
+ export declare const TagOutputSchema: z.ZodObject<{
105
+ name: z.ZodString;
106
+ count: z.ZodNullable<z.ZodNumber>;
107
+ }, z.core.$strip>;
108
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/handlers/tools/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB;;GAEG;AACH,eAAO,MAAM,WAAW,wUAoBd,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,kBAAkB,+HAQrB,CAAA;AAEV,mCAAmC;AACnC,eAAO,MAAM,iBAAiB,QAAwB,CAAA;AACtD,eAAO,MAAM,mBAAmB,mCAAmC,CAAA;AAMnE;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;iBAoB5B,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;iBAKlC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;iBAOnC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;iBAKpC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;iBAG1B,CAAA"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Shared Zod Schemas for Tool Handlers
3
+ *
4
+ * Contains cross-group schemas used by multiple tool modules:
5
+ * - EntryOutputSchema: used by core, search, export, admin
6
+ * - EntriesListOutputSchema: used by search, core
7
+ * - RelationshipOutputSchema: used by core, relationships
8
+ * - TagOutputSchema: used by core, analytics
9
+ * - ImportanceBreakdownSchema: used by core
10
+ * - Shared constants: ENTRY_TYPES, SIGNIFICANCE_TYPES, DATE_FORMAT_REGEX
11
+ *
12
+ * Group-specific output schemas stay colocated with their group files.
13
+ */
14
+ import { z } from 'zod';
15
+ // ============================================================================
16
+ // Shared Constants
17
+ // ============================================================================
18
+ /**
19
+ * Valid entry types (matches EntryType union in types/index.ts)
20
+ */
21
+ export const ENTRY_TYPES = [
22
+ 'personal_reflection',
23
+ 'project_decision',
24
+ 'technical_achievement',
25
+ 'bug_fix',
26
+ 'feature_implementation',
27
+ 'code_review',
28
+ 'meeting_notes',
29
+ 'learning',
30
+ 'research',
31
+ 'planning',
32
+ 'retrospective',
33
+ 'standup',
34
+ 'technical_note',
35
+ 'development_note',
36
+ 'enhancement',
37
+ 'milestone',
38
+ 'system_integration_test',
39
+ 'test_entry',
40
+ 'other',
41
+ ];
42
+ /**
43
+ * Valid significance types (matches SignificanceType union in types/index.ts)
44
+ */
45
+ export const SIGNIFICANCE_TYPES = [
46
+ 'milestone',
47
+ 'breakthrough',
48
+ 'technical_breakthrough',
49
+ 'decision',
50
+ 'lesson_learned',
51
+ 'blocker_resolved',
52
+ 'release',
53
+ ];
54
+ /** YYYY-MM-DD date format regex */
55
+ export const DATE_FORMAT_REGEX = /^\d{4}-\d{2}-\d{2}$/;
56
+ export const DATE_FORMAT_MESSAGE = 'Date must be YYYY-MM-DD format';
57
+ // ============================================================================
58
+ // Cross-Group Output Schemas
59
+ // ============================================================================
60
+ /**
61
+ * Schema for a journal entry in output responses.
62
+ * Uses camelCase to match actual database output format.
63
+ */
64
+ export const EntryOutputSchema = z.object({
65
+ id: z.number(),
66
+ content: z.string(),
67
+ entryType: z.string(),
68
+ isPersonal: z.boolean(),
69
+ timestamp: z.string(),
70
+ tags: z.array(z.string()).optional(),
71
+ significanceType: z.string().nullable().optional(),
72
+ autoContext: z.string().nullable().optional(),
73
+ deletedAt: z.string().nullable().optional(),
74
+ projectNumber: z.number().nullable().optional(),
75
+ projectOwner: z.string().nullable().optional(),
76
+ issueNumber: z.number().nullable().optional(),
77
+ issueUrl: z.string().nullable().optional(),
78
+ prNumber: z.number().nullable().optional(),
79
+ prUrl: z.string().nullable().optional(),
80
+ prStatus: z.string().nullable().optional(),
81
+ workflowRunId: z.number().nullable().optional(),
82
+ workflowName: z.string().nullable().optional(),
83
+ workflowStatus: z.string().nullable().optional(),
84
+ });
85
+ /**
86
+ * Schema for list of entries with count.
87
+ * Used by get_recent_entries, search_entries, search_by_date_range.
88
+ */
89
+ export const EntriesListOutputSchema = z.object({
90
+ entries: z.array(EntryOutputSchema).optional(),
91
+ count: z.number().optional(),
92
+ success: z.boolean().optional(),
93
+ error: z.string().optional(),
94
+ });
95
+ /**
96
+ * Schema for a relationship between entries.
97
+ */
98
+ export const RelationshipOutputSchema = z.object({
99
+ id: z.number(),
100
+ fromEntryId: z.number(),
101
+ toEntryId: z.number(),
102
+ relationshipType: z.string(),
103
+ description: z.string().nullable().optional(),
104
+ createdAt: z.string(),
105
+ });
106
+ /**
107
+ * Importance score breakdown schema.
108
+ */
109
+ export const ImportanceBreakdownSchema = z.object({
110
+ significance: z.number(),
111
+ relationships: z.number(),
112
+ causal: z.number(),
113
+ recency: z.number(),
114
+ });
115
+ /**
116
+ * Tag with usage count.
117
+ */
118
+ export const TagOutputSchema = z.object({
119
+ name: z.string(),
120
+ count: z.number().nullable(),
121
+ });
122
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/handlers/tools/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Search Tool Group - 4 tools
3
+ *
4
+ * Tools: search_entries, search_by_date_range, semantic_search, get_vector_index_stats
5
+ */
6
+ import type { ToolDefinition, ToolContext } from '../../types/index.js';
7
+ export declare function getSearchTools(context: ToolContext): ToolDefinition[];
8
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/handlers/tools/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AA0GvE,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,EAAE,CA6LrE"}
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Search Tool Group - 4 tools
3
+ *
4
+ * Tools: search_entries, search_by_date_range, semantic_search, get_vector_index_stats
5
+ */
6
+ import { z } from 'zod';
7
+ import { formatHandlerError } from '../../utils/error-helpers.js';
8
+ import { ENTRY_TYPES, DATE_FORMAT_REGEX, DATE_FORMAT_MESSAGE, EntryOutputSchema, EntriesListOutputSchema, } from './schemas.js';
9
+ // ============================================================================
10
+ // Input Schemas
11
+ // ============================================================================
12
+ /** Strict schema — used inside handler for structured Zod errors */
13
+ const SearchEntriesSchema = z.object({
14
+ query: z.string().optional(),
15
+ limit: z.number().max(500).optional().default(10),
16
+ is_personal: z.boolean().optional(),
17
+ project_number: z.number().optional(),
18
+ issue_number: z.number().optional(),
19
+ pr_number: z.number().optional(),
20
+ pr_status: z.enum(['draft', 'open', 'merged', 'closed']).optional(),
21
+ workflow_run_id: z.number().optional(),
22
+ });
23
+ /** Relaxed schema — passed to SDK inputSchema so Zod enum errors reach the handler */
24
+ const SearchEntriesSchemaMcp = z.object({
25
+ query: z.string().optional(),
26
+ limit: z.number().max(500).optional().default(10),
27
+ is_personal: z.boolean().optional(),
28
+ project_number: z.number().optional(),
29
+ issue_number: z.number().optional(),
30
+ pr_number: z.number().optional(),
31
+ pr_status: z.string().optional(),
32
+ workflow_run_id: z.number().optional(),
33
+ });
34
+ /** Strict schema — used inside handler for structured Zod errors */
35
+ const SearchByDateRangeSchema = z.object({
36
+ start_date: z.string().regex(DATE_FORMAT_REGEX, DATE_FORMAT_MESSAGE),
37
+ end_date: z.string().regex(DATE_FORMAT_REGEX, DATE_FORMAT_MESSAGE),
38
+ entry_type: z.enum(ENTRY_TYPES).optional(),
39
+ tags: z.array(z.string()).optional(),
40
+ is_personal: z.boolean().optional(),
41
+ project_number: z.number().optional(),
42
+ issue_number: z.number().optional(),
43
+ pr_number: z.number().optional(),
44
+ workflow_run_id: z.number().optional(),
45
+ limit: z.number().max(500).optional().default(500),
46
+ });
47
+ /** Relaxed schema — passed to SDK inputSchema so Zod errors reach the handler */
48
+ const SearchByDateRangeSchemaMcp = z.object({
49
+ start_date: z.string(),
50
+ end_date: z.string(),
51
+ entry_type: z.string().optional(),
52
+ tags: z.array(z.string()).optional(),
53
+ is_personal: z.boolean().optional(),
54
+ project_number: z.number().optional(),
55
+ issue_number: z.number().optional(),
56
+ pr_number: z.number().optional(),
57
+ workflow_run_id: z.number().optional(),
58
+ limit: z.number().max(500).optional().default(500),
59
+ });
60
+ const SemanticSearchSchema = z.object({
61
+ query: z.string(),
62
+ limit: z.number().max(500).optional().default(10),
63
+ similarity_threshold: z.number().optional().default(0.25),
64
+ is_personal: z.boolean().optional(),
65
+ hint_on_empty: z
66
+ .boolean()
67
+ .optional()
68
+ .default(true)
69
+ .describe('Include hint when no results found (default: true)'),
70
+ });
71
+ // ============================================================================
72
+ // Output Schemas
73
+ // ============================================================================
74
+ const SemanticEntryOutputSchema = EntryOutputSchema.extend({
75
+ similarity: z.number(),
76
+ });
77
+ const SemanticSearchOutputSchema = z.object({
78
+ query: z.string().optional(),
79
+ entries: z.array(SemanticEntryOutputSchema).optional(),
80
+ count: z.number().optional(),
81
+ hint: z.string().optional(),
82
+ success: z.boolean().optional(),
83
+ error: z.string().optional(),
84
+ });
85
+ const VectorStatsOutputSchema = z.object({
86
+ available: z.boolean(),
87
+ error: z.string().optional(),
88
+ entryCount: z.number().optional(),
89
+ indexSize: z.number().optional(),
90
+ });
91
+ // ============================================================================
92
+ // Tool Definitions
93
+ // ============================================================================
94
+ export function getSearchTools(context) {
95
+ const { db, teamDb, vectorManager } = context;
96
+ return [
97
+ {
98
+ name: 'search_entries',
99
+ title: 'Search Entries',
100
+ description: 'Search journal entries with optional filters for GitHub Projects, Issues, PRs, and Actions',
101
+ group: 'search',
102
+ inputSchema: SearchEntriesSchemaMcp,
103
+ outputSchema: EntriesListOutputSchema,
104
+ annotations: { readOnlyHint: true, idempotentHint: true },
105
+ handler: (params) => {
106
+ try {
107
+ const input = SearchEntriesSchema.parse(params);
108
+ const hasFilters = input.project_number !== undefined ||
109
+ input.issue_number !== undefined ||
110
+ input.pr_number !== undefined ||
111
+ input.is_personal !== undefined;
112
+ let personalEntries;
113
+ if (!input.query && !hasFilters) {
114
+ personalEntries = db.getRecentEntries(input.limit, input.is_personal);
115
+ }
116
+ else {
117
+ personalEntries = db.searchEntries(input.query || '', {
118
+ limit: input.limit,
119
+ isPersonal: input.is_personal,
120
+ projectNumber: input.project_number,
121
+ issueNumber: input.issue_number,
122
+ prNumber: input.pr_number,
123
+ });
124
+ }
125
+ // Cross-database merge when team DB is available
126
+ if (teamDb) {
127
+ let teamEntries;
128
+ if (!input.query && !hasFilters) {
129
+ teamEntries = teamDb.getRecentEntries(input.limit);
130
+ }
131
+ else {
132
+ teamEntries = teamDb.searchEntries(input.query || '', {
133
+ limit: input.limit,
134
+ projectNumber: input.project_number,
135
+ issueNumber: input.issue_number,
136
+ prNumber: input.pr_number,
137
+ });
138
+ }
139
+ const merged = mergeAndDedup(personalEntries.map((e) => ({ ...e, source: 'personal' })), teamEntries.map((e) => ({ ...e, source: 'team' })), input.limit);
140
+ return { entries: merged, count: merged.length };
141
+ }
142
+ return { entries: personalEntries, count: personalEntries.length };
143
+ }
144
+ catch (err) {
145
+ return formatHandlerError(err);
146
+ }
147
+ },
148
+ },
149
+ {
150
+ name: 'search_by_date_range',
151
+ title: 'Search by Date Range',
152
+ description: 'Search journal entries within a date range with optional filters',
153
+ group: 'search',
154
+ inputSchema: SearchByDateRangeSchemaMcp,
155
+ outputSchema: EntriesListOutputSchema,
156
+ annotations: { readOnlyHint: true, idempotentHint: true },
157
+ handler: (params) => {
158
+ try {
159
+ const input = SearchByDateRangeSchema.parse(params);
160
+ const personalEntries = db.searchByDateRange(input.start_date, input.end_date, {
161
+ entryType: input.entry_type,
162
+ tags: input.tags,
163
+ isPersonal: input.is_personal,
164
+ projectNumber: input.project_number,
165
+ limit: input.limit,
166
+ });
167
+ // Cross-database merge when team DB is available
168
+ if (teamDb) {
169
+ const teamEntries = teamDb.searchByDateRange(input.start_date, input.end_date, {
170
+ entryType: input.entry_type,
171
+ tags: input.tags,
172
+ projectNumber: input.project_number,
173
+ limit: input.limit,
174
+ });
175
+ const merged = mergeAndDedup(personalEntries.map((e) => ({ ...e, source: 'personal' })), teamEntries.map((e) => ({ ...e, source: 'team' })), input.limit);
176
+ return { entries: merged, count: merged.length };
177
+ }
178
+ return { entries: personalEntries, count: personalEntries.length };
179
+ }
180
+ catch (err) {
181
+ return formatHandlerError(err);
182
+ }
183
+ },
184
+ },
185
+ {
186
+ name: 'semantic_search',
187
+ title: 'Semantic Search',
188
+ description: 'Perform semantic/vector search on journal entries using AI embeddings',
189
+ group: 'search',
190
+ inputSchema: SemanticSearchSchema,
191
+ outputSchema: SemanticSearchOutputSchema,
192
+ annotations: { readOnlyHint: true, idempotentHint: true },
193
+ handler: async (params) => {
194
+ try {
195
+ const input = SemanticSearchSchema.parse(params);
196
+ if (!vectorManager) {
197
+ return {
198
+ success: false,
199
+ error: 'Semantic search not initialized. Vector search manager is not available.',
200
+ query: input.query,
201
+ entries: [],
202
+ count: 0,
203
+ };
204
+ }
205
+ const results = await vectorManager.search(input.query, input.limit ?? 10, input.similarity_threshold ?? 0.25);
206
+ const entries = results
207
+ .map((r) => {
208
+ const entry = db.getEntryById(r.entryId);
209
+ if (!entry)
210
+ return null;
211
+ return {
212
+ ...entry,
213
+ similarity: Math.round(r.score * 100) / 100,
214
+ };
215
+ })
216
+ .filter((e) => e !== null);
217
+ const stats = await vectorManager.getStats();
218
+ const isIndexEmpty = stats.itemCount === 0;
219
+ const includeHint = input.hint_on_empty ?? true;
220
+ return {
221
+ query: input.query,
222
+ entries,
223
+ count: entries.length,
224
+ ...(includeHint && isIndexEmpty
225
+ ? {
226
+ hint: 'No entries in vector index. Use rebuild_vector_index to index existing entries.',
227
+ }
228
+ : includeHint && entries.length === 0
229
+ ? {
230
+ hint: `No entries matched your query above the similarity threshold (${String(input.similarity_threshold ?? 0.25)}). Try lowering similarity_threshold (e.g., 0.15) for broader matches.`,
231
+ }
232
+ : {}),
233
+ };
234
+ }
235
+ catch (err) {
236
+ return formatHandlerError(err);
237
+ }
238
+ },
239
+ },
240
+ {
241
+ name: 'get_vector_index_stats',
242
+ title: 'Get Vector Index Stats',
243
+ description: 'Get statistics about the semantic search vector index',
244
+ group: 'search',
245
+ inputSchema: z.object({}),
246
+ outputSchema: VectorStatsOutputSchema,
247
+ annotations: { readOnlyHint: true, idempotentHint: true },
248
+ handler: async (_params) => {
249
+ try {
250
+ if (!vectorManager) {
251
+ return { available: false, error: 'Vector search not available' };
252
+ }
253
+ const stats = await vectorManager.getStats();
254
+ return { available: true, ...stats };
255
+ }
256
+ catch (err) {
257
+ return formatHandlerError(err);
258
+ }
259
+ },
260
+ },
261
+ ];
262
+ }
263
+ /**
264
+ * Merge personal and team results, deduplicate by content,
265
+ * and sort by timestamp descending.
266
+ */
267
+ function mergeAndDedup(personal, team, limit) {
268
+ const seen = new Set();
269
+ const merged = [];
270
+ // Concat and sort by timestamp descending
271
+ const all = [...personal, ...team].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
272
+ for (const entry of all) {
273
+ // Deduplicate by content (same entry shared to team)
274
+ const key = entry.content.slice(0, 200);
275
+ if (!seen.has(key)) {
276
+ seen.add(key);
277
+ merged.push(entry);
278
+ }
279
+ }
280
+ return limit !== undefined ? merged.slice(0, limit) : merged;
281
+ }
282
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/handlers/tools/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Team Tool Group - 3 tools
3
+ *
4
+ * Tools: team_create_entry, team_get_recent, team_search
5
+ *
6
+ * Requires TEAM_DB_PATH to be configured. All tools return structured
7
+ * errors when the team database is not available.
8
+ */
9
+ import type { ToolDefinition, ToolContext } from '../../types/index.js';
10
+ export declare function getTeamTools(context: ToolContext): ToolDefinition[];
11
+ //# sourceMappingURL=team.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../../src/handlers/tools/team.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAgHvE,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,EAAE,CAqJnE"}