@rigstate/cli 0.7.9 → 0.7.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/dist/index.js CHANGED
@@ -94,23 +94,39 @@ function getApiUrl() {
94
94
  }
95
95
  async function discoverApiUrl() {
96
96
  const configuredUrl = getApiUrl();
97
+ const { default: axios22 } = await import("axios");
98
+ const { default: chalk34 } = await import("chalk");
99
+ console.log(chalk34.gray(`\u{1F50D} Discovering local Rigstate API URL... Configured: ${configuredUrl}`));
97
100
  if (!configuredUrl.includes("localhost") && !configuredUrl.includes("127.0.0.1")) {
101
+ console.log(chalk34.gray(` Configured URL is not localhost, trusting: ${configuredUrl}`));
98
102
  return configuredUrl;
99
103
  }
100
104
  const ports = [3e3, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010];
101
- const { default: axios22 } = await import("axios");
102
105
  for (const port of ports) {
106
+ const url = `http://localhost:${port}`;
103
107
  try {
104
- const url = `http://localhost:${port}`;
105
- await axios22.get(`${url}/api/v1/system/health`, { timeout: 500 });
108
+ console.log(chalk34.gray(` Attempting to connect to ${url}/api/v1/system/health...`));
109
+ await axios22.get(`${url}/api/v1/system/health`, { timeout: 800 });
110
+ console.log(chalk34.green(` \u2705 Found Rigstate API at ${url}`));
106
111
  if (url !== configuredUrl) {
112
+ console.log(chalk34.gray(` Updating stored API URL from ${configuredUrl} to ${url}`));
107
113
  setApiUrl(url);
108
114
  }
109
115
  return url;
110
116
  } catch (e) {
117
+ if (axios22.isAxiosError(e) && e.response && e.response.status === 404) {
118
+ console.log(chalk34.yellow(` \u26A0\uFE0F ${url} responded with 404, but might still be a Rigstate server. Skipping for now.`));
119
+ } else if (axios22.isAxiosError(e) && e.code === "ECONNABORTED") {
120
+ console.log(chalk34.gray(` Connection to ${url} timed out.`));
121
+ } else if (axios22.isAxiosError(e) && e.code === "ECONNREFUSED") {
122
+ console.log(chalk34.gray(` Connection to ${url} refused.`));
123
+ } else {
124
+ console.log(chalk34.gray(` Failed to connect to ${url}: ${e.message}`));
125
+ }
111
126
  continue;
112
127
  }
113
128
  }
129
+ console.log(chalk34.yellow(` \u274C No local Rigstate API found on scanned ports. Falling back to configured URL: ${configuredUrl}`));
114
130
  return configuredUrl;
115
131
  }
116
132
  function setApiUrl(url) {
@@ -1777,7 +1793,7 @@ var require_dist2 = __commonJS({
1777
1793
  // src/index.ts
1778
1794
  init_esm_shims();
1779
1795
  import { Command as Command23 } from "commander";
1780
- import chalk32 from "chalk";
1796
+ import chalk33 from "chalk";
1781
1797
 
1782
1798
  // src/commands/login.ts
1783
1799
  init_esm_shims();
@@ -3197,7 +3213,7 @@ init_hooks();
3197
3213
  // src/commands/daemon.ts
3198
3214
  init_esm_shims();
3199
3215
  import { Command as Command11 } from "commander";
3200
- import chalk18 from "chalk";
3216
+ import chalk19 from "chalk";
3201
3217
  import ora8 from "ora";
3202
3218
  import fs18 from "fs/promises";
3203
3219
  import path20 from "path";
@@ -3209,7 +3225,7 @@ init_esm_shims();
3209
3225
 
3210
3226
  // src/daemon/core.ts
3211
3227
  init_esm_shims();
3212
- import chalk17 from "chalk";
3228
+ import chalk18 from "chalk";
3213
3229
  import * as fs17 from "fs/promises";
3214
3230
  import { EventEmitter as EventEmitter3 } from "events";
3215
3231
 
@@ -3545,6 +3561,7 @@ function createInterventionProtocol() {
3545
3561
  // src/daemon/guardian-monitor.ts
3546
3562
  init_esm_shims();
3547
3563
  import axios12 from "axios";
3564
+ import chalk17 from "chalk";
3548
3565
  import fs16 from "fs/promises";
3549
3566
  import path19 from "path";
3550
3567
  var CACHE_FILE3 = ".rigstate/rules-cache.json";
@@ -3569,8 +3586,13 @@ function createGuardianMonitor(projectId, apiUrl, apiKey) {
3569
3586
  return;
3570
3587
  }
3571
3588
  } catch (error) {
3589
+ console.error(chalk17.red(` \u26A0\uFE0F Failed to fetch rules from API: ${error.message}`));
3590
+ if (error.response) {
3591
+ console.error(chalk17.red(` Status: ${error.response.status} - ${JSON.stringify(error.response.data)}`));
3592
+ }
3572
3593
  const cached = await loadCachedRules2(projectId);
3573
3594
  if (cached) {
3595
+ console.log(chalk17.yellow(" \u2139\uFE0F Using cached rules as fallback"));
3574
3596
  rules = cached.rules;
3575
3597
  lastFetch = Date.now();
3576
3598
  return;
@@ -3741,7 +3763,7 @@ var GuardianDaemon = class extends EventEmitter3 {
3741
3763
  }
3742
3764
  async start() {
3743
3765
  if (this.state.isRunning) {
3744
- console.log(chalk17.yellow("Daemon is already running."));
3766
+ console.log(chalk18.yellow("Daemon is already running."));
3745
3767
  return;
3746
3768
  }
3747
3769
  this.printWelcome();
@@ -3751,7 +3773,7 @@ var GuardianDaemon = class extends EventEmitter3 {
3751
3773
  this.interventionProtocol = createInterventionProtocol();
3752
3774
  this.guardianMonitor = createGuardianMonitor(this.config.projectId, this.config.apiUrl, this.config.apiKey);
3753
3775
  await this.guardianMonitor.loadRules();
3754
- console.log(chalk17.green(` \u2713 Loaded ${this.guardianMonitor.getRuleCount()} rules`));
3776
+ console.log(chalk18.green(` \u2713 Loaded ${this.guardianMonitor.getRuleCount()} rules`));
3755
3777
  await this.syncHeuristics();
3756
3778
  if (this.config.checkOnChange) {
3757
3779
  this.setupFileWatcher();
@@ -3763,31 +3785,32 @@ var GuardianDaemon = class extends EventEmitter3 {
3763
3785
  this.emit("started", this.state);
3764
3786
  }
3765
3787
  printWelcome() {
3766
- console.log(chalk17.bold.blue("\n\u{1F6E1}\uFE0F Guardian Daemon Starting..."));
3767
- console.log(chalk17.dim(`Project: ${this.config.projectId}`));
3768
- console.log(chalk17.dim(`Watch Path: ${this.config.watchPath}`));
3769
- console.log(chalk17.dim("\u2500".repeat(50)));
3788
+ console.log(chalk18.bold.blue("\n\u{1F6E1}\uFE0F Guardian Daemon Starting..."));
3789
+ console.log(chalk18.dim(`Project: ${this.config.projectId}`));
3790
+ console.log(chalk18.dim(`API URL: ${this.config.apiUrl}`));
3791
+ console.log(chalk18.dim(`Watch Path: ${this.config.watchPath}`));
3792
+ console.log(chalk18.dim("\u2500".repeat(50)));
3770
3793
  }
3771
3794
  printActive() {
3772
- console.log(chalk17.dim("\u2500".repeat(50)));
3773
- console.log(chalk17.green.bold("\u2705 Guardian Daemon is now active"));
3774
- console.log(chalk17.dim("Press Ctrl+C to stop\n"));
3795
+ console.log(chalk18.dim("\u2500".repeat(50)));
3796
+ console.log(chalk18.green.bold("\u2705 Guardian Daemon is now active"));
3797
+ console.log(chalk18.dim("Press Ctrl+C to stop\n"));
3775
3798
  }
3776
3799
  async syncHeuristics() {
3777
3800
  if (!this.heuristicEngine) return;
3778
3801
  const synced = await this.heuristicEngine.refreshRules(this.config.projectId, this.config.apiUrl, this.config.apiKey);
3779
- if (synced) console.log(chalk17.green(" \u2713 Synced heuristic rules"));
3802
+ if (synced) console.log(chalk18.green(" \u2713 Synced heuristic rules"));
3780
3803
  }
3781
3804
  setupFileWatcher() {
3782
- console.log(chalk17.dim("\u{1F4C2} Starting file watcher..."));
3805
+ console.log(chalk18.dim("\u{1F4C2} Starting file watcher..."));
3783
3806
  this.fileWatcher = createFileWatcher(this.config.watchPath);
3784
3807
  this.fileWatcher.on("change", (path25) => this.handleFileChange(path25));
3785
3808
  this.fileWatcher.start();
3786
- console.log(chalk17.green(" \u2713 File watcher active"));
3809
+ console.log(chalk18.green(" \u2713 File watcher active"));
3787
3810
  }
3788
3811
  async handleFileChange(filePath) {
3789
3812
  this.state.lastActivity = (/* @__PURE__ */ new Date()).toISOString();
3790
- if (this.config.verbose) console.log(chalk17.dim(` \u{1F4DD} File changed: ${filePath}`));
3813
+ if (this.config.verbose) console.log(chalk18.dim(` \u{1F4DD} File changed: ${filePath}`));
3791
3814
  let lineCount = 0;
3792
3815
  try {
3793
3816
  const content = await fs17.readFile(filePath, "utf-8");
@@ -3800,8 +3823,8 @@ var GuardianDaemon = class extends EventEmitter3 {
3800
3823
  rules: this.guardianMonitor.getRules()
3801
3824
  });
3802
3825
  for (const match of matches) {
3803
- console.log(chalk17.magenta(` \u{1F4A1} PREDICTIVE ACTIVATION: ${match.skillId}`));
3804
- console.log(chalk17.dim(` Reason: ${match.reason}`));
3826
+ console.log(chalk18.magenta(` \u{1F4A1} PREDICTIVE ACTIVATION: ${match.skillId}`));
3827
+ console.log(chalk18.dim(` Reason: ${match.reason}`));
3805
3828
  const decision = this.interventionProtocol.evaluateTrigger(match.skillId, match.confidence);
3806
3829
  this.interventionProtocol.enforce(decision);
3807
3830
  await jitProvisionSkill(match.skillId, this.config.apiUrl, this.config.apiKey, this.config.projectId, process.cwd());
@@ -3817,7 +3840,7 @@ var GuardianDaemon = class extends EventEmitter3 {
3817
3840
  this.state.violationsFound += result.violations.length;
3818
3841
  this.emit("violation", { file: filePath, violations: result.violations });
3819
3842
  for (const v of result.violations) {
3820
- const color = v.severity === "critical" ? chalk17.red : v.severity === "warning" ? chalk17.yellow : chalk17.blue;
3843
+ const color = v.severity === "critical" ? chalk18.red : v.severity === "warning" ? chalk18.yellow : chalk18.blue;
3821
3844
  console.log(color(` [${v.severity.toUpperCase()}] ${filePath}: ${v.message}`));
3822
3845
  if (this.interventionProtocol) {
3823
3846
  const decision = this.interventionProtocol.evaluateViolation(v.message, v.severity);
@@ -3829,25 +3852,25 @@ var GuardianDaemon = class extends EventEmitter3 {
3829
3852
  }
3830
3853
  }
3831
3854
  async setupBridge() {
3832
- console.log(chalk17.dim("\u{1F309} Connecting to Agent Bridge..."));
3855
+ console.log(chalk18.dim("\u{1F309} Connecting to Agent Bridge..."));
3833
3856
  this.bridgeListener = createBridgeListener(this.config.projectId, this.config.apiUrl, this.config.apiKey);
3834
3857
  this.bridgeListener.on("task", (task) => {
3835
3858
  this.state.lastActivity = (/* @__PURE__ */ new Date()).toISOString();
3836
3859
  this.state.tasksProcessed++;
3837
- console.log(chalk17.cyan(`
3860
+ console.log(chalk18.cyan(`
3838
3861
  \u{1F4E5} New task received: ${task.id}`));
3839
3862
  this.emit("task", task);
3840
3863
  });
3841
3864
  await this.bridgeListener.connect();
3842
- console.log(chalk17.green(" \u2713 Agent Bridge connected"));
3865
+ console.log(chalk18.green(" \u2713 Agent Bridge connected"));
3843
3866
  }
3844
3867
  async stop() {
3845
3868
  if (!this.state.isRunning) return;
3846
- console.log(chalk17.dim("\n\u{1F6D1} Stopping Guardian Daemon..."));
3869
+ console.log(chalk18.dim("\n\u{1F6D1} Stopping Guardian Daemon..."));
3847
3870
  if (this.fileWatcher) await this.fileWatcher.stop();
3848
3871
  if (this.bridgeListener) await this.bridgeListener.disconnect();
3849
3872
  this.state.isRunning = false;
3850
- console.log(chalk17.green("\u2713 Daemon stopped."));
3873
+ console.log(chalk18.green("\u2713 Daemon stopped."));
3851
3874
  this.emit("stopped", this.state);
3852
3875
  }
3853
3876
  getState() {
@@ -3905,9 +3928,9 @@ function createDaemonCommand() {
3905
3928
  const spinner = ora8();
3906
3929
  try {
3907
3930
  if (await isRunning()) {
3908
- console.log(chalk18.yellow("\u26A0 Another daemon instance may be running."));
3909
- console.log(chalk18.dim(` Check ${PID_FILE} or run "rigstate daemon status"`));
3910
- console.log(chalk18.dim(" Use Ctrl+C to stop the running daemon first.\n"));
3931
+ console.log(chalk19.yellow("\u26A0 Another daemon instance may be running."));
3932
+ console.log(chalk19.dim(` Check ${PID_FILE} or run "rigstate daemon status"`));
3933
+ console.log(chalk19.dim(" Use Ctrl+C to stop the running daemon first.\n"));
3911
3934
  }
3912
3935
  spinner.start("Initializing Guardian Daemon...");
3913
3936
  const daemonInstance = await createDaemon({
@@ -3919,7 +3942,7 @@ function createDaemonCommand() {
3919
3942
  spinner.stop();
3920
3943
  await writePidFile();
3921
3944
  process.on("SIGINT", async () => {
3922
- console.log(chalk18.dim("\n\nShutting down..."));
3945
+ console.log(chalk19.dim("\n\nShutting down..."));
3923
3946
  await daemonInstance.stop();
3924
3947
  await cleanupPidFile();
3925
3948
  process.exit(0);
@@ -3939,8 +3962,8 @@ function createDaemonCommand() {
3939
3962
  await new Promise(() => {
3940
3963
  });
3941
3964
  } catch (error) {
3942
- spinner.fail(chalk18.red("Failed to start daemon"));
3943
- console.error(chalk18.red("Error:"), error.message);
3965
+ spinner.fail(chalk19.red("Failed to start daemon"));
3966
+ console.error(chalk19.red("Error:"), error.message);
3944
3967
  process.exit(1);
3945
3968
  }
3946
3969
  });
@@ -3989,46 +4012,46 @@ async function writeStateFile(state) {
3989
4012
  }
3990
4013
  }
3991
4014
  async function showStatus() {
3992
- console.log(chalk18.bold("\n\u{1F6E1}\uFE0F Guardian Daemon Status\n"));
4015
+ console.log(chalk19.bold("\n\u{1F6E1}\uFE0F Guardian Daemon Status\n"));
3993
4016
  const running = await isRunning();
3994
4017
  if (!running) {
3995
- console.log(chalk18.yellow("Status: Not running"));
3996
- console.log(chalk18.dim('Use "rigstate daemon" to start.\n'));
4018
+ console.log(chalk19.yellow("Status: Not running"));
4019
+ console.log(chalk19.dim('Use "rigstate daemon" to start.\n'));
3997
4020
  return;
3998
4021
  }
3999
- console.log(chalk18.green("Status: Running"));
4022
+ console.log(chalk19.green("Status: Running"));
4000
4023
  try {
4001
4024
  const statePath = path20.join(process.cwd(), STATE_FILE);
4002
4025
  const content = await fs18.readFile(statePath, "utf-8");
4003
4026
  const state = JSON.parse(content);
4004
- console.log(chalk18.dim("\u2500".repeat(40)));
4027
+ console.log(chalk19.dim("\u2500".repeat(40)));
4005
4028
  console.log(`Started at: ${state.startedAt || "Unknown"}`);
4006
4029
  console.log(`Files checked: ${state.filesChecked || 0}`);
4007
4030
  console.log(`Violations: ${state.violationsFound || 0}`);
4008
4031
  console.log(`Tasks processed: ${state.tasksProcessed || 0}`);
4009
4032
  console.log(`Last activity: ${state.lastActivity || "None"}`);
4010
- console.log(chalk18.dim("\u2500".repeat(40)));
4033
+ console.log(chalk19.dim("\u2500".repeat(40)));
4011
4034
  } catch {
4012
- console.log(chalk18.dim("(State file not found)"));
4035
+ console.log(chalk19.dim("(State file not found)"));
4013
4036
  }
4014
4037
  try {
4015
4038
  const pidPath = path20.join(process.cwd(), PID_FILE);
4016
4039
  const pid = await fs18.readFile(pidPath, "utf-8");
4017
- console.log(chalk18.dim(`PID: ${pid.trim()}`));
4040
+ console.log(chalk19.dim(`PID: ${pid.trim()}`));
4018
4041
  } catch {
4019
4042
  }
4020
4043
  console.log("");
4021
4044
  }
4022
4045
  async function enableDaemon() {
4023
- console.log(chalk18.bold("\n\u2699\uFE0F Enabling Rigstate Background Service (macOS)\n"));
4046
+ console.log(chalk19.bold("\n\u2699\uFE0F Enabling Rigstate Background Service (macOS)\n"));
4024
4047
  if (process.platform !== "darwin") {
4025
- console.error(chalk18.red("\u274C Currently only macOS is supported for auto-start."));
4026
- console.error(chalk18.yellow("PRs welcome for Linux/Windows support!"));
4048
+ console.error(chalk19.red("\u274C Currently only macOS is supported for auto-start."));
4049
+ console.error(chalk19.yellow("PRs welcome for Linux/Windows support!"));
4027
4050
  return;
4028
4051
  }
4029
4052
  const homeDir = process.env.HOME || "";
4030
4053
  if (!homeDir) {
4031
- console.error(chalk18.red("\u274C Could not determine HOME directory."));
4054
+ console.error(chalk19.red("\u274C Could not determine HOME directory."));
4032
4055
  return;
4033
4056
  }
4034
4057
  const agentsDir = path20.join(homeDir, "Library/LaunchAgents");
@@ -4070,32 +4093,32 @@ async function enableDaemon() {
4070
4093
  </plist>`;
4071
4094
  try {
4072
4095
  await fs18.writeFile(plistPath, plistContent);
4073
- console.log(chalk18.dim(`Created plist at: ${plistPath}`));
4096
+ console.log(chalk19.dim(`Created plist at: ${plistPath}`));
4074
4097
  try {
4075
4098
  await execShellCommand(`launchctl unload ${plistPath}`);
4076
4099
  } catch (e) {
4077
4100
  }
4078
4101
  await execShellCommand(`launchctl load ${plistPath}`);
4079
- console.log(chalk18.green("\u2705 Successfully enabled background daemon!"));
4080
- console.log(chalk18.dim(`Logs: ${logDir}`));
4081
- console.log(chalk18.dim("The daemon will now restart automatically if it crashes or on reboot."));
4102
+ console.log(chalk19.green("\u2705 Successfully enabled background daemon!"));
4103
+ console.log(chalk19.dim(`Logs: ${logDir}`));
4104
+ console.log(chalk19.dim("The daemon will now restart automatically if it crashes or on reboot."));
4082
4105
  } catch (error) {
4083
- console.error(chalk18.red("\u274C Failed to enable daemon:"), error.message);
4106
+ console.error(chalk19.red("\u274C Failed to enable daemon:"), error.message);
4084
4107
  }
4085
4108
  }
4086
4109
  async function disableDaemon() {
4087
- console.log(chalk18.bold("\n\u2699\uFE0F Disabling Rigstate Background Service\n"));
4110
+ console.log(chalk19.bold("\n\u2699\uFE0F Disabling Rigstate Background Service\n"));
4088
4111
  const homeDir = process.env.HOME || "";
4089
4112
  const plistPath = path20.join(homeDir, "Library/LaunchAgents/com.rigstate.daemon.plist");
4090
4113
  try {
4091
4114
  await execShellCommand(`launchctl unload ${plistPath}`);
4092
4115
  await fs18.unlink(plistPath);
4093
- console.log(chalk18.green("\u2705 Successfully disabled background daemon."));
4116
+ console.log(chalk19.green("\u2705 Successfully disabled background daemon."));
4094
4117
  } catch (error) {
4095
4118
  if (error.code === "ENOENT") {
4096
- console.log(chalk18.green("\u2705 Daemon was not enabled."));
4119
+ console.log(chalk19.green("\u2705 Daemon was not enabled."));
4097
4120
  } else {
4098
- console.error(chalk18.red("\u274C Failed to disable daemon:"), error.message);
4121
+ console.error(chalk19.red("\u274C Failed to disable daemon:"), error.message);
4099
4122
  }
4100
4123
  }
4101
4124
  }
@@ -4113,7 +4136,7 @@ init_esm_shims();
4113
4136
  init_config();
4114
4137
  init_suggest();
4115
4138
  import { Command as Command12 } from "commander";
4116
- import chalk19 from "chalk";
4139
+ import chalk20 from "chalk";
4117
4140
  import ora9 from "ora";
4118
4141
  import axios15 from "axios";
4119
4142
  import inquirer2 from "inquirer";
@@ -4148,7 +4171,7 @@ async function listInteractive() {
4148
4171
  });
4149
4172
  spinner.stop();
4150
4173
  if (actionableTasks.length === 0) {
4151
- console.log(chalk19.yellow("Roadmap clear. No actionable tasks found."));
4174
+ console.log(chalk20.yellow("Roadmap clear. No actionable tasks found."));
4152
4175
  return;
4153
4176
  }
4154
4177
  const choices = actionableTasks.map((t) => {
@@ -4157,7 +4180,7 @@ async function listInteractive() {
4157
4180
  if (t.status === "IN_PROGRESS") icon = "\u{1F525}";
4158
4181
  if (t.status === "ACTIVE") icon = "\u25B6\uFE0F";
4159
4182
  return {
4160
- name: `${icon} ${chalk19.bold(id)}: ${t.title} [${t.status}]`,
4183
+ name: `${icon} ${chalk20.bold(id)}: ${t.title} [${t.status}]`,
4161
4184
  value: t.id
4162
4185
  };
4163
4186
  });
@@ -4200,25 +4223,25 @@ async function setTaskStatus(taskId, status) {
4200
4223
  { step_id: realId, status, project_id: projectId },
4201
4224
  { headers: { "Authorization": `Bearer ${apiKey}` } }
4202
4225
  );
4203
- spinner.succeed(chalk19.green(`Task updated to ${status}.`));
4226
+ spinner.succeed(chalk20.green(`Task updated to ${status}.`));
4204
4227
  if (status === "IN_PROGRESS") {
4205
- console.log(chalk19.blue(`
4228
+ console.log(chalk20.blue(`
4206
4229
  \u{1F4A1} Tip: Provide 'Frank' with context by mentioning @.cursorrules in your chat.`));
4207
4230
  }
4208
4231
  } catch (e) {
4209
- spinner.fail(chalk19.red(`Failed: ${e.message}`));
4232
+ spinner.fail(chalk20.red(`Failed: ${e.message}`));
4210
4233
  }
4211
4234
  }
4212
4235
  async function finishTask(taskId) {
4213
4236
  console.log("");
4214
- console.log(chalk19.bold.yellow("\u{1F6E1}\uFE0F FRANK'S QUALITY GATE"));
4215
- console.log(chalk19.dim("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
4237
+ console.log(chalk20.bold.yellow("\u{1F6E1}\uFE0F FRANK'S QUALITY GATE"));
4238
+ console.log(chalk20.dim("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
4216
4239
  const auditSpinner = ora9(" Analyzing architectural integrity...").start();
4217
4240
  await new Promise((r) => setTimeout(r, 1500));
4218
4241
  auditSpinner.succeed("Architecture: VALIDATED (SEC-ARCH-01 Pass)");
4219
4242
  await setTaskStatus(taskId, "COMPLETED");
4220
4243
  console.log("");
4221
- console.log(chalk19.bold.green("\u{1F389} TASK COMPLETE! Momentum Preserved."));
4244
+ console.log(chalk20.bold.green("\u{1F389} TASK COMPLETE! Momentum Preserved."));
4222
4245
  const { projectId, apiKey, apiUrl } = getContext();
4223
4246
  await suggestNextMove(projectId, apiKey, apiUrl);
4224
4247
  }
@@ -4236,7 +4259,7 @@ function getContext() {
4236
4259
  init_esm_shims();
4237
4260
  init_config();
4238
4261
  import { Command as Command13 } from "commander";
4239
- import chalk20 from "chalk";
4262
+ import chalk21 from "chalk";
4240
4263
  import ora10 from "ora";
4241
4264
  import chokidar2 from "chokidar";
4242
4265
  import fs19 from "fs/promises";
@@ -4246,15 +4269,15 @@ import axios16 from "axios";
4246
4269
  function createWatchCommand() {
4247
4270
  const watch2 = new Command13("watch");
4248
4271
  watch2.description("Watch for changes and auto-verify roadmap tasks").option("--no-auto-commit", "Disable auto-commit on verification").option("--no-auto-push", "Disable auto-push after commit").option("--run-tests", "Run tests before committing").option("--test-command <cmd>", "Custom test command (default: npm test)").action(async (options) => {
4249
- console.log(chalk20.bold.blue("\u{1F52D} Rigstate Watch Mode"));
4250
- console.log(chalk20.dim("Monitoring for task completion..."));
4272
+ console.log(chalk21.bold.blue("\u{1F52D} Rigstate Watch Mode"));
4273
+ console.log(chalk21.dim("Monitoring for task completion..."));
4251
4274
  console.log("");
4252
4275
  let apiKey;
4253
4276
  let projectId;
4254
4277
  try {
4255
4278
  apiKey = getApiKey();
4256
4279
  } catch (e) {
4257
- console.log(chalk20.red('Not authenticated. Run "rigstate login" first.'));
4280
+ console.log(chalk21.red('Not authenticated. Run "rigstate login" first.'));
4258
4281
  return;
4259
4282
  }
4260
4283
  projectId = getProjectId();
@@ -4268,7 +4291,7 @@ function createWatchCommand() {
4268
4291
  }
4269
4292
  }
4270
4293
  if (!projectId) {
4271
- console.log(chalk20.red('No project context. Run "rigstate link" or "rigstate sync --project <id>" first.'));
4294
+ console.log(chalk21.red('No project context. Run "rigstate link" or "rigstate sync --project <id>" first.'));
4272
4295
  return;
4273
4296
  }
4274
4297
  const apiUrl = getApiUrl();
@@ -4278,8 +4301,8 @@ function createWatchCommand() {
4278
4301
  runTests: options.runTests || false,
4279
4302
  testCommand: options.testCommand || "npm test"
4280
4303
  };
4281
- console.log(chalk20.dim(`Auto-commit: ${config2.autoCommit ? "ON" : "OFF"}`));
4282
- console.log(chalk20.dim(`Auto-push: ${config2.autoPush ? "ON" : "OFF"}`));
4304
+ console.log(chalk21.dim(`Auto-commit: ${config2.autoCommit ? "ON" : "OFF"}`));
4305
+ console.log(chalk21.dim(`Auto-push: ${config2.autoPush ? "ON" : "OFF"}`));
4283
4306
  console.log("");
4284
4307
  const fetchActiveTask = async () => {
4285
4308
  try {
@@ -4346,7 +4369,7 @@ function createWatchCommand() {
4346
4369
  }, {
4347
4370
  headers: { Authorization: `Bearer ${apiKey}` }
4348
4371
  });
4349
- spinner.succeed(chalk20.green(`\u2705 Task #${task.step_number} completed: ${task.title}`));
4372
+ spinner.succeed(chalk21.green(`\u2705 Task #${task.step_number} completed: ${task.title}`));
4350
4373
  if (config2.autoCommit) {
4351
4374
  spinner.start("Committing changes...");
4352
4375
  try {
@@ -4368,7 +4391,7 @@ function createWatchCommand() {
4368
4391
  }
4369
4392
  }
4370
4393
  console.log("");
4371
- console.log(chalk20.blue("Watching for next task..."));
4394
+ console.log(chalk21.blue("Watching for next task..."));
4372
4395
  } catch (e) {
4373
4396
  spinner.fail(`Failed to complete task: ${e.message}`);
4374
4397
  }
@@ -4381,7 +4404,7 @@ function createWatchCommand() {
4381
4404
  const task = await fetchActiveTask();
4382
4405
  if (!task) {
4383
4406
  if (currentTask) {
4384
- console.log(chalk20.green("\u{1F389} All tasks completed! Watching for new tasks..."));
4407
+ console.log(chalk21.green("\u{1F389} All tasks completed! Watching for new tasks..."));
4385
4408
  currentTask = null;
4386
4409
  }
4387
4410
  isProcessing = false;
@@ -4390,10 +4413,10 @@ function createWatchCommand() {
4390
4413
  if (!currentTask || currentTask.id !== task.id) {
4391
4414
  currentTask = task;
4392
4415
  console.log("");
4393
- console.log(chalk20.bold.yellow(`\u{1F4CC} Active Task #${task.step_number}: ${task.title}`));
4394
- console.log(chalk20.dim(`Status: ${task.status}`));
4416
+ console.log(chalk21.bold.yellow(`\u{1F4CC} Active Task #${task.step_number}: ${task.title}`));
4417
+ console.log(chalk21.dim(`Status: ${task.status}`));
4395
4418
  if (task.verification_criteria) {
4396
- console.log(chalk20.dim("Verification: Auto-checking criteria..."));
4419
+ console.log(chalk21.dim("Verification: Auto-checking criteria..."));
4397
4420
  }
4398
4421
  }
4399
4422
  if (task.verification_criteria && Array.isArray(task.verification_criteria)) {
@@ -4406,7 +4429,7 @@ function createWatchCommand() {
4406
4429
  }
4407
4430
  }
4408
4431
  if (allPassed) {
4409
- console.log(chalk20.green("\u2713 All verification criteria passed!"));
4432
+ console.log(chalk21.green("\u2713 All verification criteria passed!"));
4410
4433
  await completeTask(task.id, task);
4411
4434
  currentTask = null;
4412
4435
  }
@@ -4431,11 +4454,11 @@ function createWatchCommand() {
4431
4454
  setTimeout(() => processActiveTask(), 500);
4432
4455
  }
4433
4456
  });
4434
- console.log(chalk20.dim("Watching for file changes... (Ctrl+C to exit)"));
4457
+ console.log(chalk21.dim("Watching for file changes... (Ctrl+C to exit)"));
4435
4458
  setInterval(() => processActiveTask(), 3e4);
4436
4459
  process.on("SIGINT", () => {
4437
4460
  console.log("");
4438
- console.log(chalk20.dim("Watch mode stopped."));
4461
+ console.log(chalk21.dim("Watch mode stopped."));
4439
4462
  watcher.close();
4440
4463
  process.exit(0);
4441
4464
  });
@@ -4447,7 +4470,7 @@ function createWatchCommand() {
4447
4470
  init_esm_shims();
4448
4471
  init_config();
4449
4472
  import { Command as Command14 } from "commander";
4450
- import chalk21 from "chalk";
4473
+ import chalk22 from "chalk";
4451
4474
  import ora11 from "ora";
4452
4475
  import axios17 from "axios";
4453
4476
  import { execSync as execSync5 } from "child_process";
@@ -4462,7 +4485,7 @@ function createFocusCommand() {
4462
4485
  try {
4463
4486
  apiKey = getApiKey();
4464
4487
  } catch (e) {
4465
- spinner.fail(chalk21.red('Not authenticated. Run "rigstate login" first.'));
4488
+ spinner.fail(chalk22.red('Not authenticated. Run "rigstate login" first.'));
4466
4489
  return;
4467
4490
  }
4468
4491
  projectId = getProjectId();
@@ -4476,7 +4499,7 @@ function createFocusCommand() {
4476
4499
  }
4477
4500
  }
4478
4501
  if (!projectId) {
4479
- spinner.fail(chalk21.red('No project context. Run "rigstate link" first.'));
4502
+ spinner.fail(chalk22.red('No project context. Run "rigstate link" first.'));
4480
4503
  return;
4481
4504
  }
4482
4505
  const apiUrl = getApiUrl();
@@ -4507,41 +4530,41 @@ function createFocusCommand() {
4507
4530
  const nextTask = activeTasks[0];
4508
4531
  spinner.stop();
4509
4532
  console.log("");
4510
- console.log(chalk21.bold.blue(`\u{1F4CC} Task #${nextTask.step_number || "?"}: ${nextTask.title}`));
4511
- const statusColor = nextTask.status === "IN_PROGRESS" ? chalk21.yellow : nextTask.status === "ACTIVE" ? chalk21.green : chalk21.dim;
4512
- console.log(chalk21.dim("Status: ") + statusColor(nextTask.status));
4513
- console.log(chalk21.dim("\u2500".repeat(60)));
4533
+ console.log(chalk22.bold.blue(`\u{1F4CC} Task #${nextTask.step_number || "?"}: ${nextTask.title}`));
4534
+ const statusColor = nextTask.status === "IN_PROGRESS" ? chalk22.yellow : nextTask.status === "ACTIVE" ? chalk22.green : chalk22.dim;
4535
+ console.log(chalk22.dim("Status: ") + statusColor(nextTask.status));
4536
+ console.log(chalk22.dim("\u2500".repeat(60)));
4514
4537
  if (nextTask.prompt_content) {
4515
- console.log(chalk21.white(nextTask.prompt_content));
4516
- console.log(chalk21.dim("\u2500".repeat(60)));
4538
+ console.log(chalk22.white(nextTask.prompt_content));
4539
+ console.log(chalk22.dim("\u2500".repeat(60)));
4517
4540
  if (options.copy !== false) {
4518
4541
  try {
4519
4542
  if (process.platform === "darwin") {
4520
4543
  execSync5("pbcopy", { input: nextTask.prompt_content });
4521
- console.log(chalk21.green("\u2705 Prompt copied to clipboard! Ready to paste (Cmd+V)."));
4544
+ console.log(chalk22.green("\u2705 Prompt copied to clipboard! Ready to paste (Cmd+V)."));
4522
4545
  } else if (process.platform === "linux") {
4523
4546
  try {
4524
4547
  execSync5("xclip -selection clipboard", { input: nextTask.prompt_content });
4525
- console.log(chalk21.green("\u2705 Prompt copied to clipboard!"));
4548
+ console.log(chalk22.green("\u2705 Prompt copied to clipboard!"));
4526
4549
  } catch (e) {
4527
- console.log(chalk21.yellow("\u2139\uFE0F Copy prompt manually (xclip not available)"));
4550
+ console.log(chalk22.yellow("\u2139\uFE0F Copy prompt manually (xclip not available)"));
4528
4551
  }
4529
4552
  } else {
4530
- console.log(chalk21.yellow("\u2139\uFE0F Copy prompt manually (Auto-copy not supported on this OS)"));
4553
+ console.log(chalk22.yellow("\u2139\uFE0F Copy prompt manually (Auto-copy not supported on this OS)"));
4531
4554
  }
4532
4555
  } catch (e) {
4533
4556
  }
4534
4557
  }
4535
4558
  } else {
4536
- console.log(chalk21.yellow("No prompt instructions available."));
4559
+ console.log(chalk22.yellow("No prompt instructions available."));
4537
4560
  if (nextTask.architectural_brief) {
4538
- console.log(chalk21.bold("Brief:"));
4561
+ console.log(chalk22.bold("Brief:"));
4539
4562
  console.log(nextTask.architectural_brief);
4540
4563
  }
4541
4564
  }
4542
4565
  console.log("");
4543
4566
  } catch (e) {
4544
- spinner.fail(chalk21.red(`Failed to fetch task: ${e.message}`));
4567
+ spinner.fail(chalk22.red(`Failed to fetch task: ${e.message}`));
4545
4568
  }
4546
4569
  });
4547
4570
  return focus;
@@ -4554,25 +4577,25 @@ init_env();
4554
4577
  init_esm_shims();
4555
4578
  init_config();
4556
4579
  import { Command as Command15 } from "commander";
4557
- import chalk22 from "chalk";
4580
+ import chalk23 from "chalk";
4558
4581
  function createConfigCommand() {
4559
4582
  const config2 = new Command15("config");
4560
4583
  config2.description("View or modify Rigstate configuration").argument("[key]", "Configuration key to view/set (api_key, project_id, api_url)").argument("[value]", "Value to set").action(async (key, value) => {
4561
4584
  if (!key) {
4562
- console.log(chalk22.bold("Rigstate Configuration"));
4563
- console.log(chalk22.dim("\u2500".repeat(40)));
4585
+ console.log(chalk23.bold("Rigstate Configuration"));
4586
+ console.log(chalk23.dim("\u2500".repeat(40)));
4564
4587
  try {
4565
4588
  const apiKey = getApiKey();
4566
- console.log(`${chalk22.cyan("api_key")}: ${apiKey.substring(0, 20)}...`);
4589
+ console.log(`${chalk23.cyan("api_key")}: ${apiKey.substring(0, 20)}...`);
4567
4590
  } catch (e) {
4568
- console.log(`${chalk22.cyan("api_key")}: ${chalk22.dim("(not set)")}`);
4591
+ console.log(`${chalk23.cyan("api_key")}: ${chalk23.dim("(not set)")}`);
4569
4592
  }
4570
4593
  const projectId = getProjectId();
4571
- console.log(`${chalk22.cyan("project_id")}: ${projectId || chalk22.dim("(not set)")}`);
4594
+ console.log(`${chalk23.cyan("project_id")}: ${projectId || chalk23.dim("(not set)")}`);
4572
4595
  const apiUrl = getApiUrl();
4573
- console.log(`${chalk22.cyan("api_url")}: ${apiUrl}`);
4596
+ console.log(`${chalk23.cyan("api_url")}: ${apiUrl}`);
4574
4597
  console.log("");
4575
- console.log(chalk22.dim('Use "rigstate config <key> <value>" to set a value.'));
4598
+ console.log(chalk23.dim('Use "rigstate config <key> <value>" to set a value.'));
4576
4599
  return;
4577
4600
  }
4578
4601
  if (!value) {
@@ -4582,36 +4605,36 @@ function createConfigCommand() {
4582
4605
  const apiKey = getApiKey();
4583
4606
  console.log(apiKey);
4584
4607
  } catch (e) {
4585
- console.log(chalk22.dim("(not set)"));
4608
+ console.log(chalk23.dim("(not set)"));
4586
4609
  }
4587
4610
  break;
4588
4611
  case "project_id":
4589
- console.log(getProjectId() || chalk22.dim("(not set)"));
4612
+ console.log(getProjectId() || chalk23.dim("(not set)"));
4590
4613
  break;
4591
4614
  case "api_url":
4592
4615
  console.log(getApiUrl());
4593
4616
  break;
4594
4617
  default:
4595
- console.log(chalk22.red(`Unknown config key: ${key}`));
4596
- console.log(chalk22.dim("Valid keys: api_key, project_id, api_url"));
4618
+ console.log(chalk23.red(`Unknown config key: ${key}`));
4619
+ console.log(chalk23.dim("Valid keys: api_key, project_id, api_url"));
4597
4620
  }
4598
4621
  return;
4599
4622
  }
4600
4623
  switch (key) {
4601
4624
  case "api_key":
4602
4625
  setApiKey(value);
4603
- console.log(chalk22.green(`\u2705 api_key updated`));
4626
+ console.log(chalk23.green(`\u2705 api_key updated`));
4604
4627
  break;
4605
4628
  case "project_id":
4606
4629
  setProjectId(value);
4607
- console.log(chalk22.green(`\u2705 project_id updated`));
4630
+ console.log(chalk23.green(`\u2705 project_id updated`));
4608
4631
  break;
4609
4632
  case "api_url":
4610
- console.log(chalk22.yellow("api_url is set via RIGSTATE_API_URL environment variable"));
4633
+ console.log(chalk23.yellow("api_url is set via RIGSTATE_API_URL environment variable"));
4611
4634
  break;
4612
4635
  default:
4613
- console.log(chalk22.red(`Unknown config key: ${key}`));
4614
- console.log(chalk22.dim("Valid keys: api_key, project_id"));
4636
+ console.log(chalk23.red(`Unknown config key: ${key}`));
4637
+ console.log(chalk23.dim("Valid keys: api_key, project_id"));
4615
4638
  }
4616
4639
  });
4617
4640
  return config2;
@@ -4620,7 +4643,7 @@ function createConfigCommand() {
4620
4643
  // src/commands/mcp.ts
4621
4644
  init_esm_shims();
4622
4645
  import { Command as Command16 } from "commander";
4623
- import chalk23 from "chalk";
4646
+ import chalk24 from "chalk";
4624
4647
  import { spawn } from "child_process";
4625
4648
  import path23 from "path";
4626
4649
  import fs21 from "fs";
@@ -4646,15 +4669,15 @@ function createMcpCommand() {
4646
4669
  }
4647
4670
  }
4648
4671
  if (!serverPath) {
4649
- console.error(chalk23.red("\u274C Error: Rigstate MCP Server binary not found."));
4650
- console.error(chalk23.yellow("Please ensure that the mcp package is built:"));
4651
- console.error(chalk23.white(" cd packages/mcp && npm run build"));
4672
+ console.error(chalk24.red("\u274C Error: Rigstate MCP Server binary not found."));
4673
+ console.error(chalk24.yellow("Please ensure that the mcp package is built:"));
4674
+ console.error(chalk24.white(" cd packages/mcp && npm run build"));
4652
4675
  console.error("");
4653
- console.error(chalk23.dim("Or run directly with:"));
4654
- console.error(chalk23.white(" npx @rigstate/mcp"));
4676
+ console.error(chalk24.dim("Or run directly with:"));
4677
+ console.error(chalk24.white(" npx @rigstate/mcp"));
4655
4678
  process.exit(1);
4656
4679
  }
4657
- console.log(chalk23.dim(`Starting MCP server from: ${serverPath}`));
4680
+ console.log(chalk24.dim(`Starting MCP server from: ${serverPath}`));
4658
4681
  if (process.env.VIBE_API_KEY && !process.env.RIGSTATE_API_KEY) {
4659
4682
  process.env.RIGSTATE_API_KEY = process.env.VIBE_API_KEY;
4660
4683
  }
@@ -4663,7 +4686,7 @@ function createMcpCommand() {
4663
4686
  stdio: ["inherit", "inherit", "inherit"]
4664
4687
  });
4665
4688
  worker.on("error", (err) => {
4666
- console.error(chalk23.red(`\u274C Failed to start MCP server: ${err.message}`));
4689
+ console.error(chalk24.red(`\u274C Failed to start MCP server: ${err.message}`));
4667
4690
  process.exit(1);
4668
4691
  });
4669
4692
  worker.on("exit", (code) => {
@@ -4678,7 +4701,7 @@ function createMcpCommand() {
4678
4701
  // src/commands/nexus.ts
4679
4702
  init_esm_shims();
4680
4703
  import { Command as Command17 } from "commander";
4681
- import chalk26 from "chalk";
4704
+ import chalk27 from "chalk";
4682
4705
 
4683
4706
  // src/nexus/dispatcher.ts
4684
4707
  init_esm_shims();
@@ -4746,7 +4769,7 @@ var HiveScrubber = class {
4746
4769
  };
4747
4770
 
4748
4771
  // src/hive/gateway.ts
4749
- import chalk24 from "chalk";
4772
+ import chalk25 from "chalk";
4750
4773
  var HiveGateway = class {
4751
4774
  client;
4752
4775
  enabled;
@@ -4756,7 +4779,7 @@ var HiveGateway = class {
4756
4779
  constructor(baseUrl, token) {
4757
4780
  this.enabled = !!token;
4758
4781
  if (!this.enabled) {
4759
- console.log(chalk24.dim("\u26A0\uFE0F Hive Gateway disabled (No Token provided). Running in localized mode."));
4782
+ console.log(chalk25.dim("\u26A0\uFE0F Hive Gateway disabled (No Token provided). Running in localized mode."));
4760
4783
  }
4761
4784
  this.client = axios18.create({
4762
4785
  baseURL: baseUrl,
@@ -4776,23 +4799,23 @@ var HiveGateway = class {
4776
4799
  if (!this.enabled) return false;
4777
4800
  const now = Date.now();
4778
4801
  if (now - this.lastSignalTime < this.MIN_INTERVAL_MS) {
4779
- console.warn(chalk24.yellow("\u23F3 Hive Gateway Throttled. Signal dropped to preventing spam."));
4802
+ console.warn(chalk25.yellow("\u23F3 Hive Gateway Throttled. Signal dropped to preventing spam."));
4780
4803
  return false;
4781
4804
  }
4782
4805
  const scrubResult = HiveScrubber.scrub(signal.ruleContent);
4783
4806
  if (scrubResult.riskScore > 20) {
4784
- console.error(chalk24.red(`\u{1F6D1} HIVE BLOCKED: Signal contains sensitive data (Risk: ${scrubResult.riskScore})`));
4807
+ console.error(chalk25.red(`\u{1F6D1} HIVE BLOCKED: Signal contains sensitive data (Risk: ${scrubResult.riskScore})`));
4785
4808
  return false;
4786
4809
  }
4787
4810
  try {
4788
- console.log(chalk24.blue(`\u{1F4E1} Uplinking to Hive... [${signal.vector}]`));
4811
+ console.log(chalk25.blue(`\u{1F4E1} Uplinking to Hive... [${signal.vector}]`));
4789
4812
  const payload = { ...signal, ruleContent: scrubResult.sanitizedContent };
4790
4813
  await this.client.post("/signal", payload);
4791
4814
  this.lastSignalTime = now;
4792
- console.log(chalk24.green("\u2705 Signal Received by Hive Core. Knowledge Shared."));
4815
+ console.log(chalk25.green("\u2705 Signal Received by Hive Core. Knowledge Shared."));
4793
4816
  return true;
4794
4817
  } catch (error) {
4795
- console.error(chalk24.red(`\u274C Hive Transmission Failed: ${error.message}`));
4818
+ console.error(chalk25.red(`\u274C Hive Transmission Failed: ${error.message}`));
4796
4819
  return false;
4797
4820
  }
4798
4821
  }
@@ -4800,37 +4823,37 @@ var HiveGateway = class {
4800
4823
 
4801
4824
  // src/utils/logger.ts
4802
4825
  init_esm_shims();
4803
- import chalk25 from "chalk";
4826
+ import chalk26 from "chalk";
4804
4827
  var Logger = class {
4805
4828
  static formatMessage(level, message, context) {
4806
4829
  const timestamp = (/* @__PURE__ */ new Date()).toISOString();
4807
4830
  let prefix = "";
4808
4831
  switch (level) {
4809
4832
  case "INFO" /* INFO */:
4810
- prefix = chalk25.blue(`[${"INFO" /* INFO */}]`);
4833
+ prefix = chalk26.blue(`[${"INFO" /* INFO */}]`);
4811
4834
  break;
4812
4835
  case "WARN" /* WARN */:
4813
- prefix = chalk25.yellow(`[${"WARN" /* WARN */}]`);
4836
+ prefix = chalk26.yellow(`[${"WARN" /* WARN */}]`);
4814
4837
  break;
4815
4838
  case "ERROR" /* ERROR */:
4816
- prefix = chalk25.red(`[${"ERROR" /* ERROR */}]`);
4839
+ prefix = chalk26.red(`[${"ERROR" /* ERROR */}]`);
4817
4840
  break;
4818
4841
  case "DEBUG" /* DEBUG */:
4819
- prefix = chalk25.gray(`[${"DEBUG" /* DEBUG */}]`);
4842
+ prefix = chalk26.gray(`[${"DEBUG" /* DEBUG */}]`);
4820
4843
  break;
4821
4844
  }
4822
- let output = `${chalk25.gray(timestamp)} ${prefix} ${message}`;
4845
+ let output = `${chalk26.gray(timestamp)} ${prefix} ${message}`;
4823
4846
  if (context) {
4824
4847
  if (context instanceof Error) {
4825
4848
  output += `
4826
- ${chalk25.red(context.stack || context.message)}`;
4849
+ ${chalk26.red(context.stack || context.message)}`;
4827
4850
  } else if (typeof context === "object") {
4828
4851
  try {
4829
4852
  output += `
4830
- ${chalk25.gray(JSON.stringify(context, null, 2))}`;
4853
+ ${chalk26.gray(JSON.stringify(context, null, 2))}`;
4831
4854
  } catch (e) {
4832
4855
  output += `
4833
- ${chalk25.gray("[Circular or invalid object]")}`;
4856
+ ${chalk26.gray("[Circular or invalid object]")}`;
4834
4857
  }
4835
4858
  } else {
4836
4859
  output += ` ${String(context)}`;
@@ -4950,10 +4973,10 @@ import inquirer3 from "inquirer";
4950
4973
  function createNexusCommand() {
4951
4974
  const command = new Command17("nexus");
4952
4975
  command.description("Interact with The Multi-Agent Nexus (Phase 8)").argument("<intent>", "The natural language instruction for the swarm").option("--dry-run", "Enable Dry-Run mode (Kill-Switch Active)", true).option("--force", "Disable Dry-Run mode (DANGEROUS)", false).action(async (intent, options) => {
4953
- console.log(chalk26.bold.magenta("\n\u{1F981} Welcome to The Nexus (Phase 8)\n"));
4976
+ console.log(chalk27.bold.magenta("\n\u{1F981} Welcome to The Nexus (Phase 8)\n"));
4954
4977
  const dryRun = !options.force;
4955
4978
  if (!dryRun) {
4956
- console.log(chalk26.black.bgYellow(" WARNING ") + chalk26.yellow(" Dry-Run disabled! Eitri is authorized to write code."));
4979
+ console.log(chalk27.black.bgYellow(" WARNING ") + chalk27.yellow(" Dry-Run disabled! Eitri is authorized to write code."));
4957
4980
  const { confirm } = await inquirer3.prompt([{
4958
4981
  type: "confirm",
4959
4982
  name: "confirm",
@@ -4974,26 +4997,26 @@ function createNexusCommand() {
4974
4997
  };
4975
4998
  const dispatcher = new NexusDispatcher(context);
4976
4999
  dispatcher.on("order:created", (o) => {
4977
- console.log(chalk26.blue(`\u{1F195} [${o.id.slice(0, 6)}] Order Created: `) + o.intent);
5000
+ console.log(chalk27.blue(`\u{1F195} [${o.id.slice(0, 6)}] Order Created: `) + o.intent);
4978
5001
  });
4979
5002
  dispatcher.on("order:started", (o) => {
4980
- console.log(chalk26.yellow(`\u23F3 [${o.id.slice(0, 6)}] Processing...`));
5003
+ console.log(chalk27.yellow(`\u23F3 [${o.id.slice(0, 6)}] Processing...`));
4981
5004
  });
4982
5005
  dispatcher.on("order:blocked", (o) => {
4983
- console.log(chalk26.red(`\u{1F6D1} [${o.id.slice(0, 6)}] BLOCKED by Kill-Switch`));
4984
- console.log(chalk26.dim(` Target: ${o.targetAgent} | Action: ${o.action}`));
4985
- console.log(chalk26.dim(" Run with --force to execute automatically (NOT RECOMMENDED)."));
5006
+ console.log(chalk27.red(`\u{1F6D1} [${o.id.slice(0, 6)}] BLOCKED by Kill-Switch`));
5007
+ console.log(chalk27.dim(` Target: ${o.targetAgent} | Action: ${o.action}`));
5008
+ console.log(chalk27.dim(" Run with --force to execute automatically (NOT RECOMMENDED)."));
4986
5009
  });
4987
- dispatcher.on("agent:SINDRE", (o) => console.log(chalk26.cyan(`\u{1F916} Sindre (Vault): I'm on it! (${o.action})`)));
4988
- dispatcher.on("agent:EITRI", (o) => console.log(chalk26.green(`\u{1F477} Eitri (Smith): Ready to build! (${o.action})`)));
4989
- console.log(chalk26.dim("\u{1F9E0} Frank is analyzing your intent..."));
5010
+ dispatcher.on("agent:SINDRE", (o) => console.log(chalk27.cyan(`\u{1F916} Sindre (Vault): I'm on it! (${o.action})`)));
5011
+ dispatcher.on("agent:EITRI", (o) => console.log(chalk27.green(`\u{1F477} Eitri (Smith): Ready to build! (${o.action})`)));
5012
+ console.log(chalk27.dim("\u{1F9E0} Frank is analyzing your intent..."));
4990
5013
  await new Promise((r) => setTimeout(r, 800));
4991
5014
  if (intent.toLowerCase().includes("db") || intent.toLowerCase().includes("database")) {
4992
5015
  await dispatcher.dispatch("FRANK", "SINDRE", intent, "db.analyze", { raw: intent });
4993
5016
  } else if (intent.toLowerCase().includes("create") || intent.toLowerCase().includes("code")) {
4994
5017
  await dispatcher.dispatch("FRANK", "EITRI", intent, "fs.write", { path: "src/demo.ts", content: "// demo" });
4995
5018
  } else {
4996
- console.log(chalk26.gray("Frank didn't understand. Try 'create file' or 'check database'."));
5019
+ console.log(chalk27.gray("Frank didn't understand. Try 'create file' or 'check database'."));
4997
5020
  }
4998
5021
  });
4999
5022
  return command;
@@ -5007,25 +5030,25 @@ init_esm_shims();
5007
5030
  init_governance();
5008
5031
  init_config();
5009
5032
  import { Command as Command18 } from "commander";
5010
- import chalk27 from "chalk";
5033
+ import chalk28 from "chalk";
5011
5034
  import axios19 from "axios";
5012
5035
  function createOverrideCommand() {
5013
5036
  const override = new Command18("override");
5014
5037
  override.description("Emergency Override for Governance Soft Locks").argument("<violationId>", 'ID of the violation to override (or "all")').requiredOption("-r, --reason <reason>", "Description of why this override is necessary").action(async (violationId, options) => {
5015
5038
  const { reason } = options;
5016
- console.log(chalk27.bold(`
5039
+ console.log(chalk28.bold(`
5017
5040
  \u{1F513} Initiating Governance Override Protocol...`));
5018
5041
  const session = await getSessionState(process.cwd());
5019
5042
  if (session.status !== "SOFT_LOCK") {
5020
- console.log(chalk27.yellow(" Info: Session is not currently locked."));
5043
+ console.log(chalk28.yellow(" Info: Session is not currently locked."));
5021
5044
  return;
5022
5045
  }
5023
- console.log(chalk27.dim(` Active Violation: ${session.active_violation}`));
5024
- console.log(chalk27.dim(` Reason Provided: "${reason}"`));
5046
+ console.log(chalk28.dim(` Active Violation: ${session.active_violation}`));
5047
+ console.log(chalk28.dim(` Reason Provided: "${reason}"`));
5025
5048
  const success = await performOverride(violationId, reason, process.cwd());
5026
5049
  if (success) {
5027
- console.log(chalk27.green(` \u2705 Session UNLOCKED.`));
5028
- console.log(chalk27.dim(` This event has been logged to the Mission Report.`));
5050
+ console.log(chalk28.green(` \u2705 Session UNLOCKED.`));
5051
+ console.log(chalk28.dim(` This event has been logged to the Mission Report.`));
5029
5052
  try {
5030
5053
  const projectId = getProjectId();
5031
5054
  if (projectId) {
@@ -5042,13 +5065,13 @@ function createOverrideCommand() {
5042
5065
  }, {
5043
5066
  headers: { Authorization: `Bearer ${apiKey}` }
5044
5067
  });
5045
- console.log(chalk27.dim(` \u2601 Audit log synced to Cloud.`));
5068
+ console.log(chalk28.dim(` \u2601 Audit log synced to Cloud.`));
5046
5069
  }
5047
5070
  } catch (e) {
5048
- console.log(chalk27.dim(` (Cloud audit sync failed: ${e.message})`));
5071
+ console.log(chalk28.dim(` (Cloud audit sync failed: ${e.message})`));
5049
5072
  }
5050
5073
  } else {
5051
- console.log(chalk27.red(` \u{1F6D1} Override Failed. Check project configuration.`));
5074
+ console.log(chalk28.red(` \u{1F6D1} Override Failed. Check project configuration.`));
5052
5075
  }
5053
5076
  });
5054
5077
  return override;
@@ -5058,7 +5081,7 @@ function createOverrideCommand() {
5058
5081
  init_esm_shims();
5059
5082
  init_config();
5060
5083
  import { Command as Command19 } from "commander";
5061
- import chalk28 from "chalk";
5084
+ import chalk29 from "chalk";
5062
5085
  import ora12 from "ora";
5063
5086
  import axios20 from "axios";
5064
5087
  import inquirer4 from "inquirer";
@@ -5069,7 +5092,7 @@ function createIdeaCommand() {
5069
5092
  const apiUrl = getApiUrl();
5070
5093
  const projectId = getProjectId();
5071
5094
  if (!projectId) {
5072
- console.error(chalk28.red("Project context missing. Run rigstate link."));
5095
+ console.error(chalk29.red("Project context missing. Run rigstate link."));
5073
5096
  process.exit(1);
5074
5097
  }
5075
5098
  let ideaTitle = title;
@@ -5105,14 +5128,14 @@ function createIdeaCommand() {
5105
5128
  { headers: { Authorization: `Bearer ${apiKey}` } }
5106
5129
  );
5107
5130
  if (response.data.success) {
5108
- spinner.succeed(chalk28.green("Idea Captured! \u{1F4A1}"));
5109
- console.log(chalk28.dim(`ID: ${response.data.data?.id || "Saved"}`));
5131
+ spinner.succeed(chalk29.green("Idea Captured! \u{1F4A1}"));
5132
+ console.log(chalk29.dim(`ID: ${response.data.data?.id || "Saved"}`));
5110
5133
  } else {
5111
5134
  throw new Error(response.data.error);
5112
5135
  }
5113
5136
  } catch (e) {
5114
5137
  const errorDetail = e.response?.data?.error || e.message;
5115
- console.error(chalk28.red(`
5138
+ console.error(chalk29.red(`
5116
5139
  Failed to capture idea: ${errorDetail}`));
5117
5140
  }
5118
5141
  });
@@ -5122,7 +5145,7 @@ Failed to capture idea: ${errorDetail}`));
5122
5145
  init_esm_shims();
5123
5146
  init_config();
5124
5147
  import { Command as Command20 } from "commander";
5125
- import chalk29 from "chalk";
5148
+ import chalk30 from "chalk";
5126
5149
  import ora13 from "ora";
5127
5150
  import inquirer5 from "inquirer";
5128
5151
  import fs22 from "fs/promises";
@@ -9698,7 +9721,7 @@ function createReleaseCommand() {
9698
9721
  if (type === "major") newVersion = `${major + 1}.0.0`;
9699
9722
  if (type === "minor") newVersion = `${major}.${minor + 1}.0`;
9700
9723
  if (type === "patch") newVersion = `${major}.${minor}.${patch + 1}`;
9701
- spinner.succeed(`Bumping ${pkg.name} from ${chalk29.dim(currentVersion)} to ${chalk29.green(newVersion)}`);
9724
+ spinner.succeed(`Bumping ${pkg.name} from ${chalk30.dim(currentVersion)} to ${chalk30.green(newVersion)}`);
9702
9725
  const { confirm } = await inquirer5.prompt([{
9703
9726
  type: "confirm",
9704
9727
  name: "confirm",
@@ -9728,7 +9751,7 @@ function createReleaseCommand() {
9728
9751
  await git.addTag(`v${newVersion}`);
9729
9752
  await git.push();
9730
9753
  await git.pushTags();
9731
- spinner.succeed(chalk29.bold.green(`\u{1F680} Release v${newVersion} shipped!`));
9754
+ spinner.succeed(chalk30.bold.green(`\u{1F680} Release v${newVersion} shipped!`));
9732
9755
  } catch (e) {
9733
9756
  spinner.fail(e.message);
9734
9757
  }
@@ -9746,7 +9769,7 @@ function getContext2() {
9746
9769
  init_esm_shims();
9747
9770
  init_config();
9748
9771
  import { Command as Command21 } from "commander";
9749
- import chalk30 from "chalk";
9772
+ import chalk31 from "chalk";
9750
9773
  import ora14 from "ora";
9751
9774
  import axios21 from "axios";
9752
9775
  function createRoadmapCommand() {
@@ -9757,7 +9780,7 @@ function createRoadmapCommand() {
9757
9780
  const apiUrl = getApiUrl();
9758
9781
  const projectId = getProjectId();
9759
9782
  if (!projectId) {
9760
- spinner.fail(chalk30.red('Project context missing. Run "rigstate link".'));
9783
+ spinner.fail(chalk31.red('Project context missing. Run "rigstate link".'));
9761
9784
  return;
9762
9785
  }
9763
9786
  const response = await axios21.get(
@@ -9770,11 +9793,11 @@ function createRoadmapCommand() {
9770
9793
  const tasks = response.data.data.roadmap || [];
9771
9794
  spinner.stop();
9772
9795
  if (tasks.length === 0) {
9773
- console.log(chalk30.yellow("\nRoadmap is empty. Use the web UI to define your journey."));
9796
+ console.log(chalk31.yellow("\nRoadmap is empty. Use the web UI to define your journey."));
9774
9797
  return;
9775
9798
  }
9776
- console.log("\n" + chalk30.bold.underline("\u{1F6F0}\uFE0F TACTICAL OVERVIEW: PROJECT ROADMAP"));
9777
- console.log(chalk30.dim("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
9799
+ console.log("\n" + chalk31.bold.underline("\u{1F6F0}\uFE0F TACTICAL OVERVIEW: PROJECT ROADMAP"));
9800
+ console.log(chalk31.dim("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
9778
9801
  const columns = {
9779
9802
  "IN_PROGRESS": [],
9780
9803
  "ACTIVE": [],
@@ -9786,14 +9809,14 @@ function createRoadmapCommand() {
9786
9809
  columns[t.status].push(t);
9787
9810
  }
9788
9811
  });
9789
- displayColumn("\u{1F525} IN PROGRESS", columns.IN_PROGRESS, chalk30.yellow);
9790
- displayColumn("\u25B6\uFE0F ACTIVE / NEXT", columns.ACTIVE, chalk30.green);
9791
- displayColumn("\u{1F512} LOCKED", columns.LOCKED, chalk30.blue);
9792
- displayColumn("\u23F3 PENDING", columns.PENDING, chalk30.gray);
9793
- console.log(chalk30.dim("\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
9794
- console.log(chalk30.dim(`Total: ${tasks.length} tasks | Run "rigstate work" to start coding.`));
9812
+ displayColumn("\u{1F525} IN PROGRESS", columns.IN_PROGRESS, chalk31.yellow);
9813
+ displayColumn("\u25B6\uFE0F ACTIVE / NEXT", columns.ACTIVE, chalk31.green);
9814
+ displayColumn("\u{1F512} LOCKED", columns.LOCKED, chalk31.blue);
9815
+ displayColumn("\u23F3 PENDING", columns.PENDING, chalk31.gray);
9816
+ console.log(chalk31.dim("\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
9817
+ console.log(chalk31.dim(`Total: ${tasks.length} tasks | Run "rigstate work" to start coding.`));
9795
9818
  } catch (e) {
9796
- spinner.fail(chalk30.red(`
9819
+ spinner.fail(chalk31.red(`
9797
9820
  Failed to fetch roadmap: ${e.message}`));
9798
9821
  }
9799
9822
  });
@@ -9804,8 +9827,8 @@ function displayColumn(title, items, color) {
9804
9827
  ${color.bold(title)}`);
9805
9828
  items.sort((a, b) => a.step_number - b.step_number).forEach((item) => {
9806
9829
  const id = `T-${item.step_number}`.padEnd(8);
9807
- const priority = item.priority === "MVP" ? chalk30.magenta(" [MVP]") : "";
9808
- console.log(` ${color("\u2022")} ${chalk30.bold(id)} ${item.title}${priority}`);
9830
+ const priority = item.priority === "MVP" ? chalk31.magenta(" [MVP]") : "";
9831
+ console.log(` ${color("\u2022")} ${chalk31.bold(id)} ${item.title}${priority}`);
9809
9832
  });
9810
9833
  }
9811
9834
 
@@ -9813,7 +9836,7 @@ ${color.bold(title)}`);
9813
9836
  init_esm_shims();
9814
9837
  init_config();
9815
9838
  import { Command as Command22 } from "commander";
9816
- import chalk31 from "chalk";
9839
+ import chalk32 from "chalk";
9817
9840
  import ora15 from "ora";
9818
9841
  import inquirer6 from "inquirer";
9819
9842
  function createCouncilCommand() {
@@ -9824,7 +9847,7 @@ function createCouncilCommand() {
9824
9847
  const apiUrl = getApiUrl();
9825
9848
  const projectId = getProjectId();
9826
9849
  if (!projectId) {
9827
- console.error(chalk31.red('Project context missing. Run "rigstate link".'));
9850
+ console.error(chalk32.red('Project context missing. Run "rigstate link".'));
9828
9851
  return;
9829
9852
  }
9830
9853
  let sessionTopic = topic;
@@ -9836,25 +9859,25 @@ function createCouncilCommand() {
9836
9859
  }]);
9837
9860
  sessionTopic = ans.topic;
9838
9861
  }
9839
- console.log(chalk31.bold.magenta("\n\u2696\uFE0F CONVENING THE COUNCIL OF SOVEREIGNTY\n"));
9840
- console.log(chalk31.dim(`Topic: ${sessionTopic}`));
9841
- console.log(chalk31.dim("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
9842
- console.log(chalk31.yellow("\n\u{1F9E0} Frank (Architect): Analyzing alignment with Project DNA..."));
9862
+ console.log(chalk32.bold.magenta("\n\u2696\uFE0F CONVENING THE COUNCIL OF SOVEREIGNTY\n"));
9863
+ console.log(chalk32.dim(`Topic: ${sessionTopic}`));
9864
+ console.log(chalk32.dim("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
9865
+ console.log(chalk32.yellow("\n\u{1F9E0} Frank (Architect): Analyzing alignment with Project DNA..."));
9843
9866
  await sleep(1500);
9844
- console.log(chalk31.gray(' "This decision affects our backend scalability. I recommend caution."'));
9845
- console.log(chalk31.blue("\n\u{1F6E1}\uFE0F Sigrid (Curator): Checking historical precedents..."));
9867
+ console.log(chalk32.gray(' "This decision affects our backend scalability. I recommend caution."'));
9868
+ console.log(chalk32.blue("\n\u{1F6E1}\uFE0F Sigrid (Curator): Checking historical precedents..."));
9846
9869
  await sleep(1500);
9847
- console.log(chalk31.gray(` "Similar patterns in other projects led to technical debt. Let's review RLS."`));
9848
- console.log(chalk31.green("\n\u{1F4D0} Einar (Analyst): Scanning dependency impact..."));
9870
+ console.log(chalk32.gray(` "Similar patterns in other projects led to technical debt. Let's review RLS."`));
9871
+ console.log(chalk32.green("\n\u{1F4D0} Einar (Analyst): Scanning dependency impact..."));
9849
9872
  await sleep(1500);
9850
- console.log(chalk31.gray(' "Implementation will require updating 3 core services."'));
9851
- console.log(chalk31.bold.white("\n\u{1F4CB} [FINAL DECISION RECORD]"));
9852
- console.log(chalk31.white(" Status: Approved with conditions"));
9853
- console.log(chalk31.white(" Rationale: Value outweighs migration cost. Ensure SEC-SQL-01 compliance."));
9854
- console.log(chalk31.dim("\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
9855
- console.log(chalk31.green("\u2705 Decision saved to Project Brain (ADR-102)"));
9873
+ console.log(chalk32.gray(' "Implementation will require updating 3 core services."'));
9874
+ console.log(chalk32.bold.white("\n\u{1F4CB} [FINAL DECISION RECORD]"));
9875
+ console.log(chalk32.white(" Status: Approved with conditions"));
9876
+ console.log(chalk32.white(" Rationale: Value outweighs migration cost. Ensure SEC-SQL-01 compliance."));
9877
+ console.log(chalk32.dim("\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
9878
+ console.log(chalk32.green("\u2705 Decision saved to Project Brain (ADR-102)"));
9856
9879
  } catch (e) {
9857
- console.error(chalk31.red(`
9880
+ console.error(chalk32.red(`
9858
9881
  Council session aborted: ${e.message}`));
9859
9882
  }
9860
9883
  });
@@ -9900,19 +9923,19 @@ program.hook("preAction", async () => {
9900
9923
  });
9901
9924
  program.on("--help", () => {
9902
9925
  console.log("");
9903
- console.log(chalk32.bold("Examples:"));
9926
+ console.log(chalk33.bold("Examples:"));
9904
9927
  console.log("");
9905
- console.log(chalk32.cyan(" $ rigstate login sk_rigstate_your_api_key"));
9906
- console.log(chalk32.dim(" Authenticate with your Rigstate API key"));
9928
+ console.log(chalk33.cyan(" $ rigstate login sk_rigstate_your_api_key"));
9929
+ console.log(chalk33.dim(" Authenticate with your Rigstate API key"));
9907
9930
  console.log("");
9908
- console.log(chalk32.cyan(" $ rigstate scan"));
9909
- console.log(chalk32.dim(" Scan the current directory"));
9931
+ console.log(chalk33.cyan(" $ rigstate scan"));
9932
+ console.log(chalk33.dim(" Scan the current directory"));
9910
9933
  console.log("");
9911
- console.log(chalk32.cyan(" $ rigstate scan ./src --project abc123"));
9912
- console.log(chalk32.dim(" Scan a specific directory with project ID"));
9934
+ console.log(chalk33.cyan(" $ rigstate scan ./src --project abc123"));
9935
+ console.log(chalk33.dim(" Scan a specific directory with project ID"));
9913
9936
  console.log("");
9914
- console.log(chalk32.cyan(" $ rigstate scan --json"));
9915
- console.log(chalk32.dim(" Output results in JSON format (useful for IDE extensions)"));
9937
+ console.log(chalk33.cyan(" $ rigstate scan --json"));
9938
+ console.log(chalk33.dim(" Output results in JSON format (useful for IDE extensions)"));
9916
9939
  console.log("");
9917
9940
  });
9918
9941
  program.parse(process.argv);