@prestyj/cli 4.3.34 → 4.3.55
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 +2 -2
- package/dist/cli.js +248 -59
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +122 -3
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auto-update.d.ts +8 -0
- package/dist/core/auto-update.d.ts.map +1 -1
- package/dist/core/auto-update.js +20 -2
- package/dist/core/auto-update.js.map +1 -1
- package/dist/core/compaction/compactor.d.ts.map +1 -1
- package/dist/core/compaction/compactor.js +4 -1
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/compactor.test.js +5 -5
- package/dist/core/compaction/compactor.test.js.map +1 -1
- package/dist/core/compaction/token-estimator.d.ts.map +1 -1
- package/dist/core/compaction/token-estimator.js +14 -1
- package/dist/core/compaction/token-estimator.js.map +1 -1
- package/dist/core/logger.d.ts +7 -2
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +48 -4
- package/dist/core/logger.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +57 -25
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/prompt-commands.d.ts.map +1 -1
- package/dist/core/prompt-commands.js +224 -3
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +29 -14
- package/dist/core/skills.js.map +1 -1
- package/dist/modes/agent-home-mode.js +6 -6
- package/dist/modes/agent-home-mode.js.map +1 -1
- package/dist/system-prompt.d.ts +5 -1
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +74 -104
- package/dist/system-prompt.js.map +1 -1
- package/dist/tools/edit.d.ts +2 -2
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +16 -3
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/plan-mode.test.js +20 -4
- package/dist/tools/plan-mode.test.js.map +1 -1
- package/dist/tools/prompt-hints.d.ts +10 -0
- package/dist/tools/prompt-hints.d.ts.map +1 -0
- package/dist/tools/prompt-hints.js +45 -0
- package/dist/tools/prompt-hints.js.map +1 -0
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +32 -6
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/read.test.js +23 -4
- package/dist/tools/read.test.js.map +1 -1
- package/dist/tools/write.test.js +13 -1
- package/dist/tools/write.test.js.map +1 -1
- package/dist/ui/App.d.ts +6 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +95 -24
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/components/EyesOverlay.d.ts +10 -0
- package/dist/ui/components/EyesOverlay.d.ts.map +1 -0
- package/dist/ui/components/EyesOverlay.js +220 -0
- package/dist/ui/components/EyesOverlay.js.map +1 -0
- package/dist/ui/components/Footer.d.ts.map +1 -1
- package/dist/ui/components/Footer.js +6 -5
- package/dist/ui/components/Footer.js.map +1 -1
- package/dist/ui/components/InputArea.d.ts +4 -1
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +4 -3
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/ModelSelector.d.ts.map +1 -1
- package/dist/ui/components/ModelSelector.js +1 -1
- package/dist/ui/components/ModelSelector.js.map +1 -1
- package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
- package/dist/ui/components/PlanOverlay.js +7 -1
- package/dist/ui/components/PlanOverlay.js.map +1 -1
- package/dist/ui/components/SelectList.d.ts +3 -1
- package/dist/ui/components/SelectList.d.ts.map +1 -1
- package/dist/ui/components/SelectList.js +15 -2
- package/dist/ui/components/SelectList.js.map +1 -1
- package/dist/ui/components/SkillsOverlay.d.ts.map +1 -1
- package/dist/ui/components/SkillsOverlay.js +6 -59
- package/dist/ui/components/SkillsOverlay.js.map +1 -1
- package/dist/ui/components/SlashCommandMenu.d.ts.map +1 -1
- package/dist/ui/components/SlashCommandMenu.js +18 -8
- package/dist/ui/components/SlashCommandMenu.js.map +1 -1
- package/dist/ui/login.js +5 -5
- package/dist/ui/login.js.map +1 -1
- package/dist/ui/utils/token-to-ansi.d.ts.map +1 -1
- package/dist/ui/utils/token-to-ansi.js +9 -1
- package/dist/ui/utils/token-to-ansi.js.map +1 -1
- package/dist/utils/image.d.ts +18 -1
- package/dist/utils/image.d.ts.map +1 -1
- package/dist/utils/image.js +80 -31
- package/dist/utils/image.js.map +1 -1
- package/dist/utils/session-title.js +1 -1
- package/package.json +9 -7
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Provider display order — mirrors `PROVIDERS` in ui/login.tsx so the
|
|
2
|
+
// /model selector and login selector sort models identically.
|
|
1
3
|
export const MODELS = [
|
|
2
4
|
// ── Anthropic ──────────────────────────────────────────
|
|
3
5
|
{
|
|
@@ -30,18 +32,27 @@ export const MODELS = [
|
|
|
30
32
|
supportsImages: true,
|
|
31
33
|
costTier: "low",
|
|
32
34
|
},
|
|
33
|
-
// ──
|
|
35
|
+
// ── OpenAI (Codex) ─────────────────────────────────────
|
|
34
36
|
{
|
|
35
|
-
id: "
|
|
36
|
-
name: "
|
|
37
|
-
provider: "
|
|
37
|
+
id: "gpt-5.5",
|
|
38
|
+
name: "GPT-5.5",
|
|
39
|
+
provider: "openai",
|
|
38
40
|
contextWindow: 1_000_000,
|
|
39
|
-
maxOutputTokens:
|
|
41
|
+
maxOutputTokens: 128_000,
|
|
40
42
|
supportsThinking: true,
|
|
41
|
-
supportsImages:
|
|
42
|
-
costTier: "
|
|
43
|
+
supportsImages: true,
|
|
44
|
+
costTier: "high",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: "gpt-5.5-pro",
|
|
48
|
+
name: "GPT-5.5 Pro",
|
|
49
|
+
provider: "openai",
|
|
50
|
+
contextWindow: 1_000_000,
|
|
51
|
+
maxOutputTokens: 128_000,
|
|
52
|
+
supportsThinking: true,
|
|
53
|
+
supportsImages: true,
|
|
54
|
+
costTier: "high",
|
|
43
55
|
},
|
|
44
|
-
// ── OpenAI (Codex) ─────────────────────────────────────
|
|
45
56
|
{
|
|
46
57
|
id: "gpt-5.4",
|
|
47
58
|
name: "GPT-5.4",
|
|
@@ -82,7 +93,18 @@ export const MODELS = [
|
|
|
82
93
|
supportsImages: true,
|
|
83
94
|
costTier: "low",
|
|
84
95
|
},
|
|
85
|
-
// ──
|
|
96
|
+
// ── Moonshot (Kimi) ────────────────────────────────────
|
|
97
|
+
{
|
|
98
|
+
id: "kimi-k2.6",
|
|
99
|
+
name: "Kimi K2.6",
|
|
100
|
+
provider: "moonshot",
|
|
101
|
+
contextWindow: 262_144,
|
|
102
|
+
maxOutputTokens: 16_384,
|
|
103
|
+
supportsThinking: true,
|
|
104
|
+
supportsImages: true,
|
|
105
|
+
costTier: "medium",
|
|
106
|
+
},
|
|
107
|
+
// ── Z.AI (GLM) ─────────────────────────────────────────
|
|
86
108
|
{
|
|
87
109
|
id: "glm-5v-turbo",
|
|
88
110
|
name: "GLM-5V-Turbo",
|
|
@@ -123,7 +145,7 @@ export const MODELS = [
|
|
|
123
145
|
supportsImages: false,
|
|
124
146
|
costTier: "low",
|
|
125
147
|
},
|
|
126
|
-
// ── MiniMax
|
|
148
|
+
// ── MiniMax ────────────────────────────────────────────
|
|
127
149
|
{
|
|
128
150
|
id: "MiniMax-M2.7",
|
|
129
151
|
name: "MiniMax M2.7",
|
|
@@ -144,28 +166,38 @@ export const MODELS = [
|
|
|
144
166
|
supportsImages: false,
|
|
145
167
|
costTier: "medium",
|
|
146
168
|
},
|
|
147
|
-
// ──
|
|
169
|
+
// ── Xiaomi (MiMo) ──────────────────────────────────────
|
|
148
170
|
{
|
|
149
|
-
id: "
|
|
150
|
-
name: "
|
|
151
|
-
provider: "
|
|
171
|
+
id: "mimo-v2.5-pro",
|
|
172
|
+
name: "MiMo-V2.5-Pro",
|
|
173
|
+
provider: "xiaomi",
|
|
152
174
|
contextWindow: 1_000_000,
|
|
153
|
-
maxOutputTokens:
|
|
175
|
+
maxOutputTokens: 131_072,
|
|
154
176
|
supportsThinking: true,
|
|
155
177
|
supportsImages: false,
|
|
156
|
-
costTier: "
|
|
178
|
+
costTier: "high",
|
|
157
179
|
},
|
|
158
|
-
// ── Moonshot (Kimi) ──────────────────────────────────────
|
|
159
180
|
{
|
|
160
|
-
id: "
|
|
161
|
-
name: "
|
|
162
|
-
provider: "
|
|
163
|
-
contextWindow:
|
|
164
|
-
maxOutputTokens:
|
|
181
|
+
id: "mimo-v2.5",
|
|
182
|
+
name: "MiMo-V2.5",
|
|
183
|
+
provider: "xiaomi",
|
|
184
|
+
contextWindow: 1_000_000,
|
|
185
|
+
maxOutputTokens: 131_072,
|
|
165
186
|
supportsThinking: true,
|
|
166
187
|
supportsImages: true,
|
|
167
188
|
costTier: "medium",
|
|
168
189
|
},
|
|
190
|
+
// ── OpenRouter ─────────────────────────────────────────
|
|
191
|
+
{
|
|
192
|
+
id: "qwen/qwen3.6-plus",
|
|
193
|
+
name: "Qwen3.6-Plus",
|
|
194
|
+
provider: "openrouter",
|
|
195
|
+
contextWindow: 1_000_000,
|
|
196
|
+
maxOutputTokens: 65_536,
|
|
197
|
+
supportsThinking: true,
|
|
198
|
+
supportsImages: false,
|
|
199
|
+
costTier: "medium",
|
|
200
|
+
},
|
|
169
201
|
];
|
|
170
202
|
export function getModel(id) {
|
|
171
203
|
return MODELS.find((m) => m.id === id);
|
|
@@ -175,13 +207,13 @@ export function getModelsForProvider(provider) {
|
|
|
175
207
|
}
|
|
176
208
|
export function getDefaultModel(provider) {
|
|
177
209
|
if (provider === "xiaomi")
|
|
178
|
-
return MODELS.find((m) => m.id === "mimo-v2-pro");
|
|
210
|
+
return MODELS.find((m) => m.id === "mimo-v2.5-pro");
|
|
179
211
|
if (provider === "openai")
|
|
180
|
-
return MODELS.find((m) => m.id === "gpt-5.
|
|
212
|
+
return MODELS.find((m) => m.id === "gpt-5.5");
|
|
181
213
|
if (provider === "glm")
|
|
182
214
|
return MODELS.find((m) => m.id === "glm-5.1");
|
|
183
215
|
if (provider === "moonshot")
|
|
184
|
-
return MODELS.find((m) => m.id === "kimi-k2.
|
|
216
|
+
return MODELS.find((m) => m.id === "kimi-k2.6");
|
|
185
217
|
if (provider === "minimax")
|
|
186
218
|
return MODELS.find((m) => m.id === "MiniMax-M2.7");
|
|
187
219
|
if (provider === "openrouter")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,MAAM,GAAgB;IACjC,0DAA0D;IAC1D;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,WAAW;QACrB,aAAa,EAAE,SAAS;QACxB,eAAe,EAAE,OAAO;QACxB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,WAAW;QACrB,aAAa,EAAE,SAAS;QACxB,eAAe,EAAE,MAAM;QACvB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,QAAQ;KACnB;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,WAAW;QACrB,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,KAAK;KAChB;IACD,0DAA0D;IAC1D;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,QAAQ;QAClB,aAAa,EAAE,SAAS;QACxB,eAAe,EAAE,OAAO;QACxB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-commands.d.ts","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"prompt-commands.d.ts","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EAy0B1C,CAAC;AAEF,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAExE"}
|
|
@@ -214,7 +214,13 @@ Create a concise tree structure showing key directories and files with brief des
|
|
|
214
214
|
|
|
215
215
|
Create CLAUDE.md with: project description, project structure tree, organization rules (one file per component, single responsibility), and zero-tolerance code quality checks with the exact commands for this project.
|
|
216
216
|
|
|
217
|
-
Keep total file under 100 lines. If updating, preserve any custom sections the user added
|
|
217
|
+
Keep total file under 100 lines. If updating, preserve any custom sections the user added.
|
|
218
|
+
|
|
219
|
+
## Step 6: Restart Notice
|
|
220
|
+
|
|
221
|
+
End your reply with this exact notice so the user doesn't miss it:
|
|
222
|
+
|
|
223
|
+
> ⚠️ CLAUDE.md was created/updated. ezcoder loads it at startup, so **exit and restart ezcoder** (\`/quit\` then run \`ezcoder\` again) before continuing. Without a restart, I won't see the new context.`,
|
|
218
224
|
},
|
|
219
225
|
{
|
|
220
226
|
name: "setup-lint",
|
|
@@ -466,11 +472,127 @@ Replace all placeholders with the actual commands for the detected project type
|
|
|
466
472
|
## Step 3: Confirm
|
|
467
473
|
|
|
468
474
|
Report that /update is now available with dependency updates, security audits, and deprecation fixes.`,
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
name: "setup-eyes",
|
|
478
|
+
aliases: [],
|
|
479
|
+
description: "Set up project perception probes and document them",
|
|
480
|
+
prompt: `# Eyes: Set Up or Expand Project Perception
|
|
481
|
+
|
|
482
|
+
Build the perception probes this project needs and document them in CLAUDE.md so any future agent can use them. The \`ezcoder eyes\` CLI does the mechanical work (detect, install, verify); your job is **judgment** (which capabilities matter for THIS project) and **prose** (the project-specific triggers in CLAUDE.md). Re-run this command anytime to add or fix probes.
|
|
483
|
+
|
|
484
|
+
## Steps
|
|
485
|
+
|
|
486
|
+
1. \`ezcoder eyes list\` — see what's already installed/verified. **Resume**, don't restart. Skip verified probes; re-run failed ones.
|
|
487
|
+
2. \`ezcoder eyes detect\` — emits JSON of \`{capability: {candidates, primary}}\` for this project.
|
|
488
|
+
3. **Pick 3–8 capabilities to install this run.** Heuristics:
|
|
489
|
+
- Universal: \`http\` for any API/backend, \`runtime_logs\` for anything with a server.
|
|
490
|
+
- UI: \`visual\` — for multi-stack projects (e.g. React Native), install all primary candidates with distinct names: \`install visual --impl playwright --as visual-web\`, \`install visual --impl adb --as visual-android\`, \`install visual --impl simctl --as visual-ios\`.
|
|
491
|
+
- Backend with email/webhooks: \`capture_email\`, \`capture_webhook\`.
|
|
492
|
+
- **Always defer** opt-ins: \`load\`, \`chaos\`, \`remote\`, \`apm\` — unless the user explicitly asked.
|
|
493
|
+
4. For each pick: \`ezcoder eyes install <cap> [--impl <name>] [--as <name>]\`. On failure: retry once, then mark and continue — don't abort the whole run.
|
|
494
|
+
5. \`ezcoder eyes verify\` — runs every installed probe's self-test. Some failures (\`adb\` no device, \`simctl\` no booted simulator) are expected; they get recorded.
|
|
495
|
+
6. **Write/update the \`## Eyes\` section in CLAUDE.md** (create CLAUDE.md if missing; do NOT clobber other sections). Use the template below. The triggers are the load-bearing piece — make them project-specific and actionable.
|
|
496
|
+
7. **Report**: list verified ✓ / failed ✗ / deferred. End with the restart notice.
|
|
497
|
+
|
|
498
|
+
## CLAUDE.md \`## Eyes\` template
|
|
499
|
+
|
|
500
|
+
\`\`\`markdown
|
|
501
|
+
## Eyes
|
|
502
|
+
|
|
503
|
+
Perception probes live in \`.ezcoder/eyes/\`. All headless. Artifacts → \`.ezcoder/eyes/out/\` (gitignored). Invoke probes yourself; don't ask the user to verify what you can verify.
|
|
504
|
+
|
|
505
|
+
### Available probes
|
|
506
|
+
|
|
507
|
+
| Need | Run | Then |
|
|
508
|
+
|---|---|---|
|
|
509
|
+
| <one-line need> | \`.ezcoder/eyes/<id>.sh <args>\` | <how to consume the output> |
|
|
510
|
+
| ... | ... | ... |
|
|
511
|
+
|
|
512
|
+
### When to use these eyes (automatically, without being asked)
|
|
513
|
+
|
|
514
|
+
Reach for probes ON YOUR OWN INITIATIVE when any of these apply:
|
|
515
|
+
|
|
516
|
+
- <project-specific trigger 1, e.g. "After editing any \`.tsx\` file under \`src/components/\`, screenshot the affected page with \`.ezcoder/eyes/visual.sh http://localhost:3000/<path>\`.">
|
|
517
|
+
- <trigger 2, e.g. "After adding/modifying a route under \`src/routes/\`, hit it with \`.ezcoder/eyes/http.sh\` and confirm the response shape.">
|
|
518
|
+
- <trigger 3>
|
|
519
|
+
|
|
520
|
+
If a probe fails or returns unexpected results, investigate the artifact directly before assuming the probe itself is broken.
|
|
521
|
+
|
|
522
|
+
### When NOT to use
|
|
523
|
+
|
|
524
|
+
- Docs-only changes, comments, formatting.
|
|
525
|
+
- Refactors covered by tests.
|
|
526
|
+
- Dev server / simulator / sink isn't up AND the task doesn't require runtime verification.
|
|
527
|
+
- Same probe already ran this turn on the same artifact — reuse the output.
|
|
528
|
+
|
|
529
|
+
### When to escalate a capability gap (the self-improvement loop)
|
|
530
|
+
|
|
531
|
+
If you're about to **guess**, **skip verification**, or **hand-wave** about something a better probe would show you — STOP and surface the tradeoff inline. Phrasing like:
|
|
532
|
+
|
|
533
|
+
> "I tried screenshotting but the failure is a JS error I can only see in the browser console — and there's no \`browser_console\` probe. Two paths: (a) ~3 min to add it, then I can diagnose properly. (b) Workaround: I'd guess from the DOM state. Your call?"
|
|
534
|
+
|
|
535
|
+
Wait for the user's choice. **Don't escalate more than once per request** — if the user picked the workaround, don't re-ask in the same turn.
|
|
536
|
+
|
|
537
|
+
For minor friction (worked around it but wished it were better), don't interrupt — log it for later review:
|
|
538
|
+
- \`ezcoder eyes log rough "<reason>" [--probe <name>]\` — minor friction, you handled it
|
|
539
|
+
- \`ezcoder eyes log wish "<gap>"\` — capability you wished existed
|
|
540
|
+
- \`ezcoder eyes log blocked "<reason>"\` — call this AFTER the user approves an inline-escalation fix, for the audit trail
|
|
541
|
+
|
|
542
|
+
These accumulate quietly. The user reviews them periodically. Open signals will appear in your context on future turns until they're acked.
|
|
543
|
+
\`\`\`
|
|
544
|
+
|
|
545
|
+
## Trigger writing rules
|
|
546
|
+
|
|
547
|
+
The "When to use" triggers are project-specific and the load-bearing piece — without them the agent has probes but no instinct to use them. Rules:
|
|
548
|
+
- For each verified probe, write at least one trigger that names a real **file pattern** or **task type** the agent will recognize ("after editing \`*.tsx\` under \`src/ui/\`", not "after UI changes").
|
|
549
|
+
- Be **actionable** ("screenshot the page", "hit the endpoint") not **vague** ("verify it works").
|
|
550
|
+
- Match density to the project: a UI-heavy app warrants strong visual triggers; a pure backend library does not.
|
|
551
|
+
|
|
552
|
+
## Restart notice
|
|
553
|
+
|
|
554
|
+
End your report with:
|
|
555
|
+
|
|
556
|
+
> ⚠ CLAUDE.md was updated. ezcoder loads CLAUDE.md at startup, so **exit and restart ezcoder** (\`/quit\` then \`ezcoder\` again) before asking me to use these probes. Without a restart, I won't see the new instructions in my context.`,
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
name: "eyes-improve",
|
|
560
|
+
aliases: [],
|
|
561
|
+
description: "Triage eyes signals and apply approved probe fixes",
|
|
562
|
+
prompt: `# Eyes Improve: Triage Accumulated Signals
|
|
563
|
+
|
|
564
|
+
Read the open signals in \`.ezcoder/eyes/journal.jsonl\`, group related ones, propose concrete fixes, and apply what the user approves. This isn't unbounded refactoring — it's incremental probe improvement driven by real use.
|
|
565
|
+
|
|
566
|
+
## Steps
|
|
567
|
+
|
|
568
|
+
1. \`ezcoder eyes log list --status open\` — if zero entries, say "nothing to triage" and stop.
|
|
569
|
+
2. **Group** signals by likely fix:
|
|
570
|
+
- Multiple \`rough\` entries naming the same probe / same frustration → one patch to that probe.
|
|
571
|
+
- \`wish\` entries naming a capability not installed → one \`ezcoder eyes install <cap>\` proposal.
|
|
572
|
+
- \`blocked\` entries are historical (user already resolved inline) → ack them, no new work.
|
|
573
|
+
3. **Cap at 5 proposals this run.** If more would apply, mention them and stop — they'll resurface next run.
|
|
574
|
+
4. For each group, propose ONE concrete change:
|
|
575
|
+
- **Probe tweak**: read \`.ezcoder/eyes/<name>.sh\`, show a diff, explain what it fixes.
|
|
576
|
+
- **New probe**: \`ezcoder eyes install <cap>\` with a one-line justification.
|
|
577
|
+
- **New/updated trigger**: bullet added under \`## Eyes → When to use\` in CLAUDE.md.
|
|
578
|
+
5. Present all proposals as a numbered list with diffs inline. Ask: **"Accept which? Reply with numbers (e.g. '1, 3') or 'none'."**
|
|
579
|
+
6. On user reply:
|
|
580
|
+
- For accepted: apply the change. Then \`ezcoder eyes log ack <id>\` for every journal entry the proposal covers.
|
|
581
|
+
- For unmentioned / rejected: \`ezcoder eyes log defer <id>\` so they stop appearing in context every turn. The user can resurrect deferred entries later.
|
|
582
|
+
7. **Report**: applied changes (one line each), entries acked, entries deferred.
|
|
583
|
+
|
|
584
|
+
## Rules
|
|
585
|
+
|
|
586
|
+
- **No fishing.** Only act on entries already in the journal. Don't scan the repo for hypothetical gaps.
|
|
587
|
+
- **No scope creep.** "Add a \`--wait-for-selector\` flag to the visual probe" is in scope. "Rewrite the probe in TypeScript" is not.
|
|
588
|
+
- **Preserve user edits.** If \`.ezcoder/eyes/<name>.sh\` has diverged from the shipped impl (user hand-edited), point this out and ask before overwriting.
|
|
589
|
+
- **Be honest about tradeoffs.** If a proposed fix might break existing invocations, say so in the proposal.
|
|
590
|
+
- **Decline when appropriate.** If open signals are all vague or low-value, say so and defer them — don't manufacture fixes.`,
|
|
469
591
|
},
|
|
470
592
|
{
|
|
471
593
|
name: "simplify",
|
|
472
594
|
aliases: [],
|
|
473
|
-
description: "Review changed code
|
|
595
|
+
description: "Review changed code and fix issues found",
|
|
474
596
|
prompt: `# Simplify: Code Review and Cleanup
|
|
475
597
|
|
|
476
598
|
Review all changed files for reuse, quality, and efficiency. Fix any issues found.
|
|
@@ -524,7 +646,7 @@ When done, briefly summarize what was fixed (or confirm the code was already cle
|
|
|
524
646
|
{
|
|
525
647
|
name: "batch",
|
|
526
648
|
aliases: [],
|
|
527
|
-
description: "
|
|
649
|
+
description: "Plan a large change, execute in parallel PRs",
|
|
528
650
|
prompt: `# Batch: Parallel Work Orchestration
|
|
529
651
|
|
|
530
652
|
You are orchestrating a large, parallelizable change across this codebase.
|
|
@@ -622,6 +744,105 @@ Style preferences and subjective improvements are not valid findings. Only repor
|
|
|
622
744
|
|
|
623
745
|
If the code aligns well with real-world patterns, say so. That's a good outcome.`,
|
|
624
746
|
},
|
|
747
|
+
{
|
|
748
|
+
name: "setup-skills",
|
|
749
|
+
aliases: [],
|
|
750
|
+
description: "Audit project, recommend skills ranked by impact",
|
|
751
|
+
prompt: `# Skills Audit: Find useful skills for this project
|
|
752
|
+
|
|
753
|
+
Analyze this project and recommend skills from the open ecosystem that would make **working on this project more efficient, easier, and safer**. That is the goal, full stop. Every recommendation must pass the test: does this skill save real time, lower real cognitive load, or prevent real mistakes for someone working on THIS project, repeatedly?
|
|
754
|
+
|
|
755
|
+
Ranked by real impact, not volume.
|
|
756
|
+
|
|
757
|
+
This project could be anything — a web app, a CLI, a mobile app, a game, firmware, a data pipeline, a library, a scientific tool. Do not assume a stack. Let the codebase tell you what it is, then decide what to look for.
|
|
758
|
+
|
|
759
|
+
## Phase 1: Understand what this project is
|
|
760
|
+
|
|
761
|
+
Read just enough to know what kind of project this is. Look at whichever signals actually apply:
|
|
762
|
+
|
|
763
|
+
- Build / manifest files: \`package.json\`, \`pyproject.toml\`, \`Cargo.toml\`, \`go.mod\`, \`pubspec.yaml\`, \`Podfile\`, Xcode project, Gradle build, \`*.csproj\`, \`CMakeLists.txt\`, Unity/Unreal project files, Makefile — whatever exists.
|
|
764
|
+
- Any README, CLAUDE.md, or AGENTS.md.
|
|
765
|
+
- Top-level directory layout and obvious entry points.
|
|
766
|
+
- Any CI config, lockfile, or config directory that hints at workflow.
|
|
767
|
+
|
|
768
|
+
**Do NOT read source code yet.** You need only a coarse answer to: what kind of project is this, what platform/stack/language, what stage (greenfield vs mature), and what does the surrounding workflow look like (build, test, release, distribute, deploy — whatever applies for THIS project type).
|
|
769
|
+
|
|
770
|
+
## Phase 2: Decide which domains to investigate
|
|
771
|
+
|
|
772
|
+
Based on Phase 1, pick 4–6 domain slices that represent the **recurring work someone actually does on this project** — not abstract "areas of the codebase," but the real activities that eat time, attention, or trust. Do not use a fixed template. The right domains for a Rust CLI are different from an iOS app, a Unity game, a Django backend, a Kubernetes operator, or an ML notebook.
|
|
773
|
+
|
|
774
|
+
Illustrative only (not prescriptive):
|
|
775
|
+
|
|
776
|
+
- Web app → shipping features, API changes, handling data safely, deploys
|
|
777
|
+
- Mobile app → building screens, store releases, platform quirks, crash & accessibility triage
|
|
778
|
+
- CLI tool → adding commands, packaging & distribution, user-facing UX, error handling
|
|
779
|
+
- Game → adding content, platform ports, perf passes, build pipeline
|
|
780
|
+
- Library → designing public APIs, cutting releases, downstream compatibility, docs/examples
|
|
781
|
+
- Data / ML → running experiments, pipeline orchestration, reproducibility, serving models
|
|
782
|
+
- Embedded → adding peripherals, size/memory passes, flashing, hardware bring-up
|
|
783
|
+
|
|
784
|
+
**Announce your chosen domains to the user in one line before spawning agents**, so they can see what you're looking at (e.g. \`Domains: adding content, platform ports, perf passes, build pipeline\`).
|
|
785
|
+
|
|
786
|
+
## Phase 3: Parallel sweep
|
|
787
|
+
|
|
788
|
+
Spawn one sub-agent per domain you chose, in parallel using the subagent tool (call it N times in a single response, one task per domain). Each explores its assigned domain and returns skill-worthy opportunities.
|
|
789
|
+
|
|
790
|
+
**Skill-worthy means**: a recurring activity someone will do on THIS project — shipping, reviewing, migrating, debugging, onboarding, whatever applies — where a reusable instruction set would make it **faster** (efficient), **lower-effort** (easier), or **less likely to break something** (safer). The test is: will this skill save real time, reduce real cognitive load, or prevent real mistakes, repeatedly, on this project? If no, drop it. A domain returning zero candidates is a valid outcome.
|
|
791
|
+
|
|
792
|
+
Each sub-agent must return candidates in this exact shape, nothing else:
|
|
793
|
+
|
|
794
|
+
\`\`\`
|
|
795
|
+
[domain] — candidate title
|
|
796
|
+
Why: one sentence on the real friction observed in THIS project
|
|
797
|
+
Search terms: 2–3 keywords the parent should feed to find-skills
|
|
798
|
+
\`\`\`
|
|
799
|
+
|
|
800
|
+
Don't invent. Don't pad.
|
|
801
|
+
|
|
802
|
+
## Phase 4: Ecosystem search
|
|
803
|
+
|
|
804
|
+
After all sub-agents complete, use the **skill** tool to invoke the \`find-skills\` skill. Feed it the aggregated candidate list with search terms. Let find-skills drive discovery across skills.sh, vercel-labs/agent-skills, and anthropics/skills.
|
|
805
|
+
|
|
806
|
+
For each candidate, record the best 0–1 ecosystem match: skill name, source repo URL. If no fit exists, record "no match". **Do NOT install anything yet.**
|
|
807
|
+
|
|
808
|
+
## Phase 5: Prioritized recommendation
|
|
809
|
+
|
|
810
|
+
Rank every candidate that returned a real match by **crucial factor** — a 0–100% score combining:
|
|
811
|
+
|
|
812
|
+
- **Frequency** — how often someone will do this work on this project
|
|
813
|
+
- **Lift** — how much the skill makes it faster (efficient), lower-effort (easier), or safer (fewer mistakes, broken builds, bad releases) per hit
|
|
814
|
+
- **Fit** — how well the ecosystem match actually matches this project
|
|
815
|
+
|
|
816
|
+
Present highest first, in this exact format:
|
|
817
|
+
|
|
818
|
+
\`\`\`
|
|
819
|
+
# Skills Audit
|
|
820
|
+
|
|
821
|
+
1. <skill-name> — 92%
|
|
822
|
+
Benefit: <one sentence on what it does for this project>
|
|
823
|
+
Source: <repo URL>
|
|
824
|
+
Scope: project
|
|
825
|
+
|
|
826
|
+
2. <skill-name> — 78%
|
|
827
|
+
Benefit: …
|
|
828
|
+
Source: …
|
|
829
|
+
Scope: project
|
|
830
|
+
\`\`\`
|
|
831
|
+
|
|
832
|
+
Cap the list at 8. If you'd list more, you're padding. Default scope is \`project\` per find-skills' rules; only mark \`global\` when the skill is genuinely cross-cutting.
|
|
833
|
+
|
|
834
|
+
If strong candidates had no ecosystem match, list them at the bottom:
|
|
835
|
+
|
|
836
|
+
\`\`\`
|
|
837
|
+
## Gaps worth authoring
|
|
838
|
+
|
|
839
|
+
- <candidate title> — <why it matters for this project> — consider scaffolding a custom SKILL.md
|
|
840
|
+
\`\`\`
|
|
841
|
+
|
|
842
|
+
## Phase 6: Wait for the user
|
|
843
|
+
|
|
844
|
+
After presenting the list, ask which (if any) to install. Install nothing without explicit confirmation. Once confirmed, hand off to find-skills to perform the actual install.`,
|
|
845
|
+
},
|
|
625
846
|
];
|
|
626
847
|
/** Look up a prompt command by name or alias */
|
|
627
848
|
export function getPromptCommand(name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-commands.js","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,2CAA2C;QACxD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFAuC2E;KACpF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,6CAA6C;QAC1D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8FAiDkF;KAC3F;IACD;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,yCAAyC;QACtD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDA6DwC;KACjD;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,+CAA+C;QAC5D,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"prompt-commands.js","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAenB;
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAenB;AA6CD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAwBjE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAY7D"}
|
package/dist/core/skills.js
CHANGED
|
@@ -18,27 +18,42 @@ export async function discoverSkills(options) {
|
|
|
18
18
|
}
|
|
19
19
|
async function loadSkillsFromDir(dir, source) {
|
|
20
20
|
const skills = [];
|
|
21
|
-
let
|
|
21
|
+
let dirents;
|
|
22
22
|
try {
|
|
23
|
-
|
|
23
|
+
dirents = await fs.readdir(dir, { withFileTypes: true });
|
|
24
24
|
}
|
|
25
25
|
catch {
|
|
26
26
|
return skills;
|
|
27
27
|
}
|
|
28
|
-
for (const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
28
|
+
for (const entry of dirents) {
|
|
29
|
+
const entryPath = path.join(dir, entry.name);
|
|
30
|
+
// Flat layout: ~/.ezcoder/skills/foo.md
|
|
31
|
+
if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
32
|
+
try {
|
|
33
|
+
const content = await fs.readFile(entryPath, "utf-8");
|
|
34
|
+
const skill = parseSkillFile(content, source);
|
|
35
|
+
if (!skill.name)
|
|
36
|
+
skill.name = path.basename(entry.name, ".md");
|
|
37
|
+
skills.push(skill);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Skip unreadable files
|
|
37
41
|
}
|
|
38
|
-
|
|
42
|
+
continue;
|
|
39
43
|
}
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
// Directory layout (skills.sh ecosystem): ~/.ezcoder/skills/foo/SKILL.md
|
|
45
|
+
if (entry.isDirectory()) {
|
|
46
|
+
const skillFile = path.join(entryPath, "SKILL.md");
|
|
47
|
+
try {
|
|
48
|
+
const content = await fs.readFile(skillFile, "utf-8");
|
|
49
|
+
const skill = parseSkillFile(content, source);
|
|
50
|
+
if (!skill.name)
|
|
51
|
+
skill.name = entry.name;
|
|
52
|
+
skills.push(skill);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// No SKILL.md — skip
|
|
56
|
+
}
|
|
42
57
|
}
|
|
43
58
|
}
|
|
44
59
|
return skills;
|
package/dist/core/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAS7B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAGpC;IACC,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,wCAAwC;IACxC,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAChF,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAE7B,6CAA6C;IAC7C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,MAAc;IAC1D,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,IAAI,
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,7 +67,7 @@ export async function runAgentHomeMode(options) {
|
|
|
67
67
|
token: options.agentHome.token,
|
|
68
68
|
agent: {
|
|
69
69
|
id: "ezcoder",
|
|
70
|
-
name: "
|
|
70
|
+
name: "EZ Coder",
|
|
71
71
|
description: `AI coding agent — ${options.model}`,
|
|
72
72
|
},
|
|
73
73
|
});
|
|
@@ -152,7 +152,7 @@ export async function runAgentHomeMode(options) {
|
|
|
152
152
|
const currentModel = state?.session.getState().model ?? options.model;
|
|
153
153
|
const modelInfo = MODELS.find((m) => m.id === currentModel);
|
|
154
154
|
let text = "";
|
|
155
|
-
text += `**
|
|
155
|
+
text += `**EZ Coder**\n`;
|
|
156
156
|
text += `Project: **${path.basename(currentCwd)}** \u00b7 Model: **${modelInfo?.name ?? currentModel}**\n\n`;
|
|
157
157
|
text += `**Commands**\n`;
|
|
158
158
|
text += `\`/m\` \u2014 Switch model\n`;
|
|
@@ -382,7 +382,7 @@ export async function runAgentHomeMode(options) {
|
|
|
382
382
|
// ── Forward to agent loop ────────────────────────────
|
|
383
383
|
const state = await getOrCreateSession(targetSessionId);
|
|
384
384
|
if (state.isProcessing) {
|
|
385
|
-
stream.error("
|
|
385
|
+
stream.error("EZ Coder is still processing a previous message. Please wait.");
|
|
386
386
|
return;
|
|
387
387
|
}
|
|
388
388
|
state.isProcessing = true;
|
|
@@ -500,17 +500,17 @@ export async function runAgentHomeMode(options) {
|
|
|
500
500
|
const GAP = " ";
|
|
501
501
|
console.log();
|
|
502
502
|
console.log(` ${gradientText(LOGO[0])}${GAP}` +
|
|
503
|
-
chalk.hex("#60a5fa").bold("
|
|
503
|
+
chalk.hex("#60a5fa").bold("EZ Coder") +
|
|
504
504
|
chalk.hex("#6b7280")(` v${options.version}`) +
|
|
505
505
|
chalk.hex("#6b7280")(" \u00b7 By ") +
|
|
506
|
-
chalk.white.bold("
|
|
506
|
+
chalk.white.bold("Nolan Grout"));
|
|
507
507
|
console.log(` ${gradientText(LOGO[1])}${GAP}` + chalk.hex("#a78bfa")(modelName));
|
|
508
508
|
console.log(` ${gradientText(LOGO[2])}${GAP}` + chalk.hex("#6b7280")(displayPath));
|
|
509
509
|
console.log();
|
|
510
510
|
console.log(chalk.hex("#6b7280")(" Mode ") +
|
|
511
511
|
chalk.hex("#a78bfa")("Agent Home") +
|
|
512
512
|
chalk.hex("#6b7280")(" \u00b7 Agent ") +
|
|
513
|
-
chalk.white("
|
|
513
|
+
chalk.white("EZ Coder"));
|
|
514
514
|
console.log();
|
|
515
515
|
console.log(chalk.hex("#6b7280")(" Connecting to relay..."));
|
|
516
516
|
console.log();
|