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,189 @@
1
+ // ============================================================================
2
+ // Registry Tools
3
+ // ============================================================================
4
+ // MCP tools for managing the project registry.
5
+ // ============================================================================
6
+ import { z } from 'zod';
7
+ import { listProjects, registerProject, unregisterProject, addProjectAlias, getRegistryFilePath, resolveProject, } from '../projectRegistry.js';
8
+ // ============================================================================
9
+ // Tool Registration
10
+ // ============================================================================
11
+ export function registerRegistryTools(server) {
12
+ // -------------------------------------------------------------------------
13
+ // registry_list - List all registered projects
14
+ // -------------------------------------------------------------------------
15
+ server.tool('registry_list', 'List all registered projects in the Decibel registry. Shows project IDs, paths, and aliases.', {}, async () => {
16
+ const projects = listProjects();
17
+ const registryPath = getRegistryFilePath();
18
+ if (projects.length === 0) {
19
+ return {
20
+ content: [
21
+ {
22
+ type: 'text',
23
+ text: JSON.stringify({
24
+ registryPath,
25
+ projects: [],
26
+ message: 'No projects registered. Use registry_add to register a project.',
27
+ }, null, 2),
28
+ },
29
+ ],
30
+ };
31
+ }
32
+ return {
33
+ content: [
34
+ {
35
+ type: 'text',
36
+ text: JSON.stringify({
37
+ registryPath,
38
+ projectCount: projects.length,
39
+ projects: projects.map((p) => ({
40
+ id: p.id,
41
+ name: p.name,
42
+ path: p.path,
43
+ aliases: p.aliases || [],
44
+ })),
45
+ }, null, 2),
46
+ },
47
+ ],
48
+ };
49
+ });
50
+ // -------------------------------------------------------------------------
51
+ // registry_add - Register a new project
52
+ // -------------------------------------------------------------------------
53
+ server.tool('registry_add', 'Register a project in the Decibel registry. The project path must contain a .decibel folder.', {
54
+ id: z.string().describe('Unique project ID (typically the directory name)'),
55
+ path: z.string().describe('Absolute path to the project root (must contain .decibel/)'),
56
+ name: z.string().optional().describe('Human-readable project name'),
57
+ aliases: z
58
+ .array(z.string())
59
+ .optional()
60
+ .describe('Alternative names/shortcuts for this project'),
61
+ }, async ({ id, path, name, aliases }) => {
62
+ try {
63
+ registerProject({ id, path, name, aliases });
64
+ return {
65
+ content: [
66
+ {
67
+ type: 'text',
68
+ text: JSON.stringify({
69
+ success: true,
70
+ message: `Project "${id}" registered successfully`,
71
+ project: { id, path, name, aliases },
72
+ }, null, 2),
73
+ },
74
+ ],
75
+ };
76
+ }
77
+ catch (err) {
78
+ return {
79
+ content: [
80
+ {
81
+ type: 'text',
82
+ text: JSON.stringify({
83
+ success: false,
84
+ error: err instanceof Error ? err.message : String(err),
85
+ }, null, 2),
86
+ },
87
+ ],
88
+ };
89
+ }
90
+ });
91
+ // -------------------------------------------------------------------------
92
+ // registry_remove - Remove a project from the registry
93
+ // -------------------------------------------------------------------------
94
+ server.tool('registry_remove', 'Remove a project from the Decibel registry. Does not delete project files.', {
95
+ id: z.string().describe('Project ID to remove'),
96
+ }, async ({ id }) => {
97
+ const removed = unregisterProject(id);
98
+ return {
99
+ content: [
100
+ {
101
+ type: 'text',
102
+ text: JSON.stringify({
103
+ success: removed,
104
+ message: removed
105
+ ? `Project "${id}" removed from registry`
106
+ : `Project "${id}" not found in registry`,
107
+ }, null, 2),
108
+ },
109
+ ],
110
+ };
111
+ });
112
+ // -------------------------------------------------------------------------
113
+ // registry_alias - Add an alias to an existing project
114
+ // -------------------------------------------------------------------------
115
+ server.tool('registry_alias', 'Add an alias (shortcut name) to an existing project in the registry.', {
116
+ id: z.string().describe('Project ID to add alias to'),
117
+ alias: z.string().describe('Alias to add (e.g., "senken" as alias for "senken-trading-agent")'),
118
+ }, async ({ id, alias }) => {
119
+ try {
120
+ addProjectAlias(id, alias);
121
+ return {
122
+ content: [
123
+ {
124
+ type: 'text',
125
+ text: JSON.stringify({
126
+ success: true,
127
+ message: `Alias "${alias}" added to project "${id}"`,
128
+ }, null, 2),
129
+ },
130
+ ],
131
+ };
132
+ }
133
+ catch (err) {
134
+ return {
135
+ content: [
136
+ {
137
+ type: 'text',
138
+ text: JSON.stringify({
139
+ success: false,
140
+ error: err instanceof Error ? err.message : String(err),
141
+ }, null, 2),
142
+ },
143
+ ],
144
+ };
145
+ }
146
+ });
147
+ // -------------------------------------------------------------------------
148
+ // registry_resolve - Test resolution of a project ID
149
+ // -------------------------------------------------------------------------
150
+ server.tool('registry_resolve', 'Test resolution of a project ID/alias. Shows which project would be resolved and how.', {
151
+ projectId: z.string().describe('Project ID, alias, or path to resolve'),
152
+ }, async ({ projectId }) => {
153
+ try {
154
+ const entry = resolveProject(projectId);
155
+ return {
156
+ content: [
157
+ {
158
+ type: 'text',
159
+ text: JSON.stringify({
160
+ success: true,
161
+ input: projectId,
162
+ resolved: {
163
+ id: entry.id,
164
+ name: entry.name,
165
+ path: entry.path,
166
+ aliases: entry.aliases,
167
+ },
168
+ }, null, 2),
169
+ },
170
+ ],
171
+ };
172
+ }
173
+ catch (err) {
174
+ return {
175
+ content: [
176
+ {
177
+ type: 'text',
178
+ text: JSON.stringify({
179
+ success: false,
180
+ input: projectId,
181
+ error: err instanceof Error ? err.message : String(err),
182
+ }, null, 2),
183
+ },
184
+ ],
185
+ };
186
+ }
187
+ });
188
+ }
189
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ToolSpec } from '../types.js';
2
+ export declare const roadmapGetTool: ToolSpec;
3
+ export declare const roadmapListTool: ToolSpec;
4
+ export declare const roadmapGetEpicContextTool: ToolSpec;
5
+ export declare const roadmapGetHealthTool: ToolSpec;
6
+ export declare const roadmapLinkEpicTool: ToolSpec;
7
+ export declare const roadmapInitTool: ToolSpec;
8
+ export declare const roadmapTools: ToolSpec[];
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/roadmap/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAqBvC,eAAO,MAAM,cAAc,EAAE,QA4B5B,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,QA4B7B,CAAC;AAMF,eAAO,MAAM,yBAAyB,EAAE,QAgCvC,CAAC;AAMF,eAAO,MAAM,oBAAoB,EAAE,QAgClC,CAAC;AAMF,eAAO,MAAM,mBAAmB,EAAE,QAuDjC,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,QAyB7B,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,QAAQ,EAOlC,CAAC"}
@@ -0,0 +1,250 @@
1
+ // ============================================================================
2
+ // Roadmap Domain Tools
3
+ // ============================================================================
4
+ // Tools for strategic roadmap management - objectives, themes, milestones,
5
+ // and epic context.
6
+ // ============================================================================
7
+ import { toolSuccess, toolError, requireFields } from '../shared/index.js';
8
+ import { getRoadmap, getEpicContext, getRoadmapHealth, linkEpicToRoadmap, roadmapList, roadmapInit, } from '../roadmap.js';
9
+ // ============================================================================
10
+ // Roadmap Get Tool
11
+ // ============================================================================
12
+ export const roadmapGetTool = {
13
+ definition: {
14
+ name: 'roadmap_get',
15
+ description: 'Get the strategic roadmap - objectives, themes, milestones, and epic context. Returns the full roadmap structure with summary stats.',
16
+ inputSchema: {
17
+ type: 'object',
18
+ properties: {
19
+ projectId: {
20
+ type: 'string',
21
+ description: 'The project identifier (e.g., "senken")',
22
+ },
23
+ },
24
+ required: ['projectId'],
25
+ },
26
+ },
27
+ handler: async (args) => {
28
+ try {
29
+ const input = args;
30
+ requireFields(input, 'projectId');
31
+ const result = await getRoadmap(input);
32
+ if ('error' in result) {
33
+ return toolError(JSON.stringify(result, null, 2));
34
+ }
35
+ return toolSuccess(result);
36
+ }
37
+ catch (err) {
38
+ return toolError(err instanceof Error ? err.message : String(err));
39
+ }
40
+ },
41
+ };
42
+ // ============================================================================
43
+ // Roadmap List Tool
44
+ // ============================================================================
45
+ export const roadmapListTool = {
46
+ definition: {
47
+ name: 'roadmap_list',
48
+ description: 'List all epics with their roadmap context (theme, milestone, objectives) and health scores. Sorted by milestone target date.',
49
+ inputSchema: {
50
+ type: 'object',
51
+ properties: {
52
+ projectId: {
53
+ type: 'string',
54
+ description: 'The project identifier (e.g., "senken")',
55
+ },
56
+ },
57
+ required: ['projectId'],
58
+ },
59
+ },
60
+ handler: async (args) => {
61
+ try {
62
+ const input = args;
63
+ requireFields(input, 'projectId');
64
+ const result = await roadmapList(input);
65
+ if ('error' in result) {
66
+ return toolError(JSON.stringify(result, null, 2));
67
+ }
68
+ return toolSuccess(result);
69
+ }
70
+ catch (err) {
71
+ return toolError(err instanceof Error ? err.message : String(err));
72
+ }
73
+ },
74
+ };
75
+ // ============================================================================
76
+ // Roadmap Get Epic Context Tool
77
+ // ============================================================================
78
+ export const roadmapGetEpicContextTool = {
79
+ definition: {
80
+ name: 'roadmap_getEpicContext',
81
+ description: 'Get the strategic context for a specific epic - theme, milestone, objectives, and Oracle health annotation.',
82
+ inputSchema: {
83
+ type: 'object',
84
+ properties: {
85
+ projectId: {
86
+ type: 'string',
87
+ description: 'The project identifier (e.g., "senken")',
88
+ },
89
+ epicId: {
90
+ type: 'string',
91
+ description: 'Epic ID to look up (e.g., "EPIC-0001")',
92
+ },
93
+ },
94
+ required: ['projectId', 'epicId'],
95
+ },
96
+ },
97
+ handler: async (args) => {
98
+ try {
99
+ const input = args;
100
+ requireFields(input, 'projectId', 'epicId');
101
+ const result = await getEpicContext(input);
102
+ if ('error' in result) {
103
+ return toolError(JSON.stringify(result, null, 2));
104
+ }
105
+ return toolSuccess(result);
106
+ }
107
+ catch (err) {
108
+ return toolError(err instanceof Error ? err.message : String(err));
109
+ }
110
+ },
111
+ };
112
+ // ============================================================================
113
+ // Roadmap Get Health Tool
114
+ // ============================================================================
115
+ export const roadmapGetHealthTool = {
116
+ definition: {
117
+ name: 'roadmap_getHealth',
118
+ description: "Get Oracle's health report - epics with low health scores that need attention. Use to prioritize work and identify risky areas.",
119
+ inputSchema: {
120
+ type: 'object',
121
+ properties: {
122
+ projectId: {
123
+ type: 'string',
124
+ description: 'The project identifier (e.g., "senken")',
125
+ },
126
+ threshold: {
127
+ type: 'number',
128
+ description: 'Health score threshold (default: 0.7). Epics below this score are flagged.',
129
+ },
130
+ },
131
+ required: ['projectId'],
132
+ },
133
+ },
134
+ handler: async (args) => {
135
+ try {
136
+ const input = args;
137
+ requireFields(input, 'projectId');
138
+ const result = await getRoadmapHealth(input);
139
+ if ('error' in result) {
140
+ return toolError(JSON.stringify(result, null, 2));
141
+ }
142
+ return toolSuccess(result);
143
+ }
144
+ catch (err) {
145
+ return toolError(err instanceof Error ? err.message : String(err));
146
+ }
147
+ },
148
+ };
149
+ // ============================================================================
150
+ // Roadmap Link Epic Tool
151
+ // ============================================================================
152
+ export const roadmapLinkEpicTool = {
153
+ definition: {
154
+ name: 'roadmap_linkEpic',
155
+ description: 'Link an epic to roadmap elements (theme, milestone, objectives). Maintains strategic context for your work.',
156
+ inputSchema: {
157
+ type: 'object',
158
+ properties: {
159
+ projectId: {
160
+ type: 'string',
161
+ description: 'The project identifier (e.g., "senken")',
162
+ },
163
+ epicId: {
164
+ type: 'string',
165
+ description: 'Epic ID to link (e.g., "EPIC-0001")',
166
+ },
167
+ theme: {
168
+ type: 'string',
169
+ description: 'Theme ID (e.g., "foundations", "features")',
170
+ },
171
+ milestone: {
172
+ type: 'string',
173
+ description: 'Milestone ID (e.g., "M-0001")',
174
+ },
175
+ objectives: {
176
+ type: 'array',
177
+ items: { type: 'string' },
178
+ description: 'Objective IDs to link (e.g., ["OBJ-0001"])',
179
+ },
180
+ workType: {
181
+ type: 'string',
182
+ enum: ['feature', 'infra', 'refactor', 'experiment', 'policy'],
183
+ description: 'Type of work (default: feature)',
184
+ },
185
+ adrs: {
186
+ type: 'array',
187
+ items: { type: 'string' },
188
+ description: 'Related ADR IDs',
189
+ },
190
+ },
191
+ required: ['projectId', 'epicId'],
192
+ },
193
+ },
194
+ handler: async (args) => {
195
+ try {
196
+ const input = args;
197
+ requireFields(input, 'projectId', 'epicId');
198
+ const result = await linkEpicToRoadmap(input);
199
+ if (result.status === 'error') {
200
+ return toolError(JSON.stringify(result, null, 2));
201
+ }
202
+ return toolSuccess(result);
203
+ }
204
+ catch (err) {
205
+ return toolError(err instanceof Error ? err.message : String(err));
206
+ }
207
+ },
208
+ };
209
+ // ============================================================================
210
+ // Roadmap Init Tool
211
+ // ============================================================================
212
+ export const roadmapInitTool = {
213
+ definition: {
214
+ name: 'roadmap_init',
215
+ description: 'Initialize a new roadmap.yaml scaffold with example objectives, themes, and milestones.',
216
+ inputSchema: {
217
+ type: 'object',
218
+ properties: {
219
+ projectId: {
220
+ type: 'string',
221
+ description: 'The project identifier (e.g., "senken")',
222
+ },
223
+ },
224
+ required: ['projectId'],
225
+ },
226
+ },
227
+ handler: async (args) => {
228
+ try {
229
+ const input = args;
230
+ requireFields(input, 'projectId');
231
+ const result = await roadmapInit(input);
232
+ return toolSuccess(result);
233
+ }
234
+ catch (err) {
235
+ return toolError(err instanceof Error ? err.message : String(err));
236
+ }
237
+ },
238
+ };
239
+ // ============================================================================
240
+ // Export All Tools
241
+ // ============================================================================
242
+ export const roadmapTools = [
243
+ roadmapGetTool,
244
+ roadmapListTool,
245
+ roadmapGetEpicContextTool,
246
+ roadmapGetHealthTool,
247
+ roadmapLinkEpicTool,
248
+ roadmapInitTool,
249
+ ];
250
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/roadmap/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Roadmap tools for Decibel Architect.
3
+ *
4
+ * Provides strategic roadmap management - objectives, themes, milestones, and epic context.
5
+ * Reads from .decibel/architect/roadmap/roadmap.yaml
6
+ */
7
+ export interface KeyResult {
8
+ metric: string;
9
+ target: string;
10
+ current?: string;
11
+ }
12
+ export interface Objective {
13
+ id: string;
14
+ title: string;
15
+ timeframe: string;
16
+ owner?: string;
17
+ key_results?: KeyResult[];
18
+ }
19
+ export interface Theme {
20
+ id: string;
21
+ label: string;
22
+ description?: string;
23
+ }
24
+ export interface Milestone {
25
+ id: string;
26
+ label: string;
27
+ target_date: string;
28
+ epics?: string[];
29
+ }
30
+ export interface EpicContext {
31
+ epic_id: string;
32
+ theme?: string;
33
+ objectives?: string[];
34
+ milestone?: string;
35
+ work_type: 'feature' | 'infra' | 'refactor' | 'experiment' | 'policy';
36
+ adrs?: string[];
37
+ }
38
+ export interface OracleAnnotation {
39
+ epic_id: string;
40
+ health_score: number;
41
+ risk_flags: string[];
42
+ confidence: 'low' | 'medium' | 'high';
43
+ commentary?: string;
44
+ last_reviewed?: string;
45
+ }
46
+ export interface Roadmap {
47
+ objectives: Objective[];
48
+ themes: Theme[];
49
+ milestones: Milestone[];
50
+ epic_context: Record<string, EpicContext>;
51
+ }
52
+ export interface OracleAnnotations {
53
+ annotations: Record<string, OracleAnnotation>;
54
+ }
55
+ export declare function roadmapExists(roadmapDir: string): boolean;
56
+ export interface GetRoadmapInput {
57
+ projectId: string;
58
+ }
59
+ export interface GetEpicContextInput {
60
+ projectId: string;
61
+ epicId: string;
62
+ }
63
+ export interface GetRoadmapHealthInput {
64
+ projectId: string;
65
+ threshold?: number;
66
+ }
67
+ export interface LinkEpicInput {
68
+ projectId: string;
69
+ epicId: string;
70
+ theme?: string;
71
+ milestone?: string;
72
+ objectives?: string[];
73
+ workType?: 'feature' | 'infra' | 'refactor' | 'experiment' | 'policy';
74
+ adrs?: string[];
75
+ }
76
+ export interface RoadmapListInput {
77
+ projectId: string;
78
+ }
79
+ export interface RoadmapInitInput {
80
+ projectId: string;
81
+ }
82
+ export declare function getRoadmap(input: GetRoadmapInput): Promise<Record<string, unknown>>;
83
+ export declare function getEpicContext(input: GetEpicContextInput): Promise<Record<string, unknown>>;
84
+ export declare function getRoadmapHealth(input: GetRoadmapHealthInput): Promise<Record<string, unknown>>;
85
+ export declare function linkEpicToRoadmap(input: LinkEpicInput): Promise<Record<string, unknown>>;
86
+ export declare function roadmapList(input: RoadmapListInput): Promise<Record<string, unknown>>;
87
+ export declare function roadmapInit(input: RoadmapInitInput): Promise<Record<string, unknown>>;
88
+ //# sourceMappingURL=roadmap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roadmap.d.ts","sourceRoot":"","sources":["../../src/tools/roadmap.ts"],"names":[],"mappings":"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"}