@nurix/etna 0.19.61 → 0.19.63

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,5 +1,5 @@
1
1
  {
2
- "fingerprint": "7dd570d0cd74",
2
+ "fingerprint": "b42bc499d0c7",
3
3
  "harnesses": {
4
4
  "apollo": {
5
5
  "plugin": "apollo",
@@ -15,5 +15,5 @@
15
15
  "docs/memory/main.md",
16
16
  ".mcp.json"
17
17
  ],
18
- "digest": "3518b43becf5"
18
+ "digest": "d01be54a3e94"
19
19
  }
@@ -78,9 +78,18 @@ export function field(block, key) {
78
78
  const raw = m[1].trim();
79
79
  if (raw === "") {
80
80
  // A bare key may continue as an indented inline array on the next line, or a `- item` block.
81
+ // The array may span several lines, so join through the closing bracket before parsing —
82
+ // reading only the first line yields a bare "[", which parses to [] and makes the whole doc
83
+ // look like it owns nothing. `scanFeatureDocs` skips such docs, so the failure is invisible:
84
+ // the doc drops out of the ownership index and out of every dead-glob count.
81
85
  const next = (lines[i + 1] || "").trim();
82
86
  if (next.startsWith("[")) {
83
- return parseInlineArray(next);
87
+ let joined = "";
88
+ for (let j = i + 1; j < lines.length; j++) {
89
+ joined += (joined ? " " : "") + lines[j].trim();
90
+ if (lines[j].includes("]")) break;
91
+ }
92
+ return parseInlineArray(joined);
84
93
  }
85
94
  const items = [];
86
95
  for (let j = i + 1; j < lines.length; j++) {
@@ -10,5 +10,5 @@
10
10
  "seeds": [
11
11
  ".mcp.json"
12
12
  ],
13
- "digest": "18d92613a3ce"
13
+ "digest": "00ab519e0423"
14
14
  }
@@ -78,9 +78,18 @@ export function field(block, key) {
78
78
  const raw = m[1].trim();
79
79
  if (raw === "") {
80
80
  // A bare key may continue as an indented inline array on the next line, or a `- item` block.
81
+ // The array may span several lines, so join through the closing bracket before parsing —
82
+ // reading only the first line yields a bare "[", which parses to [] and makes the whole doc
83
+ // look like it owns nothing. `scanFeatureDocs` skips such docs, so the failure is invisible:
84
+ // the doc drops out of the ownership index and out of every dead-glob count.
81
85
  const next = (lines[i + 1] || "").trim();
82
86
  if (next.startsWith("[")) {
83
- return parseInlineArray(next);
87
+ let joined = "";
88
+ for (let j = i + 1; j < lines.length; j++) {
89
+ joined += (joined ? " " : "") + lines[j].trim();
90
+ if (lines[j].includes("]")) break;
91
+ }
92
+ return parseInlineArray(joined);
84
93
  }
85
94
  const items = [];
86
95
  for (let j = i + 1; j < lines.length; j++) {
@@ -8,5 +8,5 @@
8
8
  ".vscode/settings.json"
9
9
  ],
10
10
  "seeds": [],
11
- "digest": "e35c6d22e9ba"
11
+ "digest": "3d15299f4b1f"
12
12
  }
@@ -79,9 +79,17 @@ function field(block, key) {
79
79
  const raw = m[1].trim();
80
80
  if (raw === "") {
81
81
  // A bare key may continue as an indented inline array on the next line, or a `- item` block.
82
+ // The array may span several lines, so join through the closing bracket before parsing —
83
+ // reading only the first line yields a bare "[", which parses to [] and makes the whole doc
84
+ // look like it owns nothing, dropping it from the index entirely.
82
85
  const next = (lines[i + 1] || "").trim();
83
86
  if (next.startsWith("[")) {
84
- return parseInlineArray(next);
87
+ let joined = "";
88
+ for (let j = i + 1; j < lines.length; j++) {
89
+ joined += (joined ? " " : "") + lines[j].trim();
90
+ if (lines[j].includes("]")) break;
91
+ }
92
+ return parseInlineArray(joined);
85
93
  }
86
94
  const items = [];
87
95
  for (let j = i + 1; j < lines.length; j++) {
@@ -8,5 +8,5 @@
8
8
  ".vscode/settings.json"
9
9
  ],
10
10
  "seeds": [],
11
- "digest": "b78faf3cf571"
11
+ "digest": "5ddc026fa3b1"
12
12
  }
@@ -79,9 +79,17 @@ function field(block, key) {
79
79
  const raw = m[1].trim();
80
80
  if (raw === "") {
81
81
  // A bare key may continue as an indented inline array on the next line, or a `- item` block.
82
+ // The array may span several lines, so join through the closing bracket before parsing —
83
+ // reading only the first line yields a bare "[", which parses to [] and makes the whole doc
84
+ // look like it owns nothing, dropping it from the index entirely.
82
85
  const next = (lines[i + 1] || "").trim();
83
86
  if (next.startsWith("[")) {
84
- return parseInlineArray(next);
87
+ let joined = "";
88
+ for (let j = i + 1; j < lines.length; j++) {
89
+ joined += (joined ? " " : "") + lines[j].trim();
90
+ if (lines[j].includes("]")) break;
91
+ }
92
+ return parseInlineArray(joined);
85
93
  }
86
94
  const items = [];
87
95
  for (let j = i + 1; j < lines.length; j++) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nurix/etna",
3
- "version": "0.19.61",
3
+ "version": "0.19.63",
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": "7dd570d0cd74"
45
+ "etnaFingerprint": "b42bc499d0c7"
46
46
  }