slopless 0.2.4 → 0.2.6
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 +18 -106
- package/dist/adapters/textlint/report.js +51 -0
- package/dist/adapters/textlint/report.js.map +1 -0
- package/dist/adapters/textlint/units.js +28 -0
- package/dist/adapters/textlint/units.js.map +1 -0
- package/dist/cli.js +16 -3
- package/dist/cli.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/presets/everything.js +8 -1
- package/dist/presets/everything.js.map +1 -1
- package/dist/registries/academic-slop.js +5 -0
- package/dist/registries/academic-slop.js.map +1 -0
- package/dist/registries/metrics.js +6 -6
- package/dist/registries/metrics.js.map +1 -1
- package/dist/registries/narrative-slop.js +11 -0
- package/dist/registries/narrative-slop.js.map +1 -0
- package/dist/registries/orthography.js +6 -6
- package/dist/registries/orthography.js.map +1 -1
- package/dist/registries/phrases.js +13 -9
- package/dist/registries/phrases.js.map +1 -1
- package/dist/registries/semantic-thinness.js +1 -1
- package/dist/registries/semantic-thinness.js.map +1 -1
- package/dist/registries/syntactic-patterns/authority.js +1 -1
- package/dist/registries/syntactic-patterns/authority.js.map +1 -1
- package/dist/registries/syntactic-patterns/closers.js +4 -4
- package/dist/registries/syntactic-patterns/closers.js.map +1 -1
- package/dist/registries/syntactic-patterns/contrast.js +3 -3
- package/dist/registries/syntactic-patterns/contrast.js.map +1 -1
- package/dist/registries/syntactic-patterns/generalization.js +2 -2
- package/dist/registries/syntactic-patterns/generalization.js.map +1 -1
- package/dist/registries/syntactic-patterns/lead-ins.js +5 -5
- package/dist/registries/syntactic-patterns/lead-ins.js.map +1 -1
- package/dist/registries/syntactic-patterns/llm-artifacts.js +1 -1
- package/dist/registries/syntactic-patterns/llm-artifacts.js.map +1 -1
- package/dist/registries/syntactic-patterns/repetition.js +4 -4
- package/dist/registries/syntactic-patterns/repetition.js.map +1 -1
- package/dist/registries/term-policy.js +2 -2
- package/dist/registries/term-policy.js.map +1 -1
- package/dist/registries/words.js +4 -4
- package/dist/registries/words.js.map +1 -1
- package/dist/reporting/reports.js +92 -0
- package/dist/reporting/reports.js.map +1 -0
- package/dist/reporting/types.js +2 -0
- package/dist/reporting/types.js.map +1 -0
- package/dist/rules/academic-slop/data/tortured-phrases.json +8 -0
- package/dist/rules/academic-slop/tortured-phrases.js +27 -0
- package/dist/rules/academic-slop/tortured-phrases.js.map +1 -0
- package/dist/{families → rules}/metrics/avg-sentence-length.js +8 -4
- package/dist/rules/metrics/avg-sentence-length.js.map +1 -0
- package/dist/{families → rules}/metrics/coleman-liau.js +8 -4
- package/dist/rules/metrics/coleman-liau.js.map +1 -0
- package/dist/{families → rules}/metrics/flesch-kincaid.js +8 -4
- package/dist/rules/metrics/flesch-kincaid.js.map +1 -0
- package/dist/{families → rules}/metrics/gunning-fog.js +8 -4
- package/dist/rules/metrics/gunning-fog.js.map +1 -0
- package/dist/rules/metrics/paragraph-length.js +25 -0
- package/dist/rules/metrics/paragraph-length.js.map +1 -0
- package/dist/{families → rules}/metrics/word-repetition.js +8 -4
- package/dist/rules/metrics/word-repetition.js.map +1 -0
- package/dist/rules/narrative-slop/body-action-density.js +198 -0
- package/dist/rules/narrative-slop/body-action-density.js.map +1 -0
- package/dist/rules/narrative-slop/data/narrative-cliches.json +134 -0
- package/dist/rules/narrative-slop/flat-action-cadence.js +322 -0
- package/dist/rules/narrative-slop/flat-action-cadence.js.map +1 -0
- package/dist/rules/narrative-slop/narrative-cliches.js +46 -0
- package/dist/rules/narrative-slop/narrative-cliches.js.map +1 -0
- package/dist/rules/narrative-slop/perception-verb-density.js +84 -0
- package/dist/rules/narrative-slop/perception-verb-density.js.map +1 -0
- package/dist/{families → rules}/orthography/colon-dramatic.js +11 -7
- package/dist/rules/orthography/colon-dramatic.js.map +1 -0
- package/dist/{families → rules}/orthography/em-dashes.js +11 -7
- package/dist/rules/orthography/em-dashes.js.map +1 -0
- package/dist/{families → rules}/orthography/exclamation-density.js +11 -7
- package/dist/rules/orthography/exclamation-density.js.map +1 -0
- package/dist/{families → rules}/orthography/fake-timestamps.js +11 -7
- package/dist/rules/orthography/fake-timestamps.js.map +1 -0
- package/dist/{families → rules}/orthography/sentence-case.js +7 -2
- package/dist/rules/orthography/sentence-case.js.map +1 -0
- package/dist/{families → rules}/orthography/smart-quotes.js +11 -7
- package/dist/rules/orthography/smart-quotes.js.map +1 -0
- package/dist/rules/phrases/cliches.js +43 -0
- package/dist/rules/phrases/cliches.js.map +1 -0
- package/dist/rules/phrases/corporate-speak.js +32 -0
- package/dist/rules/phrases/corporate-speak.js.map +1 -0
- package/dist/rules/phrases/data/cliche-templates.json +20 -0
- package/dist/{families → rules}/phrases/data/cliches.json +73 -1
- package/dist/rules/phrases/data/corporate-abstraction-patterns.json +80 -0
- package/dist/{families → rules}/phrases/data/corporate-speak.json +0 -3
- package/dist/rules/phrases/data/llm-disclaimer-expansions.json +4 -0
- package/dist/{families → rules}/phrases/data/prohibited-phrases.json +0 -1
- package/dist/rules/phrases/data/redundancy-patterns.json +74 -0
- package/dist/rules/phrases/data/wordiness-patterns.json +53 -0
- package/dist/rules/phrases/humble-bragger.js +30 -0
- package/dist/rules/phrases/humble-bragger.js.map +1 -0
- package/dist/{families → rules}/phrases/jargon-faker.js +11 -7
- package/dist/rules/phrases/jargon-faker.js.map +1 -0
- package/dist/{families → rules}/phrases/llm-disclaimer.js +21 -8
- package/dist/rules/phrases/llm-disclaimer.js.map +1 -0
- package/dist/rules/phrases/prohibited-phrases.js +27 -0
- package/dist/rules/phrases/prohibited-phrases.js.map +1 -0
- package/dist/rules/phrases/redundancy.js +27 -0
- package/dist/rules/phrases/redundancy.js.map +1 -0
- package/dist/{families → rules}/phrases/skunked-terms.js +8 -4
- package/dist/rules/phrases/skunked-terms.js.map +1 -0
- package/dist/{families → rules}/phrases/uncomparables.js +8 -4
- package/dist/rules/phrases/uncomparables.js.map +1 -0
- package/dist/rules/phrases/wordiness.js +27 -0
- package/dist/rules/phrases/wordiness.js.map +1 -0
- package/dist/rules/semantic-thinness/patterns/abstract-personification-line.json +23 -0
- package/dist/rules/semantic-thinness/patterns/emotion-as-substance.json +95 -0
- package/dist/rules/semantic-thinness/patterns/fixed-metaphor-frame.json +32 -0
- package/dist/rules/semantic-thinness/patterns/sensory-instead-of-frame.json +40 -0
- package/dist/rules/semantic-thinness/patterns/summary-fog-transition.json +30 -0
- package/dist/{families → rules}/semantic-thinness/private/pattern-data-a.js +2 -0
- package/dist/rules/semantic-thinness/private/pattern-data-a.js.map +1 -0
- package/dist/rules/semantic-thinness/private/pattern-data-b.js.map +1 -0
- package/dist/rules/semantic-thinness/private/pattern-data-c.js +17 -0
- package/dist/rules/semantic-thinness/private/pattern-data-c.js.map +1 -0
- package/dist/rules/semantic-thinness/private/pattern-data-d.js.map +1 -0
- package/dist/rules/semantic-thinness/private/pattern-data.js.map +1 -0
- package/dist/rules/semantic-thinness/private/pattern-matcher.js.map +1 -0
- package/dist/{families → rules}/semantic-thinness/semantic-thinness.js +11 -7
- package/dist/rules/semantic-thinness/semantic-thinness.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/authority/authority-padding.js +11 -7
- package/dist/rules/syntactic-patterns/authority/authority-padding.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/closers/affirmation-closers.js +20 -13
- package/dist/rules/syntactic-patterns/closers/affirmation-closers.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/closers/boilerplate-conclusion.js +11 -7
- package/dist/rules/syntactic-patterns/closers/boilerplate-conclusion.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/closers/false-question.js +11 -7
- package/dist/rules/syntactic-patterns/closers/false-question.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/closers/summative-closer.js +11 -7
- package/dist/rules/syntactic-patterns/closers/summative-closer.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/contrast/blame-reframe.js +11 -7
- package/dist/rules/syntactic-patterns/contrast/blame-reframe.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/contrast/contrastive-aphorism.js +10 -7
- package/dist/rules/syntactic-patterns/contrast/contrastive-aphorism.js.map +1 -0
- package/dist/rules/syntactic-patterns/contrast/negation-reframe.js +24 -0
- package/dist/rules/syntactic-patterns/contrast/negation-reframe.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/contrast/private/negation-reframe-matcher.js +22 -5
- package/dist/rules/syntactic-patterns/contrast/private/negation-reframe-matcher.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/contrast/private/negation-reframe-parts.js +55 -0
- package/dist/rules/syntactic-patterns/contrast/private/negation-reframe-parts.js.map +1 -0
- package/dist/rules/syntactic-patterns/contrast/private/negative-slop-frames.js +103 -0
- package/dist/rules/syntactic-patterns/contrast/private/negative-slop-frames.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/generalization/softening-language.js +11 -7
- package/dist/rules/syntactic-patterns/generalization/softening-language.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/generalization/universalizing-claims.js +11 -7
- package/dist/rules/syntactic-patterns/generalization/universalizing-claims.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/lead-ins/boilerplate-framing.js +11 -7
- package/dist/rules/syntactic-patterns/lead-ins/boilerplate-framing.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/lead-ins/generic-signposting.js +11 -7
- package/dist/rules/syntactic-patterns/lead-ins/generic-signposting.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/lead-ins/lesson-framing.js +11 -7
- package/dist/rules/syntactic-patterns/lead-ins/lesson-framing.js.map +1 -0
- package/dist/rules/syntactic-patterns/lead-ins/llm-openers.js +28 -0
- package/dist/rules/syntactic-patterns/lead-ins/llm-openers.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/lead-ins/observer-guidance.js +11 -7
- package/dist/rules/syntactic-patterns/lead-ins/observer-guidance.js.map +1 -0
- package/dist/rules/syntactic-patterns/llm-artifacts/data/response-wrapper-patterns.json +33 -0
- package/dist/{families → rules}/syntactic-patterns/llm-artifacts/response-wrapper.js +55 -10
- package/dist/rules/syntactic-patterns/llm-artifacts/response-wrapper.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/repetition/demonstrative-emphasis.js +11 -7
- package/dist/rules/syntactic-patterns/repetition/demonstrative-emphasis.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/repetition/empty-emphasis.js +11 -7
- package/dist/rules/syntactic-patterns/repetition/empty-emphasis.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/repetition/fragment-stacking.js +11 -7
- package/dist/rules/syntactic-patterns/repetition/fragment-stacking.js.map +1 -0
- package/dist/{families → rules}/syntactic-patterns/repetition/triple-repeat.js +13 -9
- package/dist/rules/syntactic-patterns/repetition/triple-repeat.js.map +1 -0
- package/dist/{families → rules}/term-policy/recommended-terms.js +8 -4
- package/dist/rules/term-policy/recommended-terms.js.map +1 -0
- package/dist/{families → rules}/term-policy/required-terms.js +8 -4
- package/dist/rules/term-policy/required-terms.js.map +1 -0
- package/dist/rules/types.js +2 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/{families → rules}/words/hedge-stacking.js +11 -7
- package/dist/rules/words/hedge-stacking.js.map +1 -0
- package/dist/{families → rules}/words/llm-vocabulary.js +8 -4
- package/dist/rules/words/llm-vocabulary.js.map +1 -0
- package/dist/rules/words/prohibited-words.js +21 -0
- package/dist/rules/words/prohibited-words.js.map +1 -0
- package/dist/{families → rules}/words/simplicity.js +11 -7
- package/dist/rules/words/simplicity.js.map +1 -0
- package/dist/shared/matchers/phrases.js +74 -0
- package/dist/shared/matchers/phrases.js.map +1 -1
- package/package.json +58 -49
- package/slopless.textlintrc.json +5 -0
- package/dist/families/metrics/avg-sentence-length.js.map +0 -1
- package/dist/families/metrics/coleman-liau.js.map +0 -1
- package/dist/families/metrics/flesch-kincaid.js.map +0 -1
- package/dist/families/metrics/gunning-fog.js.map +0 -1
- package/dist/families/metrics/paragraph-length.js +0 -21
- package/dist/families/metrics/paragraph-length.js.map +0 -1
- package/dist/families/metrics/word-repetition.js.map +0 -1
- package/dist/families/orthography/colon-dramatic.js.map +0 -1
- package/dist/families/orthography/em-dashes.js.map +0 -1
- package/dist/families/orthography/exclamation-density.js.map +0 -1
- package/dist/families/orthography/fake-timestamps.js.map +0 -1
- package/dist/families/orthography/sentence-case.js.map +0 -1
- package/dist/families/orthography/smart-quotes.js.map +0 -1
- package/dist/families/phrases/cliches.js +0 -17
- package/dist/families/phrases/cliches.js.map +0 -1
- package/dist/families/phrases/corporate-speak.js +0 -23
- package/dist/families/phrases/corporate-speak.js.map +0 -1
- package/dist/families/phrases/humble-bragger.js +0 -26
- package/dist/families/phrases/humble-bragger.js.map +0 -1
- package/dist/families/phrases/jargon-faker.js.map +0 -1
- package/dist/families/phrases/llm-disclaimer.js.map +0 -1
- package/dist/families/phrases/prohibited-phrases.js +0 -17
- package/dist/families/phrases/prohibited-phrases.js.map +0 -1
- package/dist/families/phrases/skunked-terms.js.map +0 -1
- package/dist/families/phrases/uncomparables.js.map +0 -1
- package/dist/families/semantic-thinness/private/pattern-data-a.js.map +0 -1
- package/dist/families/semantic-thinness/private/pattern-data-b.js.map +0 -1
- package/dist/families/semantic-thinness/private/pattern-data-c.js +0 -9
- package/dist/families/semantic-thinness/private/pattern-data-c.js.map +0 -1
- package/dist/families/semantic-thinness/private/pattern-data-d.js.map +0 -1
- package/dist/families/semantic-thinness/private/pattern-data.js.map +0 -1
- package/dist/families/semantic-thinness/private/pattern-matcher.js.map +0 -1
- package/dist/families/semantic-thinness/semantic-thinness.js.map +0 -1
- package/dist/families/syntactic-patterns/authority/authority-padding.js.map +0 -1
- package/dist/families/syntactic-patterns/closers/affirmation-closers.js.map +0 -1
- package/dist/families/syntactic-patterns/closers/boilerplate-conclusion.js.map +0 -1
- package/dist/families/syntactic-patterns/closers/false-question.js.map +0 -1
- package/dist/families/syntactic-patterns/closers/summative-closer.js.map +0 -1
- package/dist/families/syntactic-patterns/contrast/blame-reframe.js.map +0 -1
- package/dist/families/syntactic-patterns/contrast/contrastive-aphorism.js.map +0 -1
- package/dist/families/syntactic-patterns/contrast/negation-reframe.js +0 -20
- package/dist/families/syntactic-patterns/contrast/negation-reframe.js.map +0 -1
- package/dist/families/syntactic-patterns/contrast/private/negation-reframe-matcher.js.map +0 -1
- package/dist/families/syntactic-patterns/contrast/private/negation-reframe-parts.js.map +0 -1
- package/dist/families/syntactic-patterns/generalization/softening-language.js.map +0 -1
- package/dist/families/syntactic-patterns/generalization/universalizing-claims.js.map +0 -1
- package/dist/families/syntactic-patterns/lead-ins/boilerplate-framing.js.map +0 -1
- package/dist/families/syntactic-patterns/lead-ins/generic-signposting.js.map +0 -1
- package/dist/families/syntactic-patterns/lead-ins/lesson-framing.js.map +0 -1
- package/dist/families/syntactic-patterns/lead-ins/llm-openers.js +0 -24
- package/dist/families/syntactic-patterns/lead-ins/llm-openers.js.map +0 -1
- package/dist/families/syntactic-patterns/lead-ins/observer-guidance.js.map +0 -1
- package/dist/families/syntactic-patterns/llm-artifacts/response-wrapper.js.map +0 -1
- package/dist/families/syntactic-patterns/repetition/demonstrative-emphasis.js.map +0 -1
- package/dist/families/syntactic-patterns/repetition/empty-emphasis.js.map +0 -1
- package/dist/families/syntactic-patterns/repetition/fragment-stacking.js.map +0 -1
- package/dist/families/syntactic-patterns/repetition/triple-repeat.js.map +0 -1
- package/dist/families/term-policy/recommended-terms.js.map +0 -1
- package/dist/families/term-policy/required-terms.js.map +0 -1
- package/dist/families/words/hedge-stacking.js.map +0 -1
- package/dist/families/words/llm-vocabulary.js.map +0 -1
- package/dist/families/words/prohibited-words.js +0 -17
- package/dist/families/words/prohibited-words.js.map +0 -1
- package/dist/families/words/simplicity.js.map +0 -1
- /package/dist/{families → rules}/phrases/data/skunked-terms.json +0 -0
- /package/dist/{families → rules}/phrases/data/uncomparables.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/abstract-contrast.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/abstract-metaphor-claim.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/body-emotion-shorthand.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/body-knows.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/deictic-summary.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/empty-atmosphere-shift.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/empty-emotional-weather.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/empty-scene-state.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/empty-scene-transition.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/gaze-choreography.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/generic-lesson-extraction.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/generic-pressure-or-stakes.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/generic-realization.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/hollow-significance.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/low-information-physical-blocking.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/point-is-frame.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/real-work-begins.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/silence-as-actor.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/something-shifted.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/truth-answer-moves.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/vague-connective-payoff.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/patterns/vague-threshold-change.json +0 -0
- /package/dist/{families → rules}/semantic-thinness/private/pattern-data-b.js +0 -0
- /package/dist/{families → rules}/semantic-thinness/private/pattern-data-d.js +0 -0
- /package/dist/{families → rules}/semantic-thinness/private/pattern-data.js +0 -0
- /package/dist/{families → rules}/semantic-thinness/private/pattern-matcher.js +0 -0
- /package/dist/{families → rules}/words/data/prohibited-words.json +0 -0
- /package/dist/{families → rules}/words/data/simplicity-pairs.json +0 -0
package/README.md
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
# slopless
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/slopless)
|
|
4
|
+
[](https://www.npmjs.com/package/slopless)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](/actions/workflows/ci.yml)
|
|
7
|
+
[](package.json)
|
|
4
8
|
|
|
5
|
-
|
|
9
|
+
Catch AI and human slop in Markdown without calling an LLM. Slopless ships 50+ deterministic textlint rules and a CLI that emits structured JSON findings.
|
|
6
10
|
|
|
7
11
|
## Install
|
|
8
12
|
|
|
@@ -10,116 +14,24 @@ It reports patterns that make prose padded, vague, generic, formulaic, or mechan
|
|
|
10
14
|
npm install -D slopless
|
|
11
15
|
```
|
|
12
16
|
|
|
13
|
-
##
|
|
17
|
+
## Quick start
|
|
14
18
|
|
|
15
19
|
```bash
|
|
16
20
|
npx slopless "docs/**/*.md"
|
|
17
|
-
npx slopless draft.md > slopless.json
|
|
18
|
-
cat draft.md | npx slopless --stdin --stdin-filename draft.md
|
|
19
21
|
```
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
Slopless requires a file path, glob, or stdin input. A bare `npx slopless` exits with code `2`. Exit `0` means clean, `1` means findings, `2` means failure.
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
{
|
|
25
|
-
"scripts": {
|
|
26
|
-
"lint:prose": "slopless \"docs/**/*.md\""
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
npm run lint:prose
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Slopless requires a file path, glob, or stdin input. A bare `npx slopless` exits with code `2`.
|
|
36
|
-
|
|
37
|
-
## Behavior
|
|
38
|
-
|
|
39
|
-
- Requires Node.js 20 or newer.
|
|
40
|
-
- Requires no `.textlintrc.json`.
|
|
41
|
-
- Requires no separate `textlint` install.
|
|
42
|
-
- Emits textlint JSON only.
|
|
43
|
-
- Rejects `--format` and `-f`.
|
|
44
|
-
- Exits `0` for no findings, `1` for prose findings, and `2` for command failure.
|
|
45
|
-
|
|
46
|
-
Each JSON message includes the rule ID, line, column, message, and range data when textlint provides it. Rule IDs use `slopless/<rule-name>` in wrapped textlint output, such as `slopless/semantic-thinness`.
|
|
47
|
-
|
|
48
|
-
## Rules
|
|
49
|
-
|
|
50
|
-
Metrics:
|
|
51
|
-
|
|
52
|
-
- `avg-sentence-length`: average sentence length above 24 words.
|
|
53
|
-
- `paragraph-length`: paragraphs over 6 sentences.
|
|
54
|
-
- `word-repetition`: one non-trivial word repeated over 5 times.
|
|
55
|
-
- `flesch-kincaid`: Flesch Reading Ease below 61.
|
|
56
|
-
- `gunning-fog` and `coleman-liau`: grade scores above 12.
|
|
57
|
-
|
|
58
|
-
Orthography:
|
|
25
|
+
## More
|
|
59
26
|
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
27
|
+
- [Philosophy](/wiki/Philosophy) - what slopless is for, design principles, why deterministic.
|
|
28
|
+
- [Comparison](/wiki/Comparison) - slopless vs proselint, write-good, alex, vale, default textlint presets.
|
|
29
|
+
- [Rules](/wiki/Rules) - full 50+ rule inventory across seven families.
|
|
30
|
+
- [Behavior](/wiki/Behavior) - CLI flags, exit codes, JSON output shape, direct textlint integration.
|
|
31
|
+
- [Ignore rules](/wiki/Ignore-Rules) - inline `textlint-disable` block syntax.
|
|
32
|
+
- [Thanks](/wiki/Thanks) - direct rule sources, dependencies, and acknowledgments.
|
|
33
|
+
- [Contributing](.github/CONTRIBUTING.md) - open a detailed issue first; PRs must pass the G3TS pre-commit gate.
|
|
66
34
|
|
|
67
|
-
|
|
35
|
+
---
|
|
68
36
|
|
|
69
|
-
|
|
70
|
-
- `corporate-speak`: business filler, such as `move the needle`.
|
|
71
|
-
- `hedge-stacking`: stacked hedges, such as `might perhaps`.
|
|
72
|
-
- `humble-bragger`: credential lead-ins, such as `in my experience`.
|
|
73
|
-
- `jargon-faker`: borrowed tech metaphors, such as `debug your morning`.
|
|
74
|
-
- `llm-disclaimer`: assistant disclaimers, such as `as an AI language model`.
|
|
75
|
-
- `llm-vocabulary`: common AI diction, such as `delve`.
|
|
76
|
-
- `prohibited-phrases` and `prohibited-words`: package-owned banned lists.
|
|
77
|
-
- `recommended-terms` and `required-terms`: configured missing terms.
|
|
78
|
-
- `simplicity`: complex words with simple replacements, such as `utilize`.
|
|
79
|
-
- `skunked-terms`: contested broad-use terms.
|
|
80
|
-
- `uncomparables`: impossible modifiers, such as `very unique`.
|
|
81
|
-
|
|
82
|
-
Semantic thinness:
|
|
83
|
-
|
|
84
|
-
- `semantic-thinness`: low-information templates, such as `Something shifted in the room.`
|
|
85
|
-
|
|
86
|
-
Syntactic patterns:
|
|
87
|
-
|
|
88
|
-
- `affirmation-closers`: empty certainty endings, such as `and that is the key`.
|
|
89
|
-
- `authority-padding`: soft authority padding, such as `research shows`.
|
|
90
|
-
- `blame-reframe`: blame-to-insight reframes, such as `the problem is not X, it is Y`.
|
|
91
|
-
- `boilerplate-conclusion`: generic endings, such as `in conclusion`.
|
|
92
|
-
- `boilerplate-framing`: generic setup, such as `when it comes to`.
|
|
93
|
-
- `contrastive-aphorism`: slogan contrasts, such as `not faster, but smarter`.
|
|
94
|
-
- `demonstrative-emphasis`: vague `this is what` emphasis.
|
|
95
|
-
- `empty-emphasis`: unsupported importance claims, such as `this matters`.
|
|
96
|
-
- `false-question`: rhetorical questions, such as `isn't that what we all want?`
|
|
97
|
-
- `fragment-stacking`: clipped cadence, such as `Too broad. Too vague. Too late.`
|
|
98
|
-
- `generic-signposting`: generic transitions, such as `it is important to note`.
|
|
99
|
-
- `lesson-framing`: lesson extraction, such as `the lesson is`.
|
|
100
|
-
- `llm-openers`: generic openers, such as `the important thing is`.
|
|
101
|
-
- `negation-reframe`: `not X. It is Y.` constructions.
|
|
102
|
-
- `observer-guidance`: reader-instruction frames, such as `notice how`.
|
|
103
|
-
- `response-wrapper`: chat wrappers, such as `here is a revised version`.
|
|
104
|
-
- `softening-language`: vague softeners, such as `in many ways`.
|
|
105
|
-
- `summative-closer`: summary payoff lines, such as `that is what makes it work`.
|
|
106
|
-
- `triple-repeat`: repeated sentence openers, such as `It is X. It is Y. It is Z.`
|
|
107
|
-
- `universalizing-claims`: broad claims, such as `everyone knows`.
|
|
108
|
-
|
|
109
|
-
## Direct Textlint Use
|
|
110
|
-
|
|
111
|
-
Most users should run `npx slopless "docs/**/*.md"`.
|
|
112
|
-
|
|
113
|
-
The package also exports a textlint preset:
|
|
114
|
-
|
|
115
|
-
```json
|
|
116
|
-
{
|
|
117
|
-
"rules": {
|
|
118
|
-
"preset-slopless": true
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
npx textlint "docs/**/*.md"
|
|
125
|
-
```
|
|
37
|
+
Part of [Agent Quality Controls](https://github.com/agent-quality-controls).
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { textUnitForNode } from "./units.js";
|
|
2
|
+
import { oneToOneReports } from "../../reporting/reports.js";
|
|
3
|
+
function isTextlintTextUnit(unit) {
|
|
4
|
+
return (typeof unit.node === "object" && unit.node !== null && "type" in unit.node);
|
|
5
|
+
}
|
|
6
|
+
export function emitTextlintReport(context, unitsById, report) {
|
|
7
|
+
const unit = unitsById.get(report.unitId);
|
|
8
|
+
if (unit === undefined || !isTextlintTextUnit(unit)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const padding = report.range.start === report.range.end
|
|
12
|
+
? context.locator.at(report.range.start)
|
|
13
|
+
: context.locator.range([report.range.start, report.range.end]);
|
|
14
|
+
context.report(unit.node, new context.RuleError(report.message, {
|
|
15
|
+
padding
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
export function emitTextlintReports(context, unitsById, reports) {
|
|
19
|
+
for (const report of reports) {
|
|
20
|
+
emitTextlintReport(context, unitsById, report);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function emitTextlintDetection(context, input) {
|
|
24
|
+
const detection = {
|
|
25
|
+
evidence: input.evidence,
|
|
26
|
+
label: input.label,
|
|
27
|
+
range: input.range,
|
|
28
|
+
ruleId: input.ruleId,
|
|
29
|
+
unitId: input.unit.id
|
|
30
|
+
};
|
|
31
|
+
if (input.data !== undefined) {
|
|
32
|
+
Object.assign(detection, { data: input.data });
|
|
33
|
+
}
|
|
34
|
+
emitTextlintReports(context, new Map([[input.unit.id, input.unit]]), oneToOneReports([detection], () => input.message));
|
|
35
|
+
}
|
|
36
|
+
export function emitTextlintFinding(context, input) {
|
|
37
|
+
const evidence = input.evidence ?? input.message;
|
|
38
|
+
emitTextlintDetection(context, {
|
|
39
|
+
...(input.data === undefined ? {} : { data: input.data }),
|
|
40
|
+
evidence,
|
|
41
|
+
label: input.label ?? input.ruleId,
|
|
42
|
+
message: input.message,
|
|
43
|
+
range: input.range,
|
|
44
|
+
ruleId: input.ruleId,
|
|
45
|
+
unit: textUnitForNode("finding", "text", input.node, evidence)
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
export function emitTextlintNodeFinding(context, input) {
|
|
49
|
+
context.report(input.node, new context.RuleError(input.message));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/adapters/textlint/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { normalizeForMatch } from "../../shared/text/normalize.js";
|
|
2
|
+
import { allParagraphs } from "../../shared/text/sections.js";
|
|
3
|
+
export function paragraphUnits(document) {
|
|
4
|
+
return allParagraphs(document).map((paragraph, index) => ({
|
|
5
|
+
id: `paragraph:${index}`,
|
|
6
|
+
kind: "paragraph",
|
|
7
|
+
node: paragraph.paragraph,
|
|
8
|
+
normalizedText: normalizeForMatch(paragraph.text),
|
|
9
|
+
range: { end: paragraph.source.text.length, start: 0 },
|
|
10
|
+
sourceRangeFor: (range) => ({
|
|
11
|
+
end: paragraph.source.originalEndFor(range.end),
|
|
12
|
+
start: paragraph.source.originalStartFor(range.start)
|
|
13
|
+
}),
|
|
14
|
+
text: paragraph.text
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
export function textUnitForNode(id, kind, node, text) {
|
|
18
|
+
return {
|
|
19
|
+
id,
|
|
20
|
+
kind,
|
|
21
|
+
node,
|
|
22
|
+
normalizedText: normalizeForMatch(text),
|
|
23
|
+
range: { end: text.length, start: 0 },
|
|
24
|
+
sourceRangeFor: (range) => range,
|
|
25
|
+
text
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=units.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"units.js","sourceRoot":"","sources":["../../../src/adapters/textlint/units.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,MAAM,UAAU,cAAc,CAAC,QAAyB;IACtD,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACxD,EAAE,EAAE,aAAa,KAAK,EAAE;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS,CAAC,SAAS;QACzB,cAAc,EAAE,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC;QACjD,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;QACtD,cAAc,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,CAAC;YACvC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;YAC/C,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;SACtD,CAAC;QACF,IAAI,EAAE,SAAS,CAAC,IAAI;KACrB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAAU,EACV,IAAsB,EACtB,IAAa,EACb,IAAY;IAEZ,OAAO;QACL,EAAE;QACF,IAAI;QACJ,IAAI;QACJ,cAAc,EAAE,iBAAiB,CAAC,IAAI,CAAC;QACvC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;QACrC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QAChC,IAAI;KACL,CAAC;AACJ,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -6,6 +6,7 @@ const FORMAT_FLAGS = new Set(["--format", "-f"]);
|
|
|
6
6
|
const HELP_FLAGS = new Set(["--help", "-h"]);
|
|
7
7
|
const STDIN_FLAGS = new Set(["--stdin"]);
|
|
8
8
|
const VERSION_FLAGS = new Set(["--version", "-v"]);
|
|
9
|
+
const CONFIG_FLAGS = new Set(["--config", "-c"]);
|
|
9
10
|
const VALUE_OPTIONS = new Set([
|
|
10
11
|
"--cache-location",
|
|
11
12
|
"--config",
|
|
@@ -20,7 +21,7 @@ const VALUE_OPTIONS = new Set([
|
|
|
20
21
|
"-c",
|
|
21
22
|
"-o"
|
|
22
23
|
]);
|
|
23
|
-
const VERSION = "0.2.
|
|
24
|
+
const VERSION = "0.2.5";
|
|
24
25
|
const HELP_TEXT = `Slopless checks Markdown prose for deterministic AI and human slop signals.
|
|
25
26
|
|
|
26
27
|
It reports concrete patterns that make writing padded, vague, generic,
|
|
@@ -65,6 +66,13 @@ Useful forms:
|
|
|
65
66
|
npx slopless "docs/**/*.md" > slopless.json
|
|
66
67
|
npx slopless "docs/**/*.md" --quiet
|
|
67
68
|
|
|
69
|
+
Ignore one rule:
|
|
70
|
+
<!-- textlint-disable slopless/semantic-thinness -->
|
|
71
|
+
|
|
72
|
+
Something shifted in the room.
|
|
73
|
+
|
|
74
|
+
<!-- textlint-enable slopless/semantic-thinness -->
|
|
75
|
+
|
|
68
76
|
Unsupported:
|
|
69
77
|
--format and -f are rejected. JSON is the only output format.
|
|
70
78
|
`;
|
|
@@ -96,9 +104,11 @@ function hasFileTarget(args) {
|
|
|
96
104
|
}
|
|
97
105
|
return false;
|
|
98
106
|
}
|
|
107
|
+
function packageRoot() {
|
|
108
|
+
return dirname(dirname(fileURLToPath(import.meta.url)));
|
|
109
|
+
}
|
|
99
110
|
function packageNodeModules() {
|
|
100
|
-
|
|
101
|
-
return resolve(packageRoot, "..");
|
|
111
|
+
return resolve(packageRoot(), "..");
|
|
102
112
|
}
|
|
103
113
|
async function readStdin() {
|
|
104
114
|
let text = "";
|
|
@@ -129,6 +139,9 @@ async function main() {
|
|
|
129
139
|
const args = [
|
|
130
140
|
"node",
|
|
131
141
|
"slopless",
|
|
142
|
+
...(hasFlag(userArgs, CONFIG_FLAGS)
|
|
143
|
+
? []
|
|
144
|
+
: ["--config", resolve(packageRoot(), "slopless.textlintrc.json")]),
|
|
132
145
|
"--preset",
|
|
133
146
|
"slopless",
|
|
134
147
|
"--rules-base-directory",
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAE9C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AACjD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACzC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AACnD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,kBAAkB;IAClB,UAAU;IACV,eAAe;IACf,eAAe;IACf,UAAU;IACV,UAAU;IACV,QAAQ;IACR,wBAAwB;IACxB,YAAY;IACZ,kBAAkB;IAClB,IAAI;IACJ,IAAI;CACL,CAAC,CAAC;AACH,MAAM,OAAO,GAAG,OAAO,CAAC;AACxB,MAAM,SAAS,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { everything } from "./presets/everything.js";
|
|
2
|
+
import { academicSlopRules } from "./registries/academic-slop.js";
|
|
2
3
|
import { metricRules } from "./registries/metrics.js";
|
|
4
|
+
import { narrativeSlopRules } from "./registries/narrative-slop.js";
|
|
3
5
|
import { orthographyRules } from "./registries/orthography.js";
|
|
4
6
|
import { phraseRules } from "./registries/phrases.js";
|
|
5
7
|
import { semanticThinnessRules } from "./registries/semantic-thinness.js";
|
|
@@ -7,7 +9,9 @@ import { syntacticPatternRules } from "./registries/syntactic-patterns.js";
|
|
|
7
9
|
import { termPolicyRules } from "./registries/term-policy.js";
|
|
8
10
|
import { wordRules } from "./registries/words.js";
|
|
9
11
|
export const rules = {
|
|
12
|
+
...academicSlopRules,
|
|
10
13
|
...metricRules,
|
|
14
|
+
...narrativeSlopRules,
|
|
11
15
|
...orthographyRules,
|
|
12
16
|
...phraseRules,
|
|
13
17
|
...semanticThinnessRules,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,GAAG,WAAW;IACd,GAAG,gBAAgB;IACnB,GAAG,WAAW;IACd,GAAG,qBAAqB;IACxB,GAAG,qBAAqB;IACxB,GAAG,eAAe;IAClB,GAAG,SAAS;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,UAAU;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC;AAE5C,eAAe;IACb,KAAK;IACL,WAAW;CACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,GAAG,iBAAiB;IACpB,GAAG,WAAW;IACd,GAAG,kBAAkB;IACrB,GAAG,gBAAgB;IACnB,GAAG,WAAW;IACd,GAAG,qBAAqB;IACxB,GAAG,qBAAqB;IACxB,GAAG,eAAe;IAClB,GAAG,SAAS;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,UAAU;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC;AAE5C,eAAe;IACb,KAAK;IACL,WAAW;CACZ,CAAC"}
|
|
@@ -4,6 +4,7 @@ export const everything = {
|
|
|
4
4
|
"authority-padding": true,
|
|
5
5
|
"avg-sentence-length": true,
|
|
6
6
|
"blame-reframe": true,
|
|
7
|
+
"body-action-density": true,
|
|
7
8
|
"boilerplate-conclusion": true,
|
|
8
9
|
"boilerplate-framing": true,
|
|
9
10
|
cliches: true,
|
|
@@ -17,6 +18,7 @@ export const everything = {
|
|
|
17
18
|
"exclamation-density": true,
|
|
18
19
|
"fake-timestamps": true,
|
|
19
20
|
"false-question": true,
|
|
21
|
+
"flat-action-cadence": true,
|
|
20
22
|
"flesch-kincaid": true,
|
|
21
23
|
"fragment-stacking": true,
|
|
22
24
|
"gunning-fog": true,
|
|
@@ -29,11 +31,14 @@ export const everything = {
|
|
|
29
31
|
"llm-openers": true,
|
|
30
32
|
"llm-vocabulary": true,
|
|
31
33
|
"negation-reframe": true,
|
|
34
|
+
"narrative-cliches": true,
|
|
32
35
|
"observer-guidance": true,
|
|
33
36
|
"paragraph-length": true,
|
|
37
|
+
"perception-verb-density": true,
|
|
34
38
|
"prohibited-phrases": true,
|
|
35
39
|
"prohibited-words": true,
|
|
36
40
|
"recommended-terms": true,
|
|
41
|
+
redundancy: true,
|
|
37
42
|
"response-wrapper": true,
|
|
38
43
|
"required-terms": true,
|
|
39
44
|
"sentence-case": true,
|
|
@@ -44,9 +49,11 @@ export const everything = {
|
|
|
44
49
|
"smart-quotes": true,
|
|
45
50
|
"summative-closer": true,
|
|
46
51
|
"triple-repeat": true,
|
|
52
|
+
"tortured-phrases": true,
|
|
47
53
|
uncomparables: true,
|
|
48
54
|
"universalizing-claims": true,
|
|
49
|
-
"word-repetition": true
|
|
55
|
+
"word-repetition": true,
|
|
56
|
+
wordiness: true
|
|
50
57
|
}
|
|
51
58
|
};
|
|
52
59
|
//# sourceMappingURL=everything.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"everything.js","sourceRoot":"","sources":["../../src/presets/everything.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE;QACL,qBAAqB,EAAE,IAAI;QAC3B,mBAAmB,EAAE,IAAI;QACzB,qBAAqB,EAAE,IAAI;QAC3B,eAAe,EAAE,IAAI;QACrB,wBAAwB,EAAE,IAAI;QAC9B,qBAAqB,EAAE,IAAI;QAC3B,OAAO,EAAE,IAAI;QACb,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,iBAAiB,EAAE,IAAI;QACvB,sBAAsB,EAAE,IAAI;QAC5B,wBAAwB,EAAE,IAAI;QAC9B,WAAW,EAAE,IAAI;QACjB,gBAAgB,EAAE,IAAI;QACtB,qBAAqB,EAAE,IAAI;QAC3B,iBAAiB,EAAE,IAAI;QACvB,gBAAgB,EAAE,IAAI;QACtB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;QACzB,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;QACtB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,qBAAqB,EAAE,IAAI;QAC3B,gBAAgB,EAAE,IAAI;QACtB,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;QACtB,kBAAkB,EAAE,IAAI;QACxB,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,IAAI;QACxB,oBAAoB,EAAE,IAAI;QAC1B,kBAAkB,EAAE,IAAI;QACxB,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,IAAI;QACtB,eAAe,EAAE,IAAI;QACrB,mBAAmB,EAAE,IAAI;QACzB,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,IAAI;QACrB,oBAAoB,EAAE,IAAI;QAC1B,cAAc,EAAE,IAAI;QACpB,kBAAkB,EAAE,IAAI;QACxB,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,IAAI;QACnB,uBAAuB,EAAE,IAAI;QAC7B,iBAAiB,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"everything.js","sourceRoot":"","sources":["../../src/presets/everything.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE;QACL,qBAAqB,EAAE,IAAI;QAC3B,mBAAmB,EAAE,IAAI;QACzB,qBAAqB,EAAE,IAAI;QAC3B,eAAe,EAAE,IAAI;QACrB,qBAAqB,EAAE,IAAI;QAC3B,wBAAwB,EAAE,IAAI;QAC9B,qBAAqB,EAAE,IAAI;QAC3B,OAAO,EAAE,IAAI;QACb,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,iBAAiB,EAAE,IAAI;QACvB,sBAAsB,EAAE,IAAI;QAC5B,wBAAwB,EAAE,IAAI;QAC9B,WAAW,EAAE,IAAI;QACjB,gBAAgB,EAAE,IAAI;QACtB,qBAAqB,EAAE,IAAI;QAC3B,iBAAiB,EAAE,IAAI;QACvB,gBAAgB,EAAE,IAAI;QACtB,qBAAqB,EAAE,IAAI;QAC3B,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;QACzB,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;QACtB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,qBAAqB,EAAE,IAAI;QAC3B,gBAAgB,EAAE,IAAI;QACtB,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;QACtB,kBAAkB,EAAE,IAAI;QACxB,mBAAmB,EAAE,IAAI;QACzB,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,IAAI;QACxB,yBAAyB,EAAE,IAAI;QAC/B,oBAAoB,EAAE,IAAI;QAC1B,kBAAkB,EAAE,IAAI;QACxB,mBAAmB,EAAE,IAAI;QACzB,UAAU,EAAE,IAAI;QAChB,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,IAAI;QACtB,eAAe,EAAE,IAAI;QACrB,mBAAmB,EAAE,IAAI;QACzB,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,IAAI;QACrB,oBAAoB,EAAE,IAAI;QAC1B,cAAc,EAAE,IAAI;QACpB,kBAAkB,EAAE,IAAI;QACxB,eAAe,EAAE,IAAI;QACrB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,IAAI;QACnB,uBAAuB,EAAE,IAAI;QAC7B,iBAAiB,EAAE,IAAI;QACvB,SAAS,EAAE,IAAI;KAChB;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"academic-slop.js","sourceRoot":"","sources":["../../src/registries/academic-slop.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,4CAA4C,CAAC;AAEzE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kBAAkB,EAAE,eAAe;CACpC,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import avgSentenceLength from "../
|
|
2
|
-
import colemanLiau from "../
|
|
3
|
-
import fleschKincaid from "../
|
|
4
|
-
import gunningFog from "../
|
|
5
|
-
import paragraphLength from "../
|
|
6
|
-
import wordRepetition from "../
|
|
1
|
+
import avgSentenceLength from "../rules/metrics/avg-sentence-length.js";
|
|
2
|
+
import colemanLiau from "../rules/metrics/coleman-liau.js";
|
|
3
|
+
import fleschKincaid from "../rules/metrics/flesch-kincaid.js";
|
|
4
|
+
import gunningFog from "../rules/metrics/gunning-fog.js";
|
|
5
|
+
import paragraphLength from "../rules/metrics/paragraph-length.js";
|
|
6
|
+
import wordRepetition from "../rules/metrics/word-repetition.js";
|
|
7
7
|
export const metricRules = {
|
|
8
8
|
"avg-sentence-length": avgSentenceLength,
|
|
9
9
|
"coleman-liau": colemanLiau,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/registries/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/registries/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,yCAAyC,CAAC;AACxE,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,aAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,UAAU,MAAM,iCAAiC,CAAC;AACzD,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,cAAc,MAAM,qCAAqC,CAAC;AAEjE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,qBAAqB,EAAE,iBAAiB;IACxC,cAAc,EAAE,WAAW;IAC3B,gBAAgB,EAAE,aAAa;IAC/B,aAAa,EAAE,UAAU;IACzB,kBAAkB,EAAE,eAAe;IACnC,iBAAiB,EAAE,cAAc;CAClC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import bodyActionDensity from "../rules/narrative-slop/body-action-density.js";
|
|
2
|
+
import flatActionCadence from "../rules/narrative-slop/flat-action-cadence.js";
|
|
3
|
+
import narrativeCliches from "../rules/narrative-slop/narrative-cliches.js";
|
|
4
|
+
import perceptionVerbDensity from "../rules/narrative-slop/perception-verb-density.js";
|
|
5
|
+
export const narrativeSlopRules = {
|
|
6
|
+
"body-action-density": bodyActionDensity,
|
|
7
|
+
"flat-action-cadence": flatActionCadence,
|
|
8
|
+
"perception-verb-density": perceptionVerbDensity,
|
|
9
|
+
"narrative-cliches": narrativeCliches
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=narrative-slop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narrative-slop.js","sourceRoot":"","sources":["../../src/registries/narrative-slop.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,gDAAgD,CAAC;AAC/E,OAAO,iBAAiB,MAAM,gDAAgD,CAAC;AAC/E,OAAO,gBAAgB,MAAM,8CAA8C,CAAC;AAC5E,OAAO,qBAAqB,MAAM,oDAAoD,CAAC;AAEvF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,qBAAqB,EAAE,iBAAiB;IACxC,qBAAqB,EAAE,iBAAiB;IACxC,yBAAyB,EAAE,qBAAqB;IAChD,mBAAmB,EAAE,gBAAgB;CACtC,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import colonDramatic from "../
|
|
2
|
-
import emDashes from "../
|
|
3
|
-
import exclamationDensity from "../
|
|
4
|
-
import fakeTimestamps from "../
|
|
5
|
-
import sentenceCase from "../
|
|
6
|
-
import smartQuotes from "../
|
|
1
|
+
import colonDramatic from "../rules/orthography/colon-dramatic.js";
|
|
2
|
+
import emDashes from "../rules/orthography/em-dashes.js";
|
|
3
|
+
import exclamationDensity from "../rules/orthography/exclamation-density.js";
|
|
4
|
+
import fakeTimestamps from "../rules/orthography/fake-timestamps.js";
|
|
5
|
+
import sentenceCase from "../rules/orthography/sentence-case.js";
|
|
6
|
+
import smartQuotes from "../rules/orthography/smart-quotes.js";
|
|
7
7
|
export const orthographyRules = {
|
|
8
8
|
"colon-dramatic": colonDramatic,
|
|
9
9
|
"em-dashes": emDashes,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orthography.js","sourceRoot":"","sources":["../../src/registries/orthography.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,
|
|
1
|
+
{"version":3,"file":"orthography.js","sourceRoot":"","sources":["../../src/registries/orthography.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,wCAAwC,CAAC;AACnE,OAAO,QAAQ,MAAM,mCAAmC,CAAC;AACzD,OAAO,kBAAkB,MAAM,6CAA6C,CAAC;AAC7E,OAAO,cAAc,MAAM,yCAAyC,CAAC;AACrE,OAAO,YAAY,MAAM,uCAAuC,CAAC;AACjE,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gBAAgB,EAAE,aAAa;IAC/B,WAAW,EAAE,QAAQ;IACrB,qBAAqB,EAAE,kBAAkB;IACzC,iBAAiB,EAAE,cAAc;IACjC,eAAe,EAAE,YAAY;IAC7B,cAAc,EAAE,WAAW;CAC5B,CAAC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import cliches from "../
|
|
2
|
-
import corporateSpeak from "../
|
|
3
|
-
import humbleBragger from "../
|
|
4
|
-
import jargonFaker from "../
|
|
5
|
-
import llmDisclaimer from "../
|
|
6
|
-
import prohibitedPhrases from "../
|
|
7
|
-
import
|
|
8
|
-
import
|
|
1
|
+
import cliches from "../rules/phrases/cliches.js";
|
|
2
|
+
import corporateSpeak from "../rules/phrases/corporate-speak.js";
|
|
3
|
+
import humbleBragger from "../rules/phrases/humble-bragger.js";
|
|
4
|
+
import jargonFaker from "../rules/phrases/jargon-faker.js";
|
|
5
|
+
import llmDisclaimer from "../rules/phrases/llm-disclaimer.js";
|
|
6
|
+
import prohibitedPhrases from "../rules/phrases/prohibited-phrases.js";
|
|
7
|
+
import redundancy from "../rules/phrases/redundancy.js";
|
|
8
|
+
import skunkedTerms from "../rules/phrases/skunked-terms.js";
|
|
9
|
+
import uncomparables from "../rules/phrases/uncomparables.js";
|
|
10
|
+
import wordiness from "../rules/phrases/wordiness.js";
|
|
9
11
|
export const phraseRules = {
|
|
10
12
|
cliches,
|
|
11
13
|
"corporate-speak": corporateSpeak,
|
|
@@ -13,7 +15,9 @@ export const phraseRules = {
|
|
|
13
15
|
"jargon-faker": jargonFaker,
|
|
14
16
|
"llm-disclaimer": llmDisclaimer,
|
|
15
17
|
"prohibited-phrases": prohibitedPhrases,
|
|
18
|
+
redundancy,
|
|
16
19
|
"skunked-terms": skunkedTerms,
|
|
17
|
-
uncomparables
|
|
20
|
+
uncomparables,
|
|
21
|
+
wordiness
|
|
18
22
|
};
|
|
19
23
|
//# sourceMappingURL=phrases.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phrases.js","sourceRoot":"","sources":["../../src/registries/phrases.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"phrases.js","sourceRoot":"","sources":["../../src/registries/phrases.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,cAAc,MAAM,qCAAqC,CAAC;AACjE,OAAO,aAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,aAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,iBAAiB,MAAM,wCAAwC,CAAC;AACvE,OAAO,UAAU,MAAM,gCAAgC,CAAC;AACxD,OAAO,YAAY,MAAM,mCAAmC,CAAC;AAC7D,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAC9D,OAAO,SAAS,MAAM,+BAA+B,CAAC;AAEtD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO;IACP,iBAAiB,EAAE,cAAc;IACjC,gBAAgB,EAAE,aAAa;IAC/B,cAAc,EAAE,WAAW;IAC3B,gBAAgB,EAAE,aAAa;IAC/B,oBAAoB,EAAE,iBAAiB;IACvC,UAAU;IACV,eAAe,EAAE,YAAY;IAC7B,aAAa;IACb,SAAS;CACV,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-thinness.js","sourceRoot":"","sources":["../../src/registries/semantic-thinness.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"semantic-thinness.js","sourceRoot":"","sources":["../../src/registries/semantic-thinness.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,iDAAiD,CAAC;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,mBAAmB,EAAE,gBAAgB;CACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authority.js","sourceRoot":"","sources":["../../../src/registries/syntactic-patterns/authority.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"authority.js","sourceRoot":"","sources":["../../../src/registries/syntactic-patterns/authority.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,+DAA+D,CAAC;AAE7F,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,mBAAmB,EAAE,gBAAgB;CACtC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import affirmationClosers from "../../
|
|
2
|
-
import boilerplateConclusion from "../../
|
|
3
|
-
import falseQuestion from "../../
|
|
4
|
-
import summativeCloser from "../../
|
|
1
|
+
import affirmationClosers from "../../rules/syntactic-patterns/closers/affirmation-closers.js";
|
|
2
|
+
import boilerplateConclusion from "../../rules/syntactic-patterns/closers/boilerplate-conclusion.js";
|
|
3
|
+
import falseQuestion from "../../rules/syntactic-patterns/closers/false-question.js";
|
|
4
|
+
import summativeCloser from "../../rules/syntactic-patterns/closers/summative-closer.js";
|
|
5
5
|
export const closerRules = {
|
|
6
6
|
"affirmation-closers": affirmationClosers,
|
|
7
7
|
"boilerplate-conclusion": boilerplateConclusion,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closers.js","sourceRoot":"","sources":["../../../src/registries/syntactic-patterns/closers.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,
|
|
1
|
+
{"version":3,"file":"closers.js","sourceRoot":"","sources":["../../../src/registries/syntactic-patterns/closers.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,+DAA+D,CAAC;AAC/F,OAAO,qBAAqB,MAAM,kEAAkE,CAAC;AACrG,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,eAAe,MAAM,4DAA4D,CAAC;AAEzF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,qBAAqB,EAAE,kBAAkB;IACzC,wBAAwB,EAAE,qBAAqB;IAC/C,gBAAgB,EAAE,aAAa;IAC/B,kBAAkB,EAAE,eAAe;CACpC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import blameReframe from "../../
|
|
2
|
-
import contrastiveAphorism from "../../
|
|
3
|
-
import negationReframe from "../../
|
|
1
|
+
import blameReframe from "../../rules/syntactic-patterns/contrast/blame-reframe.js";
|
|
2
|
+
import contrastiveAphorism from "../../rules/syntactic-patterns/contrast/contrastive-aphorism.js";
|
|
3
|
+
import negationReframe from "../../rules/syntactic-patterns/contrast/negation-reframe.js";
|
|
4
4
|
export const contrastRules = {
|
|
5
5
|
"blame-reframe": blameReframe,
|
|
6
6
|
"contrastive-aphorism": contrastiveAphorism,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contrast.js","sourceRoot":"","sources":["../../../src/registries/syntactic-patterns/contrast.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,
|
|
1
|
+
{"version":3,"file":"contrast.js","sourceRoot":"","sources":["../../../src/registries/syntactic-patterns/contrast.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,0DAA0D,CAAC;AACpF,OAAO,mBAAmB,MAAM,iEAAiE,CAAC;AAClG,OAAO,eAAe,MAAM,6DAA6D,CAAC;AAE1F,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,eAAe,EAAE,YAAY;IAC7B,sBAAsB,EAAE,mBAAmB;IAC3C,kBAAkB,EAAE,eAAe;CACpC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import softeningLanguage from "../../
|
|
2
|
-
import universalizingClaims from "../../
|
|
1
|
+
import softeningLanguage from "../../rules/syntactic-patterns/generalization/softening-language.js";
|
|
2
|
+
import universalizingClaims from "../../rules/syntactic-patterns/generalization/universalizing-claims.js";
|
|
3
3
|
export const generalizationRules = {
|
|
4
4
|
"softening-language": softeningLanguage,
|
|
5
5
|
"universalizing-claims": universalizingClaims
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generalization.js","sourceRoot":"","sources":["../../../src/registries/syntactic-patterns/generalization.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,
|
|
1
|
+
{"version":3,"file":"generalization.js","sourceRoot":"","sources":["../../../src/registries/syntactic-patterns/generalization.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,qEAAqE,CAAC;AACpG,OAAO,oBAAoB,MAAM,wEAAwE,CAAC;AAE1G,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,oBAAoB,EAAE,iBAAiB;IACvC,uBAAuB,EAAE,oBAAoB;CAC9C,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import boilerplateFraming from "../../
|
|
2
|
-
import genericSignposting from "../../
|
|
3
|
-
import lessonFraming from "../../
|
|
4
|
-
import llmOpeners from "../../
|
|
5
|
-
import observerGuidance from "../../
|
|
1
|
+
import boilerplateFraming from "../../rules/syntactic-patterns/lead-ins/boilerplate-framing.js";
|
|
2
|
+
import genericSignposting from "../../rules/syntactic-patterns/lead-ins/generic-signposting.js";
|
|
3
|
+
import lessonFraming from "../../rules/syntactic-patterns/lead-ins/lesson-framing.js";
|
|
4
|
+
import llmOpeners from "../../rules/syntactic-patterns/lead-ins/llm-openers.js";
|
|
5
|
+
import observerGuidance from "../../rules/syntactic-patterns/lead-ins/observer-guidance.js";
|
|
6
6
|
export const leadInRules = {
|
|
7
7
|
"boilerplate-framing": boilerplateFraming,
|
|
8
8
|
"generic-signposting": genericSignposting,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lead-ins.js","sourceRoot":"","sources":["../../../src/registries/syntactic-patterns/lead-ins.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,
|
|
1
|
+
{"version":3,"file":"lead-ins.js","sourceRoot":"","sources":["../../../src/registries/syntactic-patterns/lead-ins.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,gEAAgE,CAAC;AAChG,OAAO,kBAAkB,MAAM,gEAAgE,CAAC;AAChG,OAAO,aAAa,MAAM,2DAA2D,CAAC;AACtF,OAAO,UAAU,MAAM,wDAAwD,CAAC;AAChF,OAAO,gBAAgB,MAAM,8DAA8D,CAAC;AAE5F,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,qBAAqB,EAAE,kBAAkB;IACzC,qBAAqB,EAAE,kBAAkB;IACzC,gBAAgB,EAAE,aAAa;IAC/B,aAAa,EAAE,UAAU;IACzB,mBAAmB,EAAE,gBAAgB;CACtC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import responseWrapper from "../../
|
|
1
|
+
import responseWrapper from "../../rules/syntactic-patterns/llm-artifacts/response-wrapper.js";
|
|
2
2
|
export const llmArtifactRules = {
|
|
3
3
|
"response-wrapper": responseWrapper
|
|
4
4
|
};
|