agentinit 1.4.0 → 1.5.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/CHANGELOG.md +19 -0
- package/README.md +209 -0
- package/dist/agentinit-1.5.0.tgz +0 -0
- package/dist/agents/Agent.d.ts +110 -0
- package/dist/agents/Agent.d.ts.map +1 -0
- package/dist/agents/Agent.js +174 -0
- package/dist/agents/Agent.js.map +1 -0
- package/dist/agents/ClaudeAgent.d.ts +50 -0
- package/dist/agents/ClaudeAgent.d.ts.map +1 -0
- package/dist/agents/ClaudeAgent.js +249 -0
- package/dist/agents/ClaudeAgent.js.map +1 -0
- package/dist/agents/ClaudeDesktopAgent.d.ts +49 -0
- package/dist/agents/ClaudeDesktopAgent.d.ts.map +1 -0
- package/dist/agents/ClaudeDesktopAgent.js +143 -0
- package/dist/agents/ClaudeDesktopAgent.js.map +1 -0
- package/dist/agents/CodexCliAgent.d.ts +48 -0
- package/dist/agents/CodexCliAgent.d.ts.map +1 -0
- package/dist/agents/CodexCliAgent.js +262 -0
- package/dist/agents/CodexCliAgent.js.map +1 -0
- package/dist/agents/CursorAgent.d.ts +44 -0
- package/dist/agents/CursorAgent.d.ts.map +1 -0
- package/dist/agents/CursorAgent.js +231 -0
- package/dist/agents/CursorAgent.js.map +1 -0
- package/dist/agents/GeminiCliAgent.d.ts +40 -0
- package/dist/agents/GeminiCliAgent.d.ts.map +1 -0
- package/dist/agents/GeminiCliAgent.js +195 -0
- package/dist/agents/GeminiCliAgent.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +33191 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/apply.d.ts +2 -0
- package/dist/commands/apply.d.ts.map +1 -0
- package/dist/commands/apply.js +468 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/config.d.ts +8 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +6 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/detect.d.ts +6 -0
- package/dist/commands/detect.d.ts.map +1 -0
- package/dist/commands/detect.js +55 -0
- package/dist/commands/detect.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +105 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mcp.d.ts +8 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +127 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/subagents.d.ts +9 -0
- package/dist/commands/subagents.d.ts.map +1 -0
- package/dist/commands/subagents.js +6 -0
- package/dist/commands/subagents.js.map +1 -0
- package/dist/commands/sync.d.ts +7 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +49 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/verifyMcp.d.ts +2 -0
- package/dist/commands/verifyMcp.d.ts.map +1 -0
- package/dist/commands/verifyMcp.js +215 -0
- package/dist/commands/verifyMcp.js.map +1 -0
- package/dist/constants/index.d.ts +3 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +3 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/mcp.d.ts +9 -0
- package/dist/constants/mcp.d.ts.map +1 -0
- package/dist/constants/mcp.js +28 -0
- package/dist/constants/mcp.js.map +1 -0
- package/dist/constants/tokens.d.ts +6 -0
- package/dist/constants/tokens.d.ts.map +1 -0
- package/dist/constants/tokens.js +5 -0
- package/dist/constants/tokens.js.map +1 -0
- package/dist/core/agentDetector.d.ts +9 -0
- package/dist/core/agentDetector.d.ts.map +1 -0
- package/dist/core/agentDetector.js +51 -0
- package/dist/core/agentDetector.js.map +1 -0
- package/dist/core/agentManager.d.ts +55 -0
- package/dist/core/agentManager.d.ts.map +1 -0
- package/dist/core/agentManager.js +111 -0
- package/dist/core/agentManager.js.map +1 -0
- package/dist/core/configMerger.d.ts +49 -0
- package/dist/core/configMerger.d.ts.map +1 -0
- package/dist/core/configMerger.js +180 -0
- package/dist/core/configMerger.js.map +1 -0
- package/dist/core/mcpClient.d.ts +38 -0
- package/dist/core/mcpClient.d.ts.map +1 -0
- package/dist/core/mcpClient.js +416 -0
- package/dist/core/mcpClient.js.map +1 -0
- package/dist/core/mcpFilter.d.ts +44 -0
- package/dist/core/mcpFilter.d.ts.map +1 -0
- package/dist/core/mcpFilter.js +126 -0
- package/dist/core/mcpFilter.js.map +1 -0
- package/dist/core/mcpParser.d.ts +25 -0
- package/dist/core/mcpParser.d.ts.map +1 -0
- package/dist/core/mcpParser.js +297 -0
- package/dist/core/mcpParser.js.map +1 -0
- package/dist/core/propagator.d.ts +25 -0
- package/dist/core/propagator.d.ts.map +1 -0
- package/dist/core/propagator.js +154 -0
- package/dist/core/propagator.js.map +1 -0
- package/dist/core/rulesApplicator.d.ts +29 -0
- package/dist/core/rulesApplicator.d.ts.map +1 -0
- package/dist/core/rulesApplicator.js +181 -0
- package/dist/core/rulesApplicator.js.map +1 -0
- package/dist/core/rulesParser.d.ts +41 -0
- package/dist/core/rulesParser.d.ts.map +1 -0
- package/dist/core/rulesParser.js +260 -0
- package/dist/core/rulesParser.js.map +1 -0
- package/dist/core/rulesTemplateLoader.d.ts +31 -0
- package/dist/core/rulesTemplateLoader.d.ts.map +1 -0
- package/dist/core/rulesTemplateLoader.js +75 -0
- package/dist/core/rulesTemplateLoader.js.map +1 -0
- package/dist/core/stackDetector.d.ts +16 -0
- package/dist/core/stackDetector.d.ts.map +1 -0
- package/dist/core/stackDetector.js +234 -0
- package/dist/core/stackDetector.js.map +1 -0
- package/dist/core/templateEngine.d.ts +15 -0
- package/dist/core/templateEngine.d.ts.map +1 -0
- package/dist/core/templateEngine.js +260 -0
- package/dist/core/templateEngine.js.map +1 -0
- package/dist/core/tomlGenerator.d.ts +24 -0
- package/dist/core/tomlGenerator.d.ts.map +1 -0
- package/dist/core/tomlGenerator.js +185 -0
- package/dist/core/tomlGenerator.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -33195
- package/dist/index.js.map +1 -0
- package/dist/lib/index.d.ts +39 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +40 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/types/index.d.ts +23 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/dist/lib/types/index.js +23 -0
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/utils/index.d.ts +18 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +21 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/verifier/index.d.ts +22 -0
- package/dist/lib/verifier/index.d.ts.map +1 -0
- package/dist/lib/verifier/index.js +22 -0
- package/dist/lib/verifier/index.js.map +1 -0
- package/dist/registry/mcpRegistry.d.ts +12 -0
- package/dist/registry/mcpRegistry.d.ts.map +1 -0
- package/dist/registry/mcpRegistry.js +114 -0
- package/dist/registry/mcpRegistry.js.map +1 -0
- package/dist/types/index.d.ts +180 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +21 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/rules.d.ts +51 -0
- package/dist/types/rules.d.ts.map +1 -0
- package/dist/types/rules.js +2 -0
- package/dist/types/rules.js.map +1 -0
- package/dist/utils/fs.d.ts +12 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +91 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +36 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paths.d.ts +77 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +140 -0
- package/dist/utils/paths.js.map +1 -0
- package/package.json +30 -6
- package/dist/agentinit-1.4.0.tgz +0 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,0CAA0C,CAAC;KACvD,kBAAkB,CAAC,IAAI,CAAC;KACxB,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IAC3B,6CAA6C;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC;KACzD,MAAM,CAAC,2BAA2B,EAAE,2CAA2C,CAAC;KAChF,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,eAAe,EAAE,iCAAiC,CAAC;KAC1D,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,eAAe,EAAE,mDAAmD,CAAC;KAC5E,MAAM,CAAC,cAAc,EAAE,8BAA8B,CAAC;KACtD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,kBAAkB,CAAC,IAAI,CAAC;KACxB,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IAC3B,6CAA6C;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AA8CA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgfhE"}
|
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
import ora from 'ora';
|
|
2
|
+
import { green, yellow, red } from 'kleur/colors';
|
|
3
|
+
import { logger } from '../utils/logger.js';
|
|
4
|
+
import { MCPParser, MCPParseError } from '../core/mcpParser.js';
|
|
5
|
+
import { TOKEN_COUNT_THRESHOLDS, DEFAULT_CONNECTION_TIMEOUT_MS } from '../constants/index.js';
|
|
6
|
+
import { RulesParser, RulesParseError } from '../core/rulesParser.js';
|
|
7
|
+
import { TOMLGenerator } from '../core/tomlGenerator.js';
|
|
8
|
+
import { readFileIfExists, writeFile, getAgentInitTomlPath } from '../utils/fs.js';
|
|
9
|
+
import { AgentManager } from '../core/agentManager.js';
|
|
10
|
+
import { MCPFilter } from '../core/mcpFilter.js';
|
|
11
|
+
import { MCPVerifier } from '../core/mcpClient.js';
|
|
12
|
+
// Color utility functions for token display
|
|
13
|
+
function colorizeTokenCount(tokenCount) {
|
|
14
|
+
if (tokenCount <= TOKEN_COUNT_THRESHOLDS.LOW)
|
|
15
|
+
return green(tokenCount.toString());
|
|
16
|
+
if (tokenCount <= TOKEN_COUNT_THRESHOLDS.MEDIUM)
|
|
17
|
+
return yellow(tokenCount.toString());
|
|
18
|
+
return red(tokenCount.toString());
|
|
19
|
+
}
|
|
20
|
+
function colorizeTokenDiff(diff) {
|
|
21
|
+
if (diff === 0)
|
|
22
|
+
return '±0';
|
|
23
|
+
if (diff > 0)
|
|
24
|
+
return green(`+${diff}`);
|
|
25
|
+
return red(`${diff}`); // Already has negative sign
|
|
26
|
+
}
|
|
27
|
+
export async function applyCommand(args) {
|
|
28
|
+
const cwd = process.cwd();
|
|
29
|
+
logger.title('🔧 AgentInit - Apply Configuration');
|
|
30
|
+
// Check if any MCP or Rules arguments are present
|
|
31
|
+
const hasMcpArgs = args.some(arg => arg.startsWith('--mcp-'));
|
|
32
|
+
const hasRulesArgs = args.some(arg => arg === '--rules' || arg === '--rule-raw' || arg === '--rules-file' || arg === '--rules-remote');
|
|
33
|
+
// Check if --client or --agent is specified
|
|
34
|
+
const clientArgIndex = args.findIndex(arg => arg === '--client' || arg === '--agent');
|
|
35
|
+
const specifiedClient = clientArgIndex >= 0 && clientArgIndex + 1 < args.length
|
|
36
|
+
? args[clientArgIndex + 1]
|
|
37
|
+
: null;
|
|
38
|
+
// Check if --global flag is specified
|
|
39
|
+
const isGlobal = args.includes('--global');
|
|
40
|
+
// Check if --verify-mcp flag is specified
|
|
41
|
+
const verifyMcp = args.includes('--verify-mcp');
|
|
42
|
+
// Parse timeout argument
|
|
43
|
+
const timeoutIndex = args.findIndex(arg => arg === '--timeout');
|
|
44
|
+
const timeoutArg = timeoutIndex >= 0 && timeoutIndex + 1 < args.length ? args[timeoutIndex + 1] : null;
|
|
45
|
+
const parsedTimeout = timeoutArg ? parseInt(timeoutArg, 10) : NaN;
|
|
46
|
+
const timeout = timeoutArg && Number.isFinite(parsedTimeout) && parsedTimeout > 0 ? parsedTimeout : undefined;
|
|
47
|
+
if (!hasMcpArgs && !hasRulesArgs) {
|
|
48
|
+
logger.info('Usage: agentinit apply [options]');
|
|
49
|
+
logger.info('');
|
|
50
|
+
logger.info('Options:');
|
|
51
|
+
logger.info(' --client <agent> Target specific agent (claude, claude-desktop, codex, gemini, cursor)');
|
|
52
|
+
logger.info(' --agent <agent> Alias for --client');
|
|
53
|
+
logger.info(' --global Apply configuration globally (requires --agent)');
|
|
54
|
+
logger.info(' If not specified, auto-detects agents in the project');
|
|
55
|
+
logger.info(' --verify-mcp Verify MCP servers after configuration');
|
|
56
|
+
logger.info(` --timeout <ms> Connection timeout in milliseconds for MCP verification (default: ${DEFAULT_CONNECTION_TIMEOUT_MS})`);
|
|
57
|
+
logger.info('');
|
|
58
|
+
logger.info('Rules Configuration Options:');
|
|
59
|
+
logger.info(' --rules <templates> Apply rule templates (comma-separated)');
|
|
60
|
+
logger.info(' Available: git, write_docs, use_git_worktrees, use_subagents, use_linter, write_tests');
|
|
61
|
+
logger.info(' --rule-raw <rule> Add a raw rule (can be used multiple times)');
|
|
62
|
+
logger.info(' --rules-file <path> Load rules from a file');
|
|
63
|
+
logger.info(' --rules-remote <url> Load rules from a remote URL');
|
|
64
|
+
logger.info(' --auth <token> Authentication token for remote rules (Bearer token)');
|
|
65
|
+
logger.info('');
|
|
66
|
+
logger.info('Rules Configuration Examples:');
|
|
67
|
+
logger.info(' # Apply rule templates');
|
|
68
|
+
logger.info(' agentinit apply --rules git,write_tests,use_linter');
|
|
69
|
+
logger.info('');
|
|
70
|
+
logger.info(' # Mix templates with raw rules');
|
|
71
|
+
logger.info(' agentinit apply --rules git,write_docs --rule-raw "Use TypeScript strict mode"');
|
|
72
|
+
logger.info('');
|
|
73
|
+
logger.info(' # Load from file');
|
|
74
|
+
logger.info(' agentinit apply --rules-file ./custom-rules.md');
|
|
75
|
+
logger.info('');
|
|
76
|
+
logger.info(' # Global rules application');
|
|
77
|
+
logger.info(' agentinit apply --global --agent claude --rules git,write_tests');
|
|
78
|
+
logger.info('');
|
|
79
|
+
logger.info('MCP Configuration Examples:');
|
|
80
|
+
logger.info(' # Auto-detect agents and apply to all found');
|
|
81
|
+
logger.info(' agentinit apply \\');
|
|
82
|
+
logger.info(' --mcp-stdio context7 "npx -y @upstash/context7-mcp" --args "--api-key=YOUR_API_KEY"');
|
|
83
|
+
logger.info('');
|
|
84
|
+
logger.info(' # Target specific agent');
|
|
85
|
+
logger.info(' agentinit apply --client claude \\');
|
|
86
|
+
logger.info(' --mcp-http github "https://api.githubcopilot.com/mcp/" --auth "Bearer YOUR_GITHUB_PAT"');
|
|
87
|
+
logger.info('');
|
|
88
|
+
logger.info(' # HTTP MCP with custom headers');
|
|
89
|
+
logger.info(' agentinit apply --global --client claude \\');
|
|
90
|
+
logger.info(' --mcp-http context7 "https://mcp.context7.com/mcp" --header "CONTEXT7_API_KEY:your_api_key"');
|
|
91
|
+
logger.info('');
|
|
92
|
+
logger.info(' # Multiple MCPs with auto-detection');
|
|
93
|
+
logger.info(' agentinit apply \\');
|
|
94
|
+
logger.info(' --mcp-stdio supabase "npx -y @supabase/mcp-server-supabase@latest" \\');
|
|
95
|
+
logger.info(' --args "--read-only --project-ref=<project-ref>" \\');
|
|
96
|
+
logger.info(' --env "SUPABASE_ACCESS_TOKEN=<personal-access-token>" \\');
|
|
97
|
+
logger.info(' --mcp-http notion_api "https://mcp.notion.com/mcp"');
|
|
98
|
+
logger.info('');
|
|
99
|
+
logger.info(' # Apply globally to specific agent');
|
|
100
|
+
logger.info(' agentinit apply --global --agent claude \\');
|
|
101
|
+
logger.info(' --mcp-stdio filesystem "npx -y @modelcontextprotocol/server-filesystem" \\');
|
|
102
|
+
logger.info(' --args "/Users/username/Documents"');
|
|
103
|
+
logger.info('');
|
|
104
|
+
logger.info(' # Verify MCP servers after configuration');
|
|
105
|
+
logger.info(' agentinit apply --verify-mcp \\');
|
|
106
|
+
logger.info(' --mcp-stdio exa "npx -y @exa/mcp-server" \\');
|
|
107
|
+
logger.info(' --env "EXA_API_KEY=YOUR_API_KEY"');
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const spinner = ora('Parsing configurations...').start();
|
|
111
|
+
try {
|
|
112
|
+
// Parse the MCP arguments (filter out --client, --agent, --global and rules args)
|
|
113
|
+
const mcpArgs = args.filter((arg, index) => {
|
|
114
|
+
// Filter out non-MCP arguments
|
|
115
|
+
if (arg === '--client' || arg === '--agent' || arg === '--global' || arg === '--verify-mcp' || arg === '--timeout')
|
|
116
|
+
return false;
|
|
117
|
+
if (arg === '--rules' || arg === '--rule-raw' || arg === '--rules-file' || arg === '--rules-remote')
|
|
118
|
+
return false;
|
|
119
|
+
if (index > 0 && (args[index - 1] === '--client' || args[index - 1] === '--agent' || args[index - 1] === '--timeout'))
|
|
120
|
+
return false;
|
|
121
|
+
if (index > 0 && (args[index - 1] === '--rules' || args[index - 1] === '--rule-raw' || args[index - 1] === '--rules-file' || args[index - 1] === '--rules-remote'))
|
|
122
|
+
return false;
|
|
123
|
+
return true;
|
|
124
|
+
});
|
|
125
|
+
// Parse MCP configuration if present
|
|
126
|
+
const mcpParsed = hasMcpArgs ? MCPParser.parseArguments(mcpArgs) : { servers: [] };
|
|
127
|
+
// Parse Rules configuration if present
|
|
128
|
+
let appliedRules = null;
|
|
129
|
+
if (hasRulesArgs) {
|
|
130
|
+
const rulesParser = new RulesParser();
|
|
131
|
+
const rulesConfig = RulesParser.parseArguments(args);
|
|
132
|
+
// Validate template IDs
|
|
133
|
+
if (rulesConfig.templates.length > 0) {
|
|
134
|
+
const invalidTemplates = rulesParser.validateTemplateIds(rulesConfig.templates);
|
|
135
|
+
if (invalidTemplates.length > 0) {
|
|
136
|
+
spinner.fail(`Unknown rule templates: ${invalidTemplates.join(', ')}`);
|
|
137
|
+
logger.info('Available templates: git, write_docs, use_git_worktrees, use_subagents, use_linter, write_tests');
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
appliedRules = await rulesParser.processRules(rulesConfig);
|
|
142
|
+
}
|
|
143
|
+
if (mcpParsed.servers.length === 0 && (!appliedRules || appliedRules.merged.length === 0)) {
|
|
144
|
+
spinner.warn('No MCP servers or rules found in arguments');
|
|
145
|
+
logger.info('Use `agentinit apply` without arguments to see usage examples');
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
// Validate global flag requirements
|
|
149
|
+
if (isGlobal && !specifiedClient) {
|
|
150
|
+
spinner.fail('--global flag requires --agent to specify target agent');
|
|
151
|
+
logger.error('Example: agentinit apply --global --agent claude --mcp-stdio ...');
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
spinner.text = isGlobal ? 'Preparing global configuration...' : 'Detecting agents...';
|
|
155
|
+
// Initialize agent manager
|
|
156
|
+
const agentManager = new AgentManager();
|
|
157
|
+
// Determine target agents
|
|
158
|
+
let targetAgents;
|
|
159
|
+
if (specifiedClient) {
|
|
160
|
+
// Use specified client
|
|
161
|
+
const agent = agentManager.getAgentById(specifiedClient);
|
|
162
|
+
if (!agent) {
|
|
163
|
+
spinner.fail(`Unknown agent: ${specifiedClient}`);
|
|
164
|
+
logger.error(`Supported agents: ${agentManager.getSupportedAgentIds().join(', ')}`);
|
|
165
|
+
process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
if (isGlobal) {
|
|
168
|
+
// Global configuration - check if agent supports it
|
|
169
|
+
if (!agent.supportsGlobalConfig()) {
|
|
170
|
+
spinner.fail(`Agent ${agent.name} does not support global configuration`);
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
targetAgents = [{ agent, configPath: agent.getGlobalMcpPath() }];
|
|
174
|
+
spinner.text = `Applying globally to ${agent.name}...`;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// Project-level configuration
|
|
178
|
+
const detection = await agent.detectPresence(cwd);
|
|
179
|
+
if (!detection) {
|
|
180
|
+
spinner.warn(`Agent ${specifiedClient} not found in project`);
|
|
181
|
+
logger.info(`To use ${agent.name}, ensure one of these files exists:`);
|
|
182
|
+
agent.configFiles.forEach(config => logger.info(` • ${config.path} (${config.type}, ${config.purpose}${config.description ? ': ' + config.description : ''})`));
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
targetAgents = [detection];
|
|
186
|
+
spinner.text = `Applying to ${agent.name}...`;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
// Auto-detect agents (only for project-level configurations)
|
|
191
|
+
if (isGlobal) {
|
|
192
|
+
// This shouldn't happen due to earlier validation, but just in case
|
|
193
|
+
spinner.fail('Global configuration requires specifying an agent with --agent');
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
196
|
+
const detectedAgents = await agentManager.detectAgents(cwd);
|
|
197
|
+
if (detectedAgents.length === 0) {
|
|
198
|
+
spinner.warn('No AI coding agents detected in this project');
|
|
199
|
+
logger.info('Supported agents:');
|
|
200
|
+
agentManager.getAllAgents().forEach(agent => {
|
|
201
|
+
logger.info(` • ${agent.name} (${agent.id})`);
|
|
202
|
+
logger.info(` Files: ${agent.configFiles.map(c => c.path).join(', ')}`);
|
|
203
|
+
});
|
|
204
|
+
logger.info('');
|
|
205
|
+
logger.info('To target a specific agent, use: --agent <agent-id>');
|
|
206
|
+
logger.info('To configure globally, use: --global --agent <agent-id>');
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
targetAgents = detectedAgents;
|
|
210
|
+
const agentNames = detectedAgents.map(d => d.agent.name).join(', ');
|
|
211
|
+
spinner.text = `Applying to detected agents: ${agentNames}`;
|
|
212
|
+
}
|
|
213
|
+
// Apply configuration to each target agent
|
|
214
|
+
const results = [];
|
|
215
|
+
for (const targetAgent of targetAgents) {
|
|
216
|
+
const { agent } = targetAgent;
|
|
217
|
+
// Filter and transform MCP servers for this agent
|
|
218
|
+
const filtered = MCPFilter.filterForAgent(agent, mcpParsed.servers);
|
|
219
|
+
const hasMcpServers = filtered.servers.length > 0;
|
|
220
|
+
const hasRules = appliedRules && appliedRules.merged.length > 0 && agent.capabilities.rules;
|
|
221
|
+
if (!hasMcpServers && !hasRules) {
|
|
222
|
+
if (mcpParsed.servers.length > 0 && !agent.capabilities.rules) {
|
|
223
|
+
logger.warning(`${agent.name}: No compatible MCP servers, and rules not supported`);
|
|
224
|
+
}
|
|
225
|
+
else if (!hasRules && appliedRules) {
|
|
226
|
+
logger.warning(`${agent.name}: No rules support`);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
logger.warning(`${agent.name}: No compatible MCP servers`);
|
|
230
|
+
}
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
// Apply MCP configuration (global or project-specific)
|
|
234
|
+
if (hasMcpServers) {
|
|
235
|
+
if (isGlobal) {
|
|
236
|
+
await agent.applyGlobalMCPConfig(filtered.servers);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
await agent.applyMCPConfig(cwd, filtered.servers);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Apply rules configuration
|
|
243
|
+
let rulesResult = null;
|
|
244
|
+
if (hasRules && appliedRules) {
|
|
245
|
+
if (isGlobal) {
|
|
246
|
+
rulesResult = await agent.applyGlobalRules(appliedRules);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
rulesResult = await agent.applyRules(cwd, appliedRules);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
results.push({
|
|
253
|
+
agent,
|
|
254
|
+
serversApplied: filtered.servers.length,
|
|
255
|
+
rulesApplied: rulesResult?.rulesApplied || 0,
|
|
256
|
+
rulesTokenCount: rulesResult?.tokenCount || 0,
|
|
257
|
+
rulesTokenDiff: rulesResult?.tokenDiff || 0,
|
|
258
|
+
totalFileTokens: rulesResult?.totalFileTokens || 0,
|
|
259
|
+
existingRules: rulesResult?.existingRules || [],
|
|
260
|
+
newlyApplied: rulesResult?.newlyApplied || [],
|
|
261
|
+
existingCount: rulesResult?.existingCount || 0,
|
|
262
|
+
newlyAppliedCount: rulesResult?.newlyAppliedCount || 0,
|
|
263
|
+
appliedSections: rulesResult?.mergedSections || [],
|
|
264
|
+
transformations: filtered.transformations,
|
|
265
|
+
mcpConfigPath: hasMcpServers ? (isGlobal ? agent.getGlobalMcpPath() : agent.getNativeMcpPath(cwd)) : null,
|
|
266
|
+
rulesConfigPath: rulesResult?.configPath || null,
|
|
267
|
+
rulesSuccess: rulesResult?.success ?? true
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
// Generate the universal TOML file (only for project-level configurations with MCPs)
|
|
271
|
+
let tomlPath = null;
|
|
272
|
+
if (!isGlobal && mcpParsed.servers.length > 0) {
|
|
273
|
+
tomlPath = await getAgentInitTomlPath(cwd);
|
|
274
|
+
const existingToml = await readFileIfExists(tomlPath);
|
|
275
|
+
let finalToml;
|
|
276
|
+
if (existingToml) {
|
|
277
|
+
finalToml = TOMLGenerator.mergeTOML(existingToml, mcpParsed.servers);
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
finalToml = TOMLGenerator.generateTOML(mcpParsed.servers);
|
|
281
|
+
}
|
|
282
|
+
await writeFile(tomlPath, finalToml);
|
|
283
|
+
}
|
|
284
|
+
if (isGlobal) {
|
|
285
|
+
spinner.succeed('Global configuration applied successfully!');
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
spinner.succeed('Configuration applied successfully!');
|
|
289
|
+
}
|
|
290
|
+
// Verify MCP servers if requested and MCP servers were configured
|
|
291
|
+
if (verifyMcp && mcpParsed.servers.length > 0) {
|
|
292
|
+
logger.info('');
|
|
293
|
+
const verifySpinner = ora(`Verifying ${mcpParsed.servers.length} MCP server(s)...`).start();
|
|
294
|
+
try {
|
|
295
|
+
const verifier = new MCPVerifier(timeout);
|
|
296
|
+
const verificationResults = await verifier.verifyServers(mcpParsed.servers, timeout);
|
|
297
|
+
const successCount = verificationResults.filter(r => r.status === 'success').length;
|
|
298
|
+
const errorCount = verificationResults.filter(r => r.status === 'error').length;
|
|
299
|
+
const timeoutCount = verificationResults.filter(r => r.status === 'timeout').length;
|
|
300
|
+
if (successCount === verificationResults.length) {
|
|
301
|
+
verifySpinner.succeed(`All ${verificationResults.length} MCP server(s) verified successfully!`);
|
|
302
|
+
}
|
|
303
|
+
else if (successCount > 0) {
|
|
304
|
+
verifySpinner.warn(`${successCount}/${verificationResults.length} MCP server(s) verified successfully`);
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
verifySpinner.fail(`Failed to verify any MCP servers`);
|
|
308
|
+
}
|
|
309
|
+
logger.info('');
|
|
310
|
+
logger.info('MCP Verification Results:');
|
|
311
|
+
logger.info('');
|
|
312
|
+
const formattedOutput = verifier.formatResults(verificationResults);
|
|
313
|
+
console.log(formattedOutput);
|
|
314
|
+
if (successCount < verificationResults.length) {
|
|
315
|
+
logger.info('For troubleshooting, run: agentinit verify_mcp --all');
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
catch (error) {
|
|
319
|
+
verifySpinner.fail('MCP verification failed');
|
|
320
|
+
logger.error(`Verification error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Report results
|
|
324
|
+
if (tomlPath) {
|
|
325
|
+
logger.info(`📁 Universal config saved to: ${tomlPath}`);
|
|
326
|
+
}
|
|
327
|
+
// Report MCP servers if any
|
|
328
|
+
if (mcpParsed.servers.length > 0) {
|
|
329
|
+
logger.info(`🔥 Applied ${mcpParsed.servers.length} MCP server(s):`);
|
|
330
|
+
mcpParsed.servers.forEach(server => {
|
|
331
|
+
logger.info(` • ${server.name} (${server.type.toUpperCase()})`);
|
|
332
|
+
if (server.type === 'stdio' && server.command) {
|
|
333
|
+
logger.info(` Command: ${server.command} ${server.args?.join(' ') || ''}`);
|
|
334
|
+
}
|
|
335
|
+
else if (server.url) {
|
|
336
|
+
let sanitizedUrl;
|
|
337
|
+
try {
|
|
338
|
+
const parsedUrl = new URL(server.url);
|
|
339
|
+
parsedUrl.username = '';
|
|
340
|
+
parsedUrl.password = '';
|
|
341
|
+
parsedUrl.search = '';
|
|
342
|
+
sanitizedUrl = parsedUrl.toString();
|
|
343
|
+
}
|
|
344
|
+
catch {
|
|
345
|
+
sanitizedUrl = server.url.split('?')[0] || 'invalid-url';
|
|
346
|
+
}
|
|
347
|
+
logger.info(` URL: ${sanitizedUrl}`);
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
// Report rules if any
|
|
352
|
+
if (appliedRules && appliedRules.merged.length > 0) {
|
|
353
|
+
if (mcpParsed.servers.length > 0)
|
|
354
|
+
logger.info('');
|
|
355
|
+
// Calculate totals across all agents
|
|
356
|
+
const totalExisting = results.reduce((sum, r) => sum + (r.existingCount || 0), 0);
|
|
357
|
+
const totalNewlyApplied = results.reduce((sum, r) => sum + (r.newlyAppliedCount || 0), 0);
|
|
358
|
+
// Get unique sections across all results
|
|
359
|
+
const allSections = results.flatMap(r => r.appliedSections || []);
|
|
360
|
+
const uniqueSections = Array.from(new Map(allSections.map(s => [s.templateId, s])).values());
|
|
361
|
+
// Show existing sections (if any)
|
|
362
|
+
if (totalExisting > 0) {
|
|
363
|
+
const existingSectionCount = uniqueSections.filter(section => {
|
|
364
|
+
return section.rules.some((rule) => results.some(r => r.existingRules?.includes(rule)));
|
|
365
|
+
}).length;
|
|
366
|
+
logger.info(`📋 Already exists (${existingSectionCount} sections):`);
|
|
367
|
+
uniqueSections.forEach(section => {
|
|
368
|
+
const existingRulesInSection = section.rules.filter((rule) => results.some(r => r.existingRules?.includes(rule)));
|
|
369
|
+
if (existingRulesInSection.length > 0) {
|
|
370
|
+
logger.info(` • ${section.templateName} (${existingRulesInSection.length} rules)`);
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
// Show newly applied sections (if any)
|
|
375
|
+
if (totalNewlyApplied > 0) {
|
|
376
|
+
if (totalExisting > 0)
|
|
377
|
+
logger.info('');
|
|
378
|
+
const newlySectionCount = uniqueSections.filter(section => {
|
|
379
|
+
return section.rules.some((rule) => results.some(r => r.newlyApplied?.includes(rule)));
|
|
380
|
+
}).length;
|
|
381
|
+
logger.info(`📋 Applied (${newlySectionCount} sections):`);
|
|
382
|
+
uniqueSections.forEach(section => {
|
|
383
|
+
const newRulesInSection = section.rules.filter((rule) => results.some(r => r.newlyApplied?.includes(rule)));
|
|
384
|
+
if (newRulesInSection.length > 0) {
|
|
385
|
+
logger.info(` • ${section.templateName} (${newRulesInSection.length} rules)`);
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
logger.info('');
|
|
391
|
+
if (isGlobal) {
|
|
392
|
+
logger.info('🌍 Agents:');
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
logger.info('🤖 Agents:');
|
|
396
|
+
}
|
|
397
|
+
const totalTokens = results.reduce((sum, result) => sum + (result.rulesTokenCount || 0), 0);
|
|
398
|
+
results.forEach(result => {
|
|
399
|
+
const mcpInfo = result.serversApplied > 0 ? `${result.serversApplied} MCP server(s)` : '';
|
|
400
|
+
const rulesInfo = result.rulesApplied > 0 ? `${result.rulesApplied} rule(s)` : '';
|
|
401
|
+
const appliedInfo = [mcpInfo, rulesInfo].filter(Boolean).join(', ');
|
|
402
|
+
logger.info(`- ${result.agent.name}`);
|
|
403
|
+
// Show detailed token information for rules
|
|
404
|
+
if (result.rulesApplied > 0) {
|
|
405
|
+
if (result.totalFileTokens && result.totalFileTokens > 0) {
|
|
406
|
+
const totalColored = colorizeTokenCount(result.totalFileTokens);
|
|
407
|
+
const totalDiff = colorizeTokenDiff(result.rulesTokenDiff || 0);
|
|
408
|
+
logger.info(` Total File: ${totalColored} tokens (${totalDiff})`);
|
|
409
|
+
}
|
|
410
|
+
if (result.rulesConfigPath) {
|
|
411
|
+
logger.info(` Config: ${result.rulesConfigPath}`);
|
|
412
|
+
}
|
|
413
|
+
// Show warning if file is overweight
|
|
414
|
+
if (result.totalFileTokens && result.totalFileTokens > 30000) {
|
|
415
|
+
const configName = result.rulesConfigPath?.includes('CLAUDE') ? 'CLAUDE.md' :
|
|
416
|
+
result.rulesConfigPath?.includes('.cursorrules') ? '.cursorrules' :
|
|
417
|
+
'config file';
|
|
418
|
+
logger.warning(` ⚠️ ${configName} is overweight (>30k tokens). Consider reducing rules.`);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
else if (result.mcpConfigPath) {
|
|
422
|
+
logger.info(` MCP Config: ${result.mcpConfigPath}`);
|
|
423
|
+
}
|
|
424
|
+
if (result.transformations.length > 0) {
|
|
425
|
+
logger.info(` ⚡ ${result.transformations.length} server(s) transformed for compatibility`);
|
|
426
|
+
result.transformations.forEach(transform => {
|
|
427
|
+
logger.info(` - ${transform.original.name}: ${transform.reason}`);
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
// Show total token count if multiple agents with rules
|
|
432
|
+
if (totalTokens > 0 && results.filter(r => r.rulesApplied > 0).length > 1) {
|
|
433
|
+
logger.info('');
|
|
434
|
+
logger.info(`📊 Total rules token usage: ${totalTokens} tokens`);
|
|
435
|
+
}
|
|
436
|
+
logger.info('');
|
|
437
|
+
logger.info('Next steps:');
|
|
438
|
+
logger.info(' 1. Review the generated configurations');
|
|
439
|
+
logger.info(' 2. Update environment variables with your actual API keys');
|
|
440
|
+
if (isGlobal) {
|
|
441
|
+
logger.info(' 3. Restart your AI coding agent to load the new global MCP servers');
|
|
442
|
+
logger.info(' Global configurations affect all projects using this agent');
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
logger.info(' 3. Restart your AI coding agent to load the new MCP servers');
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
catch (error) {
|
|
449
|
+
spinner.fail('Failed to apply configuration');
|
|
450
|
+
if (error instanceof MCPParseError) {
|
|
451
|
+
logger.error('MCP Configuration Error:');
|
|
452
|
+
logger.error(error.message);
|
|
453
|
+
logger.info('');
|
|
454
|
+
logger.info('For help with the correct syntax, run: agentinit apply');
|
|
455
|
+
}
|
|
456
|
+
else if (error instanceof RulesParseError) {
|
|
457
|
+
logger.error('Rules Configuration Error:');
|
|
458
|
+
logger.error(error.message);
|
|
459
|
+
logger.info('');
|
|
460
|
+
logger.info('For help with rules syntax, run: agentinit apply');
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
logger.error(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
464
|
+
}
|
|
465
|
+
process.exit(1);
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAEA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAQ5C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAY,EAAE,KAAc,EAAE,OAAuB;IACvF,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import ora from 'ora';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
import { AgentDetector } from '../core/agentDetector.js';
|
|
4
|
+
import { StackDetector } from '../core/stackDetector.js';
|
|
5
|
+
export async function detectCommand(options) {
|
|
6
|
+
const cwd = process.cwd();
|
|
7
|
+
logger.title('🔍 AgentInit - Project Detection');
|
|
8
|
+
const spinner = ora('Detecting project configuration...').start();
|
|
9
|
+
try {
|
|
10
|
+
const agentDetector = new AgentDetector();
|
|
11
|
+
const stackDetector = new StackDetector();
|
|
12
|
+
const [agents, stack] = await Promise.all([
|
|
13
|
+
agentDetector.detectAgents(cwd),
|
|
14
|
+
stackDetector.detectStack(cwd)
|
|
15
|
+
]);
|
|
16
|
+
spinner.succeed('Detection complete');
|
|
17
|
+
// Display results
|
|
18
|
+
logger.subtitle('📋 Stack Information:');
|
|
19
|
+
logger.info(`Language: ${stack.language}`);
|
|
20
|
+
if (stack.framework)
|
|
21
|
+
logger.info(`Framework: ${stack.framework}`);
|
|
22
|
+
if (stack.packageManager)
|
|
23
|
+
logger.info(`Package Manager: ${stack.packageManager}`);
|
|
24
|
+
if (stack.testFramework)
|
|
25
|
+
logger.info(`Test Framework: ${stack.testFramework}`);
|
|
26
|
+
if (options.verbose && stack.dependencies.length > 0) {
|
|
27
|
+
logger.info(`Dependencies: ${stack.dependencies.join(', ')}`);
|
|
28
|
+
}
|
|
29
|
+
logger.subtitle('🤖 Agent Configuration:');
|
|
30
|
+
// Filter agents based on DEBUG environment variable
|
|
31
|
+
const isDebugMode = process.env.DEBUG === '1';
|
|
32
|
+
const filteredAgents = isDebugMode ? agents : agents.filter(agent => agent.detected);
|
|
33
|
+
if (filteredAgents.length === 0) {
|
|
34
|
+
if (isDebugMode) {
|
|
35
|
+
logger.info('No agent configurations found');
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
logger.info('No existing agent configurations found');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
filteredAgents.forEach(agent => {
|
|
43
|
+
logger.info(`${agent.name}: ${agent.detected ? '✓ Found' : '✗ Not found'}`);
|
|
44
|
+
if (options.verbose) {
|
|
45
|
+
agent.files.forEach(file => logger.debug(` - ${file}`));
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
spinner.fail('Detection failed');
|
|
52
|
+
logger.error(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqGrE"}
|