ultra-dex 3.5.0 → 3.7.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.
Files changed (148) hide show
  1. package/assets/hooks/pre-push +26 -0
  2. package/assets/live-templates/astro-sanity/.env.example +3 -0
  3. package/assets/live-templates/astro-sanity/README.md +14 -0
  4. package/assets/live-templates/astro-sanity/package.json +23 -0
  5. package/assets/live-templates/astro-sanity/src/pages/index.astro +14 -0
  6. package/assets/live-templates/nuxt3-supabase/.env.example +2 -0
  7. package/assets/live-templates/nuxt3-supabase/README.md +14 -0
  8. package/assets/live-templates/nuxt3-supabase/app.vue +5 -0
  9. package/assets/live-templates/nuxt3-supabase/package.json +22 -0
  10. package/assets/live-templates/solid-drizzle/.env.example +1 -0
  11. package/assets/live-templates/solid-drizzle/README.md +15 -0
  12. package/assets/live-templates/solid-drizzle/drizzle.config.ts +10 -0
  13. package/assets/live-templates/solid-drizzle/package.json +27 -0
  14. package/assets/live-templates/solid-drizzle/src/routes/index.tsx +10 -0
  15. package/assets/live-templates/tauri-desktop/README.md +13 -0
  16. package/assets/live-templates/tauri-desktop/package.json +18 -0
  17. package/assets/live-templates/tauri-desktop/src-tauri/tauri.conf.json +39 -0
  18. package/bin/ultra-dex.js +88 -26
  19. package/lib/acp/cursor.js +351 -0
  20. package/lib/acp/host.js +442 -0
  21. package/lib/auth/rbac.js +89 -0
  22. package/lib/auth/sso.js +146 -0
  23. package/lib/cache/index.js +280 -0
  24. package/lib/commands/advanced.js +145 -465
  25. package/lib/commands/agents.js +182 -43
  26. package/lib/commands/audit.js +223 -182
  27. package/lib/commands/auth.js +21 -0
  28. package/lib/commands/auto-implement.js +28 -26
  29. package/lib/commands/autonomous.js +94 -85
  30. package/lib/commands/banner.js +35 -23
  31. package/lib/commands/batch.js +50 -33
  32. package/lib/commands/brain.js +52 -2
  33. package/lib/commands/browser-auto.js +500 -0
  34. package/lib/commands/browser.js +1 -0
  35. package/lib/commands/build.js +134 -77
  36. package/lib/commands/ci-monitor.js +18 -2
  37. package/lib/commands/cloud.js +26 -4
  38. package/lib/commands/code-gen.js +58 -40
  39. package/lib/commands/config.js +69 -53
  40. package/lib/commands/dashboard.js +39 -16
  41. package/lib/commands/deploy.js +85 -60
  42. package/lib/commands/diff.js +58 -40
  43. package/lib/commands/doctor.js +323 -308
  44. package/lib/commands/estimate.js +238 -203
  45. package/lib/commands/exec.js +163 -289
  46. package/lib/commands/export.js +55 -15
  47. package/lib/commands/fetch.js +16 -15
  48. package/lib/commands/fix.js +13 -12
  49. package/lib/commands/generate.js +199 -156
  50. package/lib/commands/github.js +25 -22
  51. package/lib/commands/hooks.js +157 -33
  52. package/lib/commands/init.js +1269 -293
  53. package/lib/commands/integrate.js +56 -42
  54. package/lib/commands/memory.js +63 -47
  55. package/lib/commands/monitoring.js +130 -121
  56. package/lib/commands/pipeline.js +98 -91
  57. package/lib/commands/plan.js +220 -148
  58. package/lib/commands/playground.js +21 -19
  59. package/lib/commands/plugin.js +266 -110
  60. package/lib/commands/pty.js +251 -0
  61. package/lib/commands/quality-enhanced.js +32 -30
  62. package/lib/commands/quality.js +166 -114
  63. package/lib/commands/ralph.js +310 -0
  64. package/lib/commands/review.js +46 -44
  65. package/lib/commands/run.js +170 -49
  66. package/lib/commands/scaffold-enhanced.js +29 -27
  67. package/lib/commands/scaffold.js +49 -27
  68. package/lib/commands/search.js +251 -263
  69. package/lib/commands/serve.js +222 -193
  70. package/lib/commands/setup.js +66 -54
  71. package/lib/commands/state.js +220 -189
  72. package/lib/commands/suggest.js +170 -189
  73. package/lib/commands/swarm.js +423 -99
  74. package/lib/commands/sync-pm.js +88 -86
  75. package/lib/commands/sync.js +24 -23
  76. package/lib/commands/team.js +189 -128
  77. package/lib/commands/undo.js +229 -0
  78. package/lib/commands/upgrade.js +48 -37
  79. package/lib/commands/validate.js +39 -37
  80. package/lib/commands/vector-search.js +144 -0
  81. package/lib/commands/verify.js +141 -30
  82. package/lib/commands/voice.js +160 -30
  83. package/lib/commands/watch.js +48 -57
  84. package/lib/commands/workflows.js +148 -164
  85. package/lib/commands/workspace.js +38 -24
  86. package/lib/context/compactor.js +588 -0
  87. package/lib/context/test-compactor.js +71 -0
  88. package/lib/governance/audit.js +115 -0
  89. package/lib/governance/index.js +309 -0
  90. package/lib/governance/rules.js +196 -0
  91. package/lib/history/tracker.js +371 -0
  92. package/lib/history/undo.js +238 -0
  93. package/lib/kernel/agent.js +68 -4
  94. package/lib/kernel/editor.js +35 -12
  95. package/lib/kernel/session.js +35 -0
  96. package/lib/kernel/tools.js +4 -4
  97. package/lib/marketplace/client.js +339 -0
  98. package/lib/mcp/client.js +85 -24
  99. package/lib/mcp/context-engine.js +529 -0
  100. package/lib/mcp/graph.js +703 -98
  101. package/lib/mcp/host.js +179 -0
  102. package/lib/mcp/memory.js +45 -17
  103. package/lib/mcp/resources.js +34 -18
  104. package/lib/mcp/server.js +43 -11
  105. package/lib/mcp/tools.js +264 -3
  106. package/lib/mcp/websocket.js +144 -110
  107. package/lib/memory/memex.js +204 -0
  108. package/lib/plugins/guide.js +115 -0
  109. package/lib/plugins/index.js +482 -0
  110. package/lib/plugins/integration.js +129 -0
  111. package/lib/providers/base.js +9 -1
  112. package/lib/providers/claude.js +181 -109
  113. package/lib/providers/gemini.js +172 -92
  114. package/lib/providers/index.js +31 -2
  115. package/lib/providers/langchain.js +181 -274
  116. package/lib/providers/openai.js +161 -79
  117. package/lib/quality/checklist.js +175 -0
  118. package/lib/quality/hooks.js +42 -0
  119. package/lib/repl/pty.js +297 -0
  120. package/lib/swarm/coordinator.js +24 -9
  121. package/lib/swarm/index.js +50 -19
  122. package/lib/swarm/protocol.js +15 -13
  123. package/lib/swarm/tiers.js +5 -8
  124. package/lib/templates/prompts/generate-plan.js +162 -5
  125. package/lib/templates/ultra.js +29 -0
  126. package/lib/ui/TokenBudget.js +189 -0
  127. package/lib/ui/components/ArrowMenu.js +35 -0
  128. package/lib/ui/components/CollapsibleDiff.js +44 -0
  129. package/lib/ui/components/FileSelector.js +28 -0
  130. package/lib/ui/components/LoadingSpinner.js +17 -0
  131. package/lib/ui/components/Shimmer.js +23 -0
  132. package/lib/ui/components/Thinking.js +36 -0
  133. package/lib/ui/components/icons.js +10 -0
  134. package/lib/ui/interactive.js +7 -1
  135. package/lib/utils/config-manager.js +8 -1
  136. package/lib/utils/enhanced-output.js +67 -0
  137. package/lib/utils/errors.js +62 -0
  138. package/lib/utils/help.js +233 -49
  139. package/lib/utils/output.js +5 -4
  140. package/lib/utils/progress.js +236 -3
  141. package/lib/utils/prompts.js +185 -3
  142. package/lib/utils/spinners.js +39 -36
  143. package/lib/utils/status.js +321 -0
  144. package/lib/utils/tables.js +145 -18
  145. package/lib/utils/validation.js +24 -0
  146. package/lib/utils/version-display.js +26 -25
  147. package/package.json +11 -2
  148. package/lib/commands/plugins.js +0 -179
@@ -0,0 +1,26 @@
1
+ #!/bin/sh
2
+ # Ultra-Dex Pre-Push Hook v1.0
3
+ # Auto-updates CONTEXT.md from git diff + runs live verification
4
+ # Install with: npx ultra-dex hooks install
5
+
6
+ set -e
7
+
8
+ echo ""
9
+ echo "🚀 Ultra-Dex: Running pre-push verification..."
10
+ echo ""
11
+
12
+ # Check if ultra-dex is available
13
+ if ! command -v ultra-dex >/dev/null 2>&1 && ! npx ultra-dex --version >/dev/null 2>&1; then
14
+ echo "⚠️ Ultra-Dex not found. Skipping pre-push verification."
15
+ echo " Install with: npm install -g ultra-dex"
16
+ exit 0
17
+ fi
18
+
19
+ # Update CONTEXT.md based on diff + run live verification
20
+ npx ultra-dex verify --live --pre-push
21
+
22
+ echo ""
23
+ echo "✅ Ultra-Dex pre-push checks passed"
24
+ echo ""
25
+
26
+ exit 0
@@ -0,0 +1,3 @@
1
+ PUBLIC_SANITY_PROJECT_ID=your_project_id
2
+ PUBLIC_SANITY_DATASET=production
3
+ SANITY_API_TOKEN=your_token
@@ -0,0 +1,14 @@
1
+ # Astro + Sanity CMS Template
2
+
3
+ Starter template for building high-performance websites with Astro and Sanity CMS.
4
+
5
+ ## Features
6
+ - Astro 4.x
7
+ - Sanity Client integration
8
+ - TypeScript support
9
+ - SEO optimized
10
+
11
+ ## Setup
12
+ 1. `npm install`
13
+ 2. Update `.env` with your Sanity credentials
14
+ 3. `npm run dev`
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "ultra-dex-astro-sanity",
3
+ "description": "Astro and Sanity CMS starter template",
4
+ "license": "MIT",
5
+ "private": true,
6
+ "scripts": {
7
+ "dev": "astro dev",
8
+ "start": "astro dev",
9
+ "build": "astro build",
10
+ "preview": "astro preview",
11
+ "astro": "astro"
12
+ },
13
+ "dependencies": {
14
+ "astro": "^4.10.0",
15
+ "@sanity/client": "^6.21.0",
16
+ "@sanity/astro": "^3.1.0",
17
+ "react": "^18.3.0",
18
+ "react-dom": "^18.3.0"
19
+ },
20
+ "devDependencies": {
21
+ "typescript": "^5.4.0"
22
+ }
23
+ }
@@ -0,0 +1,14 @@
1
+ ---
2
+ ---
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="utf-8" />
6
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
7
+ <meta name="viewport" content="width=device-width" />
8
+ <meta name="generator" content={Astro.generator} />
9
+ <title>Astro + Sanity</title>
10
+ </head>
11
+ <body>
12
+ <h1>Astro + Sanity</h1>
13
+ </body>
14
+ </html>
@@ -0,0 +1,2 @@
1
+ SUPABASE_URL=your_supabase_url
2
+ SUPABASE_KEY=your_supabase_anon_key
@@ -0,0 +1,14 @@
1
+ # Nuxt 3 + Supabase Template
2
+
3
+ Powerful full-stack applications with Nuxt 3 and Supabase.
4
+
5
+ ## Features
6
+ - Nuxt 3 (Vue.js)
7
+ - Supabase Auth & Database
8
+ - TypeScript
9
+ - SSR & Nitro Engine
10
+
11
+ ## Setup
12
+ 1. `npm install`
13
+ 2. Update `.env` with Supabase project URL and Anon Key
14
+ 3. `npm run dev`
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <div>
3
+ <h1>Nuxt 3 + Supabase</h1>
4
+ </div>
5
+ </template>
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "ultra-dex-nuxt3-supabase",
3
+ "description": "Nuxt 3 and Supabase starter template",
4
+ "license": "MIT",
5
+ "private": true,
6
+ "scripts": {
7
+ "build": "nuxt build",
8
+ "dev": "nuxt dev",
9
+ "generate": "nuxt generate",
10
+ "preview": "nuxt preview",
11
+ "postinstall": "nuxt prepare"
12
+ },
13
+ "dependencies": {
14
+ "@nuxtjs/supabase": "^1.2.0",
15
+ "nuxt": "^3.12.0",
16
+ "vue": "^3.4.0",
17
+ "vue-router": "^4.4.0"
18
+ },
19
+ "devDependencies": {
20
+ "typescript": "^5.5.0"
21
+ }
22
+ }
@@ -0,0 +1 @@
1
+ DATABASE_URL=postgres://user:password@localhost:5432/dbname
@@ -0,0 +1,15 @@
1
+ # SolidStart + Drizzle ORM Template
2
+
3
+ Performant full-stack SolidStart apps with type-safe database access via Drizzle ORM.
4
+
5
+ ## Features
6
+ - SolidStart (v1+)
7
+ - Drizzle ORM
8
+ - Type-safe SQL
9
+ - High performance reactivity
10
+
11
+ ## Setup
12
+ 1. `npm install`
13
+ 2. Update `.env` with your PostgreSQL connection string
14
+ 3. `npm run db:push`
15
+ 4. `npm run dev`
@@ -0,0 +1,10 @@
1
+ import { defineConfig } from "drizzle-kit";
2
+
3
+ export default defineConfig({
4
+ schema: "./src/db/schema.ts",
5
+ out: "./drizzle",
6
+ dialect: "postgresql",
7
+ dbCredentials: {
8
+ url: process.env.DATABASE_URL!,
9
+ },
10
+ });
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "ultra-dex-solid-drizzle",
3
+ "description": "SolidStart and Drizzle ORM starter template",
4
+ "license": "MIT",
5
+ "private": true,
6
+ "type": "module",
7
+ "scripts": {
8
+ "dev": "vinxi dev",
9
+ "build": "vinxi build",
10
+ "start": "vinxi start",
11
+ "db:push": "drizzle-kit push",
12
+ "db:studio": "drizzle-kit studio"
13
+ },
14
+ "dependencies": {
15
+ "@solidjs/meta": "^0.29.0",
16
+ "@solidjs/router": "^0.13.0",
17
+ "@solidjs/start": "^1.0.0",
18
+ "drizzle-orm": "^0.31.0",
19
+ "postgres": "^3.4.0",
20
+ "solid-js": "^1.8.0"
21
+ },
22
+ "devDependencies": {
23
+ "drizzle-kit": "^0.22.0",
24
+ "typescript": "^5.5.0",
25
+ "vinxi": "^0.3.0"
26
+ }
27
+ }
@@ -0,0 +1,10 @@
1
+ import { Title } from "@solidjs/meta";
2
+
3
+ export default function Home() {
4
+ return (
5
+ <main>
6
+ <Title>SolidStart + Drizzle</Title>
7
+ <h1>SolidStart + Drizzle</h1>
8
+ </main>
9
+ );
10
+ }
@@ -0,0 +1,13 @@
1
+ # Tauri Desktop App Template
2
+
3
+ Lightweight, secure, and fast desktop apps built with Rust and web technologies.
4
+
5
+ ## Features
6
+ - Tauri 1.x
7
+ - Native OS integration
8
+ - Cross-platform (Windows, macOS, Linux)
9
+ - Secure-by-default architecture
10
+
11
+ ## Setup
12
+ 1. `npm install`
13
+ 2. `npm run dev`
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "ultra-dex-tauri-desktop",
3
+ "description": "Tauri desktop app starter template",
4
+ "license": "MIT",
5
+ "private": true,
6
+ "scripts": {
7
+ "tauri": "tauri",
8
+ "dev": "tauri dev",
9
+ "build": "tauri build"
10
+ },
11
+ "dependencies": {
12
+ "@tauri-apps/api": "^1.5.0"
13
+ },
14
+ "devDependencies": {
15
+ "@tauri-apps/cli": "^1.5.0",
16
+ "typescript": "^5.4.0"
17
+ }
18
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "package": {
3
+ "productName": "UltraDexApp",
4
+ "version": "0.1.0"
5
+ },
6
+ "build": {
7
+ "distDir": "../dist",
8
+ "devPath": "http://localhost:1420",
9
+ "beforeDevCommand": "npm run dev",
10
+ "beforeBuildCommand": "npm run build"
11
+ },
12
+ "tauri": {
13
+ "bundle": {
14
+ "active": true,
15
+ "targets": "all",
16
+ "identifier": "com.ultradex.app",
17
+ "icon": [
18
+ "icons/32x32.png",
19
+ "icons/128x128.png",
20
+ "icons/128x128@2x.png",
21
+ "icons/icon.icns",
22
+ "icons/icon.ico"
23
+ ]
24
+ },
25
+ "allowlist": {
26
+ "all": true
27
+ },
28
+ "windows": [
29
+ {
30
+ "title": "UltraDex Desktop",
31
+ "width": 800,
32
+ "height": 600
33
+ }
34
+ ],
35
+ "security": {
36
+ "csp": null
37
+ }
38
+ }
39
+ }
package/bin/ultra-dex.js CHANGED
@@ -8,11 +8,14 @@ import boxen from 'boxen';
8
8
  import chalk from 'chalk';
9
9
  import { setDoomsdayMode } from '../lib/utils/theme-state.js';
10
10
  import { VERSION, PACKAGE_NAME } from '../lib/utils/version.js';
11
+ import { formatInfo, formatWarning, formatSuccess } from '../lib/utils/status.js';
11
12
 
12
13
  // Initialize monitoring and configuration systems
13
14
  import { monitoring } from '../lib/utils/monitoring.js';
14
15
  import { configManager } from '../lib/utils/config-manager.js';
15
16
  import { pluginManager } from '../lib/plugin-system.js';
17
+ import { governance } from '../lib/governance/index.js';
18
+ import { installHistoryTracking } from '../lib/history/tracker.js';
16
19
  import '../lib/utils/error-recovery.js';
17
20
 
18
21
  // Wait for initialization
@@ -20,7 +23,9 @@ try {
20
23
  await Promise.all([
21
24
  monitoring.initialize(),
22
25
  configManager.load(),
23
- pluginManager.initialize()
26
+ pluginManager.initialize(),
27
+ governance.init(),
28
+ installHistoryTracking()
24
29
  ]);
25
30
  } catch (error) {
26
31
  console.error(chalk.red('Failed to initialize systems:'), error.message);
@@ -46,21 +51,38 @@ if (process.argv.includes('--help') && process.argv.includes('--doomsday')) {
46
51
  process.exit(0);
47
52
  }
48
53
 
54
+ // Check for ACP (Agent Client Protocol) mode - GitHub's agent portability standard
55
+ const isAcpMode = process.argv.includes('--acp');
56
+ if (isAcpMode) {
57
+ const acpPort = process.argv.find(arg => arg.startsWith('--acp-port='))?.split('=')[1];
58
+ const acpHttp = process.argv.includes('--acp-http');
59
+
60
+ (async () => {
61
+ try {
62
+ const { startACPHost } = await import('../lib/acp/host.js');
63
+ await startACPHost({
64
+ stdio: !acpHttp,
65
+ http: acpHttp,
66
+ port: acpPort ? parseInt(acpPort, 10) : 3002
67
+ });
68
+ } catch (error) {
69
+ console.error(chalk.red('\n✕ Failed to start ACP Host:'), error.message);
70
+ process.exit(1);
71
+ }
72
+ })();
73
+
74
+ // ACP mode takes over completely - don't process other commands
75
+ await new Promise(() => {});
76
+ }
77
+
49
78
  // Check for updates
50
79
  const pkg = { name: PACKAGE_NAME, version: VERSION };
51
80
  const notifier = updateNotifier({ pkg, updateCheckInterval: 1000 * 60 * 60 * 24 });
52
81
 
53
82
  if (notifier.update) {
54
- console.log(boxen(
55
- `Update available! ${chalk.dim(notifier.update.current)} → ${chalk.green(notifier.update.latest)}
56
- ` +
57
- `Run ${chalk.cyan('npm install -g ultra-dex')} to update`,
58
- {
59
- padding: 1,
60
- margin: 1,
61
- borderStyle: 'round',
62
- borderColor: 'yellow'
63
- }
83
+ console.log(formatWarning(
84
+ `Update available! ${notifier.update.current} → ${notifier.update.latest}\n` +
85
+ `Run ${chalk.cyan('npm install -g ultra-dex')} to update`
64
86
  ));
65
87
  }
66
88
 
@@ -94,6 +116,7 @@ import { exportCommand } from '../lib/commands/export.js';
94
116
  import { upgradeCommand } from '../lib/commands/upgrade.js';
95
117
  import { configCommand } from '../lib/commands/config.js';
96
118
 
119
+ import { registerRalphCommand } from '../lib/commands/ralph.js';
97
120
  import { registerWorkflowCommand } from '../lib/commands/workflows.js';
98
121
  import { registerPlanCommand } from '../lib/commands/plan.js';
99
122
  import { registerSuggestCommand } from '../lib/commands/suggest.js';
@@ -107,13 +130,20 @@ import { registerMemoryCommand } from '../lib/commands/memory.js';
107
130
  import { registerScaffoldCommand } from '../lib/commands/scaffold.js';
108
131
  import { registerSystemConfigCommand, registerMetricsCommand, registerHealthCommand, registerDebugCommand } from '../lib/commands/monitoring.js';
109
132
  import { registerBrainCommand } from '../lib/commands/brain.js';
133
+ import { registerEstimateCommand } from '../lib/commands/estimate.js';
134
+ import { registerUndoCommand } from '../lib/commands/undo.js';
135
+ import { startACPHost } from '../lib/acp/host.js';
136
+ import { createEnhancedHelp, formatHelpSection, formatUsage, formatDescription, formatOptions } from '../lib/utils/help.js';
110
137
 
111
138
  // v3.4.3 Commands - 2026 Competitive Features
139
+ import { registerBrowserCommand } from '../lib/commands/browser.js';
112
140
  import { registerExecCommand } from '../lib/commands/exec.js';
113
141
  import { registerGitHubCommand } from '../lib/commands/github.js';
114
142
  import { registerSearchCommand } from '../lib/commands/search.js';
143
+ import { registerVectorSearchCommand } from '../lib/commands/vector-search.js';
115
144
  import { registerCloudCommand } from '../lib/commands/cloud.js';
116
145
  import { registerAutonomousCommand } from '../lib/commands/autonomous.js';
146
+ import { registerPTYCommands } from '../lib/commands/pty.js';
117
147
  import { startInteractiveMode } from '../lib/ui/interactive.js';
118
148
  import { theme, ultraGradient } from '../lib/ui/theme.js';
119
149
 
@@ -124,20 +154,16 @@ program.configureHelp({
124
154
  formatHelp: (cmd, _helper) => {
125
155
  // For subcommands, build command-specific help
126
156
  if (cmd.parent) {
127
- let output = `\n${theme.title('Usage:')} ${theme.primary('ultra-dex ' + cmd.name())} ${theme.dim('[options]')}\n\n`;
128
- output += `${theme.subtitle(cmd.description())}\n\n`;
129
-
130
- const options = cmd.options;
131
- if (options.length > 0) {
132
- output += `${theme.title('Options:')}\n`;
133
- options.forEach(opt => {
134
- const flags = opt.flags.padEnd(25);
135
- output += ` ${theme.primary(flags)} ${theme.dim(opt.description)}\n`;
136
- });
137
- output += '\n';
138
- }
139
-
140
- return output;
157
+ const commandData = {
158
+ name: cmd.name(),
159
+ description: cmd.description(),
160
+ options: cmd.options,
161
+ examples: cmd._examples || [],
162
+ tips: cmd._tips || [],
163
+ troubleshooting: cmd._troubleshooting || []
164
+ };
165
+
166
+ return createEnhancedHelp(commandData);
141
167
  }
142
168
 
143
169
  const gradientBanner = ultraGradient(banner);
@@ -160,7 +186,8 @@ program.configureHelp({
160
186
 
161
187
  output += ` ${theme.title('OPTIONS')}\n`;
162
188
  output += ` ${theme.primary('-V, --version').padEnd(20)} ${theme.dim('output the version number')}\n`;
163
- output += ` ${theme.primary('-h, --help').padEnd(20)} ${theme.dim('display help for command')}\n\n`;
189
+ output += ` ${theme.primary('-h, --help').padEnd(20)} ${theme.dim('display help for command')}\n`;
190
+ output += ` ${theme.primary('--acp').padEnd(20)} ${theme.dim('start ACP (Agent Client Protocol) host')}\n\n`;
164
191
 
165
192
  output += ` ${theme.dim('─────────────────────────────────────────────────────────')}\n`;
166
193
  output += ` ${theme.subtitle('Run ultra-dex without arguments to launch the Interactive Dashboard')}\n\n`;
@@ -264,14 +291,49 @@ registerDebugCommand(program);
264
291
 
265
292
  // v3.4.3 Commands - 2026 Competitive Features
266
293
  registerExecCommand(program);
294
+ registerBrowserCommand(program);
267
295
  registerGitHubCommand(program);
268
296
  registerSearchCommand(program);
297
+ registerVectorSearchCommand(program);
269
298
  registerCloudCommand(program);
270
299
  registerBrainCommand(program);
271
300
  registerAutonomousCommand(program);
301
+ registerRalphCommand(program);
272
302
  registerWorkspaceCommand(program);
273
303
  registerBatchCommand(program);
274
304
  registerPipelineCommand(program);
305
+ registerPTYCommands(program);
306
+ registerEstimateCommand(program);
307
+ registerUndoCommand(program);
308
+
309
+ // ACP (Agent Client Protocol) Commands
310
+ import { cursorCommand } from '../lib/acp/cursor.js';
311
+
312
+ program
313
+ .command('acp')
314
+ .description('Start ACP (Agent Client Protocol) host for IDE integration')
315
+ .option('--http', 'Run in HTTP mode instead of stdio')
316
+ .option('--port <port>', 'Port for HTTP mode', '3002')
317
+ .option('--stdio', 'Run in stdio mode (default)', true)
318
+ .action(async (options) => {
319
+ const { startACPHost } = await import('../lib/acp/host.js');
320
+ await startACPHost({
321
+ stdio: !options.http,
322
+ http: options.http,
323
+ port: parseInt(options.port, 10)
324
+ });
325
+ });
326
+
327
+ program
328
+ .command('cursor')
329
+ .description('Manage Cursor 2.0 IDE integration')
330
+ .option('--install', 'Install Cursor ACP integration (default)')
331
+ .option('--uninstall', 'Remove Cursor ACP integration')
332
+ .option('--status', 'Check Cursor integration status')
333
+ .option('--vscode', 'Also update VS Code settings')
334
+ .action(async (options) => {
335
+ await cursorCommand(options);
336
+ });
275
337
 
276
338
  // Activate plugins after all commands are registered
277
339
  try {