chaffjs 0.19.0 → 0.20.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.
- package/README.md +86 -8
- package/dist/baseline.d.ts +11 -2
- package/dist/baseline.d.ts.map +1 -1
- package/dist/baseline.js +13 -4
- package/dist/baseline.js.map +1 -1
- package/dist/check-source.d.ts +32 -0
- package/dist/check-source.d.ts.map +1 -0
- package/dist/check-source.js +50 -0
- package/dist/check-source.js.map +1 -0
- package/dist/checks.js +3 -3
- package/dist/checks.js.map +1 -1
- package/dist/cli-args.d.ts +4 -0
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +6 -1
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-text.d.ts +3 -2
- package/dist/cli-text.d.ts.map +1 -1
- package/dist/cli-text.js +21 -4
- package/dist/cli-text.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +41 -44
- package/dist/cli.js.map +1 -1
- package/dist/commands/compare.d.ts +3 -0
- package/dist/commands/compare.d.ts.map +1 -1
- package/dist/commands/compare.js +7 -5
- package/dist/commands/compare.js.map +1 -1
- package/dist/commands/eval.js +2 -2
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/fix-plan.d.ts +1 -1
- package/dist/commands/fix-plan.d.ts.map +1 -1
- package/dist/commands/fix-plan.js +3 -1
- package/dist/commands/fix-plan.js.map +1 -1
- package/dist/commands/grade-baseline.d.ts +15 -0
- package/dist/commands/grade-baseline.d.ts.map +1 -0
- package/dist/commands/grade-baseline.js +38 -0
- package/dist/commands/grade-baseline.js.map +1 -0
- package/dist/commands/grade.d.ts +19 -0
- package/dist/commands/grade.d.ts.map +1 -0
- package/dist/commands/grade.js +160 -0
- package/dist/commands/grade.js.map +1 -0
- package/dist/commands/outline.d.ts +2 -2
- package/dist/commands/outline.d.ts.map +1 -1
- package/dist/commands/outline.js +4 -3
- package/dist/commands/outline.js.map +1 -1
- package/dist/commands/read-document.d.ts +7 -4
- package/dist/commands/read-document.d.ts.map +1 -1
- package/dist/commands/read-document.js +9 -8
- package/dist/commands/read-document.js.map +1 -1
- package/dist/commands/suppressions.d.ts +2 -2
- package/dist/commands/suppressions.d.ts.map +1 -1
- package/dist/commands/suppressions.js +2 -2
- package/dist/commands/suppressions.js.map +1 -1
- package/dist/commands/test.js +2 -2
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/tree.d.ts +2 -0
- package/dist/commands/tree.d.ts.map +1 -1
- package/dist/commands/tree.js +19 -12
- package/dist/commands/tree.js.map +1 -1
- package/dist/compare/distinct.d.ts.map +1 -1
- package/dist/compare/distinct.js +8 -2
- package/dist/compare/distinct.js.map +1 -1
- package/dist/compare/proper-nouns.d.ts +2 -0
- package/dist/compare/proper-nouns.d.ts.map +1 -1
- package/dist/compare/proper-nouns.js +9 -6
- package/dist/compare/proper-nouns.js.map +1 -1
- package/dist/config/load.d.ts +4 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +4 -3
- package/dist/config/load.js.map +1 -1
- package/dist/config/yaml-file.d.ts +22 -0
- package/dist/config/yaml-file.d.ts.map +1 -0
- package/dist/config/yaml-file.js +59 -0
- package/dist/config/yaml-file.js.map +1 -0
- package/dist/correction-edit.d.ts +20 -0
- package/dist/correction-edit.d.ts.map +1 -0
- package/dist/correction-edit.js +34 -0
- package/dist/correction-edit.js.map +1 -0
- package/dist/cross-run.d.ts +15 -0
- package/dist/cross-run.d.ts.map +1 -0
- package/dist/cross-run.js +73 -0
- package/dist/cross-run.js.map +1 -0
- package/dist/cross-variants.d.ts +26 -0
- package/dist/cross-variants.d.ts.map +1 -0
- package/dist/cross-variants.js +40 -0
- package/dist/cross-variants.js.map +1 -0
- package/dist/cross-votes.d.ts +17 -0
- package/dist/cross-votes.d.ts.map +1 -0
- package/dist/cross-votes.js +24 -0
- package/dist/cross-votes.js.map +1 -0
- package/dist/date-format.d.ts +33 -0
- package/dist/date-format.d.ts.map +1 -0
- package/dist/date-format.js +87 -0
- package/dist/date-format.js.map +1 -0
- package/dist/derived/date-arithmetic.d.ts +22 -0
- package/dist/derived/date-arithmetic.d.ts.map +1 -0
- package/dist/derived/date-arithmetic.js +48 -0
- package/dist/derived/date-arithmetic.js.map +1 -0
- package/dist/derived/durations.d.ts +25 -0
- package/dist/derived/durations.d.ts.map +1 -0
- package/dist/derived/durations.js +38 -0
- package/dist/derived/durations.js.map +1 -0
- package/dist/derived/elapsed.d.ts +41 -0
- package/dist/derived/elapsed.d.ts.map +1 -0
- package/dist/derived/elapsed.js +66 -0
- package/dist/derived/elapsed.js.map +1 -0
- package/dist/derived/relative-dates.d.ts +35 -0
- package/dist/derived/relative-dates.d.ts.map +1 -0
- package/dist/derived/relative-dates.js +65 -0
- package/dist/derived/relative-dates.js.map +1 -0
- package/dist/derived/sentence-buckets.d.ts +4 -0
- package/dist/derived/sentence-buckets.d.ts.map +1 -0
- package/dist/derived/sentence-buckets.js +34 -0
- package/dist/derived/sentence-buckets.js.map +1 -0
- package/dist/detectors/absolute-exception.d.ts +4 -0
- package/dist/detectors/absolute-exception.d.ts.map +1 -0
- package/dist/detectors/absolute-exception.js +86 -0
- package/dist/detectors/absolute-exception.js.map +1 -0
- package/dist/detectors/abstract-length.d.ts +24 -0
- package/dist/detectors/abstract-length.d.ts.map +1 -0
- package/dist/detectors/abstract-length.js +108 -0
- package/dist/detectors/abstract-length.js.map +1 -0
- package/dist/detectors/ai-phrasing.d.ts +11 -2
- package/dist/detectors/ai-phrasing.d.ts.map +1 -1
- package/dist/detectors/ai-phrasing.js +9 -13
- package/dist/detectors/ai-phrasing.js.map +1 -1
- package/dist/detectors/ai-structure.d.ts +7 -0
- package/dist/detectors/ai-structure.d.ts.map +1 -0
- package/dist/detectors/ai-structure.js +26 -0
- package/dist/detectors/ai-structure.js.map +1 -0
- package/dist/detectors/blank-structure.d.ts +13 -0
- package/dist/detectors/blank-structure.d.ts.map +1 -0
- package/dist/detectors/blank-structure.js +124 -0
- package/dist/detectors/blank-structure.js.map +1 -0
- package/dist/detectors/chat-citation.d.ts +18 -0
- package/dist/detectors/chat-citation.d.ts.map +1 -0
- package/dist/detectors/chat-citation.js +41 -0
- package/dist/detectors/chat-citation.js.map +1 -0
- package/dist/detectors/citation-entry.d.ts +32 -0
- package/dist/detectors/citation-entry.d.ts.map +1 -0
- package/dist/detectors/citation-entry.js +62 -0
- package/dist/detectors/citation-entry.js.map +1 -0
- package/dist/detectors/citation-marks.d.ts +43 -0
- package/dist/detectors/citation-marks.d.ts.map +1 -0
- package/dist/detectors/citation-marks.js +151 -0
- package/dist/detectors/citation-marks.js.map +1 -0
- package/dist/detectors/citation-style.d.ts +16 -0
- package/dist/detectors/citation-style.d.ts.map +1 -0
- package/dist/detectors/citation-style.js +39 -0
- package/dist/detectors/citation-style.js.map +1 -0
- package/dist/detectors/cross-link.d.ts +15 -0
- package/dist/detectors/cross-link.d.ts.map +1 -0
- package/dist/detectors/cross-link.js +74 -0
- package/dist/detectors/cross-link.js.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.d.ts +3 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.d.ts.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.js +3 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.js.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.d.ts +3 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.d.ts.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.js +3 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.js.map +1 -0
- package/dist/detectors/cross-variant.d.ts +4 -0
- package/dist/detectors/cross-variant.d.ts.map +1 -0
- package/dist/detectors/cross-variant.js +62 -0
- package/dist/detectors/cross-variant.js.map +1 -0
- package/dist/detectors/date-format.d.ts +3 -0
- package/dist/detectors/date-format.d.ts.map +1 -0
- package/dist/detectors/date-format.js +26 -0
- package/dist/detectors/date-format.js.map +1 -0
- package/dist/detectors/date-year.d.ts +23 -0
- package/dist/detectors/date-year.d.ts.map +1 -0
- package/dist/detectors/date-year.js +71 -0
- package/dist/detectors/date-year.js.map +1 -0
- package/dist/detectors/derived-numbers.d.ts +6 -0
- package/dist/detectors/derived-numbers.d.ts.map +1 -0
- package/dist/detectors/derived-numbers.js +155 -0
- package/dist/detectors/derived-numbers.js.map +1 -0
- package/dist/detectors/document-shape.d.ts +18 -0
- package/dist/detectors/document-shape.d.ts.map +1 -0
- package/dist/detectors/document-shape.js +94 -0
- package/dist/detectors/document-shape.js.map +1 -0
- package/dist/detectors/emoji-heading.d.ts +7 -0
- package/dist/detectors/emoji-heading.d.ts.map +1 -0
- package/dist/detectors/emoji-heading.js +14 -0
- package/dist/detectors/emoji-heading.js.map +1 -0
- package/dist/detectors/fact-consistency.d.ts +8 -0
- package/dist/detectors/fact-consistency.d.ts.map +1 -0
- package/dist/detectors/fact-consistency.js +44 -0
- package/dist/detectors/fact-consistency.js.map +1 -0
- package/dist/detectors/figure-order.d.ts +28 -0
- package/dist/detectors/figure-order.d.ts.map +1 -0
- package/dist/detectors/figure-order.js +65 -0
- package/dist/detectors/figure-order.js.map +1 -0
- package/dist/detectors/heading-numbering.d.ts +7 -0
- package/dist/detectors/heading-numbering.d.ts.map +1 -0
- package/dist/detectors/heading-numbering.js +34 -0
- package/dist/detectors/heading-numbering.js.map +1 -0
- package/dist/detectors/index.d.ts +3 -1
- package/dist/detectors/index.d.ts.map +1 -1
- package/dist/detectors/index.js +9 -140
- package/dist/detectors/index.js.map +1 -1
- package/dist/detectors/invisible-character.js +3 -3
- package/dist/detectors/invisible-character.js.map +1 -1
- package/dist/detectors/katakana-density.d.ts +11 -0
- package/dist/detectors/katakana-density.d.ts.map +1 -0
- package/dist/detectors/katakana-density.js +47 -0
- package/dist/detectors/katakana-density.js.map +1 -0
- package/dist/detectors/known-correction.d.ts +7 -0
- package/dist/detectors/known-correction.d.ts.map +1 -0
- package/dist/detectors/known-correction.js +63 -0
- package/dist/detectors/known-correction.js.map +1 -0
- package/dist/detectors/lexicon-match.js +1 -1
- package/dist/detectors/lexicon-match.js.map +1 -1
- package/dist/detectors/lexicon.d.ts +3 -0
- package/dist/detectors/lexicon.d.ts.map +1 -1
- package/dist/detectors/lexicon.js +3 -0
- package/dist/detectors/lexicon.js.map +1 -1
- package/dist/detectors/list-parallel.d.ts +12 -0
- package/dist/detectors/list-parallel.d.ts.map +1 -0
- package/dist/detectors/list-parallel.js +135 -0
- package/dist/detectors/list-parallel.js.map +1 -0
- package/dist/detectors/long-vowel.d.ts +17 -1
- package/dist/detectors/long-vowel.d.ts.map +1 -1
- package/dist/detectors/long-vowel.js +4 -4
- package/dist/detectors/long-vowel.js.map +1 -1
- package/dist/detectors/misuse-match.d.ts +7 -0
- package/dist/detectors/misuse-match.d.ts.map +1 -0
- package/dist/detectors/misuse-match.js +23 -0
- package/dist/detectors/misuse-match.js.map +1 -0
- package/dist/detectors/modal-conflict.d.ts +3 -1
- package/dist/detectors/modal-conflict.d.ts.map +1 -1
- package/dist/detectors/modal-conflict.js +1 -1
- package/dist/detectors/modal-conflict.js.map +1 -1
- package/dist/detectors/next-word.d.ts +22 -0
- package/dist/detectors/next-word.d.ts.map +1 -0
- package/dist/detectors/next-word.js +125 -0
- package/dist/detectors/next-word.js.map +1 -0
- package/dist/detectors/number-style.d.ts +31 -0
- package/dist/detectors/number-style.d.ts.map +1 -0
- package/dist/detectors/number-style.js +182 -0
- package/dist/detectors/number-style.js.map +1 -0
- package/dist/detectors/number-unit.d.ts +35 -0
- package/dist/detectors/number-unit.d.ts.map +1 -0
- package/dist/detectors/number-unit.js +121 -0
- package/dist/detectors/number-unit.js.map +1 -0
- package/dist/detectors/orthographic-variant.d.ts +8 -0
- package/dist/detectors/orthographic-variant.d.ts.map +1 -0
- package/dist/detectors/orthographic-variant.js +130 -0
- package/dist/detectors/orthographic-variant.js.map +1 -0
- package/dist/detectors/paragraph-restatement.d.ts +11 -0
- package/dist/detectors/paragraph-restatement.d.ts.map +1 -0
- package/dist/detectors/paragraph-restatement.js +61 -0
- package/dist/detectors/paragraph-restatement.js.map +1 -0
- package/dist/detectors/paragraph-run.d.ts +7 -0
- package/dist/detectors/paragraph-run.d.ts.map +1 -0
- package/dist/detectors/paragraph-run.js +25 -0
- package/dist/detectors/paragraph-run.js.map +1 -0
- package/dist/detectors/person-consistency.d.ts +7 -0
- package/dist/detectors/person-consistency.d.ts.map +1 -0
- package/dist/detectors/person-consistency.js +25 -0
- package/dist/detectors/person-consistency.js.map +1 -0
- package/dist/detectors/placeholder-text.d.ts +1 -1
- package/dist/detectors/placeholder-text.d.ts.map +1 -1
- package/dist/detectors/placeholder-text.js +54 -4
- package/dist/detectors/placeholder-text.js.map +1 -1
- package/dist/detectors/reference-text.d.ts +6 -0
- package/dist/detectors/reference-text.d.ts.map +1 -0
- package/dist/detectors/reference-text.js +38 -0
- package/dist/detectors/reference-text.js.map +1 -0
- package/dist/detectors/registry/absolute-exception.d.ts +3 -0
- package/dist/detectors/registry/absolute-exception.d.ts.map +1 -0
- package/dist/detectors/registry/absolute-exception.js +3 -0
- package/dist/detectors/registry/absolute-exception.js.map +1 -0
- package/dist/detectors/registry/abstract-length.d.ts +3 -0
- package/dist/detectors/registry/abstract-length.d.ts.map +1 -0
- package/dist/detectors/registry/abstract-length.js +3 -0
- package/dist/detectors/registry/abstract-length.js.map +1 -0
- package/dist/detectors/registry/acronym-expansion-conflict.d.ts +3 -0
- package/dist/detectors/registry/acronym-expansion-conflict.d.ts.map +1 -0
- package/dist/detectors/registry/acronym-expansion-conflict.js +3 -0
- package/dist/detectors/registry/acronym-expansion-conflict.js.map +1 -0
- package/dist/detectors/registry/adverb-density.d.ts +3 -0
- package/dist/detectors/registry/adverb-density.d.ts.map +1 -0
- package/dist/detectors/registry/adverb-density.js +3 -0
- package/dist/detectors/registry/adverb-density.js.map +1 -0
- package/dist/detectors/registry/agentless-passive.d.ts +3 -0
- package/dist/detectors/registry/agentless-passive.d.ts.map +1 -0
- package/dist/detectors/registry/agentless-passive.js +3 -0
- package/dist/detectors/registry/agentless-passive.js.map +1 -0
- package/dist/detectors/registry/agreement-slip.d.ts +3 -0
- package/dist/detectors/registry/agreement-slip.d.ts.map +1 -0
- package/dist/detectors/registry/agreement-slip.js +3 -0
- package/dist/detectors/registry/agreement-slip.js.map +1 -0
- package/dist/detectors/registry/ai-structure.d.ts +3 -0
- package/dist/detectors/registry/ai-structure.d.ts.map +1 -0
- package/dist/detectors/registry/ai-structure.js +3 -0
- package/dist/detectors/registry/ai-structure.js.map +1 -0
- package/dist/detectors/registry/ai-tell.d.ts +3 -0
- package/dist/detectors/registry/ai-tell.d.ts.map +1 -0
- package/dist/detectors/registry/ai-tell.js +3 -0
- package/dist/detectors/registry/ai-tell.js.map +1 -0
- package/dist/detectors/registry/announced-count.d.ts +3 -0
- package/dist/detectors/registry/announced-count.d.ts.map +1 -0
- package/dist/detectors/registry/announced-count.js +3 -0
- package/dist/detectors/registry/announced-count.js.map +1 -0
- package/dist/detectors/registry/article-sound.d.ts +3 -0
- package/dist/detectors/registry/article-sound.d.ts.map +1 -0
- package/dist/detectors/registry/article-sound.js +3 -0
- package/dist/detectors/registry/article-sound.js.map +1 -0
- package/dist/detectors/registry/assistant-residue.d.ts +3 -0
- package/dist/detectors/registry/assistant-residue.d.ts.map +1 -0
- package/dist/detectors/registry/assistant-residue.js +3 -0
- package/dist/detectors/registry/assistant-residue.js.map +1 -0
- package/dist/detectors/registry/bold-label-list.d.ts +3 -0
- package/dist/detectors/registry/bold-label-list.d.ts.map +1 -0
- package/dist/detectors/registry/bold-label-list.js +3 -0
- package/dist/detectors/registry/bold-label-list.js.map +1 -0
- package/dist/detectors/registry/bracket-nesting.d.ts +3 -0
- package/dist/detectors/registry/bracket-nesting.d.ts.map +1 -0
- package/dist/detectors/registry/bracket-nesting.js +3 -0
- package/dist/detectors/registry/bracket-nesting.js.map +1 -0
- package/dist/detectors/registry/broken-link.d.ts +3 -0
- package/dist/detectors/registry/broken-link.d.ts.map +1 -0
- package/dist/detectors/registry/broken-link.js +3 -0
- package/dist/detectors/registry/broken-link.js.map +1 -0
- package/dist/detectors/registry/chat-citation-residue.d.ts +3 -0
- package/dist/detectors/registry/chat-citation-residue.d.ts.map +1 -0
- package/dist/detectors/registry/chat-citation-residue.js +3 -0
- package/dist/detectors/registry/chat-citation-residue.js.map +1 -0
- package/dist/detectors/registry/citation-entry.d.ts +3 -0
- package/dist/detectors/registry/citation-entry.d.ts.map +1 -0
- package/dist/detectors/registry/citation-entry.js +3 -0
- package/dist/detectors/registry/citation-entry.js.map +1 -0
- package/dist/detectors/registry/citation-style.d.ts +3 -0
- package/dist/detectors/registry/citation-style.d.ts.map +1 -0
- package/dist/detectors/registry/citation-style.js +3 -0
- package/dist/detectors/registry/citation-style.js.map +1 -0
- package/dist/detectors/registry/clause-chain.d.ts +3 -0
- package/dist/detectors/registry/clause-chain.d.ts.map +1 -0
- package/dist/detectors/registry/clause-chain.js +3 -0
- package/dist/detectors/registry/clause-chain.js.map +1 -0
- package/dist/detectors/registry/colon-lead-in.d.ts +3 -0
- package/dist/detectors/registry/colon-lead-in.d.ts.map +1 -0
- package/dist/detectors/registry/colon-lead-in.js +3 -0
- package/dist/detectors/registry/colon-lead-in.js.map +1 -0
- package/dist/detectors/registry/concrete-evidence.d.ts +3 -0
- package/dist/detectors/registry/concrete-evidence.d.ts.map +1 -0
- package/dist/detectors/registry/concrete-evidence.js +3 -0
- package/dist/detectors/registry/concrete-evidence.js.map +1 -0
- package/dist/detectors/registry/conjunction-run.d.ts +3 -0
- package/dist/detectors/registry/conjunction-run.d.ts.map +1 -0
- package/dist/detectors/registry/conjunction-run.js +3 -0
- package/dist/detectors/registry/conjunction-run.js.map +1 -0
- package/dist/detectors/registry/contraction-mix.d.ts +3 -0
- package/dist/detectors/registry/contraction-mix.d.ts.map +1 -0
- package/dist/detectors/registry/contraction-mix.js +3 -0
- package/dist/detectors/registry/contraction-mix.js.map +1 -0
- package/dist/detectors/registry/contrast-framing.d.ts +3 -0
- package/dist/detectors/registry/contrast-framing.d.ts.map +1 -0
- package/dist/detectors/registry/contrast-framing.js +3 -0
- package/dist/detectors/registry/contrast-framing.js.map +1 -0
- package/dist/detectors/registry/count-per-section.d.ts +3 -0
- package/dist/detectors/registry/count-per-section.d.ts.map +1 -0
- package/dist/detectors/registry/count-per-section.js +3 -0
- package/dist/detectors/registry/count-per-section.js.map +1 -0
- package/dist/detectors/registry/cushion-density.d.ts +3 -0
- package/dist/detectors/registry/cushion-density.d.ts.map +1 -0
- package/dist/detectors/registry/cushion-density.js +3 -0
- package/dist/detectors/registry/cushion-density.js.map +1 -0
- package/dist/detectors/registry/custom-pattern.d.ts +3 -0
- package/dist/detectors/registry/custom-pattern.d.ts.map +1 -0
- package/dist/detectors/registry/custom-pattern.js +3 -0
- package/dist/detectors/registry/custom-pattern.js.map +1 -0
- package/dist/detectors/registry/custom-tokens.d.ts +3 -0
- package/dist/detectors/registry/custom-tokens.d.ts.map +1 -0
- package/dist/detectors/registry/custom-tokens.js +3 -0
- package/dist/detectors/registry/custom-tokens.js.map +1 -0
- package/dist/detectors/registry/custom-words.d.ts +3 -0
- package/dist/detectors/registry/custom-words.d.ts.map +1 -0
- package/dist/detectors/registry/custom-words.js +3 -0
- package/dist/detectors/registry/custom-words.js.map +1 -0
- package/dist/detectors/registry/dangling-figure.d.ts +3 -0
- package/dist/detectors/registry/dangling-figure.d.ts.map +1 -0
- package/dist/detectors/registry/dangling-figure.js +3 -0
- package/dist/detectors/registry/dangling-figure.js.map +1 -0
- package/dist/detectors/registry/dangling-reference.d.ts +3 -0
- package/dist/detectors/registry/dangling-reference.d.ts.map +1 -0
- package/dist/detectors/registry/dangling-reference.js +3 -0
- package/dist/detectors/registry/dangling-reference.js.map +1 -0
- package/dist/detectors/registry/dash-density.d.ts +3 -0
- package/dist/detectors/registry/dash-density.d.ts.map +1 -0
- package/dist/detectors/registry/dash-density.js +3 -0
- package/dist/detectors/registry/dash-density.js.map +1 -0
- package/dist/detectors/registry/date-format.d.ts +3 -0
- package/dist/detectors/registry/date-format.d.ts.map +1 -0
- package/dist/detectors/registry/date-format.js +3 -0
- package/dist/detectors/registry/date-format.js.map +1 -0
- package/dist/detectors/registry/date-order.d.ts +3 -0
- package/dist/detectors/registry/date-order.d.ts.map +1 -0
- package/dist/detectors/registry/date-order.js +3 -0
- package/dist/detectors/registry/date-order.js.map +1 -0
- package/dist/detectors/registry/date-range-reversed.d.ts +3 -0
- package/dist/detectors/registry/date-range-reversed.d.ts.map +1 -0
- package/dist/detectors/registry/date-range-reversed.js +3 -0
- package/dist/detectors/registry/date-range-reversed.js.map +1 -0
- package/dist/detectors/registry/date-weekday-mismatch.d.ts +3 -0
- package/dist/detectors/registry/date-weekday-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/date-weekday-mismatch.js +3 -0
- package/dist/detectors/registry/date-weekday-mismatch.js.map +1 -0
- package/dist/detectors/registry/date-without-year.d.ts +3 -0
- package/dist/detectors/registry/date-without-year.d.ts.map +1 -0
- package/dist/detectors/registry/date-without-year.js +3 -0
- package/dist/detectors/registry/date-without-year.js.map +1 -0
- package/dist/detectors/registry/doubled-particle.d.ts +3 -0
- package/dist/detectors/registry/doubled-particle.d.ts.map +1 -0
- package/dist/detectors/registry/doubled-particle.js +3 -0
- package/dist/detectors/registry/doubled-particle.js.map +1 -0
- package/dist/detectors/registry/doubled-punctuation.d.ts +3 -0
- package/dist/detectors/registry/doubled-punctuation.d.ts.map +1 -0
- package/dist/detectors/registry/doubled-punctuation.js +3 -0
- package/dist/detectors/registry/doubled-punctuation.js.map +1 -0
- package/dist/detectors/registry/doubled-word.d.ts +3 -0
- package/dist/detectors/registry/doubled-word.d.ts.map +1 -0
- package/dist/detectors/registry/doubled-word.js +3 -0
- package/dist/detectors/registry/doubled-word.js.map +1 -0
- package/dist/detectors/registry/duplicate-definition.d.ts +3 -0
- package/dist/detectors/registry/duplicate-definition.d.ts.map +1 -0
- package/dist/detectors/registry/duplicate-definition.js +3 -0
- package/dist/detectors/registry/duplicate-definition.js.map +1 -0
- package/dist/detectors/registry/duplicate-heading.d.ts +3 -0
- package/dist/detectors/registry/duplicate-heading.d.ts.map +1 -0
- package/dist/detectors/registry/duplicate-heading.js +3 -0
- package/dist/detectors/registry/duplicate-heading.js.map +1 -0
- package/dist/detectors/registry/duration-mismatch.d.ts +3 -0
- package/dist/detectors/registry/duration-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/duration-mismatch.js +3 -0
- package/dist/detectors/registry/duration-mismatch.js.map +1 -0
- package/dist/detectors/registry/elapsed-years-mismatch.d.ts +3 -0
- package/dist/detectors/registry/elapsed-years-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/elapsed-years-mismatch.js +3 -0
- package/dist/detectors/registry/elapsed-years-mismatch.js.map +1 -0
- package/dist/detectors/registry/emoji-density.d.ts +3 -0
- package/dist/detectors/registry/emoji-density.d.ts.map +1 -0
- package/dist/detectors/registry/emoji-density.js +3 -0
- package/dist/detectors/registry/emoji-density.js.map +1 -0
- package/dist/detectors/registry/emoji-heading.d.ts +3 -0
- package/dist/detectors/registry/emoji-heading.d.ts.map +1 -0
- package/dist/detectors/registry/emoji-heading.js +3 -0
- package/dist/detectors/registry/emoji-heading.js.map +1 -0
- package/dist/detectors/registry/empty-list-item.d.ts +3 -0
- package/dist/detectors/registry/empty-list-item.d.ts.map +1 -0
- package/dist/detectors/registry/empty-list-item.js +3 -0
- package/dist/detectors/registry/empty-list-item.js.map +1 -0
- package/dist/detectors/registry/empty-section.d.ts +3 -0
- package/dist/detectors/registry/empty-section.d.ts.map +1 -0
- package/dist/detectors/registry/empty-section.js +3 -0
- package/dist/detectors/registry/empty-section.js.map +1 -0
- package/dist/detectors/registry/empty-table-cell.d.ts +3 -0
- package/dist/detectors/registry/empty-table-cell.d.ts.map +1 -0
- package/dist/detectors/registry/empty-table-cell.js +3 -0
- package/dist/detectors/registry/empty-table-cell.js.map +1 -0
- package/dist/detectors/registry/expletive.d.ts +3 -0
- package/dist/detectors/registry/expletive.d.ts.map +1 -0
- package/dist/detectors/registry/expletive.js +3 -0
- package/dist/detectors/registry/expletive.js.map +1 -0
- package/dist/detectors/registry/fact-conflict.d.ts +3 -0
- package/dist/detectors/registry/fact-conflict.d.ts.map +1 -0
- package/dist/detectors/registry/fact-conflict.js +3 -0
- package/dist/detectors/registry/fact-conflict.js.map +1 -0
- package/dist/detectors/registry/figure-order.d.ts +3 -0
- package/dist/detectors/registry/figure-order.d.ts.map +1 -0
- package/dist/detectors/registry/figure-order.js +3 -0
- package/dist/detectors/registry/figure-order.js.map +1 -0
- package/dist/detectors/registry/fullwidth-alnum.d.ts +3 -0
- package/dist/detectors/registry/fullwidth-alnum.d.ts.map +1 -0
- package/dist/detectors/registry/fullwidth-alnum.js +3 -0
- package/dist/detectors/registry/fullwidth-alnum.js.map +1 -0
- package/dist/detectors/registry/hankaku-kana.d.ts +3 -0
- package/dist/detectors/registry/hankaku-kana.d.ts.map +1 -0
- package/dist/detectors/registry/hankaku-kana.js +3 -0
- package/dist/detectors/registry/hankaku-kana.js.map +1 -0
- package/dist/detectors/registry/heading-echo.d.ts +3 -0
- package/dist/detectors/registry/heading-echo.d.ts.map +1 -0
- package/dist/detectors/registry/heading-echo.js +3 -0
- package/dist/detectors/registry/heading-echo.js.map +1 -0
- package/dist/detectors/registry/heading-level-skip.d.ts +3 -0
- package/dist/detectors/registry/heading-level-skip.d.ts.map +1 -0
- package/dist/detectors/registry/heading-level-skip.js +3 -0
- package/dist/detectors/registry/heading-level-skip.js.map +1 -0
- package/dist/detectors/registry/heading-numbering.d.ts +3 -0
- package/dist/detectors/registry/heading-numbering.d.ts.map +1 -0
- package/dist/detectors/registry/heading-numbering.js +3 -0
- package/dist/detectors/registry/heading-numbering.js.map +1 -0
- package/dist/detectors/registry/hedging.d.ts +3 -0
- package/dist/detectors/registry/hedging.d.ts.map +1 -0
- package/dist/detectors/registry/hedging.js +3 -0
- package/dist/detectors/registry/hedging.js.map +1 -0
- package/dist/detectors/registry/image-alt-text.d.ts +3 -0
- package/dist/detectors/registry/image-alt-text.d.ts.map +1 -0
- package/dist/detectors/registry/image-alt-text.js +3 -0
- package/dist/detectors/registry/image-alt-text.js.map +1 -0
- package/dist/detectors/registry/intensified-adjective.d.ts +3 -0
- package/dist/detectors/registry/intensified-adjective.d.ts.map +1 -0
- package/dist/detectors/registry/intensified-adjective.js +3 -0
- package/dist/detectors/registry/intensified-adjective.js.map +1 -0
- package/dist/detectors/registry/internal-jargon.d.ts +3 -0
- package/dist/detectors/registry/internal-jargon.d.ts.map +1 -0
- package/dist/detectors/registry/internal-jargon.js +3 -0
- package/dist/detectors/registry/internal-jargon.js.map +1 -0
- package/dist/detectors/registry/invisible-character.d.ts +3 -0
- package/dist/detectors/registry/invisible-character.d.ts.map +1 -0
- package/dist/detectors/registry/invisible-character.js +3 -0
- package/dist/detectors/registry/invisible-character.js.map +1 -0
- package/dist/detectors/registry/kanji-run.d.ts +3 -0
- package/dist/detectors/registry/kanji-run.d.ts.map +1 -0
- package/dist/detectors/registry/kanji-run.js +3 -0
- package/dist/detectors/registry/kanji-run.js.map +1 -0
- package/dist/detectors/registry/katakana-density.d.ts +3 -0
- package/dist/detectors/registry/katakana-density.d.ts.map +1 -0
- package/dist/detectors/registry/katakana-density.js +3 -0
- package/dist/detectors/registry/katakana-density.js.map +1 -0
- package/dist/detectors/registry/katakana-long-vowel.d.ts +3 -0
- package/dist/detectors/registry/katakana-long-vowel.d.ts.map +1 -0
- package/dist/detectors/registry/katakana-long-vowel.js +3 -0
- package/dist/detectors/registry/katakana-long-vowel.js.map +1 -0
- package/dist/detectors/registry/known-correction.d.ts +3 -0
- package/dist/detectors/registry/known-correction.d.ts.map +1 -0
- package/dist/detectors/registry/known-correction.js +3 -0
- package/dist/detectors/registry/known-correction.js.map +1 -0
- package/dist/detectors/registry/kutoten-consistency.d.ts +3 -0
- package/dist/detectors/registry/kutoten-consistency.d.ts.map +1 -0
- package/dist/detectors/registry/kutoten-consistency.js +3 -0
- package/dist/detectors/registry/kutoten-consistency.js.map +1 -0
- package/dist/detectors/registry/latin-spacing.d.ts +3 -0
- package/dist/detectors/registry/latin-spacing.d.ts.map +1 -0
- package/dist/detectors/registry/latin-spacing.js +3 -0
- package/dist/detectors/registry/latin-spacing.js.map +1 -0
- package/dist/detectors/registry/list-item-form-mix.d.ts +3 -0
- package/dist/detectors/registry/list-item-form-mix.d.ts.map +1 -0
- package/dist/detectors/registry/list-item-form-mix.js +3 -0
- package/dist/detectors/registry/list-item-form-mix.js.map +1 -0
- package/dist/detectors/registry/middle-dot.d.ts +3 -0
- package/dist/detectors/registry/middle-dot.d.ts.map +1 -0
- package/dist/detectors/registry/middle-dot.js +3 -0
- package/dist/detectors/registry/middle-dot.js.map +1 -0
- package/dist/detectors/registry/misuse-match.d.ts +3 -0
- package/dist/detectors/registry/misuse-match.d.ts.map +1 -0
- package/dist/detectors/registry/misuse-match.js +3 -0
- package/dist/detectors/registry/misuse-match.js.map +1 -0
- package/dist/detectors/registry/modal-conflict.d.ts +3 -0
- package/dist/detectors/registry/modal-conflict.d.ts.map +1 -0
- package/dist/detectors/registry/modal-conflict.js +3 -0
- package/dist/detectors/registry/modal-conflict.js.map +1 -0
- package/dist/detectors/registry/name-variant.d.ts +3 -0
- package/dist/detectors/registry/name-variant.d.ts.map +1 -0
- package/dist/detectors/registry/name-variant.js +3 -0
- package/dist/detectors/registry/name-variant.js.map +1 -0
- package/dist/detectors/registry/ngram-repetition.d.ts +3 -0
- package/dist/detectors/registry/ngram-repetition.d.ts.map +1 -0
- package/dist/detectors/registry/ngram-repetition.js +3 -0
- package/dist/detectors/registry/ngram-repetition.js.map +1 -0
- package/dist/detectors/registry/no-lead.d.ts +3 -0
- package/dist/detectors/registry/no-lead.d.ts.map +1 -0
- package/dist/detectors/registry/no-lead.js +3 -0
- package/dist/detectors/registry/no-lead.js.map +1 -0
- package/dist/detectors/registry/nominalization.d.ts +3 -0
- package/dist/detectors/registry/nominalization.d.ts.map +1 -0
- package/dist/detectors/registry/nominalization.js +3 -0
- package/dist/detectors/registry/nominalization.js.map +1 -0
- package/dist/detectors/registry/noun-ending.d.ts +3 -0
- package/dist/detectors/registry/noun-ending.d.ts.map +1 -0
- package/dist/detectors/registry/noun-ending.js +3 -0
- package/dist/detectors/registry/noun-ending.js.map +1 -0
- package/dist/detectors/registry/number-style-consistency.d.ts +3 -0
- package/dist/detectors/registry/number-style-consistency.d.ts.map +1 -0
- package/dist/detectors/registry/number-style-consistency.js +3 -0
- package/dist/detectors/registry/number-style-consistency.js.map +1 -0
- package/dist/detectors/registry/number-without-unit.d.ts +3 -0
- package/dist/detectors/registry/number-without-unit.d.ts.map +1 -0
- package/dist/detectors/registry/number-without-unit.js +3 -0
- package/dist/detectors/registry/number-without-unit.js.map +1 -0
- package/dist/detectors/registry/numbering-gap.d.ts +3 -0
- package/dist/detectors/registry/numbering-gap.d.ts.map +1 -0
- package/dist/detectors/registry/numbering-gap.js +3 -0
- package/dist/detectors/registry/numbering-gap.js.map +1 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.d.ts +3 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.d.ts.map +1 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.js +3 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.js.map +1 -0
- package/dist/detectors/registry/opener-pile.d.ts +3 -0
- package/dist/detectors/registry/opener-pile.d.ts.map +1 -0
- package/dist/detectors/registry/opener-pile.js +3 -0
- package/dist/detectors/registry/opener-pile.js.map +1 -0
- package/dist/detectors/registry/opener-run.d.ts +3 -0
- package/dist/detectors/registry/opener-run.d.ts.map +1 -0
- package/dist/detectors/registry/opener-run.js +3 -0
- package/dist/detectors/registry/opener-run.js.map +1 -0
- package/dist/detectors/registry/orthographic-variant.d.ts +3 -0
- package/dist/detectors/registry/orthographic-variant.d.ts.map +1 -0
- package/dist/detectors/registry/orthographic-variant.js +3 -0
- package/dist/detectors/registry/orthographic-variant.js.map +1 -0
- package/dist/detectors/registry/outside-announced-list.d.ts +3 -0
- package/dist/detectors/registry/outside-announced-list.d.ts.map +1 -0
- package/dist/detectors/registry/outside-announced-list.js +3 -0
- package/dist/detectors/registry/outside-announced-list.js.map +1 -0
- package/dist/detectors/registry/oxford-comma.d.ts +3 -0
- package/dist/detectors/registry/oxford-comma.d.ts.map +1 -0
- package/dist/detectors/registry/oxford-comma.js +3 -0
- package/dist/detectors/registry/oxford-comma.js.map +1 -0
- package/dist/detectors/registry/paragraph-length.d.ts +3 -0
- package/dist/detectors/registry/paragraph-length.d.ts.map +1 -0
- package/dist/detectors/registry/paragraph-length.js +3 -0
- package/dist/detectors/registry/paragraph-length.js.map +1 -0
- package/dist/detectors/registry/paragraph-restatement.d.ts +3 -0
- package/dist/detectors/registry/paragraph-restatement.d.ts.map +1 -0
- package/dist/detectors/registry/paragraph-restatement.js +3 -0
- package/dist/detectors/registry/paragraph-restatement.js.map +1 -0
- package/dist/detectors/registry/paragraph-variance.d.ts +3 -0
- package/dist/detectors/registry/paragraph-variance.d.ts.map +1 -0
- package/dist/detectors/registry/paragraph-variance.js +3 -0
- package/dist/detectors/registry/paragraph-variance.js.map +1 -0
- package/dist/detectors/registry/percent-sum-mismatch.d.ts +3 -0
- package/dist/detectors/registry/percent-sum-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/percent-sum-mismatch.js +3 -0
- package/dist/detectors/registry/percent-sum-mismatch.js.map +1 -0
- package/dist/detectors/registry/person-mix.d.ts +3 -0
- package/dist/detectors/registry/person-mix.d.ts.map +1 -0
- package/dist/detectors/registry/person-mix.js +3 -0
- package/dist/detectors/registry/person-mix.js.map +1 -0
- package/dist/detectors/registry/phrase-count.d.ts +3 -0
- package/dist/detectors/registry/phrase-count.d.ts.map +1 -0
- package/dist/detectors/registry/phrase-count.js +3 -0
- package/dist/detectors/registry/phrase-count.js.map +1 -0
- package/dist/detectors/registry/phrase-density.d.ts +3 -0
- package/dist/detectors/registry/phrase-density.d.ts.map +1 -0
- package/dist/detectors/registry/phrase-density.js +3 -0
- package/dist/detectors/registry/phrase-density.js.map +1 -0
- package/dist/detectors/registry/phrase-match.d.ts +3 -0
- package/dist/detectors/registry/phrase-match.d.ts.map +1 -0
- package/dist/detectors/registry/phrase-match.js +3 -0
- package/dist/detectors/registry/phrase-match.js.map +1 -0
- package/dist/detectors/registry/preamble-length.d.ts +3 -0
- package/dist/detectors/registry/preamble-length.d.ts.map +1 -0
- package/dist/detectors/registry/preamble-length.js +3 -0
- package/dist/detectors/registry/preamble-length.js.map +1 -0
- package/dist/detectors/registry/preferred-term.d.ts +3 -0
- package/dist/detectors/registry/preferred-term.d.ts.map +1 -0
- package/dist/detectors/registry/preferred-term.js +3 -0
- package/dist/detectors/registry/preferred-term.js.map +1 -0
- package/dist/detectors/registry/proper-noun-density.d.ts +3 -0
- package/dist/detectors/registry/proper-noun-density.d.ts.map +1 -0
- package/dist/detectors/registry/proper-noun-density.js +3 -0
- package/dist/detectors/registry/proper-noun-density.js.map +1 -0
- package/dist/detectors/registry/ra-nuki.d.ts +3 -0
- package/dist/detectors/registry/ra-nuki.d.ts.map +1 -0
- package/dist/detectors/registry/ra-nuki.js +3 -0
- package/dist/detectors/registry/ra-nuki.js.map +1 -0
- package/dist/detectors/registry/reference-title-mismatch.d.ts +3 -0
- package/dist/detectors/registry/reference-title-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/reference-title-mismatch.js +3 -0
- package/dist/detectors/registry/reference-title-mismatch.js.map +1 -0
- package/dist/detectors/registry/reference-topic-missing.d.ts +3 -0
- package/dist/detectors/registry/reference-topic-missing.d.ts.map +1 -0
- package/dist/detectors/registry/reference-topic-missing.js +3 -0
- package/dist/detectors/registry/reference-topic-missing.js.map +1 -0
- package/dist/detectors/registry/relative-date-mismatch.d.ts +3 -0
- package/dist/detectors/registry/relative-date-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/relative-date-mismatch.js +3 -0
- package/dist/detectors/registry/relative-date-mismatch.js.map +1 -0
- package/dist/detectors/registry/repeated-conjunction.d.ts +3 -0
- package/dist/detectors/registry/repeated-conjunction.d.ts.map +1 -0
- package/dist/detectors/registry/repeated-conjunction.js +3 -0
- package/dist/detectors/registry/repeated-conjunction.js.map +1 -0
- package/dist/detectors/registry/repeated-head.d.ts +3 -0
- package/dist/detectors/registry/repeated-head.d.ts.map +1 -0
- package/dist/detectors/registry/repeated-head.js +3 -0
- package/dist/detectors/registry/repeated-head.js.map +1 -0
- package/dist/detectors/registry/required-sections.d.ts +3 -0
- package/dist/detectors/registry/required-sections.d.ts.map +1 -0
- package/dist/detectors/registry/required-sections.js +3 -0
- package/dist/detectors/registry/required-sections.js.map +1 -0
- package/dist/detectors/registry/requirement-modal.d.ts +3 -0
- package/dist/detectors/registry/requirement-modal.d.ts.map +1 -0
- package/dist/detectors/registry/requirement-modal.js +3 -0
- package/dist/detectors/registry/requirement-modal.js.map +1 -0
- package/dist/detectors/registry/requirement-smell.d.ts +3 -0
- package/dist/detectors/registry/requirement-smell.d.ts.map +1 -0
- package/dist/detectors/registry/requirement-smell.js +3 -0
- package/dist/detectors/registry/requirement-smell.js.map +1 -0
- package/dist/detectors/registry/rule-of-three.d.ts +3 -0
- package/dist/detectors/registry/rule-of-three.d.ts.map +1 -0
- package/dist/detectors/registry/rule-of-three.js +3 -0
- package/dist/detectors/registry/rule-of-three.js.map +1 -0
- package/dist/detectors/registry/section-uniformity.d.ts +3 -0
- package/dist/detectors/registry/section-uniformity.d.ts.map +1 -0
- package/dist/detectors/registry/section-uniformity.js +3 -0
- package/dist/detectors/registry/section-uniformity.js.map +1 -0
- package/dist/detectors/registry/sentence-comma-count.d.ts +3 -0
- package/dist/detectors/registry/sentence-comma-count.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-comma-count.js +3 -0
- package/dist/detectors/registry/sentence-comma-count.js.map +1 -0
- package/dist/detectors/registry/sentence-conjunctive-count.d.ts +3 -0
- package/dist/detectors/registry/sentence-conjunctive-count.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-conjunctive-count.js +3 -0
- package/dist/detectors/registry/sentence-conjunctive-count.js.map +1 -0
- package/dist/detectors/registry/sentence-ending.d.ts +3 -0
- package/dist/detectors/registry/sentence-ending.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-ending.js +3 -0
- package/dist/detectors/registry/sentence-ending.js.map +1 -0
- package/dist/detectors/registry/sentence-length.d.ts +3 -0
- package/dist/detectors/registry/sentence-length.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-length.js +3 -0
- package/dist/detectors/registry/sentence-length.js.map +1 -0
- package/dist/detectors/registry/sentence-rhythm.d.ts +3 -0
- package/dist/detectors/registry/sentence-rhythm.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-rhythm.js +3 -0
- package/dist/detectors/registry/sentence-rhythm.js.map +1 -0
- package/dist/detectors/registry/sentence-word-count.d.ts +3 -0
- package/dist/detectors/registry/sentence-word-count.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-word-count.js +3 -0
- package/dist/detectors/registry/sentence-word-count.js.map +1 -0
- package/dist/detectors/registry/space-before-punctuation.d.ts +3 -0
- package/dist/detectors/registry/space-before-punctuation.d.ts.map +1 -0
- package/dist/detectors/registry/space-before-punctuation.js +3 -0
- package/dist/detectors/registry/space-before-punctuation.js.map +1 -0
- package/dist/detectors/registry/spelling-variety.d.ts +3 -0
- package/dist/detectors/registry/spelling-variety.d.ts.map +1 -0
- package/dist/detectors/registry/spelling-variety.js +3 -0
- package/dist/detectors/registry/spelling-variety.js.map +1 -0
- package/dist/detectors/registry/stock-transition.d.ts +3 -0
- package/dist/detectors/registry/stock-transition.d.ts.map +1 -0
- package/dist/detectors/registry/stock-transition.js +3 -0
- package/dist/detectors/registry/stock-transition.js.map +1 -0
- package/dist/detectors/registry/stray-space.d.ts +3 -0
- package/dist/detectors/registry/stray-space.d.ts.map +1 -0
- package/dist/detectors/registry/stray-space.js +3 -0
- package/dist/detectors/registry/stray-space.js.map +1 -0
- package/dist/detectors/registry/summary-fact-mismatch.d.ts +3 -0
- package/dist/detectors/registry/summary-fact-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/summary-fact-mismatch.js +3 -0
- package/dist/detectors/registry/summary-fact-mismatch.js.map +1 -0
- package/dist/detectors/registry/table-header-variant.d.ts +3 -0
- package/dist/detectors/registry/table-header-variant.d.ts.map +1 -0
- package/dist/detectors/registry/table-header-variant.js +3 -0
- package/dist/detectors/registry/table-header-variant.js.map +1 -0
- package/dist/detectors/registry/title-case-mix.d.ts +3 -0
- package/dist/detectors/registry/title-case-mix.d.ts.map +1 -0
- package/dist/detectors/registry/title-case-mix.js +3 -0
- package/dist/detectors/registry/title-case-mix.js.map +1 -0
- package/dist/detectors/registry/title-length.d.ts +3 -0
- package/dist/detectors/registry/title-length.d.ts.map +1 -0
- package/dist/detectors/registry/title-length.js +3 -0
- package/dist/detectors/registry/title-length.js.map +1 -0
- package/dist/detectors/registry/topic-predicate-distance.d.ts +3 -0
- package/dist/detectors/registry/topic-predicate-distance.d.ts.map +1 -0
- package/dist/detectors/registry/topic-predicate-distance.js +3 -0
- package/dist/detectors/registry/topic-predicate-distance.js.map +1 -0
- package/dist/detectors/registry/total-mismatch.d.ts +3 -0
- package/dist/detectors/registry/total-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/total-mismatch.js +3 -0
- package/dist/detectors/registry/total-mismatch.js.map +1 -0
- package/dist/detectors/registry/unbalanced-bracket.d.ts +3 -0
- package/dist/detectors/registry/unbalanced-bracket.d.ts.map +1 -0
- package/dist/detectors/registry/unbalanced-bracket.js +3 -0
- package/dist/detectors/registry/unbalanced-bracket.js.map +1 -0
- package/dist/detectors/registry/undefined-acronym.d.ts +3 -0
- package/dist/detectors/registry/undefined-acronym.d.ts.map +1 -0
- package/dist/detectors/registry/undefined-acronym.js +3 -0
- package/dist/detectors/registry/undefined-acronym.js.map +1 -0
- package/dist/detectors/registry/unfilled-placeholder.d.ts +3 -0
- package/dist/detectors/registry/unfilled-placeholder.d.ts.map +1 -0
- package/dist/detectors/registry/unfilled-placeholder.js +3 -0
- package/dist/detectors/registry/unfilled-placeholder.js.map +1 -0
- package/dist/detectors/registry/unit-mismatch.d.ts +3 -0
- package/dist/detectors/registry/unit-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/unit-mismatch.js +3 -0
- package/dist/detectors/registry/unit-mismatch.js.map +1 -0
- package/dist/detectors/registry/unknown-word.d.ts +3 -0
- package/dist/detectors/registry/unknown-word.d.ts.map +1 -0
- package/dist/detectors/registry/unknown-word.js +3 -0
- package/dist/detectors/registry/unknown-word.js.map +1 -0
- package/dist/detectors/registry/unqualified-superlative.d.ts +3 -0
- package/dist/detectors/registry/unqualified-superlative.d.ts.map +1 -0
- package/dist/detectors/registry/unqualified-superlative.js +3 -0
- package/dist/detectors/registry/unqualified-superlative.js.map +1 -0
- package/dist/detectors/registry/unused-definition.d.ts +3 -0
- package/dist/detectors/registry/unused-definition.d.ts.map +1 -0
- package/dist/detectors/registry/unused-definition.js +3 -0
- package/dist/detectors/registry/unused-definition.js.map +1 -0
- package/dist/detectors/registry/url-run-on.d.ts +3 -0
- package/dist/detectors/registry/url-run-on.d.ts.map +1 -0
- package/dist/detectors/registry/url-run-on.js +3 -0
- package/dist/detectors/registry/url-run-on.js.map +1 -0
- package/dist/detectors/registry/use-before-definition.d.ts +3 -0
- package/dist/detectors/registry/use-before-definition.d.ts.map +1 -0
- package/dist/detectors/registry/use-before-definition.js +3 -0
- package/dist/detectors/registry/use-before-definition.js.map +1 -0
- package/dist/detectors/registry/vague-density.d.ts +3 -0
- package/dist/detectors/registry/vague-density.d.ts.map +1 -0
- package/dist/detectors/registry/vague-density.js +3 -0
- package/dist/detectors/registry/vague-density.js.map +1 -0
- package/dist/detectors/registry/vague-figure-pointer.d.ts +3 -0
- package/dist/detectors/registry/vague-figure-pointer.d.ts.map +1 -0
- package/dist/detectors/registry/vague-figure-pointer.js +3 -0
- package/dist/detectors/registry/vague-figure-pointer.js.map +1 -0
- package/dist/detectors/registry/vague-link-text.d.ts +3 -0
- package/dist/detectors/registry/vague-link-text.d.ts.map +1 -0
- package/dist/detectors/registry/vague-link-text.js +3 -0
- package/dist/detectors/registry/vague-link-text.js.map +1 -0
- package/dist/detectors/registry-files.d.ts +11 -0
- package/dist/detectors/registry-files.d.ts.map +1 -0
- package/dist/detectors/registry-files.js +9 -0
- package/dist/detectors/registry-files.js.map +1 -0
- package/dist/detectors/registry-load.d.ts +6 -0
- package/dist/detectors/registry-load.d.ts.map +1 -0
- package/dist/detectors/registry-load.js +19 -0
- package/dist/detectors/registry-load.js.map +1 -0
- package/dist/detectors/relative-dates.d.ts +4 -0
- package/dist/detectors/relative-dates.d.ts.map +1 -0
- package/dist/detectors/relative-dates.js +100 -0
- package/dist/detectors/relative-dates.js.map +1 -0
- package/dist/detectors/sentence-counts.d.ts +19 -0
- package/dist/detectors/sentence-counts.d.ts.map +1 -0
- package/dist/detectors/sentence-counts.js +83 -0
- package/dist/detectors/sentence-counts.js.map +1 -0
- package/dist/detectors/sentence-load.d.ts +8 -0
- package/dist/detectors/sentence-load.d.ts.map +1 -0
- package/dist/detectors/sentence-load.js +35 -0
- package/dist/detectors/sentence-load.js.map +1 -0
- package/dist/detectors/spelling-variety.d.ts +4 -3
- package/dist/detectors/spelling-variety.d.ts.map +1 -1
- package/dist/detectors/spelling-variety.js +1 -1
- package/dist/detectors/spelling-variety.js.map +1 -1
- package/dist/detectors/table-header.d.ts +28 -0
- package/dist/detectors/table-header.d.ts.map +1 -0
- package/dist/detectors/table-header.js +148 -0
- package/dist/detectors/table-header.js.map +1 -0
- package/dist/detectors/team.d.ts +3 -1
- package/dist/detectors/team.d.ts.map +1 -1
- package/dist/detectors/team.js +10 -3
- package/dist/detectors/team.js.map +1 -1
- package/dist/detectors/unit-consistency.d.ts +4 -0
- package/dist/detectors/unit-consistency.d.ts.map +1 -0
- package/dist/detectors/unit-consistency.js +53 -0
- package/dist/detectors/unit-consistency.js.map +1 -0
- package/dist/detectors/unknown-word.d.ts +7 -0
- package/dist/detectors/unknown-word.d.ts.map +1 -0
- package/dist/detectors/unknown-word.js +40 -0
- package/dist/detectors/unknown-word.js.map +1 -0
- package/dist/detectors/vague-link-text.d.ts +4 -0
- package/dist/detectors/vague-link-text.d.ts.map +1 -0
- package/dist/detectors/vague-link-text.js +11 -0
- package/dist/detectors/vague-link-text.js.map +1 -0
- package/dist/document-reading.d.ts +15 -0
- package/dist/document-reading.d.ts.map +1 -0
- package/dist/document-reading.js +23 -0
- package/dist/document-reading.js.map +1 -0
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +8 -6
- package/dist/document.js.map +1 -1
- package/dist/experimental-alone.d.ts +13 -0
- package/dist/experimental-alone.d.ts.map +1 -0
- package/dist/experimental-alone.js +11 -0
- package/dist/experimental-alone.js.map +1 -0
- package/dist/facts/fact-conflicts.d.ts +15 -0
- package/dist/facts/fact-conflicts.d.ts.map +1 -0
- package/dist/facts/fact-conflicts.js +50 -0
- package/dist/facts/fact-conflicts.js.map +1 -0
- package/dist/facts/fact-scope.d.ts +17 -0
- package/dist/facts/fact-scope.d.ts.map +1 -0
- package/dist/facts/fact-scope.js +112 -0
- package/dist/facts/fact-scope.js.map +1 -0
- package/dist/facts/fact-values.d.ts +18 -0
- package/dist/facts/fact-values.d.ts.map +1 -0
- package/dist/facts/fact-values.js +98 -0
- package/dist/facts/fact-values.js.map +1 -0
- package/dist/facts/labelled-facts.d.ts +31 -0
- package/dist/facts/labelled-facts.d.ts.map +1 -0
- package/dist/facts/labelled-facts.js +94 -0
- package/dist/facts/labelled-facts.js.map +1 -0
- package/dist/facts/measures.d.ts +20 -0
- package/dist/facts/measures.d.ts.map +1 -0
- package/dist/facts/measures.js +40 -0
- package/dist/facts/measures.js.map +1 -0
- package/dist/facts/table-facts.d.ts +5 -0
- package/dist/facts/table-facts.d.ts.map +1 -0
- package/dist/facts/table-facts.js +55 -0
- package/dist/facts/table-facts.js.map +1 -0
- package/dist/facts/trim-marks.d.ts +7 -0
- package/dist/facts/trim-marks.d.ts.map +1 -0
- package/dist/facts/trim-marks.js +18 -0
- package/dist/facts/trim-marks.js.map +1 -0
- package/dist/facts/unit-conflicts.d.ts +14 -0
- package/dist/facts/unit-conflicts.d.ts.map +1 -0
- package/dist/facts/unit-conflicts.js +36 -0
- package/dist/facts/unit-conflicts.js.map +1 -0
- package/dist/figure-references.d.ts +15 -0
- package/dist/figure-references.d.ts.map +1 -1
- package/dist/figure-references.js +14 -0
- package/dist/figure-references.js.map +1 -1
- package/dist/files.d.ts +3 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +10 -7
- package/dist/files.js.map +1 -1
- package/dist/fix-plan/mode.d.ts +6 -1
- package/dist/fix-plan/mode.d.ts.map +1 -1
- package/dist/fix-plan/mode.js +6 -2
- package/dist/fix-plan/mode.js.map +1 -1
- package/dist/fix-plan/plan.d.ts +13 -1
- package/dist/fix-plan/plan.d.ts.map +1 -1
- package/dist/fix-plan/plan.js +13 -2
- package/dist/fix-plan/plan.js.map +1 -1
- package/dist/fix-plan/render.d.ts.map +1 -1
- package/dist/fix-plan/render.js +17 -0
- package/dist/fix-plan/render.js.map +1 -1
- package/dist/fix-plan/structure-target-text.d.ts +15 -0
- package/dist/fix-plan/structure-target-text.d.ts.map +1 -0
- package/dist/fix-plan/structure-target-text.js +57 -0
- package/dist/fix-plan/structure-target-text.js.map +1 -0
- package/dist/fix-plan/structure-targets.d.ts +24 -0
- package/dist/fix-plan/structure-targets.d.ts.map +1 -0
- package/dist/fix-plan/structure-targets.js +27 -0
- package/dist/fix-plan/structure-targets.js.map +1 -0
- package/dist/fix-plan/text.d.ts.map +1 -1
- package/dist/fix-plan/text.js +2 -0
- package/dist/fix-plan/text.js.map +1 -1
- package/dist/grade/baseline-text.d.ts +27 -0
- package/dist/grade/baseline-text.d.ts.map +1 -0
- package/dist/grade/baseline-text.js +49 -0
- package/dist/grade/baseline-text.js.map +1 -0
- package/dist/grade/baseline.d.ts +51 -0
- package/dist/grade/baseline.d.ts.map +1 -0
- package/dist/grade/baseline.js +84 -0
- package/dist/grade/baseline.js.map +1 -0
- package/dist/grade/checks.d.ts +28 -0
- package/dist/grade/checks.d.ts.map +1 -0
- package/dist/grade/checks.js +50 -0
- package/dist/grade/checks.js.map +1 -0
- package/dist/grade/context-support.d.ts +23 -0
- package/dist/grade/context-support.d.ts.map +1 -0
- package/dist/grade/context-support.js +33 -0
- package/dist/grade/context-support.js.map +1 -0
- package/dist/grade/contexts.d.ts +16 -0
- package/dist/grade/contexts.d.ts.map +1 -0
- package/dist/grade/contexts.js +34 -0
- package/dist/grade/contexts.js.map +1 -0
- package/dist/grade/grade-item.d.ts +12 -0
- package/dist/grade/grade-item.d.ts.map +1 -0
- package/dist/grade/grade-item.js +103 -0
- package/dist/grade/grade-item.js.map +1 -0
- package/dist/grade/item.d.ts +54 -0
- package/dist/grade/item.d.ts.map +1 -0
- package/dist/grade/item.js +155 -0
- package/dist/grade/item.js.map +1 -0
- package/dist/grade/order.d.ts +7 -0
- package/dist/grade/order.d.ts.map +1 -0
- package/dist/grade/order.js +7 -0
- package/dist/grade/order.js.map +1 -0
- package/dist/grade/pairing.d.ts +13 -0
- package/dist/grade/pairing.d.ts.map +1 -0
- package/dist/grade/pairing.js +14 -0
- package/dist/grade/pairing.js.map +1 -0
- package/dist/grade/rates.d.ts +14 -0
- package/dist/grade/rates.d.ts.map +1 -0
- package/dist/grade/rates.js +26 -0
- package/dist/grade/rates.js.map +1 -0
- package/dist/grade/render-baseline.d.ts +7 -0
- package/dist/grade/render-baseline.d.ts.map +1 -0
- package/dist/grade/render-baseline.js +44 -0
- package/dist/grade/render-baseline.js.map +1 -0
- package/dist/grade/render-markdown.d.ts +15 -0
- package/dist/grade/render-markdown.d.ts.map +1 -0
- package/dist/grade/render-markdown.js +41 -0
- package/dist/grade/render-markdown.js.map +1 -0
- package/dist/grade/render-variants.d.ts +12 -0
- package/dist/grade/render-variants.d.ts.map +1 -0
- package/dist/grade/render-variants.js +80 -0
- package/dist/grade/render-variants.js.map +1 -0
- package/dist/grade/render.d.ts +14 -0
- package/dist/grade/render.d.ts.map +1 -0
- package/dist/grade/render.js +52 -0
- package/dist/grade/render.js.map +1 -0
- package/dist/grade/result-name.d.ts +7 -0
- package/dist/grade/result-name.d.ts.map +1 -0
- package/dist/grade/result-name.js +6 -0
- package/dist/grade/result-name.js.map +1 -0
- package/dist/grade/result.d.ts +101 -0
- package/dist/grade/result.d.ts.map +1 -0
- package/dist/grade/result.js +2 -0
- package/dist/grade/result.js.map +1 -0
- package/dist/grade/results-read.d.ts +10 -0
- package/dist/grade/results-read.d.ts.map +1 -0
- package/dist/grade/results-read.js +82 -0
- package/dist/grade/results-read.js.map +1 -0
- package/dist/grade/rubric-verdict.d.ts +19 -0
- package/dist/grade/rubric-verdict.d.ts.map +1 -0
- package/dist/grade/rubric-verdict.js +65 -0
- package/dist/grade/rubric-verdict.js.map +1 -0
- package/dist/grade/rubric.d.ts +52 -0
- package/dist/grade/rubric.d.ts.map +1 -0
- package/dist/grade/rubric.js +149 -0
- package/dist/grade/rubric.js.map +1 -0
- package/dist/grade/scorer.d.ts +13 -0
- package/dist/grade/scorer.d.ts.map +1 -0
- package/dist/grade/scorer.js +15 -0
- package/dist/grade/scorer.js.map +1 -0
- package/dist/grade/setup.d.ts +9 -0
- package/dist/grade/setup.d.ts.map +1 -0
- package/dist/grade/setup.js +31 -0
- package/dist/grade/setup.js.map +1 -0
- package/dist/grade/stamp.d.ts +23 -0
- package/dist/grade/stamp.d.ts.map +1 -0
- package/dist/grade/stamp.js +36 -0
- package/dist/grade/stamp.js.map +1 -0
- package/dist/grade/summary.d.ts +43 -0
- package/dist/grade/summary.d.ts.map +1 -0
- package/dist/grade/summary.js +72 -0
- package/dist/grade/summary.js.map +1 -0
- package/dist/grade/text.d.ts +32 -0
- package/dist/grade/text.d.ts.map +1 -0
- package/dist/grade/text.js +117 -0
- package/dist/grade/text.js.map +1 -0
- package/dist/grade/variants-input.d.ts +12 -0
- package/dist/grade/variants-input.d.ts.map +1 -0
- package/dist/grade/variants-input.js +42 -0
- package/dist/grade/variants-input.js.map +1 -0
- package/dist/grade/variants-text.d.ts +31 -0
- package/dist/grade/variants-text.d.ts.map +1 -0
- package/dist/grade/variants-text.js +57 -0
- package/dist/grade/variants-text.js.map +1 -0
- package/dist/grade/variants.d.ts +63 -0
- package/dist/grade/variants.d.ts.map +1 -0
- package/dist/grade/variants.js +66 -0
- package/dist/grade/variants.js.map +1 -0
- package/dist/grade/verdict.d.ts +18 -0
- package/dist/grade/verdict.d.ts.map +1 -0
- package/dist/grade/verdict.js +17 -0
- package/dist/grade/verdict.js.map +1 -0
- package/dist/grade-api.d.ts +53 -0
- package/dist/grade-api.d.ts.map +1 -0
- package/dist/grade-api.js +140 -0
- package/dist/grade-api.js.map +1 -0
- package/dist/heading-numbering.d.ts +32 -0
- package/dist/heading-numbering.d.ts.map +1 -0
- package/dist/heading-numbering.js +72 -0
- package/dist/heading-numbering.js.map +1 -0
- package/dist/kana-spelling.d.ts +14 -0
- package/dist/kana-spelling.d.ts.map +1 -0
- package/dist/kana-spelling.js +43 -0
- package/dist/kana-spelling.js.map +1 -0
- package/dist/link-text.d.ts +12 -0
- package/dist/link-text.d.ts.map +1 -0
- package/dist/link-text.js +45 -0
- package/dist/link-text.js.map +1 -0
- package/dist/outline/render.d.ts +3 -1
- package/dist/outline/render.d.ts.map +1 -1
- package/dist/outline/render.js +6 -0
- package/dist/outline/render.js.map +1 -1
- package/dist/outline/structure-render.d.ts +15 -0
- package/dist/outline/structure-render.d.ts.map +1 -0
- package/dist/outline/structure-render.js +80 -0
- package/dist/outline/structure-render.js.map +1 -0
- package/dist/outline/structure-text.d.ts +30 -0
- package/dist/outline/structure-text.d.ts.map +1 -0
- package/dist/outline/structure-text.js +87 -0
- package/dist/outline/structure-text.js.map +1 -0
- package/dist/outline/text.d.ts +3 -0
- package/dist/outline/text.d.ts.map +1 -1
- package/dist/outline/text.js +3 -0
- package/dist/outline/text.js.map +1 -1
- package/dist/paragraph-runs.d.ts +7 -0
- package/dist/paragraph-runs.d.ts.map +1 -0
- package/dist/paragraph-runs.js +27 -0
- package/dist/paragraph-runs.js.map +1 -0
- package/dist/person-forms.d.ts +30 -0
- package/dist/person-forms.d.ts.map +1 -0
- package/dist/person-forms.js +96 -0
- package/dist/person-forms.js.map +1 -0
- package/dist/plugin.d.ts +14 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/reasons.d.ts +2 -0
- package/dist/reasons.d.ts.map +1 -1
- package/dist/reasons.js +2 -0
- package/dist/reasons.js.map +1 -1
- package/dist/render/explain.d.ts +2 -0
- package/dist/render/explain.d.ts.map +1 -1
- package/dist/render/explain.js +3 -1
- package/dist/render/explain.js.map +1 -1
- package/dist/render/friendly.d.ts.map +1 -1
- package/dist/render/friendly.js +13 -1
- package/dist/render/friendly.js.map +1 -1
- package/dist/render/rules-json.d.ts.map +1 -1
- package/dist/render/rules-json.js +8 -4
- package/dist/render/rules-json.js.map +1 -1
- package/dist/render/rules-table.d.ts +2 -0
- package/dist/render/rules-table.d.ts.map +1 -1
- package/dist/render/rules-table.js +1 -1
- package/dist/render/rules-table.js.map +1 -1
- package/dist/render/sarif.d.ts +7 -1
- package/dist/render/sarif.d.ts.map +1 -1
- package/dist/render/sarif.js +20 -1
- package/dist/render/sarif.js.map +1 -1
- package/dist/resolve-genre.d.ts +1 -2
- package/dist/resolve-genre.d.ts.map +1 -1
- package/dist/rule-guide.d.ts +2 -0
- package/dist/rule-guide.d.ts.map +1 -1
- package/dist/rule-guide.js +1 -0
- package/dist/rule-guide.js.map +1 -1
- package/dist/run.d.ts +3 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +33 -10
- package/dist/run.js.map +1 -1
- package/dist/sentence-load.d.ts +19 -0
- package/dist/sentence-load.d.ts.map +1 -0
- package/dist/sentence-load.js +70 -0
- package/dist/sentence-load.js.map +1 -0
- package/dist/spelling-variants.d.ts +17 -0
- package/dist/spelling-variants.d.ts.map +1 -0
- package/dist/spelling-variants.js +32 -0
- package/dist/spelling-variants.js.map +1 -0
- package/dist/spelling.d.ts +32 -0
- package/dist/spelling.d.ts.map +1 -0
- package/dist/spelling.js +54 -0
- package/dist/spelling.js.map +1 -0
- package/dist/structure/absolute-exception.d.ts +35 -0
- package/dist/structure/absolute-exception.d.ts.map +1 -0
- package/dist/structure/absolute-exception.js +70 -0
- package/dist/structure/absolute-exception.js.map +1 -0
- package/dist/structure/issues.d.ts +5 -0
- package/dist/structure/issues.d.ts.map +1 -1
- package/dist/structure/issues.js +22 -0
- package/dist/structure/issues.js.map +1 -1
- package/dist/structure/modal-conflict.d.ts +1 -0
- package/dist/structure/modal-conflict.d.ts.map +1 -1
- package/dist/structure/modal-conflict.js +1 -1
- package/dist/structure/modal-conflict.js.map +1 -1
- package/dist/structure/reference-text.d.ts +29 -0
- package/dist/structure/reference-text.d.ts.map +1 -0
- package/dist/structure/reference-text.js +79 -0
- package/dist/structure/reference-text.js.map +1 -0
- package/dist/structure-shape/baseline-load.d.ts +4 -0
- package/dist/structure-shape/baseline-load.d.ts.map +1 -0
- package/dist/structure-shape/baseline-load.js +17 -0
- package/dist/structure-shape/baseline-load.js.map +1 -0
- package/dist/structure-shape/baseline.d.ts +19 -0
- package/dist/structure-shape/baseline.d.ts.map +1 -0
- package/dist/structure-shape/baseline.js +44 -0
- package/dist/structure-shape/baseline.js.map +1 -0
- package/dist/structure-shape/features.d.ts +25 -0
- package/dist/structure-shape/features.d.ts.map +1 -0
- package/dist/structure-shape/features.js +149 -0
- package/dist/structure-shape/features.js.map +1 -0
- package/dist/structure-shape/heading-words.d.ts +14 -0
- package/dist/structure-shape/heading-words.d.ts.map +1 -0
- package/dist/structure-shape/heading-words.js +54 -0
- package/dist/structure-shape/heading-words.js.map +1 -0
- package/dist/structure-shape/of-document.d.ts +5 -0
- package/dist/structure-shape/of-document.d.ts.map +1 -0
- package/dist/structure-shape/of-document.js +6 -0
- package/dist/structure-shape/of-document.js.map +1 -0
- package/dist/structure-shape/restatement.d.ts +11 -0
- package/dist/structure-shape/restatement.d.ts.map +1 -0
- package/dist/structure-shape/restatement.js +32 -0
- package/dist/structure-shape/restatement.js.map +1 -0
- package/dist/structure-shape/score.d.ts +30 -0
- package/dist/structure-shape/score.d.ts.map +1 -0
- package/dist/structure-shape/score.js +37 -0
- package/dist/structure-shape/score.js.map +1 -0
- package/dist/yaml-values.d.ts +13 -0
- package/dist/yaml-values.d.ts.map +1 -0
- package/dist/yaml-values.js +58 -0
- package/dist/yaml-values.js.map +1 -0
- package/genres.yaml +103 -1
- package/package.json +8 -3
- package/rules/absolute-exception.yaml +83 -0
- package/rules/abstract-length.yaml +130 -0
- package/rules/adversative-ga-repeat.yaml +58 -0
- package/rules/ai-generated-composite.yaml +2 -1
- package/rules/ai-structure.yaml +202 -0
- package/rules/ai-tell.yaml +1 -1
- package/rules/announcing-opener.yaml +1 -1
- package/rules/article-sound.yaml +58 -0
- package/rules/bold-label-list.yaml +3 -3
- package/rules/bracket-nesting.yaml +74 -0
- package/rules/chat-citation-residue.yaml +77 -0
- package/rules/citation-reference-mismatch.yaml +110 -0
- package/rules/citation-style-mix.yaml +109 -0
- package/rules/clause-chain.yaml +59 -0
- package/rules/colon-lead-in.yaml +3 -3
- package/rules/contrast-framing.yaml +1 -1
- package/rules/cross-doc-broken-link.yaml +83 -0
- package/rules/cross-doc-term-variant.yaml +73 -0
- package/rules/date-format-consistency.yaml +85 -0
- package/rules/date-without-year.yaml +70 -0
- package/rules/demonstrative-opener-run.yaml +59 -0
- package/rules/doubled-nado.yaml +57 -0
- package/rules/duration-mismatch.yaml +73 -0
- package/rules/elapsed-years-mismatch.yaml +79 -0
- package/rules/emoji-heading.yaml +128 -0
- package/rules/empty-list-item.yaml +85 -0
- package/rules/empty-table-cell.yaml +89 -0
- package/rules/fact-conflict.yaml +110 -0
- package/rules/figure-reference-order.yaml +109 -0
- package/rules/heading-numbering-mix.yaml +140 -0
- package/rules/homophone-slip.yaml +58 -0
- package/rules/idiom-misuse.yaml +60 -0
- package/rules/katakana-density.yaml +93 -0
- package/rules/known-misspelling.yaml +76 -0
- package/rules/list-item-form-mix.yaml +134 -0
- package/rules/max-ten.yaml +59 -0
- package/rules/misconversion.yaml +61 -0
- package/rules/no-lead.yaml +95 -0
- package/rules/number-style-consistency.yaml +105 -0
- package/rules/number-without-unit.yaml +96 -0
- package/rules/one-sentence-paragraph-run.yaml +95 -0
- package/rules/orthographic-variant.yaml +87 -0
- package/rules/paragraph-restatement.yaml +96 -0
- package/rules/person-consistency.yaml +59 -0
- package/rules/redundant-expression.yaml +76 -0
- package/rules/reference-title-mismatch.yaml +101 -0
- package/rules/reference-topic-missing.yaml +101 -0
- package/rules/relative-date-mismatch.yaml +71 -0
- package/rules/rule-of-three.yaml +3 -3
- package/rules/section-length-uniformity.yaml +3 -3
- package/rules/sentence-initial-so.yaml +58 -0
- package/rules/sentence-rhythm.yaml +1 -1
- package/rules/stock-transition.yaml +1 -1
- package/rules/summary-fact-mismatch.yaml +122 -0
- package/rules/table-header-variant.yaml +112 -0
- package/rules/teki-overuse.yaml +59 -0
- package/rules/title-length.yaml +120 -0
- package/rules/topic-predicate-distance.yaml +59 -0
- package/rules/translationese-density.yaml +62 -0
- package/rules/unfilled-placeholder.yaml +8 -11
- package/rules/unit-mismatch.yaml +110 -0
- package/rules/unknown-word.yaml +62 -0
- package/rules/vague-link-text.yaml +77 -0
- package/rules/vague-word-density.yaml +89 -0
- package/rules/very-adjective.yaml +61 -0
- package/rules/weasel-word.yaml +60 -0
- package/rules/wordy-phrase.yaml +61 -0
- package/skills/chaff/SKILL.md +14 -6
- package/src/baseline.ts +17 -4
- package/src/check-source.ts +75 -0
- package/src/checks.ts +3 -3
- package/src/cli-args.ts +7 -1
- package/src/cli-text.ts +26 -6
- package/src/cli.ts +54 -48
- package/src/commands/compare.ts +9 -5
- package/src/commands/eval.ts +2 -2
- package/src/commands/fix-plan.ts +3 -1
- package/src/commands/grade-baseline.ts +44 -0
- package/src/commands/grade.ts +191 -0
- package/src/commands/outline.ts +4 -3
- package/src/commands/read-document.ts +17 -8
- package/src/commands/suppressions.ts +3 -2
- package/src/commands/test.ts +2 -2
- package/src/commands/tree.ts +19 -12
- package/src/compare/distinct.ts +9 -2
- package/src/compare/proper-nouns.ts +11 -7
- package/src/config/load.ts +8 -3
- package/src/config/yaml-file.ts +65 -0
- package/src/correction-edit.ts +43 -0
- package/src/cross-run.ts +107 -0
- package/src/cross-variants.ts +55 -0
- package/src/cross-votes.ts +29 -0
- package/src/date-format.ts +123 -0
- package/src/derived/date-arithmetic.ts +63 -0
- package/src/derived/durations.ts +52 -0
- package/src/derived/elapsed.ts +125 -0
- package/src/derived/relative-dates.ts +96 -0
- package/src/derived/sentence-buckets.ts +29 -0
- package/src/detectors/absolute-exception.ts +102 -0
- package/src/detectors/abstract-length.ts +126 -0
- package/src/detectors/ai-phrasing.ts +12 -14
- package/src/detectors/ai-structure.ts +26 -0
- package/src/detectors/blank-structure.ts +147 -0
- package/src/detectors/chat-citation.ts +50 -0
- package/src/detectors/citation-entry.ts +94 -0
- package/src/detectors/citation-marks.ts +205 -0
- package/src/detectors/citation-style.ts +46 -0
- package/src/detectors/cross-link.ts +82 -0
- package/src/detectors/cross-registry/cross-doc-broken-link.ts +4 -0
- package/src/detectors/cross-registry/cross-doc-term-variant.ts +4 -0
- package/src/detectors/cross-variant.ts +77 -0
- package/src/detectors/date-format.ts +29 -0
- package/src/detectors/date-year.ts +91 -0
- package/src/detectors/derived-numbers.ts +191 -0
- package/src/detectors/document-shape.ts +107 -0
- package/src/detectors/emoji-heading.ts +17 -0
- package/src/detectors/fact-consistency.ts +54 -0
- package/src/detectors/figure-order.ts +81 -0
- package/src/detectors/heading-numbering.ts +38 -0
- package/src/detectors/index.ts +18 -150
- package/src/detectors/invisible-character.ts +3 -3
- package/src/detectors/katakana-density.ts +62 -0
- package/src/detectors/known-correction.ts +89 -0
- package/src/detectors/lexicon-match.ts +1 -1
- package/src/detectors/lexicon.ts +3 -0
- package/src/detectors/list-parallel.ts +155 -0
- package/src/detectors/long-vowel.ts +4 -4
- package/src/detectors/misuse-match.ts +28 -0
- package/src/detectors/modal-conflict.ts +1 -1
- package/src/detectors/next-word.ts +156 -0
- package/src/detectors/number-style.ts +230 -0
- package/src/detectors/number-unit.ts +146 -0
- package/src/detectors/orthographic-variant.ts +152 -0
- package/src/detectors/paragraph-restatement.ts +68 -0
- package/src/detectors/paragraph-run.ts +27 -0
- package/src/detectors/person-consistency.ts +29 -0
- package/src/detectors/placeholder-text.ts +62 -5
- package/src/detectors/reference-text.ts +44 -0
- package/src/detectors/registry/absolute-exception.ts +4 -0
- package/src/detectors/registry/abstract-length.ts +4 -0
- package/src/detectors/registry/acronym-expansion-conflict.ts +4 -0
- package/src/detectors/registry/adverb-density.ts +4 -0
- package/src/detectors/registry/agentless-passive.ts +4 -0
- package/src/detectors/registry/agreement-slip.ts +4 -0
- package/src/detectors/registry/ai-structure.ts +4 -0
- package/src/detectors/registry/ai-tell.ts +4 -0
- package/src/detectors/registry/announced-count.ts +4 -0
- package/src/detectors/registry/article-sound.ts +4 -0
- package/src/detectors/registry/assistant-residue.ts +4 -0
- package/src/detectors/registry/bold-label-list.ts +4 -0
- package/src/detectors/registry/bracket-nesting.ts +4 -0
- package/src/detectors/registry/broken-link.ts +4 -0
- package/src/detectors/registry/chat-citation-residue.ts +4 -0
- package/src/detectors/registry/citation-entry.ts +4 -0
- package/src/detectors/registry/citation-style.ts +4 -0
- package/src/detectors/registry/clause-chain.ts +4 -0
- package/src/detectors/registry/colon-lead-in.ts +4 -0
- package/src/detectors/registry/concrete-evidence.ts +4 -0
- package/src/detectors/registry/conjunction-run.ts +4 -0
- package/src/detectors/registry/contraction-mix.ts +4 -0
- package/src/detectors/registry/contrast-framing.ts +4 -0
- package/src/detectors/registry/count-per-section.ts +4 -0
- package/src/detectors/registry/cushion-density.ts +4 -0
- package/src/detectors/registry/custom-pattern.ts +4 -0
- package/src/detectors/registry/custom-tokens.ts +4 -0
- package/src/detectors/registry/custom-words.ts +4 -0
- package/src/detectors/registry/dangling-figure.ts +4 -0
- package/src/detectors/registry/dangling-reference.ts +4 -0
- package/src/detectors/registry/dash-density.ts +4 -0
- package/src/detectors/registry/date-format.ts +4 -0
- package/src/detectors/registry/date-order.ts +4 -0
- package/src/detectors/registry/date-range-reversed.ts +4 -0
- package/src/detectors/registry/date-weekday-mismatch.ts +4 -0
- package/src/detectors/registry/date-without-year.ts +4 -0
- package/src/detectors/registry/doubled-particle.ts +4 -0
- package/src/detectors/registry/doubled-punctuation.ts +4 -0
- package/src/detectors/registry/doubled-word.ts +4 -0
- package/src/detectors/registry/duplicate-definition.ts +4 -0
- package/src/detectors/registry/duplicate-heading.ts +4 -0
- package/src/detectors/registry/duration-mismatch.ts +4 -0
- package/src/detectors/registry/elapsed-years-mismatch.ts +4 -0
- package/src/detectors/registry/emoji-density.ts +4 -0
- package/src/detectors/registry/emoji-heading.ts +4 -0
- package/src/detectors/registry/empty-list-item.ts +4 -0
- package/src/detectors/registry/empty-section.ts +4 -0
- package/src/detectors/registry/empty-table-cell.ts +4 -0
- package/src/detectors/registry/expletive.ts +4 -0
- package/src/detectors/registry/fact-conflict.ts +4 -0
- package/src/detectors/registry/figure-order.ts +4 -0
- package/src/detectors/registry/fullwidth-alnum.ts +4 -0
- package/src/detectors/registry/hankaku-kana.ts +4 -0
- package/src/detectors/registry/heading-echo.ts +4 -0
- package/src/detectors/registry/heading-level-skip.ts +4 -0
- package/src/detectors/registry/heading-numbering.ts +4 -0
- package/src/detectors/registry/hedging.ts +4 -0
- package/src/detectors/registry/image-alt-text.ts +4 -0
- package/src/detectors/registry/intensified-adjective.ts +4 -0
- package/src/detectors/registry/internal-jargon.ts +4 -0
- package/src/detectors/registry/invisible-character.ts +4 -0
- package/src/detectors/registry/kanji-run.ts +4 -0
- package/src/detectors/registry/katakana-density.ts +4 -0
- package/src/detectors/registry/katakana-long-vowel.ts +4 -0
- package/src/detectors/registry/known-correction.ts +4 -0
- package/src/detectors/registry/kutoten-consistency.ts +4 -0
- package/src/detectors/registry/latin-spacing.ts +4 -0
- package/src/detectors/registry/list-item-form-mix.ts +4 -0
- package/src/detectors/registry/middle-dot.ts +4 -0
- package/src/detectors/registry/misuse-match.ts +4 -0
- package/src/detectors/registry/modal-conflict.ts +4 -0
- package/src/detectors/registry/name-variant.ts +4 -0
- package/src/detectors/registry/ngram-repetition.ts +4 -0
- package/src/detectors/registry/no-lead.ts +4 -0
- package/src/detectors/registry/nominalization.ts +4 -0
- package/src/detectors/registry/noun-ending.ts +4 -0
- package/src/detectors/registry/number-style-consistency.ts +4 -0
- package/src/detectors/registry/number-without-unit.ts +4 -0
- package/src/detectors/registry/numbering-gap.ts +4 -0
- package/src/detectors/registry/one-sentence-paragraph-run.ts +4 -0
- package/src/detectors/registry/opener-pile.ts +4 -0
- package/src/detectors/registry/opener-run.ts +4 -0
- package/src/detectors/registry/orthographic-variant.ts +4 -0
- package/src/detectors/registry/outside-announced-list.ts +4 -0
- package/src/detectors/registry/oxford-comma.ts +4 -0
- package/src/detectors/registry/paragraph-length.ts +4 -0
- package/src/detectors/registry/paragraph-restatement.ts +4 -0
- package/src/detectors/registry/paragraph-variance.ts +4 -0
- package/src/detectors/registry/percent-sum-mismatch.ts +4 -0
- package/src/detectors/registry/person-mix.ts +4 -0
- package/src/detectors/registry/phrase-count.ts +4 -0
- package/src/detectors/registry/phrase-density.ts +4 -0
- package/src/detectors/registry/phrase-match.ts +4 -0
- package/src/detectors/registry/preamble-length.ts +4 -0
- package/src/detectors/registry/preferred-term.ts +4 -0
- package/src/detectors/registry/proper-noun-density.ts +4 -0
- package/src/detectors/registry/ra-nuki.ts +4 -0
- package/src/detectors/registry/reference-title-mismatch.ts +4 -0
- package/src/detectors/registry/reference-topic-missing.ts +4 -0
- package/src/detectors/registry/relative-date-mismatch.ts +4 -0
- package/src/detectors/registry/repeated-conjunction.ts +4 -0
- package/src/detectors/registry/repeated-head.ts +4 -0
- package/src/detectors/registry/required-sections.ts +4 -0
- package/src/detectors/registry/requirement-modal.ts +4 -0
- package/src/detectors/registry/requirement-smell.ts +4 -0
- package/src/detectors/registry/rule-of-three.ts +4 -0
- package/src/detectors/registry/section-uniformity.ts +4 -0
- package/src/detectors/registry/sentence-comma-count.ts +4 -0
- package/src/detectors/registry/sentence-conjunctive-count.ts +4 -0
- package/src/detectors/registry/sentence-ending.ts +4 -0
- package/src/detectors/registry/sentence-length.ts +4 -0
- package/src/detectors/registry/sentence-rhythm.ts +4 -0
- package/src/detectors/registry/sentence-word-count.ts +4 -0
- package/src/detectors/registry/space-before-punctuation.ts +4 -0
- package/src/detectors/registry/spelling-variety.ts +4 -0
- package/src/detectors/registry/stock-transition.ts +4 -0
- package/src/detectors/registry/stray-space.ts +4 -0
- package/src/detectors/registry/summary-fact-mismatch.ts +4 -0
- package/src/detectors/registry/table-header-variant.ts +4 -0
- package/src/detectors/registry/title-case-mix.ts +4 -0
- package/src/detectors/registry/title-length.ts +4 -0
- package/src/detectors/registry/topic-predicate-distance.ts +4 -0
- package/src/detectors/registry/total-mismatch.ts +4 -0
- package/src/detectors/registry/unbalanced-bracket.ts +4 -0
- package/src/detectors/registry/undefined-acronym.ts +4 -0
- package/src/detectors/registry/unfilled-placeholder.ts +4 -0
- package/src/detectors/registry/unit-mismatch.ts +4 -0
- package/src/detectors/registry/unknown-word.ts +4 -0
- package/src/detectors/registry/unqualified-superlative.ts +4 -0
- package/src/detectors/registry/unused-definition.ts +4 -0
- package/src/detectors/registry/url-run-on.ts +4 -0
- package/src/detectors/registry/use-before-definition.ts +4 -0
- package/src/detectors/registry/vague-density.ts +4 -0
- package/src/detectors/registry/vague-figure-pointer.ts +4 -0
- package/src/detectors/registry/vague-link-text.ts +4 -0
- package/src/detectors/registry-files.ts +12 -0
- package/src/detectors/registry-load.ts +23 -0
- package/src/detectors/relative-dates.ts +113 -0
- package/src/detectors/sentence-counts.ts +112 -0
- package/src/detectors/sentence-load.ts +45 -0
- package/src/detectors/spelling-variety.ts +2 -2
- package/src/detectors/table-header.ts +174 -0
- package/src/detectors/team.ts +12 -4
- package/src/detectors/unit-consistency.ts +55 -0
- package/src/detectors/unknown-word.ts +43 -0
- package/src/detectors/vague-link-text.ts +12 -0
- package/src/document-reading.ts +25 -0
- package/src/document.ts +8 -6
- package/src/experimental-alone.ts +21 -0
- package/src/facts/fact-conflicts.ts +64 -0
- package/src/facts/fact-scope.ts +141 -0
- package/src/facts/fact-values.ts +110 -0
- package/src/facts/labelled-facts.ts +131 -0
- package/src/facts/measures.ts +54 -0
- package/src/facts/table-facts.ts +71 -0
- package/src/facts/trim-marks.ts +18 -0
- package/src/facts/unit-conflicts.ts +45 -0
- package/src/figure-references.ts +20 -1
- package/src/files.ts +16 -10
- package/src/fix-plan/mode.ts +8 -2
- package/src/fix-plan/plan.ts +23 -2
- package/src/fix-plan/render.ts +18 -0
- package/src/fix-plan/structure-target-text.ts +90 -0
- package/src/fix-plan/structure-targets.ts +46 -0
- package/src/fix-plan/text.ts +3 -0
- package/src/grade/baseline-text.ts +80 -0
- package/src/grade/baseline.ts +140 -0
- package/src/grade/checks.ts +73 -0
- package/src/grade/context-support.ts +60 -0
- package/src/grade/contexts.ts +53 -0
- package/src/grade/grade-item.ts +133 -0
- package/src/grade/item.ts +208 -0
- package/src/grade/order.ts +10 -0
- package/src/grade/pairing.ts +22 -0
- package/src/grade/rates.ts +39 -0
- package/src/grade/render-baseline.ts +74 -0
- package/src/grade/render-markdown.ts +62 -0
- package/src/grade/render-variants.ts +115 -0
- package/src/grade/render.ts +84 -0
- package/src/grade/result-name.ts +9 -0
- package/src/grade/result.ts +82 -0
- package/src/grade/results-read.ts +111 -0
- package/src/grade/rubric-verdict.ts +86 -0
- package/src/grade/rubric.ts +192 -0
- package/src/grade/scorer.ts +33 -0
- package/src/grade/setup.ts +43 -0
- package/src/grade/stamp.ts +60 -0
- package/src/grade/summary.ts +112 -0
- package/src/grade/text.ts +164 -0
- package/src/grade/variants-input.ts +54 -0
- package/src/grade/variants-text.ts +88 -0
- package/src/grade/variants.ts +118 -0
- package/src/grade/verdict.ts +27 -0
- package/src/grade-api.ts +184 -0
- package/src/heading-numbering.ts +106 -0
- package/src/kana-spelling.ts +49 -0
- package/src/link-text.ts +46 -0
- package/src/outline/render.ts +9 -2
- package/src/outline/structure-render.ts +101 -0
- package/src/outline/structure-text.ts +124 -0
- package/src/outline/text.ts +5 -0
- package/src/paragraph-runs.ts +30 -0
- package/src/person-forms.ts +119 -0
- package/src/plugin.ts +13 -0
- package/src/reasons.ts +4 -0
- package/src/render/explain.ts +7 -1
- package/src/render/friendly.ts +17 -1
- package/src/render/rules-json.ts +8 -4
- package/src/render/rules-table.ts +1 -1
- package/src/render/sarif.ts +31 -1
- package/src/resolve-genre.ts +1 -1
- package/src/rule-guide.ts +3 -0
- package/src/run.ts +74 -49
- package/src/sentence-load.ts +77 -0
- package/src/spelling-variants.ts +42 -0
- package/src/spelling.ts +81 -0
- package/src/structure/absolute-exception.ts +104 -0
- package/src/structure/issues.ts +22 -0
- package/src/structure/modal-conflict.ts +1 -1
- package/src/structure/reference-text.ts +114 -0
- package/src/structure-shape/baseline-load.ts +18 -0
- package/src/structure-shape/baseline.ts +62 -0
- package/src/structure-shape/features.ts +189 -0
- package/src/structure-shape/heading-words.ts +71 -0
- package/src/structure-shape/of-document.ts +7 -0
- package/src/structure-shape/restatement.ts +41 -0
- package/src/structure-shape/score.ts +65 -0
- package/src/yaml-values.ts +61 -0
- package/structure-baseline.yaml +289 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { LengthUnit } from "../plugin.ts";
|
|
2
|
+
import { compareText, sortedByKey, tally } from "./order.ts";
|
|
3
|
+
import { rateOf } from "./rates.ts";
|
|
4
|
+
import type { GradeFact, GradeResult, NotRunEntry, Stamp } from "./result.ts";
|
|
5
|
+
|
|
6
|
+
// The summary of a run (spec §29.3), from the per-output results alone, so the same results always sum the same way.
|
|
7
|
+
|
|
8
|
+
/** Per length unit: Japanese outputs are measured in characters and English ones in words, and the two never add up. */
|
|
9
|
+
type PerUnit = Partial<Record<LengthUnit, number>>;
|
|
10
|
+
|
|
11
|
+
type RuleSummary = { readonly findings: number; readonly outputs: number; readonly rate: PerUnit };
|
|
12
|
+
|
|
13
|
+
export type GradeSummary = {
|
|
14
|
+
readonly total: number;
|
|
15
|
+
readonly passed: number;
|
|
16
|
+
readonly failed: readonly { readonly id: string; readonly variant?: string | undefined; readonly failedBecause: readonly string[] }[];
|
|
17
|
+
readonly size: PerUnit;
|
|
18
|
+
readonly rules: Readonly<Record<string, RuleSummary>>;
|
|
19
|
+
readonly facts: { readonly dropped: Readonly<Record<string, number>>; readonly added: Readonly<Record<string, number>> };
|
|
20
|
+
readonly citations: { readonly checked: number; readonly failed: number };
|
|
21
|
+
/** Only when some output had contexts: how many, their facts checked, and the facts no passage states by kind. */
|
|
22
|
+
readonly contexts?: { readonly outputs: number; readonly checked: number; readonly unsupported: Readonly<Record<string, number>> } | undefined;
|
|
23
|
+
readonly notRun: readonly (NotRunEntry & { readonly outputs: number })[];
|
|
24
|
+
/** The penalty points of every output, added up. Only with a `grade:` rubric. */
|
|
25
|
+
readonly penalty?: number | undefined;
|
|
26
|
+
readonly stamp: Stamp | undefined;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const sizesOf = (results: readonly GradeResult[]): PerUnit =>
|
|
30
|
+
results.reduce<PerUnit>((sizes, result) => ({ ...sizes, [result.size.unit]: (sizes[result.size.unit] ?? 0) + result.size.value }), {});
|
|
31
|
+
|
|
32
|
+
const countIn = (result: GradeResult, rule: string): number => result.findings.filter((finding) => finding.rule === rule).length;
|
|
33
|
+
|
|
34
|
+
/** A rule's findings over every output of one unit, per 1,000 of that unit. */
|
|
35
|
+
const ratePerUnit = (results: readonly GradeResult[], rule: string, sizes: PerUnit): PerUnit =>
|
|
36
|
+
Object.fromEntries(
|
|
37
|
+
Object.entries(sizes).flatMap(([unit, size]) => {
|
|
38
|
+
const count = results.filter((result) => result.size.unit === unit).reduce((sum, result) => sum + countIn(result, rule), 0);
|
|
39
|
+
const rate = count === 0 ? undefined : rateOf(count, size);
|
|
40
|
+
return rate === undefined ? [] : [[unit, rate]];
|
|
41
|
+
}),
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
const rulesOf = (results: readonly GradeResult[], sizes: PerUnit): Record<string, RuleSummary> => {
|
|
45
|
+
const ruleIds = [...new Set(results.flatMap((result) => result.findings.map((finding) => finding.rule)))];
|
|
46
|
+
return sortedByKey(
|
|
47
|
+
ruleIds.map((rule): [string, RuleSummary] => [
|
|
48
|
+
rule,
|
|
49
|
+
{
|
|
50
|
+
findings: results.reduce((sum, result) => sum + countIn(result, rule), 0),
|
|
51
|
+
outputs: results.filter((result) => countIn(result, rule) > 0).length,
|
|
52
|
+
rate: ratePerUnit(results, rule, sizes),
|
|
53
|
+
},
|
|
54
|
+
]),
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const kindsOf = (facts: readonly GradeFact[]): Record<string, number> => tally(facts.filter((fact) => !fact.allowed).map((fact) => fact.kind));
|
|
59
|
+
|
|
60
|
+
/** Each rule not run, with the reason, and how many outputs it did not run on. */
|
|
61
|
+
const notRunOf = (results: readonly GradeResult[]): GradeSummary["notRun"] => {
|
|
62
|
+
const counts = new Map<string, { entry: NotRunEntry; outputs: number }>();
|
|
63
|
+
results.forEach((result) =>
|
|
64
|
+
result.notRun.forEach((entry) => {
|
|
65
|
+
const key = `${entry.rule}\n${entry.reason}`;
|
|
66
|
+
counts.set(key, { entry, outputs: (counts.get(key)?.outputs ?? 0) + 1 });
|
|
67
|
+
}),
|
|
68
|
+
);
|
|
69
|
+
return [...counts.values()].map(({ entry, outputs }) => ({ ...entry, outputs })).toSorted((left, right) => compareText(left.rule, right.rule));
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const penaltyOf = (results: readonly GradeResult[]): { readonly penalty?: number } => {
|
|
73
|
+
const scored = results.flatMap((result) => (result.score === undefined ? [] : [result.score.penalty]));
|
|
74
|
+
return scored.length === 0 ? {} : { penalty: scored.reduce((sum, points) => sum + points, 0) };
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const contextsOf = (results: readonly GradeResult[]): Pick<GradeSummary, "contexts"> => {
|
|
78
|
+
const read = results.flatMap((result) => (result.contexts === undefined ? [] : [result.contexts]));
|
|
79
|
+
if (read.length === 0) return {};
|
|
80
|
+
return {
|
|
81
|
+
contexts: {
|
|
82
|
+
outputs: read.length,
|
|
83
|
+
checked: read.reduce((sum, contexts) => sum + contexts.checked, 0),
|
|
84
|
+
unsupported: kindsOf(read.flatMap((contexts) => contexts.unsupported)),
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export const summaryOf = (results: readonly GradeResult[]): GradeSummary => {
|
|
90
|
+
const sizes = sizesOf(results);
|
|
91
|
+
return {
|
|
92
|
+
total: results.length,
|
|
93
|
+
passed: results.filter((result) => result.pass).length,
|
|
94
|
+
failed: results
|
|
95
|
+
.filter((result) => !result.pass)
|
|
96
|
+
.map((result) => ({ id: result.id, ...(result.variant === undefined ? {} : { variant: result.variant }), failedBecause: result.failedBecause })),
|
|
97
|
+
size: sizes,
|
|
98
|
+
rules: rulesOf(results, sizes),
|
|
99
|
+
facts: {
|
|
100
|
+
dropped: kindsOf(results.flatMap((result) => result.facts?.dropped ?? [])),
|
|
101
|
+
added: kindsOf(results.flatMap((result) => result.facts?.added ?? [])),
|
|
102
|
+
},
|
|
103
|
+
citations: {
|
|
104
|
+
checked: results.reduce((sum, result) => sum + (result.citations?.checked ?? 0), 0),
|
|
105
|
+
failed: results.reduce((sum, result) => sum + (result.citations?.failed.length ?? 0), 0),
|
|
106
|
+
},
|
|
107
|
+
...contextsOf(results),
|
|
108
|
+
notRun: notRunOf(results),
|
|
109
|
+
...penaltyOf(results),
|
|
110
|
+
stamp: results[0]?.stamp,
|
|
111
|
+
};
|
|
112
|
+
};
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import type { Texts } from "../ui.ts";
|
|
2
|
+
import { ATOM_KINDS } from "../compare/atom.ts";
|
|
3
|
+
import type { ItemProblem, ItemProblemKind } from "./item.ts";
|
|
4
|
+
import type { Expected, RubricProblem } from "./rubric.ts";
|
|
5
|
+
|
|
6
|
+
export type GradeText = {
|
|
7
|
+
readonly usage: string;
|
|
8
|
+
readonly noReference: string;
|
|
9
|
+
readonly noCitations: string;
|
|
10
|
+
readonly noContexts: string;
|
|
11
|
+
readonly contextsUnread: (kind: string, reason: string) => string;
|
|
12
|
+
readonly uncheckedSentences: (count: number) => string;
|
|
13
|
+
readonly unknownRule: string;
|
|
14
|
+
readonly rubricProblem: (problem: RubricProblem) => string;
|
|
15
|
+
readonly penalty: (total: number) => string;
|
|
16
|
+
readonly noStructure: (source: string, language: string) => string;
|
|
17
|
+
readonly unreadable: (path: string, why: string) => string;
|
|
18
|
+
readonly problem: (problem: ItemProblem) => string;
|
|
19
|
+
readonly cannotLoad: (why: string) => string;
|
|
20
|
+
readonly wrote: (path: string, count: number) => string;
|
|
21
|
+
readonly totals: (path: string, total: number, passed: number) => string;
|
|
22
|
+
readonly failedHeading: string;
|
|
23
|
+
readonly ratesHeading: (unit: string) => string;
|
|
24
|
+
readonly unit: Readonly<Record<"char" | "word", string>>;
|
|
25
|
+
readonly outputsWith: (count: number) => string;
|
|
26
|
+
readonly facts: (dropped: number, added: number, droppedKinds: string, addedKinds: string) => string;
|
|
27
|
+
readonly citations: (checked: number, failed: number) => string;
|
|
28
|
+
readonly contexts: (outputs: number, checked: number, unsupported: number, kinds: string) => string;
|
|
29
|
+
readonly notRunHeading: (count: number) => string;
|
|
30
|
+
readonly inOutputs: (count: number) => string;
|
|
31
|
+
readonly stamp: string;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/** Where the problem is, when it is on a line of a file. An item given to grade() has none. */
|
|
35
|
+
const lineJa = (problem: ItemProblem): string => (problem.line > 0 ? `${String(problem.line)} 行目: ` : "");
|
|
36
|
+
|
|
37
|
+
const lineEn = (problem: ItemProblem): string => (problem.line > 0 ? `line ${String(problem.line)}: ` : "");
|
|
38
|
+
|
|
39
|
+
const PROBLEM_JA: Readonly<Record<ItemProblemKind, (problem: ItemProblem) => string>> = {
|
|
40
|
+
"not-json": (problem) => `${lineJa(problem)}JSON として読めません(${problem.detail ?? ""})`,
|
|
41
|
+
"not-object": (problem) => `${lineJa(problem)}1 行に 1 つのオブジェクト {…} を書いてください`,
|
|
42
|
+
"no-id": (problem) => `${lineJa(problem)}id(空でない文字列)がありません`,
|
|
43
|
+
"no-output": (problem) => `${lineJa(problem)}output(文字列)がありません`,
|
|
44
|
+
"not-string": (problem) => `${lineJa(problem)}${problem.detail ?? ""} は文字列で書いてください`,
|
|
45
|
+
"not-text-map": (problem) => `${lineJa(problem)}${problem.detail ?? ""} は { "名前": "本文" } の形で書いてください`,
|
|
46
|
+
"not-citations": (problem) => `${lineJa(problem)}citations は [{ "source", "address", "quote" }] の配列で書いてください`,
|
|
47
|
+
"citations-without-sources": (problem) => `${lineJa(problem)}citations があるのに sources がありません。引用を照らす原文を sources に入れてください`,
|
|
48
|
+
"not-contexts": (problem) => `${lineJa(problem)}contexts は文字列の配列(["検索で取った一節", …])で書いてください`,
|
|
49
|
+
"duplicate-id": (problem) => `${lineJa(problem)}id "${problem.detail ?? ""}" は ${String(problem.first ?? 0)} 行目と同じです`,
|
|
50
|
+
"no-variant": (problem) =>
|
|
51
|
+
`${lineJa(problem)}${problem.detail ?? ""}(どの prompt や model の出力かを示す名前)がありません。並べて比べるファイルでは、どの行にも書いてください`,
|
|
52
|
+
"unknown-source": (problem) => `${lineJa(problem)}引用の source "${problem.detail ?? ""}" が sources にありません`,
|
|
53
|
+
"which-source": (problem) => `${lineJa(problem)}番地 ${problem.detail ?? ""} の引用に source がありません。原文が二つ以上あるときは名前を書いてください`,
|
|
54
|
+
"unknown-language": (problem) => `${lineJa(problem)}language "${problem.detail ?? ""}" は読めません`,
|
|
55
|
+
"unknown-genre": (problem) => `${lineJa(problem)}genre "${problem.detail ?? ""}" は chaff の知らないジャンルです(chaff genres で一覧)`,
|
|
56
|
+
empty: () => "採点する出力が 1 行もありません",
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const PROBLEM_EN: typeof PROBLEM_JA = {
|
|
60
|
+
"not-json": (problem) => `${lineEn(problem)}not valid JSON (${problem.detail ?? ""})`,
|
|
61
|
+
"not-object": (problem) => `${lineEn(problem)}write one object {…} per line`,
|
|
62
|
+
"no-id": (problem) => `${lineEn(problem)}no id (a non-empty string)`,
|
|
63
|
+
"no-output": (problem) => `${lineEn(problem)}no output (a string)`,
|
|
64
|
+
"not-string": (problem) => `${lineEn(problem)}${problem.detail ?? ""} must be a string`,
|
|
65
|
+
"not-text-map": (problem) => `${lineEn(problem)}${problem.detail ?? ""} must be { "name": "text" }`,
|
|
66
|
+
"not-citations": (problem) => `${lineEn(problem)}citations must be an array of { "source", "address", "quote" }`,
|
|
67
|
+
"citations-without-sources": (problem) => `${lineEn(problem)}citations without sources; put the text they quote in sources`,
|
|
68
|
+
"not-contexts": (problem) => `${lineEn(problem)}contexts must be an array of strings (["a retrieved passage", …])`,
|
|
69
|
+
"duplicate-id": (problem) => `${lineEn(problem)}id "${problem.detail ?? ""}" is already on line ${String(problem.first ?? 0)}`,
|
|
70
|
+
"no-variant": (problem) => `${lineEn(problem)}no ${problem.detail ?? ""} (the variant's name); when a file compares variants, every line needs one`,
|
|
71
|
+
"unknown-source": (problem) => `${lineEn(problem)}the citation's source "${problem.detail ?? ""}" is not in sources`,
|
|
72
|
+
"which-source": (problem) => `${lineEn(problem)}the citation of ${problem.detail ?? ""} names no source; with two or more sources, name one`,
|
|
73
|
+
"unknown-language": (problem) => `${lineEn(problem)}language "${problem.detail ?? ""}" cannot be read`,
|
|
74
|
+
"unknown-genre": (problem) => `${lineEn(problem)}genre "${problem.detail ?? ""}" is not one chaff knows (chaff genres lists them)`,
|
|
75
|
+
empty: () => "no output to grade: the file has no item",
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const EXPECTED_JA: Readonly<Record<Expected, string>> = {
|
|
79
|
+
map: "キーと値の組({ … })",
|
|
80
|
+
count: " 0 以上の整数",
|
|
81
|
+
number: " 0 以上の数",
|
|
82
|
+
boolean: " true か false",
|
|
83
|
+
words: "空でない文字列の並び",
|
|
84
|
+
kinds: `事実の種類(${ATOM_KINDS.join("・")})の並び`,
|
|
85
|
+
"known-key": "知っているキーだけ",
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const EXPECTED_EN: Readonly<Record<Expected, string>> = {
|
|
89
|
+
map: "a map ({ … })",
|
|
90
|
+
count: "a whole number from 0",
|
|
91
|
+
number: "a number from 0",
|
|
92
|
+
boolean: "true or false",
|
|
93
|
+
words: "a list of non-empty strings",
|
|
94
|
+
kinds: `a list of fact kinds (${ATOM_KINDS.join(", ")})`,
|
|
95
|
+
"known-key": "a key chaff knows",
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/** A bracketed aside, or nothing when there is nothing to say. */
|
|
99
|
+
const aside = (open: string, inner: string, close: string): string => (inner === "" ? "" : [open, inner, close].join(""));
|
|
100
|
+
|
|
101
|
+
export const GRADE_TEXT: Texts<GradeText> = {
|
|
102
|
+
ja: {
|
|
103
|
+
usage:
|
|
104
|
+
"使い方: chaff grade <items.jsonl> [--out <results.jsonl>] [--baseline <前の results.jsonl>] [--variant-key <欄の名前>] [--format text|json|markdown] [--json] [--compact] [--experimental] [--genre <ジャンル>]",
|
|
105
|
+
noReference: "reference が無い(事実は reference と照らす)",
|
|
106
|
+
noCitations: "citations が無い(chaff は出力から引用を推測しない)",
|
|
107
|
+
noContexts: "contexts が無い(回答の事実は、検索で取った一節と照らす)",
|
|
108
|
+
contextsUnread: (kind, reason) => `contexts と照らすとき、${kind} を読み切れなかった(${reason})。その種類の事実は、一節にあっても見つからないことがある`,
|
|
109
|
+
uncheckedSentences: (count) => `数・日付・名前・引用の無い文 ${String(count)} 件は、contexts に支えられているかを照らしていない(意味を読む必要がある)`,
|
|
110
|
+
unknownRule: "grade: に書かれているが、chaff の知らないルール",
|
|
111
|
+
rubricProblem: (problem) => `chaff.yaml の ${problem.path} は${EXPECTED_JA[problem.expected]}で書いてください(書かれていたのは ${problem.written})`,
|
|
112
|
+
penalty: (total) => `減点の和: ${String(total)}`,
|
|
113
|
+
noStructure: (source, language) => `原文 ${source} の言語 ${language} のパッケージは文書の構造を読めない`,
|
|
114
|
+
unreadable: (path, why) => `${path} を読めませんでした: ${why}`,
|
|
115
|
+
problem: (problem) => PROBLEM_JA[problem.kind](problem),
|
|
116
|
+
cannotLoad: (why) => `言語パッケージを読み込めません: ${why}`,
|
|
117
|
+
wrote: (path, count) => `出力ごとの結果を書きました: ${path}(${String(count)} 行)`,
|
|
118
|
+
totals: (path, total, passed) => `${path}: ${String(total)} 件の出力、${String(passed)} 件が通り、${String(total - passed)} 件が落ちた`,
|
|
119
|
+
failedHeading: "落ちた出力",
|
|
120
|
+
ratesHeading: (unit) => `ルールごとの率(1,000 ${unit}あたり、指摘のあった出力の数)`,
|
|
121
|
+
unit: { char: "字", word: "語" },
|
|
122
|
+
outputsWith: (count) => `${String(count)} 件`,
|
|
123
|
+
facts: (dropped, added, droppedKinds, addedKinds) =>
|
|
124
|
+
`事実: 落ちた ${String(dropped)}${aside("(", droppedKinds, ")")}、足された ${String(added)}${aside("(", addedKinds, ")")}`,
|
|
125
|
+
citations: (checked, failed) => `引用: ${String(checked)} 件を照らし、${String(failed)} 件が外れた`,
|
|
126
|
+
contexts: (outputs, checked, unsupported, kinds) =>
|
|
127
|
+
`contexts: ${String(outputs)} 件の出力の事実 ${String(checked)} 件を照らし、${String(unsupported)} 件がどの一節にも無かった${aside("(", kinds, ")")}`,
|
|
128
|
+
notRunHeading: (count) => `動かなかったもの ${String(count)} 件`,
|
|
129
|
+
inOutputs: (count) => `${String(count)} 件の出力`,
|
|
130
|
+
stamp: "再現の印",
|
|
131
|
+
},
|
|
132
|
+
en: {
|
|
133
|
+
usage:
|
|
134
|
+
"usage: chaff grade <items.jsonl> [--out <results.jsonl>] [--baseline <earlier results.jsonl>] [--variant-key <field>] [--format text|json|markdown] [--json] [--compact] [--experimental] [--genre <genre>]",
|
|
135
|
+
noReference: "no reference given (facts are checked against a reference)",
|
|
136
|
+
noCitations: "no citations given (chaff does not guess quotations from the output)",
|
|
137
|
+
noContexts: "no contexts given (the output's facts are checked against retrieved passages)",
|
|
138
|
+
contextsUnread: (kind, reason) =>
|
|
139
|
+
`against contexts, ${kind} could not be fully read (${reason}); a fact of that kind may be in a passage and still not be found`,
|
|
140
|
+
uncheckedSentences: (count) =>
|
|
141
|
+
`${String(count)} ${count === 1 ? "sentence states" : "sentences state"} no number, date, name or quotation, so their support by contexts is not checked (it needs reading)`,
|
|
142
|
+
unknownRule: "named under grade: but not a rule chaff knows",
|
|
143
|
+
rubricProblem: (problem) => `chaff.yaml: ${problem.path} must be ${EXPECTED_EN[problem.expected]} (found ${problem.written})`,
|
|
144
|
+
penalty: (total) => `Penalty points: ${String(total)}`,
|
|
145
|
+
noStructure: (source, language) => `the ${language} package cannot read the structure of source ${source}`,
|
|
146
|
+
unreadable: (path, why) => `Could not read ${path}: ${why}`,
|
|
147
|
+
problem: (problem) => PROBLEM_EN[problem.kind](problem),
|
|
148
|
+
cannotLoad: (why) => `Cannot load a language package: ${why}`,
|
|
149
|
+
wrote: (path, count) => `Wrote one result per output: ${path} (${String(count)} lines)`,
|
|
150
|
+
totals: (path, total, passed) => `${path}: ${String(total)} outputs, ${String(passed)} passed, ${String(total - passed)} failed`,
|
|
151
|
+
failedHeading: "Failed outputs",
|
|
152
|
+
ratesHeading: (unit) => `Rule rates (per 1,000 ${unit}, outputs with a finding)`,
|
|
153
|
+
unit: { char: "characters", word: "words" },
|
|
154
|
+
outputsWith: (count) => `${String(count)} ${count === 1 ? "output" : "outputs"}`,
|
|
155
|
+
facts: (dropped, added, droppedKinds, addedKinds) =>
|
|
156
|
+
`Facts: ${String(dropped)} dropped${aside(" (", droppedKinds, ")")}, ${String(added)} added${aside(" (", addedKinds, ")")}`,
|
|
157
|
+
citations: (checked, failed) => `Quotations: ${String(checked)} checked, ${String(failed)} failed`,
|
|
158
|
+
contexts: (outputs, checked, unsupported, kinds) =>
|
|
159
|
+
`Contexts: ${String(checked)} facts checked in ${String(outputs)} ${outputs === 1 ? "output" : "outputs"}, ${String(unsupported)} in no passage${aside(" (", kinds, ")")}`,
|
|
160
|
+
notRunHeading: (count) => `${String(count)} not run`,
|
|
161
|
+
inOutputs: (count) => `${String(count)} ${count === 1 ? "output" : "outputs"}`,
|
|
162
|
+
stamp: "Stamp",
|
|
163
|
+
},
|
|
164
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { GradeResult } from "./result.ts";
|
|
2
|
+
import { isGradeResult } from "./results-read.ts";
|
|
3
|
+
|
|
4
|
+
// The results `compareVariants()` is given, checked and grouped by variant. Pure. A harness builds this input by hand, so
|
|
5
|
+
// a result without an id, without a variant or under an id its variant already has is said, not silently dropped.
|
|
6
|
+
|
|
7
|
+
/** Each variant's results, by variant label then id, in order of first appearance. */
|
|
8
|
+
export type VariantGroups = ReadonlyMap<string, ReadonlyMap<string, GradeResult>>;
|
|
9
|
+
|
|
10
|
+
/** Labelled results, or each variant's results under its label. */
|
|
11
|
+
export type VariantInput = readonly GradeResult[] | Readonly<Record<string, readonly GradeResult[]>>;
|
|
12
|
+
|
|
13
|
+
type Labelled = { readonly variant: unknown; readonly result: unknown; readonly place: string };
|
|
14
|
+
|
|
15
|
+
const isRecord = (value: unknown): value is Record<string, unknown> => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
16
|
+
|
|
17
|
+
const labelledOf = (input: unknown): Labelled[] | undefined => {
|
|
18
|
+
if (Array.isArray(input))
|
|
19
|
+
return input.map((result: unknown, index) => ({ variant: isRecord(result) ? result["variant"] : undefined, result, place: `results[${String(index)}]` }));
|
|
20
|
+
if (!isRecord(input)) return undefined;
|
|
21
|
+
return Object.entries(input).flatMap(([variant, results]) =>
|
|
22
|
+
Array.isArray(results)
|
|
23
|
+
? results.map((result: unknown, index) => ({ variant, result, place: `${variant}[${String(index)}]` }))
|
|
24
|
+
: [{ variant, result: results, place: variant }],
|
|
25
|
+
);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/** A whole result line, as `--out` writes it, with an id to match by: a partial object would break the table, not be compared. */
|
|
29
|
+
const isResult = (value: unknown): value is GradeResult => isGradeResult(value) && value.id !== "";
|
|
30
|
+
|
|
31
|
+
/** Why one entry cannot be compared, or undefined when it can. */
|
|
32
|
+
const problemOf = (entry: Labelled, groups: ReadonlyMap<string, ReadonlyMap<string, GradeResult>>): string | undefined => {
|
|
33
|
+
if (!isResult(entry.result)) return `${entry.place}: not a grade result with an id`;
|
|
34
|
+
if (typeof entry.variant !== "string" || entry.variant === "") return `${entry.place}: id "${entry.result.id}" has no variant`;
|
|
35
|
+
return groups.get(entry.variant)?.has(entry.result.id) === true
|
|
36
|
+
? `${entry.place}: id "${entry.result.id}" is already in variant "${entry.variant}"`
|
|
37
|
+
: undefined;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/** The results grouped by variant, or every reason some cannot be. No result at all is a problem, not an empty comparison. */
|
|
41
|
+
export const variantGroupsOf = (input: unknown): { readonly groups: VariantGroups } | { readonly problems: readonly string[] } => {
|
|
42
|
+
const labelled = labelledOf(input);
|
|
43
|
+
if (labelled === undefined) return { problems: ["results must be an array of grade results, or { variant: results[] }"] };
|
|
44
|
+
const groups = new Map<string, Map<string, GradeResult>>();
|
|
45
|
+
const problems = labelled.flatMap((entry) => {
|
|
46
|
+
const problem = problemOf(entry, groups);
|
|
47
|
+
if (problem !== undefined || !isResult(entry.result) || typeof entry.variant !== "string") return problem === undefined ? [] : [problem];
|
|
48
|
+
const byId = groups.get(entry.variant) ?? new Map<string, GradeResult>();
|
|
49
|
+
groups.set(entry.variant, byId.set(entry.result.id, { ...entry.result, variant: entry.variant }));
|
|
50
|
+
return [];
|
|
51
|
+
});
|
|
52
|
+
if (problems.length > 0) return { problems };
|
|
53
|
+
return groups.size === 0 ? { problems: ["no results to compare"] } : { groups };
|
|
54
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { Texts } from "../ui.ts";
|
|
2
|
+
|
|
3
|
+
export type VariantText = {
|
|
4
|
+
readonly heading: (compared: number, variants: number) => string;
|
|
5
|
+
readonly passed: string;
|
|
6
|
+
readonly passedCell: (passed: number, outputs: number, rate: string) => string;
|
|
7
|
+
readonly factsDropped: string;
|
|
8
|
+
readonly factsAdded: string;
|
|
9
|
+
readonly citationsFailed: string;
|
|
10
|
+
readonly citationsCell: (failed: number, checked: number) => string;
|
|
11
|
+
readonly unsupportedFacts: string;
|
|
12
|
+
readonly penalty: string;
|
|
13
|
+
readonly ratesHeading: (unit: string) => string;
|
|
14
|
+
readonly unit: Readonly<Record<"char" | "word", string>>;
|
|
15
|
+
readonly disagreeHeading: (count: number) => string;
|
|
16
|
+
readonly disagreement: (id: string, passedIn: string, failedIn: string) => string;
|
|
17
|
+
readonly failedIn: (variant: string, reasons: string) => string;
|
|
18
|
+
readonly noDisagreement: string;
|
|
19
|
+
readonly missing: (id: string, variants: string) => string;
|
|
20
|
+
readonly readOtherwise: (ids: string) => string;
|
|
21
|
+
readonly notComparedHeading: string;
|
|
22
|
+
/** Markdown only: the run's heading and its totals. */
|
|
23
|
+
readonly runHeading: (path: string) => string;
|
|
24
|
+
readonly totals: (total: number, passed: number) => string;
|
|
25
|
+
readonly failedHeading: string;
|
|
26
|
+
readonly regressionsHeading: (count: number) => string;
|
|
27
|
+
readonly noRegression: string;
|
|
28
|
+
readonly stamp: string;
|
|
29
|
+
readonly separator: string;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const VARIANT_TEXT: Texts<VariantText> = {
|
|
33
|
+
ja: {
|
|
34
|
+
heading: (compared, variants) => `${String(variants)} つの variant を並べた: どの variant にもある id の出力 ${String(compared)} 件`,
|
|
35
|
+
passed: "通った",
|
|
36
|
+
passedCell: (passed, outputs, rate) => `${String(passed)}/${String(outputs)}(${rate})`,
|
|
37
|
+
factsDropped: "落ちた事実",
|
|
38
|
+
factsAdded: "足された事実",
|
|
39
|
+
citationsFailed: "外れた引用",
|
|
40
|
+
citationsCell: (failed, checked) => `${String(failed)}/${String(checked)}`,
|
|
41
|
+
unsupportedFacts: "一節に無い事実",
|
|
42
|
+
penalty: "減点の和",
|
|
43
|
+
ratesHeading: (unit) => `ルールごとの率(1,000 ${unit}あたり)`,
|
|
44
|
+
unit: { char: "字", word: "語" },
|
|
45
|
+
disagreeHeading: (count) => `合否が分かれた出力 ${String(count)} 件`,
|
|
46
|
+
disagreement: (id, passedIn, failedIn) => `${id}: 通った ${passedIn}、落ちた ${failedIn}`,
|
|
47
|
+
failedIn: (variant, reasons) => `${variant}(${reasons})`,
|
|
48
|
+
noDisagreement: "合否が分かれた出力はありません",
|
|
49
|
+
missing: (id, variants) => `${id}: ${variants} に無い`,
|
|
50
|
+
readOtherwise: (ids) => `言語かジャンルが違う: ${ids}`,
|
|
51
|
+
notComparedHeading: "比べなかった id",
|
|
52
|
+
runHeading: (path) => `chaff grade: ${path}`,
|
|
53
|
+
totals: (total, passed) => `${String(total)} 件の出力、${String(passed)} 件が通り、${String(total - passed)} 件が落ちた`,
|
|
54
|
+
failedHeading: "落ちた出力",
|
|
55
|
+
regressionsHeading: (count) => `前の回と比べた回帰 ${String(count)} 件`,
|
|
56
|
+
noRegression: "前の回と比べた回帰はありません",
|
|
57
|
+
stamp: "再現の印",
|
|
58
|
+
separator: "、",
|
|
59
|
+
},
|
|
60
|
+
en: {
|
|
61
|
+
heading: (compared, variants) =>
|
|
62
|
+
`${String(variants)} variants side by side: ${String(compared)} ${compared === 1 ? "output" : "outputs"} with an id every variant has`,
|
|
63
|
+
passed: "Passed",
|
|
64
|
+
passedCell: (passed, outputs, rate) => `${String(passed)}/${String(outputs)} (${rate})`,
|
|
65
|
+
factsDropped: "Facts dropped",
|
|
66
|
+
factsAdded: "Facts added",
|
|
67
|
+
citationsFailed: "Quotations failed",
|
|
68
|
+
citationsCell: (failed, checked) => `${String(failed)}/${String(checked)}`,
|
|
69
|
+
unsupportedFacts: "Unsupported facts",
|
|
70
|
+
penalty: "Penalty points",
|
|
71
|
+
ratesHeading: (unit) => `Rule rates (per 1,000 ${unit})`,
|
|
72
|
+
unit: { char: "characters", word: "words" },
|
|
73
|
+
disagreeHeading: (count) => `${String(count)} ${count === 1 ? "output" : "outputs"} where pass or fail differs`,
|
|
74
|
+
disagreement: (id, passedIn, failedIn) => `${id}: passed in ${passedIn}; failed in ${failedIn}`,
|
|
75
|
+
failedIn: (variant, reasons) => `${variant} (${reasons})`,
|
|
76
|
+
noDisagreement: "Every variant passed or failed the same outputs",
|
|
77
|
+
missing: (id, variants) => `${id}: missing from ${variants}`,
|
|
78
|
+
readOtherwise: (ids) => `another language or genre: ${ids}`,
|
|
79
|
+
notComparedHeading: "Ids not compared",
|
|
80
|
+
runHeading: (path) => `chaff grade: ${path}`,
|
|
81
|
+
totals: (total, passed) => `${String(total)} outputs, ${String(passed)} passed, ${String(total - passed)} failed`,
|
|
82
|
+
failedHeading: "Failed outputs",
|
|
83
|
+
regressionsHeading: (count) => `${String(count)} ${count === 1 ? "regression" : "regressions"} against the baseline`,
|
|
84
|
+
noRegression: "No regression against the baseline",
|
|
85
|
+
stamp: "Stamp",
|
|
86
|
+
separator: "; ",
|
|
87
|
+
},
|
|
88
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { LengthUnit } from "../plugin.ts";
|
|
2
|
+
import { rateRows, sameReading } from "./pairing.ts";
|
|
3
|
+
import type { GradeResult } from "./result.ts";
|
|
4
|
+
import { summaryOf } from "./summary.ts";
|
|
5
|
+
import { variantGroupsOf, type VariantGroups } from "./variants-input.ts";
|
|
6
|
+
|
|
7
|
+
// Several variants (prompts, models, settings) graded on the same inputs, side by side (spec §29.5). Pure. Outputs are
|
|
8
|
+
// matched by id: only an id every variant answered, read the same way, is compared, so each column covers the same tasks.
|
|
9
|
+
|
|
10
|
+
/** One variant over the compared ids. */
|
|
11
|
+
export type VariantColumn = {
|
|
12
|
+
readonly variant: string;
|
|
13
|
+
readonly outputs: number;
|
|
14
|
+
readonly passed: number;
|
|
15
|
+
/** The share of outputs that passed, in percent to one decimal. Undefined when no id was compared. */
|
|
16
|
+
readonly passRate?: number | undefined;
|
|
17
|
+
/** Facts dropped and added against the reference, not counting the kinds the rubric allows. */
|
|
18
|
+
readonly facts: { readonly dropped: number; readonly added: number };
|
|
19
|
+
readonly citations: { readonly checked: number; readonly failed: number };
|
|
20
|
+
/** Facts checked against the retrieved passages, and those in no passage. Only when some output had contexts. */
|
|
21
|
+
readonly contexts?: { readonly checked: number; readonly unsupported: number } | undefined;
|
|
22
|
+
/** Only with a `grade:` rubric. */
|
|
23
|
+
readonly penalty?: number | undefined;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/** One rule's rate per 1,000 units in each variant, by variant label; 0 where the variant had no finding of it. */
|
|
27
|
+
export type VariantRates = { readonly rule: string; readonly unit: LengthUnit; readonly rates: Readonly<Record<string, number>> };
|
|
28
|
+
|
|
29
|
+
/** An id some variants passed and others failed, with why each failed. */
|
|
30
|
+
export type Disagreement = {
|
|
31
|
+
readonly id: string;
|
|
32
|
+
readonly passedIn: readonly string[];
|
|
33
|
+
readonly failedIn: readonly { readonly variant: string; readonly failedBecause: readonly string[] }[];
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export type VariantComparison = {
|
|
37
|
+
/** In the order they first appear. */
|
|
38
|
+
readonly variants: readonly string[];
|
|
39
|
+
/** The ids every variant answered, read the same way. */
|
|
40
|
+
readonly compared: readonly string[];
|
|
41
|
+
/** Ids some variant did not answer, and which. */
|
|
42
|
+
readonly missing: readonly { readonly id: string; readonly missingFrom: readonly string[] }[];
|
|
43
|
+
/** Ids every variant answered, but in another language or genre: not the same task graded the same way. */
|
|
44
|
+
readonly readOtherwise: readonly string[];
|
|
45
|
+
readonly columns: readonly VariantColumn[];
|
|
46
|
+
readonly rules: readonly VariantRates[];
|
|
47
|
+
readonly disagreements: readonly Disagreement[];
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const PERCENT = 100;
|
|
51
|
+
const PERCENT_SCALE = 10;
|
|
52
|
+
|
|
53
|
+
const percentOf = (passed: number, outputs: number): number | undefined =>
|
|
54
|
+
outputs === 0 ? undefined : Math.round((passed * PERCENT * PERCENT_SCALE) / outputs) / PERCENT_SCALE;
|
|
55
|
+
|
|
56
|
+
const sum = (counts: Readonly<Record<string, number>>): number => Object.values(counts).reduce((total, count) => total + count, 0);
|
|
57
|
+
|
|
58
|
+
const columnOf = (variant: string, results: readonly GradeResult[]): VariantColumn => {
|
|
59
|
+
const summary = summaryOf(results);
|
|
60
|
+
return {
|
|
61
|
+
variant,
|
|
62
|
+
outputs: summary.total,
|
|
63
|
+
passed: summary.passed,
|
|
64
|
+
passRate: percentOf(summary.passed, summary.total),
|
|
65
|
+
facts: { dropped: sum(summary.facts.dropped), added: sum(summary.facts.added) },
|
|
66
|
+
citations: summary.citations,
|
|
67
|
+
...(summary.contexts === undefined ? {} : { contexts: { checked: summary.contexts.checked, unsupported: sum(summary.contexts.unsupported) } }),
|
|
68
|
+
...(summary.penalty === undefined ? {} : { penalty: summary.penalty }),
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const disagreementOf = (id: string, row: readonly GradeResult[], variants: readonly string[]): Disagreement[] => {
|
|
73
|
+
const passedIn = variants.filter((_, index) => row[index]?.pass === true);
|
|
74
|
+
if (passedIn.length === 0 || passedIn.length === variants.length) return [];
|
|
75
|
+
const failedIn = variants.flatMap((variant, index) => {
|
|
76
|
+
const result = row[index];
|
|
77
|
+
return result === undefined || result.pass ? [] : [{ variant, failedBecause: result.failedBecause }];
|
|
78
|
+
});
|
|
79
|
+
return [{ id, passedIn, failedIn }];
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/** Each id in order of first appearance, with its result in each variant, or undefined where the variant has none. */
|
|
83
|
+
const rowsOf = (grouped: VariantGroups, variants: readonly string[]): { readonly id: string; readonly row: readonly (GradeResult | undefined)[] }[] => {
|
|
84
|
+
const ids = [...new Set([...grouped.values()].flatMap((byId) => [...byId.keys()]))];
|
|
85
|
+
return ids.map((id) => ({ id, row: variants.map((variant) => grouped.get(variant)?.get(id)) }));
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const isComplete = (row: readonly (GradeResult | undefined)[]): row is readonly GradeResult[] => row.every((result) => result !== undefined);
|
|
89
|
+
|
|
90
|
+
/** The variants side by side over the ids they all answered. `grouped`: each variant's results by id, the variants in order. */
|
|
91
|
+
export const compareVariantGroups = (grouped: VariantGroups): VariantComparison => {
|
|
92
|
+
const variants = [...grouped.keys()];
|
|
93
|
+
const rows = rowsOf(grouped, variants);
|
|
94
|
+
const complete = rows.flatMap(({ id, row }) => (isComplete(row) ? [{ id, row }] : []));
|
|
95
|
+
const compared = complete.filter(({ row }) => sameReading(row));
|
|
96
|
+
const byVariant = variants.map((_, index) => compared.flatMap(({ row }) => row.slice(index, index + 1)));
|
|
97
|
+
return {
|
|
98
|
+
variants,
|
|
99
|
+
compared: compared.map(({ id }) => id),
|
|
100
|
+
missing: rows.flatMap(({ id, row }) => {
|
|
101
|
+
const missingFrom = variants.filter((_, index) => row[index] === undefined);
|
|
102
|
+
return missingFrom.length === 0 ? [] : [{ id, missingFrom }];
|
|
103
|
+
}),
|
|
104
|
+
readOtherwise: complete.filter(({ row }) => !sameReading(row)).map(({ id }) => id),
|
|
105
|
+
columns: variants.map((variant, index) => columnOf(variant, byVariant[index] ?? [])),
|
|
106
|
+
rules: rateRows(byVariant)
|
|
107
|
+
.filter((row) => row.rates.some((rate) => rate > 0))
|
|
108
|
+
.map(({ rule, unit, rates }) => ({ rule, unit, rates: Object.fromEntries(variants.map((variant, index) => [variant, rates[index] ?? 0])) })),
|
|
109
|
+
disagreements: compared.flatMap(({ id, row }) => disagreementOf(id, row, variants)),
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/** A run's results compared variant by variant, or undefined when none has a variant label (the command line's input already checked). */
|
|
114
|
+
export const variantsOfRun = (results: readonly GradeResult[]): VariantComparison | undefined => {
|
|
115
|
+
if (!results.some((result) => result.variant !== undefined)) return undefined;
|
|
116
|
+
const read = variantGroupsOf(results);
|
|
117
|
+
return "groups" in read ? compareVariantGroups(read.groups) : undefined;
|
|
118
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { GradeFact, GradeResult } from "./result.ts";
|
|
2
|
+
|
|
3
|
+
/** What pass or fail is decided from. */
|
|
4
|
+
export type Graded = Pick<GradeResult, "findings" | "facts" | "citations" | "contexts">;
|
|
5
|
+
|
|
6
|
+
export type Verdict = { readonly pass: boolean; readonly failedBecause: readonly string[] };
|
|
7
|
+
|
|
8
|
+
/** A condition over a count, written as the reason when the count goes past its limit: `facts.dropped 3 > 0`. */
|
|
9
|
+
export const overLimit = (name: string, count: number, limit: number): string[] => (count > limit ? [`${name} ${String(count)} > ${String(limit)}`] : []);
|
|
10
|
+
|
|
11
|
+
/** Facts that count against the output: those whose kind was not allowed to change. */
|
|
12
|
+
export const counted = (facts: readonly GradeFact[]): number => facts.filter((fact) => !fact.allowed).length;
|
|
13
|
+
|
|
14
|
+
export const verdictOf = (failedBecause: readonly string[]): Verdict => ({ pass: failedBecause.length === 0, failedBecause });
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The pass or fail with no `grade:` in chaff.yaml (spec §29.3): an error finding, a fact dropped or added against the
|
|
18
|
+
* reference, a quotation not found, or a fact no retrieved passage states fails the output. Warnings and info are rates to compare, not a verdict on one output.
|
|
19
|
+
*/
|
|
20
|
+
export const defaultVerdict = (graded: Graded): Verdict =>
|
|
21
|
+
verdictOf([
|
|
22
|
+
...overLimit("findings.error", graded.findings.filter((finding) => finding.level === "error").length, 0),
|
|
23
|
+
...overLimit("facts.dropped", counted(graded.facts?.dropped ?? []), 0),
|
|
24
|
+
...overLimit("facts.added", counted(graded.facts?.added ?? []), 0),
|
|
25
|
+
...overLimit("citations.failed", graded.citations?.failed.length ?? 0, 0),
|
|
26
|
+
...overLimit("contexts.unsupported", counted(graded.contexts?.unsupported ?? []), 0),
|
|
27
|
+
]);
|