decibel-tools-mcp 1.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 (255) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +335 -0
  3. package/dist/agentic/compiler.d.ts +21 -0
  4. package/dist/agentic/compiler.d.ts.map +1 -0
  5. package/dist/agentic/compiler.js +267 -0
  6. package/dist/agentic/compiler.js.map +1 -0
  7. package/dist/agentic/golden.d.ts +25 -0
  8. package/dist/agentic/golden.d.ts.map +1 -0
  9. package/dist/agentic/golden.js +255 -0
  10. package/dist/agentic/golden.js.map +1 -0
  11. package/dist/agentic/index.d.ts +17 -0
  12. package/dist/agentic/index.d.ts.map +1 -0
  13. package/dist/agentic/index.js +153 -0
  14. package/dist/agentic/index.js.map +1 -0
  15. package/dist/agentic/linter.d.ts +20 -0
  16. package/dist/agentic/linter.d.ts.map +1 -0
  17. package/dist/agentic/linter.js +340 -0
  18. package/dist/agentic/linter.js.map +1 -0
  19. package/dist/agentic/renderer.d.ts +17 -0
  20. package/dist/agentic/renderer.d.ts.map +1 -0
  21. package/dist/agentic/renderer.js +277 -0
  22. package/dist/agentic/renderer.js.map +1 -0
  23. package/dist/agentic/types.d.ts +199 -0
  24. package/dist/agentic/types.d.ts.map +1 -0
  25. package/dist/agentic/types.js +8 -0
  26. package/dist/agentic/types.js.map +1 -0
  27. package/dist/architectAdrs.d.ts +19 -0
  28. package/dist/architectAdrs.d.ts.map +1 -0
  29. package/dist/architectAdrs.js +123 -0
  30. package/dist/architectAdrs.js.map +1 -0
  31. package/dist/config.d.ts +8 -0
  32. package/dist/config.d.ts.map +1 -0
  33. package/dist/config.js +19 -0
  34. package/dist/config.js.map +1 -0
  35. package/dist/dataRoot.d.ts +45 -0
  36. package/dist/dataRoot.d.ts.map +1 -0
  37. package/dist/dataRoot.js +201 -0
  38. package/dist/dataRoot.js.map +1 -0
  39. package/dist/decibelPaths.d.ts +42 -0
  40. package/dist/decibelPaths.d.ts.map +1 -0
  41. package/dist/decibelPaths.js +150 -0
  42. package/dist/decibelPaths.js.map +1 -0
  43. package/dist/httpServer.d.ts +49 -0
  44. package/dist/httpServer.d.ts.map +1 -0
  45. package/dist/httpServer.js +1472 -0
  46. package/dist/httpServer.js.map +1 -0
  47. package/dist/lib/benchmark.d.ts +110 -0
  48. package/dist/lib/benchmark.d.ts.map +1 -0
  49. package/dist/lib/benchmark.js +338 -0
  50. package/dist/lib/benchmark.js.map +1 -0
  51. package/dist/lib/supabase.d.ts +123 -0
  52. package/dist/lib/supabase.d.ts.map +1 -0
  53. package/dist/lib/supabase.js +91 -0
  54. package/dist/lib/supabase.js.map +1 -0
  55. package/dist/projectPaths.d.ts +27 -0
  56. package/dist/projectPaths.d.ts.map +1 -0
  57. package/dist/projectPaths.js +86 -0
  58. package/dist/projectPaths.js.map +1 -0
  59. package/dist/projectRegistry.d.ts +97 -0
  60. package/dist/projectRegistry.d.ts.map +1 -0
  61. package/dist/projectRegistry.js +362 -0
  62. package/dist/projectRegistry.js.map +1 -0
  63. package/dist/sentinelIssues.d.ts +44 -0
  64. package/dist/sentinelIssues.d.ts.map +1 -0
  65. package/dist/sentinelIssues.js +213 -0
  66. package/dist/sentinelIssues.js.map +1 -0
  67. package/dist/server.d.ts +3 -0
  68. package/dist/server.d.ts.map +1 -0
  69. package/dist/server.js +93 -0
  70. package/dist/server.js.map +1 -0
  71. package/dist/test.d.ts +7 -0
  72. package/dist/test.d.ts.map +1 -0
  73. package/dist/test.js +77 -0
  74. package/dist/test.js.map +1 -0
  75. package/dist/tools/agentic/index.d.ts +7 -0
  76. package/dist/tools/agentic/index.d.ts.map +1 -0
  77. package/dist/tools/agentic/index.js +180 -0
  78. package/dist/tools/agentic/index.js.map +1 -0
  79. package/dist/tools/architect/index.d.ts +9 -0
  80. package/dist/tools/architect/index.d.ts.map +1 -0
  81. package/dist/tools/architect/index.js +383 -0
  82. package/dist/tools/architect/index.js.map +1 -0
  83. package/dist/tools/architect.d.ts +19 -0
  84. package/dist/tools/architect.d.ts.map +1 -0
  85. package/dist/tools/architect.js +88 -0
  86. package/dist/tools/architect.js.map +1 -0
  87. package/dist/tools/bench.d.ts +89 -0
  88. package/dist/tools/bench.d.ts.map +1 -0
  89. package/dist/tools/bench.js +826 -0
  90. package/dist/tools/bench.js.map +1 -0
  91. package/dist/tools/context/index.d.ts +11 -0
  92. package/dist/tools/context/index.d.ts.map +1 -0
  93. package/dist/tools/context/index.js +439 -0
  94. package/dist/tools/context/index.js.map +1 -0
  95. package/dist/tools/context.d.ts +146 -0
  96. package/dist/tools/context.d.ts.map +1 -0
  97. package/dist/tools/context.js +481 -0
  98. package/dist/tools/context.js.map +1 -0
  99. package/dist/tools/crit.d.ts +63 -0
  100. package/dist/tools/crit.d.ts.map +1 -0
  101. package/dist/tools/crit.js +159 -0
  102. package/dist/tools/crit.js.map +1 -0
  103. package/dist/tools/data-inspector.d.ts +188 -0
  104. package/dist/tools/data-inspector.d.ts.map +1 -0
  105. package/dist/tools/data-inspector.js +650 -0
  106. package/dist/tools/data-inspector.js.map +1 -0
  107. package/dist/tools/deck.d.ts +11 -0
  108. package/dist/tools/deck.d.ts.map +1 -0
  109. package/dist/tools/deck.js +170 -0
  110. package/dist/tools/deck.js.map +1 -0
  111. package/dist/tools/designer/index.d.ts +6 -0
  112. package/dist/tools/designer/index.d.ts.map +1 -0
  113. package/dist/tools/designer/index.js +177 -0
  114. package/dist/tools/designer/index.js.map +1 -0
  115. package/dist/tools/designer.d.ts +20 -0
  116. package/dist/tools/designer.d.ts.map +1 -0
  117. package/dist/tools/designer.js +75 -0
  118. package/dist/tools/designer.js.map +1 -0
  119. package/dist/tools/dojo/index.d.ts +13 -0
  120. package/dist/tools/dojo/index.d.ts.map +1 -0
  121. package/dist/tools/dojo/index.js +547 -0
  122. package/dist/tools/dojo/index.js.map +1 -0
  123. package/dist/tools/dojo.d.ts +254 -0
  124. package/dist/tools/dojo.d.ts.map +1 -0
  125. package/dist/tools/dojo.js +933 -0
  126. package/dist/tools/dojo.js.map +1 -0
  127. package/dist/tools/dojoBench.d.ts +49 -0
  128. package/dist/tools/dojoBench.d.ts.map +1 -0
  129. package/dist/tools/dojoBench.js +205 -0
  130. package/dist/tools/dojoBench.js.map +1 -0
  131. package/dist/tools/dojoGraduated.d.ts +50 -0
  132. package/dist/tools/dojoGraduated.d.ts.map +1 -0
  133. package/dist/tools/dojoGraduated.js +174 -0
  134. package/dist/tools/dojoGraduated.js.map +1 -0
  135. package/dist/tools/dojoPolicy.d.ts +65 -0
  136. package/dist/tools/dojoPolicy.d.ts.map +1 -0
  137. package/dist/tools/dojoPolicy.js +263 -0
  138. package/dist/tools/dojoPolicy.js.map +1 -0
  139. package/dist/tools/friction/index.d.ts +7 -0
  140. package/dist/tools/friction/index.d.ts.map +1 -0
  141. package/dist/tools/friction/index.js +239 -0
  142. package/dist/tools/friction/index.js.map +1 -0
  143. package/dist/tools/friction.d.ts +82 -0
  144. package/dist/tools/friction.d.ts.map +1 -0
  145. package/dist/tools/friction.js +331 -0
  146. package/dist/tools/friction.js.map +1 -0
  147. package/dist/tools/index.d.ts +5 -0
  148. package/dist/tools/index.d.ts.map +1 -0
  149. package/dist/tools/index.js +52 -0
  150. package/dist/tools/index.js.map +1 -0
  151. package/dist/tools/learnings/index.d.ts +5 -0
  152. package/dist/tools/learnings/index.d.ts.map +1 -0
  153. package/dist/tools/learnings/index.js +123 -0
  154. package/dist/tools/learnings/index.js.map +1 -0
  155. package/dist/tools/learnings.d.ts +41 -0
  156. package/dist/tools/learnings.d.ts.map +1 -0
  157. package/dist/tools/learnings.js +149 -0
  158. package/dist/tools/learnings.js.map +1 -0
  159. package/dist/tools/oracle/index.d.ts +5 -0
  160. package/dist/tools/oracle/index.d.ts.map +1 -0
  161. package/dist/tools/oracle/index.js +97 -0
  162. package/dist/tools/oracle/index.js.map +1 -0
  163. package/dist/tools/oracle.d.ts +90 -0
  164. package/dist/tools/oracle.d.ts.map +1 -0
  165. package/dist/tools/oracle.js +529 -0
  166. package/dist/tools/oracle.js.map +1 -0
  167. package/dist/tools/policy.d.ts +119 -0
  168. package/dist/tools/policy.d.ts.map +1 -0
  169. package/dist/tools/policy.js +406 -0
  170. package/dist/tools/policy.js.map +1 -0
  171. package/dist/tools/provenance/index.d.ts +4 -0
  172. package/dist/tools/provenance/index.d.ts.map +1 -0
  173. package/dist/tools/provenance/index.js +58 -0
  174. package/dist/tools/provenance/index.js.map +1 -0
  175. package/dist/tools/provenance.d.ts +75 -0
  176. package/dist/tools/provenance.d.ts.map +1 -0
  177. package/dist/tools/provenance.js +197 -0
  178. package/dist/tools/provenance.js.map +1 -0
  179. package/dist/tools/rateLimiter.d.ts +45 -0
  180. package/dist/tools/rateLimiter.d.ts.map +1 -0
  181. package/dist/tools/rateLimiter.js +91 -0
  182. package/dist/tools/rateLimiter.js.map +1 -0
  183. package/dist/tools/registry/index.d.ts +10 -0
  184. package/dist/tools/registry/index.d.ts.map +1 -0
  185. package/dist/tools/registry/index.js +467 -0
  186. package/dist/tools/registry/index.js.map +1 -0
  187. package/dist/tools/registry.d.ts +3 -0
  188. package/dist/tools/registry.d.ts.map +1 -0
  189. package/dist/tools/registry.js +189 -0
  190. package/dist/tools/registry.js.map +1 -0
  191. package/dist/tools/roadmap/index.d.ts +9 -0
  192. package/dist/tools/roadmap/index.d.ts.map +1 -0
  193. package/dist/tools/roadmap/index.js +250 -0
  194. package/dist/tools/roadmap/index.js.map +1 -0
  195. package/dist/tools/roadmap.d.ts +88 -0
  196. package/dist/tools/roadmap.d.ts.map +1 -0
  197. package/dist/tools/roadmap.js +365 -0
  198. package/dist/tools/roadmap.js.map +1 -0
  199. package/dist/tools/sentinel/index.d.ts +19 -0
  200. package/dist/tools/sentinel/index.d.ts.map +1 -0
  201. package/dist/tools/sentinel/index.js +832 -0
  202. package/dist/tools/sentinel/index.js.map +1 -0
  203. package/dist/tools/sentinel-scan-data.d.ts +90 -0
  204. package/dist/tools/sentinel-scan-data.d.ts.map +1 -0
  205. package/dist/tools/sentinel-scan-data.js +122 -0
  206. package/dist/tools/sentinel-scan-data.js.map +1 -0
  207. package/dist/tools/sentinel.d.ts +156 -0
  208. package/dist/tools/sentinel.d.ts.map +1 -0
  209. package/dist/tools/sentinel.js +603 -0
  210. package/dist/tools/sentinel.js.map +1 -0
  211. package/dist/tools/shared/index.d.ts +4 -0
  212. package/dist/tools/shared/index.d.ts.map +1 -0
  213. package/dist/tools/shared/index.js +7 -0
  214. package/dist/tools/shared/index.js.map +1 -0
  215. package/dist/tools/shared/project.d.ts +17 -0
  216. package/dist/tools/shared/project.d.ts.map +1 -0
  217. package/dist/tools/shared/project.js +36 -0
  218. package/dist/tools/shared/project.js.map +1 -0
  219. package/dist/tools/shared/response.d.ts +10 -0
  220. package/dist/tools/shared/response.d.ts.map +1 -0
  221. package/dist/tools/shared/response.js +36 -0
  222. package/dist/tools/shared/response.js.map +1 -0
  223. package/dist/tools/shared/validation.d.ts +10 -0
  224. package/dist/tools/shared/validation.d.ts.map +1 -0
  225. package/dist/tools/shared/validation.js +26 -0
  226. package/dist/tools/shared/validation.js.map +1 -0
  227. package/dist/tools/studio/cloud-spine.d.ts +27 -0
  228. package/dist/tools/studio/cloud-spine.d.ts.map +1 -0
  229. package/dist/tools/studio/cloud-spine.js +773 -0
  230. package/dist/tools/studio/cloud-spine.js.map +1 -0
  231. package/dist/tools/studio/index.d.ts +154 -0
  232. package/dist/tools/studio/index.d.ts.map +1 -0
  233. package/dist/tools/studio/index.js +525 -0
  234. package/dist/tools/studio/index.js.map +1 -0
  235. package/dist/tools/testSpec.d.ts +122 -0
  236. package/dist/tools/testSpec.d.ts.map +1 -0
  237. package/dist/tools/testSpec.js +525 -0
  238. package/dist/tools/testSpec.js.map +1 -0
  239. package/dist/tools/toolsIndex.d.ts +5 -0
  240. package/dist/tools/toolsIndex.d.ts.map +1 -0
  241. package/dist/tools/toolsIndex.js +37 -0
  242. package/dist/tools/toolsIndex.js.map +1 -0
  243. package/dist/tools/types.d.ts +30 -0
  244. package/dist/tools/types.d.ts.map +1 -0
  245. package/dist/tools/types.js +7 -0
  246. package/dist/tools/types.js.map +1 -0
  247. package/dist/tools/voice/index.d.ts +8 -0
  248. package/dist/tools/voice/index.d.ts.map +1 -0
  249. package/dist/tools/voice/index.js +176 -0
  250. package/dist/tools/voice/index.js.map +1 -0
  251. package/dist/tools/voice.d.ts +291 -0
  252. package/dist/tools/voice.d.ts.map +1 -0
  253. package/dist/tools/voice.js +734 -0
  254. package/dist/tools/voice.js.map +1 -0
  255. package/package.json +54 -0
@@ -0,0 +1,467 @@
1
+ // ============================================================================
2
+ // Registry Domain Tools
3
+ // ============================================================================
4
+ // Tools for project initialization and registry management.
5
+ // ============================================================================
6
+ import fs from 'fs';
7
+ import path from 'path';
8
+ import { toolSuccess, toolError, requireFields } from '../shared/index.js';
9
+ import { listProjects, registerProject, unregisterProject, addProjectAlias, resolveProject, getRegistryFilePath, } from '../../projectRegistry.js';
10
+ // ============================================================================
11
+ // Constants
12
+ // ============================================================================
13
+ const DECIBEL_STRUCTURE = [
14
+ 'architect/adrs',
15
+ 'architect/decisions',
16
+ 'architect/policies',
17
+ 'architect/roadmap',
18
+ 'designer/decisions',
19
+ 'designer/crits',
20
+ 'sentinel/issues',
21
+ 'sentinel/epics',
22
+ 'sentinel/tests',
23
+ 'dojo/experiments',
24
+ 'dojo/proposals',
25
+ 'dojo/wishes',
26
+ 'oracle/learnings',
27
+ 'context/facts',
28
+ 'context/events',
29
+ 'friction',
30
+ 'learnings',
31
+ 'provenance/events',
32
+ ];
33
+ // ============================================================================
34
+ // Helper Functions
35
+ // ============================================================================
36
+ function hasDecibelFolder(projectPath) {
37
+ const decibelPath = path.join(projectPath, '.decibel');
38
+ return fs.existsSync(decibelPath) && fs.statSync(decibelPath).isDirectory();
39
+ }
40
+ // ============================================================================
41
+ // Tools
42
+ // ============================================================================
43
+ export const projectInitTool = {
44
+ definition: {
45
+ name: 'project_init',
46
+ description: `Initialize a new Decibel project. Creates the .decibel/ folder structure and registers in the project registry.
47
+
48
+ Use this when:
49
+ - Starting a new project that will use Decibel tools
50
+ - You get a PROJECT_NOT_FOUND error and need to set up the project
51
+ - Converting an existing repo to use Decibel
52
+
53
+ This creates: architect/, designer/, sentinel/, dojo/, oracle/, context/, friction/, learnings/, provenance/ folders.`,
54
+ inputSchema: {
55
+ type: 'object',
56
+ properties: {
57
+ path: {
58
+ type: 'string',
59
+ description: 'Absolute path to the project root directory',
60
+ },
61
+ id: {
62
+ type: 'string',
63
+ description: 'Project ID (defaults to directory name)',
64
+ },
65
+ name: {
66
+ type: 'string',
67
+ description: 'Human-readable project name',
68
+ },
69
+ description: {
70
+ type: 'string',
71
+ description: 'Brief project description',
72
+ },
73
+ aliases: {
74
+ type: 'array',
75
+ items: { type: 'string' },
76
+ description: 'Shortcut names for this project (e.g., ["tools", "tools-ios"])',
77
+ },
78
+ force: {
79
+ type: 'boolean',
80
+ description: 'Overwrite existing .decibel folder if present',
81
+ },
82
+ cursor: {
83
+ type: 'boolean',
84
+ description: 'Generate .cursor/mcp.json for Cursor MCP integration',
85
+ },
86
+ },
87
+ required: ['path'],
88
+ },
89
+ },
90
+ handler: async (args) => {
91
+ try {
92
+ requireFields(args, 'path');
93
+ // Validate path exists
94
+ if (!fs.existsSync(args.path)) {
95
+ return toolError(`Path does not exist: ${args.path}`, 'Create the directory first or check the path.');
96
+ }
97
+ const decibelPath = path.join(args.path, '.decibel');
98
+ // Check for existing .decibel folder
99
+ if (fs.existsSync(decibelPath) && !args.force) {
100
+ return toolError(`Project already has a .decibel folder at ${args.path}`, 'Use force=true to reinitialize, or just use registry_add to register it.');
101
+ }
102
+ // Derive project ID from path if not provided
103
+ const projectId = args.id || path.basename(args.path);
104
+ // Create folder structure
105
+ const createdDirs = [];
106
+ for (const dir of DECIBEL_STRUCTURE) {
107
+ const fullPath = path.join(decibelPath, dir);
108
+ if (!fs.existsSync(fullPath)) {
109
+ fs.mkdirSync(fullPath, { recursive: true });
110
+ createdDirs.push(dir);
111
+ // Add .gitkeep to leaf directories
112
+ const gitkeepPath = path.join(fullPath, '.gitkeep');
113
+ if (!fs.existsSync(gitkeepPath)) {
114
+ fs.writeFileSync(gitkeepPath, '# This file ensures the directory is tracked by git\n');
115
+ }
116
+ }
117
+ }
118
+ // Create manifest.yaml
119
+ const manifestPath = path.join(decibelPath, 'manifest.yaml');
120
+ if (!fs.existsSync(manifestPath) || args.force) {
121
+ const timestamp = new Date().toISOString();
122
+ const manifestContent = `# Decibel Project Manifest
123
+ # Generated: ${timestamp}
124
+
125
+ id: ${projectId}
126
+ name: ${args.name || projectId}
127
+ version: 1.0.0
128
+ ${args.description ? `description: ${args.description}` : ''}
129
+
130
+ created_at: ${timestamp}
131
+ decibel_version: "1.0"
132
+ `;
133
+ fs.writeFileSync(manifestPath, manifestContent);
134
+ }
135
+ // Generate .cursor/mcp.json if requested
136
+ let cursorConfigCreated = false;
137
+ if (args.cursor) {
138
+ const cursorDir = path.join(args.path, '.cursor');
139
+ const cursorConfigPath = path.join(cursorDir, 'mcp.json');
140
+ if (!fs.existsSync(cursorDir)) {
141
+ fs.mkdirSync(cursorDir, { recursive: true });
142
+ }
143
+ const cursorConfig = {
144
+ mcpServers: {
145
+ 'decibel-tools': {
146
+ command: 'npx',
147
+ args: ['-y', 'decibel-tools-mcp'],
148
+ env: {},
149
+ },
150
+ },
151
+ };
152
+ fs.writeFileSync(cursorConfigPath, JSON.stringify(cursorConfig, null, 2) + '\n');
153
+ cursorConfigCreated = true;
154
+ }
155
+ // Register in project registry
156
+ try {
157
+ registerProject({
158
+ id: projectId,
159
+ name: args.name || projectId,
160
+ path: path.resolve(args.path),
161
+ aliases: args.aliases,
162
+ });
163
+ }
164
+ catch (regErr) {
165
+ // If already registered, that's fine
166
+ const errMsg = regErr instanceof Error ? regErr.message : String(regErr);
167
+ if (!errMsg.includes('already') && !errMsg.includes('Update')) {
168
+ throw regErr;
169
+ }
170
+ }
171
+ const nextSteps = [
172
+ `Project is ready! Use projectId="${projectId}" in tool calls.`,
173
+ 'Available tools: sentinel_log_epic, sentinel_createIssue, designer_record_design_decision, architect_createAdr, dojo_add_wish, friction_log, learnings_append',
174
+ ];
175
+ if (cursorConfigCreated) {
176
+ nextSteps.push('Cursor config created at .cursor/mcp.json - restart Cursor to activate');
177
+ }
178
+ return toolSuccess({
179
+ success: true,
180
+ message: `Project "${projectId}" initialized and registered`,
181
+ project: {
182
+ id: projectId,
183
+ name: args.name || projectId,
184
+ path: path.resolve(args.path),
185
+ aliases: args.aliases || [],
186
+ },
187
+ structure: {
188
+ root: decibelPath,
189
+ created: createdDirs.length,
190
+ folders: DECIBEL_STRUCTURE,
191
+ },
192
+ cursor: cursorConfigCreated ? {
193
+ config_path: path.join(args.path, '.cursor', 'mcp.json'),
194
+ server_name: 'decibel-tools',
195
+ } : undefined,
196
+ next_steps: nextSteps,
197
+ });
198
+ }
199
+ catch (err) {
200
+ return toolError(err instanceof Error ? err.message : String(err));
201
+ }
202
+ },
203
+ };
204
+ export const projectStatusTool = {
205
+ definition: {
206
+ name: 'project_status',
207
+ description: 'Check the status of a project - whether it exists, is registered, and what tools are available.',
208
+ inputSchema: {
209
+ type: 'object',
210
+ properties: {
211
+ projectId: {
212
+ type: 'string',
213
+ description: 'Project ID to check (lists all if omitted)',
214
+ },
215
+ path: {
216
+ type: 'string',
217
+ description: 'Path to check (alternative to projectId)',
218
+ },
219
+ },
220
+ },
221
+ },
222
+ handler: async (args) => {
223
+ try {
224
+ const projects = listProjects();
225
+ // If checking a specific path
226
+ if (args.path) {
227
+ const hasDecibel = hasDecibelFolder(args.path);
228
+ const dirName = path.basename(args.path);
229
+ const isRegistered = projects.some(p => p.path === path.resolve(args.path));
230
+ return toolSuccess({
231
+ path: args.path,
232
+ hasDecibelFolder: hasDecibel,
233
+ isRegistered,
234
+ status: hasDecibel && isRegistered ? 'ready' :
235
+ hasDecibel ? 'needs_registration' :
236
+ 'needs_initialization',
237
+ action: hasDecibel && isRegistered ? 'Project is ready to use' :
238
+ hasDecibel ? `Run: registry_add with id="${dirName}" and path="${args.path}"` :
239
+ `Run: project_init with path="${args.path}"`,
240
+ });
241
+ }
242
+ // If checking a specific project ID
243
+ if (args.projectId) {
244
+ const project = projects.find(p => p.id === args.projectId || p.aliases?.includes(args.projectId));
245
+ if (!project) {
246
+ return toolSuccess({
247
+ projectId: args.projectId,
248
+ found: false,
249
+ registered: projects.map(p => ({ id: p.id, aliases: p.aliases })),
250
+ hint: 'Use project_init to create a new project, or registry_add if .decibel exists.',
251
+ });
252
+ }
253
+ const hasDecibel = hasDecibelFolder(project.path);
254
+ return toolSuccess({
255
+ projectId: project.id,
256
+ found: true,
257
+ name: project.name,
258
+ path: project.path,
259
+ aliases: project.aliases,
260
+ hasDecibelFolder: hasDecibel,
261
+ status: hasDecibel ? 'ready' : 'missing_decibel_folder',
262
+ });
263
+ }
264
+ // List all projects
265
+ const projectStatuses = projects.map(p => ({
266
+ id: p.id,
267
+ name: p.name,
268
+ path: p.path,
269
+ aliases: p.aliases,
270
+ hasDecibelFolder: hasDecibelFolder(p.path),
271
+ }));
272
+ return toolSuccess({
273
+ totalProjects: projects.length,
274
+ projects: projectStatuses,
275
+ });
276
+ }
277
+ catch (err) {
278
+ return toolError(err instanceof Error ? err.message : String(err));
279
+ }
280
+ },
281
+ };
282
+ export const registryListTool = {
283
+ definition: {
284
+ name: 'registry_list',
285
+ description: 'List all registered projects in the Decibel registry. Shows project IDs, paths, and aliases.',
286
+ inputSchema: {
287
+ type: 'object',
288
+ properties: {},
289
+ },
290
+ },
291
+ handler: async () => {
292
+ const projects = listProjects();
293
+ const registryPath = getRegistryFilePath();
294
+ if (projects.length === 0) {
295
+ return toolSuccess({
296
+ registryPath,
297
+ projects: [],
298
+ message: 'No projects registered. Use registry_add to register a project.',
299
+ });
300
+ }
301
+ return toolSuccess({
302
+ registryPath,
303
+ projectCount: projects.length,
304
+ projects: projects.map(p => ({
305
+ id: p.id,
306
+ name: p.name,
307
+ path: p.path,
308
+ aliases: p.aliases || [],
309
+ })),
310
+ });
311
+ },
312
+ };
313
+ export const registryAddTool = {
314
+ definition: {
315
+ name: 'registry_add',
316
+ description: 'Register a project in the Decibel registry. The project path must contain a .decibel folder.',
317
+ inputSchema: {
318
+ type: 'object',
319
+ properties: {
320
+ id: {
321
+ type: 'string',
322
+ description: 'Unique project ID (typically the directory name)',
323
+ },
324
+ path: {
325
+ type: 'string',
326
+ description: 'Absolute path to the project root (must contain .decibel/)',
327
+ },
328
+ name: {
329
+ type: 'string',
330
+ description: 'Human-readable project name',
331
+ },
332
+ aliases: {
333
+ type: 'array',
334
+ items: { type: 'string' },
335
+ description: 'Alternative names/shortcuts for this project',
336
+ },
337
+ },
338
+ required: ['id', 'path'],
339
+ },
340
+ },
341
+ handler: async (args) => {
342
+ try {
343
+ requireFields(args, 'id', 'path');
344
+ registerProject({ id: args.id, path: args.path, name: args.name, aliases: args.aliases });
345
+ return toolSuccess({
346
+ success: true,
347
+ message: `Project "${args.id}" registered successfully`,
348
+ project: { id: args.id, path: args.path, name: args.name, aliases: args.aliases },
349
+ });
350
+ }
351
+ catch (err) {
352
+ return toolError(err instanceof Error ? err.message : String(err));
353
+ }
354
+ },
355
+ };
356
+ export const registryRemoveTool = {
357
+ definition: {
358
+ name: 'registry_remove',
359
+ description: 'Remove a project from the Decibel registry. Does not delete project files.',
360
+ inputSchema: {
361
+ type: 'object',
362
+ properties: {
363
+ id: {
364
+ type: 'string',
365
+ description: 'Project ID to remove',
366
+ },
367
+ },
368
+ required: ['id'],
369
+ },
370
+ },
371
+ handler: async (args) => {
372
+ try {
373
+ requireFields(args, 'id');
374
+ const removed = unregisterProject(args.id);
375
+ return toolSuccess({
376
+ success: removed,
377
+ message: removed
378
+ ? `Project "${args.id}" removed from registry`
379
+ : `Project "${args.id}" not found in registry`,
380
+ });
381
+ }
382
+ catch (err) {
383
+ return toolError(err instanceof Error ? err.message : String(err));
384
+ }
385
+ },
386
+ };
387
+ export const registryAliasTool = {
388
+ definition: {
389
+ name: 'registry_alias',
390
+ description: 'Add an alias (shortcut name) to an existing project in the registry.',
391
+ inputSchema: {
392
+ type: 'object',
393
+ properties: {
394
+ id: {
395
+ type: 'string',
396
+ description: 'Project ID to add alias to',
397
+ },
398
+ alias: {
399
+ type: 'string',
400
+ description: 'Alias to add (e.g., "senken" as alias for "senken-trading-agent")',
401
+ },
402
+ },
403
+ required: ['id', 'alias'],
404
+ },
405
+ },
406
+ handler: async (args) => {
407
+ try {
408
+ requireFields(args, 'id', 'alias');
409
+ addProjectAlias(args.id, args.alias);
410
+ return toolSuccess({
411
+ success: true,
412
+ message: `Alias "${args.alias}" added to project "${args.id}"`,
413
+ });
414
+ }
415
+ catch (err) {
416
+ return toolError(err instanceof Error ? err.message : String(err));
417
+ }
418
+ },
419
+ };
420
+ export const registryResolveTool = {
421
+ definition: {
422
+ name: 'registry_resolve',
423
+ description: 'Test resolution of a project ID/alias. Shows which project would be resolved and how.',
424
+ inputSchema: {
425
+ type: 'object',
426
+ properties: {
427
+ projectId: {
428
+ type: 'string',
429
+ description: 'Project ID, alias, or path to resolve',
430
+ },
431
+ },
432
+ required: ['projectId'],
433
+ },
434
+ },
435
+ handler: async (args) => {
436
+ try {
437
+ requireFields(args, 'projectId');
438
+ const entry = resolveProject(args.projectId);
439
+ return toolSuccess({
440
+ success: true,
441
+ input: args.projectId,
442
+ resolved: {
443
+ id: entry.id,
444
+ name: entry.name,
445
+ path: entry.path,
446
+ aliases: entry.aliases,
447
+ },
448
+ });
449
+ }
450
+ catch (err) {
451
+ return toolError(err instanceof Error ? err.message : String(err));
452
+ }
453
+ },
454
+ };
455
+ // ============================================================================
456
+ // Domain Export
457
+ // ============================================================================
458
+ export const registryTools = [
459
+ projectInitTool,
460
+ projectStatusTool,
461
+ registryListTool,
462
+ registryAddTool,
463
+ registryRemoveTool,
464
+ registryAliasTool,
465
+ registryResolveTool,
466
+ ];
467
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/registry/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerRegistryTools(server: McpServer): void;
3
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAepE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiP7D"}