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,26 @@
1
+ {
2
+ "_comment": [
3
+ "Curated orthographic-convention register consumed by scripts/derive-orthographies.mjs.",
4
+ "One entry per language code, keyed by ISO 15924 script code. Each script entry may set",
5
+ "scheme / longVowelMarking / canonicalForMt and MUST set a source string that cites a",
6
+ "verifiable basis (on-card prose, a tool the card already lists, or a published convention).",
7
+ "Only add entries whose convention is actually documented — absence means unknown, and the",
8
+ "deriver writes nothing it cannot cite (index, not arbiter). Do NOT record measured scores here.",
9
+ "Data-over-code (docs/AGENTS.md §1): language-specific conventions live in this file,",
10
+ "never hardcoded in the deriver."
11
+ ],
12
+ "conventions": {
13
+ "crk": {
14
+ "Latn": {
15
+ "scheme": "SRO",
16
+ "longVowelMarking": "circumflex",
17
+ "canonicalForMt": true,
18
+ "source": "manual-curation (SRO = Standard Roman Orthography; long vowels marked with circumflexes as used by itwêwina/ALTLab and the GiellaLT lang-crk FST the card lists in resources.fsts; reference lexicon: Wolvengrey 2001, nēhiýawēwin: itwēwina / Cree: Words; the card's own formality prose names SRO as the working script)"
19
+ },
20
+ "Cans": {
21
+ "canonicalForMt": false,
22
+ "source": "manual-curation (Syllabics is the display script, SRO the working script — per the card's own formality prose and the crk scriptConverter)"
23
+ }
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,374 @@
1
+ {
2
+ "_comment": [
3
+ "Curated SIL / OLAC / eBible resource register for the Sambalic cluster (Aeta pilot),",
4
+ "consumed by scripts/derive-sil-resources.mjs. Keyed by language code, then by",
5
+ "resources bucket (corpora / dictionaries / grammars / tools / lexical). Every entry",
6
+ "MUST cite its basis in a source string or notes field naming the SIL REAP archive",
7
+ "item id, OLAC index, or eBible.org page it was verified from (enumerated 2026-07-19",
8
+ "from the OLAC per-code indexes; local working copies + full inventory:",
9
+ "local-assets/MANIFEST.md, gitignored). This is resource EXISTENCE only (language-card",
10
+ "boundary invariant kind 2): names, URLs, types. No content is copied, no measured",
11
+ "scores may appear here (lint R3/R4), licenses are recorded only where documented —",
12
+ "index, not arbiter. Scripture entries point at eBible.org (content © Wycliffe Inc.,",
13
+ "not openly licensed — pointer-only). Data-over-code (docs/AGENTS.md §1):",
14
+ "language-specific facts live in this file, never hardcoded in the deriver."
15
+ ],
16
+ "resources": {
17
+ "abc": {
18
+ "tools": [
19
+ {
20
+ "name": "Manyulat kitamu: Ha' kaparaanan manyulat ya Ayta Ambala (spelling guide)",
21
+ "type": "orthography-guide",
22
+ "url": "https://www.sil.org/resources/archives/74615",
23
+ "source": "sil-reap (DepEd Philippines + SIL Philippines 2017 Ayta Ambala spelling guide; SIL archive item 74615)"
24
+ }
25
+ ],
26
+ "lexical": [
27
+ {
28
+ "type": "wordlist-collection",
29
+ "name": "SIL Sambalic survey wordlists (Ayta Ambala)",
30
+ "description": "6 archived survey wordlists — Cabalan (Olongapo), Alibang, Pili, Dinalupihan (Batsawan), Payangan/Camastilis, and an Ambala–Mag-indi comparative list",
31
+ "url": "http://www.language-archives.org/language/abc",
32
+ "source": "olac-sil-reap (SIL archive items 79917, 79918, 80062, 80285, 80287, 81024 via the OLAC abc index)"
33
+ }
34
+ ]
35
+ },
36
+ "abp": {
37
+ "corpora": [
38
+ {
39
+ "name": "Ayta Abellen Scripture — New Testament+ (eBible.org)",
40
+ "type": "parallel",
41
+ "url": "https://ebible.org/find/details.php?id=abp",
42
+ "size": "New Testament+",
43
+ "domain": "bible",
44
+ "exposure": "open-web",
45
+ "notes": "Verse-aligned scripture translation (mother-tongue committee with SIL/Wycliffe); HTML/readaloud/ePub packages on eBible.org. Content © Wycliffe Inc., not openly licensed — pointer-only (per-package terms at eBible.org)."
46
+ },
47
+ {
48
+ "name": "Pangihabet ha apat a habi (Speaking in Four Languages, 2004)",
49
+ "type": "parallel",
50
+ "url": "https://www.sil.org/resources/archives/24167",
51
+ "size": "booklet",
52
+ "domain": "edu",
53
+ "exposure": "open-web",
54
+ "notes": "Four-way parallel booklet: Ayta Abellen / Ilokano / Filipino / English (SIL archive item 24167)."
55
+ }
56
+ ],
57
+ "dictionaries": [
58
+ {
59
+ "name": "Ayta Abellen Dictionary (Webonary)",
60
+ "url": "https://www.webonary.org/aytaabellen/",
61
+ "machineReadable": false,
62
+ "source": "sil-webonary (Stone, SIL Philippines 2019; online-browse only — no public export; a FLEx backup exists as SIL archive item 94800, access-restricted)"
63
+ }
64
+ ],
65
+ "grammars": [
66
+ {
67
+ "author": "Nitsch, Wilhelm",
68
+ "year": 2009,
69
+ "title": "Some Ayta Abenlen grammar",
70
+ "url": "https://www.sil.org/resources/archives/9289",
71
+ "type": "grammar_sketch"
72
+ },
73
+ {
74
+ "author": "Stone, Roger; Nitsch, Wilhelm",
75
+ "year": null,
76
+ "title": "An introduction to Ayta Abellen morphology and syntax",
77
+ "url": "https://www.sil.org/resources/archives/52044",
78
+ "type": "grammar_sketch"
79
+ },
80
+ {
81
+ "author": "Stone, Roger",
82
+ "year": null,
83
+ "title": "An Automated Template Approach to Morphology and Syntax Description for Ayta Abellen",
84
+ "url": "https://www.sil.org/resources/archives/51902",
85
+ "type": "grammar_sketch"
86
+ }
87
+ ],
88
+ "tools": [
89
+ {
90
+ "name": "Introduction to writing the Ayta Abellen Language",
91
+ "type": "orthography-guide",
92
+ "url": "https://www.sil.org/resources/archives/70736",
93
+ "source": "sil-reap (2017 spelling-guide extract, item 70736; see also Orthography Fact Sheet item 51911 and primer Manolat Kitawoyna item 72416)"
94
+ }
95
+ ],
96
+ "lexical": [
97
+ {
98
+ "type": "wordlist-collection",
99
+ "name": "SIL Sambalic survey wordlists (Ayta Abellen)",
100
+ "description": "5 archived survey wordlists — Pilien, Tala/Talan (Tarlac), Dalayap (Mayantoc), San Pedro (Tarlac), and the Abenlen comparative list",
101
+ "url": "http://www.language-archives.org/language/abp",
102
+ "source": "olac-sil-reap (SIL archive items 77394, 79949, 80302, 80303, 80314 via the OLAC abp index)"
103
+ }
104
+ ]
105
+ },
106
+ "ayt": {
107
+ "tools": [
108
+ {
109
+ "name": "Mamaha kita muy na (Ayta Magbukun spelling guide)",
110
+ "type": "orthography-guide",
111
+ "url": "https://www.sil.org/resources/archives/74573",
112
+ "source": "sil-reap (DepEd Philippines + SIL Philippines Ayta Magbukun spelling guide; SIL archive item 74573)"
113
+ }
114
+ ],
115
+ "lexical": [
116
+ {
117
+ "type": "wordlist-collection",
118
+ "name": "SIL Sambalic survey wordlists (Ayta Magbukun)",
119
+ "description": "Archived survey wordlists — Morong (Bataan), Bayan-Bayanan/Mariveles, and the Magbukun set",
120
+ "url": "http://www.language-archives.org/language/ayt",
121
+ "source": "olac-sil-reap (SIL archive items 79913, 80290, 80291 via the OLAC ayt index)"
122
+ }
123
+ ]
124
+ },
125
+ "blx": {
126
+ "corpora": [
127
+ {
128
+ "name": "Ayta Mag-Indi New Testament (2020, eBible.org)",
129
+ "type": "parallel",
130
+ "url": "https://ebible.org/find/details.php?id=blx",
131
+ "size": "New Testament",
132
+ "domain": "bible",
133
+ "exposure": "open-web",
134
+ "notes": "Verse-aligned scripture translation (mother-tongue committee with SIL/Wycliffe, published 2020); HTML/ePub/SWORD packages on eBible.org. Content © Wycliffe Inc., not openly licensed — pointer-only."
135
+ },
136
+ {
137
+ "name": "Paggamit sa Apat a Pagsabi (The Use of Four Languages)",
138
+ "type": "parallel",
139
+ "url": "https://www.sil.org/resources/archives/24233",
140
+ "size": "booklet",
141
+ "domain": "edu",
142
+ "exposure": "open-web",
143
+ "notes": "Four-way parallel booklet: Ayta Mag-indi / Kapampangan / Filipino / English; multiple editions (SIL archive items 24233, 24733)."
144
+ }
145
+ ],
146
+ "grammars": [
147
+ {
148
+ "author": null,
149
+ "year": null,
150
+ "title": "Phonological considerations in Ayta Mag-Indi",
151
+ "url": "https://www.sil.org/resources/archives/43451",
152
+ "type": "phonology"
153
+ }
154
+ ],
155
+ "tools": [
156
+ {
157
+ "name": "Introduction to Ayta Mag-Indi Orthography",
158
+ "type": "orthography-guide",
159
+ "url": "https://www.sil.org/resources/archives/70737",
160
+ "source": "sil-reap (spelling-guide extract, item 70737; see also Orthography Factsheet item 52302)"
161
+ }
162
+ ],
163
+ "lexical": [
164
+ {
165
+ "type": "wordlist-collection",
166
+ "name": "SIL Sambalic survey wordlists (Ayta Mag-indi)",
167
+ "description": "10 archived survey wordlists — Liplip, Lumibao, Ma-age-age, Baloga, Naboklot, Camatsili, Malan-ak/Patalapalit, Florida Blanca, and comparative lists",
168
+ "url": "http://www.language-archives.org/language/blx",
169
+ "source": "olac-sil-reap (SIL archive items 79915, 79920, 79924, 79933, 80292, 80294, 80299, 80304, 80305, 80317, 80318 via the OLAC blx index)"
170
+ }
171
+ ]
172
+ },
173
+ "sgb": {
174
+ "corpora": [
175
+ {
176
+ "name": "Ayta Mag-antsi New Testament — Ya Habi ni Apo Namalyari: Bayon Tsipan (2006, eBible.org)",
177
+ "type": "parallel",
178
+ "url": "https://ebible.org/find/details.php?id=sgb",
179
+ "size": "New Testament",
180
+ "domain": "bible",
181
+ "exposure": "open-web",
182
+ "notes": "Verse-aligned scripture translation (Wycliffe 2006); machine-readable USFM plus HTML/readaloud/ePub packages on eBible.org; also Bible.com version 1282. Content © Wycliffe Inc., not openly licensed — pointer-only."
183
+ },
184
+ {
185
+ "name": "Back translation of the Mag-anchi primer",
186
+ "type": "parallel",
187
+ "url": "https://www.sil.org/resources/archives/69925",
188
+ "size": "booklet",
189
+ "domain": "edu",
190
+ "exposure": "open-web",
191
+ "notes": "English back-translation of the Ayta Mag-antsi literacy primer (SIL archive item 69925) — parallel by construction."
192
+ },
193
+ {
194
+ "name": "Panhabiɨn kanan kapagkatupa mo (phrase book, 1988)",
195
+ "type": "monolingual",
196
+ "url": "https://www.sil.org/resources/archives/24547",
197
+ "size": "booklet",
198
+ "domain": "conversation",
199
+ "exposure": "open-web",
200
+ "notes": "Phrase book for Ayta Mag-antsi (SIL archive item 24547); pairing/glossing not verified from archive metadata, so typed monolingual."
201
+ },
202
+ {
203
+ "name": "SIL Mag-antsi literacy booklets (OLAC index)",
204
+ "type": "monolingual",
205
+ "url": "http://www.language-archives.org/language/sgb",
206
+ "size": "12+ booklets",
207
+ "domain": "edu",
208
+ "exposure": "open-web",
209
+ "notes": "Archived readers/primers/stories incl. Pinatubo Ayta stories (item 24020), Ya luta tamo (24798), Mamaha kitamina (24151), Mag-umpisa series (24113, 63855, 63859)."
210
+ }
211
+ ],
212
+ "dictionaries": [
213
+ {
214
+ "name": "Ayta Mag-antsi—English Dictionary (Storck & Storck 2005)",
215
+ "url": "https://www.sil.org/resources/archives/25858",
216
+ "machineReadable": false,
217
+ "source": "sil-reap (print dictionary, SIL Philippines 2005; archive metadata item 25858 — no digital file)"
218
+ }
219
+ ],
220
+ "grammars": [
221
+ {
222
+ "author": null,
223
+ "year": null,
224
+ "title": "Ayta Mag-anchi reduplication",
225
+ "url": "https://www.sil.org/resources/archives/25904",
226
+ "type": null
227
+ },
228
+ {
229
+ "author": null,
230
+ "year": null,
231
+ "title": "Morphophonemics of Ayta Mag-anchi",
232
+ "url": "https://www.sil.org/resources/archives/83913",
233
+ "type": "phonology"
234
+ }
235
+ ],
236
+ "tools": [
237
+ {
238
+ "name": "Manulat Kitamina (Ayta Mag-antsi spelling guide)",
239
+ "type": "orthography-guide",
240
+ "url": "https://www.sil.org/resources/archives/72426",
241
+ "source": "sil-reap (DepEd Philippines + SIL Philippines 2017 spelling guide, item 72426)"
242
+ }
243
+ ],
244
+ "lexical": [
245
+ {
246
+ "type": "wordlist-collection",
247
+ "name": "SIL Sambalic survey wordlists (Ayta Mag-antsi)",
248
+ "description": "15+ archived survey wordlists — Flora, Duwan, Doray, Yamot, Patal Anaw/Kato, Burog/Bamban, Inararo, Kakilingan, Nakulkul Maguisguis, San Martin, San Isidro, Marcohangko",
249
+ "url": "http://www.language-archives.org/language/sgb",
250
+ "source": "olac-sil-reap (SIL archive items 77395, 79914, 79915, 79921–79926, 80293–80299, 80319–80321 via the OLAC sgb index)"
251
+ }
252
+ ]
253
+ },
254
+ "sbl": {
255
+ "corpora": [
256
+ {
257
+ "name": "Panambal nin mawmasakit (health/treatment booklets, 1969 & 1973)",
258
+ "type": "monolingual",
259
+ "url": "https://www.sil.org/resources/archives/24364",
260
+ "size": "2 booklets",
261
+ "domain": "medical",
262
+ "exposure": "open-web",
263
+ "notes": "Community health booklets in Botolan Sambal (SIL archive items 24364, 24610) — a domain precedent for Sambalic-cluster health materials."
264
+ },
265
+ {
266
+ "name": "SIL Botolan Sambal literacy booklets (OLAC index)",
267
+ "type": "monolingual",
268
+ "url": "http://www.language-archives.org/language/sbl",
269
+ "size": "10+ booklets",
270
+ "domain": "edu",
271
+ "exposure": "open-web",
272
+ "notes": "Archived readers/primers/stories incl. ABKD (24160), Bahawen tamo 1–3 (24363, 24681), Kabayo (24118), Aw-istorya boy aw-oyap (24253), Mamaha tamo (24624)."
273
+ }
274
+ ],
275
+ "dictionaries": [
276
+ {
277
+ "name": "Dictionary of Botolan Sambal (1968)",
278
+ "url": "https://www.sil.org/resources/archives/66684",
279
+ "machineReadable": false,
280
+ "source": "sil-reap (scanned print dictionary, archive item 66684)"
281
+ }
282
+ ],
283
+ "grammars": [
284
+ {
285
+ "author": null,
286
+ "year": 1979,
287
+ "title": "A Grammatical Sketch of Botolan Sambal",
288
+ "url": "https://www.sil.org/resources/archives/26078",
289
+ "type": "grammar_sketch"
290
+ },
291
+ {
292
+ "author": "Minot, Harriet",
293
+ "year": null,
294
+ "title": "Phonemes of Aeta [Botolan Sambal]",
295
+ "url": "https://www.sil.org/resources/archives/80789",
296
+ "type": "phonology"
297
+ }
298
+ ],
299
+ "tools": [
300
+ {
301
+ "name": "Manulat Tamoy Na (Sambal Botolan spelling guide)",
302
+ "type": "orthography-guide",
303
+ "url": "https://www.sil.org/resources/archives/74532",
304
+ "source": "sil-reap (DepEd Philippines + SIL Philippines spelling guide, item 74532; see also Sambal Botolan Orthography Fact Sheet in item 70773)"
305
+ }
306
+ ],
307
+ "lexical": [
308
+ {
309
+ "type": "wordlist-collection",
310
+ "name": "SIL Sambalic survey wordlists (Botolan Sambal)",
311
+ "description": "8+ archived survey wordlists — Botolan (1966, 1982), Cabangan, Palis, plus a Sambal–Ilocano comparative list",
312
+ "url": "http://www.language-archives.org/language/sbl",
313
+ "source": "olac-sil-reap (SIL archive items 76972, 80789, 80792, 80795, 80796, 80813 via the OLAC sbl index)"
314
+ }
315
+ ]
316
+ },
317
+ "xsb": {
318
+ "corpora": [
319
+ {
320
+ "name": "Karamilan angkasalita (phrase book, 1977)",
321
+ "type": "monolingual",
322
+ "url": "https://www.sil.org/resources/archives/24291",
323
+ "size": "booklet",
324
+ "domain": "conversation",
325
+ "exposure": "open-web",
326
+ "notes": "\"The expressions that are often said\" — a phrase book for Tina Sambal (SIL archive item 24291); pairing/glossing not verified from archive metadata, so typed monolingual."
327
+ },
328
+ {
329
+ "name": "SIL Tina Sambal texts & literacy booklets (OLAC index)",
330
+ "type": "monolingual",
331
+ "url": "http://www.language-archives.org/language/xsb",
332
+ "size": "10+ items",
333
+ "domain": "mixed",
334
+ "exposure": "open-web",
335
+ "notes": "Archived texts, songs/poems, stories and primers incl. Tina Sambal texts (SIPL, item 25705), songs and poems (25834), Tawtola sin ona (24266), Mamasa tamo (24637)."
336
+ }
337
+ ],
338
+ "dictionaries": [
339
+ {
340
+ "name": "English–Tina Sambal–Pilipino Dictionary (1988)",
341
+ "url": "https://www.sil.org/resources/archives/25906",
342
+ "machineReadable": false,
343
+ "source": "sil-reap (scanned print dictionary, archive item 25906)"
344
+ }
345
+ ],
346
+ "grammars": [
347
+ {
348
+ "author": null,
349
+ "year": null,
350
+ "title": "Interclausal relationships in Tina Sambal",
351
+ "url": "https://www.sil.org/resources/archives/25991",
352
+ "type": null
353
+ }
354
+ ],
355
+ "tools": [
356
+ {
357
+ "name": "Tina Sambal Orthography Fact Sheet (2012)",
358
+ "type": "orthography-guide",
359
+ "url": "https://www.sil.org/resources/archives/70773",
360
+ "source": "sil-reap (Orthography Fact Sheets 2012 bundle, item 70773 — Tina Sambal sheet)"
361
+ }
362
+ ],
363
+ "lexical": [
364
+ {
365
+ "type": "wordlist-collection",
366
+ "name": "SIL Sambalic survey wordlists (Tina Sambal)",
367
+ "description": "Archived survey wordlists — Santa Cruz and Masinloc",
368
+ "url": "http://www.language-archives.org/language/xsb",
369
+ "source": "olac-sil-reap (SIL archive items 80790, 80793 via the OLAC xsb index)"
370
+ }
371
+ ]
372
+ }
373
+ }
374
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "_comment": [
3
+ "Curated per-language NLP tool registrations consumed by scripts/derive-tools.mjs",
4
+ "(populates resources.tools[] — resource EXISTENCE only, boundary invariant kind 2).",
5
+ "Two sections: perLanguage lists explicit entries; fromCaches derives per-language",
6
+ "entries from a downloaded upstream cache in cli/data/ (fetch-from-source; the cache",
7
+ "is rebuilt by the named download script and is the citable evidence). Every entry",
8
+ "MUST carry a source string citing its basis. No measured scores here ever (lint R3).",
9
+ "Data-over-code (docs/AGENTS.md §1): language-specific facts live in this file,",
10
+ "never hardcoded in the deriver."
11
+ ],
12
+ "perLanguage": {
13
+ "crk": [
14
+ {
15
+ "name": "morphodict — intelligent dictionary platform (powers itwêwina)",
16
+ "url": "https://github.com/UAlbertaALTLab/morphodict",
17
+ "type": "dictionary-platform",
18
+ "source": "github.com/UAlbertaALTLab/morphodict (Apache-2.0; \"The Language Independent Intelligent Dictionary\"; production deployment itwewina.altlab.app) — verified 2026-07-19"
19
+ },
20
+ {
21
+ "name": "crk-db — Plains Cree lexical database aggregation tooling",
22
+ "url": "https://github.com/UAlbertaALTLab/crk-db",
23
+ "type": "lexical-database-tooling",
24
+ "source": "github.com/UAlbertaALTLab/crk-db (GPL-3.0; aggregates CW/MD/AECD sources for ALTLab's dictionary — the repo deliberately excludes the dictionary data, which lives in a private ALTLab repository) — verified 2026-07-19"
25
+ }
26
+ ]
27
+ },
28
+ "fromCaches": [
29
+ {
30
+ "cache": "data/nrc-g2p-langs.json",
31
+ "downloadScript": "scripts/download-nrc-g2p.mjs",
32
+ "codesField": "iso639_3",
33
+ "entry": {
34
+ "name": "NRC g2p — grapheme-to-phoneme mapping",
35
+ "urlTemplate": "https://github.com/roedoejet/g2p/tree/main/g2p/mappings/langs/{code}",
36
+ "type": "g2p",
37
+ "source": "NRC Canada Indigenous Languages Technology — per-language mapping directory in the g2p library (MIT; the language-support basis for NRC tools such as ReadAlong Studio); cache data/nrc-g2p-langs.json"
38
+ }
39
+ }
40
+ ]
41
+ }