yuno-proofreader 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +13 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +435 -0
  5. data/exe/yuno-proofreader +16 -0
  6. data/lib/yuno/proofreader/analysis/adjustments.rb +45 -0
  7. data/lib/yuno/proofreader/analysis/crawler.rb +95 -0
  8. data/lib/yuno/proofreader/analysis/entries.rb +73 -0
  9. data/lib/yuno/proofreader/analysis/extractor.rb +209 -0
  10. data/lib/yuno/proofreader/analysis/graph.rb +115 -0
  11. data/lib/yuno/proofreader/analysis/judge.rb +103 -0
  12. data/lib/yuno/proofreader/analysis/judge.yml +27 -0
  13. data/lib/yuno/proofreader/analysis/judge_prompt.rb +72 -0
  14. data/lib/yuno/proofreader/analysis/judgments.rb +70 -0
  15. data/lib/yuno/proofreader/analysis/links.rb +54 -0
  16. data/lib/yuno/proofreader/analysis/list_order.rb +33 -0
  17. data/lib/yuno/proofreader/analysis/reasons.rb +49 -0
  18. data/lib/yuno/proofreader/analysis/report.rb +110 -0
  19. data/lib/yuno/proofreader/analysis/runner.rb +171 -0
  20. data/lib/yuno/proofreader/analysis/scorer.rb +128 -0
  21. data/lib/yuno/proofreader/analysis/settings.rb +90 -0
  22. data/lib/yuno/proofreader/analysis/signals.rb +102 -0
  23. data/lib/yuno/proofreader/analysis/structured_data.rb +57 -0
  24. data/lib/yuno/proofreader/analysis/url_tree.rb +49 -0
  25. data/lib/yuno/proofreader/analysis/weights.rb +77 -0
  26. data/lib/yuno/proofreader/analysis/weights.yml +39 -0
  27. data/lib/yuno/proofreader/audit/agenda.rb +86 -0
  28. data/lib/yuno/proofreader/audit/agenda_report.rb +65 -0
  29. data/lib/yuno/proofreader/audit/answers.rb +74 -0
  30. data/lib/yuno/proofreader/audit/attempt.rb +69 -0
  31. data/lib/yuno/proofreader/audit/batch.rb +64 -0
  32. data/lib/yuno/proofreader/audit/batch_report.rb +87 -0
  33. data/lib/yuno/proofreader/audit/cadence.rb +67 -0
  34. data/lib/yuno/proofreader/audit/instructions.rb +30 -0
  35. data/lib/yuno/proofreader/audit/log_fields.rb +28 -0
  36. data/lib/yuno/proofreader/audit/prompt.rb +157 -0
  37. data/lib/yuno/proofreader/audit/prompts/instructions.yml +46 -0
  38. data/lib/yuno/proofreader/audit/prompts/steps.yml +67 -0
  39. data/lib/yuno/proofreader/audit/report.rb +153 -0
  40. data/lib/yuno/proofreader/audit/runner.rb +144 -0
  41. data/lib/yuno/proofreader/audit/steps.rb +56 -0
  42. data/lib/yuno/proofreader/cli/analysis_commands.rb +43 -0
  43. data/lib/yuno/proofreader/cli/audit_commands.rb +92 -0
  44. data/lib/yuno/proofreader/cli/command_log.rb +42 -0
  45. data/lib/yuno/proofreader/cli/flags.rb +48 -0
  46. data/lib/yuno/proofreader/cli/init_command.rb +116 -0
  47. data/lib/yuno/proofreader/cli/model_commands.rb +34 -0
  48. data/lib/yuno/proofreader/cli/queue_commands.rb +89 -0
  49. data/lib/yuno/proofreader/cli/sheet_commands.rb +57 -0
  50. data/lib/yuno/proofreader/cli.rb +218 -0
  51. data/lib/yuno/proofreader/config.rb +25 -0
  52. data/lib/yuno/proofreader/context.rb +55 -0
  53. data/lib/yuno/proofreader/env_file.rb +76 -0
  54. data/lib/yuno/proofreader/errors.rb +17 -0
  55. data/lib/yuno/proofreader/findings/finding.rb +95 -0
  56. data/lib/yuno/proofreader/findings/matching.rb +34 -0
  57. data/lib/yuno/proofreader/findings/merger.rb +43 -0
  58. data/lib/yuno/proofreader/findings/outline.rb +73 -0
  59. data/lib/yuno/proofreader/findings/plan.rb +24 -0
  60. data/lib/yuno/proofreader/findings/reconciler.rb +219 -0
  61. data/lib/yuno/proofreader/findings/source.rb +79 -0
  62. data/lib/yuno/proofreader/findings/text.rb +37 -0
  63. data/lib/yuno/proofreader/http/client.rb +131 -0
  64. data/lib/yuno/proofreader/http/net_http_transport.rb +55 -0
  65. data/lib/yuno/proofreader/http/robots.rb +72 -0
  66. data/lib/yuno/proofreader/init/ask.rb +67 -0
  67. data/lib/yuno/proofreader/init/detector.rb +100 -0
  68. data/lib/yuno/proofreader/init/interview.rb +210 -0
  69. data/lib/yuno/proofreader/init/parsing.rb +47 -0
  70. data/lib/yuno/proofreader/init/web.rb +33 -0
  71. data/lib/yuno/proofreader/llm/client.rb +140 -0
  72. data/lib/yuno/proofreader/llm/defaults.rb +22 -0
  73. data/lib/yuno/proofreader/llm/defaults.yml +6 -0
  74. data/lib/yuno/proofreader/llm/errors.rb +26 -0
  75. data/lib/yuno/proofreader/llm/factory.rb +45 -0
  76. data/lib/yuno/proofreader/llm/http_transport.rb +41 -0
  77. data/lib/yuno/proofreader/llm/json_text.rb +23 -0
  78. data/lib/yuno/proofreader/llm/model_commands.rb +34 -0
  79. data/lib/yuno/proofreader/llm/provider.rb +58 -0
  80. data/lib/yuno/proofreader/llm/providers/gemini.rb +146 -0
  81. data/lib/yuno/proofreader/llm/providers.rb +38 -0
  82. data/lib/yuno/proofreader/llm/types.rb +13 -0
  83. data/lib/yuno/proofreader/llm/usage.rb +17 -0
  84. data/lib/yuno/proofreader/log.rb +129 -0
  85. data/lib/yuno/proofreader/pages/fetcher.rb +75 -0
  86. data/lib/yuno/proofreader/pages/report.rb +45 -0
  87. data/lib/yuno/proofreader/pages/snapshot.rb +48 -0
  88. data/lib/yuno/proofreader/pages/trimmer.rb +36 -0
  89. data/lib/yuno/proofreader/settings_file.rb +51 -0
  90. data/lib/yuno/proofreader/site.rb +74 -0
  91. data/lib/yuno/proofreader/site_reader.rb +131 -0
  92. data/lib/yuno/proofreader/sitemap/aligner.rb +78 -0
  93. data/lib/yuno/proofreader/sitemap/importer.rb +31 -0
  94. data/lib/yuno/proofreader/sitemap/loader.rb +127 -0
  95. data/lib/yuno/proofreader/sitemap/mismatch.rb +76 -0
  96. data/lib/yuno/proofreader/sitemap/pairer.rb +223 -0
  97. data/lib/yuno/proofreader/sitemap/parser.rb +73 -0
  98. data/lib/yuno/proofreader/sitemap/report.rb +80 -0
  99. data/lib/yuno/proofreader/store/cells.rb +67 -0
  100. data/lib/yuno/proofreader/store/google_gateway.rb +198 -0
  101. data/lib/yuno/proofreader/store/memory.rb +90 -0
  102. data/lib/yuno/proofreader/store/records.rb +28 -0
  103. data/lib/yuno/proofreader/store/schema.rb +109 -0
  104. data/lib/yuno/proofreader/store/sheets.rb +183 -0
  105. data/lib/yuno/proofreader/store/tab_setup.rb +74 -0
  106. data/lib/yuno/proofreader/version.rb +7 -0
  107. data/lib/yuno/proofreader.rb +101 -0
  108. data/proofreader.example.yml +134 -0
  109. metadata +194 -0
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yuno
4
+ module Proofreader
5
+ VERSION = "0.1.0"
6
+ end
7
+ end
@@ -0,0 +1,101 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "proofreader/version"
4
+ require_relative "proofreader/errors"
5
+ require_relative "proofreader/config"
6
+ require_relative "proofreader/log"
7
+ require_relative "proofreader/site"
8
+ require_relative "proofreader/env_file"
9
+ require_relative "proofreader/http/client"
10
+ require_relative "proofreader/http/robots"
11
+ require_relative "proofreader/sitemap/parser"
12
+ require_relative "proofreader/sitemap/aligner"
13
+ require_relative "proofreader/sitemap/mismatch"
14
+ require_relative "proofreader/sitemap/pairer"
15
+ require_relative "proofreader/sitemap/loader"
16
+ require_relative "proofreader/sitemap/report"
17
+ require_relative "proofreader/sitemap/importer"
18
+ require_relative "proofreader/pages/trimmer"
19
+ require_relative "proofreader/pages/snapshot"
20
+ require_relative "proofreader/pages/fetcher"
21
+ require_relative "proofreader/pages/report"
22
+ require_relative "proofreader/store/schema"
23
+ require_relative "proofreader/store/records"
24
+ require_relative "proofreader/store/cells"
25
+ require_relative "proofreader/store/memory"
26
+ require_relative "proofreader/store/sheets"
27
+ require_relative "proofreader/store/tab_setup"
28
+ require_relative "proofreader/context"
29
+ require_relative "proofreader/site_reader"
30
+ require_relative "proofreader/findings/text"
31
+ require_relative "proofreader/findings/finding"
32
+ require_relative "proofreader/findings/outline"
33
+ require_relative "proofreader/findings/source"
34
+ require_relative "proofreader/findings/matching"
35
+ require_relative "proofreader/findings/merger"
36
+ require_relative "proofreader/findings/plan"
37
+ require_relative "proofreader/findings/reconciler"
38
+ require_relative "proofreader/analysis/links"
39
+ require_relative "proofreader/analysis/structured_data"
40
+ require_relative "proofreader/analysis/extractor"
41
+ require_relative "proofreader/analysis/url_tree"
42
+ require_relative "proofreader/analysis/crawler"
43
+ require_relative "proofreader/analysis/settings"
44
+ require_relative "proofreader/analysis/list_order"
45
+ require_relative "proofreader/analysis/adjustments"
46
+ require_relative "proofreader/analysis/weights"
47
+ require_relative "proofreader/analysis/graph"
48
+ require_relative "proofreader/analysis/signals"
49
+ require_relative "proofreader/analysis/reasons"
50
+ require_relative "proofreader/analysis/entries"
51
+ require_relative "proofreader/analysis/judgments"
52
+ require_relative "proofreader/analysis/judge_prompt"
53
+ require_relative "proofreader/analysis/judge"
54
+ require_relative "proofreader/analysis/scorer"
55
+ require_relative "proofreader/analysis/runner"
56
+ require_relative "proofreader/analysis/report"
57
+ require_relative "proofreader/llm/errors"
58
+ require_relative "proofreader/llm/types"
59
+ require_relative "proofreader/llm/json_text"
60
+ require_relative "proofreader/llm/http_transport"
61
+ require_relative "proofreader/llm/provider"
62
+ require_relative "proofreader/llm/providers"
63
+ require_relative "proofreader/llm/providers/gemini"
64
+ require_relative "proofreader/llm/defaults"
65
+ require_relative "proofreader/llm/client"
66
+ require_relative "proofreader/llm/factory"
67
+ require_relative "proofreader/llm/usage"
68
+ require_relative "proofreader/audit/steps"
69
+ require_relative "proofreader/audit/instructions"
70
+ require_relative "proofreader/audit/prompt"
71
+ require_relative "proofreader/audit/answers"
72
+ require_relative "proofreader/audit/attempt"
73
+ require_relative "proofreader/audit/runner"
74
+ require_relative "proofreader/audit/report"
75
+ require_relative "proofreader/audit/log_fields"
76
+ require_relative "proofreader/audit/cadence"
77
+ require_relative "proofreader/audit/agenda"
78
+ require_relative "proofreader/audit/batch"
79
+ require_relative "proofreader/audit/agenda_report"
80
+ require_relative "proofreader/audit/batch_report"
81
+ require_relative "proofreader/cli/audit_commands"
82
+ require_relative "proofreader/cli/command_log"
83
+ require_relative "proofreader/cli/model_commands"
84
+ require_relative "proofreader/cli/sheet_commands"
85
+ require_relative "proofreader/cli/analysis_commands"
86
+ require_relative "proofreader/settings_file"
87
+ require_relative "proofreader/init/parsing"
88
+ require_relative "proofreader/init/detector"
89
+ require_relative "proofreader/init/ask"
90
+ require_relative "proofreader/init/web"
91
+ require_relative "proofreader/init/interview"
92
+ require_relative "proofreader/cli/flags"
93
+ require_relative "proofreader/cli/init_command"
94
+ require_relative "proofreader/cli/queue_commands"
95
+ require_relative "proofreader/cli"
96
+
97
+ module Yuno
98
+ # AI-powered website proofreader: reads a site, audits its pages and lists suggested fixes.
99
+ module Proofreader
100
+ end
101
+ end
@@ -0,0 +1,134 @@
1
+ # Copy this file to proofreader.yml and edit it. `yuno-proofreader settings` shows what is still to fill in.
2
+
3
+ # The address of the site, without a path.
4
+ website: https://example.com
5
+
6
+ # One entry per language. The first one is the default language: pages are named after its addresses,
7
+ # and default_language_only_paths refers to it.
8
+ #
9
+ # code The language code. Always put it in quotes: without them YAML reads a bare no (the code for
10
+ # Norwegian) as false.
11
+ # prefix What the web address of a page in this language starts with, after the domain:
12
+ # "" nothing, as in example.com/about
13
+ # "/en" as in example.com/en/about
14
+ # notes Optional. How this language should read, such as its regional variant or whether it addresses
15
+ # readers formally. It is sent to the AI model, see "About the site" below.
16
+ languages:
17
+ - code: "de" # German
18
+ prefix: ""
19
+ notes: "[FILL IN] The variant and form of address of this language, for example: formal address (Sie)."
20
+ - code: "es" # Spanish
21
+ prefix: "/es"
22
+ notes: "[FILL IN] For example: Latin American Spanish, formal address (usted)."
23
+ - code: "en" # English
24
+ prefix: "/en"
25
+ notes: "[FILL IN] For example: American English."
26
+
27
+ # A site where every language has a prefix, and English is the default:
28
+ # languages:
29
+ # - code: "en"
30
+ # prefix: "/en"
31
+ # - code: "de"
32
+ # prefix: "/de"
33
+
34
+ # Where your sitemap is. Leave this out and the tool looks in this order:
35
+ # 1. the Sitemap lines in https://example.com/robots.txt (every one of them is read)
36
+ # 2. https://example.com/sitemap.xml
37
+ # Set it if your sitemap lives somewhere else. It takes one address, and when it is set robots.txt is not read.
38
+ # sitemap_url: https://example.com/sitemap.xml
39
+
40
+ # Pages that exist only in the default language, written as they appear in the address.
41
+ # A path also covers everything below it.
42
+ # default_language_only_paths: ["/news"]
43
+
44
+ # Pages you do not want audited, in any language. A path also covers everything below it.
45
+ # skip_paths: ["/thank-you", "/es/gracias"]
46
+
47
+ # ---- About the site ----------------------------------------------------------------------------
48
+ # Everything below is sent to the AI model together with each page, so keep it short and free of secrets.
49
+ # Limits: 500 characters per text, 200 per entry of a list or note of a language, 50 entries per list.
50
+ #
51
+ # Every value here starts with [FILL IN]. The commands that send text to the model (audit, prompt, and
52
+ # analyze unless you pass --no-ai) refuse to run while that text is still there: replace the whole value
53
+ # with your own text, or delete the setting. Only business is required.
54
+
55
+ # What the site is and what it offers, in a sentence or two.
56
+ business: "[FILL IN] What the site is and what it offers, in a sentence or two."
57
+
58
+ # Who reads the site.
59
+ audience: "[FILL IN] Who reads the site (end user)."
60
+
61
+ # How the text should sound.
62
+ tone: "[FILL IN] How the text should sound (formal, informal, etc)."
63
+
64
+ # Writing rules, one per entry.
65
+ rules:
66
+ - "[FILL IN] One writing rule of your own, such as how prices or dates are written."
67
+ - "[FILL IN] Another writing rule, or delete this line."
68
+
69
+ # Words that are correct as written and must never be flagged, one per entry: your brand name,
70
+ # place names, product names, local words.
71
+ ignore_terms:
72
+ - "[FILL IN] One term that is correct as written, such as your brand name."
73
+
74
+ # Differences between language versions that are intended, one per entry.
75
+ intentional_differences:
76
+ - "[FILL IN] One difference between language versions that is intended, such as a section that exists in one language only."
77
+
78
+ # ---- The AI models ----------------------------------------------------------------------------
79
+ # Everything here is optional.
80
+ #
81
+ # provider Which family of models to use. Leave it out while only one is installed.
82
+ # models The models to use, best first. When one is overloaded, over its limit or not available to
83
+ # your key, the next one is used. The tool has a built-in list to fall back on, but model
84
+ # names change often, so set your own. `yuno-proofreader models` shows which ones your key
85
+ # can use. The names below are only examples.
86
+ # review_models Optional list for the independent second review, which prefers a different model from the
87
+ # first audit. Leave it out to use `models`. With only one model there is nothing for the
88
+ # review to be independent of.
89
+ #
90
+ # provider: gemini
91
+ # models:
92
+ # - gemini-3.8-flash
93
+ # - gemini-3.7-flash
94
+ # review_models:
95
+ # - gemini-3.6-flash
96
+
97
+ # ---- The analysis of the site (optional) -------------------------------------------------------
98
+ # Used by `yuno-proofreader analyze`, which ranks the pages of the site by importance. Everything here is
99
+ # optional. The values below are examples, not placeholders: if you remove the # signs without changing
100
+ # them, they are applied and sent to the model as they stand.
101
+ #
102
+ # importance_hint What the model should know about your business that it cannot tell from the pages,
103
+ # such as which offers matter most. It is sent to the AI model.
104
+ # priority_paths Points added to the importance of the pages at or below a path, from -50 to 50.
105
+ # The most specific path wins. Use negative points for pages that matter less.
106
+ # hubs Index pages to read even if nothing else leads to them. The tool already finds the
107
+ # pages that have other pages under them.
108
+ # hub_order editorial: the order of your lists says what matters most. neutral: it says nothing.
109
+ # auto (the default): editorial, unless a list is in alphabetical order.
110
+ # max_pages How many pages the analysis reads at most, from 1 to 500 (default 80).
111
+ #
112
+ # analysis:
113
+ # importance_hint: "What we sell ourselves matters more than the information pages."
114
+ # priority_paths:
115
+ # /products: 10
116
+ # /careers: -20
117
+ # hubs: ["/blog"]
118
+ # hub_order: auto
119
+ # max_pages: 80
120
+
121
+ # ---- How often pages are audited again (optional) ----------------------------------------------
122
+ # Used by `yuno-proofreader queue` and `audit --next`, which pick the pages that are due. The tool schedules
123
+ # nothing itself: run `audit --next` from cron, a Kubernetes CronJob or any other scheduler.
124
+ # The values below are the defaults, so removing the # signs without changing them changes nothing.
125
+ #
126
+ # intervals Days between audits for each tier of the analysis (1 is the most important). Tiers you
127
+ # leave out keep their default.
128
+ # retry_days Days before a page whose last audit was incomplete is tried again.
129
+ # default_tier The tier a page counts as until the analysis has ranked it.
130
+ #
131
+ # cadence:
132
+ # intervals: { 1: 30, 2: 60, 3: 120, 4: 240 }
133
+ # retry_days: 7
134
+ # default_tier: 3
metadata ADDED
@@ -0,0 +1,194 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yuno-proofreader
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sebastian Alsen
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: google-apis-sheets_v4
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.49'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.49'
26
+ - !ruby/object:Gem::Dependency
27
+ name: googleauth
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.17'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.17'
40
+ - !ruby/object:Gem::Dependency
41
+ name: nokogiri
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.19'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.19'
54
+ description: Reviews your public web pages with an AI model (Gemini so far) for typos,
55
+ grammar, HTML structure, SEO and differences between language versions, ranks your
56
+ pages by importance and lists the suggested fixes in a Google Sheet for you to review.
57
+ executables:
58
+ - yuno-proofreader
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - CHANGELOG.md
63
+ - LICENSE.txt
64
+ - README.md
65
+ - exe/yuno-proofreader
66
+ - lib/yuno/proofreader.rb
67
+ - lib/yuno/proofreader/analysis/adjustments.rb
68
+ - lib/yuno/proofreader/analysis/crawler.rb
69
+ - lib/yuno/proofreader/analysis/entries.rb
70
+ - lib/yuno/proofreader/analysis/extractor.rb
71
+ - lib/yuno/proofreader/analysis/graph.rb
72
+ - lib/yuno/proofreader/analysis/judge.rb
73
+ - lib/yuno/proofreader/analysis/judge.yml
74
+ - lib/yuno/proofreader/analysis/judge_prompt.rb
75
+ - lib/yuno/proofreader/analysis/judgments.rb
76
+ - lib/yuno/proofreader/analysis/links.rb
77
+ - lib/yuno/proofreader/analysis/list_order.rb
78
+ - lib/yuno/proofreader/analysis/reasons.rb
79
+ - lib/yuno/proofreader/analysis/report.rb
80
+ - lib/yuno/proofreader/analysis/runner.rb
81
+ - lib/yuno/proofreader/analysis/scorer.rb
82
+ - lib/yuno/proofreader/analysis/settings.rb
83
+ - lib/yuno/proofreader/analysis/signals.rb
84
+ - lib/yuno/proofreader/analysis/structured_data.rb
85
+ - lib/yuno/proofreader/analysis/url_tree.rb
86
+ - lib/yuno/proofreader/analysis/weights.rb
87
+ - lib/yuno/proofreader/analysis/weights.yml
88
+ - lib/yuno/proofreader/audit/agenda.rb
89
+ - lib/yuno/proofreader/audit/agenda_report.rb
90
+ - lib/yuno/proofreader/audit/answers.rb
91
+ - lib/yuno/proofreader/audit/attempt.rb
92
+ - lib/yuno/proofreader/audit/batch.rb
93
+ - lib/yuno/proofreader/audit/batch_report.rb
94
+ - lib/yuno/proofreader/audit/cadence.rb
95
+ - lib/yuno/proofreader/audit/instructions.rb
96
+ - lib/yuno/proofreader/audit/log_fields.rb
97
+ - lib/yuno/proofreader/audit/prompt.rb
98
+ - lib/yuno/proofreader/audit/prompts/instructions.yml
99
+ - lib/yuno/proofreader/audit/prompts/steps.yml
100
+ - lib/yuno/proofreader/audit/report.rb
101
+ - lib/yuno/proofreader/audit/runner.rb
102
+ - lib/yuno/proofreader/audit/steps.rb
103
+ - lib/yuno/proofreader/cli.rb
104
+ - lib/yuno/proofreader/cli/analysis_commands.rb
105
+ - lib/yuno/proofreader/cli/audit_commands.rb
106
+ - lib/yuno/proofreader/cli/command_log.rb
107
+ - lib/yuno/proofreader/cli/flags.rb
108
+ - lib/yuno/proofreader/cli/init_command.rb
109
+ - lib/yuno/proofreader/cli/model_commands.rb
110
+ - lib/yuno/proofreader/cli/queue_commands.rb
111
+ - lib/yuno/proofreader/cli/sheet_commands.rb
112
+ - lib/yuno/proofreader/config.rb
113
+ - lib/yuno/proofreader/context.rb
114
+ - lib/yuno/proofreader/env_file.rb
115
+ - lib/yuno/proofreader/errors.rb
116
+ - lib/yuno/proofreader/findings/finding.rb
117
+ - lib/yuno/proofreader/findings/matching.rb
118
+ - lib/yuno/proofreader/findings/merger.rb
119
+ - lib/yuno/proofreader/findings/outline.rb
120
+ - lib/yuno/proofreader/findings/plan.rb
121
+ - lib/yuno/proofreader/findings/reconciler.rb
122
+ - lib/yuno/proofreader/findings/source.rb
123
+ - lib/yuno/proofreader/findings/text.rb
124
+ - lib/yuno/proofreader/http/client.rb
125
+ - lib/yuno/proofreader/http/net_http_transport.rb
126
+ - lib/yuno/proofreader/http/robots.rb
127
+ - lib/yuno/proofreader/init/ask.rb
128
+ - lib/yuno/proofreader/init/detector.rb
129
+ - lib/yuno/proofreader/init/interview.rb
130
+ - lib/yuno/proofreader/init/parsing.rb
131
+ - lib/yuno/proofreader/init/web.rb
132
+ - lib/yuno/proofreader/llm/client.rb
133
+ - lib/yuno/proofreader/llm/defaults.rb
134
+ - lib/yuno/proofreader/llm/defaults.yml
135
+ - lib/yuno/proofreader/llm/errors.rb
136
+ - lib/yuno/proofreader/llm/factory.rb
137
+ - lib/yuno/proofreader/llm/http_transport.rb
138
+ - lib/yuno/proofreader/llm/json_text.rb
139
+ - lib/yuno/proofreader/llm/model_commands.rb
140
+ - lib/yuno/proofreader/llm/provider.rb
141
+ - lib/yuno/proofreader/llm/providers.rb
142
+ - lib/yuno/proofreader/llm/providers/gemini.rb
143
+ - lib/yuno/proofreader/llm/types.rb
144
+ - lib/yuno/proofreader/llm/usage.rb
145
+ - lib/yuno/proofreader/log.rb
146
+ - lib/yuno/proofreader/pages/fetcher.rb
147
+ - lib/yuno/proofreader/pages/report.rb
148
+ - lib/yuno/proofreader/pages/snapshot.rb
149
+ - lib/yuno/proofreader/pages/trimmer.rb
150
+ - lib/yuno/proofreader/settings_file.rb
151
+ - lib/yuno/proofreader/site.rb
152
+ - lib/yuno/proofreader/site_reader.rb
153
+ - lib/yuno/proofreader/sitemap/aligner.rb
154
+ - lib/yuno/proofreader/sitemap/importer.rb
155
+ - lib/yuno/proofreader/sitemap/loader.rb
156
+ - lib/yuno/proofreader/sitemap/mismatch.rb
157
+ - lib/yuno/proofreader/sitemap/pairer.rb
158
+ - lib/yuno/proofreader/sitemap/parser.rb
159
+ - lib/yuno/proofreader/sitemap/report.rb
160
+ - lib/yuno/proofreader/store/cells.rb
161
+ - lib/yuno/proofreader/store/google_gateway.rb
162
+ - lib/yuno/proofreader/store/memory.rb
163
+ - lib/yuno/proofreader/store/records.rb
164
+ - lib/yuno/proofreader/store/schema.rb
165
+ - lib/yuno/proofreader/store/sheets.rb
166
+ - lib/yuno/proofreader/store/tab_setup.rb
167
+ - lib/yuno/proofreader/version.rb
168
+ - proofreader.example.yml
169
+ homepage: https://gitlab.com/alsen-ca/yuno-proofreader
170
+ licenses:
171
+ - MIT
172
+ metadata:
173
+ source_code_uri: https://gitlab.com/alsen-ca/yuno-proofreader
174
+ bug_tracker_uri: https://gitlab.com/alsen-ca/yuno-proofreader/-/issues
175
+ changelog_uri: https://gitlab.com/alsen-ca/yuno-proofreader/-/blob/main/CHANGELOG.md
176
+ rubygems_mfa_required: 'true'
177
+ rdoc_options: []
178
+ require_paths:
179
+ - lib
180
+ required_ruby_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '4.0'
185
+ required_rubygems_version: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ requirements: []
191
+ rubygems_version: 4.0.20
192
+ specification_version: 4
193
+ summary: AI-powered website proofreader that collects its suggestions in Google Sheets.
194
+ test_files: []