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,176 @@
1
+ // ============================================================================
2
+ // Voice Domain Tools
3
+ // ============================================================================
4
+ // Tools for voice command processing and inbox management.
5
+ // ============================================================================
6
+ import { toolSuccess, toolError, requireFields } from '../shared/index.js';
7
+ import { voiceInboxAdd, voiceInboxList, voiceInboxProcess, voiceCommand, voiceInboxSync, } from '../voice.js';
8
+ // ============================================================================
9
+ // Voice Inbox Add Tool
10
+ // ============================================================================
11
+ export const voiceInboxAddTool = {
12
+ definition: {
13
+ name: 'voice_inbox_add',
14
+ description: 'Add a voice transcript to the inbox for processing. Parses intent automatically. Use process_immediately=true for instant execution.',
15
+ inputSchema: {
16
+ type: 'object',
17
+ properties: {
18
+ project_id: { type: 'string', description: 'Project ID (optional, uses default)' },
19
+ transcript: { type: 'string', description: 'The voice transcript text' },
20
+ source: {
21
+ type: 'string',
22
+ enum: ['voice_cli', 'text_input', 'share_extension', 'api', 'mobile_app'],
23
+ description: 'Source of the transcript (default: text_input)',
24
+ },
25
+ tags: { type: 'array', items: { type: 'string' }, description: 'Optional tags' },
26
+ process_immediately: { type: 'boolean', description: 'Process now instead of queuing (default: false)' },
27
+ },
28
+ required: ['transcript'],
29
+ },
30
+ },
31
+ handler: async (args) => {
32
+ try {
33
+ const input = args;
34
+ requireFields(input, 'transcript');
35
+ const result = await voiceInboxAdd(input);
36
+ return toolSuccess(result);
37
+ }
38
+ catch (err) {
39
+ return toolError(err instanceof Error ? err.message : String(err));
40
+ }
41
+ },
42
+ };
43
+ // ============================================================================
44
+ // Voice Inbox List Tool
45
+ // ============================================================================
46
+ export const voiceInboxListTool = {
47
+ definition: {
48
+ name: 'voice_inbox_list',
49
+ description: 'List voice inbox items, optionally filtered by status.',
50
+ inputSchema: {
51
+ type: 'object',
52
+ properties: {
53
+ project_id: { type: 'string', description: 'Project ID (optional, uses default)' },
54
+ status: {
55
+ type: 'string',
56
+ enum: ['queued', 'processing', 'completed', 'failed'],
57
+ description: 'Filter by status',
58
+ },
59
+ limit: { type: 'number', description: 'Max items to return' },
60
+ },
61
+ },
62
+ },
63
+ handler: async (args) => {
64
+ try {
65
+ const input = args;
66
+ const result = await voiceInboxList(input);
67
+ return toolSuccess(result);
68
+ }
69
+ catch (err) {
70
+ return toolError(err instanceof Error ? err.message : String(err));
71
+ }
72
+ },
73
+ };
74
+ // ============================================================================
75
+ // Voice Inbox Process Tool
76
+ // ============================================================================
77
+ export const voiceInboxProcessTool = {
78
+ definition: {
79
+ name: 'voice_inbox_process',
80
+ description: 'Process a queued voice inbox item by routing to the appropriate tool.',
81
+ inputSchema: {
82
+ type: 'object',
83
+ properties: {
84
+ project_id: { type: 'string', description: 'Project ID (optional, uses default)' },
85
+ inbox_id: { type: 'string', description: 'The inbox item ID to process' },
86
+ override_intent: {
87
+ type: 'string',
88
+ enum: ['add_wish', 'log_issue', 'create_epic', 'search', 'ask_oracle', 'log_crit', 'log_friction', 'record_learning'],
89
+ description: 'Override the auto-detected intent',
90
+ },
91
+ override_params: { type: 'object', description: 'Override parsed parameters' },
92
+ },
93
+ required: ['inbox_id'],
94
+ },
95
+ },
96
+ handler: async (args) => {
97
+ try {
98
+ const input = args;
99
+ requireFields(input, 'inbox_id');
100
+ const result = await voiceInboxProcess(input);
101
+ return toolSuccess(result);
102
+ }
103
+ catch (err) {
104
+ return toolError(err instanceof Error ? err.message : String(err));
105
+ }
106
+ },
107
+ };
108
+ // ============================================================================
109
+ // Voice Command Tool
110
+ // ============================================================================
111
+ export const voiceCommandTool = {
112
+ definition: {
113
+ name: 'voice_command',
114
+ description: 'Process a voice command directly without storing in inbox. For real-time interactions.',
115
+ inputSchema: {
116
+ type: 'object',
117
+ properties: {
118
+ project_id: { type: 'string', description: 'Project ID (optional, uses default)' },
119
+ transcript: { type: 'string', description: 'The voice transcript to process' },
120
+ },
121
+ required: ['transcript'],
122
+ },
123
+ },
124
+ handler: async (args) => {
125
+ try {
126
+ const input = args;
127
+ requireFields(input, 'transcript');
128
+ const result = await voiceCommand(input);
129
+ return toolSuccess(result);
130
+ }
131
+ catch (err) {
132
+ return toolError(err instanceof Error ? err.message : String(err));
133
+ }
134
+ },
135
+ };
136
+ // ============================================================================
137
+ // Voice Inbox Sync Tool
138
+ // ============================================================================
139
+ export const voiceInboxSyncTool = {
140
+ definition: {
141
+ name: 'voice_inbox_sync',
142
+ description: 'Sync voice inbox messages from Supabase to local project. Call this to pull down pending messages that were captured remotely (e.g., from iOS app). Like checking email.',
143
+ inputSchema: {
144
+ type: 'object',
145
+ properties: {
146
+ project_id: { type: 'string', description: 'Project ID to sync messages for (required)' },
147
+ unsynced_only: { type: 'boolean', description: 'Only sync messages not yet synced (default: true)' },
148
+ limit: { type: 'number', description: 'Maximum messages to sync (default: 50)' },
149
+ process_after_sync: { type: 'boolean', description: 'Process synced messages immediately (default: false)' },
150
+ },
151
+ required: ['project_id'],
152
+ },
153
+ },
154
+ handler: async (args) => {
155
+ try {
156
+ const input = args;
157
+ requireFields(input, 'project_id');
158
+ const result = await voiceInboxSync(input);
159
+ return toolSuccess(result);
160
+ }
161
+ catch (err) {
162
+ return toolError(err instanceof Error ? err.message : String(err));
163
+ }
164
+ },
165
+ };
166
+ // ============================================================================
167
+ // Export All Tools
168
+ // ============================================================================
169
+ export const voiceTools = [
170
+ voiceInboxAddTool,
171
+ voiceInboxListTool,
172
+ voiceInboxProcessTool,
173
+ voiceCommandTool,
174
+ voiceInboxSyncTool,
175
+ ];
176
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/voice/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Voice MCP Tools - Voice Input for Decibel Commands
3
+ *
4
+ * Provides MCP tools for:
5
+ * - Managing a Voice Inbox (queued transcripts)
6
+ * - Processing voice commands via AI intent parsing
7
+ * - Routing to existing Decibel tools based on intent
8
+ *
9
+ * DOJO-EXP-0001: Voice Input for Decibel Commands
10
+ * Status: Ungraduated experiment - feature flagged
11
+ */
12
+ export type VoiceInboxStatus = 'queued' | 'processing' | 'completed' | 'failed';
13
+ export type VoiceInboxSource = 'voice_cli' | 'text_input' | 'share_extension' | 'api' | 'mobile_app';
14
+ export type VoiceIntent = 'add_wish' | 'log_issue' | 'create_epic' | 'search' | 'ask_oracle' | 'log_crit' | 'log_friction' | 'record_learning' | 'unknown';
15
+ export interface VoiceInboxItem {
16
+ id: string;
17
+ transcript: string;
18
+ source: VoiceInboxSource;
19
+ created_at: string;
20
+ status: VoiceInboxStatus;
21
+ intent?: VoiceIntent;
22
+ intent_confidence?: number;
23
+ parsed_params?: Record<string, unknown>;
24
+ result?: {
25
+ tool_called: string;
26
+ tool_result: unknown;
27
+ completed_at: string;
28
+ };
29
+ error?: string;
30
+ tags?: string[];
31
+ project_id: string;
32
+ }
33
+ export interface VoiceBaseInput {
34
+ project_id?: string;
35
+ }
36
+ /**
37
+ * Parse intent from a voice transcript.
38
+ * Uses pattern matching for now - can be upgraded to AI-powered later.
39
+ */
40
+ export declare function parseIntent(transcript: string): {
41
+ intent: VoiceIntent;
42
+ confidence: number;
43
+ params: Record<string, unknown>;
44
+ };
45
+ export interface VoiceInboxAddInput extends VoiceBaseInput {
46
+ transcript: string;
47
+ source?: VoiceInboxSource;
48
+ tags?: string[];
49
+ process_immediately?: boolean;
50
+ explicit_intent?: string;
51
+ }
52
+ export interface VoiceInboxAddOutput {
53
+ inbox_id: string;
54
+ transcript: string;
55
+ intent: VoiceIntent;
56
+ intent_confidence: number;
57
+ status: VoiceInboxStatus;
58
+ immediate_result?: unknown;
59
+ }
60
+ export declare function voiceInboxAdd(input: VoiceInboxAddInput): Promise<VoiceInboxAddOutput>;
61
+ export interface VoiceInboxListInput extends VoiceBaseInput {
62
+ status?: VoiceInboxStatus;
63
+ limit?: number;
64
+ }
65
+ export interface VoiceInboxListOutput {
66
+ items: VoiceInboxItem[];
67
+ total: number;
68
+ by_status: Record<VoiceInboxStatus, number>;
69
+ }
70
+ export declare function voiceInboxList(input: VoiceInboxListInput): Promise<VoiceInboxListOutput>;
71
+ export interface VoiceInboxProcessInput extends VoiceBaseInput {
72
+ inbox_id: string;
73
+ override_intent?: VoiceIntent;
74
+ override_params?: Record<string, unknown>;
75
+ }
76
+ export interface VoiceInboxProcessOutput {
77
+ inbox_id: string;
78
+ intent: VoiceIntent;
79
+ tool_called: string;
80
+ result: unknown;
81
+ success: boolean;
82
+ }
83
+ export declare function voiceInboxProcess(input: VoiceInboxProcessInput): Promise<VoiceInboxProcessOutput>;
84
+ export interface VoiceCommandInput extends VoiceBaseInput {
85
+ transcript: string;
86
+ }
87
+ export interface VoiceCommandOutput {
88
+ transcript: string;
89
+ intent: VoiceIntent;
90
+ intent_confidence: number;
91
+ tool_called: string;
92
+ result: unknown;
93
+ success: boolean;
94
+ }
95
+ /**
96
+ * Process a voice command directly without storing in inbox.
97
+ * Use for real-time voice interactions.
98
+ */
99
+ export declare function voiceCommand(input: VoiceCommandInput): Promise<VoiceCommandOutput>;
100
+ export interface VoiceInboxSyncInput extends VoiceBaseInput {
101
+ /** Only sync unsynced messages (default: true) */
102
+ unsynced_only?: boolean;
103
+ /** Maximum messages to sync (default: 50) */
104
+ limit?: number;
105
+ /** If true, also process synced messages immediately */
106
+ process_after_sync?: boolean;
107
+ }
108
+ export interface VoiceInboxSyncOutput {
109
+ synced: number;
110
+ skipped: number;
111
+ errors: number;
112
+ items: Array<{
113
+ id: string;
114
+ transcript: string;
115
+ intent: VoiceIntent;
116
+ status: 'synced' | 'already_exists' | 'error';
117
+ error?: string;
118
+ }>;
119
+ }
120
+ /**
121
+ * Sync voice inbox messages from Supabase to local project.
122
+ * This is the "pull" operation - projects can call this to get pending messages.
123
+ */
124
+ export declare function voiceInboxSync(input: VoiceInboxSyncInput): Promise<VoiceInboxSyncOutput>;
125
+ export declare const voiceToolDefinitions: ({
126
+ name: string;
127
+ description: string;
128
+ inputSchema: {
129
+ type: string;
130
+ properties: {
131
+ project_id: {
132
+ type: string;
133
+ description: string;
134
+ };
135
+ transcript: {
136
+ type: string;
137
+ description: string;
138
+ };
139
+ source: {
140
+ type: string;
141
+ enum: string[];
142
+ description: string;
143
+ };
144
+ tags: {
145
+ type: string;
146
+ items: {
147
+ type: string;
148
+ };
149
+ description: string;
150
+ };
151
+ process_immediately: {
152
+ type: string;
153
+ description: string;
154
+ };
155
+ status?: undefined;
156
+ limit?: undefined;
157
+ inbox_id?: undefined;
158
+ override_intent?: undefined;
159
+ override_params?: undefined;
160
+ unsynced_only?: undefined;
161
+ process_after_sync?: undefined;
162
+ };
163
+ required: string[];
164
+ };
165
+ } | {
166
+ name: string;
167
+ description: string;
168
+ inputSchema: {
169
+ type: string;
170
+ properties: {
171
+ project_id: {
172
+ type: string;
173
+ description: string;
174
+ };
175
+ status: {
176
+ type: string;
177
+ enum: string[];
178
+ description: string;
179
+ };
180
+ limit: {
181
+ type: string;
182
+ description: string;
183
+ };
184
+ transcript?: undefined;
185
+ source?: undefined;
186
+ tags?: undefined;
187
+ process_immediately?: undefined;
188
+ inbox_id?: undefined;
189
+ override_intent?: undefined;
190
+ override_params?: undefined;
191
+ unsynced_only?: undefined;
192
+ process_after_sync?: undefined;
193
+ };
194
+ required?: undefined;
195
+ };
196
+ } | {
197
+ name: string;
198
+ description: string;
199
+ inputSchema: {
200
+ type: string;
201
+ properties: {
202
+ project_id: {
203
+ type: string;
204
+ description: string;
205
+ };
206
+ inbox_id: {
207
+ type: string;
208
+ description: string;
209
+ };
210
+ override_intent: {
211
+ type: string;
212
+ enum: string[];
213
+ description: string;
214
+ };
215
+ override_params: {
216
+ type: string;
217
+ description: string;
218
+ };
219
+ transcript?: undefined;
220
+ source?: undefined;
221
+ tags?: undefined;
222
+ process_immediately?: undefined;
223
+ status?: undefined;
224
+ limit?: undefined;
225
+ unsynced_only?: undefined;
226
+ process_after_sync?: undefined;
227
+ };
228
+ required: string[];
229
+ };
230
+ } | {
231
+ name: string;
232
+ description: string;
233
+ inputSchema: {
234
+ type: string;
235
+ properties: {
236
+ project_id: {
237
+ type: string;
238
+ description: string;
239
+ };
240
+ transcript: {
241
+ type: string;
242
+ description: string;
243
+ };
244
+ source?: undefined;
245
+ tags?: undefined;
246
+ process_immediately?: undefined;
247
+ status?: undefined;
248
+ limit?: undefined;
249
+ inbox_id?: undefined;
250
+ override_intent?: undefined;
251
+ override_params?: undefined;
252
+ unsynced_only?: undefined;
253
+ process_after_sync?: undefined;
254
+ };
255
+ required: string[];
256
+ };
257
+ } | {
258
+ name: string;
259
+ description: string;
260
+ inputSchema: {
261
+ type: string;
262
+ properties: {
263
+ project_id: {
264
+ type: string;
265
+ description: string;
266
+ };
267
+ unsynced_only: {
268
+ type: string;
269
+ description: string;
270
+ };
271
+ limit: {
272
+ type: string;
273
+ description: string;
274
+ };
275
+ process_after_sync: {
276
+ type: string;
277
+ description: string;
278
+ };
279
+ transcript?: undefined;
280
+ source?: undefined;
281
+ tags?: undefined;
282
+ process_immediately?: undefined;
283
+ status?: undefined;
284
+ inbox_id?: undefined;
285
+ override_intent?: undefined;
286
+ override_params?: undefined;
287
+ };
288
+ required: string[];
289
+ };
290
+ })[];
291
+ //# sourceMappingURL=voice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../src/tools/voice.ts"],"names":[],"mappings":"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"}