@wundr.io/cli 1.0.1 → 1.0.2-dev.20260530180455.e1307186

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.
Files changed (69) hide show
  1. package/bin/wundr.js +13 -5
  2. package/package.json +30 -9
  3. package/src/ai/ai-service.ts +6 -4
  4. package/src/ai/claude-client.ts +6 -2
  5. package/src/ai/conversation-manager.ts +12 -5
  6. package/src/cli.ts +42 -13
  7. package/src/commands/ai.ts +340 -64
  8. package/src/commands/alignment.ts +1212 -0
  9. package/src/commands/analyze-optimized.ts +371 -33
  10. package/src/commands/analyze.ts +8 -6
  11. package/src/commands/batch.ts +166 -26
  12. package/src/commands/chat.ts +20 -10
  13. package/src/commands/claude-init.ts +31 -27
  14. package/src/commands/claude-setup.ts +761 -81
  15. package/src/commands/computer-setup.ts +524 -12
  16. package/src/commands/create-command.ts +3 -3
  17. package/src/commands/create.ts +9 -6
  18. package/src/commands/dashboard.ts +11 -6
  19. package/src/commands/govern.ts +11 -6
  20. package/src/commands/governance.ts +1005 -0
  21. package/src/commands/guardian.ts +887 -0
  22. package/src/commands/init.ts +104 -11
  23. package/src/commands/orchestrator.ts +789 -0
  24. package/src/commands/performance-optimizer.ts +15 -10
  25. package/src/commands/plugins.ts +8 -5
  26. package/src/commands/project-update.ts +1156 -0
  27. package/src/commands/rag.ts +1011 -0
  28. package/src/commands/session.ts +631 -0
  29. package/src/commands/setup.ts +42 -344
  30. package/src/commands/test-init.ts +3 -2
  31. package/src/commands/test.ts +3 -2
  32. package/src/commands/watch.ts +21 -11
  33. package/src/commands/worktree.ts +1057 -0
  34. package/src/context/context-manager.ts +5 -2
  35. package/src/context/session-manager.ts +18 -7
  36. package/src/framework/command-interface.ts +520 -0
  37. package/src/framework/command-registry.ts +942 -0
  38. package/src/framework/completion-exporter.ts +383 -0
  39. package/src/framework/debug-logger.ts +519 -0
  40. package/src/framework/error-handler.ts +867 -0
  41. package/src/framework/help-generator.ts +540 -0
  42. package/src/framework/index.ts +169 -0
  43. package/src/framework/interactive-repl.ts +703 -0
  44. package/src/framework/output-formatter.ts +834 -0
  45. package/src/framework/progress-manager.ts +539 -0
  46. package/src/index.ts +3 -2
  47. package/src/interactive/interactive-mode.ts +14 -7
  48. package/src/lib/conflict-resolution.ts +818 -0
  49. package/src/lib/merge-strategy.ts +550 -0
  50. package/src/lib/safety-mechanisms.ts +451 -0
  51. package/src/lib/state-detection.ts +1030 -0
  52. package/src/nlp/command-mapper.ts +8 -3
  53. package/src/nlp/command-parser.ts +5 -2
  54. package/src/nlp/intent-parser.ts +23 -9
  55. package/src/plugins/plugin-manager.ts +50 -24
  56. package/src/tests/computer-setup-integration.test.ts +46 -15
  57. package/src/types/index.ts +1 -1
  58. package/src/types/modules.d.ts +425 -1
  59. package/src/utils/backup-rollback-manager.ts +19 -14
  60. package/src/utils/claude-config-installer.ts +119 -28
  61. package/src/utils/config-manager.ts +9 -6
  62. package/src/utils/error-handler.ts +3 -1
  63. package/src/utils/logger.ts +35 -12
  64. package/templates/batch/ci-cd.yaml +7 -7
  65. package/test-suites/api/health.spec.ts +20 -23
  66. package/test-suites/helpers/test-config.ts +14 -13
  67. package/test-suites/ui/accessibility.spec.ts +27 -22
  68. package/test-suites/ui/smoke.spec.ts +26 -21
  69. package/src/commands/computer-setup-commands.ts +0 -869
package/bin/wundr.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * Wundr CLI Entry Point
5
- *
5
+ *
6
6
  * This is the main executable for the Wundr CLI tool.
7
7
  * It handles cross-platform compatibility and bootstraps the CLI.
8
8
  */
@@ -26,14 +26,22 @@ if (isDevelopment && existsSync(srcPath)) {
26
26
  if (existsSync(distPath)) {
27
27
  require(distPath);
28
28
  } else {
29
- console.error('No compiled JavaScript found. Please run "npm run build" first.');
29
+ console.error(
30
+ 'No compiled JavaScript found. Please run "npm run build" first.'
31
+ );
30
32
  process.exit(1);
31
33
  }
32
34
  }
33
35
  } else if (existsSync(distPath)) {
34
36
  // Production: use compiled JavaScript
35
- require(distPath);
37
+ const cli = require(distPath);
38
+ // Call main() since require.main check in index.js won't trigger
39
+ if (typeof cli.main === 'function') {
40
+ cli.main();
41
+ }
36
42
  } else {
37
- console.error('Wundr CLI not properly installed. Please reinstall the package.');
43
+ console.error(
44
+ 'Wundr CLI not properly installed. Please reinstall the package.'
45
+ );
38
46
  process.exit(1);
39
- }
47
+ }
package/package.json CHANGED
@@ -1,8 +1,15 @@
1
1
  {
2
2
  "name": "@wundr.io/cli",
3
- "version": "1.0.1",
3
+ "version": "1.0.2-dev.20260530180455.e1307186",
4
4
  "description": "Unified CLI framework for the Wundr platform",
5
- "keywords": ["wundr", "cli", "commander", "interactive", "tui", "automation"],
5
+ "keywords": [
6
+ "wundr",
7
+ "cli",
8
+ "commander",
9
+ "interactive",
10
+ "tui",
11
+ "automation"
12
+ ],
6
13
  "homepage": "https://wundr.io",
7
14
  "bugs": {
8
15
  "url": "https://github.com/adapticai/wundr/issues"
@@ -23,7 +30,14 @@
23
30
  "bin": {
24
31
  "wundr": "./bin/wundr.js"
25
32
  },
26
- "files": ["dist", "bin", "src", "templates", "test-suites", "README.md"],
33
+ "files": [
34
+ "dist",
35
+ "bin",
36
+ "src",
37
+ "templates",
38
+ "test-suites",
39
+ "README.md"
40
+ ],
27
41
  "scripts": {
28
42
  "build": "tsc",
29
43
  "build:watch": "tsc --watch",
@@ -37,18 +51,24 @@
37
51
  "typecheck": "tsc --noEmit"
38
52
  },
39
53
  "dependencies": {
54
+ "@axe-core/playwright": "^4.10.0",
40
55
  "@oclif/core": "^3.15.0",
41
56
  "@oclif/plugin-help": "^6.0.0",
42
57
  "@oclif/plugin-plugins": "^4.1.0",
58
+ "@playwright/test": "^1.48.0",
43
59
  "@types/axios": "^0.9.36",
44
60
  "@types/open": "^6.2.1",
45
- "@wundr.io/computer-setup": "^1.0.0",
46
- "@wundr.io/config": "^1.0.0",
47
- "@wundr.io/core": "^1.0.0",
61
+ "@wundr.io/computer-setup": "^1.0.2-dev.20260530180455.e1307186",
62
+ "@wundr.io/config": "^1.0.2-dev.20260530180455.e1307186",
63
+ "@wundr.io/core": "^1.0.2-dev.20260530180455.e1307186",
64
+ "@wundr.io/governance": "^1.0.2-dev.20260530180455.e1307186",
65
+ "@wundr.io/guardian-dashboard": "^1.0.2-dev.20260530180455.e1307186",
66
+ "@wundr.io/vp-daemon": "^1.0.6",
48
67
  "axios": "^1.11.0",
49
68
  "blessed": "^0.1.81",
50
69
  "blessed-contrib": "^4.11.0",
51
70
  "chalk": "^5.3.0",
71
+ "chokidar": "^3.5.3",
52
72
  "commander": "^11.1.0",
53
73
  "conf": "^12.0.0",
54
74
  "execa": "^8.0.1",
@@ -60,8 +80,6 @@
60
80
  "node-pty": "^1.0.0",
61
81
  "open": "^10.2.0",
62
82
  "ora": "^8.0.1",
63
- "@playwright/test": "^1.48.0",
64
- "@axe-core/playwright": "^4.10.0",
65
83
  "prompts": "^2.4.2",
66
84
  "rxjs": "^7.8.1",
67
85
  "terminal-kit": "^3.0.1",
@@ -90,7 +108,10 @@
90
108
  "bin": "wundr",
91
109
  "dirname": "wundr",
92
110
  "commands": "./dist/commands",
93
- "plugins": ["@oclif/plugin-help", "@oclif/plugin-plugins"],
111
+ "plugins": [
112
+ "@oclif/plugin-help",
113
+ "@oclif/plugin-plugins"
114
+ ],
94
115
  "topicSeparator": ":",
95
116
  "topics": {
96
117
  "init": {
@@ -1,7 +1,9 @@
1
- import { ClaudeClient, ClaudeMessage } from './claude-client';
2
- import { ConfigManager } from '../utils/config-manager';
1
+ import { ClaudeClient } from './claude-client';
3
2
  import { logger } from '../utils/logger';
4
- import { ChatSession, ChatMessage } from '../types';
3
+
4
+ import type { ChatSession, ChatMessage } from '../types';
5
+ import type { ClaudeMessage } from './claude-client';
6
+ import type { ConfigManager } from '../utils/config-manager';
5
7
 
6
8
  /**
7
9
  * AI service configuration
@@ -489,7 +491,7 @@ export class AIService {
489
491
 
490
492
  if (!configuredKey) {
491
493
  throw new Error(
492
- `AI API key not configured.\n\nTo set up AI features:\n1. Run: wundr ai setup\n2. Or set environment variable: export CLAUDE_API_KEY=your_key_here\n3. Or add to config: wundr ai config set apiKey your_key_here`
494
+ 'AI API key not configured.\n\nTo set up AI features:\n1. Run: wundr ai setup\n2. Or set environment variable: export CLAUDE_API_KEY=your_key_here\n3. Or add to config: wundr ai config set apiKey your_key_here'
493
495
  );
494
496
  }
495
497
 
@@ -1,6 +1,8 @@
1
1
  import axios from 'axios';
2
+
2
3
  import { logger } from '../utils/logger';
3
- import { WundrError } from '../types';
4
+
5
+ import type { WundrError } from '../types';
4
6
 
5
7
  /**
6
8
  * Claude API client configuration
@@ -183,7 +185,9 @@ export class ClaudeClient {
183
185
  for (const line of lines) {
184
186
  if (line.startsWith('data: ')) {
185
187
  const data = line.slice(6);
186
- if (data === '[DONE]') return;
188
+ if (data === '[DONE]') {
189
+ return;
190
+ }
187
191
 
188
192
  try {
189
193
  const parsed: ClaudeStreamChunk = JSON.parse(data);
@@ -1,10 +1,13 @@
1
1
  import { EventEmitter } from 'events';
2
- import fs from 'fs-extra';
3
2
  import path from 'path';
4
- import { ClaudeClient, ClaudeMessage } from './claude-client';
5
- import { ChatSession, ChatMessage } from '../types';
3
+
4
+ import fs from 'fs-extra';
5
+
6
6
  import { logger } from '../utils/logger';
7
7
 
8
+ import type { ClaudeClient, ClaudeMessage } from './claude-client';
9
+ import type { ChatSession, ChatMessage } from '../types';
10
+
8
11
  /**
9
12
  * Configuration for conversation management
10
13
  */
@@ -439,7 +442,9 @@ export class ConversationManager extends EventEmitter {
439
442
  getSessionStats(sessionId?: string): any {
440
443
  if (sessionId) {
441
444
  const session = this.activeSessions.get(sessionId);
442
- if (!session) return null;
445
+ if (!session) {
446
+ return null;
447
+ }
443
448
 
444
449
  return {
445
450
  messageCount: session.history.length,
@@ -660,7 +665,9 @@ export class ConversationManager extends EventEmitter {
660
665
  const recent = messages.slice(-recentCount);
661
666
  const older = messages.slice(0, -recentCount);
662
667
 
663
- if (older.length === 0) return recent;
668
+ if (older.length === 0) {
669
+ return recent;
670
+ }
664
671
 
665
672
  const summary: ChatMessage = {
666
673
  role: 'system',
package/src/cli.ts CHANGED
@@ -1,26 +1,36 @@
1
1
  import { Command } from 'commander';
2
+
2
3
  import { version } from '../package.json';
3
- import { InteractiveMode } from './interactive/interactive-mode';
4
- import { PluginManager } from './plugins/plugin-manager';
5
- import { ConfigManager } from './utils/config-manager';
6
- import { logger } from './utils/logger';
7
4
 
8
5
  // Import command modules
9
- import { InitCommands } from './commands/init';
10
- import { CreateCommands } from './commands/create';
11
- import { AnalyzeCommands } from './commands/analyze';
12
- import { GovernCommands } from './commands/govern';
13
6
  import { AICommands } from './commands/ai';
14
- import { DashboardCommands } from './commands/dashboard';
15
- import { WatchCommands } from './commands/watch';
7
+ import { AnalyzeCommands } from './commands/analyze';
16
8
  import { BatchCommands } from './commands/batch';
17
9
  import { ChatCommands } from './commands/chat';
10
+ import claudeInitCommand from './commands/claude-init';
11
+ import claudeSetupCommand from './commands/claude-setup';
12
+ import { createComputerSetupCommand } from './commands/computer-setup';
13
+ import { CreateCommands } from './commands/create';
14
+ import { createGuardianCommand } from './commands/guardian';
15
+ import { createRAGCommand } from './commands/rag';
16
+ import { createSessionCommand } from './commands/session';
17
+ import { createOrchestratorCommand } from './commands/orchestrator';
18
+ import { createWorktreeCommand } from './commands/worktree';
19
+ import { DashboardCommands } from './commands/dashboard';
20
+ import { GovernCommands } from './commands/govern';
21
+ import {
22
+ createGovernanceCommand,
23
+ createAlignmentCommand,
24
+ } from './commands/governance';
25
+ import { InitCommands } from './commands/init';
18
26
  import { PluginCommands } from './commands/plugins';
19
27
  import { SetupCommands } from './commands/setup';
20
- import { createComputerSetupCommand } from './commands/computer-setup';
21
28
  import { createTestCommand } from './commands/test';
22
- import claudeInitCommand from './commands/claude-init';
23
- import claudeSetupCommand from './commands/claude-setup';
29
+ import { WatchCommands } from './commands/watch';
30
+ import { InteractiveMode } from './interactive/interactive-mode';
31
+ import { PluginManager } from './plugins/plugin-manager';
32
+ import { ConfigManager } from './utils/config-manager';
33
+ import { logger } from './utils/logger';
24
34
 
25
35
  /**
26
36
  * Main CLI class that orchestrates all commands and modes
@@ -85,6 +95,10 @@ The Unified Developer Platform
85
95
  new AnalyzeCommands(this.program, this.configManager, this.pluginManager);
86
96
  new GovernCommands(this.program, this.configManager, this.pluginManager);
87
97
 
98
+ // IPRE Governance Commands (governance/gov, alignment)
99
+ this.program.addCommand(createGovernanceCommand());
100
+ this.program.addCommand(createAlignmentCommand());
101
+
88
102
  // Project Management
89
103
  new InitCommands(this.program, this.configManager, this.pluginManager);
90
104
  new CreateCommands(this.program, this.configManager, this.pluginManager);
@@ -100,6 +114,21 @@ The Unified Developer Platform
100
114
  // Testing
101
115
  this.program.addCommand(createTestCommand());
102
116
 
117
+ // RAG (Retrieval-Augmented Generation)
118
+ this.program.addCommand(createRAGCommand());
119
+
120
+ // Session Management
121
+ this.program.addCommand(createSessionCommand());
122
+
123
+ // Orchestrator Daemon Management
124
+ this.program.addCommand(createOrchestratorCommand());
125
+
126
+ // Guardian Dashboard
127
+ this.program.addCommand(createGuardianCommand());
128
+
129
+ // Worktree Management
130
+ this.program.addCommand(createWorktreeCommand());
131
+
103
132
  // Interactive Modes
104
133
  new ChatCommands(this.program, this.configManager, this.pluginManager);
105
134