@iamu-dev/iamu 0.2.0-beta.13 → 0.2.0-beta.15

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.
@@ -126,27 +126,26 @@ If the finding references a run directory, mention the report path for context.
126
126
  Every finding must land on a decision — never silently skip. Match the user's intent to the closest option.
127
127
 
128
128
  **Interactive Triage Selection:**
129
- *Contextual Recommendation Rule:*
130
- - If finding is clear, localized, and has a straightforward fix → mark Option 1 as `[Recommended]`.
131
- - If finding requires architectural touch or redesign → mark Option 2 as `[Recommended]`.
132
- - If finding is a known trade-off or walker error → mark Option 4 as `[Recommended]`.
129
+ - In list-mode iteration ("walk through them", "all critical", scenario group), the primary action is to decide the queue. Do NOT stop triage to edit code unless the user explicitly chooses "Fix immediately".
133
130
 
134
131
  - If your environment provides an interactive user-prompt tool (e.g. `ask_question`, `ask_followup_question`), invoke it:
135
- - Question: "Triage Finding: '<finding title>'?"
132
+ - Question: "Triage Finding #<N>/<total>: '<finding title>'?"
136
133
  - Options:
137
- 1. "<[Recommended] if localized> Fix now (apply inline code fix & verify)"
138
- 2. "<[Recommended] if structural> Design change needed (open issue / design doc)"
139
- 3. "Defer (revisit in later milestone)"
140
- 4. "Dismiss / Won't fix (record reason & walker guidance rule)"
134
+ 1. "[Recommended] Queue to fix (mark for fix & continue triage)"
135
+ 2. "Dismiss / Won't fix (record reason & walker guidance rule)"
136
+ 3. "Design change needed (open issue / design doc)"
137
+ 4. "Defer (revisit in later milestone)"
138
+ 5. "Fix immediately (leave triage now)"
141
139
  - Otherwise (in CLI or text-only environments):
142
140
 
143
- Triage Finding: '<finding title>'
144
- 1. Fix now (apply inline code fix & verify)
145
- 2. Design change needed (open issue / design doc)
146
- 3. Defer (revisit in later milestone)
147
- 4. Dismiss / Won't fix (record reason & walker guidance rule)
141
+ Triage Finding #<N>/<total>: '<finding title>'
142
+ 1. [Recommended] Queue to fix (mark for fix & continue triage)
143
+ 2. Dismiss / Won't fix (record reason & walker guidance rule)
144
+ 3. Design change needed (open issue / design doc)
145
+ 4. Defer (revisit in later milestone)
146
+ 5. Fix immediately (leave triage now)
148
147
 
149
- Press Enter to accept recommendation [1], enter 2-4, or type custom triage note:
148
+ Press Enter to queue fix [1], enter 2-5, or type custom triage note:
150
149
  (Treat empty Enter as Option 1)
151
150
 
152
151
  Record the decision with `iamu triage` — it sets `triage_status` and `triage_note` in `iamu/findings/<slug>.md`, and for a dismissal it also teaches the next walk:
@@ -162,7 +161,9 @@ triage_status: addressed
162
161
  triage_note: "Made handoff notes optional on /sv/handoff; verified on screen."
163
162
  ```
164
163
 
165
- - **Fix now** → the change is small, one-or-two files, no architectural decision needed (label, field made optional, filter added, typo). Make the edit, verify it loads (if a dev server is running, open the affected screen and check), then record: `iamu triage <slug> --status addressed --note "<one-line change summary>"`. Do not close a finding as addressed before the change lands and is inspected. Tell the user the fix now awaits a re-run: only a later walkthrough of the scenario turns it verified.
164
+ - **Queue to fix [Recommended in list-mode]** → add to the session's fix queue. Tell the user in 1 line: "✓ Queued for fix. Advancing to next finding..." and loop to the next finding. Complete the triage queue across all findings first.
165
+
166
+ - **Fix immediately (leave triage now)** → the change is small, one-or-two files, and user explicitly chose to leave triage now. Make the edit, verify it loads (if a dev server is running, open the affected screen and check), then record: `iamu triage <slug> --status addressed --note "<one-line change summary>"`. Do not close a finding as addressed before the change lands and is inspected. Tell the user the fix now awaits a re-run: only a later walkthrough of the scenario turns it verified.
166
167
 
167
168
  - **Design change needed** → the change requires design thinking (restructuring a flow, new capability, API contract touch, multiple files). Do NOT fix inline. Use the project's own change process if it has one — check the agent docs and the repo for it (an `openspec/` directory and its change skills, an ADR or RFC folder, an issue tracker the docs name) and start the change there with the finding's persona + scenario context pre-filled. Only if the project has none, draft a short design doc. Then leave the finding `open` until the change ships. Attach the change reference in `triage_note`: `"Design change: <reference>. Re-triage when the change ships."`.
168
169
 
@@ -198,20 +199,35 @@ dismissed (not_relevant): <finding-slug>
198
199
 
199
200
  ### 5. Continue or close
200
201
 
201
- If the user is in list-mode iteration (picked "all critical" or a scenario group), loop to step 3 for the next finding in the queue. Otherwise close.
202
+ If the user is in list-mode iteration (picked "walk through them", "all critical", or a scenario group), loop to step 3 for the next finding in the queue.
202
203
 
203
- Summary at the end (list-mode only):
204
+ When all findings in the queue are triaged, present the summary:
204
205
 
205
- ```
206
+ ```text
206
207
  Triage complete.
207
- Fixed: <N>
208
+ Queued for fix: <N>
208
209
  Dismissed: <N>
209
210
  Rescoped (design change / defer): <N>
210
211
  Kept open: <N>
211
-
212
- <X> findings remain open. Use iamu-findings to resume later.
213
212
  ```
214
213
 
214
+ If `<N> > 0` findings were queued for fix:
215
+ - Prompt the user:
216
+ - If interactive tool available:
217
+ - Question: "Triage complete. Apply fixes for the <N> queued findings now?"
218
+ - Options:
219
+ 1. "[Recommended] Apply queued fixes in workspace now"
220
+ 2. "Done for now (keep fixes open in iamu/findings/)"
221
+ - Otherwise (CLI / text-only):
222
+ Apply fixes for the <N> queued findings now?
223
+ 1. [Recommended] Apply queued fixes in workspace now
224
+ 2. Done for now (keep fixes open in iamu/findings/)
225
+ Press Enter to apply fixes [1], select 2:
226
+
227
+ - **Executing the queued fixes:**
228
+ When Option 1 is chosen, apply code edits for each queued finding sequentially in the workspace. Verify the changes once (run test/typecheck suite). Update each finding with `iamu triage <slug> --status addressed --note "<summary of fix>"`.
229
+ Tell the user: "✓ Applied fixes for <N> findings. All marked addressed."
230
+
215
231
  Run `iamu validate --all` to verify all entities before reporting done.
216
232
 
217
233
  ### 6. Publish and link (linked mode only)
@@ -105,10 +105,10 @@ Press Enter to scaffold [1], select 2-3, or type adjustments:
105
105
 
106
106
  In Fast-Path mode or when customizing, present the complete scenario as a structured, scannable Spec-Sheet before creating anything. Every field shown here is written verbatim to disk on confirmation:
107
107
 
108
- Do NOT use markdown blockquote syntax (`>`), which renders as stray `|` pipe characters in terminal frontends. Keep the narrative capped at 2–3 punchy sentences (problem-space only, zero UI terms).
108
+ Do NOT output markdown header hashes (`#`, `##`, `###`) or markdown blockquote syntax (`>`), which render as stray hashes or `|` pipe characters in terminal frontends. Keep the narrative capped at 2–3 punchy sentences (problem-space only, zero UI terms).
109
109
 
110
110
  ```
111
- ### Scenario Spec-Sheet: <Outline Title>
111
+ Scenario Spec-Sheet: <Outline Title>
112
112
 
113
113
  Situation & Stakes:
114
114
  Narrative: <2–3 sentences problem-space only, zero UI terms>
@@ -25,9 +25,7 @@ Every persona candidate must have **diagnostic friction**:
25
25
 
26
26
  ## Prerequisites
27
27
 
28
- Before starting, check that `iamu/context.yml` exists and has content. If it is missing or empty, stop:
29
-
30
- > No project context found. Run `iamu-setup` first — proposals need domain grounding to avoid shallow thinking.
28
+ Before starting, check that `iamu/context.yml` exists and has content. If it is missing or empty, stop and inform the user: "No project context found. Run `iamu-setup` first — proposals need domain grounding to avoid shallow thinking."
31
29
 
32
30
  If context is thin (few actors, sparse notes), say so upfront — "your context has few actors and sparse notes; proposals will be shallow. Consider enriching context first."
33
31
 
@@ -41,8 +41,7 @@ Tell the user in one line which one you picked and why. If the project's own age
41
41
  A native app has no URL, and a browser tool is not a substitute for one. If the product is native, the target is a device plus a build (step 3).
42
42
 
43
43
  If no surface is available, stop and tell the user:
44
-
45
- > A walkthrough needs a driving surface. For a web product, `iamu browse` works wherever Chrome or Chromium is installed (or set `IAMU_BROWSER`); a browser-driving MCP that attaches to Chrome also works — restart your agent session after installing one and re-run `iamu-run`. For a native iOS app, a simulator control tool must be available in this session.
44
+ "A walkthrough needs a driving surface. For a web product, `iamu browse` works wherever Chrome or Chromium is installed (or set `IAMU_BROWSER`); a browser-driving MCP that attaches to Chrome also works — restart your agent session after installing one and re-run `iamu-run`. For a native iOS app, a simulator control tool must be available in this session."
46
45
 
47
46
  Do NOT proceed to step 1 before a driving surface is confirmed.
48
47
 
@@ -204,7 +203,7 @@ Pass `--build <label>` to name the build (a version or release tag) and `--env <
204
203
  Use the returned `run_id` and `path` for all subsequent operations.
205
204
 
206
205
  **If `live_viewer_url` is returned**, immediately output it to the user so the operator can follow along live in their browser:
207
- > 🔴 **Live stream:** `<live_viewer_url>`
206
+ 🔴 **Live stream:** `<live_viewer_url>`
208
207
 
209
208
  **Size the browser for this persona** (`iamu browse` only), every run — also when a browser is already open from an earlier run:
210
209
 
@@ -225,7 +224,7 @@ iamu instructions walk --scenario <scenario-slug> --run <run-id> --surface brows
225
224
  The result's `walker_prompt` is the walker's entire prompt. Pass it verbatim — do not rewrite, summarize or trim it. The prompt already carries the dismissed findings, the active tester guidance rules (`iamu/guidance/`) for this scenario, and — when fixes await a re-run — the places they were seen (places only, never what was wrong; the list is in `revisit`). The rest of the bundle (`persona`, `outline`, `access`, `dismissed_findings`, `tester_guidance`, …) is there for you, not the walker. If `access` is missing a half, fill it in first (step 3) and re-run this command.
226
225
 
227
226
  **Preflight: Unattended execution check.** A walkthrough executes 15–30 terminal commands sequentially (`iamu browse step`, `iamu new-finding`). If your agent host requires manual confirmation for terminal/shell commands (standard interactive mode in Claude Code, Cursor, Antigravity, Cline, Windsurf, etc.), the walker subagent will stall waiting for approval on every step. Before dispatching, verify that command auto-approval / unattended execution is enabled in your environment, or warn the user once:
228
- > "Autonomous walkthroughs require auto-approving terminal commands so the walker can drive the product unattended. If command approvals are prompted, please enable auto-approval or expect to approve steps manually."
227
+ "Autonomous walkthroughs require auto-approving terminal commands so the walker can drive the product unattended. If command approvals are prompted, please enable auto-approval or expect to approve steps manually."
229
228
 
230
229
  **CRITICAL: Dispatch the walker as an isolated subagent.** Spawn a fresh subagent using your host editor's subagent mechanism (e.g. `Agent(...)` in Claude Code, `invoke_subagent` in Antigravity, or host-native subagent launcher). The subagent gets ONLY the walking prompt (`walker_prompt`) — no prior conversation history.
231
230
 
@@ -444,25 +443,28 @@ When the user asks to review findings one by one:
444
443
  ```
445
444
  Followed immediately by the decision prompt:
446
445
  - If interactive tool available:
447
- - Question: "Triage Finding #<N>: '<finding title>'?"
446
+ - Question: "Triage Finding #<N>/<total>: '<finding title>'?"
448
447
  - Options:
449
- 1. "[Recommended] Fix now (apply inline code fix & verify)"
448
+ 1. "[Recommended] Queue to fix (mark for fix & continue triage)"
450
449
  2. "Dismiss / Skip (not relevant or walker error)"
451
450
  3. "Discuss / Explore trade-offs"
452
- 4. "Next finding (keep open)"
451
+ 4. "Fix immediately (leave triage now)"
452
+ 5. "Next finding (keep open / defer)"
453
453
  - Otherwise (CLI / text-only):
454
- Triage Finding #<N>: '<finding title>'
455
- 1. [Recommended] Fix now (apply inline code fix & verify)
454
+ Triage Finding #<N>/<total>: '<finding title>'
455
+ 1. [Recommended] Queue to fix (mark for fix & continue triage)
456
456
  2. Dismiss / Skip (not relevant or walker error)
457
457
  3. Discuss / Explore trade-offs
458
- 4. Next finding (keep open)
459
- Press Enter to fix [1], select 2-4, or describe decision:
458
+ 4. Fix immediately (leave triage now)
459
+ 5. Next finding (keep open / defer)
460
+ Press Enter to queue fix [1], select 2-5, or describe decision:
460
461
  (Treat empty Enter as Option 1)
461
462
 
462
463
  2. **Handle the user's decision**:
463
- - **Fix now**:
464
- Make the code edit, verify it loads (or check local tests/types), update the finding with `iamu triage <slug> --status addressed --note "<summary of fix>"`.
465
- Tell the user in 1 line: "✓ Applied fix to `<file>:<line>`. Finding #<N> marked addressed." and ask: "Ready for finding #<N+1>?".
464
+ - **Queue to fix [Recommended]**:
465
+ Add finding to the session's fix queue.
466
+ Tell the user in 1 line: "✓ Queued for fix. Ready for finding #<N+1>?" and advance immediately.
467
+ Do NOT edit code or leave triage yet — complete triage across all findings first.
466
468
  - **Skip / Dismiss**:
467
469
  If reason is not specified, ask or infer the appropriate category:
468
470
  - `out_of_scope`: Not relevant to this project/flow scope.
@@ -477,11 +479,38 @@ When the user asks to review findings one by one:
477
479
  • **Root Cause:** 1 sentence on why the code does this (`file:line`).
478
480
  • **Persona Friction:** 1 sentence on the practical operational consequence.
479
481
  • **Recommended Fix & Trade-off:** 1-2 sentences with concrete code approach and any trade-off.
480
- Immediately re-prompt the triage decision.
481
- - **Next**:
482
+ Immediately re-prompt the triage decision for finding #<N>.
483
+ - **Fix immediately (leave triage now)**:
484
+ If the user explicitly chooses to drop out of triage and fix right now:
485
+ Make the code edit, verify it loads (or check local tests/types), update the finding with `iamu triage <slug> --status addressed --note "<summary of fix>"`.
486
+ Tell the user in 1 line: "✓ Applied fix to `<file>:<line>`. Finding #<N> marked addressed."
487
+ - **Next finding (keep open / defer)**:
482
488
  Leave open (or set `triage_status: deferred` with note) and advance to finding #<N+1>.
483
489
 
484
490
  3. **Wrap up after all findings are reviewed**:
491
+ Report the triage recap in 1-2 lines:
492
+ ```text
493
+ Triage Complete: <K> queued for fix, <D> dismissed, <O> kept open/deferred.
494
+ ```
495
+ If `<K> > 0` (findings are queued for fix):
496
+ - Prompt the user to execute the batch:
497
+ - If interactive tool available:
498
+ - Question: "Triage complete. Apply fixes for the <K> queued findings now?"
499
+ - Options:
500
+ 1. "[Recommended] Apply fixes for queued findings in workspace now"
501
+ 2. "Re-run walkthrough to verify dismissed items first"
502
+ 3. "Done for now (keep fixes open in iamu/findings/)"
503
+ - Otherwise (CLI / text-only):
504
+ Apply fixes for the <K> queued findings now?
505
+ 1. [Recommended] Apply fixes for queued findings in workspace now
506
+ 2. Re-run walkthrough to verify dismissed items first
507
+ 3. Done for now (keep fixes open in iamu/findings/)
508
+ Press Enter to apply fixes [1], select 2-3:
509
+
510
+ - **Executing the queued fixes:**
511
+ When Option 1 is chosen, apply code edits for each queued finding sequentially in the workspace. Verify the changes once (run test/typecheck suite). Update each finding with `iamu triage <slug> --status addressed --note "<summary of fix>"`.
512
+ Tell the user: "✓ Applied fixes for <K> findings. All marked addressed."
513
+
485
514
  - Run `iamu validate --all`.
486
515
  - In linked mode, run `iamu sync --json` once so teammates see the triage decisions.
487
516
  - Suggest re-running the walkthrough: `iamu-run <scenario-slug>` to verify fixes.
@@ -68,18 +68,18 @@ Explore the codebase automatically — do NOT ask the user what files to read. E
68
68
  - Identify local mock fixtures (`msw`, seed SQL scripts, mock services).
69
69
 
70
70
  **If there is no code (greenfield, design phase, or test sandbox):** do NOT interrogate the user with a multi-part survey or ask for dev auth plumbing. Ask for a single entry point:
71
- > No local codebase detected. To seed context, provide one of:
72
- > - A target URL (staging, production, or docs — e.g., `https://app.example.com`)
73
- > - A one-sentence description of what this product does
74
- > - Or type `"sandbox"` to seed a pre-configured B2B SaaS demo
71
+ No local codebase detected. To seed context, provide one of:
72
+ • A target URL (staging, production, or docs — e.g., `https://app.example.com`)
73
+ • A one-sentence description of what this product does
74
+ • Or type `"sandbox"` to seed a pre-configured B2B SaaS demo
75
75
 
76
76
  ---
77
77
 
78
78
  ### 3. Step 1/3: Establish the Safety Fence (`iamu/testability.md`)
79
79
 
80
- Present the detected environment and safety fence. Explain clearly *why* this boundary is required before any autonomous agent runs:
80
+ Present the detected environment and safety fence. Explain clearly *why* this boundary is required before any autonomous agent runs. Do NOT wrap in markdown code fences (` ``` `) when presenting to the user:
81
81
 
82
- ```markdown
82
+ ```text
83
83
  Step 1/3: Safety Fence & Environment Boundary
84
84
  Why this matters: Iamu drives a real headless browser with full agency. This boundary guarantees the agent stays confined to your local environment and never touches external services or triggers real-world side effects.
85
85
 
@@ -145,9 +145,9 @@ harnesses:
145
145
 
146
146
  Explain the purpose of domain grounding: traditional tests only assert button clicks; Iamu evaluates user confusion, workflow friction, and whether a real person can succeed under operational pressure.
147
147
 
148
- Present the discovered domain reality and candidate roles:
148
+ Present the discovered domain reality and candidate roles. Do NOT wrap in markdown code fences (` ``` `) when presenting to the user:
149
149
 
150
- ```markdown
150
+ ```text
151
151
  Step 2/3: Product Domain & Candidate Roles
152
152
  Why this matters: Grounds the AI evaluator in your domain's real operational stakes, vocabulary, and regulations so it can spot human confusion rather than just syntax errors.
153
153
 
@@ -200,7 +200,7 @@ actors:
200
200
  ```
201
201
 
202
202
  *If user chooses Option 2 (Save context only):* write `context.yml` and exit cleanly:
203
- > ✓ Project context initialized. When you're ready to create your first test journey, run `/iamu:new`.
203
+ "✓ Project context initialized. When you're ready to create your first test journey, run `/iamu:new`."
204
204
 
205
205
  ---
206
206
 
@@ -208,9 +208,9 @@ actors:
208
208
 
209
209
  Explain the journey model: an Iamu test binds a **Persona** (with habits, pressures, and impatience) to a **Situation** (a realistic high-stakes problem) with an **Evaluation Checkpoint** (a concrete binary question for the AI judge).
210
210
 
211
- Present the proposed test journey, including explicit **Auth Precondition Verification**:
211
+ Present the proposed test journey, including explicit **Auth Precondition Verification**. Do NOT wrap in markdown code fences (` ``` `) when presenting to the user:
212
212
 
213
- ```markdown
213
+ ```text
214
214
  Step 3/3: Co-Design Your First Test Journey
215
215
  Why this matters: Validates whether a real human with specific operational pressures can complete a critical task without getting blocked or frustrated.
216
216
 
@@ -23,26 +23,22 @@ Do NOT use `find`, `grep`, or `cat` to dump raw `.md` files in `iamu/`. The CLI
23
23
 
24
24
  ### 2. Format entity responses with an executive tally and clickable links
25
25
 
26
- When the user asks for project status, lead with an executive tally banner, followed by scannable tables with clickable markdown file links:
26
+ When the user asks for project status, lead with an executive tally banner, followed by compact 1-line bullet points with clickable markdown file links.
27
+
28
+ **ANTI-BLOAT DIRECTIVE:** Do NOT output multi-column markdown tables (they wrap awkwardly and break borders in terminal viewports). Keep each entity to a single scannable line:
27
29
 
28
30
  ```
29
31
  Project Status: <P> Personas · <S> Scenarios (<R> Tested, <U> Untested) · <F> Open Findings · <C> Capabilities
30
32
  ```
31
33
 
32
34
  **Personas:**
33
- | Slug | Name | Role | Status |
34
- |---|---|---|---|
35
- | [`elin-dahl`](iamu/personas/elin-dahl.md) | Elin Dahl | Architect & first-time house owner in Falun | active |
35
+ • [`elin-dahl`](iamu/personas/elin-dahl.md) — Elin Dahl · Architect & first-time house owner in Falun · active
36
36
 
37
37
  **Scenarios:**
38
- | Slug | Persona | Outline | Status / Target |
39
- |---|---|---|---|
40
- | [`replacing-windows`](iamu/scenarios/replacing-windows.md) | [`elin-dahl`](iamu/personas/elin-dahl.md) | [`measure-and-order`](iamu/outlines/measure-and-order.md) | ready |
38
+ • [`replacing-windows`](iamu/scenarios/replacing-windows.md) — [`elin-dahl`](iamu/personas/elin-dahl.md) · outline: [`measure-and-order`](iamu/outlines/measure-and-order.md) · ready
41
39
 
42
40
  **Findings:**
43
- | # | Severity | Type | Finding | File |
44
- |---|---|---|---|---|
45
- | 1 | CRITICAL | hinders | Submit fails opaquely on empty field | [`view`](iamu/findings/<slug>.md) |
41
+ • `1` [CRITICAL · hinders] Submit fails opaquely on empty field — [`view`](iamu/findings/<slug>.md)
46
42
 
47
43
  ### 3. Ignore internal templates
48
44
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iamu-dev/iamu",
3
- "version": "0.2.0-beta.13",
3
+ "version": "0.2.0-beta.15",
4
4
  "type": "module",
5
5
  "description": "Test your product as realistic personas — scenario-driven development CLI",
6
6
  "license": "UNLICENSED",
@@ -43,6 +43,16 @@
43
43
  "engines": {
44
44
  "node": ">=22"
45
45
  },
46
+ "scripts": {
47
+ "build": "tsup && tsc -b --force tsconfig.build.json --emitDeclarationOnly && node scripts/copy-assets.mjs",
48
+ "clean": "node -e \"fs.rmSync('dist', { recursive: true, force: true }); fs.rmSync('tsconfig.tsbuildinfo', { force: true }); fs.rmSync('tsconfig.build.tsbuildinfo', { force: true })\"",
49
+ "typecheck": "tsc --noEmit",
50
+ "test": "vitest run",
51
+ "test:coverage": "vitest run --coverage",
52
+ "eval:walkthroughs": "vitest run --config vitest.benchmark.config.ts",
53
+ "eval:gemini": "node dist/eval/gemini-eval-cli.js",
54
+ "pack:dry-run": "npm pack --dry-run"
55
+ },
46
56
  "dependencies": {
47
57
  "@clack/prompts": "^1.8.1",
48
58
  "@modelcontextprotocol/sdk": "^1.26.0",
@@ -52,24 +62,14 @@
52
62
  "zod": "^3.25.0"
53
63
  },
54
64
  "devDependencies": {
65
+ "@iamu-dev/local-store": "workspace:*",
66
+ "@iamu-dev/protocol": "workspace:*",
67
+ "@iamu/tsconfig": "workspace:*",
55
68
  "@types/node": "^22.0.0",
56
69
  "@vitest/coverage-v8": "^4.1.11",
57
70
  "google-auth-library": "^11.1.0",
58
71
  "tsup": "^8.5.1",
59
72
  "typescript": "^5.8.0",
60
- "vitest": "^4.1.11",
61
- "@iamu-dev/local-store": "0.1.0",
62
- "@iamu/tsconfig": "0.1.0",
63
- "@iamu-dev/protocol": "0.1.0"
64
- },
65
- "scripts": {
66
- "build": "tsup && tsc -b --force tsconfig.build.json --emitDeclarationOnly && node scripts/copy-assets.mjs",
67
- "clean": "node -e \"fs.rmSync('dist', { recursive: true, force: true }); fs.rmSync('tsconfig.tsbuildinfo', { force: true }); fs.rmSync('tsconfig.build.tsbuildinfo', { force: true })\"",
68
- "typecheck": "tsc --noEmit",
69
- "test": "vitest run",
70
- "test:coverage": "vitest run --coverage",
71
- "eval:walkthroughs": "vitest run --config vitest.benchmark.config.ts",
72
- "eval:gemini": "node dist/eval/gemini-eval-cli.js",
73
- "pack:dry-run": "npm pack --dry-run"
73
+ "vitest": "^4.1.11"
74
74
  }
75
- }
75
+ }