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,125 @@
1
+ /**
2
+ * Memory Journal MCP Server - Database Schema
3
+ *
4
+ * SQL DDL for initialization and input types for the database adapter.
5
+ */
6
+
7
+ import type { EntryType, SignificanceType } from '../types/index.js'
8
+
9
+ /**
10
+ * SQL schema for database initialization.
11
+ * Creates all tables and indexes if they don't already exist.
12
+ */
13
+ export const SCHEMA_SQL = `
14
+ -- Main journal entries table
15
+ CREATE TABLE IF NOT EXISTS memory_journal (
16
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
17
+ entry_type TEXT NOT NULL,
18
+ content TEXT NOT NULL,
19
+ timestamp TEXT DEFAULT CURRENT_TIMESTAMP,
20
+ is_personal INTEGER DEFAULT 1,
21
+ significance_type TEXT,
22
+ auto_context TEXT,
23
+ deleted_at TEXT,
24
+ -- GitHub integration fields
25
+ project_number INTEGER,
26
+ project_owner TEXT,
27
+ issue_number INTEGER,
28
+ issue_url TEXT,
29
+ pr_number INTEGER,
30
+ pr_url TEXT,
31
+ pr_status TEXT,
32
+ workflow_run_id INTEGER,
33
+ workflow_name TEXT,
34
+ workflow_status TEXT
35
+ );
36
+
37
+ -- Tags table
38
+ CREATE TABLE IF NOT EXISTS tags (
39
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
40
+ name TEXT UNIQUE NOT NULL,
41
+ usage_count INTEGER DEFAULT 0
42
+ );
43
+
44
+ -- Junction table for entry-tag relationships
45
+ CREATE TABLE IF NOT EXISTS entry_tags (
46
+ entry_id INTEGER NOT NULL,
47
+ tag_id INTEGER NOT NULL,
48
+ PRIMARY KEY (entry_id, tag_id),
49
+ FOREIGN KEY (entry_id) REFERENCES memory_journal(id) ON DELETE CASCADE,
50
+ FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
51
+ );
52
+
53
+ -- Relationships between entries
54
+ CREATE TABLE IF NOT EXISTS relationships (
55
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
56
+ from_entry_id INTEGER NOT NULL,
57
+ to_entry_id INTEGER NOT NULL,
58
+ relationship_type TEXT NOT NULL,
59
+ description TEXT,
60
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP,
61
+ FOREIGN KEY (from_entry_id) REFERENCES memory_journal(id) ON DELETE CASCADE,
62
+ FOREIGN KEY (to_entry_id) REFERENCES memory_journal(id) ON DELETE CASCADE
63
+ );
64
+
65
+ -- Embeddings for vector search (stored as JSON for sql.js compatibility)
66
+ CREATE TABLE IF NOT EXISTS embeddings (
67
+ entry_id INTEGER PRIMARY KEY,
68
+ embedding TEXT NOT NULL,
69
+ model_name TEXT NOT NULL,
70
+ FOREIGN KEY (entry_id) REFERENCES memory_journal(id) ON DELETE CASCADE
71
+ );
72
+
73
+ -- Indexes for performance
74
+ CREATE INDEX IF NOT EXISTS idx_memory_journal_timestamp ON memory_journal(timestamp);
75
+ CREATE INDEX IF NOT EXISTS idx_memory_journal_type ON memory_journal(entry_type);
76
+ CREATE INDEX IF NOT EXISTS idx_memory_journal_personal ON memory_journal(is_personal);
77
+ CREATE INDEX IF NOT EXISTS idx_memory_journal_deleted ON memory_journal(deleted_at);
78
+ CREATE INDEX IF NOT EXISTS idx_memory_journal_project ON memory_journal(project_number);
79
+ CREATE INDEX IF NOT EXISTS idx_memory_journal_issue ON memory_journal(issue_number);
80
+ CREATE INDEX IF NOT EXISTS idx_memory_journal_pr ON memory_journal(pr_number);
81
+ CREATE INDEX IF NOT EXISTS idx_tags_name ON tags(name);
82
+ CREATE INDEX IF NOT EXISTS idx_entry_tags_entry ON entry_tags(entry_id);
83
+ CREATE INDEX IF NOT EXISTS idx_entry_tags_tag ON entry_tags(tag_id);
84
+ CREATE INDEX IF NOT EXISTS idx_relationships_from ON relationships(from_entry_id);
85
+ CREATE INDEX IF NOT EXISTS idx_relationships_to ON relationships(to_entry_id);
86
+ `
87
+
88
+ /**
89
+ * Input for creating a new entry
90
+ */
91
+ export interface CreateEntryInput {
92
+ content: string
93
+ entryType?: EntryType
94
+ tags?: string[]
95
+ isPersonal?: boolean
96
+ significanceType?: SignificanceType
97
+ autoContext?: string
98
+ projectNumber?: number
99
+ projectOwner?: string
100
+ issueNumber?: number
101
+ issueUrl?: string
102
+ prNumber?: number
103
+ prUrl?: string
104
+ prStatus?: 'draft' | 'open' | 'merged' | 'closed'
105
+ workflowRunId?: number
106
+ workflowName?: string
107
+ workflowStatus?: 'queued' | 'in_progress' | 'completed'
108
+ }
109
+
110
+ /**
111
+ * SQL migration to add the author column for team databases.
112
+ * Applied after SCHEMA_SQL when initializing a team database.
113
+ */
114
+ export const TEAM_SCHEMA_SQL = `
115
+ -- Author column for team entries (identifies who shared the entry)
116
+ ALTER TABLE memory_journal ADD COLUMN author TEXT;
117
+ `
118
+
119
+ /**
120
+ * Input for creating a team entry (extends standard entry with author)
121
+ */
122
+ export interface CreateTeamEntryInput extends CreateEntryInput {
123
+ /** Author name (auto-detected from git config or TEAM_AUTHOR env) */
124
+ author?: string
125
+ }
@@ -13,7 +13,7 @@ export type { ToolFilterConfig } from '../types/index.js'
13
13
  /**
14
14
  * Tool group definitions mapping group names to tool names
15
15
  *
16
- * All 39 tools are categorized here for filtering support.
16
+ * All 42 tools are categorized here for filtering support.
17
17
  */
18
18
  export const TOOL_GROUPS: Record<ToolGroup, string[]> = {
19
19
  core: [
@@ -53,6 +53,7 @@ export const TOOL_GROUPS: Record<ToolGroup, string[]> = {
53
53
  'get_repo_insights',
54
54
  ],
55
55
  backup: ['backup_journal', 'list_backups', 'restore_backup', 'cleanup_backups'],
56
+ team: ['team_create_entry', 'team_get_recent', 'team_search'],
56
57
  }
57
58
 
58
59
  /**
@@ -61,7 +62,17 @@ export const TOOL_GROUPS: Record<ToolGroup, string[]> = {
61
62
  export const META_GROUPS: Record<MetaGroup, ToolGroup[]> = {
62
63
  starter: ['core', 'search'],
63
64
  essential: ['core'],
64
- full: ['core', 'search', 'analytics', 'relationships', 'export', 'admin', 'github', 'backup'],
65
+ full: [
66
+ 'core',
67
+ 'search',
68
+ 'analytics',
69
+ 'relationships',
70
+ 'export',
71
+ 'admin',
72
+ 'github',
73
+ 'backup',
74
+ 'team',
75
+ ],
65
76
  readonly: ['core', 'search', 'analytics', 'relationships', 'export'],
66
77
  }
67
78
 
@@ -1124,12 +1124,10 @@ export class GitHubIntegration {
1124
1124
  if (cached) return cached
1125
1125
 
1126
1126
  try {
1127
- // GitHub REST API uses 'open' | 'closed' | 'all' for milestone state
1128
- const apiState = state === 'all' ? undefined : state
1129
1127
  const response = await this.octokit.issues.listMilestones({
1130
1128
  owner,
1131
1129
  repo,
1132
- state: apiState,
1130
+ state,
1133
1131
  per_page: limit,
1134
1132
  sort: 'due_on',
1135
1133
  direction: 'asc',
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Memory Journal MCP Server - GitHub Prompt Definitions
3
+ *
4
+ * Prompts: project-status-summary, pr-summary, code-review-prep,
5
+ * pr-retrospective, actions-failure-digest, project-milestone-tracker
6
+ */
7
+
8
+ import type { SqliteAdapter } from '../../database/SqliteAdapter.js'
9
+ import { ICON_PROMPT } from '../../constants/icons.js'
10
+ import { execQuery, type InternalPromptDef } from './index.js'
11
+
12
+ /**
13
+ * Get GitHub prompt definitions
14
+ */
15
+ export function getGitHubPromptDefinitions(): InternalPromptDef[] {
16
+ return [
17
+ {
18
+ name: 'project-status-summary',
19
+ description: 'GitHub Project status reports',
20
+ icons: [ICON_PROMPT],
21
+ arguments: [
22
+ { name: 'project_number', description: 'GitHub Project number', required: true },
23
+ ],
24
+ handler: (args: Record<string, string>, db: SqliteAdapter) => {
25
+ const projectNumber = parseInt(args['project_number'] ?? '0', 10)
26
+ const entries = execQuery(
27
+ db,
28
+ `
29
+ SELECT * FROM memory_journal
30
+ WHERE project_number = ?
31
+ AND deleted_at IS NULL
32
+ ORDER BY timestamp DESC
33
+ LIMIT 20
34
+ `,
35
+ [projectNumber]
36
+ )
37
+
38
+ return {
39
+ messages: [
40
+ {
41
+ role: 'user',
42
+ content: {
43
+ type: 'text',
44
+ text: `Generate a status summary for Project #${String(projectNumber)}:\n\nEntries: ${JSON.stringify(entries, null, 2)}\n\nProvide: overview, recent activity, blockers, next steps.`,
45
+ },
46
+ },
47
+ ],
48
+ }
49
+ },
50
+ },
51
+ {
52
+ name: 'pr-summary',
53
+ description: 'Pull request journal activity summary',
54
+ icons: [ICON_PROMPT],
55
+ arguments: [{ name: 'pr_number', description: 'Pull request number', required: true }],
56
+ handler: (args: Record<string, string>, db: SqliteAdapter) => {
57
+ const prNumber = parseInt(args['pr_number'] ?? '0', 10)
58
+ const entries = execQuery(
59
+ db,
60
+ `
61
+ SELECT * FROM memory_journal
62
+ WHERE pr_number = ?
63
+ AND deleted_at IS NULL
64
+ ORDER BY timestamp ASC
65
+ `,
66
+ [prNumber]
67
+ )
68
+
69
+ return {
70
+ messages: [
71
+ {
72
+ role: 'user',
73
+ content: {
74
+ type: 'text',
75
+ text: `Summarize PR #${String(prNumber)} activity:\n\nJournal entries: ${JSON.stringify(entries, null, 2)}\n\nProvide: summary of changes, decisions made, testing done.`,
76
+ },
77
+ },
78
+ ],
79
+ }
80
+ },
81
+ },
82
+ {
83
+ name: 'code-review-prep',
84
+ description: 'Comprehensive PR review preparation',
85
+ icons: [ICON_PROMPT],
86
+ arguments: [{ name: 'pr_number', description: 'Pull request number', required: true }],
87
+ handler: (args: Record<string, string>, db: SqliteAdapter) => {
88
+ const prNumber = parseInt(args['pr_number'] ?? '0', 10)
89
+ const entries = execQuery(
90
+ db,
91
+ `
92
+ SELECT * FROM memory_journal
93
+ WHERE pr_number = ?
94
+ AND deleted_at IS NULL
95
+ ORDER BY timestamp ASC
96
+ `,
97
+ [prNumber]
98
+ )
99
+
100
+ return {
101
+ messages: [
102
+ {
103
+ role: 'user',
104
+ content: {
105
+ type: 'text',
106
+ text: `Prepare for code review of PR #${String(prNumber)}:\n\nContext entries: ${JSON.stringify(entries, null, 2)}\n\nProvide: review checklist, areas of concern, testing recommendations.`,
107
+ },
108
+ },
109
+ ],
110
+ }
111
+ },
112
+ },
113
+ {
114
+ name: 'pr-retrospective',
115
+ description: 'Completed PR analysis with learnings',
116
+ icons: [ICON_PROMPT],
117
+ arguments: [{ name: 'pr_number', description: 'Pull request number', required: true }],
118
+ handler: (args: Record<string, string>, db: SqliteAdapter) => {
119
+ const prNumber = parseInt(args['pr_number'] ?? '0', 10)
120
+ const entries = execQuery(
121
+ db,
122
+ `
123
+ SELECT * FROM memory_journal
124
+ WHERE pr_number = ?
125
+ AND deleted_at IS NULL
126
+ ORDER BY timestamp ASC
127
+ `,
128
+ [prNumber]
129
+ )
130
+
131
+ return {
132
+ messages: [
133
+ {
134
+ role: 'user',
135
+ content: {
136
+ type: 'text',
137
+ text: `Retrospective for PR #${String(prNumber)}:\n\nJournal entries: ${JSON.stringify(entries, null, 2)}\n\nProvide: what went well, challenges, lessons learned.`,
138
+ },
139
+ },
140
+ ],
141
+ }
142
+ },
143
+ },
144
+ {
145
+ name: 'actions-failure-digest',
146
+ description: 'CI/CD failure analysis with root cause identification',
147
+ icons: [ICON_PROMPT],
148
+ arguments: [],
149
+ handler: (_args: Record<string, string>, db: SqliteAdapter) => {
150
+ const entries = execQuery(
151
+ db,
152
+ `
153
+ SELECT * FROM memory_journal
154
+ WHERE workflow_run_id IS NOT NULL
155
+ AND deleted_at IS NULL
156
+ ORDER BY timestamp DESC
157
+ LIMIT 20
158
+ `
159
+ )
160
+
161
+ return {
162
+ messages: [
163
+ {
164
+ role: 'user',
165
+ content: {
166
+ type: 'text',
167
+ text: `Analyze CI/CD failures from these workflow entries:\n\n${JSON.stringify(entries, null, 2)}\n\nProvide: failure patterns, root causes, remediation steps.`,
168
+ },
169
+ },
170
+ ],
171
+ }
172
+ },
173
+ },
174
+ {
175
+ name: 'project-milestone-tracker',
176
+ description: 'Milestone progress tracking',
177
+ icons: [ICON_PROMPT],
178
+ arguments: [
179
+ { name: 'project_number', description: 'GitHub Project number', required: true },
180
+ ],
181
+ handler: (args: Record<string, string>, db: SqliteAdapter) => {
182
+ const projectNumber = parseInt(args['project_number'] ?? '0', 10)
183
+ const entries = execQuery(
184
+ db,
185
+ `
186
+ SELECT * FROM memory_journal
187
+ WHERE project_number = ?
188
+ AND significance_type IS NOT NULL
189
+ AND deleted_at IS NULL
190
+ ORDER BY timestamp DESC
191
+ `,
192
+ [projectNumber]
193
+ )
194
+
195
+ return {
196
+ messages: [
197
+ {
198
+ role: 'user',
199
+ content: {
200
+ type: 'text',
201
+ text: `Track milestones for Project #${String(projectNumber)}:\n\nMilestone entries: ${JSON.stringify(entries, null, 2)}\n\nProvide: progress summary, upcoming milestones, timeline.`,
202
+ },
203
+ },
204
+ ],
205
+ }
206
+ },
207
+ },
208
+ ]
209
+ }