archondev 2.18.3 → 2.18.5

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
@@ -101,6 +101,7 @@ Copy governance files into any project. Works with your existing AI tools: **Cur
101
101
  | `archon cleanup auto [enable\|disable]` | Enable/disable auto cleanup on start |
102
102
 
103
103
  **Tip:** Use `archon plan --edit` to adjust title and acceptance criteria before planning.
104
+ **Web Checks:** If Archon detects a web project, it prompts to run A11y/SEO/GEO checks and stores your preference in `.archon/config.yaml`.
104
105
 
105
106
  ## Pricing
106
107
 
@@ -183,12 +184,16 @@ archon github status # Verify connection
183
184
  archon plan "add user settings page"
184
185
  archon execute ATOM-001 --cloud
185
186
 
187
+ # 3b. Queue multiple atoms in parallel (Credits tier)
188
+ archon parallel cloud ATOM-001 ATOM-002
189
+
186
190
  # 4. Check progress
187
191
  archon cloud status # List all cloud executions
188
192
  archon cloud logs <id> # View execution logs
189
193
  ```
190
194
 
191
195
  The cloud worker clones your repo, runs the Executor agent, creates a feature branch, and opens a PR. You can close your terminal after queuing.
196
+ Cloud execution is Credits-only. BYOK and Free tiers run locally.
192
197
 
193
198
  ## Working with Existing Projects
194
199
 
@@ -1,3 +1,6 @@
1
+ import {
2
+ createAuthedSupabaseClient
3
+ } from "./chunk-Q3GIFHIQ.js";
1
4
  import {
2
5
  SUPABASE_ANON_KEY,
3
6
  SUPABASE_URL
@@ -7,14 +10,6 @@ import {
7
10
  loadConfig
8
11
  } from "./chunk-SVU7MLG6.js";
9
12
 
10
- // src/core/supabase/client.ts
11
- import { createClient } from "@supabase/supabase-js";
12
- function createAuthedSupabaseClient(supabaseUrl, supabaseAnonKey, accessToken) {
13
- return createClient(supabaseUrl, supabaseAnonKey, {
14
- global: { headers: { Authorization: `Bearer ${accessToken}` } }
15
- });
16
- }
17
-
18
13
  // src/cli/cloud.ts
19
14
  import chalk from "chalk";
20
15
  function getClient(accessToken) {
@@ -182,7 +177,6 @@ function getStatusIcon(status) {
182
177
  }
183
178
 
184
179
  export {
185
- createAuthedSupabaseClient,
186
180
  cloudStatus,
187
181
  cloudCancel,
188
182
  cloudLogs,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listLocalAtoms
3
- } from "./chunk-3PZ7WU5I.js";
3
+ } from "./chunk-KHOATOJY.js";
4
4
 
5
5
  // src/cli/list.ts
6
6
  import chalk from "chalk";
@@ -0,0 +1,23 @@
1
+ // src/core/supabase/client.ts
2
+ import { createClient } from "@supabase/supabase-js";
3
+ function createAnonSupabaseClient(supabaseUrl, supabaseAnonKey) {
4
+ return createClient(supabaseUrl, supabaseAnonKey);
5
+ }
6
+ function createPkceSupabaseClient(supabaseUrl, supabaseAnonKey) {
7
+ return createClient(supabaseUrl, supabaseAnonKey, {
8
+ auth: {
9
+ flowType: "pkce"
10
+ }
11
+ });
12
+ }
13
+ function createAuthedSupabaseClient(supabaseUrl, supabaseAnonKey, accessToken) {
14
+ return createClient(supabaseUrl, supabaseAnonKey, {
15
+ global: { headers: { Authorization: `Bearer ${accessToken}` } }
16
+ });
17
+ }
18
+
19
+ export {
20
+ createAnonSupabaseClient,
21
+ createPkceSupabaseClient,
22
+ createAuthedSupabaseClient
23
+ };
@@ -1,16 +1,15 @@
1
1
  import {
2
- createAuthedSupabaseClient,
3
2
  getGitBranch,
4
3
  getGitRemoteUrl,
5
4
  queueCloudExecution
6
- } from "./chunk-Z65525NP.js";
5
+ } from "./chunk-EBHHIUCB.js";
6
+ import {
7
+ createAuthedSupabaseClient
8
+ } from "./chunk-Q3GIFHIQ.js";
7
9
  import {
8
10
  UsageRecorder,
9
11
  loadAtom
10
- } from "./chunk-3PZ7WU5I.js";
11
- import {
12
- ArchitectureParser
13
- } from "./chunk-5EVHUDQX.js";
12
+ } from "./chunk-KHOATOJY.js";
14
13
  import {
15
14
  transitionAtom
16
15
  } from "./chunk-5CFGPXQ3.js";
@@ -18,6 +17,9 @@ import {
18
17
  AnthropicClient,
19
18
  getDefaultModel
20
19
  } from "./chunk-HJARQDQR.js";
20
+ import {
21
+ ArchitectureParser
22
+ } from "./chunk-5EVHUDQX.js";
21
23
  import {
22
24
  SUPABASE_ANON_KEY,
23
25
  SUPABASE_URL
@@ -4791,7 +4793,7 @@ function createPrompt() {
4791
4793
  }
4792
4794
  async function execute(atomId, options) {
4793
4795
  if (options.parallel && options.parallel.length > 0) {
4794
- const { parallelExecute } = await import("./parallel-27ZWSW6B.js");
4796
+ const { parallelExecute } = await import("./parallel-NRYSWMPN.js");
4795
4797
  const allAtomIds = [atomId, ...options.parallel];
4796
4798
  await parallelExecute(allAtomIds, { skipGates: options.skipGates === true });
4797
4799
  return;
@@ -2,11 +2,11 @@ import {
2
2
  getGitBranch,
3
3
  getGitRemoteUrl,
4
4
  queueCloudExecution
5
- } from "./chunk-Z65525NP.js";
5
+ } from "./chunk-EBHHIUCB.js";
6
6
  import {
7
7
  listLocalAtoms,
8
8
  loadAtom
9
- } from "./chunk-3PZ7WU5I.js";
9
+ } from "./chunk-KHOATOJY.js";
10
10
  import {
11
11
  loadConfig
12
12
  } from "./chunk-SVU7MLG6.js";
@@ -0,0 +1,11 @@
1
+ import {
2
+ createAnonSupabaseClient,
3
+ createAuthedSupabaseClient,
4
+ createPkceSupabaseClient
5
+ } from "./chunk-Q3GIFHIQ.js";
6
+ import "./chunk-4VNS5WPM.js";
7
+ export {
8
+ createAnonSupabaseClient,
9
+ createAuthedSupabaseClient,
10
+ createPkceSupabaseClient
11
+ };
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  execute
3
- } from "./chunk-3WJIZGHN.js";
4
- import "./chunk-Z65525NP.js";
5
- import "./chunk-3PZ7WU5I.js";
6
- import "./chunk-5EVHUDQX.js";
3
+ } from "./chunk-REMLC4M7.js";
4
+ import "./chunk-EBHHIUCB.js";
5
+ import "./chunk-Q3GIFHIQ.js";
6
+ import "./chunk-KHOATOJY.js";
7
7
  import "./chunk-5CFGPXQ3.js";
8
8
  import "./chunk-2NSWZDP7.js";
9
9
  import "./chunk-HJARQDQR.js";
10
+ import "./chunk-5EVHUDQX.js";
10
11
  import "./chunk-UFR2LX6G.js";
11
12
  import "./chunk-TFSHS7EN.js";
12
13
  import "./chunk-RDG5BUED.js";
package/dist/index.js CHANGED
@@ -1,7 +1,13 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ createSeoCommand
4
+ } from "./chunk-JF7JCK6H.js";
2
5
  import {
3
6
  createGeoCommand
4
7
  } from "./chunk-UD45ZLV3.js";
8
+ import {
9
+ bugReport
10
+ } from "./chunk-VF2OTDMS.js";
5
11
  import {
6
12
  reviewAnalyze,
7
13
  reviewExport,
@@ -16,7 +22,6 @@ import {
16
22
  } from "./chunk-BFPWDOMA.js";
17
23
  import "./chunk-HGLPIM7J.js";
18
24
  import {
19
- listModels,
20
25
  resetPreferences,
21
26
  setExecutionPreference,
22
27
  setPreference,
@@ -29,9 +34,6 @@ import {
29
34
  a11yFix,
30
35
  a11yPreDeploy
31
36
  } from "./chunk-FWLLGLD5.js";
32
- import {
33
- createSeoCommand
34
- } from "./chunk-JF7JCK6H.js";
35
37
  import "./chunk-3ASILTFB.js";
36
38
  import {
37
39
  init,
@@ -44,36 +46,35 @@ import {
44
46
  parallelRunWaves,
45
47
  parallelSchedule,
46
48
  parallelStatus
47
- } from "./chunk-DYYWJ5MO.js";
49
+ } from "./chunk-YFG2RPDU.js";
48
50
  import {
49
51
  DependencyParser,
50
52
  EnvironmentConfigLoader,
51
53
  EnvironmentValidator,
52
54
  execute
53
- } from "./chunk-3WJIZGHN.js";
55
+ } from "./chunk-REMLC4M7.js";
54
56
  import {
55
57
  cloudCancel,
56
58
  cloudLogs,
57
- cloudStatus,
59
+ cloudStatus
60
+ } from "./chunk-EBHHIUCB.js";
61
+ import {
58
62
  createAuthedSupabaseClient
59
- } from "./chunk-Z65525NP.js";
63
+ } from "./chunk-Q3GIFHIQ.js";
60
64
  import {
61
65
  list
62
- } from "./chunk-NJF6MRTR.js";
66
+ } from "./chunk-MDZ73SIL.js";
63
67
  import {
64
68
  listLocalAtoms,
65
69
  loadAtom,
66
70
  plan
67
- } from "./chunk-3PZ7WU5I.js";
68
- import {
69
- ArchitectureParser
70
- } from "./chunk-5EVHUDQX.js";
71
- import {
72
- bugReport
73
- } from "./chunk-VF2OTDMS.js";
71
+ } from "./chunk-KHOATOJY.js";
74
72
  import "./chunk-5CFGPXQ3.js";
75
73
  import "./chunk-2NSWZDP7.js";
76
74
  import "./chunk-HJARQDQR.js";
75
+ import {
76
+ ArchitectureParser
77
+ } from "./chunk-5EVHUDQX.js";
77
78
  import "./chunk-UFR2LX6G.js";
78
79
  import {
79
80
  addKey,
@@ -2770,26 +2771,30 @@ async function start(options = {}) {
2770
2771
  }
2771
2772
  if (currentTier === "CREDITS" && config.accessToken) {
2772
2773
  try {
2773
- const usageStats = await fetchCreditsUsageStats(config.accessToken);
2774
+ const usageStats = config.userId ? await fetchCreditsUsageStats(config.accessToken, config.userId) : null;
2774
2775
  if (usageStats) {
2775
2776
  console.log();
2776
2777
  console.log(chalk6.bold("\u{1F4B0} Credits Balance"));
2777
2778
  console.log(chalk6.dim("\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"));
2778
2779
  const balanceColor = usageStats.balance < 1 ? chalk6.red : usageStats.balance < 5 ? chalk6.yellow : chalk6.green;
2779
2780
  console.log(` Balance: ${balanceColor(`$${usageStats.balance.toFixed(2)}`)}`);
2781
+ if (usageStats.periodStart) {
2782
+ const periodDate = new Date(usageStats.periodStart);
2783
+ const formatted = isNaN(periodDate.getTime()) ? usageStats.periodStart : periodDate.toLocaleDateString();
2784
+ const label = usageStats.periodSource === "credit_purchase" ? `Since last top-up (${formatted})` : usageStats.periodSource === "month" ? `Since ${formatted}` : `Period start: ${formatted}`;
2785
+ console.log(chalk6.dim(` ${label}`));
2786
+ }
2780
2787
  if (usageStats.usedThisPeriod > 0) {
2781
- console.log(` Used this period: ${chalk6.dim(`$${usageStats.usedThisPeriod.toFixed(2)}`)}`);
2788
+ console.log(` Used since last top-up: ${chalk6.dim(`$${usageStats.usedThisPeriod.toFixed(2)}`)}`);
2789
+ } else {
2790
+ console.log(chalk6.dim(" No usage recorded since last top-up."));
2782
2791
  }
2783
2792
  if (usageStats.byModel && usageStats.byModel.length > 0) {
2784
2793
  console.log();
2785
2794
  console.log(chalk6.dim(" Model Usage:"));
2786
- const topModels = usageStats.byModel.slice(0, 3);
2787
- for (const model of topModels) {
2788
- const modelName = model.model.length > 25 ? model.model.slice(0, 22) + "..." : model.model;
2789
- console.log(chalk6.dim(` ${modelName.padEnd(26)} $${model.cost.toFixed(4)}`));
2790
- }
2791
- if (usageStats.byModel.length > 3) {
2792
- console.log(chalk6.dim(` ... and ${usageStats.byModel.length - 3} more (run 'archon credits history')`));
2795
+ for (const model of usageStats.byModel) {
2796
+ const modelName = model.model.length > 32 ? model.model.slice(0, 29) + "..." : model.model;
2797
+ console.log(chalk6.dim(` ${modelName.padEnd(34)} $${model.cost.toFixed(4)}`));
2793
2798
  }
2794
2799
  }
2795
2800
  console.log(chalk6.dim("\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"));
@@ -2910,7 +2915,7 @@ function formatTierName(tier) {
2910
2915
  return tier;
2911
2916
  }
2912
2917
  }
2913
- async function fetchCreditsUsageStats(accessToken) {
2918
+ async function fetchCreditsUsageStats(accessToken, authId) {
2914
2919
  try {
2915
2920
  const { API_URL: API_URL3 } = await import("./constants-XDIWFFPN.js");
2916
2921
  const response = await fetch(`${API_URL3}/api/usage`, {
@@ -2918,14 +2923,51 @@ async function fetchCreditsUsageStats(accessToken) {
2918
2923
  "Authorization": `Bearer ${accessToken}`
2919
2924
  }
2920
2925
  });
2921
- if (!response.ok) {
2926
+ if (response.ok) {
2927
+ const data = await response.json();
2928
+ return {
2929
+ balance: data.remainingCredits ?? 0,
2930
+ usedThisPeriod: data.totalBaseCost ?? 0,
2931
+ byModel: data.byModel ?? [],
2932
+ periodStart: data.periodStart,
2933
+ periodSource: data.periodSource,
2934
+ lastCreditPurchaseAt: data.lastCreditPurchaseAt ?? null
2935
+ };
2936
+ }
2937
+ } catch {
2938
+ }
2939
+ return fetchCreditsUsageStatsFromSupabase(accessToken, authId);
2940
+ }
2941
+ async function fetchCreditsUsageStatsFromSupabase(accessToken, authId) {
2942
+ try {
2943
+ const { SUPABASE_URL: SUPABASE_URL2, SUPABASE_ANON_KEY: SUPABASE_ANON_KEY2 } = await import("./constants-XDIWFFPN.js");
2944
+ const { createAuthedSupabaseClient: createAuthedSupabaseClient2 } = await import("./client-PHW2C2HB.js");
2945
+ const supabase = createAuthedSupabaseClient2(SUPABASE_URL2, SUPABASE_ANON_KEY2, accessToken);
2946
+ const { data: profile, error: profileError } = await supabase.from("user_profiles").select("id, credit_balance_cents").eq("auth_id", authId).single();
2947
+ if (profileError || !profile?.id) {
2922
2948
  return null;
2923
2949
  }
2924
- const data = await response.json();
2950
+ const { data: lastPurchase } = await supabase.from("credit_purchases").select("created_at").eq("user_id", profile.id).eq("status", "completed").order("created_at", { ascending: false }).limit(1).maybeSingle();
2951
+ const now = /* @__PURE__ */ new Date();
2952
+ const defaultStart = new Date(now.getFullYear(), now.getMonth(), 1).toISOString();
2953
+ const periodStart = lastPurchase?.created_at ?? defaultStart;
2954
+ const periodSource = lastPurchase?.created_at ? "credit_purchase" : "month";
2955
+ const { data: usageRows } = await supabase.from("token_usage").select("model, marked_up_cost, total_cents, created_at").eq("user_id", profile.id).gte("created_at", periodStart);
2956
+ const byModelMap = /* @__PURE__ */ new Map();
2957
+ let usedThisPeriod = 0;
2958
+ for (const row of usageRows ?? []) {
2959
+ const cost = typeof row.marked_up_cost === "number" ? row.marked_up_cost : typeof row.total_cents === "number" ? row.total_cents / 100 : 0;
2960
+ usedThisPeriod += cost;
2961
+ byModelMap.set(row.model, (byModelMap.get(row.model) ?? 0) + cost);
2962
+ }
2963
+ const byModel = Array.from(byModelMap.entries()).map(([model, cost]) => ({ model, cost })).sort((a, b) => b.cost - a.cost);
2925
2964
  return {
2926
- balance: data.remainingCredits ?? 0,
2927
- usedThisPeriod: data.totalBaseCost ?? 0,
2928
- byModel: data.byModel ?? []
2965
+ balance: (profile.credit_balance_cents ?? 0) / 100,
2966
+ usedThisPeriod,
2967
+ byModel,
2968
+ periodStart,
2969
+ periodSource,
2970
+ lastCreditPurchaseAt: lastPurchase?.created_at ?? null
2929
2971
  };
2930
2972
  } catch {
2931
2973
  return null;
@@ -3085,7 +3127,7 @@ async function handleNewProject(cwd, _state) {
3085
3127
  }
3086
3128
  if (intent.mode === "ad_hoc" && intent.confidence >= 0.7) {
3087
3129
  console.log(chalk6.dim("\n> Got it! Creating a task for this...\n"));
3088
- const { plan: plan2 } = await import("./plan-XALA4SLH.js");
3130
+ const { plan: plan2 } = await import("./plan-YFIE43MP.js");
3089
3131
  await plan2(initialResponse, {});
3090
3132
  return;
3091
3133
  }
@@ -3109,7 +3151,7 @@ async function handleNewProject(cwd, _state) {
3109
3151
  break;
3110
3152
  case "2":
3111
3153
  console.log(chalk6.dim("\n> Creating a task for this...\n"));
3112
- const { plan: plan2 } = await import("./plan-XALA4SLH.js");
3154
+ const { plan: plan2 } = await import("./plan-YFIE43MP.js");
3113
3155
  await plan2(initialResponse, {});
3114
3156
  break;
3115
3157
  case "3":
@@ -3139,7 +3181,7 @@ async function showNewProjectMenu(cwd) {
3139
3181
  case "3": {
3140
3182
  const description = await prompt("Describe what you want to do");
3141
3183
  if (description.trim()) {
3142
- const { plan: plan2 } = await import("./plan-XALA4SLH.js");
3184
+ const { plan: plan2 } = await import("./plan-YFIE43MP.js");
3143
3185
  await plan2(description, {});
3144
3186
  }
3145
3187
  break;
@@ -3205,7 +3247,7 @@ async function runExploreFlow(cwd) {
3205
3247
  case "1": {
3206
3248
  const description = await prompt("Describe what you want to do");
3207
3249
  if (description.trim()) {
3208
- const { plan: plan2 } = await import("./plan-XALA4SLH.js");
3250
+ const { plan: plan2 } = await import("./plan-YFIE43MP.js");
3209
3251
  await plan2(description, {});
3210
3252
  }
3211
3253
  break;
@@ -3464,7 +3506,7 @@ ${state.forbiddenPatterns?.length ? `- **Forbidden patterns:** ${state.forbidden
3464
3506
  if (continueChoice) {
3465
3507
  const description = await prompt("Describe what you want to build first");
3466
3508
  if (description.trim()) {
3467
- const { plan: plan2 } = await import("./plan-XALA4SLH.js");
3509
+ const { plan: plan2 } = await import("./plan-YFIE43MP.js");
3468
3510
  await plan2(description, {});
3469
3511
  }
3470
3512
  }
@@ -3518,7 +3560,7 @@ async function handleAdaptExisting(cwd, state) {
3518
3560
  }
3519
3561
  if (intent.mode === "ad_hoc" && intent.confidence >= 0.7) {
3520
3562
  console.log(chalk6.dim("\n> Got it! Creating a task for this...\n"));
3521
- const { plan: plan2 } = await import("./plan-XALA4SLH.js");
3563
+ const { plan: plan2 } = await import("./plan-YFIE43MP.js");
3522
3564
  await plan2(response, {});
3523
3565
  return;
3524
3566
  }
@@ -3549,7 +3591,7 @@ async function showAdaptExistingMenu(cwd, state) {
3549
3591
  case "2": {
3550
3592
  const description = await prompt("Describe what you want to do");
3551
3593
  if (description.trim()) {
3552
- const { plan: plan2 } = await import("./plan-XALA4SLH.js");
3594
+ const { plan: plan2 } = await import("./plan-YFIE43MP.js");
3553
3595
  await plan2(description, {});
3554
3596
  }
3555
3597
  break;
@@ -3717,18 +3759,18 @@ async function showReviewProgress(cwd) {
3717
3759
  }
3718
3760
  }
3719
3761
  async function planTask() {
3720
- const { plan: plan2 } = await import("./plan-XALA4SLH.js");
3762
+ const { plan: plan2 } = await import("./plan-YFIE43MP.js");
3721
3763
  const description = await prompt("Describe what you want to build");
3722
3764
  if (description.trim()) {
3723
3765
  await plan2(description, {});
3724
3766
  }
3725
3767
  }
3726
3768
  async function listAtoms() {
3727
- const { list: list2 } = await import("./list-CNKAH354.js");
3769
+ const { list: list2 } = await import("./list-ZSSROGZA.js");
3728
3770
  await list2({});
3729
3771
  }
3730
3772
  async function executeNext() {
3731
- const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-XALA4SLH.js");
3773
+ const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-YFIE43MP.js");
3732
3774
  const { analyzeProject, getComplexityDescription, getModeDescription } = await import("./orchestration-HIF3KP25.js");
3733
3775
  const { loadExecutionPreferences } = await import("./preferences-I6WETXOI.js");
3734
3776
  const cwd = process.cwd();
@@ -3799,11 +3841,11 @@ async function executeNext() {
3799
3841
  }
3800
3842
  }
3801
3843
  if (selectedMode === "parallel-cloud") {
3802
- const { parallelExecuteCloud: parallelExecuteCloud2 } = await import("./parallel-27ZWSW6B.js");
3844
+ const { parallelExecuteCloud: parallelExecuteCloud2 } = await import("./parallel-NRYSWMPN.js");
3803
3845
  await parallelExecuteCloud2(runIds);
3804
3846
  return;
3805
3847
  }
3806
- const { parallelExecute } = await import("./parallel-27ZWSW6B.js");
3848
+ const { parallelExecute } = await import("./parallel-NRYSWMPN.js");
3807
3849
  await parallelExecute(runIds);
3808
3850
  return;
3809
3851
  }
@@ -3811,7 +3853,7 @@ async function executeNext() {
3811
3853
  const atomId = await prompt("Enter atom ID to execute (or press Enter for first pending)");
3812
3854
  const targetId = atomId.trim() || pendingAtoms[0]?.id;
3813
3855
  if (targetId) {
3814
- const { execute: execute2 } = await import("./execute-2RL7NTHZ.js");
3856
+ const { execute: execute2 } = await import("./execute-26SZAYZM.js");
3815
3857
  await execute2(targetId, {});
3816
3858
  } else {
3817
3859
  console.log(chalk6.yellow("No atom to execute."));
@@ -7103,9 +7145,6 @@ preferencesCommand.command("execution-set <key> <value>").description("Set execu
7103
7145
  preferencesCommand.action(async () => {
7104
7146
  await showPreferences();
7105
7147
  });
7106
- program.command("models").description("List available AI models").action(async () => {
7107
- await listModels();
7108
- });
7109
7148
  program.command("watch").description("Live TUI dashboard showing atoms, credits, and activity").action(async () => {
7110
7149
  await watch();
7111
7150
  });
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  list
3
- } from "./chunk-NJF6MRTR.js";
4
- import "./chunk-3PZ7WU5I.js";
5
- import "./chunk-5EVHUDQX.js";
3
+ } from "./chunk-MDZ73SIL.js";
4
+ import "./chunk-KHOATOJY.js";
6
5
  import "./chunk-5CFGPXQ3.js";
7
6
  import "./chunk-2NSWZDP7.js";
8
7
  import "./chunk-HJARQDQR.js";
8
+ import "./chunk-5EVHUDQX.js";
9
9
  import "./chunk-UFR2LX6G.js";
10
10
  import "./chunk-TFSHS7EN.js";
11
11
  import "./chunk-RDG5BUED.js";
@@ -6,13 +6,14 @@ import {
6
6
  parallelRunWaves,
7
7
  parallelSchedule,
8
8
  parallelStatus
9
- } from "./chunk-DYYWJ5MO.js";
10
- import "./chunk-Z65525NP.js";
11
- import "./chunk-3PZ7WU5I.js";
12
- import "./chunk-5EVHUDQX.js";
9
+ } from "./chunk-YFG2RPDU.js";
10
+ import "./chunk-EBHHIUCB.js";
11
+ import "./chunk-Q3GIFHIQ.js";
12
+ import "./chunk-KHOATOJY.js";
13
13
  import "./chunk-5CFGPXQ3.js";
14
14
  import "./chunk-2NSWZDP7.js";
15
15
  import "./chunk-HJARQDQR.js";
16
+ import "./chunk-5EVHUDQX.js";
16
17
  import "./chunk-UFR2LX6G.js";
17
18
  import "./chunk-TFSHS7EN.js";
18
19
  import "./chunk-RDG5BUED.js";
@@ -3,11 +3,11 @@ import {
3
3
  loadAtom,
4
4
  parseAtomDescription,
5
5
  plan
6
- } from "./chunk-3PZ7WU5I.js";
7
- import "./chunk-5EVHUDQX.js";
6
+ } from "./chunk-KHOATOJY.js";
8
7
  import "./chunk-5CFGPXQ3.js";
9
8
  import "./chunk-2NSWZDP7.js";
10
9
  import "./chunk-HJARQDQR.js";
10
+ import "./chunk-5EVHUDQX.js";
11
11
  import "./chunk-UFR2LX6G.js";
12
12
  import "./chunk-TFSHS7EN.js";
13
13
  import "./chunk-RDG5BUED.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "archondev",
3
- "version": "2.18.3",
3
+ "version": "2.18.5",
4
4
  "description": "Local-first AI-powered development governance system",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -1,6 +1,3 @@
1
- import {
2
- ArchitectureParser
3
- } from "./chunk-5EVHUDQX.js";
4
1
  import {
5
2
  createAtom,
6
3
  validateAtom
@@ -12,6 +9,9 @@ import {
12
9
  AnthropicClient,
13
10
  getDefaultModel
14
11
  } from "./chunk-HJARQDQR.js";
12
+ import {
13
+ ArchitectureParser
14
+ } from "./chunk-5EVHUDQX.js";
15
15
  import {
16
16
  KeyManager
17
17
  } from "./chunk-RDG5BUED.js";