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.
- package/LICENSE +81 -0
- package/README.md +608 -0
- package/bin/cli.js +448 -0
- package/dist/agents/coding.d.ts +15 -0
- package/dist/agents/coding.d.ts.map +1 -0
- package/dist/agents/coding.js +189 -0
- package/dist/agents/coding.js.map +1 -0
- package/dist/agents/initializer.d.ts +15 -0
- package/dist/agents/initializer.d.ts.map +1 -0
- package/dist/agents/initializer.js +87 -0
- package/dist/agents/initializer.js.map +1 -0
- package/dist/agents/prompts/arbitrator.md +143 -0
- package/dist/agents/prompts/coding.md +247 -0
- package/dist/agents/prompts/initializer.md +98 -0
- package/dist/config/agent-config.d.ts +103 -0
- package/dist/config/agent-config.d.ts.map +1 -0
- package/dist/config/agent-config.js +138 -0
- package/dist/config/agent-config.js.map +1 -0
- package/dist/config/auth-config.d.ts +152 -0
- package/dist/config/auth-config.d.ts.map +1 -0
- package/dist/config/auth-config.js +139 -0
- package/dist/config/auth-config.js.map +1 -0
- package/dist/config/mcp-config.d.ts +109 -0
- package/dist/config/mcp-config.d.ts.map +1 -0
- package/dist/config/mcp-config.js +234 -0
- package/dist/config/mcp-config.js.map +1 -0
- package/dist/config/provider-config.d.ts +139 -0
- package/dist/config/provider-config.d.ts.map +1 -0
- package/dist/config/provider-config.js +344 -0
- package/dist/config/provider-config.js.map +1 -0
- package/dist/config/subagents-config.d.ts +85 -0
- package/dist/config/subagents-config.d.ts.map +1 -0
- package/dist/config/subagents-config.js +430 -0
- package/dist/config/subagents-config.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +385 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestrator/arbitrator.d.ts +93 -0
- package/dist/orchestrator/arbitrator.d.ts.map +1 -0
- package/dist/orchestrator/arbitrator.js +330 -0
- package/dist/orchestrator/arbitrator.js.map +1 -0
- package/dist/orchestrator/index.d.ts +113 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +217 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/review-coordinator.d.ts +143 -0
- package/dist/orchestrator/review-coordinator.d.ts.map +1 -0
- package/dist/orchestrator/review-coordinator.js +401 -0
- package/dist/orchestrator/review-coordinator.js.map +1 -0
- package/dist/orchestrator/task-classifier.d.ts +87 -0
- package/dist/orchestrator/task-classifier.d.ts.map +1 -0
- package/dist/orchestrator/task-classifier.js +250 -0
- package/dist/orchestrator/task-classifier.js.map +1 -0
- package/dist/providers/anthropic-provider.d.ts +64 -0
- package/dist/providers/anthropic-provider.d.ts.map +1 -0
- package/dist/providers/anthropic-provider.js +264 -0
- package/dist/providers/anthropic-provider.js.map +1 -0
- package/dist/providers/base-provider.d.ts +219 -0
- package/dist/providers/base-provider.d.ts.map +1 -0
- package/dist/providers/base-provider.js +143 -0
- package/dist/providers/base-provider.js.map +1 -0
- package/dist/providers/cursor-provider.d.ts +82 -0
- package/dist/providers/cursor-provider.d.ts.map +1 -0
- package/dist/providers/cursor-provider.js +321 -0
- package/dist/providers/cursor-provider.js.map +1 -0
- package/dist/providers/google-provider.d.ts +75 -0
- package/dist/providers/google-provider.d.ts.map +1 -0
- package/dist/providers/google-provider.js +274 -0
- package/dist/providers/google-provider.js.map +1 -0
- package/dist/providers/index.d.ts +92 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +233 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/openai-provider.d.ts +83 -0
- package/dist/providers/openai-provider.d.ts.map +1 -0
- package/dist/providers/openai-provider.js +295 -0
- package/dist/providers/openai-provider.js.map +1 -0
- package/dist/templates/feature_list.template.json +66 -0
- package/dist/templates/progress.template.txt +51 -0
- package/dist/utils/auth-manager.d.ts +121 -0
- package/dist/utils/auth-manager.d.ts.map +1 -0
- package/dist/utils/auth-manager.js +560 -0
- package/dist/utils/auth-manager.js.map +1 -0
- package/dist/utils/budget-enforcer.d.ts +181 -0
- package/dist/utils/budget-enforcer.d.ts.map +1 -0
- package/dist/utils/budget-enforcer.js +386 -0
- package/dist/utils/budget-enforcer.js.map +1 -0
- package/dist/utils/chatgpt-detector.d.ts +51 -0
- package/dist/utils/chatgpt-detector.d.ts.map +1 -0
- package/dist/utils/chatgpt-detector.js +274 -0
- package/dist/utils/chatgpt-detector.js.map +1 -0
- package/dist/utils/claude-code-detector.d.ts +39 -0
- package/dist/utils/claude-code-detector.d.ts.map +1 -0
- package/dist/utils/claude-code-detector.js +153 -0
- package/dist/utils/claude-code-detector.js.map +1 -0
- package/dist/utils/code-quality.d.ts +58 -0
- package/dist/utils/code-quality.d.ts.map +1 -0
- package/dist/utils/code-quality.js +258 -0
- package/dist/utils/code-quality.js.map +1 -0
- package/dist/utils/context-primer.d.ts +50 -0
- package/dist/utils/context-primer.d.ts.map +1 -0
- package/dist/utils/context-primer.js +429 -0
- package/dist/utils/context-primer.js.map +1 -0
- package/dist/utils/dependency-management.d.ts +40 -0
- package/dist/utils/dependency-management.d.ts.map +1 -0
- package/dist/utils/dependency-management.js +123 -0
- package/dist/utils/dependency-management.js.map +1 -0
- package/dist/utils/environment-validation.d.ts +33 -0
- package/dist/utils/environment-validation.d.ts.map +1 -0
- package/dist/utils/environment-validation.js +136 -0
- package/dist/utils/environment-validation.js.map +1 -0
- package/dist/utils/error-recovery.d.ts +60 -0
- package/dist/utils/error-recovery.d.ts.map +1 -0
- package/dist/utils/error-recovery.js +183 -0
- package/dist/utils/error-recovery.js.map +1 -0
- package/dist/utils/feature-list.d.ts +102 -0
- package/dist/utils/feature-list.d.ts.map +1 -0
- package/dist/utils/feature-list.js +191 -0
- package/dist/utils/feature-list.js.map +1 -0
- package/dist/utils/gemini-detector.d.ts +65 -0
- package/dist/utils/gemini-detector.d.ts.map +1 -0
- package/dist/utils/gemini-detector.js +340 -0
- package/dist/utils/gemini-detector.js.map +1 -0
- package/dist/utils/git-utils.d.ts +48 -0
- package/dist/utils/git-utils.d.ts.map +1 -0
- package/dist/utils/git-utils.js +110 -0
- package/dist/utils/git-utils.js.map +1 -0
- package/dist/utils/health-check.d.ts +32 -0
- package/dist/utils/health-check.d.ts.map +1 -0
- package/dist/utils/health-check.js +152 -0
- package/dist/utils/health-check.js.map +1 -0
- package/dist/utils/hooks-manager.d.ts +154 -0
- package/dist/utils/hooks-manager.d.ts.map +1 -0
- package/dist/utils/hooks-manager.js +359 -0
- package/dist/utils/hooks-manager.js.map +1 -0
- package/dist/utils/multi-auth-manager.d.ts +144 -0
- package/dist/utils/multi-auth-manager.d.ts.map +1 -0
- package/dist/utils/multi-auth-manager.js +588 -0
- package/dist/utils/multi-auth-manager.js.map +1 -0
- package/dist/utils/progress.d.ts +49 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/progress.js +209 -0
- package/dist/utils/progress.js.map +1 -0
- package/dist/utils/project-detection.d.ts +40 -0
- package/dist/utils/project-detection.d.ts.map +1 -0
- package/dist/utils/project-detection.js +230 -0
- package/dist/utils/project-detection.js.map +1 -0
- package/dist/utils/session-manager.d.ts +119 -0
- package/dist/utils/session-manager.d.ts.map +1 -0
- package/dist/utils/session-manager.js +389 -0
- package/dist/utils/session-manager.js.map +1 -0
- package/dist/utils/skills-manager.d.ts +113 -0
- package/dist/utils/skills-manager.d.ts.map +1 -0
- package/dist/utils/skills-manager.js +332 -0
- package/dist/utils/skills-manager.js.map +1 -0
- package/dist/utils/structured-output.d.ts +117 -0
- package/dist/utils/structured-output.d.ts.map +1 -0
- package/dist/utils/structured-output.js +191 -0
- package/dist/utils/structured-output.js.map +1 -0
- package/dist/utils/subagent-manager.d.ts +143 -0
- package/dist/utils/subagent-manager.d.ts.map +1 -0
- package/dist/utils/subagent-manager.js +326 -0
- package/dist/utils/subagent-manager.js.map +1 -0
- package/dist/utils/supabase-setup.d.ts +50 -0
- package/dist/utils/supabase-setup.d.ts.map +1 -0
- package/dist/utils/supabase-setup.js +151 -0
- package/dist/utils/supabase-setup.js.map +1 -0
- package/dist/utils/token-refresh.d.ts +21 -0
- package/dist/utils/token-refresh.d.ts.map +1 -0
- package/dist/utils/token-refresh.js +77 -0
- package/dist/utils/token-refresh.js.map +1 -0
- package/dist/utils/tos-warning.d.ts +115 -0
- package/dist/utils/tos-warning.d.ts.map +1 -0
- package/dist/utils/tos-warning.js +304 -0
- package/dist/utils/tos-warning.js.map +1 -0
- package/dist/utils/usage-monitor.d.ts +156 -0
- package/dist/utils/usage-monitor.d.ts.map +1 -0
- package/dist/utils/usage-monitor.js +296 -0
- package/dist/utils/usage-monitor.js.map +1 -0
- package/package.json +105 -0
- package/scripts/init.ps1 +73 -0
- package/scripts/init.sh +86 -0
- package/scripts/test-auth.sh +90 -0
- package/templates/feature_list.template.json +66 -0
- 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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"}
|