devforgeai 1.0.9 → 1.0.10

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devforgeai",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "description": "DevForgeAI is a spec-driven development framework designed to enable AI-assisted software development with zero technical debt through automated validation, architectural constraints enforcement, and test-driven development workflows.",
5
5
  "keywords": [
6
6
  "ai",
@@ -1,4 +1,6 @@
1
1
  const path = require('path');
2
+ const fs = require('fs');
3
+ const fsp = fs.promises;
2
4
  const { OutputFormatter } = require('../wizard/output-formatter');
3
5
  const { ProgressService } = require('../wizard/progress-service');
4
6
  const { SignalHandler } = require('../wizard/signal-handler');
@@ -176,13 +178,28 @@ async function action(directory, opts) {
176
178
  }
177
179
  }
178
180
 
179
- // Python CLI pip install
181
+ // Python CLI pip install (uses venv to avoid PEP 668 externally-managed errors)
180
182
  if (selectedComponents.includes('python-cli')) {
181
183
  progress.updateSpinnerText('Installing Python CLI...');
182
184
  try {
183
185
  const { execSync } = require('child_process');
184
186
  const scriptsDir = path.join(installDir, '.claude', 'scripts');
185
- execSync(`pip install -e "${scriptsDir}"`, { stdio: 'pipe', cwd: installDir });
187
+ const venvDir = path.join(installDir, '.venv');
188
+
189
+ // Create venv if it doesn't exist
190
+ try {
191
+ await fsp.access(path.join(venvDir, 'bin', 'pip'));
192
+ } catch {
193
+ execSync(`python3 -m venv "${venvDir}"`, { stdio: 'pipe', cwd: installDir });
194
+ }
195
+
196
+ // Install into venv
197
+ const venvPip = path.join(venvDir, 'bin', 'pip');
198
+ execSync(`"${venvPip}" install -e "${scriptsDir}"`, { stdio: 'pipe', cwd: installDir });
199
+
200
+ if (!opts.quiet) {
201
+ formatter.info('Python CLI installed in .venv/ — activate with: source .venv/bin/activate');
202
+ }
186
203
  } catch (e) {
187
204
  formatter.warning(`Python CLI install failed: ${e.message}`);
188
205
  }
@@ -225,9 +242,9 @@ async function action(directory, opts) {
225
242
  console.log(` Dirs: ${stats.directoriesCreated}`);
226
243
  console.log('');
227
244
  formatter.info('Next steps:');
228
- console.log(' 1. Review and customize context files in devforgeai/specs/context/');
245
+ console.log(' 1. Run /create-context to generate your project context files');
229
246
  console.log(' 2. Run /brainstorm to start your first project');
230
- console.log(' 3. See README.md for full documentation');
247
+ console.log(' 3. See docs/ for guides and documentation');
231
248
  console.log('');
232
249
  }
233
250
  } catch (error) {