@pjmendonca/devflow 1.10.1 → 1.10.2

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 CHANGED
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.10.2] - 2025-12-24
9
+
10
+ ### Fixed
11
+ - **npx Command** - Fixed "could not determine executable to run" error when running `npx @pjmendonca/devflow`
12
+ - Added main `devflow` bin entry to package.json
13
+ - Created bin/devflow.js as smart entry point with context detection
14
+ - Outside Devflow project: automatically scaffolds new project
15
+ - Inside Devflow project: shows help and dispatches to commands
16
+ - Simplified workflow: single command for both setup and usage
17
+
8
18
  ## [1.10.1] - 2025-12-24
9
19
 
10
20
  ### Fixed
package/README.md CHANGED
@@ -532,7 +532,7 @@ Free to use in commercial and personal projects.
532
532
 
533
533
 
534
534
  <!-- VERSION_START - Auto-updated by update_version.py -->
535
- **Version**: 1.10.1
535
+ **Version**: 1.10.2
536
536
  **Status**: Production Ready
537
537
  **Last Updated**: 2025-12-24
538
538
  <!-- VERSION_END -->
package/bin/devflow.js ADDED
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const { spawn } = require('child_process');
6
+
7
+ const commands = {
8
+ 'init': 'Initialize Devflow in your project',
9
+ 'story': 'Run full story pipeline (context + dev + review)',
10
+ 'collab': 'Run collaborative story with mode selection',
11
+ 'checkpoint': 'Create or restore context checkpoints',
12
+ 'memory': 'View or query shared agent memory',
13
+ 'cost': 'View cost dashboard and spending analytics',
14
+ 'validate': 'Validate project configuration',
15
+ 'create-persona': 'Create a new agent persona',
16
+ 'personalize': 'Personalize agent behavior with guided wizard',
17
+ 'validate-overrides': 'Validate override configurations',
18
+ 'new-doc': 'Create new documentation',
19
+ 'tech-debt': 'Analyze and track technical debt',
20
+ 'setup-checkpoint': 'Setup checkpoint system',
21
+ 'version': 'Show version information'
22
+ };
23
+
24
+ /**
25
+ * Check if we're in a Devflow project
26
+ */
27
+ function isInDevflowProject() {
28
+ const indicators = [
29
+ 'tooling/.automation',
30
+ 'tooling/scripts',
31
+ '.claude'
32
+ ];
33
+
34
+ return indicators.some(indicator => fs.existsSync(path.join(process.cwd(), indicator)));
35
+ }
36
+
37
+ /**
38
+ * Show help message
39
+ */
40
+ function showHelp() {
41
+ console.log('Devflow - Development workflow automation with Claude Code\n');
42
+ console.log('Usage: devflow <command> [options]\n');
43
+ console.log('Available commands:\n');
44
+
45
+ Object.entries(commands).forEach(([cmd, desc]) => {
46
+ console.log(` ${cmd.padEnd(20)} ${desc}`);
47
+ });
48
+
49
+ console.log('\nRun "devflow <command> --help" for more information on a command.');
50
+ console.log('\nGet started: devflow init');
51
+ }
52
+
53
+ const args = process.argv.slice(2);
54
+
55
+ // If no arguments or --help, check if we're in a project
56
+ if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
57
+ if (!isInDevflowProject()) {
58
+ // Not in a project - run scaffolder
59
+ console.log('No Devflow project detected. Running project scaffolder...\n');
60
+ const createScript = require.resolve('./create-devflow.js');
61
+ const child = spawn('node', [createScript], { stdio: 'inherit' });
62
+ child.on('exit', (code) => process.exit(code || 0));
63
+ } else {
64
+ // In a project - show help
65
+ showHelp();
66
+ process.exit(0);
67
+ }
68
+ } else {
69
+ // Command provided
70
+ const command = args[0];
71
+
72
+ if (commands[command]) {
73
+ const binPath = require.resolve(`./devflow-${command}.js`);
74
+ const child = spawn('node', [binPath, ...args.slice(1)], { stdio: 'inherit' });
75
+ child.on('exit', (code) => process.exit(code || 0));
76
+ } else {
77
+ console.error(`Unknown command: ${command}`);
78
+ console.error('Run "devflow --help" to see available commands.');
79
+ process.exit(1);
80
+ }
81
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pjmendonca/devflow",
3
- "version": "1.10.1",
3
+ "version": "1.10.2",
4
4
  "description": "Development workflow automation with Claude Code - agent-based development system with cost tracking",
5
5
  "keywords": [
6
6
  "devflow",
@@ -24,6 +24,7 @@
24
24
  "name": "Pedro Jose da Rocha Mendonca"
25
25
  },
26
26
  "bin": {
27
+ "devflow": "bin/devflow.js",
27
28
  "create-devflow": "bin/create-devflow.js",
28
29
  "devflow-cost": "bin/devflow-cost.js",
29
30
  "devflow-validate": "bin/devflow-validate.js",
@@ -18,7 +18,7 @@ Usage:
18
18
  from lib.agent_router import AgentRouter
19
19
  """
20
20
 
21
- __version__ = "1.10.1"
21
+ __version__ = "1.10.2"
22
22
 
23
23
  # Lazy imports to avoid circular dependencies
24
24
  __all__ = [