@refrakt-md/runes 0.36.0 → 0.37.0

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.
Files changed (63) hide show
  1. package/dist/file-ref-resolve.d.ts.map +1 -1
  2. package/dist/file-ref-resolve.js +36 -1
  3. package/dist/file-ref-resolve.js.map +1 -1
  4. package/dist/index.d.ts +11 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +13 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/lang-map.d.ts.map +1 -1
  9. package/dist/lang-map.js +8 -0
  10. package/dist/lang-map.js.map +1 -1
  11. package/dist/lib/anchor.d.ts +73 -0
  12. package/dist/lib/anchor.d.ts.map +1 -0
  13. package/dist/lib/anchor.js +521 -0
  14. package/dist/lib/anchor.js.map +1 -0
  15. package/dist/lib/component.d.ts +1 -1
  16. package/dist/lib/component.d.ts.map +1 -1
  17. package/dist/lib/invocation.d.ts +22 -0
  18. package/dist/lib/invocation.d.ts.map +1 -0
  19. package/dist/lib/invocation.js +67 -0
  20. package/dist/lib/invocation.js.map +1 -0
  21. package/dist/lib/languages.d.ts +163 -0
  22. package/dist/lib/languages.d.ts.map +1 -0
  23. package/dist/lib/languages.js +383 -0
  24. package/dist/lib/languages.js.map +1 -0
  25. package/dist/lib/line-diff.d.ts +35 -0
  26. package/dist/lib/line-diff.d.ts.map +1 -0
  27. package/dist/lib/line-diff.js +77 -0
  28. package/dist/lib/line-diff.js.map +1 -0
  29. package/dist/lib/mask.d.ts +116 -0
  30. package/dist/lib/mask.d.ts.map +1 -0
  31. package/dist/lib/mask.js +378 -0
  32. package/dist/lib/mask.js.map +1 -0
  33. package/dist/lib/node.d.ts +1 -1
  34. package/dist/lib/node.d.ts.map +1 -1
  35. package/dist/lib/present.d.ts +73 -0
  36. package/dist/lib/present.d.ts.map +1 -0
  37. package/dist/lib/present.js +127 -0
  38. package/dist/lib/present.js.map +1 -0
  39. package/dist/lib/read-file.d.ts +21 -1
  40. package/dist/lib/read-file.d.ts.map +1 -1
  41. package/dist/lib/read-file.js +46 -0
  42. package/dist/lib/read-file.js.map +1 -1
  43. package/dist/lib/renderable.d.ts +7 -3
  44. package/dist/lib/renderable.d.ts.map +1 -1
  45. package/dist/lib/renderable.js +2 -2
  46. package/dist/lib/renderable.js.map +1 -1
  47. package/dist/lib/review-marker.d.ts +113 -0
  48. package/dist/lib/review-marker.d.ts.map +1 -0
  49. package/dist/lib/review-marker.js +173 -0
  50. package/dist/lib/review-marker.js.map +1 -0
  51. package/dist/snippet-pipeline.d.ts.map +1 -1
  52. package/dist/snippet-pipeline.js +70 -2
  53. package/dist/snippet-pipeline.js.map +1 -1
  54. package/dist/tags/diff.d.ts.map +1 -1
  55. package/dist/tags/diff.js +1 -38
  56. package/dist/tags/diff.js.map +1 -1
  57. package/dist/tags/file-ref.d.ts.map +1 -1
  58. package/dist/tags/file-ref.js +59 -1
  59. package/dist/tags/file-ref.js.map +1 -1
  60. package/dist/tags/snippet.d.ts.map +1 -1
  61. package/dist/tags/snippet.js +53 -2
  62. package/dist/tags/snippet.js.map +1 -1
  63. package/package.json +3 -3
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Review markers for embedded source (SPEC-134, WORK-591).
3
+ *
4
+ * SPEC-131 answers *am I quoting the right region*. This answers the next
5
+ * question up: **the region is right, and the prose around it no longer
6
+ * describes what is in it.**
7
+ *
8
+ * A field is removed, a default flips, a parameter is reordered — the anchor
9
+ * resolves perfectly, the code block renders real current code, and the
10
+ * paragraph above it quietly becomes false. That is the *ordinary* case,
11
+ * because editing a declaration is far more common than renaming or moving one.
12
+ *
13
+ * ```markdoc
14
+ * {% snippet path="packages/types/src/config.ts" symbol="SiteConfig" reviewed="a3f91c4e" /%}
15
+ * ```
16
+ *
17
+ * Resolution is unchanged. After the slice resolves it is normalized, hashed
18
+ * and compared. A mismatch produces a diagnostic; the page still renders the
19
+ * current code.
20
+ *
21
+ * **`reviewed`, not `pin` (D1).** This freezes nothing — the snippet still
22
+ * tracks HEAD and re-resolves every build. What the attribute records is that a
23
+ * human read this version and the surrounding prose matched. The name is
24
+ * load-bearing: `pin=` would steer an author toward "this is frozen, nothing to
25
+ * do here", which is the opposite of the intended response.
26
+ */
27
+ import { reindent } from './present.js';
28
+ /**
29
+ * Digest length, in hex characters. D4 specifies 8–12.
30
+ *
31
+ * 12 rather than 8 because the hash below is not SHA-256: the extra nibbles
32
+ * cost nothing inline and buy back the headroom.
33
+ */
34
+ const HASH_LENGTH = 12;
35
+ /**
36
+ * The normalized form that gets hashed.
37
+ *
38
+ * **Normalization is the whole design.** Hash raw bytes and the marker fires on
39
+ * every trailing space and every reformat — and a marker that cries wolf gets
40
+ * deleted. Budget the normalization, not the hash: hashing is a line, and
41
+ * getting normalization wrong produces a feature that is worse than not having
42
+ * it.
43
+ *
44
+ * In order:
45
+ *
46
+ * 1. **Apply `reindent` first.** Moving a function into a class shifts every
47
+ * line two columns without changing a character of content.
48
+ * 2. Normalize line endings, strip per-line trailing whitespace, normalize the
49
+ * trailing newline.
50
+ * 3. **Stop. Comments stay in — D2.**
51
+ *
52
+ * Excluding comments would make markers quieter, and SPEC-131's masker could do
53
+ * it for free. It is still wrong: a doc comment is very often the exact text
54
+ * the surrounding prose paraphrases. If `@param timeout`'s description changes
55
+ * meaning and the marker stays green, the feature has failed at the only job it
56
+ * has.
57
+ */
58
+ export function normalizeStrict(content) {
59
+ return reindent(content)
60
+ .replace(/\r\n?/g, '\n')
61
+ .split('\n')
62
+ .map((line) => line.replace(/[ \t]+$/, ''))
63
+ .join('\n')
64
+ .replace(/\n+$/, '');
65
+ }
66
+ /**
67
+ * The loose form — strict, plus collapsing whitespace runs and dropping blank
68
+ * lines.
69
+ *
70
+ * This exists so that "it was just the formatter" is a **fact the tool
71
+ * establishes** rather than a judgement an author makes under time pressure
72
+ * (D3). A repo-wide formatter run would otherwise invalidate every marker at
73
+ * once, and an author re-stamping fifty of them learns nothing — the feature's
74
+ * worst failure mode, and the strongest objection to it.
75
+ */
76
+ export function normalizeLoose(content) {
77
+ return normalizeStrict(content)
78
+ .split('\n')
79
+ .map((line) => line.trim().replace(/\s+/g, ' '))
80
+ .filter((line) => line.length > 0)
81
+ .join('\n');
82
+ }
83
+ /**
84
+ * A non-cryptographic 53-bit digest, in pure JavaScript.
85
+ *
86
+ * **Why not `node:crypto`.** `@refrakt-md/runes` is bundled for the browser —
87
+ * the block editor's Vite build pulls it in, and `read-file.ts` already carries
88
+ * the same constraint for `node:fs`. A static `node:crypto` import breaks that
89
+ * build outright, which is how this was caught. Web Crypto is the other
90
+ * cross-runtime option and is asynchronous, which would make `hashSlice` async
91
+ * and infect the whole synchronous transform path for no benefit.
92
+ *
93
+ * **Why a cryptographic hash was never required.** D4's reasoning: this is
94
+ * change detection against **one known expected value**, not a lookup table, so
95
+ * the birthday bound does not apply. Nothing here is a security boundary — a
96
+ * marker is a note that a human read something, and the worst case for a
97
+ * collision is one missed review prompt, not a forged claim. Two independent
98
+ * 32-bit lanes with different seeds, mixed and rendered as 12 hex characters.
99
+ *
100
+ * Adapted from the widely used cyrb53 construction.
101
+ */
102
+ function digest(input) {
103
+ let h1 = 0xdeadbeef;
104
+ let h2 = 0x41c6ce57;
105
+ for (let i = 0; i < input.length; i++) {
106
+ const ch = input.charCodeAt(i);
107
+ h1 = Math.imul(h1 ^ ch, 2654435761);
108
+ h2 = Math.imul(h2 ^ ch, 1597334677);
109
+ }
110
+ h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);
111
+ h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);
112
+ h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);
113
+ h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);
114
+ const value = 4294967296 * (2097151 & h2) + (h1 >>> 0);
115
+ return value.toString(16).padStart(HASH_LENGTH, '0').slice(-HASH_LENGTH);
116
+ }
117
+ /** Both hash levels for a resolved slice. */
118
+ export function hashSlice(content) {
119
+ return {
120
+ strict: digest(normalizeStrict(content)),
121
+ loose: digest(normalizeLoose(content)),
122
+ };
123
+ }
124
+ /**
125
+ * Compare a stored marker against the slice as it is now.
126
+ *
127
+ * The stored value is compared against the **strict** hash. A stored marker
128
+ * that matches neither level, but whose loose form matches the current loose
129
+ * form, is formatting-only: the author reviewed content that still says the
130
+ * same thing with different whitespace.
131
+ */
132
+ export function compareMarker(stored, content, storedLoose) {
133
+ const current = hashSlice(content);
134
+ if (stored === current.strict) {
135
+ return { verdict: 'current', stored, current };
136
+ }
137
+ // Without a stored loose hash the formatting-only case cannot be *proven*,
138
+ // only guessed — and D3 is explicit that it must be proven. A single stored
139
+ // value therefore degrades to `stale`, which is the safe direction: it asks
140
+ // for a review that may turn out to be trivial, rather than skipping one
141
+ // that mattered.
142
+ if (storedLoose !== undefined && storedLoose === current.loose) {
143
+ return { verdict: 'formatting-only', stored, current };
144
+ }
145
+ return { verdict: 'stale', stored, current };
146
+ }
147
+ /** Render a marker attribute value. Both levels are stored, separated by a
148
+ * colon, so the formatting-only case can be *proven* rather than assumed. */
149
+ export function formatMarker(pair) {
150
+ return `${pair.strict}:${pair.loose}`;
151
+ }
152
+ /** Parse a stored marker value into its levels. A marker written before the
153
+ * loose level existed — or by hand — carries only the strict half. */
154
+ export function parseMarker(raw) {
155
+ const [strict, loose] = raw.split(':');
156
+ return loose ? { strict, loose } : { strict };
157
+ }
158
+ /**
159
+ * Whether an invocation can meaningfully carry a marker.
160
+ *
161
+ * D10: a slice that cannot change can never fire, so stamping one means
162
+ * nothing and the tool should say so rather than doing it. Today the only such
163
+ * case is an invocation with no resolvable slice at all.
164
+ */
165
+ export function canCarryMarker(opts) {
166
+ // `expand` embeds a whole document rather than a region, so there is
167
+ // nothing of the right shape to hash — WORK-591's criterion, and the reason
168
+ // WORK-593's editor does not stamp it.
169
+ if (opts.rune === 'expand')
170
+ return false;
171
+ return opts.hasPath;
172
+ }
173
+ //# sourceMappingURL=review-marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-marker.js","sourceRoot":"","sources":["../../src/lib/review-marker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"snippet-pipeline.d.ts","sourceRoot":"","sources":["../src/snippet-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAEX,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,EACf,cAAc,EACd,MAAM,mBAAmB,CAAC;AAoC3B;;;;;GAKG;AACH,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,iBAAiB,GACpB,IAAI,GAAG,IAAI,CAab;AAyHD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,eAAe,GACnB,eAAe,CAIjB"}
1
+ {"version":3,"file":"snippet-pipeline.d.ts","sourceRoot":"","sources":["../src/snippet-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAEX,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,EACf,cAAc,EACd,MAAM,mBAAmB,CAAC;AA6C3B;;;;;GAKG;AACH,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,iBAAiB,GACpB,IAAI,GAAG,IAAI,CAab;AAuMD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,eAAe,GACnB,eAAe,CAIjB"}
@@ -24,7 +24,9 @@
24
24
  * a snippet in `{% codegroup title="..." %}` if you want a labelled chrome.
25
25
  */
26
26
  import Markdoc from '@markdoc/markdoc';
27
+ import { formatHighlight, highlightMatchLines, parseHighlightMatch, reindent, shouldReindent, } from './lib/present.js';
27
28
  import { readSnippetFile, SnippetSandboxError } from './lib/read-file.js';
29
+ import { compareMarker, parseMarker } from './lib/review-marker.js';
28
30
  import { inferLanguage } from './lang-map.js';
29
31
  const { Ast, Tag } = Markdoc;
30
32
  /** Resolve a Markdoc attribute value to a string. Handles literal strings
@@ -125,6 +127,23 @@ function resolveSnippetToFence(tag, page, ctx, files) {
125
127
  const highlight = tag.attributes.highlight !== undefined
126
128
  ? resolveAttributeValue(tag.attributes.highlight, ctx.variables)
127
129
  : undefined;
130
+ // SPEC-131 — anchor attributes. Resolution lands in the shared reader, so
131
+ // `file-ref` gains the same capability from the same change.
132
+ const str = (name) => tag.attributes[name] !== undefined
133
+ ? resolveAttributeValue(tag.attributes[name], ctx.variables)
134
+ : undefined;
135
+ const anchor = {
136
+ symbol: str('symbol'),
137
+ match: str('match'),
138
+ occurrence: tag.attributes.occurrence !== undefined ? Number(tag.attributes.occurrence) : undefined,
139
+ extent: str('extent'),
140
+ until: str('until'),
141
+ through: str('through'),
142
+ doc: tag.attributes.doc === undefined ? undefined : tag.attributes.doc === true,
143
+ };
144
+ const reindentAttr = tag.attributes.reindent === undefined ? undefined : tag.attributes.reindent === true;
145
+ const highlightMatch = str('highlight-match');
146
+ const reviewedAttr = str('reviewed');
128
147
  if (!pathAttr) {
129
148
  const msg = 'snippet `path` attribute is required (and an unresolvable variable reference resolves to empty)';
130
149
  ctx.error(msg, page.url);
@@ -136,6 +155,8 @@ function resolveSnippetToFence(tag, page, ctx, files) {
136
155
  files,
137
156
  pathAttr,
138
157
  lines: lines || undefined,
158
+ anchor,
159
+ lang: langAttr || undefined,
139
160
  referencingPage: page.relativePath,
140
161
  });
141
162
  }
@@ -153,22 +174,69 @@ function resolveSnippetToFence(tag, page, ctx, files) {
153
174
  for (const warning of result.warnings) {
154
175
  ctx.warn(warning, page.url);
155
176
  }
177
+ // SPEC-134 — the review marker. Evaluated only after the anchor resolved,
178
+ // because D9 layers the two features: SPEC-131 answers *can I find the
179
+ // region* and refuses if not, so a refusal never reaches here at all.
180
+ //
181
+ // A finding is a `PipelineWarning` beside the page and **nothing is
182
+ // rendered into it** (D6). This is deliberately different from SPEC-131's
183
+ // error fence, and the difference is principled: there, the content could
184
+ // not be produced, so the fence takes its place. Here the content was
185
+ // produced perfectly — real, current, correctly located. What is uncertain
186
+ // is the prose beside it, which the resolver cannot see. Replacing a
187
+ // correct code block with an error because a paragraph *might* be stale is
188
+ // a straightforward regression for every reader.
189
+ if (reviewedAttr && reviewedAttr.length > 0) {
190
+ const stored = parseMarker(reviewedAttr);
191
+ const comparison = compareMarker(stored.strict, result.content, stored.loose);
192
+ if (comparison.verdict === 'stale') {
193
+ // Deliberately no diff here: at transform time the only record of
194
+ // the reviewed version is its hash, and a hash cannot be turned
195
+ // back into content. `refrakt snippet review --update` recovers the
196
+ // old slice from git and shows the diff — which is why D5's "show
197
+ // content, never hashes" is the CLI's job rather than this one's.
198
+ ctx.warn(`snippet \`${pathAttr}\` has changed since it was last reviewed. Re-read the prose ` +
199
+ 'around it, then run `refrakt snippet review --update` to see the diff and re-stamp.', page.url);
200
+ }
201
+ }
156
202
  const language = langAttr && langAttr.length > 0 ? langAttr : inferLanguage(result.relativePath);
203
+ // WORK-589 — presentation runs strictly **after** the resolved range is
204
+ // fixed, so `reindent` can never shift the coordinates `linenumbers` and a
205
+ // numeric `highlight` read (D13). `highlight-match` is computed against the
206
+ // pre-reindent text because reindent changes columns, not lines.
207
+ const highlightMatchLinesFound = highlightMatch
208
+ ? highlightMatchLines(result.content, parseHighlightMatch(highlightMatch))
209
+ : [];
210
+ const content = shouldReindent(result.anchored, reindentAttr)
211
+ ? reindent(result.content)
212
+ : result.content;
157
213
  // WORK-304 — write unprefixed `source` / `lines` directly. The fence
158
214
  // schema renders them as `data-source` / `data-lines`. `linenumbers` /
159
215
  // `highlight` are propagated from the rune attributes (file-coordinate
160
216
  // semantics — see WORK-304 acceptance criteria).
161
217
  const fenceAttrs = {
162
- content: result.content,
218
+ content,
163
219
  language,
164
220
  source: result.relativePath,
165
221
  };
222
+ // The coordinate frame survives anchoring (D13): an anchored slice reports
223
+ // the range it actually resolved to, so `linenumbers` still starts at the
224
+ // real file line and the displayed numbers stay a pointer back into it.
166
225
  if (lines)
167
226
  fenceAttrs.lines = lines;
227
+ else if (result.anchored && result.start !== undefined && result.end !== undefined) {
228
+ fenceAttrs.lines = `${result.start}-${result.end}`;
229
+ }
168
230
  if (linenumbers)
169
231
  fenceAttrs.linenumbers = true;
170
- if (highlight && highlight.length > 0)
232
+ if (highlightMatchLinesFound.length > 0) {
233
+ // Slice offsets converted into the file frame the fence expects.
234
+ const base = result.start ?? 1;
235
+ fenceAttrs.highlight = formatHighlight(highlightMatchLinesFound.map((n) => n + base - 1));
236
+ }
237
+ else if (highlight && highlight.length > 0) {
171
238
  fenceAttrs.highlight = highlight;
239
+ }
172
240
  // Construct a fence Ast.Node. Markdoc parses ``` blocks as
173
241
  // new Ast.Node('fence', { content, language }) — same shape here.
174
242
  return new Ast.Node('fence', fenceAttrs);
@@ -1 +1 @@
1
- {"version":3,"file":"snippet-pipeline.js","sourceRoot":"","sources":["../src/snippet-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snippet-pipeline.js","sourceRoot":"","sources":["../src/snippet-pipeline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/tags/diff.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAmPvC,eAAO,MAAM,IAAI,gBAqFf,CAAC"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/tags/diff.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAoMvC,eAAO,MAAM,IAAI,gBAqFf,CAAC"}
package/dist/tags/diff.js CHANGED
@@ -1,45 +1,8 @@
1
1
  import Markdoc from '@markdoc/markdoc';
2
2
  const { Tag } = Markdoc;
3
3
  import { createContentModelSchema, createComponentRenderable, asNodes } from '../lib/index.js';
4
+ import { computeLineDiff } from '../lib/line-diff.js';
4
5
  const modeType = ['unified', 'split', 'inline'];
5
- /**
6
- * Compute line-level diff using LCS (Longest Common Subsequence).
7
- * Returns an array of hunks with type and raw text.
8
- * Highlighting is deferred to the pipeline's highlight transform.
9
- */
10
- function computeLineDiff(before, after) {
11
- const a = before.split('\n');
12
- const b = after.split('\n');
13
- // Build LCS table
14
- const m = a.length, n = b.length;
15
- const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
16
- for (let i = 1; i <= m; i++) {
17
- for (let j = 1; j <= n; j++) {
18
- dp[i][j] =
19
- a[i - 1] === b[j - 1] ? dp[i - 1][j - 1] + 1 : Math.max(dp[i - 1][j], dp[i][j - 1]);
20
- }
21
- }
22
- // Backtrack to produce hunks
23
- let i = m, j = n;
24
- const stack = [];
25
- while (i > 0 || j > 0) {
26
- if (i > 0 && j > 0 && a[i - 1] === b[j - 1]) {
27
- stack.push({ type: 'equal', text: a[i - 1] });
28
- i--;
29
- j--;
30
- }
31
- else if (j > 0 && (i === 0 || dp[i][j - 1] >= dp[i - 1][j])) {
32
- stack.push({ type: 'add', text: b[j - 1] });
33
- j--;
34
- }
35
- else {
36
- stack.push({ type: 'remove', text: a[i - 1] });
37
- i--;
38
- }
39
- }
40
- stack.reverse();
41
- return stack;
42
- }
43
6
  /** Align hunks into paired split lines (before/after) with line numbers. */
44
7
  function getSplitLines(hunks) {
45
8
  const before = [];
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/tags/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/tags/diff.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-ref.d.ts","sourceRoot":"","sources":["../../src/tags/file-ref.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAIvC;;;mEAGmE;AACnE,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,gBAoElB,CAAC"}
1
+ {"version":3,"file":"file-ref.d.ts","sourceRoot":"","sources":["../../src/tags/file-ref.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAIvC;;;mEAGmE;AACnE,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,gBAqIlB,CAAC"}
@@ -29,7 +29,53 @@ export const fileRef = createContentModelSchema({
29
29
  lines: {
30
30
  type: String,
31
31
  required: false,
32
- description: 'Line range. `"42-58"` (range), `"42"` (single line). Drives both the GitHub anchor (#L42-L58) and the drawer-body snippet slice when `preview="drawer"`.',
32
+ description: 'Line range. `"42-58"` (range), `"42"` (single line). Drives both the GitHub anchor (#L42-L58) and the drawer-body snippet slice when `preview="drawer"`. A coordinate into a file nobody promised to hold still — prefer `symbol` or `match`. Mutually exclusive with both.',
33
+ },
34
+ symbol: {
35
+ type: String,
36
+ required: false,
37
+ description: 'Name a declaration instead of a line range: `symbol="SiteConfig"`. The drawer body shows the resolved region, recomputed from the current file rather than frozen at authoring time. Note the trade: the GitHub link loses its `#L` fragment and points at the whole file, because the range is not known until the file is read, which happens after the link is built. Includes the doc comment by default.',
38
+ },
39
+ match: {
40
+ type: String,
41
+ required: false,
42
+ description: 'Raw regex anchor, applied per line. The general form; `symbol` is sugar over it.',
43
+ },
44
+ occurrence: {
45
+ type: Number,
46
+ required: false,
47
+ description: 'Which match to take when the anchor is ambiguous, 1-based. An escape hatch rather than a naming form; out of range refuses rather than clamping.',
48
+ },
49
+ extent: {
50
+ type: String,
51
+ required: false,
52
+ matches: ['auto', 'dedent', 'section', 'paired'],
53
+ description: 'How far the slice runs: `auto` (delimiters), `dedent` (indentation), `section` (next sibling), `paired` (token pair). Never inferred from the file.',
54
+ },
55
+ until: {
56
+ type: String,
57
+ required: false,
58
+ description: 'Regex ending the extent, excluding the matching line. Overrides `extent`.',
59
+ },
60
+ through: {
61
+ type: String,
62
+ required: false,
63
+ description: 'As `until`, but including the matching line.',
64
+ },
65
+ doc: {
66
+ type: Boolean,
67
+ required: false,
68
+ description: 'Include the preceding doc comment. Defaults on for `symbol`, off for `match`. Annotations attach regardless.',
69
+ },
70
+ reindent: {
71
+ type: Boolean,
72
+ required: false,
73
+ description: "Strip the drawer slice's common leading whitespace. Defaults on for anchors, off for `lines`.",
74
+ },
75
+ reviewed: {
76
+ type: String,
77
+ required: false,
78
+ description: 'Records that a human read this version of the slice and confirmed the prose around it matched. Written by `refrakt snippet review`, never by hand.',
33
79
  },
34
80
  label: {
35
81
  type: String,
@@ -50,6 +96,10 @@ export const fileRef = createContentModelSchema({
50
96
  const lines = attrs.lines !== undefined ? String(attrs.lines) : '';
51
97
  const label = attrs.label !== undefined ? String(attrs.label) : '';
52
98
  const preview = attrs.preview !== undefined ? String(attrs.preview) : '';
99
+ // SPEC-131 anchor attributes. Carried as meta through to the drawer
100
+ // builder, which is the only stage with file access.
101
+ const str = (name) => (attrs[name] !== undefined ? String(attrs[name]) : '');
102
+ const bool = (name) => (attrs[name] === undefined ? '' : String(attrs[name] === true));
53
103
  // Default label: the basename of the path. Authors typically want
54
104
  // to refer to a symbol inside the file (e.g. "ThemeTokensConfig")
55
105
  // and pass an explicit label; this default is the conservative
@@ -61,6 +111,14 @@ export const fileRef = createContentModelSchema({
61
111
  meta('file-ref-lines', lines),
62
112
  meta('file-ref-label', label),
63
113
  meta('file-ref-preview', preview),
114
+ meta('file-ref-symbol', str('symbol')),
115
+ meta('file-ref-match', str('match')),
116
+ meta('file-ref-occurrence', str('occurrence')),
117
+ meta('file-ref-extent', str('extent')),
118
+ meta('file-ref-until', str('until')),
119
+ meta('file-ref-through', str('through')),
120
+ meta('file-ref-doc', bool('doc')),
121
+ meta('file-ref-reindent', bool('reindent')),
64
122
  meta(FILE_REF_SENTINEL, 'true'),
65
123
  ];
66
124
  // Placeholder anchor with the fallback label — resolver replaces
@@ -1 +1 @@
1
- {"version":3,"file":"file-ref.js","sourceRoot":"","sources":["../../src/tags/file-ref.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-ref.js","sourceRoot":"","sources":["../../src/tags/file-ref.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"snippet.d.ts","sourceRoot":"","sources":["../../src/tags/snippet.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,OAAO,mCAqDlB,CAAC"}
1
+ {"version":3,"file":"snippet.d.ts","sourceRoot":"","sources":["../../src/tags/snippet.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,OAAO,mCAkHlB,CAAC"}
@@ -26,7 +26,58 @@ export const snippet = createContentModelSchema({
26
26
  lines: {
27
27
  type: String,
28
28
  required: false,
29
- description: 'Line range. Formats: "10-25", "10-" (to EOF), "-20" (from start), "10" (single line). 1-indexed, inclusive.',
29
+ description: 'Line range. Formats: "10-25", "10-" (to EOF), "-20" (from start), "10" (single line). 1-indexed, inclusive. A coordinate into a file nobody promised to hold still — prefer `symbol` or `match`, which survive edits above the region. Mutually exclusive with both.',
30
+ },
31
+ symbol: {
32
+ type: String,
33
+ required: false,
34
+ description: 'Name a declaration instead of a line range: `symbol="SiteConfig"`. The anchor is built from the language\'s keyword table, so a symbol that moves is still found and a symbol that is renamed fails loudly instead of rendering the wrong region. Includes the doc comment by default (see `doc`).',
35
+ },
36
+ match: {
37
+ type: String,
38
+ required: false,
39
+ description: 'Raw regex anchor, applied per line: `match="^\\\\.rf-hint\\\\s*\\\\{"`. The general form — `symbol` is sugar over it — and the way to address a language whose keywords the table does not carry.',
40
+ },
41
+ occurrence: {
42
+ type: Number,
43
+ required: false,
44
+ description: 'Which match to take when the anchor is ambiguous, 1-based. An escape hatch, not a naming form: it is a better coordinate than a line number, but it still drifts when another match is inserted above the one addressed. Prefer a more specific `match=`. Out of range refuses rather than clamping.',
45
+ },
46
+ extent: {
47
+ type: String,
48
+ required: false,
49
+ matches: ['auto', 'dedent', 'section', 'paired'],
50
+ description: "How far the slice runs. `auto` (default) balances delimiters — TS, CSS, JSON. `dedent` consumes lines indented deeper than the anchor — Python, YAML. `section` runs to the next sibling at the anchor's own level — Markdown headings, TOML tables. `paired` balances a token pair — Markdoc, HTML, Svelte. Never inferred from the file.",
51
+ },
52
+ until: {
53
+ type: String,
54
+ required: false,
55
+ description: 'Regex ending the extent, excluding the matching line. Overrides `extent`. Refuses if it never matches rather than returning the rest of the file.',
56
+ },
57
+ through: {
58
+ type: String,
59
+ required: false,
60
+ description: 'As `until`, but including the matching line. Two attributes rather than one flag because `until="^}"` in code wants the brace in and `until="^## "` in Markdown wants the heading out — either default is silently wrong half the time.',
61
+ },
62
+ doc: {
63
+ type: Boolean,
64
+ required: false,
65
+ description: 'Include the preceding doc comment. Defaults on for `symbol` (which names an entity and delegates the boundary) and off for `match` (which names a line the author already chose). Annotations and decorators attach regardless.',
66
+ },
67
+ reindent: {
68
+ type: Boolean,
69
+ required: false,
70
+ description: "Strip the slice's common leading whitespace, so a nested target does not render with a ragged left edge. Defaults on for `symbol`/`match` and off for `lines`, so no existing line-addressed invocation changes how it renders. Relative structure is preserved, so a dedented Python method stays valid.",
71
+ },
72
+ reviewed: {
73
+ type: String,
74
+ required: false,
75
+ description: 'Records that a human read this version of the slice and confirmed the prose around it matched. Freezes nothing — the snippet still tracks HEAD and re-resolves every build. When the slice changes, a diagnostic asks for a re-read; the page still renders the current code. Written by `refrakt snippet review`, never by hand.',
76
+ },
77
+ 'highlight-match': {
78
+ type: String,
79
+ required: false,
80
+ description: 'Comma-separated regexes; lines matching any of them are emphasized. The anchor-native form of `highlight` — under an anchor the author never saw a line number, so content is the only thing they can point at.',
30
81
  },
31
82
  lang: {
32
83
  type: String,
@@ -41,7 +92,7 @@ export const snippet = createContentModelSchema({
41
92
  highlight: {
42
93
  type: String,
43
94
  required: false,
44
- description: 'Range(s) to emphasize without cropping — Shiki-style format: "74-78", "74-78,82,90-92". Indices are file coordinates (same frame as `lines=`). Use this when you want full context visible but want to draw the eye to specific lines. WORK-304.',
95
+ description: 'Range(s) to emphasize without cropping — Shiki-style format: "74-78", "74-78,82,90-92". Indices are file coordinates (same frame as `lines=`), and stay so under an anchor. Note that a *numeric* highlight under `symbol`/`match` carries the same coordinate exposure anchoring otherwise removes — the resolver chose the region, so the author is guessing at its line numbers. Use `highlight-match` there. WORK-304.',
45
96
  },
46
97
  },
47
98
  contentModel: { type: 'sequence', fields: [] },
@@ -1 +1 @@
1
- {"version":3,"file":"snippet.js","sourceRoot":"","sources":["../../src/tags/snippet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,wBAAwB,CAAC;IAC/C,UAAU,EAAE;QACX,IAAI,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,WAAW,EACV,yFAAyF;SAC1F;QACD,KAAK,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,6GAA6G;SAC9G;QACD,IAAI,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,6EAA6E;SAC1F;QACD,WAAW,EAAE;YACZ,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,wLAAwL;SACzL;QACD,SAAS,EAAE;YACV,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,kPAAkP;SACnP;KACD;IACD,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;IAC9C,SAAS,CAAC,SAAS,EAAE,MAAM;QAC1B,iEAAiE;QACjE,oEAAoE;QACpE,EAAE;QACF,sEAAsE;QACtE,wEAAwE;QACxE,0EAA0E;QAC1E,MAAM,IAAI,KAAK,CACd,2DAA2D;YAC1D,2EAA2E;YAC3E,+EAA+E;YAC/E,iFAAiF;YACjF,kFAAkF;YAClF,gFAAgF;YAChF,oDAAoD;YACpD,gFAAgF;YAChF,8EAA8E;YAC9E,8BAA8B,CAC/B,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"snippet.js","sourceRoot":"","sources":["../../src/tags/snippet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,wBAAwB,CAAC;IAC/C,UAAU,EAAE;QACX,IAAI,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,WAAW,EACV,yFAAyF;SAC1F;QACD,KAAK,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,sQAAsQ;SACvQ;QACD,MAAM,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,oSAAoS;SACrS;QACD,KAAK,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,mMAAmM;SACpM;QACD,UAAU,EAAE;YACX,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,sSAAsS;SACvS;QACD,MAAM,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;YAChD,WAAW,EACV,4UAA4U;SAC7U;QACD,KAAK,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,mJAAmJ;SACpJ;QACD,OAAO,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,yOAAyO;SAC1O;QACD,GAAG,EAAE;YACJ,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,iOAAiO;SAClO;QACD,QAAQ,EAAE;YACT,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,2SAA2S;SAC5S;QACD,QAAQ,EAAE;YACT,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,mUAAmU;SACpU;QACD,iBAAiB,EAAE;YAClB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,iNAAiN;SAClN;QACD,IAAI,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,6EAA6E;SAC1F;QACD,WAAW,EAAE;YACZ,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,wLAAwL;SACzL;QACD,SAAS,EAAE;YACV,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,KAAK;YACf,WAAW,EACV,4ZAA4Z;SAC7Z;KACD;IACD,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;IAC9C,SAAS,CAAC,SAAS,EAAE,MAAM;QAC1B,iEAAiE;QACjE,oEAAoE;QACpE,EAAE;QACF,sEAAsE;QACtE,wEAAwE;QACxE,0EAA0E;QAC1E,MAAM,IAAI,KAAK,CACd,2DAA2D;YAC1D,2EAA2E;YAC3E,+EAA+E;YAC/E,iFAAiF;YACjF,kFAAkF;YAClF,gFAAgF;YAChF,oDAAoD;YACpD,gFAAgF;YAChF,8EAA8E;YAC9E,8BAA8B,CAC/B,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}