@opacedev/astro-ai-content-checker 0.3.1

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 (185) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/LICENSE +9 -0
  3. package/README.md +236 -0
  4. package/SBOM.cdx.json +172 -0
  5. package/SECURITY.md +9 -0
  6. package/THIRD_PARTY_NOTICES.md +36 -0
  7. package/dist/build-report-html.d.ts +3 -0
  8. package/dist/highlight.js +155 -0
  9. package/dist/index.d.ts +6 -0
  10. package/dist/index.js +43 -0
  11. package/dist/options.d.ts +21 -0
  12. package/dist/options.js +6 -0
  13. package/dist/receipt.d.ts +15 -0
  14. package/dist/receipt.js +100 -0
  15. package/dist/report.d.ts +55 -0
  16. package/dist/report.js +12 -0
  17. package/dist/sections.js +181 -0
  18. package/dist/share.d.ts +47 -0
  19. package/dist/share.js +72 -0
  20. package/dist/shared-EX54KI6H.js +1503 -0
  21. package/dist/shared-MMXWTX2U.js +43 -0
  22. package/dist/toolbar.js +13478 -0
  23. package/node_modules/@opacedev/ai-content-checker-browser/LICENSE +21 -0
  24. package/node_modules/@opacedev/ai-content-checker-browser/README.md +145 -0
  25. package/node_modules/@opacedev/ai-content-checker-browser/dist/dom/visible-text.d.ts +14 -0
  26. package/node_modules/@opacedev/ai-content-checker-browser/dist/dom/visible-text.js +47 -0
  27. package/node_modules/@opacedev/ai-content-checker-browser/dist/index.d.ts +3 -0
  28. package/node_modules/@opacedev/ai-content-checker-browser/dist/index.js +99 -0
  29. package/node_modules/@opacedev/ai-content-checker-browser/dist/worker/client.d.ts +12 -0
  30. package/node_modules/@opacedev/ai-content-checker-browser/dist/worker/client.js +17 -0
  31. package/node_modules/@opacedev/ai-content-checker-browser/dist/worker/entry.d.ts +1 -0
  32. package/node_modules/@opacedev/ai-content-checker-browser/dist/worker/entry.js +3984 -0
  33. package/node_modules/@opacedev/ai-content-checker-browser/dist/worker/protocol.d.ts +30 -0
  34. package/node_modules/@opacedev/ai-content-checker-browser/dist/worker/protocol.js +1 -0
  35. package/node_modules/@opacedev/ai-content-checker-browser/package.json +60 -0
  36. package/node_modules/@opacedev/ai-content-checker-contracts/LICENSE +21 -0
  37. package/node_modules/@opacedev/ai-content-checker-contracts/README.md +93 -0
  38. package/node_modules/@opacedev/ai-content-checker-contracts/dist/index.d.ts +58 -0
  39. package/node_modules/@opacedev/ai-content-checker-contracts/dist/index.js +17 -0
  40. package/node_modules/@opacedev/ai-content-checker-contracts/package.json +57 -0
  41. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/analysis-request.schema.d.ts +44 -0
  42. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/analysis-result.schema.d.ts +122 -0
  43. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/candidate.schema.d.ts +81 -0
  44. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/capabilities.schema.d.ts +24 -0
  45. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/checker-result.schema.d.ts +342 -0
  46. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/common.schema.d.ts +10 -0
  47. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/envelope.schema.d.ts +14 -0
  48. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/gate-result.schema.d.ts +19 -0
  49. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/integrity-receipt.schema.d.ts +122 -0
  50. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/job.schema.d.ts +188 -0
  51. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/method-result.schema.d.ts +39 -0
  52. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/pattern-finding.schema.d.ts +26 -0
  53. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/protected-span.schema.d.ts +35 -0
  54. package/node_modules/@opacedev/ai-content-checker-contracts/src/generated/rewrite-request.schema.d.ts +65 -0
  55. package/node_modules/@opacedev/ai-content-checker-contracts/src/index.ts +63 -0
  56. package/node_modules/@opacedev/ai-content-checker-contracts/src/semantic-validation.mjs +32 -0
  57. package/node_modules/@opacedev/ai-content-checker-core/LICENSE +21 -0
  58. package/node_modules/@opacedev/ai-content-checker-core/README.md +186 -0
  59. package/node_modules/@opacedev/ai-content-checker-core/dist/bundle.js +4744 -0
  60. package/node_modules/@opacedev/ai-content-checker-core/dist/capabilities.d.ts +16 -0
  61. package/node_modules/@opacedev/ai-content-checker-core/dist/capabilities.js +7 -0
  62. package/node_modules/@opacedev/ai-content-checker-core/dist/diff/diff.d.ts +17 -0
  63. package/node_modules/@opacedev/ai-content-checker-core/dist/diff/diff.js +76 -0
  64. package/node_modules/@opacedev/ai-content-checker-core/dist/fixes/preview.d.ts +27 -0
  65. package/node_modules/@opacedev/ai-content-checker-core/dist/fixes/preview.js +47 -0
  66. package/node_modules/@opacedev/ai-content-checker-core/dist/gates/policy.d.ts +14 -0
  67. package/node_modules/@opacedev/ai-content-checker-core/dist/gates/policy.js +16 -0
  68. package/node_modules/@opacedev/ai-content-checker-core/dist/index.d.ts +15 -0
  69. package/node_modules/@opacedev/ai-content-checker-core/dist/index.js +15 -0
  70. package/node_modules/@opacedev/ai-content-checker-core/dist/inspect.d.ts +8 -0
  71. package/node_modules/@opacedev/ai-content-checker-core/dist/inspect.js +84 -0
  72. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-gb-v1.d.ts +12 -0
  73. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-gb-v1.js +68 -0
  74. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v2-data.d.ts +73 -0
  75. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v2-data.js +499 -0
  76. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v2.d.ts +76 -0
  77. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v2.js +1067 -0
  78. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v3-data.d.ts +165 -0
  79. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v3-data.js +614 -0
  80. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v3.d.ts +19 -0
  81. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v3.js +542 -0
  82. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v4-corpus.d.ts +40 -0
  83. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v4-corpus.js +40 -0
  84. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v4-data.d.ts +138 -0
  85. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v4-data.js +200 -0
  86. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v4.d.ts +71 -0
  87. package/node_modules/@opacedev/ai-content-checker-core/dist/patterns/en-signals-v4.js +388 -0
  88. package/node_modules/@opacedev/ai-content-checker-core/dist/protected/extract.d.ts +17 -0
  89. package/node_modules/@opacedev/ai-content-checker-core/dist/protected/extract.js +75 -0
  90. package/node_modules/@opacedev/ai-content-checker-core/dist/protected/validate.d.ts +3 -0
  91. package/node_modules/@opacedev/ai-content-checker-core/dist/protected/validate.js +17 -0
  92. package/node_modules/@opacedev/ai-content-checker-core/dist/provenance/c2pa-text.d.ts +55 -0
  93. package/node_modules/@opacedev/ai-content-checker-core/dist/provenance/c2pa-text.js +86 -0
  94. package/node_modules/@opacedev/ai-content-checker-core/dist/receipts/build.d.ts +48 -0
  95. package/node_modules/@opacedev/ai-content-checker-core/dist/receipts/build.js +61 -0
  96. package/node_modules/@opacedev/ai-content-checker-core/dist/report/checker-result.d.ts +241 -0
  97. package/node_modules/@opacedev/ai-content-checker-core/dist/report/checker-result.js +419 -0
  98. package/node_modules/@opacedev/ai-content-checker-core/dist/source/offsets.d.ts +34 -0
  99. package/node_modules/@opacedev/ai-content-checker-core/dist/source/offsets.js +51 -0
  100. package/node_modules/@opacedev/ai-content-checker-core/dist/source/utf8.d.ts +3 -0
  101. package/node_modules/@opacedev/ai-content-checker-core/dist/source/utf8.js +58 -0
  102. package/node_modules/@opacedev/ai-content-checker-core/dist/source/visible-text.d.ts +12 -0
  103. package/node_modules/@opacedev/ai-content-checker-core/dist/source/visible-text.js +30 -0
  104. package/node_modules/@opacedev/ai-content-checker-core/dist/unicode/data.d.ts +22 -0
  105. package/node_modules/@opacedev/ai-content-checker-core/dist/unicode/data.js +137 -0
  106. package/node_modules/@opacedev/ai-content-checker-core/dist/unicode/inspect.d.ts +16 -0
  107. package/node_modules/@opacedev/ai-content-checker-core/dist/unicode/inspect.js +84 -0
  108. package/node_modules/@opacedev/ai-content-checker-core/dist/verdict/combine.d.ts +162 -0
  109. package/node_modules/@opacedev/ai-content-checker-core/dist/verdict/combine.js +501 -0
  110. package/node_modules/@opacedev/ai-content-checker-core/package.json +62 -0
  111. package/node_modules/canonicalize/LICENSE +201 -0
  112. package/node_modules/canonicalize/README.md +65 -0
  113. package/node_modules/canonicalize/bin/canonicalize.js +17 -0
  114. package/node_modules/canonicalize/lib/canonicalize.d.ts +2 -0
  115. package/node_modules/canonicalize/lib/canonicalize.js +74 -0
  116. package/node_modules/canonicalize/package.json +64 -0
  117. package/node_modules/entities/LICENSE +11 -0
  118. package/node_modules/entities/lib/decode.d.ts +211 -0
  119. package/node_modules/entities/lib/decode.d.ts.map +1 -0
  120. package/node_modules/entities/lib/decode.js +536 -0
  121. package/node_modules/entities/lib/decode.js.map +1 -0
  122. package/node_modules/entities/lib/decode_codepoint.d.ts +19 -0
  123. package/node_modules/entities/lib/decode_codepoint.d.ts.map +1 -0
  124. package/node_modules/entities/lib/decode_codepoint.js +76 -0
  125. package/node_modules/entities/lib/decode_codepoint.js.map +1 -0
  126. package/node_modules/entities/lib/encode.d.ts +22 -0
  127. package/node_modules/entities/lib/encode.d.ts.map +1 -0
  128. package/node_modules/entities/lib/encode.js +77 -0
  129. package/node_modules/entities/lib/encode.js.map +1 -0
  130. package/node_modules/entities/lib/escape.d.ts +43 -0
  131. package/node_modules/entities/lib/escape.d.ts.map +1 -0
  132. package/node_modules/entities/lib/escape.js +122 -0
  133. package/node_modules/entities/lib/escape.js.map +1 -0
  134. package/node_modules/entities/lib/esm/decode.d.ts +211 -0
  135. package/node_modules/entities/lib/esm/decode.d.ts.map +1 -0
  136. package/node_modules/entities/lib/esm/decode.js +496 -0
  137. package/node_modules/entities/lib/esm/decode.js.map +1 -0
  138. package/node_modules/entities/lib/esm/decode_codepoint.d.ts +19 -0
  139. package/node_modules/entities/lib/esm/decode_codepoint.d.ts.map +1 -0
  140. package/node_modules/entities/lib/esm/decode_codepoint.js +71 -0
  141. package/node_modules/entities/lib/esm/decode_codepoint.js.map +1 -0
  142. package/node_modules/entities/lib/esm/encode.d.ts +22 -0
  143. package/node_modules/entities/lib/esm/encode.d.ts.map +1 -0
  144. package/node_modules/entities/lib/esm/encode.js +69 -0
  145. package/node_modules/entities/lib/esm/encode.js.map +1 -0
  146. package/node_modules/entities/lib/esm/escape.d.ts +43 -0
  147. package/node_modules/entities/lib/esm/escape.d.ts.map +1 -0
  148. package/node_modules/entities/lib/esm/escape.js +116 -0
  149. package/node_modules/entities/lib/esm/escape.js.map +1 -0
  150. package/node_modules/entities/lib/esm/generated/decode-data-html.d.ts +3 -0
  151. package/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map +1 -0
  152. package/node_modules/entities/lib/esm/generated/decode-data-html.js +7 -0
  153. package/node_modules/entities/lib/esm/generated/decode-data-html.js.map +1 -0
  154. package/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts +3 -0
  155. package/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map +1 -0
  156. package/node_modules/entities/lib/esm/generated/decode-data-xml.js +7 -0
  157. package/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +1 -0
  158. package/node_modules/entities/lib/esm/generated/encode-html.d.ts +8 -0
  159. package/node_modules/entities/lib/esm/generated/encode-html.d.ts.map +1 -0
  160. package/node_modules/entities/lib/esm/generated/encode-html.js +10 -0
  161. package/node_modules/entities/lib/esm/generated/encode-html.js.map +1 -0
  162. package/node_modules/entities/lib/esm/index.d.ts +96 -0
  163. package/node_modules/entities/lib/esm/index.d.ts.map +1 -0
  164. package/node_modules/entities/lib/esm/index.js +99 -0
  165. package/node_modules/entities/lib/esm/index.js.map +1 -0
  166. package/node_modules/entities/lib/esm/package.json +1 -0
  167. package/node_modules/entities/lib/generated/decode-data-html.d.ts +3 -0
  168. package/node_modules/entities/lib/generated/decode-data-html.d.ts.map +1 -0
  169. package/node_modules/entities/lib/generated/decode-data-html.js +9 -0
  170. package/node_modules/entities/lib/generated/decode-data-html.js.map +1 -0
  171. package/node_modules/entities/lib/generated/decode-data-xml.d.ts +3 -0
  172. package/node_modules/entities/lib/generated/decode-data-xml.d.ts.map +1 -0
  173. package/node_modules/entities/lib/generated/decode-data-xml.js +9 -0
  174. package/node_modules/entities/lib/generated/decode-data-xml.js.map +1 -0
  175. package/node_modules/entities/lib/generated/encode-html.d.ts +8 -0
  176. package/node_modules/entities/lib/generated/encode-html.d.ts.map +1 -0
  177. package/node_modules/entities/lib/generated/encode-html.js +12 -0
  178. package/node_modules/entities/lib/generated/encode-html.js.map +1 -0
  179. package/node_modules/entities/lib/index.d.ts +96 -0
  180. package/node_modules/entities/lib/index.d.ts.map +1 -0
  181. package/node_modules/entities/lib/index.js +126 -0
  182. package/node_modules/entities/lib/index.js.map +1 -0
  183. package/node_modules/entities/package.json +90 -0
  184. package/node_modules/entities/readme.md +122 -0
  185. package/package.json +91 -0
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Rule data for the en-signals 2026.08.3 harvest merge.
3
+ *
4
+ * Sources merged here (see research/AI-TELLS-MEGA-PACK.md, research/
5
+ * ai-tells-pack-seed.json `tells-seed:2026.08.1`, and research/
6
+ * OWNER-DOCS-TELLS.md):
7
+ * - Tier A tells ship at their stated severity.
8
+ * - Tier B tells ship at low severity with `corroboration: true` metadata —
9
+ * they are weak alone and only meaningful alongside other findings.
10
+ * - Tier C tells are NOT implemented; they are recorded in EXCLUDED_TELLS so
11
+ * coverage is auditable.
12
+ *
13
+ * Binding corrections from the research (do not "fix" these without reading
14
+ * the mega-pack):
15
+ * - No naive hedging rule: epistemic hedges DECREASED in post-LLM text
16
+ * (arXiv:2603.16131, 2505.09662); a hedge-word counter fires backwards.
17
+ * - Question-heading / uniform-FAQ shapes stay corroboration-weight only:
18
+ * SEO/AEO guides teach humans the identical template.
19
+ * - Stylometric measures never dominate the document score (cap applied in
20
+ * en-signals-v2.ts) — the Stanford TOEFL study found >50% of genuine
21
+ * non-native essays falsely flagged by stylometric detectors.
22
+ *
23
+ * Licensing: regex/list data here is either (a) adapted from Apache-2.0/MIT
24
+ * sources (sam-paech/antislop-sampler, slop-forensics, SLOP_Detector,
25
+ * hwajongpark/slop-gate, avectats7/anti-ai-writing, kjmagnan1s/anti-slop,
26
+ * aplaceforallmystuff/claude-slop-detector), (b) uncopyrightable facts from
27
+ * academic papers (Liang et al. 2024, Kobak et al. 2025, Juzek & Ward 2025,
28
+ * Reinhart et al. PNAS 2025, Pew 2026), (c) independently re-expressed from
29
+ * CC BY-SA Wikipedia guidance, or (d) the owner's own documents. AGPL
30
+ * (AlpinDale/gptslop) and unlicensed (jalaalrd) lists were NOT copied; where
31
+ * the same observations appear they were reimplemented from the underlying
32
+ * facts. See THIRD_PARTY_NOTICES.md.
33
+ *
34
+ * Everything remains Tier B evidence in BRIEF.md §21 terms: editorial hints
35
+ * about style — never proof of authorship. The artefact-forensics category is
36
+ * the strongest evidence class (near-zero false positives, model-attributing)
37
+ * but is still reported as evidence, not verdict.
38
+ */
39
+ export type RuleEra = "2023" | "2024-25" | "2025-26" | "evergreen";
40
+ export interface RuleEraInfo {
41
+ era: RuleEra;
42
+ attribution?: "chatgpt" | "claude" | "gemini" | "grok" | "multi";
43
+ }
44
+ export declare const RULE_ERA: Record<string, RuleEraInfo>;
45
+ /** Categories whose findings are corroboration-weight only (research Tier B). */
46
+ export declare const CORROBORATION_CATEGORIES: ReadonlySet<string>;
47
+ /**
48
+ * Tier-A artefact-forensics categories that alone justify flooring the
49
+ * classification at mixed_signals (near-zero FP; none fired on any human
50
+ * control in the evaluation).
51
+ */
52
+ export declare const ARTEFACT_CORE_CATEGORIES: ReadonlySet<string>;
53
+ /**
54
+ * Artefact-adjacent categories that count toward the floor only when
55
+ * co-occurring with other artefact evidence — the evaluation kept
56
+ * arrow-decoration corroboration-only on its own (arrows are common in
57
+ * genuine technical notes; eval §4b).
58
+ */
59
+ export declare const ARTEFACT_SUPPORT_CATEGORIES: ReadonlySet<string>;
60
+ /**
61
+ * Chat-export formatting furniture: three or more of these together form the
62
+ * formatting-cluster compound (eval §4a item 4; evidence opace-openai-006).
63
+ */
64
+ export declare const FORMATTING_CLUSTER_CATEGORIES: ReadonlySet<string>;
65
+ export declare const V6_FURNITURE_THRESHOLDS: {
66
+ /** R5: bullet lines per 1,000 words above which bullets alone open the gate. */
67
+ readonly bulletsPer1000: 10.75;
68
+ };
69
+ /**
70
+ * Stylometric measurement categories. Their combined contribution to the
71
+ * document score is capped in en-signals-v2.ts so stylometrics can never
72
+ * dominate a verdict (research correction: non-native-writer false-positive
73
+ * landmine; Stanford TOEFL study).
74
+ */
75
+ export declare const STYLOMETRIC_CATEGORIES: ReadonlySet<string>;
76
+ export interface AttributedPattern {
77
+ pattern: RegExp;
78
+ attribution: string;
79
+ }
80
+ export declare const AI_CITATION_TOKENS: readonly AttributedPattern[];
81
+ export declare const REASONING_LEAKS: readonly RegExp[];
82
+ export declare const PLACEHOLDER_TOKENS: readonly RegExp[];
83
+ export declare const PUA_RANGE_RE: RegExp;
84
+ export declare const MATH_ALPHANUMERIC_RE: RegExp;
85
+ /** Spaced arrow used as a prose connector ("input → output"). */
86
+ export declare const ARROW_CONNECTOR_RE: RegExp;
87
+ export declare const ESCAPED_MARKUP_LITERALS: readonly RegExp[];
88
+ export declare const NEG_PARALLELISM_RE: RegExp;
89
+ /** "Not X. Not Y. Just Z." tripled negation (ChatGPT-family favourite). */
90
+ export declare const TRIPLED_NEGATION_RE: RegExp;
91
+ /** The rigid "Despite challenges … continues to thrive" essay arc. */
92
+ export declare const DESPITE_CHALLENGES_RE: RegExp;
93
+ /** Figurative metaphor cluster — flag 2+ DISTINCT items per document. */
94
+ export declare const METAPHOR_CLUSTER_RES: readonly RegExp[];
95
+ /**
96
+ * Sentence-final present-participle significance tail (Reinhart et al. PNAS
97
+ * 2025; WP:SUPERFICIAL). Flagged only at 3+ per document — one -ing tail is
98
+ * ordinary English.
99
+ */
100
+ export declare const PARTICIPIAL_TAIL_RE: RegExp;
101
+ /**
102
+ * Focal-word density (Juzek & Ward COLING 2025; Kobak Science Advances 2025;
103
+ * Liang ICML 2024; Pew 2026 — the triple-validated core lexicon). A DENSITY
104
+ * rule: fires once per document when 3+ hits land at 3+ per 1,000 words.
105
+ */
106
+ export declare const FOCAL_WORD_RE: RegExp;
107
+ export declare const OWNER_PHRASES: readonly RegExp[];
108
+ /** Power verb within a few tokens of an intangible buzz-adjective (owner §3e). */
109
+ export declare const POWER_VERB_COMPOUND_RE: RegExp;
110
+ /** ", leading to increased/improved X" outcome tail (owner §3f). */
111
+ export declare const OUTCOME_TAIL_RE: RegExp;
112
+ /** Compound marketing conclusion: "by following these steps … boost/improve". */
113
+ export declare const CONCLUSION_CTA_RE: RegExp;
114
+ export declare const LIANG_CLUSTER_RE: RegExp;
115
+ export declare const KOBAK_CLUSTER_RE: RegExp;
116
+ export declare const PROMO_TRAVEL_RE: RegExp;
117
+ export declare const PIVOTAL_ROLE_RE: RegExp;
118
+ export declare const LEGACY_FRAMING_RE: RegExp;
119
+ export declare const NOTABILITY_CANNED_RE: RegExp;
120
+ export declare const BUZZWORD_PHRASES: readonly RegExp[];
121
+ export declare const FAUX_INSIGHT_RE: RegExp;
122
+ /** "The result? A platform that scales." — flagged at 2+ per document. */
123
+ export declare const RHETORICAL_QA_RE: RegExp;
124
+ export declare const DIDACTIC_NOTE_RE: RegExp;
125
+ export declare const NARRATIVE_CLICHE_RE: RegExp;
126
+ export declare const VALUABLE_INSIGHTS_RE: RegExp;
127
+ /** Copula-avoidance alternatives (Geng & Trotta arXiv:2404.08627). */
128
+ export declare const COPULA_ALTERNATIVE_RE: RegExp;
129
+ export declare const BOLD_LABEL_BULLET_RE: RegExp;
130
+ export declare const EMOJI_DECOR_RE: RegExp;
131
+ export declare const RITUAL_HEADING_RE: RegExp;
132
+ /** ≤4-word staccato fragment run threshold is 3 consecutive. */
133
+ export declare const STACCATO_MAX_WORDS = 4;
134
+ export declare const TRANSITION_OPENER_RE: RegExp;
135
+ /** Fiction-lane packs (reimplemented from public observations; the AGPL
136
+ * claudeslop.yaml list was NOT copied — see licensing header). */
137
+ export declare const FICTION_CLAUDEISM_RE: RegExp;
138
+ export declare const FICTION_PROMPTONYM_RE: RegExp;
139
+ export declare const FICTION_SLOP_RE: RegExp;
140
+ export declare const OWNER_PHRASES_B: readonly RegExp[];
141
+ /** Owner ban-list vocabulary, tier B (2+ distinct per document). */
142
+ export declare const OWNER_VOCAB_B_RE: RegExp;
143
+ export declare const DIRECTIVE_COLON_BULLET_RE: RegExp;
144
+ export declare const TEACH_PREACH_HEADING_RE: RegExp;
145
+ export declare const BY_VING_TEMPLATE_RE: RegExp;
146
+ /** Passive-voice heuristic: be-form + past participle. */
147
+ export declare const PASSIVE_RE: RegExp;
148
+ export declare const V3_ISSUE_WEIGHTS: Record<string, number>;
149
+ export interface V3CategoryMeta {
150
+ severity: "note" | "low" | "medium" | "high";
151
+ message: string;
152
+ suggestion: string;
153
+ }
154
+ export declare const V3_CATEGORY_META: Record<string, V3CategoryMeta>;
155
+ export interface ExcludedTell {
156
+ id: string;
157
+ reason: string;
158
+ }
159
+ /**
160
+ * Harvest tells deliberately NOT implemented as user-facing rules. Each entry
161
+ * names the seed/owner id and the reason (research tier C, correction, gate
162
+ * the engine cannot provide, or licensing). Kept exported so coverage of the
163
+ * research harvest is auditable in code.
164
+ */
165
+ export declare const EXCLUDED_TELLS: readonly ExcludedTell[];