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,429 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Primer (Feature B6)
|
|
3
|
+
* Systematically load project context at session start
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2025 Dobeu Tech Solutions LLC
|
|
6
|
+
* Licensed under CC BY-NC 4.0
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { execSync } from 'child_process';
|
|
11
|
+
/**
|
|
12
|
+
* Get project overview from package.json and README
|
|
13
|
+
*/
|
|
14
|
+
function getProjectOverview(projectRoot) {
|
|
15
|
+
const lines = ['## Project Overview\n'];
|
|
16
|
+
// Package.json
|
|
17
|
+
const pkgPath = join(projectRoot, 'package.json');
|
|
18
|
+
if (existsSync(pkgPath)) {
|
|
19
|
+
try {
|
|
20
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
21
|
+
lines.push(`**Name:** ${pkg.name || 'Unknown'}`);
|
|
22
|
+
lines.push(`**Version:** ${pkg.version || '0.0.0'}`);
|
|
23
|
+
if (pkg.description)
|
|
24
|
+
lines.push(`**Description:** ${pkg.description}`);
|
|
25
|
+
// Scripts
|
|
26
|
+
if (pkg.scripts) {
|
|
27
|
+
const importantScripts = ['dev', 'build', 'test', 'lint', 'start'];
|
|
28
|
+
const available = importantScripts.filter(s => pkg.scripts[s]);
|
|
29
|
+
if (available.length > 0) {
|
|
30
|
+
lines.push(`**Scripts:** ${available.join(', ')}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
lines.push('*Could not parse package.json*');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// README excerpt
|
|
39
|
+
const readmePath = join(projectRoot, 'README.md');
|
|
40
|
+
if (existsSync(readmePath)) {
|
|
41
|
+
try {
|
|
42
|
+
const readme = readFileSync(readmePath, 'utf-8');
|
|
43
|
+
const firstSection = readme.split('\n## ')[0];
|
|
44
|
+
if (firstSection && firstSection.length < 1000) {
|
|
45
|
+
lines.push('\n### README Excerpt\n');
|
|
46
|
+
lines.push(firstSection.substring(0, 500));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Ignore
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return lines.join('\n');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get architecture information from CLAUDE.md or docs
|
|
57
|
+
*/
|
|
58
|
+
function getArchitecture(projectRoot, agentDir) {
|
|
59
|
+
const lines = ['## Architecture\n'];
|
|
60
|
+
// Check CLAUDE.md
|
|
61
|
+
const claudeMd = join(projectRoot, 'CLAUDE.md');
|
|
62
|
+
if (existsSync(claudeMd)) {
|
|
63
|
+
try {
|
|
64
|
+
const content = readFileSync(claudeMd, 'utf-8');
|
|
65
|
+
// Extract architecture section if present
|
|
66
|
+
const archMatch = content.match(/## Architecture([\s\S]*?)(?=\n## |$)/);
|
|
67
|
+
if (archMatch?.[1]) {
|
|
68
|
+
lines.push(archMatch[1].trim().substring(0, 1500));
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
lines.push(content.substring(0, 1000));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Ignore
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// List key directories
|
|
79
|
+
const keyDirs = ['src', 'app', 'pages', 'components', 'lib', 'utils', 'api', 'services'];
|
|
80
|
+
const existingDirs = keyDirs.filter(d => existsSync(join(projectRoot, d)));
|
|
81
|
+
if (existingDirs.length > 0) {
|
|
82
|
+
lines.push('\n### Directory Structure');
|
|
83
|
+
for (const dir of existingDirs) {
|
|
84
|
+
const dirPath = join(projectRoot, dir);
|
|
85
|
+
try {
|
|
86
|
+
const files = readdirSync(dirPath).slice(0, 10);
|
|
87
|
+
lines.push(`- **${dir}/**: ${files.join(', ')}${files.length >= 10 ? '...' : ''}`);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
lines.push(`- **${dir}/**`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return lines.join('\n');
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get coding conventions from configs
|
|
98
|
+
*/
|
|
99
|
+
function getConventions(projectRoot) {
|
|
100
|
+
const lines = ['## Coding Conventions\n'];
|
|
101
|
+
// TypeScript config
|
|
102
|
+
if (existsSync(join(projectRoot, 'tsconfig.json'))) {
|
|
103
|
+
lines.push('- TypeScript enabled');
|
|
104
|
+
try {
|
|
105
|
+
const tsconfig = JSON.parse(readFileSync(join(projectRoot, 'tsconfig.json'), 'utf-8'));
|
|
106
|
+
if (tsconfig.compilerOptions?.strict)
|
|
107
|
+
lines.push('- Strict mode enabled');
|
|
108
|
+
if (tsconfig.compilerOptions?.target)
|
|
109
|
+
lines.push(`- Target: ${tsconfig.compilerOptions.target}`);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Ignore
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// ESLint
|
|
116
|
+
const eslintConfigs = ['.eslintrc', '.eslintrc.js', '.eslintrc.json', 'eslint.config.js'];
|
|
117
|
+
if (eslintConfigs.some(c => existsSync(join(projectRoot, c)))) {
|
|
118
|
+
lines.push('- ESLint configured');
|
|
119
|
+
}
|
|
120
|
+
// Prettier
|
|
121
|
+
const prettierConfigs = ['.prettierrc', '.prettierrc.js', '.prettierrc.json', 'prettier.config.js'];
|
|
122
|
+
if (prettierConfigs.some(c => existsSync(join(projectRoot, c)))) {
|
|
123
|
+
lines.push('- Prettier configured');
|
|
124
|
+
}
|
|
125
|
+
// Tailwind
|
|
126
|
+
if (existsSync(join(projectRoot, 'tailwind.config.js')) || existsSync(join(projectRoot, 'tailwind.config.ts'))) {
|
|
127
|
+
lines.push('- Tailwind CSS configured');
|
|
128
|
+
}
|
|
129
|
+
return lines.join('\n');
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get recent git changes
|
|
133
|
+
*/
|
|
134
|
+
function getRecentChanges(projectRoot, days = 7) {
|
|
135
|
+
const lines = [`## Recent Changes (last ${days} days)\n`];
|
|
136
|
+
try {
|
|
137
|
+
// Recent commits
|
|
138
|
+
const commits = execSync(`git log --oneline --since="${days} days ago" -10`, { cwd: projectRoot, encoding: 'utf-8', timeout: 5000 }).trim();
|
|
139
|
+
if (commits) {
|
|
140
|
+
lines.push('### Recent Commits');
|
|
141
|
+
lines.push('```');
|
|
142
|
+
lines.push(commits);
|
|
143
|
+
lines.push('```');
|
|
144
|
+
}
|
|
145
|
+
// Files changed
|
|
146
|
+
const filesChanged = execSync(`git diff --stat HEAD~5 HEAD 2>/dev/null || echo ""`, { cwd: projectRoot, encoding: 'utf-8', timeout: 5000 }).trim();
|
|
147
|
+
if (filesChanged) {
|
|
148
|
+
lines.push('\n### Files Changed');
|
|
149
|
+
lines.push('```');
|
|
150
|
+
lines.push(filesChanged.substring(0, 500));
|
|
151
|
+
lines.push('```');
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
lines.push('*Git history not available*');
|
|
156
|
+
}
|
|
157
|
+
return lines.join('\n');
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get feature progress from agent dir
|
|
161
|
+
*/
|
|
162
|
+
function getFeatureProgress(agentDir) {
|
|
163
|
+
const lines = ['## Feature Progress\n'];
|
|
164
|
+
const featureListPath = join(agentDir, 'feature_list.json');
|
|
165
|
+
if (!existsSync(featureListPath)) {
|
|
166
|
+
lines.push('*Feature list not initialized*');
|
|
167
|
+
return lines.join('\n');
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
const data = JSON.parse(readFileSync(featureListPath, 'utf-8'));
|
|
171
|
+
const features = data.features || [];
|
|
172
|
+
const total = features.length;
|
|
173
|
+
const passing = features.filter((f) => f.passes).length;
|
|
174
|
+
const percentage = total > 0 ? Math.round((passing / total) * 100) : 0;
|
|
175
|
+
lines.push(`**Progress:** ${passing}/${total} features passing (${percentage}%)`);
|
|
176
|
+
// Next features to work on
|
|
177
|
+
const nextFeatures = features
|
|
178
|
+
.filter((f) => !f.passes)
|
|
179
|
+
.sort((a, b) => a.priority - b.priority)
|
|
180
|
+
.slice(0, 3);
|
|
181
|
+
if (nextFeatures.length > 0) {
|
|
182
|
+
lines.push('\n### Next Features');
|
|
183
|
+
for (const f of nextFeatures) {
|
|
184
|
+
lines.push(`- [Priority ${f.priority}] ${f.description}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Categories breakdown
|
|
188
|
+
const categories = {};
|
|
189
|
+
for (const f of features) {
|
|
190
|
+
const cat = f.category || 'unknown';
|
|
191
|
+
if (!categories[cat])
|
|
192
|
+
categories[cat] = { total: 0, passing: 0 };
|
|
193
|
+
categories[cat].total++;
|
|
194
|
+
if (f.passes)
|
|
195
|
+
categories[cat].passing++;
|
|
196
|
+
}
|
|
197
|
+
lines.push('\n### By Category');
|
|
198
|
+
for (const [cat, data] of Object.entries(categories)) {
|
|
199
|
+
const pct = Math.round((data.passing / data.total) * 100);
|
|
200
|
+
lines.push(`- ${cat}: ${data.passing}/${data.total} (${pct}%)`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
lines.push('*Could not parse feature list*');
|
|
205
|
+
}
|
|
206
|
+
return lines.join('\n');
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Get session history summary
|
|
210
|
+
*/
|
|
211
|
+
function getSessionHistory(agentDir) {
|
|
212
|
+
const lines = ['## Session History\n'];
|
|
213
|
+
const progressPath = join(agentDir, 'claude-progress.txt');
|
|
214
|
+
if (existsSync(progressPath)) {
|
|
215
|
+
try {
|
|
216
|
+
const content = readFileSync(progressPath, 'utf-8');
|
|
217
|
+
// Extract last session info
|
|
218
|
+
const sessions = content.split('### Session:').slice(-3);
|
|
219
|
+
if (sessions.length > 0) {
|
|
220
|
+
lines.push('### Recent Sessions');
|
|
221
|
+
for (const session of sessions) {
|
|
222
|
+
const firstLine = session.split('\n')[0]?.trim();
|
|
223
|
+
if (firstLine) {
|
|
224
|
+
lines.push(`- ${firstLine}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Known issues
|
|
229
|
+
const issuesMatch = content.match(/## Known Issues([\s\S]*?)(?=\n## |$)/);
|
|
230
|
+
if (issuesMatch?.[1]) {
|
|
231
|
+
const issues = issuesMatch[1].trim();
|
|
232
|
+
if (issues && issues !== 'None at this time.') {
|
|
233
|
+
lines.push('\n### Known Issues');
|
|
234
|
+
lines.push(issues.substring(0, 500));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
// Ignore
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Session notation
|
|
243
|
+
const notationPath = join(agentDir, 'session_notation.json');
|
|
244
|
+
if (existsSync(notationPath)) {
|
|
245
|
+
try {
|
|
246
|
+
const notation = JSON.parse(readFileSync(notationPath, 'utf-8'));
|
|
247
|
+
if (notation.next_steps?.length > 0) {
|
|
248
|
+
lines.push('\n### Next Steps (from last session)');
|
|
249
|
+
for (const step of notation.next_steps.slice(0, 5)) {
|
|
250
|
+
lines.push(`- ${step}`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (notation.blockers?.length > 0) {
|
|
254
|
+
lines.push('\n### Blockers');
|
|
255
|
+
for (const blocker of notation.blockers) {
|
|
256
|
+
lines.push(`- ${blocker}`);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
// Ignore
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return lines.join('\n');
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Generate tool recommendations based on project
|
|
268
|
+
*/
|
|
269
|
+
function getToolRecommendations(projectRoot, agentDir) {
|
|
270
|
+
const recommendations = [];
|
|
271
|
+
// Always need Read, Edit, Bash, Glob
|
|
272
|
+
recommendations.push({ tool: 'Read', priority: 'required', reason: 'Core file reading' });
|
|
273
|
+
recommendations.push({ tool: 'Edit', priority: 'required', reason: 'Core file editing' });
|
|
274
|
+
recommendations.push({ tool: 'Bash', priority: 'required', reason: 'Command execution' });
|
|
275
|
+
recommendations.push({ tool: 'Glob', priority: 'required', reason: 'File discovery' });
|
|
276
|
+
// Check for browser testing need
|
|
277
|
+
const hasFeatureList = existsSync(join(agentDir, 'feature_list.json'));
|
|
278
|
+
if (hasFeatureList) {
|
|
279
|
+
recommendations.push({ tool: 'Browser', priority: 'required', reason: 'Feature verification' });
|
|
280
|
+
}
|
|
281
|
+
// Check for Grep need based on codebase size
|
|
282
|
+
try {
|
|
283
|
+
const srcDir = join(projectRoot, 'src');
|
|
284
|
+
if (existsSync(srcDir)) {
|
|
285
|
+
const fileCount = countFilesRecursive(srcDir);
|
|
286
|
+
if (fileCount > 20) {
|
|
287
|
+
recommendations.push({ tool: 'Grep', priority: 'recommended', reason: `Large codebase (${fileCount} files)` });
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
recommendations.push({ tool: 'Grep', priority: 'optional', reason: 'Small codebase' });
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
catch {
|
|
295
|
+
recommendations.push({ tool: 'Grep', priority: 'optional', reason: 'Default' });
|
|
296
|
+
}
|
|
297
|
+
// WebSearch for external docs
|
|
298
|
+
const hasDependencies = existsSync(join(projectRoot, 'package.json'));
|
|
299
|
+
if (hasDependencies) {
|
|
300
|
+
recommendations.push({ tool: 'WebSearch', priority: 'optional', reason: 'External documentation' });
|
|
301
|
+
}
|
|
302
|
+
return recommendations;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Helper: count files recursively
|
|
306
|
+
*/
|
|
307
|
+
function countFilesRecursive(dir) {
|
|
308
|
+
let count = 0;
|
|
309
|
+
try {
|
|
310
|
+
const entries = readdirSync(dir);
|
|
311
|
+
for (const entry of entries) {
|
|
312
|
+
if (entry.startsWith('.') || entry === 'node_modules' || entry === 'dist')
|
|
313
|
+
continue;
|
|
314
|
+
const fullPath = join(dir, entry);
|
|
315
|
+
const stat = statSync(fullPath);
|
|
316
|
+
if (stat.isDirectory()) {
|
|
317
|
+
count += countFilesRecursive(fullPath);
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
count++;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
// Ignore
|
|
326
|
+
}
|
|
327
|
+
return count;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Estimate token count for text
|
|
331
|
+
*/
|
|
332
|
+
function estimateTokens(text) {
|
|
333
|
+
// Rough estimate: ~4 characters per token
|
|
334
|
+
return Math.ceil(text.length / 4);
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Prime context for a session
|
|
338
|
+
*/
|
|
339
|
+
export function primeContext(projectRoot, agentDir, options = {}) {
|
|
340
|
+
const { includeSections = [
|
|
341
|
+
'project_overview',
|
|
342
|
+
'architecture',
|
|
343
|
+
'conventions',
|
|
344
|
+
'recent_changes',
|
|
345
|
+
'feature_progress',
|
|
346
|
+
'session_history',
|
|
347
|
+
'tool_recommendations',
|
|
348
|
+
], maxTokens = 8000, } = options;
|
|
349
|
+
const sections = {
|
|
350
|
+
project_overview: '',
|
|
351
|
+
architecture: '',
|
|
352
|
+
conventions: '',
|
|
353
|
+
recent_changes: '',
|
|
354
|
+
open_issues: '',
|
|
355
|
+
dependencies: '',
|
|
356
|
+
environment: '',
|
|
357
|
+
feature_progress: '',
|
|
358
|
+
session_history: '',
|
|
359
|
+
tool_recommendations: '',
|
|
360
|
+
};
|
|
361
|
+
// Generate each section
|
|
362
|
+
if (includeSections.includes('project_overview')) {
|
|
363
|
+
sections.project_overview = getProjectOverview(projectRoot);
|
|
364
|
+
}
|
|
365
|
+
if (includeSections.includes('architecture')) {
|
|
366
|
+
sections.architecture = getArchitecture(projectRoot, agentDir);
|
|
367
|
+
}
|
|
368
|
+
if (includeSections.includes('conventions')) {
|
|
369
|
+
sections.conventions = getConventions(projectRoot);
|
|
370
|
+
}
|
|
371
|
+
if (includeSections.includes('recent_changes')) {
|
|
372
|
+
sections.recent_changes = getRecentChanges(projectRoot);
|
|
373
|
+
}
|
|
374
|
+
if (includeSections.includes('feature_progress')) {
|
|
375
|
+
sections.feature_progress = getFeatureProgress(agentDir);
|
|
376
|
+
}
|
|
377
|
+
if (includeSections.includes('session_history')) {
|
|
378
|
+
sections.session_history = getSessionHistory(agentDir);
|
|
379
|
+
}
|
|
380
|
+
if (includeSections.includes('tool_recommendations')) {
|
|
381
|
+
const recs = getToolRecommendations(projectRoot, agentDir);
|
|
382
|
+
const lines = ['## Tool Recommendations\n'];
|
|
383
|
+
for (const rec of recs) {
|
|
384
|
+
lines.push(`- **${rec.tool}** [${rec.priority}]: ${rec.reason}`);
|
|
385
|
+
}
|
|
386
|
+
sections.tool_recommendations = lines.join('\n');
|
|
387
|
+
}
|
|
388
|
+
// Build summary
|
|
389
|
+
const allSections = Object.entries(sections)
|
|
390
|
+
.filter(([_, content]) => content.length > 0)
|
|
391
|
+
.map(([_, content]) => content);
|
|
392
|
+
let summary = allSections.join('\n\n---\n\n');
|
|
393
|
+
let tokenEstimate = estimateTokens(summary);
|
|
394
|
+
// Truncate if needed
|
|
395
|
+
if (tokenEstimate > maxTokens) {
|
|
396
|
+
const ratio = maxTokens / tokenEstimate;
|
|
397
|
+
const targetLength = Math.floor(summary.length * ratio * 0.9); // 10% buffer
|
|
398
|
+
summary = summary.substring(0, targetLength) + '\n\n[Context truncated to fit token limit]';
|
|
399
|
+
tokenEstimate = maxTokens;
|
|
400
|
+
}
|
|
401
|
+
return {
|
|
402
|
+
sections,
|
|
403
|
+
summary,
|
|
404
|
+
token_estimate: tokenEstimate,
|
|
405
|
+
timestamp: new Date().toISOString(),
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Get compact context for continuation
|
|
410
|
+
*/
|
|
411
|
+
export function getCompactContext(projectRoot, agentDir) {
|
|
412
|
+
const context = primeContext(projectRoot, agentDir, {
|
|
413
|
+
includeSections: ['feature_progress', 'session_history'],
|
|
414
|
+
maxTokens: 2000,
|
|
415
|
+
});
|
|
416
|
+
return context.summary;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Get tool recommendations only
|
|
420
|
+
*/
|
|
421
|
+
export function getToolRecommendationsOnly(projectRoot, agentDir) {
|
|
422
|
+
return getToolRecommendations(projectRoot, agentDir);
|
|
423
|
+
}
|
|
424
|
+
export default {
|
|
425
|
+
primeContext,
|
|
426
|
+
getCompactContext,
|
|
427
|
+
getToolRecommendationsOnly,
|
|
428
|
+
};
|
|
429
|
+
//# sourceMappingURL=context-primer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-primer.js","sourceRoot":"","sources":["../../src/utils/context-primer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency Management Utilities
|
|
3
|
+
* Checks for outdated dependencies, security vulnerabilities, and provides update recommendations.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Dependency information
|
|
7
|
+
*/
|
|
8
|
+
export interface DependencyInfo {
|
|
9
|
+
name: string;
|
|
10
|
+
current: string;
|
|
11
|
+
latest?: string;
|
|
12
|
+
outdated: boolean;
|
|
13
|
+
securityVulnerable: boolean;
|
|
14
|
+
type: "dependency" | "devDependency";
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Dependency audit result
|
|
18
|
+
*/
|
|
19
|
+
export interface DependencyAudit {
|
|
20
|
+
total: number;
|
|
21
|
+
outdated: number;
|
|
22
|
+
vulnerable: number;
|
|
23
|
+
recommendations: string[];
|
|
24
|
+
critical: DependencyInfo[];
|
|
25
|
+
warnings: DependencyInfo[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Check package.json for dependency information
|
|
29
|
+
*/
|
|
30
|
+
export declare function analyzeDependencies(): DependencyAudit;
|
|
31
|
+
/**
|
|
32
|
+
* Generate dependency summary for agent prompts
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateDependencySummary(): string;
|
|
35
|
+
declare const _default: {
|
|
36
|
+
analyzeDependencies: typeof analyzeDependencies;
|
|
37
|
+
generateDependencySummary: typeof generateDependencySummary;
|
|
38
|
+
};
|
|
39
|
+
export default _default;
|
|
40
|
+
//# sourceMappingURL=dependency-management.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-management.d.ts","sourceRoot":"","sources":["../../src/utils/dependency-management.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,IAAI,EAAE,YAAY,GAAG,eAAe,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,CAuFrD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAiClD;;;;;AAED,wBAGE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency Management Utilities
|
|
3
|
+
* Checks for outdated dependencies, security vulnerabilities, and provides update recommendations.
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync, existsSync } from "fs";
|
|
6
|
+
import { resolve } from "path";
|
|
7
|
+
import { agentConfig } from "../config/agent-config.js";
|
|
8
|
+
/**
|
|
9
|
+
* Check package.json for dependency information
|
|
10
|
+
*/
|
|
11
|
+
export function analyzeDependencies() {
|
|
12
|
+
const root = agentConfig.paths.projectRoot;
|
|
13
|
+
const packageJsonPath = resolve(root, "package.json");
|
|
14
|
+
if (!existsSync(packageJsonPath)) {
|
|
15
|
+
return {
|
|
16
|
+
total: 0,
|
|
17
|
+
outdated: 0,
|
|
18
|
+
vulnerable: 0,
|
|
19
|
+
recommendations: ["No package.json found"],
|
|
20
|
+
critical: [],
|
|
21
|
+
warnings: [],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const content = readFileSync(packageJsonPath, "utf-8");
|
|
26
|
+
const pkg = JSON.parse(content);
|
|
27
|
+
const deps = Object.entries(pkg.dependencies || {}).map(([name, version]) => ({
|
|
28
|
+
name,
|
|
29
|
+
current: version,
|
|
30
|
+
type: "dependency",
|
|
31
|
+
outdated: false,
|
|
32
|
+
securityVulnerable: false,
|
|
33
|
+
}));
|
|
34
|
+
const devDeps = Object.entries(pkg.devDependencies || {}).map(([name, version]) => ({
|
|
35
|
+
name,
|
|
36
|
+
current: version,
|
|
37
|
+
type: "devDependency",
|
|
38
|
+
outdated: false,
|
|
39
|
+
securityVulnerable: false,
|
|
40
|
+
}));
|
|
41
|
+
const allDeps = [...deps, ...devDeps];
|
|
42
|
+
const total = allDeps.length;
|
|
43
|
+
// Check for common security issues
|
|
44
|
+
const vulnerable = [];
|
|
45
|
+
const warnings = [];
|
|
46
|
+
// Check for known vulnerable patterns
|
|
47
|
+
allDeps.forEach(dep => {
|
|
48
|
+
// Check for very old versions (heuristic)
|
|
49
|
+
if (dep.current.includes("^0.") || dep.current.includes("~0.")) {
|
|
50
|
+
warnings.push(dep);
|
|
51
|
+
}
|
|
52
|
+
// Check for missing version (shouldn't happen but check anyway)
|
|
53
|
+
if (!dep.current || dep.current === "*") {
|
|
54
|
+
vulnerable.push(dep);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
const recommendations = [];
|
|
58
|
+
if (vulnerable.length > 0) {
|
|
59
|
+
recommendations.push(`Found ${vulnerable.length} potentially vulnerable dependencies - run 'npm audit'`);
|
|
60
|
+
}
|
|
61
|
+
if (warnings.length > 0) {
|
|
62
|
+
recommendations.push(`Found ${warnings.length} dependencies that may need updates`);
|
|
63
|
+
}
|
|
64
|
+
recommendations.push("Run 'npm outdated' to check for newer versions");
|
|
65
|
+
recommendations.push("Run 'npm audit' to check for security vulnerabilities");
|
|
66
|
+
recommendations.push("Consider running 'npm update' to update dependencies");
|
|
67
|
+
return {
|
|
68
|
+
total,
|
|
69
|
+
outdated: warnings.length,
|
|
70
|
+
vulnerable: vulnerable.length,
|
|
71
|
+
recommendations,
|
|
72
|
+
critical: vulnerable,
|
|
73
|
+
warnings,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
return {
|
|
78
|
+
total: 0,
|
|
79
|
+
outdated: 0,
|
|
80
|
+
vulnerable: 0,
|
|
81
|
+
recommendations: [`Error reading package.json: ${error instanceof Error ? error.message : String(error)}`],
|
|
82
|
+
critical: [],
|
|
83
|
+
warnings: [],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Generate dependency summary for agent prompts
|
|
89
|
+
*/
|
|
90
|
+
export function generateDependencySummary() {
|
|
91
|
+
const audit = analyzeDependencies();
|
|
92
|
+
let summary = "\n## DEPENDENCY STATUS\n\n";
|
|
93
|
+
summary += `Total Dependencies: ${audit.total}\n`;
|
|
94
|
+
summary += `Potentially Outdated: ${audit.outdated}\n`;
|
|
95
|
+
summary += `Security Vulnerabilities: ${audit.vulnerable}\n`;
|
|
96
|
+
if (audit.critical.length > 0) {
|
|
97
|
+
summary += "\n🚨 Critical Issues:\n";
|
|
98
|
+
audit.critical.slice(0, 5).forEach(dep => {
|
|
99
|
+
summary += ` - ${dep.name} (${dep.current})\n`;
|
|
100
|
+
});
|
|
101
|
+
if (audit.critical.length > 5) {
|
|
102
|
+
summary += ` ... and ${audit.critical.length - 5} more\n`;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (audit.warnings.length > 0 && audit.warnings.length <= 10) {
|
|
106
|
+
summary += "\n⚠️ Dependencies to Review:\n";
|
|
107
|
+
audit.warnings.slice(0, 10).forEach(dep => {
|
|
108
|
+
summary += ` - ${dep.name} (${dep.current})\n`;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
if (audit.recommendations.length > 0) {
|
|
112
|
+
summary += "\n💡 Recommendations:\n";
|
|
113
|
+
audit.recommendations.forEach(rec => {
|
|
114
|
+
summary += ` - ${rec}\n`;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return summary;
|
|
118
|
+
}
|
|
119
|
+
export default {
|
|
120
|
+
analyzeDependencies,
|
|
121
|
+
generateDependencySummary,
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=dependency-management.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-management.js","sourceRoot":"","sources":["../../src/utils/dependency-management.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Validation Utilities
|
|
3
|
+
* Validates environment variables, configuration files, and required setup.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Environment validation result
|
|
7
|
+
*/
|
|
8
|
+
export interface EnvValidationResult {
|
|
9
|
+
valid: boolean;
|
|
10
|
+
missing: string[];
|
|
11
|
+
invalid: string[];
|
|
12
|
+
warnings: string[];
|
|
13
|
+
recommendations: string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Validate environment variables from .env file
|
|
17
|
+
*/
|
|
18
|
+
export declare function validateEnvironment(): EnvValidationResult;
|
|
19
|
+
/**
|
|
20
|
+
* Check for required configuration files
|
|
21
|
+
*/
|
|
22
|
+
export declare function checkRequiredConfigs(): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Generate environment validation summary
|
|
25
|
+
*/
|
|
26
|
+
export declare function generateEnvironmentSummary(): string;
|
|
27
|
+
declare const _default: {
|
|
28
|
+
validateEnvironment: typeof validateEnvironment;
|
|
29
|
+
checkRequiredConfigs: typeof checkRequiredConfigs;
|
|
30
|
+
generateEnvironmentSummary: typeof generateEnvironmentSummary;
|
|
31
|
+
};
|
|
32
|
+
export default _default;
|
|
33
|
+
//# sourceMappingURL=environment-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-validation.d.ts","sourceRoot":"","sources":["../../src/utils/environment-validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,mBAAmB,CAkEzD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAoB/C;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAuCnD;;;;;;AAED,wBAIE"}
|