archondev 2.19.57 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -34
- package/dist/{auth-XRKCCFJ3.js → auth-T4C7OQWO.js} +1 -1
- package/dist/{chunk-F3DZZHZB.js → chunk-43IIEFB2.js} +1 -1
- package/dist/{chunk-4K3XNRU6.js → chunk-45T2VB5R.js} +14 -4
- package/dist/{chunk-6TBYNRNF.js → chunk-57NSGWWD.js} +9 -7
- package/dist/{chunk-OHIN6OHU.js → chunk-7RXZTPXY.js} +14 -4
- package/dist/chunk-AJNKSFHL.js +491 -0
- package/dist/chunk-I3BBA7MB.js +150 -0
- package/dist/{chunk-L6VHJQ6M.js → chunk-PQS3TQB6.js} +128 -379
- package/dist/{chunk-LU4DXW3J.js → chunk-YK5Z6U5A.js} +489 -100
- package/dist/{execute-C3NFIEEI.js → execute-HWUL2M3B.js} +3 -3
- package/dist/index.js +1562 -2182
- package/dist/{list-ULMKVK7D.js → list-7IBMJCCF.js} +3 -3
- package/dist/{parallel-T37FF7GD.js → parallel-4PXJA2QD.js} +3 -3
- package/dist/{plan-WBNGP2UE.js → plan-HBAUG3KD.js} +2 -2
- package/dist/{preferences-PELPR2MO.js → preferences-VVFGRNPD.js} +2 -6
- package/dist/ship-KHL6NVC2.js +7 -0
- package/package.json +1 -1
- package/dist/chunk-R664NEAA.js +0 -66
package/README.md
CHANGED
|
@@ -25,6 +25,10 @@ npm install -g archondev; archon
|
|
|
25
25
|
- Bug reporting with root cause analysis
|
|
26
26
|
- AI-powered code review for any codebase
|
|
27
27
|
- Multi-provider key support with adversarial features
|
|
28
|
+
- **Risk scoring** — 0-100 risk assessment before every execution
|
|
29
|
+
- **Ship pipeline** — `archon ship`: review → test → version → changelog → PR
|
|
30
|
+
- **Visual QA** — `archon qa`: headless browser health checks with diff-aware page testing
|
|
31
|
+
- **Session retrospective** — `archon retro`: quantitative metrics on your session
|
|
28
32
|
|
|
29
33
|
### Option 2: Lite Package
|
|
30
34
|
Context-aware intelligence for your existing AI tools: **Cursor, Claude Code, Windsurf, Amp, Copilot, Gemini**, and more. Your AI detects what you're doing and proactively offers the right help — no commands to memorize.
|
|
@@ -41,13 +45,18 @@ Context-aware intelligence for your existing AI tools: **Cursor, Claude Code, Wi
|
|
|
41
45
|
- **Design Governance** — DESIGN.md as design source of truth with visual audit
|
|
42
46
|
- **Completion Status** — Clear DONE/CONCERNS/BLOCKED/NEEDS_CONTEXT reporting
|
|
43
47
|
- **Progress Reflection** — Solo retro at natural milestones
|
|
48
|
+
- **Expert Review Spec** — Generate a consultant-ready technical spec (gap analysis, approach review, UX enhancement) at any milestone
|
|
49
|
+
- **Features Dashboard** — Live HTML page tracking which capabilities you've used, what's available, and what's recommended next
|
|
44
50
|
|
|
45
51
|
**Governance Foundation:**
|
|
46
52
|
- .archon/active/architecture.md template with best practices
|
|
47
53
|
- **Quality Level / Posture** — prototype/production/enterprise-grade behavior
|
|
48
54
|
- **DEPENDENCIES.md** — File-level dependency tracking to prevent regressions
|
|
49
55
|
- IDE-specific rule files (.cursorrules, CLAUDE.md, GEMINI.md, etc.)
|
|
50
|
-
- **
|
|
56
|
+
- **24 on-demand AI skills** — Design review, debugging, ship readiness, scope review, accessibility, SEO/GEO, color scheme picker, expert review, features dashboard, and more — loaded only when triggered, keeping context lean
|
|
57
|
+
- **Skills-based architecture** — 80% smaller context footprint (8.6 KB core vs 42 KB monolithic). Skills load on-demand with progressive disclosure
|
|
58
|
+
- **Claude Code: 16 native slash commands** — `/debug`, `/design-review`, `/ship-readiness`, `/code-review`, `/scope-check`, `/expert-review`, `/geo-optimize`, `/seo-check`, `/accessibility`, `/reflect`, `/handoff`, `/plan-tasks`, `/color-scheme`, `/rollback`, `/dashboard`, `/constitution`
|
|
59
|
+
- **GEO Optimization** — 7-phase protocol for AI search citation: identity phrases, atomic claims, JSON-LD schemas, and audit ([free tools](https://archondev.io/geo))
|
|
51
60
|
- **Task Extraction** — AI confirms all items before starting, nothing gets forgotten
|
|
52
61
|
- **Context Handoff** — Memory management for long sessions
|
|
53
62
|
- Works with any AI coding assistant
|
|
@@ -67,11 +76,11 @@ pnpm exec tsx scripts/init-governance-db.ts
|
|
|
67
76
|
|
|
68
77
|
| Command | Description |
|
|
69
78
|
|---------|-------------|
|
|
70
|
-
| `archon` |
|
|
79
|
+
| `archon` | Chat-first interactive mode — just run and start talking |
|
|
71
80
|
| `archon init` | Initialize in your project |
|
|
72
|
-
| `archon
|
|
73
|
-
| `archon config ai` |
|
|
74
|
-
| `archon status` | Show
|
|
81
|
+
| `archon mode` | Choose local governance mode or BYOK AI mode |
|
|
82
|
+
| `archon config ai` | Guided BYOK provider-key setup |
|
|
83
|
+
| `archon status` | Show local mode, auth, and project status |
|
|
75
84
|
| `archon plan <description>` | Create a work item with AI planning (extracts and confirms multi-item requests) |
|
|
76
85
|
| `archon execute <atom-id>` | Execute with quality gates |
|
|
77
86
|
| `archon list` | List all work items |
|
|
@@ -104,17 +113,15 @@ pnpm exec tsx scripts/init-governance-db.ts
|
|
|
104
113
|
| `archon governance handoff` | Log handoff + current context |
|
|
105
114
|
| `archon governance migrate` | Migrate legacy governance files |
|
|
106
115
|
| `archon governance sqlite-init` | Initialize or refresh local governance SQLite DB |
|
|
107
|
-
| `archon
|
|
108
|
-
| `archon
|
|
109
|
-
| `archon
|
|
110
|
-
| `archon session resume [id]` | Resume session on another device |
|
|
111
|
-
| `archon execute ATOM --cloud` | Execute in cloud (creates PR when done) |
|
|
112
|
-
| `archon cloud status` | List cloud executions |
|
|
113
|
-
| `archon parallel cloud ATOM-001 ATOM-002` | Legacy command (disabled in free/BYOK mode) |
|
|
114
|
-
| `archon index init [--local\|--cloud]` | Initialize semantic indexing |
|
|
115
|
-
| `archon index update [--cloud]` | Index changed files |
|
|
116
|
-
| `archon index search "query" [--cloud]` | Semantic code search |
|
|
116
|
+
| `archon index init` | Initialize local semantic indexing |
|
|
117
|
+
| `archon index update` | Index changed files |
|
|
118
|
+
| `archon index search "query"` | Semantic code search |
|
|
117
119
|
| `archon parallel status` | Show parallel execution status |
|
|
120
|
+
| `archon ship` | Ship pipeline: review → test → version → changelog → PR |
|
|
121
|
+
| `archon ship --dry-run` | Run all ship checks without committing |
|
|
122
|
+
| `archon qa` | Visual QA with headless browser health checks |
|
|
123
|
+
| `archon qa --url <url>` | Test specific URL |
|
|
124
|
+
| `archon retro` | Session retrospective with quantitative metrics |
|
|
118
125
|
| `archon deploy` | One-click deploy (auto-detect platform) |
|
|
119
126
|
| `archon cleanup check` | Analyze workspace for bloat |
|
|
120
127
|
| `archon cleanup run` | Execute cleanup tasks |
|
|
@@ -136,12 +143,14 @@ pnpm exec tsx scripts/init-governance-db.ts
|
|
|
136
143
|
|
|
137
144
|
## Pricing
|
|
138
145
|
|
|
139
|
-
|
|
140
|
-
|------|------|--------------|
|
|
141
|
-
| **Free (Download / Governance)** | $0 | Governance/workflow layer with no built-in AI calls |
|
|
142
|
-
| **BYOK (CLI + AI)** | $0 to ArchonDev | Use your own provider keys; provider bills tokens directly |
|
|
146
|
+
**ArchonDev is Free.** There are no paid tiers, no subscriptions, and no credit card required.
|
|
143
147
|
|
|
144
|
-
|
|
148
|
+
| Mode | Cost to ArchonDev | What You Get |
|
|
149
|
+
|------|-------------------|--------------|
|
|
150
|
+
| **Download / Governance** | $0 | Governance/workflow layer with no built-in AI calls |
|
|
151
|
+
| **CLI + AI (BYOK)** | $0 | Full CLI with AI — bring your own API keys; your provider bills tokens directly at cost |
|
|
152
|
+
|
|
153
|
+
No Archon token markup. You pay your LLM provider directly at their published rates.
|
|
145
154
|
|
|
146
155
|
### BYOK Key Security
|
|
147
156
|
|
|
@@ -152,12 +161,12 @@ No paid tiers, no credit purchases, and no Archon token markup.
|
|
|
152
161
|
|
|
153
162
|
## How It Works
|
|
154
163
|
|
|
155
|
-
1. **
|
|
156
|
-
2. **
|
|
157
|
-
3. **
|
|
158
|
-
4. **
|
|
159
|
-
5. **Changes
|
|
160
|
-
6. **
|
|
164
|
+
1. **Run `archon`** — Archon inspects the current folder and governance state
|
|
165
|
+
2. **Add keys only if needed** — BYOK setup is local-only and optional until you want AI actions
|
|
166
|
+
3. **Start in chat** — Ask naturally; Archon decides when to stay conversational vs create atoms
|
|
167
|
+
4. **Governance loads first** — Architecture, dependencies, and progress are respected automatically
|
|
168
|
+
5. **Changes are validated** — Quality gates and approval policy stay active
|
|
169
|
+
6. **Continuity persists** — Handoffs, pending work, and learnings stay local across sessions
|
|
161
170
|
|
|
162
171
|
## First Run Experience
|
|
163
172
|
|
|
@@ -167,15 +176,14 @@ $ archon
|
|
|
167
176
|
ArchonDev - AI-Powered Development Governance
|
|
168
177
|
────────────────────────────────────────────────
|
|
169
178
|
|
|
170
|
-
|
|
171
|
-
Mode: Free (download-only governance)
|
|
179
|
+
AI mode: Local governance only
|
|
172
180
|
|
|
173
|
-
|
|
181
|
+
No provider keys configured yet.
|
|
174
182
|
→ Run 'archon config ai' to enable BYOK for CLI AI features
|
|
175
183
|
|
|
176
184
|
→ What kind of project are you building?
|
|
177
185
|
[AI asks natural follow-up questions based on your answers]
|
|
178
|
-
(Type "
|
|
186
|
+
(Type "mode" or "help" anytime)
|
|
179
187
|
|
|
180
188
|
✓ Project initialized!
|
|
181
189
|
```
|
|
@@ -187,14 +195,15 @@ Type these anytime during interactive prompts:
|
|
|
187
195
|
| Command | Description |
|
|
188
196
|
|---------|-------------|
|
|
189
197
|
| `config ai` | Open BYOK key setup |
|
|
190
|
-
| `status` | Show
|
|
198
|
+
| `status` | Show local mode and optional auth info |
|
|
191
199
|
| `keys` | List configured API keys |
|
|
192
200
|
| `help` | Show available commands |
|
|
193
201
|
| `quit` | Exit ArchonDev |
|
|
194
202
|
|
|
195
203
|
## Cloud Execution (Legacy)
|
|
196
204
|
|
|
197
|
-
|
|
205
|
+
These commands are preserved only for backward compatibility and are hidden from the normal CLI surface.
|
|
206
|
+
They are not part of the current local-first product path.
|
|
198
207
|
|
|
199
208
|
```bash
|
|
200
209
|
# 1. Authenticate
|
|
@@ -216,7 +225,6 @@ archon cloud status # List all cloud executions
|
|
|
216
225
|
archon cloud logs <id> # View execution logs
|
|
217
226
|
```
|
|
218
227
|
|
|
219
|
-
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.
|
|
220
228
|
Cloud execution is currently disabled in the free/BYOK model. Use local execution with BYOK keys.
|
|
221
229
|
|
|
222
230
|
## Working with Existing Projects
|
|
@@ -243,7 +251,9 @@ The CLI detects existing projects and suggests this workflow automatically.
|
|
|
243
251
|
|
|
244
252
|
## Documentation
|
|
245
253
|
|
|
246
|
-
- [archondev.io](https://archondev.io) — Main website
|
|
254
|
+
- [archondev.io](https://archondev.io) — Main website
|
|
255
|
+
- [archondev.io/geo](https://archondev.io/geo) — Free GEO optimization tools (Claude skill + prompt generator)
|
|
256
|
+
- [archondev.io/color-schemes](https://archondev.io/color-schemes) — Color Scheme Picker (26 curated schemes)
|
|
247
257
|
- [AI Coding Problems Research](docs/ai-coding-problems-research.md) — Market research on AI coding assistant issues
|
|
248
258
|
|
|
249
259
|
## Website Deploy (Bunny.net)
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
listLocalAtoms,
|
|
6
6
|
loadAtom
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-7RXZTPXY.js";
|
|
8
8
|
import {
|
|
9
9
|
SUPABASE_ANON_KEY,
|
|
10
10
|
SUPABASE_URL
|
|
@@ -748,7 +748,7 @@ async function parallelClean() {
|
|
|
748
748
|
}
|
|
749
749
|
function toSchedulableAtom(atom) {
|
|
750
750
|
return {
|
|
751
|
-
id: atom.
|
|
751
|
+
id: atom.externalId,
|
|
752
752
|
title: atom.title,
|
|
753
753
|
dependencies: atom.plan?.dependencies,
|
|
754
754
|
filesTouched: atom.plan?.files_to_modify
|
|
@@ -809,8 +809,15 @@ async function parallelSchedule(options) {
|
|
|
809
809
|
}
|
|
810
810
|
async function parallelRunWaves(options) {
|
|
811
811
|
const atoms = await listLocalAtoms();
|
|
812
|
-
const
|
|
812
|
+
const scopeIds = options.onlyAtomIds ? new Set(options.onlyAtomIds) : null;
|
|
813
|
+
const readyAtoms = atoms.filter(
|
|
814
|
+
(a) => a.status === "READY" && (!scopeIds || scopeIds.has(a.externalId))
|
|
815
|
+
);
|
|
813
816
|
if (readyAtoms.length === 0) {
|
|
817
|
+
if (scopeIds && scopeIds.size > 0) {
|
|
818
|
+
console.log(chalk2.yellow("No READY atoms found in the approved scope."));
|
|
819
|
+
return;
|
|
820
|
+
}
|
|
814
821
|
console.log(chalk2.yellow("No READY atoms found."));
|
|
815
822
|
return;
|
|
816
823
|
}
|
|
@@ -875,7 +882,8 @@ async function parallelRunWaves(options) {
|
|
|
875
882
|
}
|
|
876
883
|
async function executeAtomInWorktree(atomId, worktreePath) {
|
|
877
884
|
return new Promise((resolve) => {
|
|
878
|
-
const
|
|
885
|
+
const cliEntry = process.argv[1] ?? "archon";
|
|
886
|
+
const child = spawn(process.execPath, [cliEntry, "execute", atomId, "--skip-gates"], {
|
|
879
887
|
cwd: worktreePath,
|
|
880
888
|
stdio: "pipe"
|
|
881
889
|
});
|
|
@@ -900,6 +908,8 @@ async function executeAtomInWorktree(atomId, worktreePath) {
|
|
|
900
908
|
}
|
|
901
909
|
|
|
902
910
|
export {
|
|
911
|
+
buildDependencyGraph,
|
|
912
|
+
scheduleExecution,
|
|
903
913
|
cloudStatus,
|
|
904
914
|
cloudCancel,
|
|
905
915
|
cloudLogs,
|
|
@@ -228,22 +228,24 @@ async function logout() {
|
|
|
228
228
|
async function status() {
|
|
229
229
|
const config = await loadConfig();
|
|
230
230
|
if (!config.accessToken) {
|
|
231
|
-
console.log(chalk.
|
|
232
|
-
console.log(chalk.dim(
|
|
231
|
+
console.log(chalk.green("Local-only mode active"));
|
|
232
|
+
console.log(chalk.dim(`AI mode: ${formatTier(config.tier ?? "FREE")}`));
|
|
233
|
+
console.log(chalk.dim("Platform login is optional and only needed for legacy remote features."));
|
|
233
234
|
return;
|
|
234
235
|
}
|
|
235
236
|
if (config.expiresAt) {
|
|
236
237
|
const expiresAt = new Date(config.expiresAt);
|
|
237
238
|
if (expiresAt < /* @__PURE__ */ new Date()) {
|
|
238
239
|
console.log(chalk.yellow("Session expired"));
|
|
239
|
-
console.log(chalk.dim(
|
|
240
|
+
console.log(chalk.dim(`AI mode: ${formatTier(config.tier ?? "FREE")}`));
|
|
241
|
+
console.log(chalk.dim("Re-authenticate only if you need legacy remote features."));
|
|
240
242
|
return;
|
|
241
243
|
}
|
|
242
244
|
}
|
|
243
|
-
console.log(chalk.green("\u2713
|
|
245
|
+
console.log(chalk.green("\u2713 Optional remote session available"));
|
|
244
246
|
console.log();
|
|
245
247
|
console.log(` ${chalk.dim("Email:")} ${config.email}`);
|
|
246
|
-
console.log(` ${chalk.dim("
|
|
248
|
+
console.log(` ${chalk.dim("AI mode:")} ${formatTier(config.tier ?? "FREE")}`);
|
|
247
249
|
console.log(` ${chalk.dim("User:")} ${config.userId}`);
|
|
248
250
|
if (config.expiresAt) {
|
|
249
251
|
const expiresAt = new Date(config.expiresAt);
|
|
@@ -254,10 +256,10 @@ async function status() {
|
|
|
254
256
|
function formatTier(tier) {
|
|
255
257
|
switch (tier) {
|
|
256
258
|
case "BYOK":
|
|
257
|
-
return chalk.blue("BYOK (
|
|
259
|
+
return chalk.blue("BYOK (your provider keys)");
|
|
258
260
|
case "FREE":
|
|
259
261
|
default:
|
|
260
|
-
return chalk.gray("
|
|
262
|
+
return chalk.gray("Local governance only");
|
|
261
263
|
}
|
|
262
264
|
}
|
|
263
265
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
+
appendLocalUsageEntry,
|
|
2
3
|
debugLog
|
|
3
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-I3BBA7MB.js";
|
|
4
5
|
import {
|
|
5
6
|
ArchitectureParser
|
|
6
7
|
} from "./chunk-5EVHUDQX.js";
|
|
@@ -440,9 +441,8 @@ async function plan(description, options) {
|
|
|
440
441
|
const conversational = options.conversational === true;
|
|
441
442
|
const concise = options.conciseOutput === true;
|
|
442
443
|
try {
|
|
443
|
-
if (!await isAuthenticated()) {
|
|
444
|
-
console.log(chalk.
|
|
445
|
-
console.log(chalk.dim("For local development, you can continue without authentication."));
|
|
444
|
+
if (!await isAuthenticated() && !concise) {
|
|
445
|
+
console.log(chalk.dim("Running in local mode. Platform login is optional and not required for planning."));
|
|
446
446
|
}
|
|
447
447
|
const archPath = join2(process.cwd(), "ARCHITECTURE.md");
|
|
448
448
|
if (!existsSync2(archPath)) {
|
|
@@ -771,6 +771,16 @@ Next steps:`));
|
|
|
771
771
|
console.log(chalk.dim(`
|
|
772
772
|
Token usage: ${planResult.totalUsage.inputTokens} input, ${planResult.totalUsage.outputTokens} output`));
|
|
773
773
|
}
|
|
774
|
+
await appendLocalUsageEntry({
|
|
775
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
776
|
+
projectPath: process.cwd(),
|
|
777
|
+
model: planner.getBillingModel().model,
|
|
778
|
+
provider: planner.getBillingModel().provider,
|
|
779
|
+
operation: "ADVERSARIAL_PLANNING",
|
|
780
|
+
inputTokens: planResult.totalUsage.inputTokens,
|
|
781
|
+
outputTokens: planResult.totalUsage.outputTokens,
|
|
782
|
+
baseCost: planResult.totalUsage.baseCost
|
|
783
|
+
});
|
|
774
784
|
if (conversational) {
|
|
775
785
|
atom.plan = planResult.finalPlan ?? buildConversationalFallbackPlan({
|
|
776
786
|
description,
|