champollion 0.3.3

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 (170) hide show
  1. package/LICENSE +133 -0
  2. package/README.md +387 -0
  3. package/bin/cli.js +278 -0
  4. package/index.js +135 -0
  5. package/lib/api-key.js +127 -0
  6. package/lib/autofix.js +432 -0
  7. package/lib/bridge/method_bridge.py +430 -0
  8. package/lib/card-source-resolution.mjs +284 -0
  9. package/lib/cards/cache.js +169 -0
  10. package/lib/cards/env.js +82 -0
  11. package/lib/cards/fetch-card-child.js +38 -0
  12. package/lib/cards/reader.js +435 -0
  13. package/lib/cards/refresh.js +111 -0
  14. package/lib/cards/remote.js +387 -0
  15. package/lib/cldf-export.mjs +540 -0
  16. package/lib/cldf-terms.mjs +62 -0
  17. package/lib/command-help.js +790 -0
  18. package/lib/commands/audit.js +49 -0
  19. package/lib/commands/card.js +454 -0
  20. package/lib/commands/doctor.js +559 -0
  21. package/lib/commands/fonts.js +489 -0
  22. package/lib/commands/help.js +91 -0
  23. package/lib/commands/init.js +1259 -0
  24. package/lib/commands/integrity.js +148 -0
  25. package/lib/commands/leaderboard.js +478 -0
  26. package/lib/commands/lint.js +30 -0
  27. package/lib/commands/models.js +177 -0
  28. package/lib/commands/plugin.js +103 -0
  29. package/lib/commands/provenance.js +45 -0
  30. package/lib/commands/recommend.js +75 -0
  31. package/lib/commands/register-corpus.js +678 -0
  32. package/lib/commands/repair-script.js +42 -0
  33. package/lib/commands/seal-corpus.js +355 -0
  34. package/lib/commands/seo.js +72 -0
  35. package/lib/commands/serve.js +147 -0
  36. package/lib/commands/status.js +265 -0
  37. package/lib/commands/submit.js +332 -0
  38. package/lib/commands/sync.js +89 -0
  39. package/lib/commands/tm.js +573 -0
  40. package/lib/commands/verify.js +39 -0
  41. package/lib/commands/watch.js +20 -0
  42. package/lib/commands/wrap.js +138 -0
  43. package/lib/commands/xliff.js +327 -0
  44. package/lib/commercial-eligibility.js +235 -0
  45. package/lib/concurrent.js +87 -0
  46. package/lib/config.js +523 -0
  47. package/lib/contamination-lane.js +76 -0
  48. package/lib/content-sync.js +731 -0
  49. package/lib/content.js +733 -0
  50. package/lib/corpus-registration.mjs +608 -0
  51. package/lib/cost-report.js +346 -0
  52. package/lib/diff.js +155 -0
  53. package/lib/docusaurus-sync.js +1256 -0
  54. package/lib/flatten.js +55 -0
  55. package/lib/format.js +954 -0
  56. package/lib/hash.js +159 -0
  57. package/lib/icu.js +473 -0
  58. package/lib/integrity.js +689 -0
  59. package/lib/license-gate.mjs +478 -0
  60. package/lib/license-identify.mjs +229 -0
  61. package/lib/lint.js +629 -0
  62. package/lib/method-manifest.js +60 -0
  63. package/lib/methods/anthropic.js +140 -0
  64. package/lib/methods/apertium.js +163 -0
  65. package/lib/methods/api.js +316 -0
  66. package/lib/methods/base.js +184 -0
  67. package/lib/methods/content-separator.js +45 -0
  68. package/lib/methods/deepl.js +426 -0
  69. package/lib/methods/direct-llm.js +586 -0
  70. package/lib/methods/external.js +332 -0
  71. package/lib/methods/fetch-with-retry.js +124 -0
  72. package/lib/methods/gemini.js +147 -0
  73. package/lib/methods/google-translate.js +402 -0
  74. package/lib/methods/http-utils.js +122 -0
  75. package/lib/methods/libretranslate.js +314 -0
  76. package/lib/methods/llm-coached.js +670 -0
  77. package/lib/methods/llm.js +592 -0
  78. package/lib/methods/local.js +76 -0
  79. package/lib/methods/microsoft-translator.js +331 -0
  80. package/lib/methods/openai.js +131 -0
  81. package/lib/methods/openrouter-client.js +327 -0
  82. package/lib/methods/openrouter-pricing.js +156 -0
  83. package/lib/methods/provider-env.js +115 -0
  84. package/lib/methods/provider-pricing.js +310 -0
  85. package/lib/methods/tilde.js +150 -0
  86. package/lib/methods/translated.js +229 -0
  87. package/lib/methods/translation-error.js +80 -0
  88. package/lib/models.js +258 -0
  89. package/lib/no-translate.js +233 -0
  90. package/lib/output.js +238 -0
  91. package/lib/pairs.js +547 -0
  92. package/lib/plugins.js +447 -0
  93. package/lib/provenance.js +323 -0
  94. package/lib/recommend.js +648 -0
  95. package/lib/registers.js +1185 -0
  96. package/lib/repair-script.js +266 -0
  97. package/lib/scripts.js +994 -0
  98. package/lib/seal.mjs +464 -0
  99. package/lib/sealed-qualifier.mjs +211 -0
  100. package/lib/security.js +59 -0
  101. package/lib/segment.js +369 -0
  102. package/lib/seo.js +275 -0
  103. package/lib/serve.js +854 -0
  104. package/lib/string-classify.js +85 -0
  105. package/lib/submit.mjs +344 -0
  106. package/lib/sync.js +969 -0
  107. package/lib/tags/bcp47.js +202 -0
  108. package/lib/tags/resolve.js +314 -0
  109. package/lib/terminology.js +111 -0
  110. package/lib/tm-seed.js +294 -0
  111. package/lib/tm.js +515 -0
  112. package/lib/translate-pair.js +197 -0
  113. package/lib/translate.js +203 -0
  114. package/lib/types.js +230 -0
  115. package/lib/validate.js +510 -0
  116. package/lib/verify.js +451 -0
  117. package/lib/watch.js +145 -0
  118. package/lib/xliff.js +184 -0
  119. package/package.json +93 -0
  120. package/shared/ATTRIBUTION.md +145 -0
  121. package/shared/CORPORA-CARDS.md +288 -0
  122. package/shared/DATA-SOVEREIGNTY.md +500 -0
  123. package/shared/LANGUAGE-CARD-FIELDS.md +532 -0
  124. package/shared/card-lint-baseline.json +3189 -0
  125. package/shared/cards-fallback.json +1 -0
  126. package/shared/catalogue/card-config.json +6091 -0
  127. package/shared/catalogue/external-results.json +3888 -0
  128. package/shared/catalogue/gender-guidance.json +1038 -0
  129. package/shared/catalogue/method-coverage.json +1751 -0
  130. package/shared/catalogue/metric-coverage.json +170 -0
  131. package/shared/catalogue/metric-reliability.json +1 -0
  132. package/shared/catalogue/register-presets.json +3180 -0
  133. package/shared/catalogue/vitality-scales.json +55 -0
  134. package/shared/cldr-index.json +1115 -0
  135. package/shared/code-bridge.json +253 -0
  136. package/shared/corpora-cards-v1-reference.md +281 -0
  137. package/shared/curated-dictionary-flags.json +35 -0
  138. package/shared/curated-endonyms.json +35 -0
  139. package/shared/curated-fsts.json +51 -0
  140. package/shared/curated-orthography-conventions.json +26 -0
  141. package/shared/curated-sil-resources.json +374 -0
  142. package/shared/curated-tools.json +41 -0
  143. package/shared/docent/corpus.json +11333 -0
  144. package/shared/docent/faq.en.json +564 -0
  145. package/shared/docent/register-blocks.json +60 -0
  146. package/shared/docent/system-prompt.md +144 -0
  147. package/shared/domain-taxonomy.json +35 -0
  148. package/shared/explainers/glossary.json +2975 -0
  149. package/shared/explainers/tc-features.json +20112 -0
  150. package/shared/explainers/term-watchlist.json +147 -0
  151. package/shared/human-services.json +59 -0
  152. package/shared/license-corrections.json +261 -0
  153. package/shared/license-evidence.json +13452 -0
  154. package/shared/licenses.json +6781 -0
  155. package/shared/method-registry.json +236 -0
  156. package/shared/metric-registry.json +620 -0
  157. package/shared/model-aliases.json +7 -0
  158. package/shared/schemas/champollion-plugin.schema.json +206 -0
  159. package/shared/schemas/corpora-card.schema.json +957 -0
  160. package/shared/schemas/domain-taxonomy.schema.json +64 -0
  161. package/shared/schemas/external-results.schema.json +314 -0
  162. package/shared/schemas/human-services.schema.json +90 -0
  163. package/shared/schemas/language-card.schema.json +1308 -0
  164. package/shared/schemas/licenses.schema.json +155 -0
  165. package/shared/schemas/method-card.schema.json +412 -0
  166. package/shared/schemas/method-registry.schema.json +85 -0
  167. package/shared/schemas/metric-registry.schema.json +96 -0
  168. package/shared/schemas/metric-reliability.schema.json +178 -0
  169. package/shared/schemas/model-aliases.schema.json +27 -0
  170. package/shared/schemas/source-snapshot.schema.json +96 -0
@@ -0,0 +1,236 @@
1
+ {
2
+ "_comment": "SSOT for translation METHODS (MT engines) and LLM PROVIDERS, consumed by BOTH the Python arena harness (arena/mt_eval_harness) and the JS CLI (cli/lib/translate.js). Adding an entry here + the matching thin adapter in each runtime keeps the two tools interchangeable. Parity tests in each suite (arena/tests/test_method_registry_ssot.py + the CLI suite) FAIL if a runtime's registry drifts from this file. The imperative request/response code stays per-runtime; this file is the declarative contract. method_class must be in config.VALID_METHOD_CLASSES; paradigm in config.VALID_PARADIGMS. Availability/readiness surfaces judge credential_env only (see schemas/method-registry.schema.json): non-credential config vars like AWS_REGION stay in env for the adapter but never make a method read READY, and credential_env_all marks key-pair auth where every var is required.",
3
+ "version": 1,
4
+ "entries": {
5
+ "openrouter": {
6
+ "kind": "llm-provider",
7
+ "cli_name": "llm",
8
+ "method_class": "raw-llm",
9
+ "paradigm": "llm",
10
+ "env": [
11
+ "OPENROUTER_API_KEY"
12
+ ],
13
+ "default_base_url": "https://openrouter.ai/api/v1",
14
+ "homepage": "https://openrouter.ai",
15
+ "license": "Proprietary (per-model)",
16
+ "commercialReady": true,
17
+ "cost_note": "Per-model token pricing (fetched at runtime)"
18
+ },
19
+ "openai": {
20
+ "kind": "llm-provider",
21
+ "method_class": "raw-llm",
22
+ "paradigm": "llm",
23
+ "env": [
24
+ "OPENAI_API_KEY"
25
+ ],
26
+ "default_base_url": "https://api.openai.com/v1",
27
+ "homepage": "https://platform.openai.com",
28
+ "license": "Proprietary (OpenAI ToS)",
29
+ "commercialReady": true,
30
+ "cost_note": "Per-model token pricing"
31
+ },
32
+ "anthropic": {
33
+ "kind": "llm-provider",
34
+ "method_class": "raw-llm",
35
+ "paradigm": "llm",
36
+ "env": [
37
+ "ANTHROPIC_API_KEY"
38
+ ],
39
+ "default_base_url": "https://api.anthropic.com/v1",
40
+ "homepage": "https://docs.anthropic.com",
41
+ "license": "Proprietary (Anthropic ToS)",
42
+ "commercialReady": true,
43
+ "cost_note": "Per-model token pricing"
44
+ },
45
+ "gemini": {
46
+ "kind": "llm-provider",
47
+ "method_class": "raw-llm",
48
+ "paradigm": "llm",
49
+ "env": [
50
+ "GEMINI_API_KEY"
51
+ ],
52
+ "default_base_url": "https://generativelanguage.googleapis.com/v1beta",
53
+ "homepage": "https://ai.google.dev",
54
+ "license": "Proprietary (Google ToS)",
55
+ "commercialReady": true,
56
+ "cost_note": "Per-model token pricing"
57
+ },
58
+ "local": {
59
+ "kind": "llm-provider",
60
+ "method_class": "raw-llm",
61
+ "paradigm": "llm",
62
+ "env": [
63
+ "LOCAL_API_BASE",
64
+ "OPENAI_API_BASE",
65
+ "OPENAI_API_KEY"
66
+ ],
67
+ "default_base_url": "http://localhost:11434/v1",
68
+ "homepage": "https://github.com/ollama/ollama",
69
+ "license": "Varies (self-hosted / OpenAI-compatible gateway)",
70
+ "commercialReady": false,
71
+ "cost_note": "Unknown to the harness — never priced (UNKNOWN, not $0)"
72
+ },
73
+ "google-translate": {
74
+ "kind": "mt-api",
75
+ "method_class": "api",
76
+ "paradigm": "neural-nmt",
77
+ "env": [
78
+ "GOOGLE_TRANSLATE_API_KEY",
79
+ "GOOGLE_API_KEY"
80
+ ],
81
+ "homepage": "https://cloud.google.com/translate",
82
+ "license": "Proprietary (Google ToS)",
83
+ "commercialReady": true,
84
+ "cost_note": "~$20 / 1M characters",
85
+ "max_batch": 128,
86
+ "locale_map": {
87
+ "he": "iw",
88
+ "jv": "jw"
89
+ }
90
+ },
91
+ "deepl": {
92
+ "kind": "mt-api",
93
+ "method_class": "api",
94
+ "paradigm": "neural-nmt",
95
+ "env": [
96
+ "DEEPL_API_KEY"
97
+ ],
98
+ "homepage": "https://www.deepl.com/pro-api",
99
+ "license": "Proprietary (DeepL ToS)",
100
+ "commercialReady": true,
101
+ "cost_note": "Proprietary; free tier 500K chars/month (':fx' keys)",
102
+ "max_batch": 128,
103
+ "locale_map": {}
104
+ },
105
+ "microsoft-translator": {
106
+ "kind": "mt-api",
107
+ "method_class": "api",
108
+ "paradigm": "neural-nmt",
109
+ "env": [
110
+ "MICROSOFT_TRANSLATOR_API_KEY",
111
+ "AZURE_TRANSLATOR_KEY",
112
+ "MICROSOFT_TRANSLATOR_REGION",
113
+ "MICROSOFT_TRANSLATOR_ENDPOINT"
114
+ ],
115
+ "credential_env": [
116
+ "MICROSOFT_TRANSLATOR_API_KEY",
117
+ "AZURE_TRANSLATOR_KEY"
118
+ ],
119
+ "homepage": "https://learn.microsoft.com/azure/ai-services/translator/",
120
+ "license": "Proprietary (Microsoft ToS)",
121
+ "commercialReady": true,
122
+ "cost_note": "Proprietary; free tier 2M chars/month",
123
+ "max_batch": 100,
124
+ "locale_map": {}
125
+ },
126
+ "libretranslate": {
127
+ "kind": "mt-api",
128
+ "method_class": "api",
129
+ "paradigm": "neural-nmt",
130
+ "env": [
131
+ "LIBRETRANSLATE_API_URL",
132
+ "LIBRETRANSLATE_API_KEY"
133
+ ],
134
+ "homepage": "https://libretranslate.com",
135
+ "license": "AGPL-3.0",
136
+ "commercialReady": false,
137
+ "cost_note": "Free / self-hosted (AGPL-3.0 obligations apply)",
138
+ "max_batch": 64,
139
+ "locale_map": {}
140
+ },
141
+ "apertium": {
142
+ "kind": "mt-api",
143
+ "method_class": "api",
144
+ "paradigm": "rule-based",
145
+ "env": [
146
+ "APERTIUM_API_URL",
147
+ "APERTIUM_API_KEY"
148
+ ],
149
+ "default_base_url": "https://apertium.org/apy",
150
+ "homepage": "https://www.apertium.org",
151
+ "license": "GPL-3.0+ (Apertium)",
152
+ "commercialReady": false,
153
+ "cost_note": "Free public API (rate-limited; self-host for volume)",
154
+ "max_batch": 1,
155
+ "locale_map": {}
156
+ },
157
+ "amazon-translate": {
158
+ "kind": "mt-api",
159
+ "method_class": "api",
160
+ "paradigm": "neural-nmt",
161
+ "env": [
162
+ "AWS_ACCESS_KEY_ID",
163
+ "AWS_SECRET_ACCESS_KEY",
164
+ "AWS_REGION"
165
+ ],
166
+ "credential_env": [
167
+ "AWS_ACCESS_KEY_ID",
168
+ "AWS_SECRET_ACCESS_KEY"
169
+ ],
170
+ "credential_env_all": true,
171
+ "homepage": "https://aws.amazon.com/translate/",
172
+ "license": "Proprietary (AWS Service Terms)",
173
+ "commercialReady": true,
174
+ "cost_note": "~$15 / 1M characters (free tier 2M chars/month for 12 months)",
175
+ "max_batch": 1,
176
+ "locale_map": {},
177
+ "optional_extra": "aws",
178
+ "runtimes": [
179
+ "harness"
180
+ ]
181
+ },
182
+ "tilde": {
183
+ "kind": "mt-api",
184
+ "method_class": "api",
185
+ "paradigm": "neural-nmt",
186
+ "env": [
187
+ "TILDE_API_KEY"
188
+ ],
189
+ "default_base_url": "https://translate.tilde.ai/api/translate/text",
190
+ "homepage": "https://tilde.ai/machine-translation/",
191
+ "license": "Proprietary (Tilde ToS)",
192
+ "commercialReady": true,
193
+ "cost_note": "Proprietary; free trial 250K chars (no card)",
194
+ "max_batch": 25,
195
+ "locale_map": {}
196
+ },
197
+ "translated": {
198
+ "kind": "mt-api",
199
+ "method_class": "api",
200
+ "paradigm": "neural-nmt",
201
+ "env": [
202
+ "LARA_ACCESS_KEY_ID",
203
+ "LARA_ACCESS_KEY_SECRET"
204
+ ],
205
+ "credential_env": [
206
+ "LARA_ACCESS_KEY_ID",
207
+ "LARA_ACCESS_KEY_SECRET"
208
+ ],
209
+ "credential_env_all": true,
210
+ "default_base_url": "https://laratranslate.com",
211
+ "homepage": "https://laratranslate.com",
212
+ "license": "Proprietary (Translated ToS)",
213
+ "commercialReady": true,
214
+ "cost_note": "Proprietary; plan-based pricing (per-character cost not published)",
215
+ "max_batch": 50,
216
+ "locale_map": {}
217
+ },
218
+ "local-model": {
219
+ "kind": "local-model",
220
+ "method_class": "pipeline",
221
+ "paradigm": "neural-nmt",
222
+ "env": [
223
+ "LOCAL_MODEL_ID"
224
+ ],
225
+ "homepage": "https://huggingface.co/models?pipeline_tag=translation",
226
+ "license": "Per-model (open weights; see the chosen model's card)",
227
+ "commercialReady": false,
228
+ "cost_note": "Free to run; local compute only (UNKNOWN to the harness, never $0)",
229
+ "max_batch": 8,
230
+ "optional_extra": "local-models",
231
+ "runtimes": [
232
+ "harness"
233
+ ]
234
+ }
235
+ }
236
+ }