monty-autonomous-fullstack-dev-multillm 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 (186) hide show
  1. package/LICENSE +81 -0
  2. package/README.md +608 -0
  3. package/bin/cli.js +448 -0
  4. package/dist/agents/coding.d.ts +15 -0
  5. package/dist/agents/coding.d.ts.map +1 -0
  6. package/dist/agents/coding.js +189 -0
  7. package/dist/agents/coding.js.map +1 -0
  8. package/dist/agents/initializer.d.ts +15 -0
  9. package/dist/agents/initializer.d.ts.map +1 -0
  10. package/dist/agents/initializer.js +87 -0
  11. package/dist/agents/initializer.js.map +1 -0
  12. package/dist/agents/prompts/arbitrator.md +143 -0
  13. package/dist/agents/prompts/coding.md +247 -0
  14. package/dist/agents/prompts/initializer.md +98 -0
  15. package/dist/config/agent-config.d.ts +103 -0
  16. package/dist/config/agent-config.d.ts.map +1 -0
  17. package/dist/config/agent-config.js +138 -0
  18. package/dist/config/agent-config.js.map +1 -0
  19. package/dist/config/auth-config.d.ts +152 -0
  20. package/dist/config/auth-config.d.ts.map +1 -0
  21. package/dist/config/auth-config.js +139 -0
  22. package/dist/config/auth-config.js.map +1 -0
  23. package/dist/config/mcp-config.d.ts +109 -0
  24. package/dist/config/mcp-config.d.ts.map +1 -0
  25. package/dist/config/mcp-config.js +234 -0
  26. package/dist/config/mcp-config.js.map +1 -0
  27. package/dist/config/provider-config.d.ts +139 -0
  28. package/dist/config/provider-config.d.ts.map +1 -0
  29. package/dist/config/provider-config.js +344 -0
  30. package/dist/config/provider-config.js.map +1 -0
  31. package/dist/config/subagents-config.d.ts +85 -0
  32. package/dist/config/subagents-config.d.ts.map +1 -0
  33. package/dist/config/subagents-config.js +430 -0
  34. package/dist/config/subagents-config.js.map +1 -0
  35. package/dist/index.d.ts +14 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +385 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/orchestrator/arbitrator.d.ts +93 -0
  40. package/dist/orchestrator/arbitrator.d.ts.map +1 -0
  41. package/dist/orchestrator/arbitrator.js +330 -0
  42. package/dist/orchestrator/arbitrator.js.map +1 -0
  43. package/dist/orchestrator/index.d.ts +113 -0
  44. package/dist/orchestrator/index.d.ts.map +1 -0
  45. package/dist/orchestrator/index.js +217 -0
  46. package/dist/orchestrator/index.js.map +1 -0
  47. package/dist/orchestrator/review-coordinator.d.ts +143 -0
  48. package/dist/orchestrator/review-coordinator.d.ts.map +1 -0
  49. package/dist/orchestrator/review-coordinator.js +401 -0
  50. package/dist/orchestrator/review-coordinator.js.map +1 -0
  51. package/dist/orchestrator/task-classifier.d.ts +87 -0
  52. package/dist/orchestrator/task-classifier.d.ts.map +1 -0
  53. package/dist/orchestrator/task-classifier.js +250 -0
  54. package/dist/orchestrator/task-classifier.js.map +1 -0
  55. package/dist/providers/anthropic-provider.d.ts +64 -0
  56. package/dist/providers/anthropic-provider.d.ts.map +1 -0
  57. package/dist/providers/anthropic-provider.js +264 -0
  58. package/dist/providers/anthropic-provider.js.map +1 -0
  59. package/dist/providers/base-provider.d.ts +219 -0
  60. package/dist/providers/base-provider.d.ts.map +1 -0
  61. package/dist/providers/base-provider.js +143 -0
  62. package/dist/providers/base-provider.js.map +1 -0
  63. package/dist/providers/cursor-provider.d.ts +82 -0
  64. package/dist/providers/cursor-provider.d.ts.map +1 -0
  65. package/dist/providers/cursor-provider.js +321 -0
  66. package/dist/providers/cursor-provider.js.map +1 -0
  67. package/dist/providers/google-provider.d.ts +75 -0
  68. package/dist/providers/google-provider.d.ts.map +1 -0
  69. package/dist/providers/google-provider.js +274 -0
  70. package/dist/providers/google-provider.js.map +1 -0
  71. package/dist/providers/index.d.ts +92 -0
  72. package/dist/providers/index.d.ts.map +1 -0
  73. package/dist/providers/index.js +233 -0
  74. package/dist/providers/index.js.map +1 -0
  75. package/dist/providers/openai-provider.d.ts +83 -0
  76. package/dist/providers/openai-provider.d.ts.map +1 -0
  77. package/dist/providers/openai-provider.js +295 -0
  78. package/dist/providers/openai-provider.js.map +1 -0
  79. package/dist/templates/feature_list.template.json +66 -0
  80. package/dist/templates/progress.template.txt +51 -0
  81. package/dist/utils/auth-manager.d.ts +121 -0
  82. package/dist/utils/auth-manager.d.ts.map +1 -0
  83. package/dist/utils/auth-manager.js +560 -0
  84. package/dist/utils/auth-manager.js.map +1 -0
  85. package/dist/utils/budget-enforcer.d.ts +181 -0
  86. package/dist/utils/budget-enforcer.d.ts.map +1 -0
  87. package/dist/utils/budget-enforcer.js +386 -0
  88. package/dist/utils/budget-enforcer.js.map +1 -0
  89. package/dist/utils/chatgpt-detector.d.ts +51 -0
  90. package/dist/utils/chatgpt-detector.d.ts.map +1 -0
  91. package/dist/utils/chatgpt-detector.js +274 -0
  92. package/dist/utils/chatgpt-detector.js.map +1 -0
  93. package/dist/utils/claude-code-detector.d.ts +39 -0
  94. package/dist/utils/claude-code-detector.d.ts.map +1 -0
  95. package/dist/utils/claude-code-detector.js +153 -0
  96. package/dist/utils/claude-code-detector.js.map +1 -0
  97. package/dist/utils/code-quality.d.ts +58 -0
  98. package/dist/utils/code-quality.d.ts.map +1 -0
  99. package/dist/utils/code-quality.js +258 -0
  100. package/dist/utils/code-quality.js.map +1 -0
  101. package/dist/utils/context-primer.d.ts +50 -0
  102. package/dist/utils/context-primer.d.ts.map +1 -0
  103. package/dist/utils/context-primer.js +429 -0
  104. package/dist/utils/context-primer.js.map +1 -0
  105. package/dist/utils/dependency-management.d.ts +40 -0
  106. package/dist/utils/dependency-management.d.ts.map +1 -0
  107. package/dist/utils/dependency-management.js +123 -0
  108. package/dist/utils/dependency-management.js.map +1 -0
  109. package/dist/utils/environment-validation.d.ts +33 -0
  110. package/dist/utils/environment-validation.d.ts.map +1 -0
  111. package/dist/utils/environment-validation.js +136 -0
  112. package/dist/utils/environment-validation.js.map +1 -0
  113. package/dist/utils/error-recovery.d.ts +60 -0
  114. package/dist/utils/error-recovery.d.ts.map +1 -0
  115. package/dist/utils/error-recovery.js +183 -0
  116. package/dist/utils/error-recovery.js.map +1 -0
  117. package/dist/utils/feature-list.d.ts +102 -0
  118. package/dist/utils/feature-list.d.ts.map +1 -0
  119. package/dist/utils/feature-list.js +191 -0
  120. package/dist/utils/feature-list.js.map +1 -0
  121. package/dist/utils/gemini-detector.d.ts +65 -0
  122. package/dist/utils/gemini-detector.d.ts.map +1 -0
  123. package/dist/utils/gemini-detector.js +340 -0
  124. package/dist/utils/gemini-detector.js.map +1 -0
  125. package/dist/utils/git-utils.d.ts +48 -0
  126. package/dist/utils/git-utils.d.ts.map +1 -0
  127. package/dist/utils/git-utils.js +110 -0
  128. package/dist/utils/git-utils.js.map +1 -0
  129. package/dist/utils/health-check.d.ts +32 -0
  130. package/dist/utils/health-check.d.ts.map +1 -0
  131. package/dist/utils/health-check.js +152 -0
  132. package/dist/utils/health-check.js.map +1 -0
  133. package/dist/utils/hooks-manager.d.ts +154 -0
  134. package/dist/utils/hooks-manager.d.ts.map +1 -0
  135. package/dist/utils/hooks-manager.js +359 -0
  136. package/dist/utils/hooks-manager.js.map +1 -0
  137. package/dist/utils/multi-auth-manager.d.ts +144 -0
  138. package/dist/utils/multi-auth-manager.d.ts.map +1 -0
  139. package/dist/utils/multi-auth-manager.js +588 -0
  140. package/dist/utils/multi-auth-manager.js.map +1 -0
  141. package/dist/utils/progress.d.ts +49 -0
  142. package/dist/utils/progress.d.ts.map +1 -0
  143. package/dist/utils/progress.js +209 -0
  144. package/dist/utils/progress.js.map +1 -0
  145. package/dist/utils/project-detection.d.ts +40 -0
  146. package/dist/utils/project-detection.d.ts.map +1 -0
  147. package/dist/utils/project-detection.js +230 -0
  148. package/dist/utils/project-detection.js.map +1 -0
  149. package/dist/utils/session-manager.d.ts +119 -0
  150. package/dist/utils/session-manager.d.ts.map +1 -0
  151. package/dist/utils/session-manager.js +389 -0
  152. package/dist/utils/session-manager.js.map +1 -0
  153. package/dist/utils/skills-manager.d.ts +113 -0
  154. package/dist/utils/skills-manager.d.ts.map +1 -0
  155. package/dist/utils/skills-manager.js +332 -0
  156. package/dist/utils/skills-manager.js.map +1 -0
  157. package/dist/utils/structured-output.d.ts +117 -0
  158. package/dist/utils/structured-output.d.ts.map +1 -0
  159. package/dist/utils/structured-output.js +191 -0
  160. package/dist/utils/structured-output.js.map +1 -0
  161. package/dist/utils/subagent-manager.d.ts +143 -0
  162. package/dist/utils/subagent-manager.d.ts.map +1 -0
  163. package/dist/utils/subagent-manager.js +326 -0
  164. package/dist/utils/subagent-manager.js.map +1 -0
  165. package/dist/utils/supabase-setup.d.ts +50 -0
  166. package/dist/utils/supabase-setup.d.ts.map +1 -0
  167. package/dist/utils/supabase-setup.js +151 -0
  168. package/dist/utils/supabase-setup.js.map +1 -0
  169. package/dist/utils/token-refresh.d.ts +21 -0
  170. package/dist/utils/token-refresh.d.ts.map +1 -0
  171. package/dist/utils/token-refresh.js +77 -0
  172. package/dist/utils/token-refresh.js.map +1 -0
  173. package/dist/utils/tos-warning.d.ts +115 -0
  174. package/dist/utils/tos-warning.d.ts.map +1 -0
  175. package/dist/utils/tos-warning.js +304 -0
  176. package/dist/utils/tos-warning.js.map +1 -0
  177. package/dist/utils/usage-monitor.d.ts +156 -0
  178. package/dist/utils/usage-monitor.d.ts.map +1 -0
  179. package/dist/utils/usage-monitor.js +296 -0
  180. package/dist/utils/usage-monitor.js.map +1 -0
  181. package/package.json +105 -0
  182. package/scripts/init.ps1 +73 -0
  183. package/scripts/init.sh +86 -0
  184. package/scripts/test-auth.sh +90 -0
  185. package/templates/feature_list.template.json +66 -0
  186. package/templates/progress.template.txt +51 -0
@@ -0,0 +1,344 @@
1
+ /**
2
+ * Provider Configuration
3
+ * Configuration for all supported AI providers (Anthropic, OpenAI, Google, Cursor).
4
+ * Defines capabilities, tool mappings, models, and rate limits per provider.
5
+ *
6
+ * Copyright (c) 2025 Dobeu Tech Solutions LLC
7
+ * Licensed under CC BY-NC 4.0
8
+ */
9
+ /**
10
+ * Provider configurations for all supported providers
11
+ */
12
+ export const PROVIDER_CONFIGS = {
13
+ anthropic: {
14
+ name: 'anthropic',
15
+ displayName: 'Claude (Anthropic)',
16
+ packageName: '@anthropic-ai/claude-agent-sdk',
17
+ enabled: true,
18
+ capabilities: {
19
+ streaming: true,
20
+ threads: false,
21
+ browserAutomation: true,
22
+ codeExecution: false,
23
+ multiAgent: true,
24
+ toolCalling: true,
25
+ vision: true,
26
+ },
27
+ toolMapping: {
28
+ Read: 'Read',
29
+ Write: 'Write',
30
+ Edit: 'Edit',
31
+ Bash: 'Bash',
32
+ Glob: 'Glob',
33
+ Grep: 'Grep',
34
+ Browser: 'Browser',
35
+ Task: 'Task',
36
+ WebFetch: 'WebFetch',
37
+ WebSearch: 'WebSearch',
38
+ },
39
+ models: [
40
+ {
41
+ id: 'claude-sonnet-4-20250514',
42
+ name: 'Claude Sonnet 4',
43
+ contextWindow: 200000,
44
+ costPerMToken: { input: 3.0, output: 15.0 },
45
+ capabilities: ['reasoning', 'coding', 'vision', 'tool_use'],
46
+ },
47
+ {
48
+ id: 'claude-opus-4-20250514',
49
+ name: 'Claude Opus 4',
50
+ contextWindow: 200000,
51
+ costPerMToken: { input: 15.0, output: 75.0 },
52
+ capabilities: ['reasoning', 'coding', 'vision', 'tool_use', 'extended_thinking'],
53
+ },
54
+ {
55
+ id: 'claude-3-5-sonnet-20241022',
56
+ name: 'Claude 3.5 Sonnet',
57
+ contextWindow: 200000,
58
+ costPerMToken: { input: 3.0, output: 15.0 },
59
+ capabilities: ['reasoning', 'coding', 'vision', 'tool_use'],
60
+ },
61
+ ],
62
+ defaultModel: 'claude-sonnet-4-20250514',
63
+ rateLimits: {
64
+ requestsPerMinute: 50,
65
+ tokensPerMinute: 100000,
66
+ tokensPerDay: 1000000,
67
+ },
68
+ apiEndpoint: 'https://api.anthropic.com/v1',
69
+ authHeader: 'x-api-key',
70
+ envVarName: 'ANTHROPIC_API_KEY',
71
+ },
72
+ openai: {
73
+ name: 'openai',
74
+ displayName: 'Codex (OpenAI)',
75
+ packageName: '@openai/codex-sdk',
76
+ enabled: false,
77
+ capabilities: {
78
+ streaming: true,
79
+ threads: true,
80
+ browserAutomation: false,
81
+ codeExecution: true,
82
+ multiAgent: false,
83
+ toolCalling: true,
84
+ vision: true,
85
+ },
86
+ toolMapping: {
87
+ Read: 'read_file',
88
+ Write: 'write_file',
89
+ Edit: 'edit_file',
90
+ Bash: 'run_command',
91
+ Glob: 'glob_files',
92
+ Grep: 'search_files',
93
+ Browser: null, // Not supported
94
+ Task: null, // Different implementation
95
+ WebFetch: 'web_fetch',
96
+ WebSearch: 'web_search',
97
+ },
98
+ models: [
99
+ {
100
+ id: 'gpt-4-turbo',
101
+ name: 'GPT-4 Turbo',
102
+ contextWindow: 128000,
103
+ costPerMToken: { input: 10.0, output: 30.0 },
104
+ capabilities: ['reasoning', 'coding', 'vision', 'tool_use'],
105
+ },
106
+ {
107
+ id: 'gpt-4o',
108
+ name: 'GPT-4o',
109
+ contextWindow: 128000,
110
+ costPerMToken: { input: 5.0, output: 15.0 },
111
+ capabilities: ['reasoning', 'coding', 'vision', 'tool_use'],
112
+ },
113
+ {
114
+ id: 'gpt-4o-mini',
115
+ name: 'GPT-4o Mini',
116
+ contextWindow: 128000,
117
+ costPerMToken: { input: 0.15, output: 0.60 },
118
+ capabilities: ['reasoning', 'coding', 'tool_use'],
119
+ },
120
+ {
121
+ id: 'o1',
122
+ name: 'O1',
123
+ contextWindow: 200000,
124
+ costPerMToken: { input: 15.0, output: 60.0 },
125
+ capabilities: ['extended_reasoning', 'coding'],
126
+ },
127
+ ],
128
+ defaultModel: 'gpt-4-turbo',
129
+ rateLimits: {
130
+ requestsPerMinute: 60,
131
+ tokensPerMinute: 150000,
132
+ },
133
+ apiEndpoint: 'https://api.openai.com/v1',
134
+ authHeader: 'Authorization',
135
+ envVarName: 'OPENAI_API_KEY',
136
+ },
137
+ google: {
138
+ name: 'google',
139
+ displayName: 'Gemini (Google ADK)',
140
+ packageName: '@google/adk',
141
+ enabled: false,
142
+ capabilities: {
143
+ streaming: true,
144
+ threads: false,
145
+ browserAutomation: false,
146
+ codeExecution: true,
147
+ multiAgent: true,
148
+ toolCalling: true,
149
+ vision: true,
150
+ },
151
+ toolMapping: {
152
+ Read: 'read_file',
153
+ Write: 'write_file',
154
+ Edit: 'edit_file',
155
+ Bash: 'execute_code',
156
+ Glob: 'list_files',
157
+ Grep: 'search_content',
158
+ Browser: null,
159
+ Task: 'spawn_agent',
160
+ WebFetch: 'fetch_url',
161
+ WebSearch: 'google_search',
162
+ },
163
+ models: [
164
+ {
165
+ id: 'gemini-2.5-flash',
166
+ name: 'Gemini 2.5 Flash',
167
+ contextWindow: 1000000,
168
+ costPerMToken: { input: 0.075, output: 0.30 },
169
+ capabilities: ['reasoning', 'coding', 'vision', 'tool_use'],
170
+ },
171
+ {
172
+ id: 'gemini-2.5-pro',
173
+ name: 'Gemini 2.5 Pro',
174
+ contextWindow: 1000000,
175
+ costPerMToken: { input: 1.25, output: 5.0 },
176
+ capabilities: ['reasoning', 'coding', 'vision', 'tool_use', 'extended_thinking'],
177
+ },
178
+ {
179
+ id: 'gemini-3-pro',
180
+ name: 'Gemini 3 Pro',
181
+ contextWindow: 2000000,
182
+ costPerMToken: { input: 2.5, output: 10.0 },
183
+ capabilities: ['reasoning', 'coding', 'vision', 'tool_use', 'agentic'],
184
+ },
185
+ ],
186
+ defaultModel: 'gemini-2.5-flash',
187
+ rateLimits: {
188
+ requestsPerMinute: 60,
189
+ tokensPerMinute: 1000000,
190
+ },
191
+ apiEndpoint: 'https://generativelanguage.googleapis.com/v1beta',
192
+ authHeader: 'x-goog-api-key',
193
+ envVarName: 'GOOGLE_API_KEY',
194
+ },
195
+ cursor: {
196
+ name: 'cursor',
197
+ displayName: 'Cursor Cloud Agents',
198
+ packageName: null, // REST API only
199
+ enabled: false,
200
+ capabilities: {
201
+ streaming: false,
202
+ threads: false,
203
+ browserAutomation: false,
204
+ codeExecution: false,
205
+ multiAgent: false,
206
+ toolCalling: true,
207
+ vision: false,
208
+ },
209
+ toolMapping: {
210
+ Read: 'read',
211
+ Write: 'write',
212
+ Edit: 'edit',
213
+ Bash: 'terminal',
214
+ Glob: 'find_files',
215
+ Grep: 'search',
216
+ Browser: null,
217
+ Task: null,
218
+ WebFetch: null,
219
+ WebSearch: null,
220
+ },
221
+ models: [
222
+ {
223
+ id: 'cursor-agent',
224
+ name: 'Cursor Agent',
225
+ contextWindow: 100000,
226
+ costPerMToken: { input: 0, output: 0 }, // Subscription-based
227
+ capabilities: ['coding', 'tool_use'],
228
+ },
229
+ ],
230
+ defaultModel: 'cursor-agent',
231
+ rateLimits: {
232
+ requestsPerMinute: 30,
233
+ tokensPerMinute: 50000,
234
+ },
235
+ apiEndpoint: 'https://api.cursor.com/v0',
236
+ authHeader: 'Authorization',
237
+ envVarName: 'CURSOR_API_KEY',
238
+ },
239
+ };
240
+ /**
241
+ * Task routing rules - maps task types to preferred providers (in order)
242
+ */
243
+ export const TASK_ROUTING_RULES = {
244
+ complex_reasoning: ['anthropic', 'google', 'openai'],
245
+ architectural_decision: ['anthropic', 'google'],
246
+ ci_cd_automation: ['openai', 'anthropic', 'cursor'],
247
+ test_execution: ['openai', 'anthropic'],
248
+ research: ['google', 'anthropic'],
249
+ documentation: ['google', 'anthropic', 'openai'],
250
+ ide_task: ['cursor', 'anthropic'],
251
+ rapid_prototyping: ['cursor', 'openai', 'anthropic'],
252
+ code_review: ['anthropic', 'openai', 'google'], // Multi-agent review
253
+ general: ['anthropic', 'openai', 'google', 'cursor'],
254
+ };
255
+ /**
256
+ * Get provider configuration by name
257
+ */
258
+ export function getProviderConfig(name) {
259
+ return PROVIDER_CONFIGS[name];
260
+ }
261
+ /**
262
+ * Get all enabled providers
263
+ */
264
+ export function getEnabledProviders() {
265
+ return Object.values(PROVIDER_CONFIGS).filter(p => p.enabled);
266
+ }
267
+ /**
268
+ * Get default provider configuration
269
+ */
270
+ export function getDefaultProvider() {
271
+ return PROVIDER_CONFIGS.anthropic;
272
+ }
273
+ /**
274
+ * Check if a provider supports a specific tool
275
+ */
276
+ export function providerSupportsTool(provider, tool) {
277
+ const config = PROVIDER_CONFIGS[provider];
278
+ return config.toolMapping[tool] !== null && config.toolMapping[tool] !== undefined;
279
+ }
280
+ /**
281
+ * Get routing preference for a task type
282
+ */
283
+ export function getRoutingPreference(taskType) {
284
+ return TASK_ROUTING_RULES[taskType];
285
+ }
286
+ /**
287
+ * Get model configuration by ID
288
+ */
289
+ export function getModelConfig(provider, modelId) {
290
+ const config = PROVIDER_CONFIGS[provider];
291
+ return config.models.find(m => m.id === modelId) ?? null;
292
+ }
293
+ /**
294
+ * Get cheapest model for a provider
295
+ */
296
+ export function getCheapestModel(provider) {
297
+ const config = PROVIDER_CONFIGS[provider];
298
+ return config.models.reduce((cheapest, model) => model.costPerMToken.output < cheapest.costPerMToken.output ? model : cheapest);
299
+ }
300
+ /**
301
+ * Calculate estimated cost for a query
302
+ */
303
+ export function calculateQueryCost(provider, modelId, inputTokens, outputTokens) {
304
+ const model = getModelConfig(provider, modelId);
305
+ if (!model)
306
+ return 0;
307
+ const inputCost = (inputTokens / 1_000_000) * model.costPerMToken.input;
308
+ const outputCost = (outputTokens / 1_000_000) * model.costPerMToken.output;
309
+ return inputCost + outputCost;
310
+ }
311
+ /**
312
+ * Default feature flags (conservative defaults for gradual rollout)
313
+ */
314
+ export const DEFAULT_MULTI_PROVIDER_FLAGS = {
315
+ orchestrationEnabled: false, // Start disabled, enable after testing
316
+ multiAgentReviewEnabled: false,
317
+ fallbackEnabled: true,
318
+ costTrackingEnabled: true,
319
+ taskRoutingEnabled: false,
320
+ };
321
+ /**
322
+ * Validate provider configuration at runtime
323
+ */
324
+ export function validateProviderConfig(config) {
325
+ const errors = [];
326
+ if (!config.name)
327
+ errors.push('Provider name is required');
328
+ if (!config.displayName)
329
+ errors.push('Display name is required');
330
+ if (!config.envVarName)
331
+ errors.push('Environment variable name is required');
332
+ if (!config.models || config.models.length === 0) {
333
+ errors.push('At least one model must be configured');
334
+ }
335
+ if (!config.defaultModel) {
336
+ errors.push('Default model must be specified');
337
+ }
338
+ else if (!config.models.find(m => m.id === config.defaultModel)) {
339
+ errors.push(`Default model ${config.defaultModel} not found in models list`);
340
+ }
341
+ return errors;
342
+ }
343
+ export default PROVIDER_CONFIGS;
344
+ //# sourceMappingURL=provider-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-config.js","sourceRoot":"","sources":["../../src/config/provider-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Specialized Subagents Configuration (Feature A3)
3
+ * Pre-configured agents for specific development tasks
4
+ *
5
+ * Copyright (c) 2025 Dobeu Tech Solutions LLC
6
+ * Licensed under CC BY-NC 4.0
7
+ */
8
+ /**
9
+ * Subagent definition
10
+ */
11
+ export interface SubagentDefinition {
12
+ name: string;
13
+ description: string;
14
+ prompt: string;
15
+ tools: string[];
16
+ model?: 'sonnet' | 'opus' | 'haiku';
17
+ timeout_ms?: number;
18
+ }
19
+ /**
20
+ * Code Reviewer Subagent
21
+ * Analyzes code for quality, security, and best practices
22
+ */
23
+ export declare const codeReviewer: SubagentDefinition;
24
+ /**
25
+ * Test Writer Subagent
26
+ * Creates comprehensive test suites
27
+ */
28
+ export declare const testWriter: SubagentDefinition;
29
+ /**
30
+ * Documentation Generator Subagent
31
+ * Creates comprehensive documentation
32
+ */
33
+ export declare const docsGenerator: SubagentDefinition;
34
+ /**
35
+ * Performance Optimizer Subagent
36
+ * Analyzes and optimizes performance
37
+ */
38
+ export declare const performanceOptimizer: SubagentDefinition;
39
+ /**
40
+ * Security Auditor Subagent
41
+ * Comprehensive security analysis
42
+ */
43
+ export declare const securityAuditor: SubagentDefinition;
44
+ /**
45
+ * Accessibility Checker Subagent
46
+ * WCAG compliance verification
47
+ */
48
+ export declare const accessibilityChecker: SubagentDefinition;
49
+ /**
50
+ * Database Architect Subagent
51
+ * Schema design and migration management
52
+ */
53
+ export declare const databaseArchitect: SubagentDefinition;
54
+ /**
55
+ * Refactoring Assistant Subagent
56
+ * Code refactoring and modernization
57
+ */
58
+ export declare const refactoringAssistant: SubagentDefinition;
59
+ /**
60
+ * All available subagents
61
+ */
62
+ export declare const availableSubagents: Record<string, SubagentDefinition>;
63
+ /**
64
+ * Get subagent configuration for SDK
65
+ */
66
+ export declare function getSubagentsForSDK(enabledAgents?: string[]): Record<string, object>;
67
+ /**
68
+ * Get subagent by task type
69
+ */
70
+ export declare function getSubagentForTask(taskType: string): SubagentDefinition | null;
71
+ declare const _default: {
72
+ availableSubagents: Record<string, SubagentDefinition>;
73
+ getSubagentsForSDK: typeof getSubagentsForSDK;
74
+ getSubagentForTask: typeof getSubagentForTask;
75
+ codeReviewer: SubagentDefinition;
76
+ testWriter: SubagentDefinition;
77
+ docsGenerator: SubagentDefinition;
78
+ performanceOptimizer: SubagentDefinition;
79
+ securityAuditor: SubagentDefinition;
80
+ accessibilityChecker: SubagentDefinition;
81
+ databaseArchitect: SubagentDefinition;
82
+ refactoringAssistant: SubagentDefinition;
83
+ };
84
+ export default _default;
85
+ //# sourceMappingURL=subagents-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagents-config.d.ts","sourceRoot":"","sources":["../../src/config/subagents-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,kBAoC1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,kBAoCxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,kBAsC3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAwClC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,kBA4C7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAyClC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,kBAwC/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAwClC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CASjE,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,GAAE,MAAM,EAAoC,GACxD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAoB9E;;;;;;;;;;;;;;AAED,wBAYE"}