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,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Configuration
|
|
3
|
+
* Central configuration for the long-running agent framework.
|
|
4
|
+
* Based on Anthropic's best practices for effective agent harnesses.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2025 Dobeu Tech Solutions LLC
|
|
7
|
+
* Licensed under CC BY-NC 4.0
|
|
8
|
+
*/
|
|
9
|
+
import { resolve } from 'path';
|
|
10
|
+
import { existsSync } from 'fs';
|
|
11
|
+
// Get the project root (where the agent is invoked from)
|
|
12
|
+
const projectRoot = process.cwd();
|
|
13
|
+
const agentDir = resolve(projectRoot, '.agent');
|
|
14
|
+
/**
|
|
15
|
+
* Default agent configuration
|
|
16
|
+
*/
|
|
17
|
+
export const agentConfig = {
|
|
18
|
+
paths: {
|
|
19
|
+
agentDir,
|
|
20
|
+
featureList: resolve(agentDir, 'feature_list.json'),
|
|
21
|
+
progressFile: resolve(agentDir, 'claude-progress.txt'),
|
|
22
|
+
templatesDir: resolve(projectRoot, 'templates'),
|
|
23
|
+
projectRoot,
|
|
24
|
+
sessionState: resolve(agentDir, 'session_state.json'),
|
|
25
|
+
usageLog: resolve(agentDir, 'usage_log.jsonl'),
|
|
26
|
+
auditLog: resolve(agentDir, 'audit_log.jsonl'),
|
|
27
|
+
checkpointsDir: resolve(agentDir, 'checkpoints'),
|
|
28
|
+
},
|
|
29
|
+
tools: {
|
|
30
|
+
// Initializer needs write access to create files
|
|
31
|
+
initializer: ['Read', 'Write', 'Bash', 'Glob', 'Grep'],
|
|
32
|
+
// Coding agent needs edit for incremental changes + browser for testing
|
|
33
|
+
coding: ['Read', 'Edit', 'Bash', 'Glob', 'Grep', 'Browser', 'Task'],
|
|
34
|
+
// Review agent needs read-only access
|
|
35
|
+
review: ['Read', 'Glob', 'Grep'],
|
|
36
|
+
},
|
|
37
|
+
permissionMode: 'acceptEdits',
|
|
38
|
+
git: {
|
|
39
|
+
autoCommit: true,
|
|
40
|
+
commitMessagePrefix: '[monty]',
|
|
41
|
+
preventForcePush: true,
|
|
42
|
+
protectMainBranch: true,
|
|
43
|
+
},
|
|
44
|
+
session: {
|
|
45
|
+
maxRetries: 3,
|
|
46
|
+
verifyBasicFunctionality: true,
|
|
47
|
+
autoSaveCheckpoints: true,
|
|
48
|
+
checkpointInterval: 3, // checkpoint every 3 features
|
|
49
|
+
maxCheckpoints: 10,
|
|
50
|
+
},
|
|
51
|
+
features: {
|
|
52
|
+
enableTDD: true,
|
|
53
|
+
enableAuditLog: true,
|
|
54
|
+
enableSecurityHooks: true,
|
|
55
|
+
enableUsageTracking: true,
|
|
56
|
+
enableContextPriming: true,
|
|
57
|
+
enableFileCheckpointing: true,
|
|
58
|
+
enableSubagents: true,
|
|
59
|
+
strictTDD: false, // Set to true to block edits without tests
|
|
60
|
+
},
|
|
61
|
+
model: {
|
|
62
|
+
default: 'claude-3-5-sonnet',
|
|
63
|
+
subagents: 'claude-3-5-sonnet',
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Get the full path for a config path relative to project root
|
|
68
|
+
*/
|
|
69
|
+
export function getAgentPath(key) {
|
|
70
|
+
return agentConfig.paths[key];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if this is the first run (no .agent directory exists)
|
|
74
|
+
*/
|
|
75
|
+
export function isFirstRun() {
|
|
76
|
+
return !existsSync(agentConfig.paths.agentDir);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if project is initialized
|
|
80
|
+
*/
|
|
81
|
+
export function isProjectInitialized() {
|
|
82
|
+
return existsSync(agentConfig.paths.featureList);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get tools based on project state
|
|
86
|
+
*/
|
|
87
|
+
export function getOptimizedTools(projectRoot) {
|
|
88
|
+
const tools = [...agentConfig.tools.coding];
|
|
89
|
+
// Check if we need browser (has dev server scripts)
|
|
90
|
+
const pkgPath = resolve(projectRoot, 'package.json');
|
|
91
|
+
if (existsSync(pkgPath)) {
|
|
92
|
+
try {
|
|
93
|
+
const pkg = JSON.parse(require('fs').readFileSync(pkgPath, 'utf-8'));
|
|
94
|
+
const hasDevServer = pkg.scripts?.dev || pkg.scripts?.start;
|
|
95
|
+
if (!hasDevServer) {
|
|
96
|
+
// Remove Browser if no dev server
|
|
97
|
+
const browserIdx = tools.indexOf('Browser');
|
|
98
|
+
if (browserIdx > -1) {
|
|
99
|
+
tools.splice(browserIdx, 1);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Keep browser by default
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return tools;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Get SDK options based on configuration
|
|
111
|
+
*/
|
|
112
|
+
export function getSDKOptions() {
|
|
113
|
+
return {
|
|
114
|
+
permissionMode: agentConfig.permissionMode,
|
|
115
|
+
maxTurns: 50,
|
|
116
|
+
model: agentConfig.model.default,
|
|
117
|
+
enableFileCheckpointing: agentConfig.features.enableFileCheckpointing,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Update feature flag at runtime
|
|
122
|
+
*/
|
|
123
|
+
export function setFeatureFlag(flag, value) {
|
|
124
|
+
agentConfig.features[flag] = value;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get feature flags summary
|
|
128
|
+
*/
|
|
129
|
+
export function getFeatureFlagsSummary() {
|
|
130
|
+
const lines = ['Feature Flags:'];
|
|
131
|
+
for (const [key, value] of Object.entries(agentConfig.features)) {
|
|
132
|
+
const status = value ? '✓' : '✗';
|
|
133
|
+
lines.push(` ${status} ${key}`);
|
|
134
|
+
}
|
|
135
|
+
return lines.join('\n');
|
|
136
|
+
}
|
|
137
|
+
export default agentConfig;
|
|
138
|
+
//# sourceMappingURL=agent-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-config.js","sourceRoot":"","sources":["../../src/config/agent-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAmEhC,yDAAyD;AACzD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,KAAK,EAAE;QACL,QAAQ;QACR,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC;QACnD,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC;QACtD,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC;QAC/C,WAAW;QACX,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,oBAAoB,CAAC;QACrD,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QAC9C,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QAC9C,cAAc,EAAE,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC;KACjD;IACD,KAAK,EAAE;QACL,iDAAiD;QACjD,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QACtD,wEAAwE;QACxE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;QACnE,sCAAsC;QACtC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KACjC;IACD,cAAc,EAAE,aAAa;IAC7B,GAAG,EAAE;QACH,UAAU,EAAE,IAAI;QAChB,mBAAmB,EAAE,SAAS;QAC9B,gBAAgB,EAAE,IAAI;QACtB,iBAAiB,EAAE,IAAI;KACxB;IACD,OAAO,EAAE;QACP,UAAU,EAAE,CAAC;QACb,wBAAwB,EAAE,IAAI;QAC9B,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,CAAC,EAAE,8BAA8B;QACrD,cAAc,EAAE,EAAE;KACnB;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,IAAI;QACf,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,IAAI;QACzB,mBAAmB,EAAE,IAAI;QACzB,oBAAoB,EAAE,IAAI;QAC1B,uBAAuB,EAAE,IAAI;QAC7B,eAAe,EAAE,IAAI;QACrB,SAAS,EAAE,KAAK,EAAE,2CAA2C;KAC9D;IACD,KAAK,EAAE;QACL,OAAO,EAAE,mBAAmB;QAC5B,SAAS,EAAE,mBAAmB;KAC/B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAA+B;IAC1D,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,MAAM,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5C,oDAAoD;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACrD,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACrE,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;YAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,kCAAkC;gBAClC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC5C,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;oBACpB,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO;QAChC,uBAAuB,EAAE,WAAW,CAAC,QAAQ,CAAC,uBAAuB;KACtE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAwB,EAAE,KAAc;IACrE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,KAAK,GAAa,CAAC,gBAAgB,CAAC,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication Configuration
|
|
3
|
+
* Configuration for multi-provider authentication (Anthropic, OpenAI, Google, Cursor).
|
|
4
|
+
* Supports Claude subscription, API keys, and OAuth flows.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2025 Dobeu Tech Solutions LLC
|
|
7
|
+
* Licensed under CC BY-NC 4.0
|
|
8
|
+
*/
|
|
9
|
+
import type { ProviderName } from './provider-config.js';
|
|
10
|
+
/**
|
|
11
|
+
* Authentication method types
|
|
12
|
+
* - subscription: Subscription-based auth (Claude.ai, OpenAI Plus, etc.) via OAuth
|
|
13
|
+
* - api_key: API key from provider console
|
|
14
|
+
* - oauth: OAuth 2.0 flow
|
|
15
|
+
*/
|
|
16
|
+
export type AuthMethod = 'api_key' | 'subscription' | 'oauth';
|
|
17
|
+
/**
|
|
18
|
+
* Authentication source - how credentials were obtained
|
|
19
|
+
*/
|
|
20
|
+
export type AuthSource = 'oauth' | 'auto-detect' | 'manual';
|
|
21
|
+
/**
|
|
22
|
+
* Subscription tier levels
|
|
23
|
+
*/
|
|
24
|
+
export type SubscriptionTier = 'free' | 'pro' | 'max' | 'team' | 'enterprise';
|
|
25
|
+
/**
|
|
26
|
+
* User credentials interface
|
|
27
|
+
*/
|
|
28
|
+
export interface UserCredentials {
|
|
29
|
+
method: AuthMethod;
|
|
30
|
+
source?: AuthSource;
|
|
31
|
+
apiKey?: string;
|
|
32
|
+
subscriptionKey?: string;
|
|
33
|
+
accessToken?: string;
|
|
34
|
+
refreshToken?: string;
|
|
35
|
+
expiresAt?: number;
|
|
36
|
+
userId?: string;
|
|
37
|
+
email?: string;
|
|
38
|
+
tier?: SubscriptionTier;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Auth session state
|
|
42
|
+
*/
|
|
43
|
+
export interface AuthSession {
|
|
44
|
+
isAuthenticated: boolean;
|
|
45
|
+
credentials: UserCredentials | null;
|
|
46
|
+
lastValidated: number | null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Auth configuration interface
|
|
50
|
+
*/
|
|
51
|
+
export interface AuthConfig {
|
|
52
|
+
/** Path to store credentials */
|
|
53
|
+
credentialsPath: string;
|
|
54
|
+
/** Path to store session info */
|
|
55
|
+
sessionPath: string;
|
|
56
|
+
/** Config directory */
|
|
57
|
+
configDir: string;
|
|
58
|
+
/** Claude.ai subscription OAuth endpoints */
|
|
59
|
+
oauth: {
|
|
60
|
+
authorizationUrl: string;
|
|
61
|
+
tokenUrl: string;
|
|
62
|
+
clientId: string;
|
|
63
|
+
redirectUri: string;
|
|
64
|
+
scopes: string[];
|
|
65
|
+
};
|
|
66
|
+
/** Paths to check for Claude Code credentials (auto-detection) */
|
|
67
|
+
claudeCodePaths: string[];
|
|
68
|
+
/** Token validation settings */
|
|
69
|
+
validation: {
|
|
70
|
+
/** How often to revalidate credentials (ms) */
|
|
71
|
+
revalidateInterval: number;
|
|
72
|
+
/** Grace period before token expiry to refresh (ms) */
|
|
73
|
+
refreshGracePeriod: number;
|
|
74
|
+
};
|
|
75
|
+
/** Supported authentication methods */
|
|
76
|
+
supportedMethods: AuthMethod[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Default authentication configuration
|
|
80
|
+
*/
|
|
81
|
+
export declare const authConfig: AuthConfig;
|
|
82
|
+
/**
|
|
83
|
+
* Environment variable names for auth (legacy - Anthropic only)
|
|
84
|
+
*/
|
|
85
|
+
export declare const AUTH_ENV_VARS: {
|
|
86
|
+
readonly API_KEY: "ANTHROPIC_API_KEY";
|
|
87
|
+
readonly SUBSCRIPTION_KEY: "ANTHROPIC_SUBSCRIPTION_KEY";
|
|
88
|
+
readonly ACCESS_TOKEN: "ANTHROPIC_ACCESS_TOKEN";
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Environment variable names per provider
|
|
92
|
+
*/
|
|
93
|
+
export declare const PROVIDER_ENV_VARS: Record<ProviderName, {
|
|
94
|
+
API_KEY: string;
|
|
95
|
+
SUBSCRIPTION_KEY?: string;
|
|
96
|
+
ACCESS_TOKEN?: string;
|
|
97
|
+
}>;
|
|
98
|
+
/**
|
|
99
|
+
* Provider-specific credentials
|
|
100
|
+
*/
|
|
101
|
+
export interface ProviderCredentials {
|
|
102
|
+
enabled: boolean;
|
|
103
|
+
method: AuthMethod;
|
|
104
|
+
source: AuthSource | null;
|
|
105
|
+
apiKey?: string;
|
|
106
|
+
accessToken?: string;
|
|
107
|
+
refreshToken?: string;
|
|
108
|
+
expiresAt?: number;
|
|
109
|
+
organizationId?: string;
|
|
110
|
+
projectId?: string;
|
|
111
|
+
email?: string;
|
|
112
|
+
tier?: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Multi-provider credentials store (v2.0)
|
|
116
|
+
*/
|
|
117
|
+
export interface MultiProviderCredentials {
|
|
118
|
+
version: string;
|
|
119
|
+
default_provider: ProviderName;
|
|
120
|
+
providers: Partial<Record<ProviderName, ProviderCredentials>>;
|
|
121
|
+
preferences: {
|
|
122
|
+
cost_tracking: boolean;
|
|
123
|
+
monthly_budget_usd: number;
|
|
124
|
+
prefer_subscription: boolean;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Default multi-provider credentials structure
|
|
129
|
+
*/
|
|
130
|
+
export declare const DEFAULT_MULTI_PROVIDER_CREDENTIALS: MultiProviderCredentials;
|
|
131
|
+
/**
|
|
132
|
+
* Check if credentials are in v2 (multi-provider) format
|
|
133
|
+
*/
|
|
134
|
+
export declare function isMultiProviderCredentials(data: unknown): data is MultiProviderCredentials;
|
|
135
|
+
/**
|
|
136
|
+
* Migrate v1 credentials to v2 format
|
|
137
|
+
*/
|
|
138
|
+
export declare function migrateToMultiProvider(v1Credentials: UserCredentials): MultiProviderCredentials;
|
|
139
|
+
/**
|
|
140
|
+
* Get the credentials file path
|
|
141
|
+
*/
|
|
142
|
+
export declare function getCredentialsPath(): string;
|
|
143
|
+
/**
|
|
144
|
+
* Get the session file path
|
|
145
|
+
*/
|
|
146
|
+
export declare function getSessionPath(): string;
|
|
147
|
+
/**
|
|
148
|
+
* Get the config directory path
|
|
149
|
+
*/
|
|
150
|
+
export declare function getConfigDir(): string;
|
|
151
|
+
export default authConfig;
|
|
152
|
+
//# sourceMappingURL=auth-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-config.d.ts","sourceRoot":"","sources":["../../src/config/auth-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication Configuration
|
|
3
|
+
* Configuration for multi-provider authentication (Anthropic, OpenAI, Google, Cursor).
|
|
4
|
+
* Supports Claude subscription, API keys, and OAuth flows.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2025 Dobeu Tech Solutions LLC
|
|
7
|
+
* Licensed under CC BY-NC 4.0
|
|
8
|
+
*/
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
// Get user's home config directory
|
|
12
|
+
const configDir = join(homedir(), '.monty');
|
|
13
|
+
/**
|
|
14
|
+
* Default authentication configuration
|
|
15
|
+
*/
|
|
16
|
+
export const authConfig = {
|
|
17
|
+
credentialsPath: join(configDir, 'credentials.json'),
|
|
18
|
+
sessionPath: join(configDir, 'session.json'),
|
|
19
|
+
configDir,
|
|
20
|
+
oauth: {
|
|
21
|
+
// Claude.ai subscription OAuth endpoints
|
|
22
|
+
authorizationUrl: 'https://claude.ai/oauth/authorize',
|
|
23
|
+
tokenUrl: 'https://claude.ai/oauth/token',
|
|
24
|
+
clientId: 'monty-autonomous-fullstack-dev-multillm',
|
|
25
|
+
redirectUri: 'http://localhost:9876/callback',
|
|
26
|
+
scopes: ['subscription', 'agent'],
|
|
27
|
+
},
|
|
28
|
+
// Claude Code credential paths for auto-detection
|
|
29
|
+
claudeCodePaths: [
|
|
30
|
+
join(homedir(), '.config', 'claude-code', 'auth.json'), // Linux/Windows standard
|
|
31
|
+
join(homedir(), '.claude', 'credentials.json'), // Alternative location
|
|
32
|
+
join(homedir(), '.claude', 'auth.json'), // Alternative location
|
|
33
|
+
],
|
|
34
|
+
validation: {
|
|
35
|
+
revalidateInterval: 24 * 60 * 60 * 1000, // 24 hours
|
|
36
|
+
refreshGracePeriod: 5 * 60 * 1000, // 5 minutes
|
|
37
|
+
},
|
|
38
|
+
supportedMethods: ['api_key', 'subscription'],
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Environment variable names for auth (legacy - Anthropic only)
|
|
42
|
+
*/
|
|
43
|
+
export const AUTH_ENV_VARS = {
|
|
44
|
+
API_KEY: 'ANTHROPIC_API_KEY',
|
|
45
|
+
SUBSCRIPTION_KEY: 'ANTHROPIC_SUBSCRIPTION_KEY',
|
|
46
|
+
ACCESS_TOKEN: 'ANTHROPIC_ACCESS_TOKEN',
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Environment variable names per provider
|
|
50
|
+
*/
|
|
51
|
+
export const PROVIDER_ENV_VARS = {
|
|
52
|
+
anthropic: {
|
|
53
|
+
API_KEY: 'ANTHROPIC_API_KEY',
|
|
54
|
+
SUBSCRIPTION_KEY: 'ANTHROPIC_SUBSCRIPTION_KEY',
|
|
55
|
+
ACCESS_TOKEN: 'ANTHROPIC_ACCESS_TOKEN',
|
|
56
|
+
},
|
|
57
|
+
openai: {
|
|
58
|
+
API_KEY: 'OPENAI_API_KEY',
|
|
59
|
+
ACCESS_TOKEN: 'OPENAI_ACCESS_TOKEN',
|
|
60
|
+
},
|
|
61
|
+
google: {
|
|
62
|
+
API_KEY: 'GOOGLE_API_KEY',
|
|
63
|
+
ACCESS_TOKEN: 'GOOGLE_ACCESS_TOKEN',
|
|
64
|
+
},
|
|
65
|
+
cursor: {
|
|
66
|
+
API_KEY: 'CURSOR_API_KEY',
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Default multi-provider credentials structure
|
|
71
|
+
*/
|
|
72
|
+
export const DEFAULT_MULTI_PROVIDER_CREDENTIALS = {
|
|
73
|
+
version: '2.0.0',
|
|
74
|
+
default_provider: 'anthropic',
|
|
75
|
+
providers: {},
|
|
76
|
+
preferences: {
|
|
77
|
+
cost_tracking: true,
|
|
78
|
+
monthly_budget_usd: 100,
|
|
79
|
+
prefer_subscription: true,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Check if credentials are in v2 (multi-provider) format
|
|
84
|
+
*/
|
|
85
|
+
export function isMultiProviderCredentials(data) {
|
|
86
|
+
if (typeof data !== 'object' || data === null)
|
|
87
|
+
return false;
|
|
88
|
+
const obj = data;
|
|
89
|
+
return (typeof obj.version === 'string' &&
|
|
90
|
+
obj.version.startsWith('2.') &&
|
|
91
|
+
typeof obj.providers === 'object');
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Migrate v1 credentials to v2 format
|
|
95
|
+
*/
|
|
96
|
+
export function migrateToMultiProvider(v1Credentials) {
|
|
97
|
+
return {
|
|
98
|
+
version: '2.0.0',
|
|
99
|
+
default_provider: 'anthropic',
|
|
100
|
+
providers: {
|
|
101
|
+
anthropic: {
|
|
102
|
+
enabled: true,
|
|
103
|
+
method: v1Credentials.method,
|
|
104
|
+
source: v1Credentials.source ?? null,
|
|
105
|
+
apiKey: v1Credentials.apiKey,
|
|
106
|
+
accessToken: v1Credentials.accessToken ?? v1Credentials.subscriptionKey,
|
|
107
|
+
refreshToken: v1Credentials.refreshToken,
|
|
108
|
+
expiresAt: v1Credentials.expiresAt,
|
|
109
|
+
email: v1Credentials.email,
|
|
110
|
+
tier: v1Credentials.tier,
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
preferences: {
|
|
114
|
+
cost_tracking: true,
|
|
115
|
+
monthly_budget_usd: 100,
|
|
116
|
+
prefer_subscription: v1Credentials.method === 'subscription',
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Get the credentials file path
|
|
122
|
+
*/
|
|
123
|
+
export function getCredentialsPath() {
|
|
124
|
+
return authConfig.credentialsPath;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get the session file path
|
|
128
|
+
*/
|
|
129
|
+
export function getSessionPath() {
|
|
130
|
+
return authConfig.sessionPath;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get the config directory path
|
|
134
|
+
*/
|
|
135
|
+
export function getConfigDir() {
|
|
136
|
+
return authConfig.configDir;
|
|
137
|
+
}
|
|
138
|
+
export default authConfig;
|
|
139
|
+
//# sourceMappingURL=auth-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-config.js","sourceRoot":"","sources":["../../src/config/auth-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP (Model Context Protocol) Configuration (Feature A4)
|
|
3
|
+
* Settings for browser automation, GitHub, database, and other integrations
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2025 Dobeu Tech Solutions LLC
|
|
6
|
+
* Licensed under CC BY-NC 4.0
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* MCP Server types
|
|
10
|
+
*/
|
|
11
|
+
export type MCPTransportType = 'stdio' | 'sse' | 'sdk';
|
|
12
|
+
/**
|
|
13
|
+
* Base MCP server configuration
|
|
14
|
+
*/
|
|
15
|
+
export interface MCPServerBase {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
type: MCPTransportType;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Stdio MCP server (external process)
|
|
23
|
+
*/
|
|
24
|
+
export interface StdioMCPServer extends MCPServerBase {
|
|
25
|
+
type: 'stdio';
|
|
26
|
+
command: string;
|
|
27
|
+
args: string[];
|
|
28
|
+
env?: Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* SSE MCP server (remote HTTP)
|
|
32
|
+
*/
|
|
33
|
+
export interface SSEMCPServer extends MCPServerBase {
|
|
34
|
+
type: 'sse';
|
|
35
|
+
url: string;
|
|
36
|
+
headers?: Record<string, string>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* All MCP server types
|
|
40
|
+
*/
|
|
41
|
+
export type MCPServer = StdioMCPServer | SSEMCPServer;
|
|
42
|
+
/**
|
|
43
|
+
* Browser automation config
|
|
44
|
+
*/
|
|
45
|
+
export interface BrowserConfig {
|
|
46
|
+
defaultTimeout: number;
|
|
47
|
+
headless: boolean;
|
|
48
|
+
viewport: {
|
|
49
|
+
width: number;
|
|
50
|
+
height: number;
|
|
51
|
+
};
|
|
52
|
+
screenshotDir: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Full MCP configuration
|
|
56
|
+
*/
|
|
57
|
+
export interface MCPConfig {
|
|
58
|
+
browser: BrowserConfig;
|
|
59
|
+
servers: Record<string, MCPServer>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Playwright MCP Server - Browser automation
|
|
63
|
+
*/
|
|
64
|
+
export declare const playwrightServer: StdioMCPServer;
|
|
65
|
+
/**
|
|
66
|
+
* GitHub MCP Server - Repository management
|
|
67
|
+
*/
|
|
68
|
+
export declare const githubServer: StdioMCPServer;
|
|
69
|
+
/**
|
|
70
|
+
* Filesystem MCP Server - Advanced file operations
|
|
71
|
+
*/
|
|
72
|
+
export declare const filesystemServer: StdioMCPServer;
|
|
73
|
+
/**
|
|
74
|
+
* PostgreSQL MCP Server - Database operations
|
|
75
|
+
*/
|
|
76
|
+
export declare const postgresServer: StdioMCPServer;
|
|
77
|
+
/**
|
|
78
|
+
* Slack MCP Server - Notifications
|
|
79
|
+
*/
|
|
80
|
+
export declare const slackServer: SSEMCPServer;
|
|
81
|
+
/**
|
|
82
|
+
* Default MCP configuration
|
|
83
|
+
*/
|
|
84
|
+
export declare const mcpConfig: MCPConfig;
|
|
85
|
+
/**
|
|
86
|
+
* Get enabled MCP servers for SDK
|
|
87
|
+
*/
|
|
88
|
+
export declare function getEnabledServersForSDK(): Record<string, object>;
|
|
89
|
+
/**
|
|
90
|
+
* Enable/disable MCP server
|
|
91
|
+
*/
|
|
92
|
+
export declare function setServerEnabled(serverName: string, enabled: boolean): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Check if required environment variables are set for a server
|
|
95
|
+
*/
|
|
96
|
+
export declare function checkServerRequirements(serverName: string): {
|
|
97
|
+
ready: boolean;
|
|
98
|
+
missing: string[];
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Get browser automation instructions for the agent prompt
|
|
102
|
+
*/
|
|
103
|
+
export declare function getBrowserInstructions(): string;
|
|
104
|
+
/**
|
|
105
|
+
* Get MCP servers summary for logging
|
|
106
|
+
*/
|
|
107
|
+
export declare function getMCPSummary(): string;
|
|
108
|
+
export default mcpConfig;
|
|
109
|
+
//# sourceMappingURL=mcp-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../src/config/mcp-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,YAAY,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAO9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,cAU1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAO9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,cAU5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,YASzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,SAiBvB,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0DhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAM9E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG;IAC3D,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CA+BA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAsB/C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAWtC;AAED,eAAe,SAAS,CAAC"}
|