@nurix/etna 0.19.77 → 0.19.78
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/data/harness-index.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"harness": "code",
|
|
3
3
|
"name": "code",
|
|
4
|
-
"version": "3.10.
|
|
4
|
+
"version": "3.10.4",
|
|
5
5
|
"files": [
|
|
6
6
|
".prettierignore",
|
|
7
7
|
".prettierrc.json",
|
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
"docs/memory/main.md",
|
|
16
16
|
".mcp.json"
|
|
17
17
|
],
|
|
18
|
-
"digest": "
|
|
18
|
+
"digest": "4b1ec8d430ab"
|
|
19
19
|
}
|
|
@@ -7,6 +7,8 @@ Read by the PreToolUse install gate (`compliance.mjs`) — an off-table install
|
|
|
7
7
|
| `react` | ^19.2.3 | UI components | — |
|
|
8
8
|
| `vite` | ^8.0.0 | Build tool, dev server | `webpack`, CRA |
|
|
9
9
|
| `tailwindcss` | ^4.1.18 | Styling | `styled-components` |
|
|
10
|
+
| `@nurix/components` | ^0.15.12 | The UI component library — import by subpath | `npx shadcn add`, a `components.json` scaffold |
|
|
11
|
+
| `@tailwindcss/vite` | ^4.1.18 | Tailwind v4 Vite plugin | `postcss`, `tailwind.config.js` |
|
|
10
12
|
| `@vitejs/plugin-react-swc` | ^4.2.2 | JSX compilation | `@vitejs/plugin-react` |
|
|
11
13
|
| `react-router-dom` | ^7.11.0 | Routing | — |
|
|
12
14
|
| `@reduxjs/toolkit` | ^2.11.2 | State management | `zustand`, `jotai` |
|
|
@@ -277,11 +277,21 @@ function packageGate(projectDir, command, sessionId) {
|
|
|
277
277
|
if (!m) return null;
|
|
278
278
|
const approved = approvedPackages(projectDir);
|
|
279
279
|
if (approved.size === 0) return null; // no rules file installed — nothing to enforce
|
|
280
|
-
const
|
|
281
|
-
|
|
282
|
-
|
|
280
|
+
const raw = m[1] || "";
|
|
281
|
+
// Test packages install at `latest`, outside the table's pin set (.claude/rules/testing.md).
|
|
282
|
+
// Two dev-only installs are a decision already taken rather than a new one: a companion in an
|
|
283
|
+
// approved scope (`@testing-library/react` is approved, so `-D @testing-library/user-event` is
|
|
284
|
+
// not a fresh choice), and `@types/*`, which is the typing of a package already decided. Scoped
|
|
285
|
+
// and dev only — an unscoped or runtime install is still judged against the table.
|
|
286
|
+
const isDev = /(?:^|\s)(?:-D|--save-dev|--dev)(?:\s|$)/.test(raw);
|
|
287
|
+
const approvedScopes = new Set(
|
|
288
|
+
[...approved].filter((n) => n.startsWith("@")).map((n) => n.split("/")[0])
|
|
289
|
+
);
|
|
290
|
+
approvedScopes.add("@types");
|
|
291
|
+
const args = raw.split(/\s+/).filter((a) => a && !a.startsWith("-") && PKG_SPEC.test(a));
|
|
283
292
|
for (const arg of args) {
|
|
284
293
|
const pkg = arg.startsWith("@") ? arg.split("@").slice(0, 2).join("@") : arg.split("@")[0];
|
|
294
|
+
if (isDev && pkg.startsWith("@") && approvedScopes.has(pkg.split("/")[0])) continue;
|
|
285
295
|
if (!approved.has(pkg)) {
|
|
286
296
|
return deny(
|
|
287
297
|
projectDir,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nurix/etna",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.78",
|
|
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": {
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
"agent",
|
|
43
43
|
"plugin"
|
|
44
44
|
],
|
|
45
|
-
"etnaFingerprint": "
|
|
45
|
+
"etnaFingerprint": "728af89f1e8e"
|
|
46
46
|
}
|