archondev 2.1.2 → 2.1.4

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/README.md CHANGED
@@ -9,10 +9,10 @@ The complete AI development system. It manages your entire development process s
9
9
 
10
10
  ```bash
11
11
  # macOS/Linux:
12
- npm install -g archon && archon
12
+ npm install -g archondev && archon
13
13
 
14
14
  # Windows PowerShell:
15
- npm install -g archon; archon
15
+ npm install -g archondev; archon
16
16
  ```
17
17
 
18
18
  **What you get:**
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  bugReport
3
- } from "./chunk-62OWYYHV.js";
3
+ } from "./chunk-KF6MFAB4.js";
4
4
  import "./chunk-5IQKC2TD.js";
5
5
  import "./chunk-A7QU6JC6.js";
6
6
  import "./chunk-IVY5AHPS.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-M4LGRTLC.js";
5
5
  import {
6
6
  loadAtom
7
- } from "./chunk-UZT2L27M.js";
7
+ } from "./chunk-RCW22YNI.js";
8
8
  import {
9
9
  transitionAtom
10
10
  } from "./chunk-5IQKC2TD.js";
@@ -4815,7 +4815,7 @@ function createPrompt() {
4815
4815
  }
4816
4816
  async function execute(atomId, options) {
4817
4817
  if (options.parallel && options.parallel.length > 0) {
4818
- const { parallelExecute } = await import("./parallel-N67PD2HF.js");
4818
+ const { parallelExecute } = await import("./parallel-5WJAXTYL.js");
4819
4819
  const allAtomIds = [atomId, ...options.parallel];
4820
4820
  await parallelExecute(allAtomIds);
4821
4821
  return;
@@ -4928,9 +4928,9 @@ Repository: ${repoUrl}`));
4928
4928
  });
4929
4929
  if (conflictReport.hasConflicts) {
4930
4930
  console.log(chalk3.yellow(`
4931
- \u26A0 ${conflictReport.conflicts.length} conflict(s) detected:`));
4931
+ [!] ${conflictReport.conflicts.length} conflict(s) detected:`));
4932
4932
  for (const conflict of conflictReport.conflicts) {
4933
- const icon = conflict.severity === "BLOCKER" ? chalk3.red("\u2717") : chalk3.yellow("\u26A0");
4933
+ const icon = conflict.severity === "BLOCKER" ? chalk3.red("\u2717") : chalk3.yellow("[!]");
4934
4934
  console.log(` ${icon} [${conflict.type}] ${conflict.message}`);
4935
4935
  }
4936
4936
  if (conflictReport.blockerCount > 0) {
@@ -5051,7 +5051,7 @@ Running quality gates for ${targetEnvName}...`));
5051
5051
  if (learningResult.success && learningResult.entriesAdded > 0) {
5052
5052
  console.log(chalk3.green("\u2713 Learning captured to progress.txt"));
5053
5053
  } else {
5054
- console.log(chalk3.yellow("\u26A0 No learnings captured to progress.txt"));
5054
+ console.log(chalk3.yellow("[!] No learnings captured to progress.txt"));
5055
5055
  }
5056
5056
  }
5057
5057
  const agentsMdUpdater = new AgentsMdUpdater(cwd);
@@ -5059,7 +5059,7 @@ Running quality gates for ${targetEnvName}...`));
5059
5059
  if (verifyLearning) {
5060
5060
  const agentsMdCount = agentsMdResult.filesCreated.length + agentsMdResult.filesUpdated.length;
5061
5061
  if (agentsMdCount === 0) {
5062
- console.log(chalk3.yellow("\u26A0 No AGENTS.md updates (no reusable patterns found)"));
5062
+ console.log(chalk3.yellow("[!] No AGENTS.md updates (no reusable patterns found)"));
5063
5063
  } else {
5064
5064
  console.log(chalk3.green(`\u2713 Updated ${agentsMdCount} AGENTS.md file(s)`));
5065
5065
  }
@@ -636,7 +636,7 @@ async function displayCurrentSettings(profile, usage, providers) {
636
636
  console.log(` Secondary: ${formatModelDisplay(profile.pref_secondary_adversarial, defaults.secondary)}`);
637
637
  }
638
638
  async function changeBillingMode(currentTier) {
639
- console.log(chalk.bold("\n\u2501\u2501\u2501 Billing Mode \u2501\u2501\u2501\n"));
639
+ console.log(chalk.bold("\n-- Billing Mode --\n"));
640
640
  console.log(chalk.dim("Choose how you want to pay for AI usage:\n"));
641
641
  const byokSelected = currentTier === "BYOK";
642
642
  const creditsSelected = currentTier === "CREDITS";
@@ -673,7 +673,7 @@ async function changeBillingMode(currentTier) {
673
673
  }
674
674
  }
675
675
  async function setDefaultModelsMenu(profile, providers) {
676
- console.log(chalk.bold("\n\u2501\u2501\u2501 Default Models \u2501\u2501\u2501\n"));
676
+ console.log(chalk.bold("\n-- Default Models --\n"));
677
677
  const defaults = getDefaultAdversarialModels();
678
678
  console.log(` ${chalk.cyan("1")}) Fast Model: ${formatModelDisplay(profile.pref_fast_model, getDefaultModel("fast"))}`);
679
679
  console.log(` ${chalk.cyan("2")}) Thinking Model: ${formatModelDisplay(profile.pref_thinking_model, getDefaultModel("thinking"))}`);
@@ -723,7 +723,7 @@ async function setDefaultModelsMenu(profile, providers) {
723
723
  }
724
724
  }
725
725
  async function manageApiKeys() {
726
- console.log(chalk.bold("\n\u2501\u2501\u2501 API Keys \u2501\u2501\u2501\n"));
726
+ console.log(chalk.bold("\n-- API Keys --\n"));
727
727
  const providers = await getUserProviders();
728
728
  if (providers.length > 0) {
729
729
  console.log(chalk.blue("Configured providers:"));
@@ -772,7 +772,7 @@ async function manageApiKeys() {
772
772
  }
773
773
  }
774
774
  async function viewUsageDetails() {
775
- console.log(chalk.bold("\n\u2501\u2501\u2501 Usage Details \u2501\u2501\u2501\n"));
775
+ console.log(chalk.bold("\n-- Usage Details --\n"));
776
776
  const spinner = ora("Loading usage data...").start();
777
777
  const config = await loadConfig();
778
778
  const authToken = getAuthToken(config);
@@ -433,7 +433,7 @@ async function bugReport(title, options) {
433
433
  const prompt = createPrompt();
434
434
  const projectPath = process.cwd();
435
435
  try {
436
- console.log(chalk.blue("\n\u{1F4CB} Bug Report: ") + chalk.bold(title));
436
+ console.log(chalk.blue("\nBug Report: ") + chalk.bold(title));
437
437
  console.log(chalk.dim("\u2500".repeat(40)));
438
438
  const description = await prompt.ask(chalk.cyan("Description: "));
439
439
  console.log(chalk.cyan("Steps to reproduce (enter each step, empty line to finish):"));
@@ -501,11 +501,11 @@ async function bugReport(title, options) {
501
501
  }
502
502
  } catch (error) {
503
503
  console.log(chalk.yellow(`
504
- \u26A0 RCA generation failed: ${error instanceof Error ? error.message : "Unknown error"}`));
504
+ [!] RCA generation failed: ${error instanceof Error ? error.message : "Unknown error"}`));
505
505
  console.log(chalk.dim("Continuing without RCA..."));
506
506
  }
507
507
  } else {
508
- console.log(chalk.yellow("\n\u26A0 No API key configured. Skipping RCA."));
508
+ console.log(chalk.yellow("\n[!] No API key configured. Skipping RCA."));
509
509
  console.log(chalk.dim('Set ANTHROPIC_API_KEY or use "archon keys add anthropic"'));
510
510
  }
511
511
  }
@@ -534,7 +534,7 @@ async function bugReport(title, options) {
534
534
  console.log(chalk.green(`
535
535
  \u2705 Atom created: ${atom.externalId}`));
536
536
  console.log(chalk.dim(` Linked to: ${bug.id}`));
537
- console.log(chalk.bold("\n\u{1F4CB} Summary"));
537
+ console.log(chalk.bold("\nSummary"));
538
538
  console.log(chalk.dim("\u2500".repeat(40)));
539
539
  console.log(`Bug ID: ${chalk.cyan(bug.id)}`);
540
540
  console.log(`Atom ID: ${chalk.cyan(atom.externalId)}`);
@@ -1,15 +1,24 @@
1
1
  // src/cli/init.ts
2
2
  import { readdir, readFile, writeFile, mkdir } from "fs/promises";
3
- import { existsSync } from "fs";
3
+ import { existsSync, readFileSync } from "fs";
4
4
  import { join, extname } from "path";
5
5
  import { execSync } from "child_process";
6
6
  import chalk from "chalk";
7
7
  import ora from "ora";
8
8
  import readline from "readline";
9
9
  function isInitialized(cwd) {
10
- const archMdPath = join(cwd, "ARCHITECTURE.md");
11
10
  const archonDir = join(cwd, ".archon");
12
- return existsSync(archMdPath) || existsSync(archonDir);
11
+ if (existsSync(archonDir)) return true;
12
+ const archMdPath = join(cwd, "ARCHITECTURE.md");
13
+ if (existsSync(archMdPath)) {
14
+ try {
15
+ const content = readFileSync(archMdPath, "utf-8");
16
+ return content.startsWith("---") && content.includes("version:") && content.includes("qualityLevel:");
17
+ } catch {
18
+ return false;
19
+ }
20
+ }
21
+ return false;
13
22
  }
14
23
  var LANGUAGE_EXTENSIONS = {
15
24
  ".ts": "TypeScript",
@@ -48,7 +57,7 @@ async function init(options = {}) {
48
57
  const cwd = process.cwd();
49
58
  const archMdPath = join(cwd, "ARCHITECTURE.md");
50
59
  const archonDir = join(cwd, ".archon");
51
- console.log(chalk.blue("\n\u{1F3DB}\uFE0F ArchonDev Initialization\n"));
60
+ console.log(chalk.blue("\n[INIT] ArchonDev Initialization\n"));
52
61
  if (existsSync(archMdPath)) {
53
62
  const overwrite = await promptYesNo("ARCHITECTURE.md already exists. Overwrite?", false);
54
63
  if (!overwrite) {
@@ -21,7 +21,7 @@ function formatStatus(status) {
21
21
  case "completed":
22
22
  return chalk.green("\u2713 completed");
23
23
  case "needs_fix":
24
- return chalk.red("\u26A0 needs_fix");
24
+ return chalk.red("[!] needs_fix");
25
25
  default:
26
26
  return status;
27
27
  }
@@ -448,7 +448,7 @@ async function reviewPlan() {
448
448
  console.log(` ${task.fixPlan}`);
449
449
  }
450
450
  if (task.architectureImpact) {
451
- console.log(chalk.yellow(" \u26A0 Architecture Impact:"));
451
+ console.log(chalk.yellow(" [!] Architecture Impact:"));
452
452
  console.log(` ${task.architectureImpact}`);
453
453
  }
454
454
  console.log();
@@ -397,7 +397,7 @@ Atom saved: ${atom.externalId}`));
397
397
  console.log(chalk.dim(`Next: Configure API key and run "archon plan ${atom.externalId} --continue"`));
398
398
  return;
399
399
  }
400
- console.log(chalk.blue("\n\u{1F4CB} Starting adversarial planning..."));
400
+ console.log(chalk.blue("\nStarting adversarial planning..."));
401
401
  console.log(chalk.dim("Architect will generate a plan, Sentinel will validate it.\n"));
402
402
  const planner = new AdversarialPlanner({ apiKey });
403
403
  const planResult = await planner.planAtom(atom, parseResult.schema);
@@ -487,7 +487,7 @@ function displayPlan(plan2) {
487
487
  if (plan2.risks.length > 0) {
488
488
  console.log(chalk.bold("\nRisks:"));
489
489
  for (const risk of plan2.risks) {
490
- console.log(chalk.yellow(` \u26A0 ${risk}`));
490
+ console.log(chalk.yellow(` [!] ${risk}`));
491
491
  }
492
492
  }
493
493
  console.log(chalk.bold("\nComplexity:"), plan2.estimated_complexity);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listLocalAtoms
3
- } from "./chunk-UZT2L27M.js";
3
+ } from "./chunk-RCW22YNI.js";
4
4
 
5
5
  // src/cli/list.ts
6
6
  import chalk from "chalk";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadAtom
3
- } from "./chunk-UZT2L27M.js";
3
+ } from "./chunk-RCW22YNI.js";
4
4
 
5
5
  // src/cli/parallel.ts
6
6
  import chalk from "chalk";
@@ -155,7 +155,7 @@ async function parallelExecute(atomIds) {
155
155
  const completed = state.executions.filter((e) => e.status === "completed").length;
156
156
  const failed = state.executions.filter((e) => e.status === "failed").length;
157
157
  console.log(chalk.blue(`
158
- \u{1F4CA} Parallel execution complete:`));
158
+ Parallel execution complete:`));
159
159
  console.log(chalk.green(` \u2713 Completed: ${completed}`));
160
160
  if (failed > 0) {
161
161
  console.log(chalk.red(` \u2717 Failed: ${failed}`));
@@ -171,7 +171,7 @@ async function parallelStatus() {
171
171
  console.log(chalk.dim("No parallel executions found."));
172
172
  return;
173
173
  }
174
- console.log(chalk.blue("\n\u{1F4CA} Parallel Execution Status\n"));
174
+ console.log(chalk.blue("\nParallel Execution Status\n"));
175
175
  for (const execution of state.executions) {
176
176
  const statusIcon = execution.status === "completed" ? chalk.green("\u2713") : execution.status === "failed" ? chalk.red("\u2717") : execution.status === "running" ? chalk.yellow("\u25CF") : chalk.dim("\u25CB");
177
177
  console.log(`${statusIcon} ${execution.atomId}`);
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  execute
3
- } from "./chunk-XRWIU3RD.js";
3
+ } from "./chunk-3NPZQOK2.js";
4
4
  import "./chunk-M4LGRTLC.js";
5
- import "./chunk-UZT2L27M.js";
5
+ import "./chunk-RCW22YNI.js";
6
6
  import "./chunk-5IQKC2TD.js";
7
7
  import "./chunk-A7QU6JC6.js";
8
8
  import "./chunk-SMR7JQK6.js";
package/dist/index.js CHANGED
@@ -7,13 +7,13 @@ import {
7
7
  cloudLogs,
8
8
  cloudStatus,
9
9
  execute
10
- } from "./chunk-XRWIU3RD.js";
10
+ } from "./chunk-3NPZQOK2.js";
11
11
  import {
12
12
  list
13
- } from "./chunk-N73LAU7W.js";
13
+ } from "./chunk-TEY4GCMH.js";
14
14
  import {
15
15
  bugReport
16
- } from "./chunk-62OWYYHV.js";
16
+ } from "./chunk-KF6MFAB4.js";
17
17
  import {
18
18
  addKey,
19
19
  listKeys,
@@ -31,7 +31,7 @@ import {
31
31
  reviewShow,
32
32
  reviewStatus,
33
33
  reviewUpdate
34
- } from "./chunk-UDBFDXJI.js";
34
+ } from "./chunk-QSYKKPFF.js";
35
35
  import "./chunk-VKM3HAHW.js";
36
36
  import {
37
37
  listModels,
@@ -40,7 +40,7 @@ import {
40
40
  setPreference,
41
41
  showExecutionPreferences,
42
42
  showPreferences
43
- } from "./chunk-JDPFHHTO.js";
43
+ } from "./chunk-E2M23XSZ.js";
44
44
  import {
45
45
  login,
46
46
  logout,
@@ -54,17 +54,17 @@ import {
54
54
  import {
55
55
  init,
56
56
  isInitialized
57
- } from "./chunk-XKRAXJN5.js";
57
+ } from "./chunk-P666JE3G.js";
58
58
  import {
59
59
  parallelClean,
60
60
  parallelMerge,
61
61
  parallelStatus
62
- } from "./chunk-OY7OJKFD.js";
62
+ } from "./chunk-TSSFMB6E.js";
63
63
  import {
64
64
  listLocalAtoms,
65
65
  loadAtom,
66
66
  plan
67
- } from "./chunk-UZT2L27M.js";
67
+ } from "./chunk-RCW22YNI.js";
68
68
  import {
69
69
  ArchitectAgent
70
70
  } from "./chunk-5IQKC2TD.js";
@@ -212,7 +212,7 @@ async function show(atomId) {
212
212
  console.log("");
213
213
  console.log(chalk2.bold("Risks:"));
214
214
  for (const risk of atom.plan.risks) {
215
- console.log(chalk2.yellow(` \u26A0 ${risk}`));
215
+ console.log(chalk2.yellow(` [!] ${risk}`));
216
216
  }
217
217
  }
218
218
  console.log("");
@@ -870,15 +870,16 @@ async function runAutoCleanupCheck(cwd) {
870
870
  }
871
871
 
872
872
  // src/cli/start.ts
873
- async function start() {
873
+ async function start(options = {}) {
874
874
  const cwd = process.cwd();
875
- console.log(chalk4.blue("\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"));
876
- console.log(chalk4.bold.white(" ArchonDev - AI-Powered Development Governance"));
877
- console.log(chalk4.blue("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n"));
875
+ if (!options.skipGovernanceBanner) {
876
+ console.log(chalk4.bold.white("\nArchonDev - AI-Powered Development Governance"));
877
+ console.log(chalk4.blue("\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\n"));
878
+ }
878
879
  const contextManager = new ContextManager();
879
880
  const pendingAtomsData = await contextManager.getPendingAtomsData(cwd);
880
881
  if (pendingAtomsData && pendingAtomsData.atoms.length > 0) {
881
- console.log(chalk4.yellow("\u26A1 Previous session had pending atoms:\n"));
882
+ console.log(chalk4.yellow("[!] Previous session had pending atoms:\n"));
882
883
  for (const atomId of pendingAtomsData.atoms) {
883
884
  console.log(chalk4.dim(` \u2022 ${atomId}`));
884
885
  }
@@ -899,8 +900,10 @@ async function start() {
899
900
  }
900
901
  }
901
902
  const projectState = detectProjectState(cwd);
902
- const governanceStatus = await gatherGovernanceStatus(cwd);
903
- displayGovernanceBanner(governanceStatus);
903
+ if (!options.skipGovernanceBanner) {
904
+ const governanceStatus = await gatherGovernanceStatus(cwd);
905
+ displayGovernanceBanner(governanceStatus);
906
+ }
904
907
  if (await shouldRunAutoCleanup(cwd)) {
905
908
  await runAutoCleanupCheck(cwd);
906
909
  }
@@ -1029,15 +1032,14 @@ async function gatherGovernanceStatus(cwd) {
1029
1032
  return status2;
1030
1033
  }
1031
1034
  function displayGovernanceBanner(status2) {
1032
- console.log(chalk4.blue("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"));
1033
- console.log(chalk4.bold.white(" ArchonDev Governance Active"));
1034
- console.log(chalk4.blue("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"));
1035
+ console.log(chalk4.bold.white("Governance Status"));
1036
+ console.log(chalk4.blue("\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"));
1035
1037
  if (status2.hasArchitecture) {
1036
1038
  console.log(chalk4.green(" \u2713") + ` ARCHITECTURE.md loaded (${status2.posture} posture)`);
1037
1039
  console.log(chalk4.green(" \u2713") + ` ${status2.invariantsCount} invariants enforced`);
1038
1040
  console.log(chalk4.green(" \u2713") + ` ${status2.protectedPathsCount} protected paths defined`);
1039
1041
  } else {
1040
- console.log(chalk4.yellow(" \u26A0") + " ARCHITECTURE.md not found - run " + chalk4.cyan("archon init"));
1042
+ console.log(chalk4.yellow(" [!]") + " ARCHITECTURE.md not found - run " + chalk4.cyan("archon init"));
1041
1043
  }
1042
1044
  console.log(chalk4.green(" \u2713") + ` ${status2.dependencyRulesCount} dependency rules active`);
1043
1045
  if (status2.lastSessionDate) {
@@ -1047,10 +1049,10 @@ function displayGovernanceBanner(status2) {
1047
1049
  console.log();
1048
1050
  console.log(chalk4.cyan(` Pending: ${status2.pendingAtomsCount} atoms ready for execution`));
1049
1051
  }
1050
- console.log(chalk4.blue("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n"));
1052
+ console.log();
1051
1053
  }
1052
1054
  async function handleNewProject(cwd, state) {
1053
- console.log(chalk4.yellow("\u{1F389}") + chalk4.bold(" Starting a new project? Great!\n"));
1055
+ console.log(chalk4.bold("Starting a new project? Great!\n"));
1054
1056
  console.log(chalk4.dim("I'll ask you a few quick questions to set things up right."));
1055
1057
  console.log(chalk4.dim("Answer as much or as little as you want \u2014 you can always refine later.\n"));
1056
1058
  console.log(chalk4.bold("What would you like to do?\n"));
@@ -1079,7 +1081,7 @@ async function handleNewProject(cwd, state) {
1079
1081
  }
1080
1082
  }
1081
1083
  async function runNewProjectInterview(cwd) {
1082
- console.log(chalk4.blue("\n\u2501\u2501\u2501 Project Interview \u2501\u2501\u2501\n"));
1084
+ console.log(chalk4.blue("\n-- Project Interview --\n"));
1083
1085
  console.log(chalk4.bold("Phase 1: The Vision\n"));
1084
1086
  const projectName = await prompt("What's the project name?");
1085
1087
  const projectDescription = await prompt("In one sentence, what does this project do?");
@@ -1110,8 +1112,8 @@ async function runNewProjectInterview(cwd) {
1110
1112
  console.log(chalk4.bold("\nPhase 3: Preferences ") + chalk4.dim("(press Enter to skip)\n"));
1111
1113
  const protectedFiles = await prompt("Any files AI should NEVER modify without asking? (comma-separated)");
1112
1114
  const noNoPatterns = await prompt('Anything AI should NEVER do? (e.g., "no console.log")');
1113
- console.log(chalk4.blue("\n\u2501\u2501\u2501 Generating Project Files \u2501\u2501\u2501\n"));
1114
- const { init: init2 } = await import("./init-7EWVBX6O.js");
1115
+ console.log(chalk4.blue("\n-- Generating Project Files --\n"));
1116
+ const { init: init2 } = await import("./init-6EXMDCWC.js");
1115
1117
  await init2({ analyze: false, git: true });
1116
1118
  const today = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
1117
1119
  const progressEntry = `
@@ -1151,14 +1153,14 @@ ${noNoPatterns ? `- **Forbidden patterns:** ${noNoPatterns}` : "- No forbidden p
1151
1153
  if (continueChoice) {
1152
1154
  const description = await prompt("Describe what you want to build first");
1153
1155
  if (description.trim()) {
1154
- const { plan: plan2 } = await import("./plan-VRAS6IYQ.js");
1156
+ const { plan: plan2 } = await import("./plan-W2UXAR6E.js");
1155
1157
  await plan2(description, {});
1156
1158
  }
1157
1159
  }
1158
1160
  }
1159
1161
  async function quickStart(cwd) {
1160
1162
  console.log(chalk4.blue("\n\u2501\u2501\u2501 Quick Start \u2501\u2501\u2501\n"));
1161
- const { init: init2 } = await import("./init-7EWVBX6O.js");
1163
+ const { init: init2 } = await import("./init-6EXMDCWC.js");
1162
1164
  await init2({ analyze: false, git: true });
1163
1165
  const today = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
1164
1166
  const progressPath = join4(cwd, "progress.txt");
@@ -1217,7 +1219,7 @@ async function handleAdaptExisting(cwd, state) {
1217
1219
  }
1218
1220
  async function analyzeAndAdapt(cwd) {
1219
1221
  console.log(chalk4.blue("\n\u2501\u2501\u2501 Analyzing Project \u2501\u2501\u2501\n"));
1220
- const { init: init2 } = await import("./init-7EWVBX6O.js");
1222
+ const { init: init2 } = await import("./init-6EXMDCWC.js");
1221
1223
  await init2({ analyze: true, git: true });
1222
1224
  const today = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
1223
1225
  const progressPath = join4(cwd, "progress.txt");
@@ -1244,7 +1246,7 @@ async function analyzeAndAdapt(cwd) {
1244
1246
  async function codeReviewFirst(cwd) {
1245
1247
  console.log(chalk4.blue("\n\u2501\u2501\u2501 Code Review Mode \u2501\u2501\u2501\n"));
1246
1248
  console.log(chalk4.dim("I'll analyze your code for issues without making any changes.\n"));
1247
- const { reviewInit: reviewInit2, reviewAnalyze: reviewAnalyze2, reviewRun: reviewRun2 } = await import("./review-3R6QXAXQ.js");
1249
+ const { reviewInit: reviewInit2, reviewAnalyze: reviewAnalyze2, reviewRun: reviewRun2 } = await import("./review-QV4TQM2Z.js");
1248
1250
  const reviewDbPath = join4(cwd, "docs", "code-review", "review-tasks.db");
1249
1251
  if (!existsSync4(reviewDbPath)) {
1250
1252
  await reviewInit2();
@@ -1259,7 +1261,7 @@ async function codeReviewFirst(cwd) {
1259
1261
  async function manualSetup(cwd) {
1260
1262
  console.log(chalk4.blue("\n\u2501\u2501\u2501 Manual Setup \u2501\u2501\u2501\n"));
1261
1263
  console.log(chalk4.dim("Creating template files. You can customize them manually.\n"));
1262
- const { init: init2 } = await import("./init-7EWVBX6O.js");
1264
+ const { init: init2 } = await import("./init-6EXMDCWC.js");
1263
1265
  await init2({ analyze: false, git: true });
1264
1266
  console.log(chalk4.bold("\nWhat to customize:\n"));
1265
1267
  console.log(` ${chalk4.cyan("1. ARCHITECTURE.md")} \u2014 Update components to match your folders`);
@@ -1269,8 +1271,8 @@ async function manualSetup(cwd) {
1269
1271
  await showMainMenu();
1270
1272
  }
1271
1273
  async function quickAdapt(cwd) {
1272
- console.log(chalk4.blue("\n\u26A1 Using defaults \u2014 let's go!\n"));
1273
- const { init: init2 } = await import("./init-7EWVBX6O.js");
1274
+ console.log(chalk4.blue("\n> Using defaults \u2014 let's go!\n"));
1275
+ const { init: init2 } = await import("./init-6EXMDCWC.js");
1274
1276
  await init2({ analyze: true, git: true });
1275
1277
  const today = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
1276
1278
  const progressPath = join4(cwd, "progress.txt");
@@ -1288,7 +1290,7 @@ async function quickAdapt(cwd) {
1288
1290
  await showMainMenu();
1289
1291
  }
1290
1292
  async function handleContinueSession(cwd, state) {
1291
- console.log(chalk4.green("\u{1F44B}") + chalk4.bold(" Welcome back!\n"));
1293
+ console.log(chalk4.bold("Welcome back!\n"));
1292
1294
  if (state.lastProgressEntry) {
1293
1295
  console.log(chalk4.dim("Last activity:"));
1294
1296
  console.log(chalk4.dim(" " + state.lastProgressEntry.split("\n")[0]));
@@ -1296,7 +1298,7 @@ async function handleContinueSession(cwd, state) {
1296
1298
  }
1297
1299
  const handoff = checkForHandoff(cwd);
1298
1300
  if (handoff) {
1299
- console.log(chalk4.yellow("\u{1F4CB} Found handoff from last session:\n"));
1301
+ console.log(chalk4.yellow("[HANDOFF] Found from last session:\n"));
1300
1302
  console.log(chalk4.dim(handoff.nextSteps));
1301
1303
  console.log();
1302
1304
  const continueHandoff = await promptYesNo("Continue from handoff?", true);
@@ -1365,27 +1367,27 @@ async function showReviewProgress(cwd) {
1365
1367
  const pending = stats.pending + stats.inReview;
1366
1368
  const needsFix = stats.needsFix;
1367
1369
  console.log(
1368
- chalk4.blue("\u{1F4CA} Review Progress:") + chalk4.dim(` ${completed}/${total} completed`) + (needsFix > 0 ? chalk4.red(` (${needsFix} need fixes)`) : "") + (pending > 0 ? chalk4.yellow(` (${pending} pending)`) : "")
1370
+ chalk4.blue("Review Progress:") + chalk4.dim(` ${completed}/${total} completed`) + (needsFix > 0 ? chalk4.red(` (${needsFix} need fixes)`) : "") + (pending > 0 ? chalk4.yellow(` (${pending} pending)`) : "")
1369
1371
  );
1370
1372
  console.log();
1371
1373
  } catch {
1372
1374
  }
1373
1375
  }
1374
1376
  async function planTask() {
1375
- const { plan: plan2 } = await import("./plan-VRAS6IYQ.js");
1377
+ const { plan: plan2 } = await import("./plan-W2UXAR6E.js");
1376
1378
  const description = await prompt("Describe what you want to build");
1377
1379
  if (description.trim()) {
1378
1380
  await plan2(description, {});
1379
1381
  }
1380
1382
  }
1381
1383
  async function listAtoms() {
1382
- const { list: list2 } = await import("./list-6LNHTEOA.js");
1384
+ const { list: list2 } = await import("./list-LEFAISNL.js");
1383
1385
  await list2({});
1384
1386
  }
1385
1387
  async function executeNext() {
1386
- const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-VRAS6IYQ.js");
1388
+ const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-W2UXAR6E.js");
1387
1389
  const { analyzeProject, getComplexityDescription, getModeDescription } = await import("./orchestration-X6LHSHBJ.js");
1388
- const { loadExecutionPreferences } = await import("./preferences-ND2AKZYW.js");
1390
+ const { loadExecutionPreferences } = await import("./preferences-ZJ4TX2RC.js");
1389
1391
  const cwd = process.cwd();
1390
1392
  const atoms = await listLocalAtoms2();
1391
1393
  const pendingAtoms = atoms.filter((a) => a.status === "READY" || a.status === "IN_PROGRESS");
@@ -1396,7 +1398,7 @@ async function executeNext() {
1396
1398
  if (pendingAtoms.length > 1) {
1397
1399
  const analysis = analyzeProject(pendingAtoms);
1398
1400
  const prefs = await loadExecutionPreferences(cwd);
1399
- console.log(chalk4.blue("\n\u2501\u2501\u2501 Project Analysis \u2501\u2501\u2501\n"));
1401
+ console.log(chalk4.blue("\n-- Project Analysis --\n"));
1400
1402
  console.log(` ${chalk4.bold("Atoms:")} ${analysis.atomCount}`);
1401
1403
  console.log(` ${chalk4.bold("Estimated:")} ${analysis.estimatedMinutes} minutes`);
1402
1404
  console.log(` ${chalk4.bold("Complexity:")} ${analysis.complexity} - ${getComplexityDescription(analysis.complexity)}`);
@@ -1418,14 +1420,14 @@ async function executeNext() {
1418
1420
  const atomId = await prompt("Enter atom ID to execute (or press Enter for first pending)");
1419
1421
  const targetId = atomId.trim() || pendingAtoms[0]?.id;
1420
1422
  if (targetId) {
1421
- const { execute: execute2 } = await import("./execute-2S2UHTLN.js");
1423
+ const { execute: execute2 } = await import("./execute-5ZSLSWPZ.js");
1422
1424
  await execute2(targetId, {});
1423
1425
  } else {
1424
1426
  console.log(chalk4.yellow("No atom to execute."));
1425
1427
  }
1426
1428
  }
1427
1429
  async function reportBug() {
1428
- const { bugReport: bugReport2 } = await import("./bug-COUVQ4X3.js");
1430
+ const { bugReport: bugReport2 } = await import("./bug-K4V357B2.js");
1429
1431
  const title = await prompt("Bug title");
1430
1432
  if (title.trim()) {
1431
1433
  await bugReport2(title, {});
@@ -1436,7 +1438,7 @@ async function viewStatus() {
1436
1438
  await status2();
1437
1439
  }
1438
1440
  async function settingsMenu() {
1439
- const { interactiveSettings } = await import("./preferences-ND2AKZYW.js");
1441
+ const { interactiveSettings } = await import("./preferences-ZJ4TX2RC.js");
1440
1442
  await interactiveSettings();
1441
1443
  await showMainMenu();
1442
1444
  }
@@ -1445,7 +1447,7 @@ async function reviewCode() {
1445
1447
  const reviewDbPath = join4(cwd, "docs", "code-review", "review-tasks.db");
1446
1448
  if (!existsSync4(reviewDbPath)) {
1447
1449
  console.log(chalk4.dim("Code review not initialized. Starting setup...\n"));
1448
- const { reviewInit: reviewInit2 } = await import("./review-3R6QXAXQ.js");
1450
+ const { reviewInit: reviewInit2 } = await import("./review-QV4TQM2Z.js");
1449
1451
  await reviewInit2();
1450
1452
  console.log();
1451
1453
  }
@@ -1460,27 +1462,27 @@ async function reviewCode() {
1460
1462
  const choice = await prompt("Enter choice");
1461
1463
  switch (choice.toLowerCase()) {
1462
1464
  case "1": {
1463
- const { reviewAnalyze: reviewAnalyze2 } = await import("./review-3R6QXAXQ.js");
1465
+ const { reviewAnalyze: reviewAnalyze2 } = await import("./review-QV4TQM2Z.js");
1464
1466
  await reviewAnalyze2();
1465
1467
  break;
1466
1468
  }
1467
1469
  case "2": {
1468
- const { reviewStatus: reviewStatus2 } = await import("./review-3R6QXAXQ.js");
1470
+ const { reviewStatus: reviewStatus2 } = await import("./review-QV4TQM2Z.js");
1469
1471
  await reviewStatus2();
1470
1472
  break;
1471
1473
  }
1472
1474
  case "3": {
1473
- const { reviewNext: reviewNext2 } = await import("./review-3R6QXAXQ.js");
1475
+ const { reviewNext: reviewNext2 } = await import("./review-QV4TQM2Z.js");
1474
1476
  await reviewNext2();
1475
1477
  break;
1476
1478
  }
1477
1479
  case "4": {
1478
- const { reviewList: reviewList2 } = await import("./review-3R6QXAXQ.js");
1480
+ const { reviewList: reviewList2 } = await import("./review-QV4TQM2Z.js");
1479
1481
  await reviewList2({});
1480
1482
  break;
1481
1483
  }
1482
1484
  case "5": {
1483
- const { reviewRun: reviewRun2 } = await import("./review-3R6QXAXQ.js");
1485
+ const { reviewRun: reviewRun2 } = await import("./review-QV4TQM2Z.js");
1484
1486
  await reviewRun2({ all: true });
1485
1487
  break;
1486
1488
  }
@@ -1661,7 +1663,7 @@ async function showHistory(options = {}) {
1661
1663
  const usage = data;
1662
1664
  spinner.stop();
1663
1665
  console.log();
1664
- console.log(chalk5.bold("\u{1F4CA} Usage History"));
1666
+ console.log(chalk5.bold("Usage History"));
1665
1667
  console.log();
1666
1668
  if (!usage || usage.length === 0) {
1667
1669
  console.log(chalk5.dim(" No usage recorded yet."));
@@ -1747,7 +1749,7 @@ async function manageBudget(options = {}) {
1747
1749
  }
1748
1750
  spinner.stop();
1749
1751
  console.log();
1750
- console.log(chalk5.bold("\u{1F4CA} Monthly Budget"));
1752
+ console.log(chalk5.bold("Monthly Budget"));
1751
1753
  console.log();
1752
1754
  if (profile.monthly_budget_cents === null) {
1753
1755
  console.log(` Budget: ${chalk5.dim("No limit set")}`);
@@ -2195,7 +2197,7 @@ Examples:
2195
2197
  process.exit(0);
2196
2198
  }
2197
2199
  console.log(chalk6.yellow(`
2198
- \u26A0\uFE0F Found ${result.impacts.length} dependency impact(s):
2200
+ [!] Found ${result.impacts.length} dependency impact(s):
2199
2201
  `));
2200
2202
  for (const impact of result.impacts) {
2201
2203
  const severityColor = impact.rule.severity === "BLOCKER" ? chalk6.red : impact.rule.severity === "WARNING" ? chalk6.yellow : chalk6.blue;
@@ -2516,7 +2518,7 @@ async function a11yCheck(options) {
2516
2518
  console.log(chalk7.dim("Note: Run manual testing with screen readers for full compliance.\n"));
2517
2519
  return;
2518
2520
  }
2519
- console.log(chalk7.red(`\u26A0\uFE0F ${issues.length} Accessibility Issues Found
2521
+ console.log(chalk7.red(`[!] ${issues.length} Accessibility Issues Found
2520
2522
  `));
2521
2523
  const criticalCount = issues.filter((i) => i.severity === "critical").length;
2522
2524
  const majorCount = issues.filter((i) => i.severity === "major").length;
@@ -2544,7 +2546,7 @@ async function a11yCheck(options) {
2544
2546
  }
2545
2547
  console.log();
2546
2548
  }
2547
- console.log(chalk7.bold.yellow("\n\u2696\uFE0F Legal Notice\n"));
2549
+ console.log(chalk7.bold.yellow("\n[LEGAL] Notice\n"));
2548
2550
  console.log(chalk7.dim("Websites that don't meet accessibility standards may violate:"));
2549
2551
  console.log(chalk7.dim(" \u2022 ADA (Americans with Disabilities Act) \u2014 US"));
2550
2552
  console.log(chalk7.dim(" \u2022 EAA (European Accessibility Act) \u2014 EU, effective June 2025"));
@@ -2673,7 +2675,7 @@ async function a11yBadge(options) {
2673
2675
  async function a11yPreDeploy() {
2674
2676
  const prompt2 = createPrompt();
2675
2677
  try {
2676
- console.log(chalk7.blue("\n\u26A0\uFE0F Pre-Deploy Accessibility Check\n"));
2678
+ console.log(chalk7.blue("\n[CHECK] Pre-Deploy Accessibility\n"));
2677
2679
  console.log(chalk7.dim("Before deploying a live website, accessibility compliance is required.\n"));
2678
2680
  await a11yCheck({});
2679
2681
  const reportPath = join6(process.cwd(), ".archon/a11y-report.json");
@@ -2699,7 +2701,7 @@ async function a11yPreDeploy() {
2699
2701
  await a11yCheck({});
2700
2702
  return true;
2701
2703
  } else if (choice === "2") {
2702
- console.log(chalk7.yellow("\n\u26A0\uFE0F Acknowledged. Proceeding without full accessibility compliance."));
2704
+ console.log(chalk7.yellow("\n[!] Acknowledged. Proceeding without full accessibility compliance."));
2703
2705
  console.log(chalk7.dim("Consider addressing these issues in a future session.\n"));
2704
2706
  return true;
2705
2707
  } else {
@@ -2840,7 +2842,7 @@ async function geoIdentity() {
2840
2842
  console.log(chalk8.blue("\n\u{1F3AF} GEO Identity Generator\n"));
2841
2843
  const { allowed, tier } = await checkStrongModelAccess();
2842
2844
  if (!allowed) {
2843
- console.log(chalk8.yellow(`\u26A0\uFE0F Your tier (${tier}) uses basic models.`));
2845
+ console.log(chalk8.yellow(`[!] Your tier (${tier}) uses basic models.`));
2844
2846
  console.log(chalk8.dim("For better results, add credits or use BYOK mode.\n"));
2845
2847
  }
2846
2848
  console.log(chalk8.dim("Reading homepage and about page content...\n"));
@@ -3020,7 +3022,7 @@ async function geoFaq(options) {
3020
3022
  const { identityPhrase, shortDescription } = config.geo;
3021
3023
  const { allowed, tier } = await checkStrongModelAccess();
3022
3024
  if (!allowed) {
3023
- console.log(chalk8.yellow(`\u26A0\uFE0F Your tier (${tier}) uses basic models.`));
3025
+ console.log(chalk8.yellow(`[!] Your tier (${tier}) uses basic models.`));
3024
3026
  console.log(chalk8.dim("For better results, add credits or use BYOK mode.\n"));
3025
3027
  }
3026
3028
  console.log(chalk8.dim("Generating FAQ content with AI...\n"));
@@ -3103,7 +3105,7 @@ async function geoAudit() {
3103
3105
  console.log(chalk8.green("\u2705 Brand keyword in H1"));
3104
3106
  } else {
3105
3107
  result.issues.push("Brand phrase keyword not found in H1");
3106
- console.log(chalk8.yellow("\u26A0\uFE0F Brand keyword not in H1"));
3108
+ console.log(chalk8.yellow("[!] Brand keyword not in H1"));
3107
3109
  }
3108
3110
  const metaMatch = content.match(/<meta[^>]*name=["']description["'][^>]*content=["']([^"']*)["']/i);
3109
3111
  if (metaMatch?.[1] && metaMatch[1].toLowerCase().includes(firstKeyword)) {
@@ -3111,7 +3113,7 @@ async function geoAudit() {
3111
3113
  console.log(chalk8.green("\u2705 Brand keyword in meta description"));
3112
3114
  } else {
3113
3115
  result.issues.push("Brand phrase keyword not found in meta description");
3114
- console.log(chalk8.yellow("\u26A0\uFE0F Brand keyword not in meta description"));
3116
+ console.log(chalk8.yellow("[!] Brand keyword not in meta description"));
3115
3117
  }
3116
3118
  if (content.includes("application/ld+json")) {
3117
3119
  if (content.includes('"@type":"Organization"') || content.includes('"@type": "Organization"')) {
@@ -3119,21 +3121,21 @@ async function geoAudit() {
3119
3121
  console.log(chalk8.green("\u2705 Organization schema present"));
3120
3122
  } else {
3121
3123
  result.issues.push("Organization schema not found");
3122
- console.log(chalk8.yellow("\u26A0\uFE0F Organization schema missing"));
3124
+ console.log(chalk8.yellow("[!] Organization schema missing"));
3123
3125
  }
3124
3126
  if (content.includes('"@type":"Service"') || content.includes('"@type": "Service"')) {
3125
3127
  result.hasServiceSchema = true;
3126
3128
  console.log(chalk8.green("\u2705 Service schema present"));
3127
3129
  } else {
3128
3130
  result.issues.push("Service schema not found");
3129
- console.log(chalk8.yellow("\u26A0\uFE0F Service schema missing"));
3131
+ console.log(chalk8.yellow("[!] Service schema missing"));
3130
3132
  }
3131
3133
  if (content.includes('"@type":"FAQPage"') || content.includes('"@type": "FAQPage"')) {
3132
3134
  result.hasFAQSchema = true;
3133
3135
  console.log(chalk8.green("\u2705 FAQPage schema present"));
3134
3136
  } else {
3135
3137
  result.issues.push("FAQPage schema not found");
3136
- console.log(chalk8.yellow("\u26A0\uFE0F FAQPage schema missing"));
3138
+ console.log(chalk8.yellow("[!] FAQPage schema missing"));
3137
3139
  }
3138
3140
  } else {
3139
3141
  result.issues.push("No JSON-LD schemas found");
@@ -3141,14 +3143,14 @@ async function geoAudit() {
3141
3143
  }
3142
3144
  } else if (htmlFiles.length === 0) {
3143
3145
  result.issues.push("No index.html found");
3144
- console.log(chalk8.yellow("\u26A0\uFE0F No index.html found to audit"));
3146
+ console.log(chalk8.yellow("[!] No index.html found to audit"));
3145
3147
  }
3146
3148
  console.log();
3147
3149
  const passed = result.issues.length === 0;
3148
3150
  if (passed) {
3149
3151
  console.log(chalk8.green.bold("\u2705 GEO Audit Passed"));
3150
3152
  } else {
3151
- console.log(chalk8.yellow.bold(`\u26A0\uFE0F ${result.issues.length} issue(s) found`));
3153
+ console.log(chalk8.yellow.bold(`[!] ${result.issues.length} issue(s) found`));
3152
3154
  console.log();
3153
3155
  console.log(chalk8.bold("Recommendations:"));
3154
3156
  result.issues.forEach((issue, i) => {
@@ -3366,7 +3368,7 @@ async function seoCheck(options) {
3366
3368
  console.log(chalk9.dim("All essential meta tags are present."));
3367
3369
  return;
3368
3370
  }
3369
- console.log(chalk9.yellow(`\u26A0\uFE0F ${issues.length} SEO Issues Found
3371
+ console.log(chalk9.yellow(`[!] ${issues.length} SEO Issues Found
3370
3372
  `));
3371
3373
  const criticalCount = issues.filter((i) => i.severity === "critical").length;
3372
3374
  const warningCount = issues.filter((i) => i.severity === "warning").length;
@@ -4487,7 +4489,7 @@ async function indexUpdate(options) {
4487
4489
  }
4488
4490
  } catch (error) {
4489
4491
  console.log(`
4490
- ${chalk12.yellow(`\u26A0 Skipped ${file}: ${error instanceof Error ? error.message : "Unknown error"}`)}`);
4492
+ ${chalk12.yellow(`[!] Skipped ${file}: ${error instanceof Error ? error.message : "Unknown error"}`)}`);
4491
4493
  }
4492
4494
  }
4493
4495
  console.log("\r" + " ".repeat(70));
@@ -4735,11 +4737,12 @@ async function githubDisconnect() {
4735
4737
  var program = new Command4();
4736
4738
  program.name("archon").description("Local-first AI-powered development governance").version("1.1.0").action(async () => {
4737
4739
  const cwd = process.cwd();
4738
- if (!isInitialized(cwd)) {
4740
+ const wasInitialized = isInitialized(cwd);
4741
+ if (!wasInitialized) {
4739
4742
  console.log(chalk14.blue("\nArchonDev is not initialized in this folder.\n"));
4740
4743
  await init({ analyze: true, git: true });
4741
4744
  }
4742
- await start();
4745
+ await start({ skipGovernanceBanner: !wasInitialized });
4743
4746
  });
4744
4747
  program.command("login").description("Authenticate with ArchonDev").option("-p, --provider <provider>", "OAuth provider (github or google)", "github").action(async (options) => {
4745
4748
  const provider = options.provider;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init,
3
3
  isInitialized
4
- } from "./chunk-XKRAXJN5.js";
4
+ } from "./chunk-P666JE3G.js";
5
5
  import "./chunk-QGM4M3NI.js";
6
6
  export {
7
7
  init,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  list
3
- } from "./chunk-N73LAU7W.js";
4
- import "./chunk-UZT2L27M.js";
3
+ } from "./chunk-TEY4GCMH.js";
4
+ import "./chunk-RCW22YNI.js";
5
5
  import "./chunk-5IQKC2TD.js";
6
6
  import "./chunk-A7QU6JC6.js";
7
7
  import "./chunk-SMR7JQK6.js";
@@ -3,8 +3,8 @@ import {
3
3
  parallelExecute,
4
4
  parallelMerge,
5
5
  parallelStatus
6
- } from "./chunk-OY7OJKFD.js";
7
- import "./chunk-UZT2L27M.js";
6
+ } from "./chunk-TSSFMB6E.js";
7
+ import "./chunk-RCW22YNI.js";
8
8
  import "./chunk-5IQKC2TD.js";
9
9
  import "./chunk-A7QU6JC6.js";
10
10
  import "./chunk-SMR7JQK6.js";
@@ -2,7 +2,7 @@ import {
2
2
  listLocalAtoms,
3
3
  loadAtom,
4
4
  plan
5
- } from "./chunk-UZT2L27M.js";
5
+ } from "./chunk-RCW22YNI.js";
6
6
  import "./chunk-5IQKC2TD.js";
7
7
  import "./chunk-A7QU6JC6.js";
8
8
  import "./chunk-SMR7JQK6.js";
@@ -7,7 +7,7 @@ import {
7
7
  setPreference,
8
8
  showExecutionPreferences,
9
9
  showPreferences
10
- } from "./chunk-JDPFHHTO.js";
10
+ } from "./chunk-E2M23XSZ.js";
11
11
  import "./chunk-SMR7JQK6.js";
12
12
  import "./chunk-IVY5AHPS.js";
13
13
  import "./chunk-QGM4M3NI.js";
@@ -9,7 +9,7 @@ import {
9
9
  reviewShow,
10
10
  reviewStatus,
11
11
  reviewUpdate
12
- } from "./chunk-UDBFDXJI.js";
12
+ } from "./chunk-QSYKKPFF.js";
13
13
  import "./chunk-VKM3HAHW.js";
14
14
  import "./chunk-A7QU6JC6.js";
15
15
  import "./chunk-QGM4M3NI.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "archondev",
3
- "version": "2.1.2",
3
+ "version": "2.1.4",
4
4
  "description": "Local-first AI-powered development governance system",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -57,7 +57,6 @@
57
57
  "dependencies": {
58
58
  "@anthropic-ai/sdk": "^0.71.2",
59
59
  "@supabase/supabase-js": "^2.90.1",
60
- "@types/glob": "^9.0.0",
61
60
  "@types/node": "^25.0.9",
62
61
  "better-sqlite3": "^12.6.2",
63
62
  "chalk": "^5.6.2",