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,525 @@
1
+ /**
2
+ * Studio Tools - Generation Middleware
3
+ *
4
+ * Provides Studio-compatible API endpoints backed by OpenAI/TogetherAI.
5
+ * Matches the interface expected by Rich's frontend (frontend_v0.2).
6
+ *
7
+ * Endpoints:
8
+ * Image Generation:
9
+ * POST /api/generate-flux-kontext-image
10
+ * GET /api/flux-kontext-status/:taskId
11
+ *
12
+ * 3D Generation (Meshy-compatible):
13
+ * POST /api/meshy/generate
14
+ * GET /api/meshy/status/:taskId
15
+ * POST /api/meshy/download
16
+ *
17
+ * 3D Generation (Tripo-compatible):
18
+ * POST /api/tripo/generate
19
+ * GET /api/tripo/task/:taskId
20
+ * POST /api/tripo/download/:taskId
21
+ *
22
+ * Video Generation (Kling-compatible):
23
+ * POST /api/generate-kling-video
24
+ * POST /api/generate-kling-text-video
25
+ * POST /api/generate-kling-avatar
26
+ * GET /api/kling-video-status/:taskId
27
+ */
28
+ import { log } from '../../config.js';
29
+ // ============================================================================
30
+ // Task Store (in-memory)
31
+ // ============================================================================
32
+ const taskStore = new Map();
33
+ function generateTaskId(prefix = 'task') {
34
+ return `${prefix}_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
35
+ }
36
+ // ============================================================================
37
+ // OpenAI Image Generation
38
+ // ============================================================================
39
+ async function callOpenAI(prompt, size) {
40
+ const apiKey = process.env.OPENAI_API_KEY;
41
+ if (!apiKey) {
42
+ throw new Error('OPENAI_API_KEY environment variable not set');
43
+ }
44
+ let dalleSize = '1024x1024';
45
+ if (size === '16:9')
46
+ dalleSize = '1792x1024';
47
+ else if (size === '9:16')
48
+ dalleSize = '1024x1792';
49
+ log(`[Studio] Calling OpenAI DALL-E 3 with size ${dalleSize}`);
50
+ const response = await fetch('https://api.openai.com/v1/images/generations', {
51
+ method: 'POST',
52
+ headers: {
53
+ 'Content-Type': 'application/json',
54
+ 'Authorization': `Bearer ${apiKey}`,
55
+ },
56
+ body: JSON.stringify({
57
+ model: 'dall-e-3',
58
+ prompt: prompt,
59
+ n: 1,
60
+ size: dalleSize,
61
+ quality: 'hd',
62
+ response_format: 'url',
63
+ }),
64
+ });
65
+ if (!response.ok) {
66
+ const error = await response.json();
67
+ throw new Error(error.error?.message || `OpenAI API error: ${response.status}`);
68
+ }
69
+ const result = await response.json();
70
+ return result.data[0].url;
71
+ }
72
+ // ============================================================================
73
+ // TogetherAI Image Generation (FLUX)
74
+ // ============================================================================
75
+ async function callTogetherAI(prompt, size) {
76
+ const apiKey = process.env.TOGETHER_API_KEY;
77
+ if (!apiKey) {
78
+ throw new Error('TOGETHER_API_KEY environment variable not set');
79
+ }
80
+ let width = 1024;
81
+ let height = 1024;
82
+ if (size === '16:9') {
83
+ width = 1792;
84
+ height = 1024;
85
+ }
86
+ else if (size === '9:16') {
87
+ width = 1024;
88
+ height = 1792;
89
+ }
90
+ log(`[Studio] Calling TogetherAI FLUX with size ${width}x${height}`);
91
+ const response = await fetch('https://api.together.xyz/v1/images/generations', {
92
+ method: 'POST',
93
+ headers: {
94
+ 'Content-Type': 'application/json',
95
+ 'Authorization': `Bearer ${apiKey}`,
96
+ },
97
+ body: JSON.stringify({
98
+ model: 'black-forest-labs/FLUX.1-schnell-Free',
99
+ prompt: prompt,
100
+ width: width,
101
+ height: height,
102
+ steps: 4,
103
+ n: 1,
104
+ response_format: 'url',
105
+ }),
106
+ });
107
+ if (!response.ok) {
108
+ const error = await response.json();
109
+ throw new Error(error.error?.message || `TogetherAI API error: ${response.status}`);
110
+ }
111
+ const result = await response.json();
112
+ return result.data[0].url;
113
+ }
114
+ // ============================================================================
115
+ // Background Processing
116
+ // ============================================================================
117
+ async function processImageTask(taskId) {
118
+ const task = taskStore.get(taskId);
119
+ if (!task)
120
+ return;
121
+ try {
122
+ task.status = { status: 'processing', progress: 10, message: 'Starting image generation...' };
123
+ const useTogetherAI = process.env.TOGETHER_API_KEY && !process.env.OPENAI_API_KEY;
124
+ task.status.progress = 30;
125
+ task.status.message = useTogetherAI ? 'Generating with TogetherAI FLUX...' : 'Generating with OpenAI DALL-E 3...';
126
+ const prompt = task.input.prompt;
127
+ const aspectRatio = task.input.aspect_ratio || '16:9';
128
+ let imageUrl;
129
+ if (useTogetherAI) {
130
+ imageUrl = await callTogetherAI(prompt, aspectRatio);
131
+ }
132
+ else {
133
+ imageUrl = await callOpenAI(prompt, aspectRatio);
134
+ }
135
+ task.status = { status: 'completed', progress: 100, message: 'Image generation complete', image_url: imageUrl };
136
+ task.completed_at = new Date();
137
+ log(`[Studio] Image task ${taskId} completed`);
138
+ }
139
+ catch (error) {
140
+ const message = error instanceof Error ? error.message : String(error);
141
+ log(`[Studio] Image task ${taskId} failed: ${message}`);
142
+ task.status = { status: 'error', progress: 0, message, error: message };
143
+ }
144
+ }
145
+ async function process3DTask(taskId) {
146
+ const task = taskStore.get(taskId);
147
+ if (!task)
148
+ return;
149
+ // Simulate 3D generation (stub - no real API yet)
150
+ try {
151
+ task.status = { status: 'IN_PROGRESS', progress: 0, message: 'Queued for 3D generation...' };
152
+ // Simulate progress over time
153
+ for (let i = 1; i <= 10; i++) {
154
+ await new Promise(r => setTimeout(r, 500));
155
+ task.status.progress = i * 10;
156
+ task.status.message = `Generating 3D model... ${i * 10}%`;
157
+ }
158
+ // Return a placeholder model URL
159
+ task.status = {
160
+ status: 'SUCCEEDED',
161
+ progress: 100,
162
+ message: '3D generation complete (stub)',
163
+ model_url: 'https://placeholder.studio/model.glb',
164
+ thumbnail_url: 'https://placeholder.studio/thumbnail.png',
165
+ };
166
+ task.completed_at = new Date();
167
+ log(`[Studio] 3D task ${taskId} completed (stub)`);
168
+ }
169
+ catch (error) {
170
+ const message = error instanceof Error ? error.message : String(error);
171
+ task.status = { status: 'FAILED', progress: 0, message, task_error: { message } };
172
+ }
173
+ }
174
+ async function processVideoTask(taskId) {
175
+ const task = taskStore.get(taskId);
176
+ if (!task)
177
+ return;
178
+ // Simulate video generation (stub - no real API yet)
179
+ try {
180
+ task.status = { status: 'processing', progress: 0, message: 'Queued for video generation...' };
181
+ // Simulate progress over time
182
+ for (let i = 1; i <= 10; i++) {
183
+ await new Promise(r => setTimeout(r, 800));
184
+ task.status.progress = i * 10;
185
+ task.status.message = `Generating video... ${i * 10}%`;
186
+ }
187
+ task.status = {
188
+ status: 'completed',
189
+ progress: 100,
190
+ message: 'Video generation complete (stub)',
191
+ video_url: 'https://placeholder.studio/video.mp4',
192
+ };
193
+ task.completed_at = new Date();
194
+ log(`[Studio] Video task ${taskId} completed (stub)`);
195
+ }
196
+ catch (error) {
197
+ const message = error instanceof Error ? error.message : String(error);
198
+ task.status = { status: 'error', progress: 0, message, error: message };
199
+ }
200
+ }
201
+ // ============================================================================
202
+ // Image Generation API
203
+ // ============================================================================
204
+ export async function generateImage(input) {
205
+ const taskId = generateTaskId('img');
206
+ const mode = input.input_image ? 'edit' : 'generate';
207
+ log(`[Studio] Starting image generation: task=${taskId}, mode=${mode}`);
208
+ const task = {
209
+ task_id: taskId,
210
+ task_type: 'image',
211
+ asset_id: input.asset_id,
212
+ user_id: input.user_id,
213
+ input: input,
214
+ status: { status: 'queued', progress: 0, message: 'Task queued' },
215
+ created_at: new Date(),
216
+ };
217
+ taskStore.set(taskId, task);
218
+ processImageTask(taskId).catch(err => log(`[Studio] Background error: ${err}`));
219
+ return {
220
+ task_id: taskId,
221
+ asset_id: input.asset_id,
222
+ user_id: input.user_id,
223
+ mode,
224
+ status: 'processing',
225
+ estimated_time: 15,
226
+ };
227
+ }
228
+ export function getImageStatus(taskId) {
229
+ const task = taskStore.get(taskId);
230
+ return task?.status || null;
231
+ }
232
+ // ============================================================================
233
+ // Meshy 3D Generation API
234
+ // ============================================================================
235
+ export async function meshyGenerate(input) {
236
+ const taskId = generateTaskId('meshy');
237
+ log(`[Studio] Starting Meshy generation: task=${taskId}, mode=${input.mode}`);
238
+ const task = {
239
+ task_id: taskId,
240
+ task_type: 'meshy',
241
+ asset_id: input.asset_id || `asset_${Date.now()}`,
242
+ user_id: input.user_id || 'anonymous',
243
+ input: input,
244
+ status: { status: 'PENDING', progress: 0, message: 'Task queued' },
245
+ created_at: new Date(),
246
+ };
247
+ taskStore.set(taskId, task);
248
+ process3DTask(taskId).catch(err => log(`[Studio] Background error: ${err}`));
249
+ return {
250
+ task_id: taskId,
251
+ mode: input.mode,
252
+ status: 'PENDING',
253
+ estimated_time: 60,
254
+ };
255
+ }
256
+ export function getMeshyStatus(taskId) {
257
+ const task = taskStore.get(taskId);
258
+ return task?.status || null;
259
+ }
260
+ export async function meshyDownload(taskId, assetId, userId) {
261
+ const task = taskStore.get(taskId);
262
+ if (!task || task.status.status !== 'SUCCEEDED') {
263
+ throw new Error('Task not found or not completed');
264
+ }
265
+ return {
266
+ asset_id: assetId,
267
+ user_id: userId,
268
+ model_url: task.status.model_url,
269
+ thumbnail_url: task.status.thumbnail_url,
270
+ format: 'glb',
271
+ };
272
+ }
273
+ // ============================================================================
274
+ // Tripo 3D Generation API
275
+ // ============================================================================
276
+ export async function tripoGenerate(input) {
277
+ const taskId = generateTaskId('tripo');
278
+ log(`[Studio] Starting Tripo generation: task=${taskId}, type=${input.type}`);
279
+ const task = {
280
+ task_id: taskId,
281
+ task_type: 'tripo',
282
+ asset_id: input.asset_id || `asset_${Date.now()}`,
283
+ user_id: input.user_id || 'anonymous',
284
+ input: input,
285
+ status: { status: 'queued', progress: 0, message: 'Task queued' },
286
+ created_at: new Date(),
287
+ };
288
+ taskStore.set(taskId, task);
289
+ process3DTask(taskId).catch(err => log(`[Studio] Background error: ${err}`));
290
+ return {
291
+ task_id: taskId,
292
+ type: input.type,
293
+ status: 'queued',
294
+ estimated_time: 120,
295
+ };
296
+ }
297
+ export function getTripoStatus(taskId) {
298
+ const task = taskStore.get(taskId);
299
+ if (!task)
300
+ return null;
301
+ // Map internal status to Tripo status format
302
+ const status = task.status;
303
+ return {
304
+ ...status,
305
+ status: status.status === 'SUCCEEDED' ? 'completed' :
306
+ status.status === 'FAILED' ? 'failed' :
307
+ status.status === 'IN_PROGRESS' ? 'processing' : status.status,
308
+ };
309
+ }
310
+ export async function tripoDownload(taskId, assetId, userId) {
311
+ const task = taskStore.get(taskId);
312
+ if (!task || (task.status.status !== 'SUCCEEDED' && task.status.status !== 'completed')) {
313
+ throw new Error('Task not found or not completed');
314
+ }
315
+ return {
316
+ asset_id: assetId,
317
+ user_id: userId,
318
+ model_url: task.status.model_url,
319
+ thumbnail_url: task.status.thumbnail_url,
320
+ };
321
+ }
322
+ // ============================================================================
323
+ // Kling Video Generation API
324
+ // ============================================================================
325
+ export async function klingGenerateVideo(input) {
326
+ const taskId = generateTaskId('kling');
327
+ log(`[Studio] Starting Kling image-to-video: task=${taskId}`);
328
+ const task = {
329
+ task_id: taskId,
330
+ task_type: 'kling',
331
+ asset_id: input.asset_id,
332
+ user_id: input.user_id || 'anonymous',
333
+ input: input,
334
+ status: { status: 'queued', progress: 0, message: 'Task queued' },
335
+ created_at: new Date(),
336
+ };
337
+ taskStore.set(taskId, task);
338
+ processVideoTask(taskId).catch(err => log(`[Studio] Background error: ${err}`));
339
+ return {
340
+ task_id: taskId,
341
+ asset_id: input.asset_id,
342
+ status: 'processing',
343
+ estimated_time: 60,
344
+ cost: input.duration === 10 ? 0.55 : 0.28,
345
+ };
346
+ }
347
+ export async function klingGenerateTextVideo(input) {
348
+ const taskId = generateTaskId('kling_txt');
349
+ log(`[Studio] Starting Kling text-to-video: task=${taskId}`);
350
+ const task = {
351
+ task_id: taskId,
352
+ task_type: 'kling',
353
+ asset_id: input.asset_id,
354
+ user_id: input.user_id || 'anonymous',
355
+ input: { ...input, mode: 'text-to-video' },
356
+ status: { status: 'queued', progress: 0, message: 'Task queued' },
357
+ created_at: new Date(),
358
+ };
359
+ taskStore.set(taskId, task);
360
+ processVideoTask(taskId).catch(err => log(`[Studio] Background error: ${err}`));
361
+ return {
362
+ task_id: taskId,
363
+ asset_id: input.asset_id,
364
+ status: 'processing',
365
+ estimated_time: 60,
366
+ cost: input.duration === 10 ? 0.55 : 0.28,
367
+ };
368
+ }
369
+ export async function klingGenerateAvatar(input) {
370
+ const taskId = generateTaskId('kling_avatar');
371
+ log(`[Studio] Starting Kling avatar: task=${taskId}`);
372
+ const task = {
373
+ task_id: taskId,
374
+ task_type: 'kling',
375
+ asset_id: input.asset_id,
376
+ user_id: input.user_id || 'anonymous',
377
+ input: { ...input, mode: 'avatar' },
378
+ status: { status: 'queued', progress: 0, message: 'Task queued' },
379
+ created_at: new Date(),
380
+ };
381
+ taskStore.set(taskId, task);
382
+ processVideoTask(taskId).catch(err => log(`[Studio] Background error: ${err}`));
383
+ return {
384
+ task_id: taskId,
385
+ asset_id: input.asset_id,
386
+ status: 'processing',
387
+ estimated_time: 90,
388
+ cost: 0.35,
389
+ };
390
+ }
391
+ export function getKlingStatus(taskId) {
392
+ const task = taskStore.get(taskId);
393
+ return task?.status || null;
394
+ }
395
+ // ============================================================================
396
+ // Utility Functions
397
+ // ============================================================================
398
+ export function listTasks() {
399
+ return Array.from(taskStore.values()).map(t => ({
400
+ task_id: t.task_id,
401
+ task_type: t.task_type,
402
+ status: t.status.status,
403
+ created_at: t.created_at.toISOString(),
404
+ }));
405
+ }
406
+ export function cleanupTasks(olderThanMinutes = 30) {
407
+ const cutoff = Date.now() - olderThanMinutes * 60 * 1000;
408
+ let cleaned = 0;
409
+ for (const [taskId, task] of taskStore.entries()) {
410
+ const isComplete = ['completed', 'error', 'SUCCEEDED', 'FAILED'].includes(task.status.status);
411
+ if (isComplete && task.created_at.getTime() < cutoff) {
412
+ taskStore.delete(taskId);
413
+ cleaned++;
414
+ }
415
+ }
416
+ return cleaned;
417
+ }
418
+ export function isStudioError(result) {
419
+ return typeof result === 'object' && result !== null && 'error' in result && 'code' in result;
420
+ }
421
+ import { toolSuccess, toolError, requireFields } from '../shared/index.js';
422
+ import { studioCloudSpineTools } from './cloud-spine.js';
423
+ // ============================================================================
424
+ // Generation Middleware Tools (MCP-exposed)
425
+ // ============================================================================
426
+ export const studioGenerateImageTool = {
427
+ definition: {
428
+ name: 'studio_generate_image',
429
+ description: 'Generate an image using DALL-E 3 or FLUX. Returns a task ID for polling status.',
430
+ inputSchema: {
431
+ type: 'object',
432
+ properties: {
433
+ prompt: {
434
+ type: 'string',
435
+ description: 'Text prompt for image generation',
436
+ },
437
+ aspect_ratio: {
438
+ type: 'string',
439
+ enum: ['16:9', '9:16', '1:1'],
440
+ description: 'Aspect ratio (default: 16:9)',
441
+ },
442
+ asset_id: {
443
+ type: 'string',
444
+ description: 'Optional asset ID for tracking',
445
+ },
446
+ },
447
+ required: ['prompt'],
448
+ },
449
+ },
450
+ handler: async (args) => {
451
+ try {
452
+ requireFields(args, 'prompt');
453
+ const result = await generateImage({
454
+ asset_id: args.asset_id || `asset_${Date.now()}`,
455
+ user_id: 'claude-code',
456
+ prompt: args.prompt,
457
+ aspect_ratio: args.aspect_ratio || '16:9',
458
+ });
459
+ return toolSuccess(result);
460
+ }
461
+ catch (err) {
462
+ return toolError(err instanceof Error ? err.message : String(err));
463
+ }
464
+ },
465
+ };
466
+ export const studioGetImageStatusTool = {
467
+ definition: {
468
+ name: 'studio_get_image_status',
469
+ description: 'Get the status of an image generation task.',
470
+ inputSchema: {
471
+ type: 'object',
472
+ properties: {
473
+ task_id: {
474
+ type: 'string',
475
+ description: 'Task ID returned from studio_generate_image',
476
+ },
477
+ },
478
+ required: ['task_id'],
479
+ },
480
+ },
481
+ handler: async (args) => {
482
+ try {
483
+ requireFields(args, 'task_id');
484
+ const status = getImageStatus(args.task_id);
485
+ if (!status) {
486
+ return toolError('Task not found');
487
+ }
488
+ return toolSuccess(status);
489
+ }
490
+ catch (err) {
491
+ return toolError(err instanceof Error ? err.message : String(err));
492
+ }
493
+ },
494
+ };
495
+ export const studioListTasksTool = {
496
+ definition: {
497
+ name: 'studio_list_tasks',
498
+ description: 'List all active generation tasks (images, 3D, video).',
499
+ inputSchema: {
500
+ type: 'object',
501
+ properties: {},
502
+ },
503
+ },
504
+ handler: async () => {
505
+ try {
506
+ const tasks = listTasks();
507
+ return toolSuccess({ tasks, count: tasks.length });
508
+ }
509
+ catch (err) {
510
+ return toolError(err instanceof Error ? err.message : String(err));
511
+ }
512
+ },
513
+ };
514
+ // ============================================================================
515
+ // All Studio Tools
516
+ // ============================================================================
517
+ export const studioTools = [
518
+ // Generation middleware
519
+ studioGenerateImageTool,
520
+ studioGetImageStatusTool,
521
+ studioListTasksTool,
522
+ // Cloud spine (Supabase)
523
+ ...studioCloudSpineTools,
524
+ ];
525
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/studio/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Sentinel Test Specification Tools - ADR-0004 Oversight Pack
3
+ *
4
+ * Provides tools for creating and managing test specifications:
5
+ * - sentinel_createTestSpec: Create a new test specification atom
6
+ * - sentinel_listTestSpecs: List all test specs for a project
7
+ * - sentinel_compileTests: Compile test specs into documentation
8
+ * - sentinel_auditPolicies: Audit policy compliance
9
+ */
10
+ export type TestType = 'unit' | 'integration' | 'e2e' | 'contract' | 'property' | 'manual';
11
+ export type TestPriority = 'critical' | 'high' | 'medium' | 'low';
12
+ export type TestStatus = 'draft' | 'active' | 'deprecated';
13
+ export interface TestCase {
14
+ name: string;
15
+ description?: string;
16
+ steps?: string[];
17
+ expected: string;
18
+ tags?: string[];
19
+ }
20
+ export interface CreateTestSpecInput {
21
+ projectId?: string;
22
+ title: string;
23
+ description: string;
24
+ type: TestType;
25
+ priority?: TestPriority;
26
+ policy_refs?: string[];
27
+ test_cases: TestCase[];
28
+ setup?: string;
29
+ teardown?: string;
30
+ tags?: string[];
31
+ }
32
+ export interface CreateTestSpecOutput {
33
+ test_id: string;
34
+ timestamp: string;
35
+ path: string;
36
+ title: string;
37
+ }
38
+ export interface ListTestSpecsInput {
39
+ projectId?: string;
40
+ type?: TestType;
41
+ priority?: TestPriority;
42
+ policy_ref?: string;
43
+ tags?: string[];
44
+ }
45
+ export interface TestSpecSummary {
46
+ id: string;
47
+ title: string;
48
+ type: TestType;
49
+ priority: TestPriority;
50
+ status: TestStatus;
51
+ case_count: number;
52
+ policy_refs: string[];
53
+ tags: string[];
54
+ }
55
+ export interface ListTestSpecsOutput {
56
+ test_specs: TestSpecSummary[];
57
+ total: number;
58
+ }
59
+ export interface CompileTestsInput {
60
+ projectId?: string;
61
+ output_format?: 'markdown' | 'json' | 'both';
62
+ include_deprecated?: boolean;
63
+ }
64
+ export interface CompileTestsOutput {
65
+ markdown_path?: string;
66
+ json_path?: string;
67
+ specs_compiled: number;
68
+ total_cases: number;
69
+ timestamp: string;
70
+ }
71
+ export interface AuditPoliciesInput {
72
+ projectId?: string;
73
+ check_freshness?: boolean;
74
+ run_enforcement?: boolean;
75
+ }
76
+ export interface PolicyComplianceItem {
77
+ policy_id: string;
78
+ title: string;
79
+ severity: string;
80
+ status: 'pass' | 'fail' | 'warn' | 'skip';
81
+ message?: string;
82
+ }
83
+ export interface AuditPoliciesOutput {
84
+ timestamp: string;
85
+ policies_checked: number;
86
+ compliance: PolicyComplianceItem[];
87
+ freshness: {
88
+ policies_stale: boolean;
89
+ tests_stale: boolean;
90
+ last_compiled_policies?: string;
91
+ last_compiled_tests?: string;
92
+ };
93
+ summary: {
94
+ pass: number;
95
+ fail: number;
96
+ warn: number;
97
+ skip: number;
98
+ };
99
+ }
100
+ export interface TestSpecError {
101
+ error: string;
102
+ message: string;
103
+ suggestion?: string;
104
+ }
105
+ /**
106
+ * Create a new test specification atom
107
+ */
108
+ export declare function createTestSpec(input: CreateTestSpecInput): Promise<CreateTestSpecOutput | TestSpecError>;
109
+ /**
110
+ * List all test specifications for a project
111
+ */
112
+ export declare function listTestSpecs(input: ListTestSpecsInput): Promise<ListTestSpecsOutput | TestSpecError>;
113
+ /**
114
+ * Compile test specifications into documentation
115
+ */
116
+ export declare function compileTests(input: CompileTestsInput): Promise<CompileTestsOutput | TestSpecError>;
117
+ /**
118
+ * Audit policy compliance
119
+ */
120
+ export declare function auditPolicies(input: AuditPoliciesInput): Promise<AuditPoliciesOutput | TestSpecError>;
121
+ export declare function isTestSpecError(result: unknown): result is TestSpecError;
122
+ //# sourceMappingURL=testSpec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testSpec.d.ts","sourceRoot":"","sources":["../../src/tools/testSpec.ts"],"names":[],"mappings":"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"}