@oalacea/daemon 0.6.2 → 0.6.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AASH,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8D;;IASvF;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BxC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAyBhB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,GAAG,UAAU;CAQf"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AASH,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8D;;IASvF;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0DxC;;OAEG;IACH,OAAO,CAAC,QAAQ;IA+BhB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,GAAG,UAAU;CAQf"}
package/dist/cli/cli.js CHANGED
@@ -27,10 +27,40 @@ export class DaemonCli {
27
27
  */
28
28
  async run(argv) {
29
29
  const args = argv.slice(2); // Skip node and script path
30
- if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
30
+ if (args.length === 0) {
31
+ // No command provided - check if daemon is already initialized
32
+ const fs = await import('node:fs');
33
+ const path = await import('node:path');
34
+ const configExists = fs.existsSync(path.join(process.cwd(), 'daemon.config.json'));
35
+ if (!configExists) {
36
+ // Auto-run init for first-time users
37
+ logger.info('Welcome to Daemon! Initializing your project...');
38
+ logger.info('');
39
+ const initCommand = this.commands.get('init');
40
+ if (initCommand) {
41
+ try {
42
+ await initCommand.execute([]);
43
+ }
44
+ catch (error) {
45
+ logger.error('Initialization failed', error);
46
+ process.exit(1);
47
+ }
48
+ }
49
+ }
50
+ else {
51
+ // Already initialized, show help
52
+ this.showHelp();
53
+ }
54
+ return;
55
+ }
56
+ if (args[0] === '--help' || args[0] === '-h') {
31
57
  this.showHelp();
32
58
  return;
33
59
  }
60
+ if (args[0] === '--version') {
61
+ console.log('v0.6.4');
62
+ return;
63
+ }
34
64
  const commandName = args[0] ?? '';
35
65
  const commandArgs = args.slice(1);
36
66
  const command = this.commands.get(commandName);
@@ -52,13 +82,13 @@ export class DaemonCli {
52
82
  */
53
83
  showHelp() {
54
84
  console.log(`
55
- Daemon v0.6.2 - AI-powered automated testing toolkit
85
+ Daemon v0.6.4 - AI-powered automated testing toolkit
56
86
 
57
87
  USAGE:
58
88
  daemon <command> [options]
59
89
 
60
90
  COMMANDS:
61
- init Initialize project with Daemon
91
+ init Initialize project with Daemon (creates EXECUTE.md + Dockerfile.daemon)
62
92
  detect Detect project framework and tools
63
93
  test Generate and run tests
64
94
 
@@ -71,6 +101,12 @@ EXAMPLES:
71
101
  daemon detect
72
102
  daemon test --coverage
73
103
 
104
+ GETTING STARTED:
105
+ 1. Run "daemon init" to initialize your project
106
+ 2. Check EXECUTE.md for AI testing instructions
107
+ 3. Build Docker: docker build -t daemon-tools -f Dockerfile.daemon .
108
+ 4. Start container: docker run -d --name daemon-tools -v %cd:/app daemon-tools
109
+
74
110
  For more information, visit: https://github.com/Pamacea/daemon
75
111
  `);
76
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAazC;;;;GAIG;AACH,MAAM,OAAO,SAAS;IACH,QAAQ,CAA8D;IAEvF;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAA0D,CAAC;QAClF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,IAAc;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;QAExD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,QAAQ;QACd,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;KAqBX,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAIb;QACC,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;SAC9B,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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"}
@@ -26,16 +26,26 @@ export declare class InitCommand {
26
26
  */
27
27
  execute(args: string[]): Promise<void>;
28
28
  /**
29
- * Parse command line arguments
29
+ * Run detection and return context
30
30
  */
31
- private parseArgs;
31
+ private runDetection;
32
+ /**
33
+ * Generate prompt with context
34
+ */
35
+ private generatePrompt;
32
36
  /**
33
- * Create Daemon configuration
37
+ * Build context block for prompt
34
38
  */
35
- private createConfig;
39
+ private buildContextBlock;
36
40
  /**
37
- * Create test directories
41
+ * Generate fallback prompt
38
42
  */
39
- private createDirectories;
43
+ private generateFallbackPrompt;
44
+ private cyan;
45
+ private bold;
46
+ /**
47
+ * Parse command line arguments
48
+ */
49
+ private parseArgs;
40
50
  }
41
51
  //# sourceMappingURL=init.command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;;IAM7C;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B5C;;OAEG;IACH,OAAO,CAAC,SAAS;IA+BjB;;OAEG;YACW,YAAY;IAoB1B;;OAEG;YACW,iBAAiB;CAUhC"}
1
+ {"version":3,"file":"init.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyCH,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;;IAM7C;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4H5C;;OAEG;YACW,YAAY;IA4B1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiDzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAuD9B,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,OAAO,CAAC,SAAS;CA8BlB"}
@@ -6,10 +6,40 @@
6
6
  * @module cli/commands/init
7
7
  */
8
8
  import * as path from 'node:path';
9
+ import * as url from 'node:url';
10
+ import { execSync } from 'node:child_process';
11
+ import * as fs from 'node:fs';
9
12
  import { createLogger } from '../../shared/utils/logger.js';
10
- import { fileHelper } from '../../shared/utils/file-helper.js';
11
13
  import { FrameworkDetector } from '../../services/detection/framework-detector.js';
12
14
  const logger = createLogger('InitCommand');
15
+ // Get __dirname equivalent for ES modules
16
+ const __filename = url.fileURLToPath(import.meta.url);
17
+ const __dirname = path.dirname(__filename);
18
+ // Configuration
19
+ const CONFIG = {
20
+ IMAGE: 'daemon-tools',
21
+ CONTAINER: 'daemon-tools',
22
+ PROMPT_DEST: path.join(process.cwd(), '.daemon', 'EXECUTE.md'),
23
+ DOCKERFILE: path.resolve(__dirname, '../../../bin/Dockerfile'),
24
+ };
25
+ /**
26
+ * Run shell command with timeout
27
+ */
28
+ function run(cmd, options = {}) {
29
+ try {
30
+ return execSync(cmd, {
31
+ encoding: 'utf-8',
32
+ stdio: 'pipe',
33
+ timeout: options.timeout ?? 60000
34
+ }).trim();
35
+ }
36
+ catch (error) {
37
+ if (!options.silent && error.status !== null) {
38
+ logger.debug(`Command exited with code ${error.status}`);
39
+ }
40
+ return null;
41
+ }
42
+ }
13
43
  /**
14
44
  * Initialize command for Daemon
15
45
  */
@@ -22,29 +52,268 @@ export class InitCommand {
22
52
  * Execute the init command
23
53
  */
24
54
  async execute(args) {
25
- logger.info('Initializing Daemon...');
26
55
  const options = this.parseArgs(args);
27
56
  try {
28
- // Detect framework
29
- let framework = 'Unknown';
30
- if (!options.skipDetection) {
31
- const result = await this.detector.detect(process.cwd());
32
- framework = result.value ?? 'Unknown';
33
- logger.info(`Detected framework: ${framework}`);
57
+ logger.info('');
58
+ logger.info('═══════════════════════════════════════════════════');
59
+ logger.info(' Daemon - AI-Powered Test Generation');
60
+ logger.info('═══════════════════════════════════════════════════');
61
+ logger.info('');
62
+ logger.info(' Automated testing toolkit for web applications');
63
+ logger.info('');
64
+ // --- Step 1: Check Docker ---
65
+ logger.info(' → Checking Docker...');
66
+ if (run('docker info', { silent: true }) === null) {
67
+ logger.error('');
68
+ logger.error(' Docker is not running.');
69
+ logger.error('');
70
+ logger.error(' Start Docker Desktop (or the Docker daemon) and try again.');
71
+ logger.error('');
72
+ logger.error(' Install Docker: https://docs.docker.com/get-docker/');
73
+ throw new Error('Docker not running');
74
+ }
75
+ logger.success(' Docker is running');
76
+ // --- Step 2: Build image if missing ---
77
+ const imageExists = run(`docker images -q ${CONFIG.IMAGE}`);
78
+ if (!imageExists) {
79
+ logger.info('');
80
+ logger.warn(' ◆ The testing toolkit needs to be installed (~500 MB Docker image).');
81
+ logger.info(' This only happens once.');
82
+ logger.info('');
83
+ logger.info(' → Building testing toolkit...');
84
+ logger.info(' This may take 2-3 minutes on first run...');
85
+ logger.info('');
86
+ const buildCmd = `docker build -t ${CONFIG.IMAGE} -f "${CONFIG.DOCKERFILE}" "${path.dirname(CONFIG.DOCKERFILE)}"`;
87
+ try {
88
+ execSync(buildCmd, { stdio: 'inherit', timeout: 600000 });
89
+ }
90
+ catch {
91
+ throw new Error(`Failed to build toolkit. Try: ${buildCmd}`);
92
+ }
93
+ logger.success(' Testing toolkit installed');
94
+ }
95
+ else {
96
+ logger.success(' Testing toolkit ready');
97
+ }
98
+ // --- Step 3: Start container if not running ---
99
+ const containerRunning = run(`docker ps --filter "name=^${CONFIG.CONTAINER}$" --format "{{.Names}}"`);
100
+ if (containerRunning === CONFIG.CONTAINER) {
101
+ logger.success(` Toolkit container running (${CONFIG.CONTAINER})`);
102
+ }
103
+ else {
104
+ const containerExists = run(`docker ps -a --filter "name=^${CONFIG.CONTAINER}$" --format "{{.Names}}"`);
105
+ if (containerExists === CONFIG.CONTAINER) {
106
+ process.stdout.write(' → Starting toolkit container...');
107
+ if (run(`docker start ${CONFIG.CONTAINER}`, { timeout: 30000 }) === null) {
108
+ logger.error('');
109
+ throw new Error('Failed to start container');
110
+ }
111
+ logger.info(' done');
112
+ }
113
+ else {
114
+ const isLinux = process.platform === 'linux';
115
+ const networkFlag = isLinux ? '--network=host' : '';
116
+ process.stdout.write(` → Creating toolkit container (${CONFIG.CONTAINER})...`);
117
+ const runCmd = `docker run -d --name ${CONFIG.CONTAINER} ${networkFlag} ${CONFIG.IMAGE}`.replace(/\s+/g, ' ');
118
+ if (run(runCmd, { timeout: 30000 }) === null) {
119
+ logger.error('');
120
+ throw new Error(`Failed to create container. Try: ${runCmd}`);
121
+ }
122
+ logger.info(' done');
123
+ }
124
+ logger.success(` Toolkit container running (${CONFIG.CONTAINER})`);
34
125
  }
35
- // Create daemon config
36
- await this.createConfig(options);
37
- // Create test directories
38
- await this.createDirectories(options);
39
- logger.success('Daemon initialized successfully!');
40
- logger.info('Run "daemon detect" to see project details');
41
- logger.info('Run "daemon test" to generate tests');
126
+ // --- Step 4: Run detection ---
127
+ logger.info(' → Analyzing project...');
128
+ const context = await this.runDetection(options);
129
+ // --- Step 5: Create daemon directory and prompt ---
130
+ const daemonDir = path.dirname(CONFIG.PROMPT_DEST);
131
+ if (!fs.existsSync(daemonDir)) {
132
+ fs.mkdirSync(daemonDir, { recursive: true });
133
+ }
134
+ const prompt = this.generatePrompt(context);
135
+ fs.writeFileSync(CONFIG.PROMPT_DEST, prompt, 'utf-8');
136
+ logger.success(` Prompt installed to ${this.bold('./.daemon/EXECUTE.md')}`);
137
+ // --- Step 6: Print summary ---
138
+ logger.info('');
139
+ logger.info(' Detected Configuration:');
140
+ logger.info(` Framework: ${this.cyan(context.framework ?? 'Unknown')}`);
141
+ logger.info(` Language: ${this.cyan(context.language ?? 'JavaScript/TypeScript')}`);
142
+ logger.info(` Test Runner: ${this.cyan(context.testRunner ?? 'Vitest')}`);
143
+ if (context.database) {
144
+ logger.info(` Database: ${this.cyan(context.database.type)}`);
145
+ logger.info(` Connection: ${this.cyan(context.database.connection)}`);
146
+ }
147
+ logger.info(` Existing: ${this.cyan((context.existingTests ?? 0) + ' tests')}`);
148
+ logger.info(` Target: ${this.cyan(context.target ?? 'http://localhost:3000')}`);
149
+ logger.info('');
150
+ // --- Step 7: Print instructions ---
151
+ logger.success(' Ready! Open your AI agent from your project directory and paste:');
152
+ logger.info('');
153
+ logger.info(` ${this.cyan('Read ./.daemon/EXECUTE.md and start the testing process')}`);
154
+ logger.info('');
155
+ logger.info(' Works with Claude Code, Cursor, Windsurf, Aider, Codex...');
156
+ logger.info('');
42
157
  }
43
158
  catch (error) {
44
159
  logger.error('Failed to initialize Daemon', error);
45
160
  throw error;
46
161
  }
47
162
  }
163
+ /**
164
+ * Run detection and return context
165
+ */
166
+ async runDetection(options) {
167
+ if (!options.skipDetection) {
168
+ const result = await this.detector.detect(process.cwd());
169
+ return {
170
+ framework: result.value ?? 'Unknown',
171
+ language: 'JavaScript/TypeScript',
172
+ testRunner: 'Vitest',
173
+ database: null,
174
+ existingTests: 0,
175
+ coverage: null,
176
+ dependencies: [],
177
+ target: 'http://localhost:3000'
178
+ };
179
+ }
180
+ // Default context
181
+ return {
182
+ framework: 'Unknown',
183
+ language: 'JavaScript/TypeScript',
184
+ testRunner: 'Vitest',
185
+ database: null,
186
+ existingTests: 0,
187
+ coverage: null,
188
+ dependencies: [],
189
+ target: 'http://localhost:3000'
190
+ };
191
+ }
192
+ /**
193
+ * Generate prompt with context
194
+ */
195
+ generatePrompt(context) {
196
+ const promptSrc = path.resolve(__dirname, '../../../prompts/EXECUTE.md');
197
+ if (!fs.existsSync(promptSrc)) {
198
+ return this.generateFallbackPrompt(context);
199
+ }
200
+ const basePrompt = fs.readFileSync(promptSrc, 'utf-8');
201
+ const contextBlock = this.buildContextBlock(context);
202
+ return contextBlock + '\n' + basePrompt;
203
+ }
204
+ /**
205
+ * Build context block for prompt
206
+ */
207
+ buildContextBlock(context) {
208
+ const lines = [
209
+ '> **DETECTED CONTEXT**'
210
+ ];
211
+ if (context.framework) {
212
+ lines.push(`> Framework: ${context.framework}`);
213
+ }
214
+ if (context.language) {
215
+ lines.push(`> Language: ${context.language}`);
216
+ }
217
+ if (context.testRunner) {
218
+ lines.push(`> Test Runner: ${context.testRunner}`);
219
+ }
220
+ if (context.database) {
221
+ lines.push(`> Database: ${context.database.type ?? 'detected'}`);
222
+ lines.push(`> DB Connection: ${context.database.connection ?? 'DATABASE_URL'}`);
223
+ lines.push(`> Test Strategy: Transaction rollback (do not modify real data)`);
224
+ }
225
+ else {
226
+ lines.push(`> Database: none detected`);
227
+ }
228
+ lines.push(`> Existing Tests: ${context.existingTests ?? 0} found`);
229
+ if (context.coverage) {
230
+ lines.push(`> Current Coverage: ${context.coverage}`);
231
+ }
232
+ if (context.dependencies && context.dependencies.length > 0) {
233
+ lines.push(`> Key Dependencies: ${context.dependencies.join(', ')}`);
234
+ }
235
+ lines.push(`> Target: ${context.target ?? 'http://localhost:3000'}`);
236
+ lines.push('');
237
+ lines.push('> **IMPORTANT**:');
238
+ lines.push('> - Use this detected context. Do not re-detect.');
239
+ lines.push('> - Always read source code before generating tests.');
240
+ lines.push('> - Run tests to verify they work before declaring success.');
241
+ if (context.database) {
242
+ lines.push('> - Use transaction rollback for DB tests - never modify real data.');
243
+ }
244
+ lines.push('');
245
+ lines.push('> **WORKFLOW**:');
246
+ lines.push('> 1. Read ./.daemon/EXECUTE.md for full instructions');
247
+ lines.push('> 2. Generate tests following the detected patterns');
248
+ lines.push('> 3. Run tests via Docker container');
249
+ lines.push('> 4. Fix failures iteratively until all pass');
250
+ lines.push('> 5. Generate final report');
251
+ lines.push('');
252
+ return lines.join('\n');
253
+ }
254
+ /**
255
+ * Generate fallback prompt
256
+ */
257
+ generateFallbackPrompt(context) {
258
+ return `# Daemon — Automated Testing Process
259
+
260
+ > **DETECTED CONTEXT**
261
+ > Framework: ${context.framework ?? 'Unknown'}
262
+ > Language: ${context.language ?? 'JavaScript/TypeScript'}
263
+ > Test Runner: ${context.testRunner ?? 'Vitest'}
264
+ > Database: ${context.database?.type ?? 'none'}
265
+ > Target: ${context.target ?? 'http://localhost:3000'}
266
+
267
+ ## Instructions
268
+
269
+ This is the automated testing agent. Follow these steps:
270
+
271
+ 1. **Read the project structure** - Understand the framework and patterns
272
+ 2. **Generate unit tests** - For components, hooks, utilities
273
+ 3. **Generate integration tests** - For API routes and database operations
274
+ 4. **Generate E2E tests** - For critical user flows
275
+ 5. **Run and fix** - Iteratively fix failing tests
276
+
277
+ ## Testing Templates
278
+
279
+ ### Unit Tests
280
+ \`\`\`typescript
281
+ import { render, screen } from '@testing-library/react';
282
+ import { describe, it, expect } from 'vitest';
283
+
284
+ describe('Component', () => {
285
+ it('should render', () => {
286
+ render(<Component />);
287
+ expect(screen.getByRole('button')).toBeInTheDocument();
288
+ });
289
+ });
290
+ \`\`\`
291
+
292
+ ## Fix Loop
293
+
294
+ When tests fail:
295
+ 1. Analyze the error
296
+ 2. Determine if it's a test issue or code bug
297
+ 3. Apply fix
298
+ 4. Re-test
299
+
300
+ ## Completion
301
+
302
+ Report:
303
+ \`\`\`
304
+ ✓ Unit Tests: X created, Y passing
305
+ ✓ Integration: X created, Y passing
306
+ ✓ E2E: X created, Y passing
307
+ \`\`\`
308
+ `;
309
+ }
310
+ // Helper functions for styling
311
+ cyan(text) {
312
+ return `\x1b[36m${text}\x1b[0m`;
313
+ }
314
+ bold(text) {
315
+ return `\x1b[1m${text}\x1b[0m`;
316
+ }
48
317
  /**
49
318
  * Parse command line arguments
50
319
  */
@@ -77,35 +346,5 @@ export class InitCommand {
77
346
  }
78
347
  return options;
79
348
  }
80
- /**
81
- * Create Daemon configuration
82
- */
83
- async createConfig(options) {
84
- const configPath = path.join(process.cwd(), 'daemon.config.json');
85
- if (await fileHelper.exists(configPath) && !options.force) {
86
- logger.warn('Daemon config already exists. Use --force to overwrite.');
87
- return;
88
- }
89
- const config = {
90
- version: '0.6.0',
91
- testRunner: 'vitest',
92
- e2eRunner: 'playwright',
93
- performanceTool: 'k6',
94
- generatedAt: new Date().toISOString(),
95
- };
96
- await fileHelper.writeJson(configPath, config);
97
- logger.debug(`Created config: ${configPath}`);
98
- }
99
- /**
100
- * Create test directories
101
- */
102
- async createDirectories(options) {
103
- const baseDir = options.output ?? path.join(process.cwd(), 'tests');
104
- await fileHelper.ensureDir(baseDir);
105
- await fileHelper.ensureDir(path.join(baseDir, 'unit'));
106
- await fileHelper.ensureDir(path.join(baseDir, 'integration'));
107
- await fileHelper.ensureDir(path.join(baseDir, 'e2e'));
108
- logger.debug(`Created test directories in: ${baseDir}`);
109
- }
110
349
  }
111
350
  //# sourceMappingURL=init.command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oalacea/daemon",
3
- "version": "0.6.2",
3
+ "version": "0.6.4",
4
4
  "description": "AI-powered automated test generation and remediation for web applications",
5
5
  "author": "Yanis",
6
6
  "license": "MIT",