@clossys/writer 0.3.9 → 0.5.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 (136) hide show
  1. package/README.md +647 -6
  2. package/dist/addressability.d.ts +11 -1
  3. package/dist/addressability.d.ts.map +1 -1
  4. package/dist/addressability.js +169 -3
  5. package/dist/addressability.js.map +1 -1
  6. package/dist/approval-bypass.d.ts +120 -0
  7. package/dist/approval-bypass.d.ts.map +1 -0
  8. package/dist/approval-bypass.js +2318 -0
  9. package/dist/approval-bypass.js.map +1 -0
  10. package/dist/approval.d.ts +62 -0
  11. package/dist/approval.d.ts.map +1 -0
  12. package/dist/approval.js +421 -0
  13. package/dist/approval.js.map +1 -0
  14. package/dist/approve-cli.d.ts +82 -0
  15. package/dist/approve-cli.d.ts.map +1 -0
  16. package/dist/approve-cli.js +430 -0
  17. package/dist/approve-cli.js.map +1 -0
  18. package/dist/cli.d.ts +15 -0
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +264 -22
  21. package/dist/cli.js.map +1 -1
  22. package/dist/field-options.d.ts +59 -0
  23. package/dist/field-options.d.ts.map +1 -0
  24. package/dist/field-options.js +109 -0
  25. package/dist/field-options.js.map +1 -0
  26. package/dist/fold-wallpaper-gate.d.ts +7 -0
  27. package/dist/fold-wallpaper-gate.d.ts.map +1 -0
  28. package/dist/fold-wallpaper-gate.js +29 -0
  29. package/dist/fold-wallpaper-gate.js.map +1 -0
  30. package/dist/front-door.check.d.ts +2 -0
  31. package/dist/front-door.check.d.ts.map +1 -0
  32. package/dist/front-door.check.js +8 -0
  33. package/dist/front-door.check.js.map +1 -0
  34. package/dist/front-door.d.ts +82 -0
  35. package/dist/front-door.d.ts.map +1 -0
  36. package/dist/front-door.js +271 -0
  37. package/dist/front-door.js.map +1 -0
  38. package/dist/generated/advisor-plan-contract.generated.d.ts +3 -0
  39. package/dist/generated/advisor-plan-contract.generated.d.ts.map +1 -0
  40. package/dist/generated/advisor-plan-contract.generated.js +430 -0
  41. package/dist/generated/advisor-plan-contract.generated.js.map +1 -0
  42. package/dist/generated/contract-schema.generated.d.ts +97 -0
  43. package/dist/generated/contract-schema.generated.d.ts.map +1 -0
  44. package/dist/generated/contract-schema.generated.js +496 -0
  45. package/dist/generated/contract-schema.generated.js.map +1 -0
  46. package/dist/index.d.ts +18 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +26 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/live-copy-gate.d.ts +16 -0
  51. package/dist/live-copy-gate.d.ts.map +1 -0
  52. package/dist/live-copy-gate.js +135 -0
  53. package/dist/live-copy-gate.js.map +1 -0
  54. package/dist/messaging-kit.d.ts +113 -0
  55. package/dist/messaging-kit.d.ts.map +1 -0
  56. package/dist/messaging-kit.js +121 -0
  57. package/dist/messaging-kit.js.map +1 -0
  58. package/dist/passage.d.ts +2 -1
  59. package/dist/passage.d.ts.map +1 -1
  60. package/dist/passage.js +2 -1
  61. package/dist/passage.js.map +1 -1
  62. package/dist/plan-authority.d.ts +73 -0
  63. package/dist/plan-authority.d.ts.map +1 -0
  64. package/dist/plan-authority.js +126 -0
  65. package/dist/plan-authority.js.map +1 -0
  66. package/dist/plan-contract.d.ts +16 -0
  67. package/dist/plan-contract.d.ts.map +1 -0
  68. package/dist/plan-contract.js +33 -0
  69. package/dist/plan-contract.js.map +1 -0
  70. package/dist/plan-digest.d.ts +23 -0
  71. package/dist/plan-digest.d.ts.map +1 -0
  72. package/dist/plan-digest.js +82 -0
  73. package/dist/plan-digest.js.map +1 -0
  74. package/dist/plan-rules.d.ts +54 -0
  75. package/dist/plan-rules.d.ts.map +1 -0
  76. package/dist/plan-rules.js +145 -0
  77. package/dist/plan-rules.js.map +1 -0
  78. package/dist/render-registry-parity.d.ts +20 -0
  79. package/dist/render-registry-parity.d.ts.map +1 -0
  80. package/dist/render-registry-parity.js +45 -0
  81. package/dist/render-registry-parity.js.map +1 -0
  82. package/dist/resolve.d.ts +40 -6
  83. package/dist/resolve.d.ts.map +1 -1
  84. package/dist/resolve.js +144 -18
  85. package/dist/resolve.js.map +1 -1
  86. package/dist/scan.d.ts +32 -0
  87. package/dist/scan.d.ts.map +1 -1
  88. package/dist/scan.js +67 -6
  89. package/dist/scan.js.map +1 -1
  90. package/dist/schema.d.ts +1 -0
  91. package/dist/schema.d.ts.map +1 -1
  92. package/dist/schema.js +231 -5
  93. package/dist/schema.js.map +1 -1
  94. package/dist/site-identity.d.ts +88 -0
  95. package/dist/site-identity.d.ts.map +1 -0
  96. package/dist/site-identity.js +82 -0
  97. package/dist/site-identity.js.map +1 -0
  98. package/dist/treatment-word-budget.d.ts +31 -0
  99. package/dist/treatment-word-budget.d.ts.map +1 -0
  100. package/dist/treatment-word-budget.js +80 -0
  101. package/dist/treatment-word-budget.js.map +1 -0
  102. package/dist/types.d.ts +76 -7
  103. package/dist/types.d.ts.map +1 -1
  104. package/dist/types.js +9 -7
  105. package/dist/types.js.map +1 -1
  106. package/fit-signals.json +11 -0
  107. package/package.json +201 -11
  108. package/skill/SKILL.md +49 -0
  109. package/src/addressability.ts +186 -4
  110. package/src/approval-bypass.ts +2263 -0
  111. package/src/approval.ts +491 -0
  112. package/src/approve-cli.ts +474 -0
  113. package/src/cli.ts +274 -22
  114. package/src/field-options.ts +134 -0
  115. package/src/fold-wallpaper-gate.ts +29 -0
  116. package/src/front-door.check.ts +10 -0
  117. package/src/front-door.ts +312 -0
  118. package/src/generated/advisor-plan-contract.generated.ts +430 -0
  119. package/src/generated/contract-schema.generated.ts +520 -0
  120. package/src/index.ts +107 -1
  121. package/src/live-copy-gate.ts +150 -0
  122. package/src/messaging-kit.ts +195 -0
  123. package/src/passage.ts +2 -1
  124. package/src/plan-authority.ts +160 -0
  125. package/src/plan-contract.ts +45 -0
  126. package/src/plan-digest.ts +81 -0
  127. package/src/plan-rules.ts +179 -0
  128. package/src/render-registry-parity.ts +65 -0
  129. package/src/resolve.ts +185 -19
  130. package/src/scan.ts +97 -6
  131. package/src/schema.ts +247 -5
  132. package/src/site-identity.ts +125 -0
  133. package/src/treatment-word-budget.ts +100 -0
  134. package/src/types.ts +83 -7
  135. package/templates/front-door.en.json +426 -0
  136. package/CHANGELOG.md +0 -330
@@ -167,14 +167,24 @@ export interface AddressabilityScanOptions {
167
167
  skipDirs?: string[];
168
168
  /** Same mechanism `scan.ts`'s `ScanOptions.pathExclusions` uses — see `path-exclusions.ts`. */
169
169
  pathExclusions?: PathExclusion[];
170
+ /**
171
+ * Consumer-declared persistent chrome (site header, footer, skip link, nav
172
+ * labels) — shell or layout files scanned in addition to the directory walk.
173
+ * Paths are relative to `root` unless absolute. Each file must exist.
174
+ */
175
+ chromeFiles?: string[];
170
176
  }
171
- export type AddressabilityPosition = "markup-text" | "user-facing-attribute";
177
+ export type AddressabilityPosition = "markup-text" | "user-facing-attribute" | "object-literal-copy";
172
178
  export interface AddressabilityViolation {
173
179
  file: string;
174
180
  line: number;
175
181
  position: AddressabilityPosition;
176
182
  /** Set only for `"user-facing-attribute"` — which of the four this literal was the value of. */
177
183
  attribute?: "aria-label" | "placeholder" | "alt" | "title";
184
+ /** Set only for `"object-literal-copy"` — the property key this literal was the value of. */
185
+ objectKey?: string;
186
+ /** Set only for `"object-literal-copy"` — dotted/bracket path when nested under `items`/`nav`/`links`. */
187
+ keyPath?: string;
178
188
  /** The literal's own raw source text, for a human auditing the finding. */
179
189
  raw: string;
180
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"addressability.d.ts","sourceRoot":"","sources":["../src/addressability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6JG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAE1B,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI9F,MAAM,WAAW,yBAAyB;IACxC,sGAAsG;IACtG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,+FAA+F;IAC/F,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC;AAQD,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,uBAAuB,CAAC;AAE7E,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,sBAAsB,CAAC;IACjC,gGAAgG;IAChG,SAAS,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,KAAK,GAAG,OAAO,CAAC;IAC3D,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mLAAmL;IACnL,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,mJAAmJ;IACnJ,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,4IAA4I;IAC5I,SAAS,EAAE,2BAA2B,EAAE,CAAC;IACzC,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;CAC/C;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,yBAA8B,GAAG,wBAAwB,CAgGzH;AA+ID,UAAU,2BAA2B;IACnC,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,SAAS,EAAE,2BAA2B,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,2BAA2B,CA+G9G;AAID,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,UAAU,GAAG,eAAe,CAAC;AAE/E,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,SAAS,EAAE,2BAA2B,EAAE,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,wBAAwB,GAAG,wBAAwB,CAuC5F"}
1
+ {"version":3,"file":"addressability.d.ts","sourceRoot":"","sources":["../src/addressability.ts"],"names":[],"mappings":"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"}
@@ -156,8 +156,8 @@
156
156
  * - `"satisfied"` — at least one component scanned, every string
157
157
  * position classified, and no inline user-facing prose found.
158
158
  */
159
- import { readdirSync, readFileSync, statSync } from "node:fs";
160
- import { extname, join, relative, sep } from "node:path";
159
+ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
160
+ import { extname, isAbsolute, join, relative, resolve, sep } from "node:path";
161
161
  import { extractCopyCandidates } from "./scan.js";
162
162
  import { matchesPathExclusion, validatePathExclusions, } from "./path-exclusions.js";
163
163
  const DEFAULT_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx"];
@@ -251,6 +251,11 @@ export function scanAddressabilitySources(root, options = {}) {
251
251
  }
252
252
  }
253
253
  walk(root);
254
+ if (options.chromeFiles !== undefined) {
255
+ for (const chromePath of options.chromeFiles) {
256
+ scanAddressabilityChromeFile(root, chromePath, extensions, result);
257
+ }
258
+ }
254
259
  for (const exclusion of pathExclusionValidation.valid) {
255
260
  if ((matchCounts.get(exclusion) ?? 0) === 0) {
256
261
  result.pathExclusionFindings.push({
@@ -263,6 +268,47 @@ export function scanAddressabilitySources(root, options = {}) {
263
268
  }
264
269
  return result;
265
270
  }
271
+ function scanAddressabilityChromeFile(root, chromePath, extensions, result) {
272
+ const full = isAbsolute(chromePath) ? resolve(chromePath) : resolve(root, chromePath);
273
+ if (!existsSync(full)) {
274
+ throw new Error(`scanAddressabilitySources: chrome file "${chromePath}" does not exist (resolved "${full}")`);
275
+ }
276
+ let stat;
277
+ try {
278
+ stat = statSync(full);
279
+ }
280
+ catch (error) {
281
+ throw new Error(`scanAddressabilitySources: cannot read chrome file "${chromePath}": ${error instanceof Error ? error.message : String(error)}`);
282
+ }
283
+ if (!stat.isFile()) {
284
+ throw new Error(`scanAddressabilitySources: chrome path "${chromePath}" is not a file`);
285
+ }
286
+ const relPath = relative(root, full).split(sep).join("/");
287
+ const displayPath = relPath.length > 0 && !relPath.startsWith("..") ? relPath : chromePath;
288
+ const entryName = full.slice(full.lastIndexOf(sep) + 1);
289
+ if (!extensions.has(extname(entryName).toLowerCase())) {
290
+ throw new Error(`scanAddressabilitySources: chrome file "${chromePath}" has extension ${extname(entryName)} which is not in the scan extension set`);
291
+ }
292
+ if (SKIP_FILE_RE.test(entryName)) {
293
+ result.skippedByDesign.push({ file: displayPath, reason: "test-or-check-file" });
294
+ return;
295
+ }
296
+ let content;
297
+ try {
298
+ content = readFileSync(full, "utf8");
299
+ }
300
+ catch (error) {
301
+ throw new Error(`scanAddressabilitySources: cannot read chrome file "${full}": ${error instanceof Error ? error.message : String(error)}`);
302
+ }
303
+ const extracted = extractAddressabilityCandidates(content, displayPath);
304
+ if (extracted.parseFailure) {
305
+ result.parseFailures.push({ file: displayPath, detail: extracted.parseFailure });
306
+ return;
307
+ }
308
+ result.filesScanned++;
309
+ result.violations.push(...extracted.violations);
310
+ result.unchecked.push(...extracted.unchecked);
311
+ }
266
312
  // ------------------------------------------------------------- extraction
267
313
  /** `ariaLabel` -> `arialabel`, `aria-label` -> `arialabel` — the identical case/hyphen-insensitive normalization `scan.ts`'s own `normalizeIdentifier` performs (not exported, so reimplemented locally — a one-line heuristic, not worth a cross-file dependency). */
268
314
  function normalizeAttrName(name) {
@@ -342,6 +388,85 @@ const DESTRUCTURING_OR_PARAMETER_DEFAULT_RE = /[{(,]\s*(?:(?:"[^"]*"|'[^']*'|[A-
342
388
  * `DESTRUCTURING_OR_PARAMETER_DEFAULT_RE`'s own doc comment for exactly
343
389
  * what is and is not matched.
344
390
  */
391
+ /** Copy-bearing object-literal property keys (issue #1063) — normalized like `normalizeAttrName`. */
392
+ const COPY_BEARING_OBJECT_KEYS = new Set([
393
+ "label",
394
+ "title",
395
+ "cta",
396
+ "caption",
397
+ "heading",
398
+ "kicker",
399
+ "body",
400
+ "description",
401
+ "arialabel",
402
+ "text",
403
+ ]);
404
+ /** Non-copy object-literal keys — route targets, icons, tokens; not Writer surfaces. */
405
+ const ALLOWLISTED_OBJECT_LITERAL_KEYS = new Set([
406
+ "href",
407
+ "to",
408
+ "path",
409
+ "pathname",
410
+ "icon",
411
+ "iconname",
412
+ "slug",
413
+ "token",
414
+ "variant",
415
+ "size",
416
+ ]);
417
+ const OBJECT_LITERAL_CONTAINER_KEYS = ["items", "nav", "links"];
418
+ const OBJECT_LITERAL_PROP_NAME_RE = /(?:"([^"]+)"|'([^']+)'|([A-Za-z_$][A-Za-z0-9_$-]*))\s*:\s*$/;
419
+ function literalStartIndex(content, line, raw) {
420
+ const lines = content.split("\n");
421
+ const lineText = lines[line - 1];
422
+ if (lineText === undefined)
423
+ return undefined;
424
+ const col = lineText.indexOf(raw);
425
+ if (col === -1)
426
+ return undefined;
427
+ let start = 0;
428
+ for (let i = 0; i < line - 1; i++)
429
+ start += lines[i].length + 1;
430
+ return start + col;
431
+ }
432
+ function objectLiteralPropertyName(content, start) {
433
+ const from = Math.max(0, start - 120);
434
+ const before = content.slice(from, start);
435
+ const match = OBJECT_LITERAL_PROP_NAME_RE.exec(before);
436
+ if (!match)
437
+ return undefined;
438
+ return match[1] ?? match[2] ?? match[3];
439
+ }
440
+ function objectLiteralKeyPath(content, start, propName) {
441
+ const from = Math.max(0, start - 500);
442
+ const slice = content.slice(from, start);
443
+ for (const container of OBJECT_LITERAL_CONTAINER_KEYS) {
444
+ const re = new RegExp(`\\b${container}\\s*:\\s*\\[`, "g");
445
+ let lastIndex = -1;
446
+ let m;
447
+ while ((m = re.exec(slice)) !== null)
448
+ lastIndex = m.index;
449
+ if (lastIndex !== -1)
450
+ return `${container}[].${propName}`;
451
+ }
452
+ return propName;
453
+ }
454
+ /** Route/icon-shaped literal values that are never copy, regardless of key. */
455
+ function looksLikeAllowlistedConstantValue(raw) {
456
+ const quote = raw[0];
457
+ if (quote !== '"' && quote !== "'")
458
+ return false;
459
+ const text = raw.slice(1, -1).trim();
460
+ if (text.length === 0)
461
+ return false;
462
+ if (/^\/[^\s]*$/.test(text))
463
+ return true;
464
+ if (/^#[\w-]+$/.test(text))
465
+ return true;
466
+ if (/^https?:\/\//.test(text))
467
+ return true;
468
+ return false;
469
+ }
345
470
  function isDestructuringOrParameterDefault(lines, line, raw) {
346
471
  const lineText = lines[line - 1];
347
472
  if (lineText === undefined)
@@ -503,7 +628,46 @@ export function extractAddressabilityCandidates(content, filePath) {
503
628
  continue; // a default value the consumer can override, not a JSX attribute at all — see isDestructuringOrParameterDefault
504
629
  violations.push({ file: c.file, line: c.line, position: "user-facing-attribute", attribute, raw: c.raw });
505
630
  }
506
- // ---- position 3: everything else scan.ts kept as a real candidate —
631
+ // ---- position 3a: copy-bearing object-literal property values (issue
632
+ // #1063) — chrome config bags (`{ label: "...", href: "/join" }`) are
633
+ // Writer surfaces; allowlisted keys and route/icon-shaped values are not.
634
+ const objectLiteralClaimed = new Set();
635
+ for (const c of candidates) {
636
+ if (c.kind !== "string")
637
+ continue;
638
+ if (claimed.has(`${c.line}::${c.raw}`))
639
+ continue;
640
+ if (looksLikeUtilityClassList(c.raw))
641
+ continue;
642
+ const start = literalStartIndex(content, c.line, c.raw);
643
+ if (start === undefined)
644
+ continue;
645
+ const propName = objectLiteralPropertyName(content, start);
646
+ if (propName === undefined)
647
+ continue;
648
+ const normalizedProp = normalizeAttrName(propName);
649
+ if (ALLOWLISTED_OBJECT_LITERAL_KEYS.has(normalizedProp) || looksLikeAllowlistedConstantValue(c.raw)) {
650
+ objectLiteralClaimed.add(`${c.line}::${c.raw}`);
651
+ continue;
652
+ }
653
+ if (!COPY_BEARING_OBJECT_KEYS.has(normalizedProp))
654
+ continue;
655
+ if (isDestructuringOrParameterDefault(lines, c.line, c.raw))
656
+ continue;
657
+ if (!hasProse(c.raw))
658
+ continue;
659
+ const keyPath = objectLiteralKeyPath(content, start, propName);
660
+ objectLiteralClaimed.add(`${c.line}::${c.raw}`);
661
+ violations.push({
662
+ file: c.file,
663
+ line: c.line,
664
+ position: "object-literal-copy",
665
+ objectKey: propName,
666
+ keyPath,
667
+ raw: c.raw,
668
+ });
669
+ }
670
+ // ---- position 3b: everything else scan.ts kept as a real candidate —
507
671
  // never silently treated as clean, never treated as a violation either
508
672
  // — except a plain string shaped like a utility class LIST, which is
509
673
  // definitively not prose (see looksLikeUtilityClassList).
@@ -512,6 +676,8 @@ export function extractAddressabilityCandidates(content, filePath) {
512
676
  continue; // already position 1
513
677
  if (c.kind === "string" && claimed.has(`${c.line}::${c.raw}`))
514
678
  continue; // already position 2
679
+ if (c.kind === "string" && objectLiteralClaimed.has(`${c.line}::${c.raw}`))
680
+ continue;
515
681
  if (c.kind === "string" && looksLikeUtilityClassList(c.raw))
516
682
  continue; // a class-name list, not prose
517
683
  unchecked.push({
@@ -1 +1 @@
1
- {"version":3,"file":"addressability.js","sourceRoot":"","sources":["../src/addressability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addressability.js","sourceRoot":"","sources":["../src/addressability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * `scanApprovalBypass` and `checkApprovalBypass` — the APPROVAL-BYPASS gate:
3
+ * does consumer code route copy through the registry's approval lifecycle,
4
+ * or around it? Two patterns defeat that lifecycle while every other gate in
5
+ * this package stays green:
6
+ *
7
+ * 1. `approval-set-in-code` — the code itself declares approval: an object
8
+ * property or member assignment named `approvedBy` or
9
+ * `pendingOwnerReview`, or `status` set to the literal `"approved"`
10
+ * (`{ ...entry, status: "approved" }`, `entry.status = "approved"`). An
11
+ * approval typed into a component is an approval no owner ever gave.
12
+ * 2. `copy-read-without-resolver` — the code imports the registry file and
13
+ * reads its content directly (`registry.entries.map(...)`, a spread, any
14
+ * use other than the first argument of `createCopyResolver`,
15
+ * `resolveCopyRef`, or `validateCopyRegistryShape`, or of
16
+ * `parseCopyRegistry` only when its return value is passed to
17
+ * `createCopyResolver` or `resolveCopyRef`).
18
+ * A raw map built from the registry skips every lifecycle, staleness and
19
+ * delegate check the resolver performs.
20
+ *
21
+ * ONLY REGISTRY-COUPLED FILES ARE EXAMINED — a file that imports from
22
+ * `@clossys/writer` (any subpath) or imports the registry file. That keeps a
23
+ * domain model with its own unrelated `status: "approved"` out of scope. It
24
+ * is a STATED LIMIT, not an oversight: a file that copies registry data
25
+ * without importing either (pasted JSON, data fetched at runtime, a registry
26
+ * passed in from an uncoupled module) is never seen by this gate.
27
+ *
28
+ * NO PARSER LIBRARY and no second tokenizer: every comment, string, template,
29
+ * regex and JSX-text boundary comes from `scan.ts`'s `maskNonCode`. The
30
+ * patterns here are matched against its masked `code` (so a comment or a
31
+ * string can never match), and literal values are looked up through its
32
+ * `literals` list. The heuristics that remain are narrow and local; each
33
+ * known gap is listed beside the function that has it.
34
+ *
35
+ * ============================================================================
36
+ * THE TERNARY
37
+ * ============================================================================
38
+ *
39
+ * The same precedence `addressability.ts` uses (issue #407): a definite
40
+ * finding outranks an incomplete picture.
41
+ *
42
+ * - `"violated"` — at least one finding, regardless of unchecked positions.
43
+ * `reasons` still lists any coverage gap.
44
+ * - `"indeterminate"` — no finding, but an unchecked position (a dynamic or
45
+ * otherwise unresolvable registry load, a string naming the registry), a
46
+ * parse failure, or zero files scanned. Never a pass.
47
+ * - `"satisfied"` — at least one file scanned, nothing unchecked, no
48
+ * finding. Zero coupled files among ≥1 scanned file is satisfied.
49
+ */
50
+ import type { ParseFailure, SkippedFile } from "./scan.js";
51
+ export type { ParseFailure, SkippedFile } from "./scan.js";
52
+ export interface ApprovalBypassScanOptions {
53
+ /** The copy registry file. Absolute, or relative to the scan `root`. Must exist. */
54
+ registryPath: string;
55
+ /** File extensions to read, each including the leading dot. Default: `.ts`, `.tsx`, `.js`, `.jsx`. */
56
+ extensions?: string[];
57
+ /** Directory names never descended into. Default: node_modules, .git, dist, build, coverage. */
58
+ skipDirs?: string[];
59
+ }
60
+ export type ApprovalBypassRule = "approval-set-in-code" | "copy-read-without-resolver";
61
+ export interface ApprovalBypassFinding {
62
+ rule: ApprovalBypassRule;
63
+ severity: "error";
64
+ file: string;
65
+ line: number;
66
+ detail: string;
67
+ }
68
+ export interface ApprovalBypassUncheckedItem {
69
+ file: string;
70
+ line: number;
71
+ /** `"registry-dynamic-import"`, `"dynamic-import-non-literal"`, `"registry-require-unbound"`, `"require-non-literal"`, `"registry-reexport"` or `"registry-path-string"`. */
72
+ kind: string;
73
+ detail: string;
74
+ }
75
+ export interface ApprovalBypassScanResult {
76
+ /** Files successfully tokenized, coupled or not. Required to be > 0 for a satisfied verdict. */
77
+ filesScanned: number;
78
+ /** Root-relative paths of the files that were examined. */
79
+ coupledFiles: string[];
80
+ findings: ApprovalBypassFinding[];
81
+ unchecked: ApprovalBypassUncheckedItem[];
82
+ skippedByDesign: SkippedFile[];
83
+ parseFailures: ParseFailure[];
84
+ }
85
+ export type ApprovalBypassVerdict = "violated" | "indeterminate" | "satisfied";
86
+ export interface ApprovalBypassGateResult {
87
+ verdict: ApprovalBypassVerdict;
88
+ findings: ApprovalBypassFinding[];
89
+ unchecked: ApprovalBypassUncheckedItem[];
90
+ /** Why coverage is incomplete. Empty for `"satisfied"`; may be non-empty for `"violated"`. */
91
+ reasons: string[];
92
+ }
93
+ export interface ApprovalBypassExtractResult {
94
+ coupled: boolean;
95
+ findings: ApprovalBypassFinding[];
96
+ unchecked: ApprovalBypassUncheckedItem[];
97
+ parseFailure?: string;
98
+ }
99
+ /**
100
+ * Walks `root`, examining every registry-coupled source file (see
101
+ * `extractApprovalBypass`). FAILS CLOSED — throws a plain `Error` — on an
102
+ * unreadable directory or file and on a missing registry file: either one
103
+ * means the scan cannot say what it did not see.
104
+ */
105
+ export declare function scanApprovalBypass(root: string, options: ApprovalBypassScanOptions): ApprovalBypassScanResult;
106
+ /**
107
+ * Pure — no I/O beyond `existsSync`/`realpathSync` for relative-specifier
108
+ * resolution. Decides whether `content` is registry-coupled and, if so,
109
+ * reports every approval-bypass finding and unchecked position in it.
110
+ * `filePath` is the path reported in results (and picks JSX masking for a
111
+ * `.tsx`/`.jsx` name); `context.absoluteFilePath` is where relative
112
+ * specifiers resolve from.
113
+ */
114
+ export declare function extractApprovalBypass(content: string, filePath: string, context: {
115
+ registryPath: string;
116
+ absoluteFilePath: string;
117
+ }): ApprovalBypassExtractResult;
118
+ /** Pure — decides the ternary verdict from an already-computed scan. Never throws. See "THE TERNARY" above. */
119
+ export declare function checkApprovalBypass(scan: ApprovalBypassScanResult): ApprovalBypassGateResult;
120
+ //# sourceMappingURL=approval-bypass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-bypass.d.ts","sourceRoot":"","sources":["../src/approval-bypass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE3D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI3D,MAAM,WAAW,yBAAyB;IACxC,oFAAoF;IACpF,YAAY,EAAE,MAAM,CAAC;IACrB,sGAAsG;IACtG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG,4BAA4B,CAAC;AAEvF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,6KAA6K;IAC7K,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,gGAAgG;IAChG,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,SAAS,EAAE,2BAA2B,EAAE,CAAC;IACzC,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,eAAe,GAAG,WAAW,CAAC;AAE/E,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,SAAS,EAAE,2BAA2B,EAAE,CAAC;IACzC,8FAA8F;IAC9F,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,SAAS,EAAE,2BAA2B,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAmBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,GAAG,wBAAwB,CAsE7G;AA8pDD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAC1D,2BAA2B,CA0U7B;AAID,+GAA+G;AAC/G,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,wBAAwB,GAAG,wBAAwB,CAc5F"}