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,359 @@
1
+ /**
2
+ * Hooks Manager
3
+ * Implements lifecycle hooks for the Claude Agent SDK.
4
+ * Hooks allow customization of agent behavior at key points.
5
+ *
6
+ * Copyright (c) 2025 Dobeu Tech Solutions LLC
7
+ * Licensed under CC BY-NC 4.0
8
+ */
9
+ import { agentConfig } from '../config/agent-config.js';
10
+ /**
11
+ * Default security hook configuration
12
+ */
13
+ export const DEFAULT_SECURITY_CONFIG = {
14
+ blockSensitiveFiles: true,
15
+ sensitivePatterns: [
16
+ /\.env$/,
17
+ /\.env\.\w+$/,
18
+ /credentials\.(json|yaml|yml)$/,
19
+ /secrets?\.(json|yaml|yml)$/,
20
+ /private[_-]?key/i,
21
+ /\.pem$/,
22
+ /\.key$/,
23
+ /id_rsa/,
24
+ /\.ssh\//,
25
+ ],
26
+ blockDangerousCommands: true,
27
+ dangerousCommandPatterns: [
28
+ /rm\s+-rf\s+\//,
29
+ /rm\s+-rf\s+~\//,
30
+ /rm\s+-rf\s+\.\.\//,
31
+ /:\s*>\s*[^>]/,
32
+ /mkfs\./,
33
+ /dd\s+if=/,
34
+ /chmod\s+777/,
35
+ /curl\s+.*\|\s*(ba)?sh/,
36
+ /wget\s+.*\|\s*(ba)?sh/,
37
+ ],
38
+ requireConfirmation: false,
39
+ confirmationPatterns: [
40
+ /drop\s+database/i,
41
+ /drop\s+table/i,
42
+ /truncate/i,
43
+ /delete\s+from/i,
44
+ /git\s+reset\s+--hard/,
45
+ /git\s+push\s+.*--force/,
46
+ ],
47
+ auditAllActions: true,
48
+ };
49
+ /**
50
+ * Hooks Manager class
51
+ */
52
+ export class HooksManager {
53
+ hooks = new Map();
54
+ securityConfig;
55
+ hookIdCounter = 0;
56
+ auditLog = [];
57
+ enabled;
58
+ constructor(securityConfig) {
59
+ this.securityConfig = { ...DEFAULT_SECURITY_CONFIG, ...securityConfig };
60
+ this.enabled = agentConfig.features.enableSecurityHooks;
61
+ // Register default security hooks
62
+ if (this.enabled) {
63
+ this.registerSecurityHooks();
64
+ }
65
+ }
66
+ /**
67
+ * Check if hooks are enabled
68
+ */
69
+ isEnabled() {
70
+ return this.enabled;
71
+ }
72
+ /**
73
+ * Enable or disable hooks
74
+ */
75
+ setEnabled(enabled) {
76
+ this.enabled = enabled;
77
+ }
78
+ /**
79
+ * Generate unique hook ID
80
+ */
81
+ generateId() {
82
+ return `hook_${++this.hookIdCounter}_${Date.now()}`;
83
+ }
84
+ /**
85
+ * Register a hook
86
+ */
87
+ register(event, handler, options) {
88
+ const hookId = this.generateId();
89
+ const registeredHook = {
90
+ id: hookId,
91
+ event,
92
+ handler,
93
+ priority: options?.priority ?? 50,
94
+ name: options?.name ?? `Hook ${hookId}`,
95
+ description: options?.description,
96
+ enabled: options?.enabled ?? true,
97
+ };
98
+ if (!this.hooks.has(event)) {
99
+ this.hooks.set(event, []);
100
+ }
101
+ const eventHooks = this.hooks.get(event);
102
+ eventHooks.push(registeredHook);
103
+ // Sort by priority (higher priority runs first)
104
+ eventHooks.sort((a, b) => b.priority - a.priority);
105
+ return hookId;
106
+ }
107
+ /**
108
+ * Unregister a hook
109
+ */
110
+ unregister(hookId) {
111
+ for (const [event, hooks] of this.hooks.entries()) {
112
+ const index = hooks.findIndex(h => h.id === hookId);
113
+ if (index !== -1) {
114
+ hooks.splice(index, 1);
115
+ return true;
116
+ }
117
+ }
118
+ return false;
119
+ }
120
+ /**
121
+ * Enable a hook
122
+ */
123
+ enable(hookId) {
124
+ for (const hooks of this.hooks.values()) {
125
+ const hook = hooks.find(h => h.id === hookId);
126
+ if (hook) {
127
+ hook.enabled = true;
128
+ return true;
129
+ }
130
+ }
131
+ return false;
132
+ }
133
+ /**
134
+ * Disable a hook
135
+ */
136
+ disable(hookId) {
137
+ for (const hooks of this.hooks.values()) {
138
+ const hook = hooks.find(h => h.id === hookId);
139
+ if (hook) {
140
+ hook.enabled = false;
141
+ return true;
142
+ }
143
+ }
144
+ return false;
145
+ }
146
+ /**
147
+ * Trigger hooks for an event
148
+ */
149
+ async trigger(event, data) {
150
+ if (!this.enabled) {
151
+ return { continue: true };
152
+ }
153
+ const context = {
154
+ event,
155
+ timestamp: Date.now(),
156
+ data,
157
+ };
158
+ // Audit logging
159
+ if (this.securityConfig.auditAllActions) {
160
+ this.auditLog.push(context);
161
+ }
162
+ const eventHooks = this.hooks.get(event) || [];
163
+ const enabledHooks = eventHooks.filter(h => h.enabled);
164
+ const warnings = [];
165
+ let modified = {};
166
+ for (const hook of enabledHooks) {
167
+ try {
168
+ const result = await hook.handler(context);
169
+ if (!result.continue) {
170
+ return result;
171
+ }
172
+ if (result.warnings) {
173
+ warnings.push(...result.warnings);
174
+ }
175
+ if (result.modified) {
176
+ modified = { ...modified, ...result.modified };
177
+ }
178
+ }
179
+ catch (error) {
180
+ console.error(`Hook ${hook.name} failed:`, error);
181
+ warnings.push(`Hook ${hook.name} threw an error`);
182
+ }
183
+ }
184
+ return {
185
+ continue: true,
186
+ modified: Object.keys(modified).length > 0 ? modified : undefined,
187
+ warnings: warnings.length > 0 ? warnings : undefined,
188
+ };
189
+ }
190
+ /**
191
+ * Register default security hooks
192
+ */
193
+ registerSecurityHooks() {
194
+ // File read security hook
195
+ this.register('file.read', async (context) => {
196
+ const filePath = context.data?.path;
197
+ if (!filePath)
198
+ return { continue: true };
199
+ for (const pattern of this.securityConfig.sensitivePatterns) {
200
+ if (pattern.test(filePath)) {
201
+ return {
202
+ continue: false,
203
+ block: {
204
+ reason: `Blocked read of sensitive file: ${filePath}`,
205
+ suggestion: 'Use environment variables for sensitive data',
206
+ },
207
+ };
208
+ }
209
+ }
210
+ return { continue: true };
211
+ }, { name: 'Sensitive File Read Block', priority: 100 });
212
+ // File write security hook
213
+ this.register('file.write', async (context) => {
214
+ const filePath = context.data?.path;
215
+ if (!filePath)
216
+ return { continue: true };
217
+ for (const pattern of this.securityConfig.sensitivePatterns) {
218
+ if (pattern.test(filePath)) {
219
+ return {
220
+ continue: false,
221
+ block: {
222
+ reason: `Blocked write to sensitive file: ${filePath}`,
223
+ suggestion: 'Use environment variables for sensitive data',
224
+ },
225
+ };
226
+ }
227
+ }
228
+ return { continue: true };
229
+ }, { name: 'Sensitive File Write Block', priority: 100 });
230
+ // Command execution security hook
231
+ this.register('tool.before', async (context) => {
232
+ const toolName = context.data?.tool;
233
+ const command = context.data?.command;
234
+ if (toolName !== 'Bash' || !command) {
235
+ return { continue: true };
236
+ }
237
+ // Check for dangerous commands
238
+ if (this.securityConfig.blockDangerousCommands) {
239
+ for (const pattern of this.securityConfig.dangerousCommandPatterns) {
240
+ if (pattern.test(command)) {
241
+ return {
242
+ continue: false,
243
+ block: {
244
+ reason: `Blocked dangerous command: ${command}`,
245
+ suggestion: 'Review command for safety before execution',
246
+ },
247
+ };
248
+ }
249
+ }
250
+ }
251
+ // Check for commands requiring confirmation
252
+ if (this.securityConfig.requireConfirmation) {
253
+ for (const pattern of this.securityConfig.confirmationPatterns) {
254
+ if (pattern.test(command)) {
255
+ return {
256
+ continue: true,
257
+ warnings: [`Command requires user confirmation: ${command}`],
258
+ };
259
+ }
260
+ }
261
+ }
262
+ return { continue: true };
263
+ }, { name: 'Dangerous Command Block', priority: 100 });
264
+ }
265
+ /**
266
+ * Get audit log
267
+ */
268
+ getAuditLog() {
269
+ return [...this.auditLog];
270
+ }
271
+ /**
272
+ * Clear audit log
273
+ */
274
+ clearAuditLog() {
275
+ this.auditLog = [];
276
+ }
277
+ /**
278
+ * Get all registered hooks
279
+ */
280
+ listHooks() {
281
+ const result = [];
282
+ for (const [event, hooks] of this.hooks.entries()) {
283
+ for (const hook of hooks) {
284
+ result.push({
285
+ event,
286
+ name: hook.name,
287
+ enabled: hook.enabled,
288
+ priority: hook.priority,
289
+ });
290
+ }
291
+ }
292
+ return result;
293
+ }
294
+ /**
295
+ * Get hooks summary
296
+ */
297
+ getSummary() {
298
+ const total = this.listHooks().length;
299
+ const enabled = this.listHooks().filter(h => h.enabled).length;
300
+ const auditCount = this.auditLog.length;
301
+ return `Hooks: ${enabled}/${total} enabled, ${auditCount} audit entries`;
302
+ }
303
+ /**
304
+ * Update security configuration
305
+ */
306
+ updateSecurityConfig(config) {
307
+ this.securityConfig = { ...this.securityConfig, ...config };
308
+ }
309
+ /**
310
+ * Get current security configuration
311
+ */
312
+ getSecurityConfig() {
313
+ return { ...this.securityConfig };
314
+ }
315
+ }
316
+ // Convenience functions for common hooks
317
+ /**
318
+ * Create a logging hook
319
+ */
320
+ export function createLoggingHook(logFn) {
321
+ return async (context) => {
322
+ logFn(context);
323
+ return { continue: true };
324
+ };
325
+ }
326
+ /**
327
+ * Create a validation hook
328
+ */
329
+ export function createValidationHook(validate) {
330
+ return async (context) => {
331
+ const result = validate(context);
332
+ if (result === true) {
333
+ return { continue: true };
334
+ }
335
+ return {
336
+ continue: false,
337
+ block: {
338
+ reason: typeof result === 'string' ? result : 'Validation failed',
339
+ },
340
+ };
341
+ };
342
+ }
343
+ /**
344
+ * Create a transformation hook
345
+ */
346
+ export function createTransformationHook(transform) {
347
+ return async (context) => {
348
+ const modified = transform(context);
349
+ return { continue: true, modified };
350
+ };
351
+ }
352
+ /**
353
+ * Create a hooks manager instance
354
+ */
355
+ export function createHooksManager(securityConfig) {
356
+ return new HooksManager(securityConfig);
357
+ }
358
+ export default HooksManager;
359
+ //# sourceMappingURL=hooks-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-manager.js","sourceRoot":"","sources":["../../src/utils/hooks-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Multi-Provider Authentication Manager
3
+ * Unified credential management for all supported AI providers.
4
+ * Supports auto-migration from v1 credentials and provider-specific login flows.
5
+ *
6
+ * Copyright (c) 2025 Dobeu Tech Solutions LLC
7
+ * Licensed under CC BY-NC 4.0
8
+ */
9
+ import { type ProviderCredentials, type MultiProviderCredentials, type AuthMethod, type AuthSource } from '../config/auth-config.js';
10
+ import { type ProviderName } from '../config/provider-config.js';
11
+ /**
12
+ * Provider display information
13
+ */
14
+ interface ProviderDisplayInfo {
15
+ name: ProviderName;
16
+ displayName: string;
17
+ enabled: boolean;
18
+ authenticated: boolean;
19
+ method: AuthMethod | null;
20
+ source: AuthSource | null;
21
+ email: string | null;
22
+ keyPreview: string | null;
23
+ isDefault: boolean;
24
+ }
25
+ /**
26
+ * MultiAuthManager - Singleton for managing multi-provider authentication
27
+ */
28
+ export declare class MultiAuthManager {
29
+ private static instance;
30
+ private credentials;
31
+ private constructor();
32
+ /**
33
+ * Get the singleton instance
34
+ */
35
+ static getInstance(): MultiAuthManager;
36
+ /**
37
+ * Ensure the config directory exists
38
+ */
39
+ private ensureConfigDir;
40
+ /**
41
+ * Load credentials from file (auto-migrates v1 to v2 format)
42
+ */
43
+ loadCredentials(): MultiProviderCredentials;
44
+ /**
45
+ * Save credentials to file
46
+ */
47
+ saveCredentials(credentials: MultiProviderCredentials): void;
48
+ /**
49
+ * Get credentials for a specific provider
50
+ */
51
+ getProviderCredentials(provider: ProviderName): ProviderCredentials | null;
52
+ /**
53
+ * Set credentials for a specific provider
54
+ */
55
+ setProviderCredentials(provider: ProviderName, creds: ProviderCredentials): void;
56
+ /**
57
+ * Remove credentials for a specific provider
58
+ */
59
+ removeProviderCredentials(provider: ProviderName): void;
60
+ /**
61
+ * Get API key for a provider (with token refresh if needed)
62
+ */
63
+ getApiKey(provider: ProviderName): Promise<string | null>;
64
+ /**
65
+ * Get API key synchronously (no refresh)
66
+ */
67
+ getApiKeySync(provider: ProviderName): string | null;
68
+ /**
69
+ * Check if a provider is authenticated
70
+ */
71
+ isProviderAuthenticated(provider: ProviderName): boolean;
72
+ /**
73
+ * Check if any provider is authenticated
74
+ */
75
+ isAnyProviderAuthenticated(): boolean;
76
+ /**
77
+ * Get all authenticated providers
78
+ */
79
+ getAuthenticatedProviders(): ProviderName[];
80
+ /**
81
+ * Get default provider
82
+ */
83
+ getDefaultProvider(): ProviderName;
84
+ /**
85
+ * Set default provider
86
+ */
87
+ setDefaultProvider(provider: ProviderName): void;
88
+ /**
89
+ * Get display info for all providers
90
+ */
91
+ getProviderDisplayInfo(): ProviderDisplayInfo[];
92
+ /**
93
+ * Validate a provider's API key
94
+ */
95
+ validateProviderKey(provider: ProviderName, key: string): Promise<boolean>;
96
+ /**
97
+ * Interactive login for a specific provider
98
+ */
99
+ loginProvider(provider: ProviderName, options?: {
100
+ key?: string;
101
+ method?: AuthMethod;
102
+ }): Promise<boolean>;
103
+ /**
104
+ * Interactive login for all providers
105
+ */
106
+ loginAll(): Promise<void>;
107
+ /**
108
+ * Logout from a specific provider
109
+ */
110
+ logoutProvider(provider: ProviderName): void;
111
+ /**
112
+ * Logout from all providers
113
+ */
114
+ logoutAll(): void;
115
+ /**
116
+ * Display current auth status (whoami)
117
+ */
118
+ whoami(): void;
119
+ /**
120
+ * Set environment variables for all authenticated providers
121
+ */
122
+ setEnvForChildProcess(): void;
123
+ /**
124
+ * Get preferences
125
+ */
126
+ getPreferences(): MultiProviderCredentials['preferences'];
127
+ /**
128
+ * Update preferences
129
+ */
130
+ setPreferences(prefs: Partial<MultiProviderCredentials['preferences']>): void;
131
+ }
132
+ export declare const multiAuthManager: MultiAuthManager;
133
+ export declare function getApiKey(provider: ProviderName): Promise<string | null>;
134
+ export declare function getApiKeySync(provider: ProviderName): string | null;
135
+ export declare function isProviderAuthenticated(provider: ProviderName): boolean;
136
+ export declare function getAuthenticatedProviders(): ProviderName[];
137
+ export declare function loginProvider(provider: ProviderName): Promise<boolean>;
138
+ export declare function loginAll(): Promise<void>;
139
+ export declare function logoutProvider(provider: ProviderName): void;
140
+ export declare function logoutAll(): void;
141
+ export declare function whoami(): void;
142
+ export declare function setEnvForChildProcess(): void;
143
+ export default multiAuthManager;
144
+ //# sourceMappingURL=multi-auth-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-auth-manager.d.ts","sourceRoot":"","sources":["../../src/utils/multi-auth-manager.ts"],"names":[],"mappings":"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"}