@nurix/etna 0.15.3 → 0.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
1
  {
2
+ "fingerprint": "be67d356d0f6",
2
3
  "plugins": {
3
4
  "code": "code",
4
5
  "kb-agi": "kb-agi",
@@ -20,7 +20,7 @@ This is the only step that runs **before** the harness exists; everything below
20
20
 
21
21
  ## Getting Started
22
22
 
23
- - Read **[`docs/README.md`](docs/README.md)** for documentation root (architecture, features, operations)
23
+ - Read **[`docs/structure.md`](docs/structure.md)** for the documentation map and folder authority (architecture, features, operations)
24
24
  - Read **[`docs/memory/`](docs/memory/)** for agent memory files (one per agent)
25
25
  - Ignore **[`README.md`](README.md)** – it's for human reference only
26
26
  - Check **[`package.json`](package.json)** for available scripts. Detect the package manager from the lockfile (`pnpm-lock.yaml` → pnpm, `yarn.lock` → yarn, `package-lock.json` → npm) and use the matching command. Don't hardcode a specific manager.
@@ -134,9 +134,9 @@ Unless explicitly requested:
134
134
 
135
135
  ## Documentation
136
136
 
137
- `docs/structure.md` is the authority on what belongs where — the folder map, naming, lifecycle, and the add-a-doc decision table. Read it before adding or moving a doc; don't restate it here. Start from `docs/README.md`. One canonical source per topic — link, don't copy. Only `CLAUDE.md`, `AGENTS.md`, and `README.md` live at the repo root.
137
+ `docs/structure.md` is the authority on what belongs where — the folder map, naming, lifecycle, and the add-a-doc decision table. Read it before adding or moving a doc; don't restate it here. One canonical source per topic — link, don't copy. Only `CLAUDE.md`, `AGENTS.md`, and `README.md` live at the repo root.
138
138
 
139
139
  Maintenance triggers (act on these without re-reading `structure.md`):
140
140
 
141
141
  - After plan completion: add a `docs/history/changelog/` entry + update `docs/history/CHANGELOG.md` (no confirmation; include `Commits:` if multi-commit). Non-plan changes (refactors, fixes, API changes): prompt first.
142
- - When you add, move, or delete a doc: update `docs/routing.md` and `docs/README.md` to match. When you move or rename source files: fix the `owns`/`touches` frontmatter in the owning doc; new docs that own code need `owns`/`touches`/`depends_on`.
142
+ - When you add, move, or delete a doc: update `docs/routing.md` to match. When you move or rename source files: fix the `owns`/`touches` frontmatter in the owning doc; new docs that own code need `owns`/`touches`/`depends_on`.
@@ -104,7 +104,7 @@ Table: `| File | Action | From | To | Reason |` (actions: `Move`, `Merge into {t
104
104
 
105
105
  Create the folder structure; move/fold/merge/delete per the plan; add `Status:` to plan files; add ownership frontmatter to feature docs (call the `documentation` skill's **frontmatter derivation** for `owns`/`touches`/`depends_on`); merge scattered backlogs into `docs/history/backlog.md`; fix links broken by moves. Scaffold missing mandated files **by calling the `documentation` skill for each template** — you orchestrate, the skill supplies templates:
106
106
 
107
- - `docs/README.md`, `docs/structure.md` (with `harness-version`), `docs/history/CHANGELOG.md`, `docs/history/backlog.md`, `docs/memory/index.md`, `docs/memory/main.md`, `docs/memory/facts/.digest-state.md` (placeholder, "no entries digested yet"), and the repo-root `README.md` (filled from the real lockfile/scripts/layout — **never overwrite an existing root README**).
107
+ - `docs/structure.md` (with `harness-version`), `docs/history/CHANGELOG.md`, `docs/history/backlog.md`, `docs/memory/index.md`, `docs/memory/main.md`, `docs/memory/facts/.digest-state.md` (placeholder, "no entries digested yet"), and the repo-root `README.md` (filled from the real lockfile/scripts/layout — **never overwrite an existing root README**).
108
108
 
109
109
  Scaffold `docs/memory/facts/` so the distilled tier has a home from day one: hooks write the raw ledger to `docs/memory/ledger/` (not a scaffold — created mechanically on first event), and the `distiller` digests it down into fact-cards under `docs/memory/facts/`. Without the facts dir + its `.digest-state.md` high-water mark, a freshly-baselined consumer accrues a ledger firehose the distiller has nowhere to land — so seed the empty distilled tier alongside the hook-written ledger tier.
110
110
 
@@ -160,7 +160,7 @@ If the user **declines** the advisory rather than running the follow-up, record
160
160
 
161
161
  ### Step 7 — Verify
162
162
 
163
- Confirm all mandated files exist; `structure.md` carries the current `harness-version`; no dead links in `docs/README.md`; every plan has a `Status:`; feature docs have ownership frontmatter; no dissolved-version artifacts remain; no docs outside the canonical structure.
163
+ Confirm all mandated files exist; `structure.md` carries the current `harness-version`; no dead links in `docs/structure.md`; every plan has a `Status:`; feature docs have ownership frontmatter; no dissolved-version artifacts remain; no docs outside the canonical structure.
164
164
 
165
165
  ---
166
166
 
@@ -17,7 +17,7 @@ You do NOT write the spec — you return structured research that the main agent
17
17
 
18
18
  First, understand the documentation landscape:
19
19
 
20
- 1. Read `./docs/README.md` to understand the documentation structure
20
+ 1. Read `./docs/structure.md` to understand the documentation structure
21
21
  2. If `./docs/features/README.md` exists, read it to see existing feature specs and where the new spec fits; otherwise glob the feature docs directly
22
22
  3. If `./docs/memory/spec-mode.md` exists, read it for feature doc inventory, ownership conflict zones, and lessons from previous research
23
23
  4. Read 1-2 existing specs in `./docs/features/` to calibrate format and depth
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code",
3
- "version": "0.15.2",
3
+ "version": "0.15.3",
4
4
  "epoch": 12,
5
- "digest": "ac5de718b94b"
5
+ "digest": "8bd2f1540f40"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kb-agi",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "epoch": null,
5
5
  "digest": "856a9f4e297a"
6
6
  }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: session
3
3
  description: Dimension dumper for the LOGGED-IN APP SESSION dimension of the Product Recon Harness — the authenticated runtime behind login. Delegates to the copied-in browser-session playbook (three-pass, P0–P6) to instrument the live product via Chrome MCP and capture its wire protocol, auth, and state model. The deepest and most sensitive dimension; opt-in, user-gated, read-only-by-default. Dispatched during Ingestion (Mode 2) only after the user has a session ready and authorizes it.
4
- tools: Read, Write, Bash, Glob, Grep
4
+ tools: Read, Write, Bash, Glob, Grep, mcp__claude-in-chrome__tabs_context_mcp, mcp__claude-in-chrome__tabs_create_mcp, mcp__claude-in-chrome__navigate, mcp__claude-in-chrome__read_network_requests, mcp__claude-in-chrome__read_console_messages, mcp__claude-in-chrome__javascript_tool, mcp__claude-in-chrome__get_page_text
5
5
  model: inherit
6
6
  ---
7
7
 
@@ -27,11 +27,13 @@ It is **interactive and gated**, unlike the other six:
27
27
  the main session with the exact proposed action + estimated cost so the *user* authorizes it
28
28
  in chat. Browser instrumentation that changes state must go through that confirmation loop.
29
29
 
30
- Because of the interactivity and confirmations, the live Chrome instrumentation is typically
31
- driven by the **main session** (which holds the browser tools and the user dialogue). Your
32
- role: apply the playbook, do read-only capture authoring, and produce the contract files. If
33
- you have Chrome MCP access in your tool set, you may run read-only Pass 1 mining yourself;
34
- otherwise coordinate the mined data into the capture files.
30
+ You now hold **read-only Chrome tools**, so you run **Pass 1 (read-only mining) directly** — verify
31
+ the §9.1 preconditions with `mcp__claude-in-chrome__tabs_context_mcp` (live tabs + stable IDs prove
32
+ the extension and CDP are connected), then mine the authenticated surface yourself with
33
+ `read_network_requests` + an in-page `javascript_tool` interceptor. **Pass 2 (any state-changing /
34
+ cost-incurring action) is NOT yours to trigger** — return to the **main session** with the proposed
35
+ action + estimated cost so the *user* authorizes it in chat (the confirmation loop above). The main
36
+ session still owns the user dialogue and any state-changing instrumentation.
35
37
 
36
38
  ## Output (the playbook's own contract — richer than the standard dump)
37
39
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: website
3
3
  description: Dimension dumper for the MARKETING WEBSITE dimension of the Product Recon Harness — homepage, product/feature pages, pricing, customers, integrations, blog index. Extracts positioning, feature claims, pricing tiers/limits, target market, and the integration list. Dispatched during Ingestion (Mode 2).
4
- tools: Read, Write, Bash, WebFetch, WebSearch
4
+ tools: Read, Write, Bash, WebFetch, WebSearch, mcp__claude-in-chrome__tabs_create_mcp, mcp__claude-in-chrome__navigate, mcp__claude-in-chrome__get_page_text
5
5
  model: inherit
6
6
  skills:
7
7
  - fetch
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: wire-capture
3
3
  description: Dimension dumper for the GATED WIRE-CAPTURE dimension of the Product Recon Harness. Climbs the 3-rung lowest-privilege-first ladder (browser tap → HAR → user-run mitmproxy) to record what a non-browser/no-source client *actually* calls, redacting every body before disk. Dispatched during Ingestion (Mode 2) — not invoked directly by users.
4
- tools: Read, Write, Bash
4
+ tools: Read, Write, Bash, mcp__claude-in-chrome__tabs_context_mcp, mcp__claude-in-chrome__tabs_create_mcp, mcp__claude-in-chrome__navigate, mcp__claude-in-chrome__read_network_requests, mcp__claude-in-chrome__read_console_messages, mcp__claude-in-chrome__javascript_tool, mcp__claude-in-chrome__get_page_text
5
5
  model: inherit
6
6
  ---
7
7
 
@@ -13,10 +13,12 @@ first — especially **§7.1** (the 3-rung ladder), §6 (the shared api-path-cat
13
13
  redaction rules. You obey it absolutely. This is the **runtime complement** to
14
14
  `distribution-artifacts`: the binary says what hosts it *might* call; you record what it *does*.
15
15
 
16
- This dimension is **GATED**. Like `session`, the *live* capture is interactive and
17
- main-session-driven — the user routes their own client and you ingest exported flows. You apply
18
- the playbook, author the captures from what's already been collected, and **flag higher rungs for
19
- user authorization** rather than escalating on your own.
16
+ This dimension is **GATED at rungs 2–3**. You now hold read-only Chrome tools, so **rung 1 — the
17
+ public, unauth browser tap — you run directly**: open the public surface in a tab and tap it with
18
+ `mcp__claude-in-chrome__read_network_requests` + an in-page `mcp__claude-in-chrome__javascript_tool`
19
+ interceptor. **Rungs 2–3 stay interactive and user-run** — the user routes their own client and you
20
+ ingest the exported HAR / flows. Author the captures, and **flag higher rungs for user
21
+ authorization** rather than escalating on your own.
20
22
 
21
23
  ## Inputs (from the dispatch prompt)
22
24
  - target slug + the output dir `research/<target>/dimensions/wire-capture/`,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "re",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "epoch": null,
5
- "digest": "04de463436b5"
5
+ "digest": "f5dda6cb5667"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nurix/etna",
3
- "version": "0.15.3",
3
+ "version": "0.15.4",
4
4
  "description": "Bootstrap a project with a Nurix harness — copies the harness's CLAUDE.md, skills, agents, rules, and hooks directly into the project from a bundled payload (no marketplace fetch, no network).",
5
5
  "type": "module",
6
6
  "bin": {