@littlebearapps/australian-history-mcp 0.6.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 (467) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +502 -0
  3. package/dist/clients/datagovau_client.d.ts +61 -0
  4. package/dist/clients/datagovau_client.d.ts.map +1 -0
  5. package/dist/clients/datagovau_client.js +421 -0
  6. package/dist/clients/datagovau_client.js.map +1 -0
  7. package/dist/clients/prov_client.d.ts +64 -0
  8. package/dist/clients/prov_client.d.ts.map +1 -0
  9. package/dist/clients/prov_client.js +393 -0
  10. package/dist/clients/prov_client.js.map +1 -0
  11. package/dist/clients/trove_client.d.ts +77 -0
  12. package/dist/clients/trove_client.d.ts.map +1 -0
  13. package/dist/clients/trove_client.js +374 -0
  14. package/dist/clients/trove_client.js.map +1 -0
  15. package/dist/core/base-client.d.ts +49 -0
  16. package/dist/core/base-client.d.ts.map +1 -0
  17. package/dist/core/base-client.js +116 -0
  18. package/dist/core/base-client.js.map +1 -0
  19. package/dist/core/base-source.d.ts +45 -0
  20. package/dist/core/base-source.d.ts.map +1 -0
  21. package/dist/core/base-source.js +19 -0
  22. package/dist/core/base-source.js.map +1 -0
  23. package/dist/core/harvest-runner.d.ts +26 -0
  24. package/dist/core/harvest-runner.d.ts.map +1 -0
  25. package/dist/core/harvest-runner.js +82 -0
  26. package/dist/core/harvest-runner.js.map +1 -0
  27. package/dist/core/index.d.ts +10 -0
  28. package/dist/core/index.d.ts.map +1 -0
  29. package/dist/core/index.js +14 -0
  30. package/dist/core/index.js.map +1 -0
  31. package/dist/core/types.d.ts +80 -0
  32. package/dist/core/types.d.ts.map +1 -0
  33. package/dist/core/types.js +52 -0
  34. package/dist/core/types.js.map +1 -0
  35. package/dist/index.d.ts +21 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +103 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/registry.d.ts +65 -0
  40. package/dist/registry.d.ts.map +1 -0
  41. package/dist/registry.js +112 -0
  42. package/dist/registry.js.map +1 -0
  43. package/dist/sources/acmi/client.d.ts +47 -0
  44. package/dist/sources/acmi/client.d.ts.map +1 -0
  45. package/dist/sources/acmi/client.js +131 -0
  46. package/dist/sources/acmi/client.js.map +1 -0
  47. package/dist/sources/acmi/index.d.ts +12 -0
  48. package/dist/sources/acmi/index.d.ts.map +1 -0
  49. package/dist/sources/acmi/index.js +35 -0
  50. package/dist/sources/acmi/index.js.map +1 -0
  51. package/dist/sources/acmi/tools/get-constellation.d.ts +6 -0
  52. package/dist/sources/acmi/tools/get-constellation.d.ts.map +1 -0
  53. package/dist/sources/acmi/tools/get-constellation.js +53 -0
  54. package/dist/sources/acmi/tools/get-constellation.js.map +1 -0
  55. package/dist/sources/acmi/tools/get-creator.d.ts +6 -0
  56. package/dist/sources/acmi/tools/get-creator.d.ts.map +1 -0
  57. package/dist/sources/acmi/tools/get-creator.js +52 -0
  58. package/dist/sources/acmi/tools/get-creator.js.map +1 -0
  59. package/dist/sources/acmi/tools/get-work.d.ts +6 -0
  60. package/dist/sources/acmi/tools/get-work.d.ts.map +1 -0
  61. package/dist/sources/acmi/tools/get-work.js +103 -0
  62. package/dist/sources/acmi/tools/get-work.js.map +1 -0
  63. package/dist/sources/acmi/tools/harvest.d.ts +6 -0
  64. package/dist/sources/acmi/tools/harvest.d.ts.map +1 -0
  65. package/dist/sources/acmi/tools/harvest.js +95 -0
  66. package/dist/sources/acmi/tools/harvest.js.map +1 -0
  67. package/dist/sources/acmi/tools/list-constellations.d.ts +6 -0
  68. package/dist/sources/acmi/tools/list-constellations.d.ts.map +1 -0
  69. package/dist/sources/acmi/tools/list-constellations.js +44 -0
  70. package/dist/sources/acmi/tools/list-constellations.js.map +1 -0
  71. package/dist/sources/acmi/tools/list-creators.d.ts +6 -0
  72. package/dist/sources/acmi/tools/list-creators.d.ts.map +1 -0
  73. package/dist/sources/acmi/tools/list-creators.js +46 -0
  74. package/dist/sources/acmi/tools/list-creators.js.map +1 -0
  75. package/dist/sources/acmi/tools/search-works.d.ts +6 -0
  76. package/dist/sources/acmi/tools/search-works.d.ts.map +1 -0
  77. package/dist/sources/acmi/tools/search-works.js +73 -0
  78. package/dist/sources/acmi/tools/search-works.js.map +1 -0
  79. package/dist/sources/acmi/types.d.ts +135 -0
  80. package/dist/sources/acmi/types.d.ts.map +1 -0
  81. package/dist/sources/acmi/types.js +5 -0
  82. package/dist/sources/acmi/types.js.map +1 -0
  83. package/dist/sources/ala/client.d.ts +79 -0
  84. package/dist/sources/ala/client.d.ts.map +1 -0
  85. package/dist/sources/ala/client.js +556 -0
  86. package/dist/sources/ala/client.js.map +1 -0
  87. package/dist/sources/ala/index.d.ts +12 -0
  88. package/dist/sources/ala/index.d.ts.map +1 -0
  89. package/dist/sources/ala/index.js +37 -0
  90. package/dist/sources/ala/index.js.map +1 -0
  91. package/dist/sources/ala/tools/get-species-list.d.ts +6 -0
  92. package/dist/sources/ala/tools/get-species-list.d.ts.map +1 -0
  93. package/dist/sources/ala/tools/get-species-list.js +56 -0
  94. package/dist/sources/ala/tools/get-species-list.js.map +1 -0
  95. package/dist/sources/ala/tools/get-species.d.ts +6 -0
  96. package/dist/sources/ala/tools/get-species.d.ts.map +1 -0
  97. package/dist/sources/ala/tools/get-species.js +81 -0
  98. package/dist/sources/ala/tools/get-species.js.map +1 -0
  99. package/dist/sources/ala/tools/harvest.d.ts +6 -0
  100. package/dist/sources/ala/tools/harvest.d.ts.map +1 -0
  101. package/dist/sources/ala/tools/harvest.js +133 -0
  102. package/dist/sources/ala/tools/harvest.js.map +1 -0
  103. package/dist/sources/ala/tools/list-species-lists.d.ts +6 -0
  104. package/dist/sources/ala/tools/list-species-lists.d.ts.map +1 -0
  105. package/dist/sources/ala/tools/list-species-lists.js +60 -0
  106. package/dist/sources/ala/tools/list-species-lists.js.map +1 -0
  107. package/dist/sources/ala/tools/match-name.d.ts +6 -0
  108. package/dist/sources/ala/tools/match-name.d.ts.map +1 -0
  109. package/dist/sources/ala/tools/match-name.js +66 -0
  110. package/dist/sources/ala/tools/match-name.js.map +1 -0
  111. package/dist/sources/ala/tools/search-images.d.ts +6 -0
  112. package/dist/sources/ala/tools/search-images.d.ts.map +1 -0
  113. package/dist/sources/ala/tools/search-images.js +64 -0
  114. package/dist/sources/ala/tools/search-images.js.map +1 -0
  115. package/dist/sources/ala/tools/search-occurrences.d.ts +6 -0
  116. package/dist/sources/ala/tools/search-occurrences.d.ts.map +1 -0
  117. package/dist/sources/ala/tools/search-occurrences.js +134 -0
  118. package/dist/sources/ala/tools/search-occurrences.js.map +1 -0
  119. package/dist/sources/ala/tools/search-species.d.ts +6 -0
  120. package/dist/sources/ala/tools/search-species.d.ts.map +1 -0
  121. package/dist/sources/ala/tools/search-species.js +68 -0
  122. package/dist/sources/ala/tools/search-species.js.map +1 -0
  123. package/dist/sources/ala/types.d.ts +255 -0
  124. package/dist/sources/ala/types.d.ts.map +1 -0
  125. package/dist/sources/ala/types.js +7 -0
  126. package/dist/sources/ala/types.js.map +1 -0
  127. package/dist/sources/datagovau/client.d.ts +68 -0
  128. package/dist/sources/datagovau/client.d.ts.map +1 -0
  129. package/dist/sources/datagovau/client.js +344 -0
  130. package/dist/sources/datagovau/client.js.map +1 -0
  131. package/dist/sources/datagovau/index.d.ts +12 -0
  132. package/dist/sources/datagovau/index.d.ts.map +1 -0
  133. package/dist/sources/datagovau/index.js +37 -0
  134. package/dist/sources/datagovau/index.js.map +1 -0
  135. package/dist/sources/datagovau/tools/autocomplete.d.ts +6 -0
  136. package/dist/sources/datagovau/tools/autocomplete.d.ts.map +1 -0
  137. package/dist/sources/datagovau/tools/autocomplete.js +49 -0
  138. package/dist/sources/datagovau/tools/autocomplete.js.map +1 -0
  139. package/dist/sources/datagovau/tools/browse.d.ts +25 -0
  140. package/dist/sources/datagovau/tools/browse.d.ts.map +1 -0
  141. package/dist/sources/datagovau/tools/browse.js +205 -0
  142. package/dist/sources/datagovau/tools/browse.js.map +1 -0
  143. package/dist/sources/datagovau/tools/dataset.d.ts +17 -0
  144. package/dist/sources/datagovau/tools/dataset.d.ts.map +1 -0
  145. package/dist/sources/datagovau/tools/dataset.js +177 -0
  146. package/dist/sources/datagovau/tools/dataset.js.map +1 -0
  147. package/dist/sources/datagovau/tools/harvest.d.ts +6 -0
  148. package/dist/sources/datagovau/tools/harvest.d.ts.map +1 -0
  149. package/dist/sources/datagovau/tools/harvest.js +99 -0
  150. package/dist/sources/datagovau/tools/harvest.js.map +1 -0
  151. package/dist/sources/datagovau/tools/search.d.ts +6 -0
  152. package/dist/sources/datagovau/tools/search.d.ts.map +1 -0
  153. package/dist/sources/datagovau/tools/search.js +85 -0
  154. package/dist/sources/datagovau/tools/search.js.map +1 -0
  155. package/dist/sources/datagovau/types.d.ts +81 -0
  156. package/dist/sources/datagovau/types.d.ts.map +1 -0
  157. package/dist/sources/datagovau/types.js +5 -0
  158. package/dist/sources/datagovau/types.js.map +1 -0
  159. package/dist/sources/ga-hap/client.d.ts +65 -0
  160. package/dist/sources/ga-hap/client.d.ts.map +1 -0
  161. package/dist/sources/ga-hap/client.js +247 -0
  162. package/dist/sources/ga-hap/client.js.map +1 -0
  163. package/dist/sources/ga-hap/index.d.ts +12 -0
  164. package/dist/sources/ga-hap/index.d.ts.map +1 -0
  165. package/dist/sources/ga-hap/index.js +23 -0
  166. package/dist/sources/ga-hap/index.js.map +1 -0
  167. package/dist/sources/ga-hap/tools/get-photo.d.ts +6 -0
  168. package/dist/sources/ga-hap/tools/get-photo.d.ts.map +1 -0
  169. package/dist/sources/ga-hap/tools/get-photo.js +89 -0
  170. package/dist/sources/ga-hap/tools/get-photo.js.map +1 -0
  171. package/dist/sources/ga-hap/tools/harvest.d.ts +6 -0
  172. package/dist/sources/ga-hap/tools/harvest.d.ts.map +1 -0
  173. package/dist/sources/ga-hap/tools/harvest.js +87 -0
  174. package/dist/sources/ga-hap/tools/harvest.js.map +1 -0
  175. package/dist/sources/ga-hap/tools/search.d.ts +6 -0
  176. package/dist/sources/ga-hap/tools/search.d.ts.map +1 -0
  177. package/dist/sources/ga-hap/tools/search.js +97 -0
  178. package/dist/sources/ga-hap/tools/search.js.map +1 -0
  179. package/dist/sources/ga-hap/types.d.ts +178 -0
  180. package/dist/sources/ga-hap/types.d.ts.map +1 -0
  181. package/dist/sources/ga-hap/types.js +30 -0
  182. package/dist/sources/ga-hap/types.js.map +1 -0
  183. package/dist/sources/iiif/client.d.ts +37 -0
  184. package/dist/sources/iiif/client.d.ts.map +1 -0
  185. package/dist/sources/iiif/client.js +142 -0
  186. package/dist/sources/iiif/client.js.map +1 -0
  187. package/dist/sources/iiif/index.d.ts +18 -0
  188. package/dist/sources/iiif/index.d.ts.map +1 -0
  189. package/dist/sources/iiif/index.js +31 -0
  190. package/dist/sources/iiif/index.js.map +1 -0
  191. package/dist/sources/iiif/tools/get-image-url.d.ts +9 -0
  192. package/dist/sources/iiif/tools/get-image-url.d.ts.map +1 -0
  193. package/dist/sources/iiif/tools/get-image-url.js +101 -0
  194. package/dist/sources/iiif/tools/get-image-url.js.map +1 -0
  195. package/dist/sources/iiif/tools/get-manifest.d.ts +9 -0
  196. package/dist/sources/iiif/tools/get-manifest.d.ts.map +1 -0
  197. package/dist/sources/iiif/tools/get-manifest.js +87 -0
  198. package/dist/sources/iiif/tools/get-manifest.js.map +1 -0
  199. package/dist/sources/iiif/types.d.ts +123 -0
  200. package/dist/sources/iiif/types.d.ts.map +1 -0
  201. package/dist/sources/iiif/types.js +26 -0
  202. package/dist/sources/iiif/types.js.map +1 -0
  203. package/dist/sources/museums-victoria/client.d.ts +64 -0
  204. package/dist/sources/museums-victoria/client.d.ts.map +1 -0
  205. package/dist/sources/museums-victoria/client.js +358 -0
  206. package/dist/sources/museums-victoria/client.js.map +1 -0
  207. package/dist/sources/museums-victoria/index.d.ts +12 -0
  208. package/dist/sources/museums-victoria/index.d.ts.map +1 -0
  209. package/dist/sources/museums-victoria/index.js +30 -0
  210. package/dist/sources/museums-victoria/index.js.map +1 -0
  211. package/dist/sources/museums-victoria/tools/harvest.d.ts +6 -0
  212. package/dist/sources/museums-victoria/tools/harvest.d.ts.map +1 -0
  213. package/dist/sources/museums-victoria/tools/harvest.js +120 -0
  214. package/dist/sources/museums-victoria/tools/harvest.js.map +1 -0
  215. package/dist/sources/museums-victoria/tools/records.d.ts +21 -0
  216. package/dist/sources/museums-victoria/tools/records.d.ts.map +1 -0
  217. package/dist/sources/museums-victoria/tools/records.js +225 -0
  218. package/dist/sources/museums-victoria/tools/records.js.map +1 -0
  219. package/dist/sources/museums-victoria/tools/search.d.ts +6 -0
  220. package/dist/sources/museums-victoria/tools/search.d.ts.map +1 -0
  221. package/dist/sources/museums-victoria/tools/search.js +147 -0
  222. package/dist/sources/museums-victoria/tools/search.js.map +1 -0
  223. package/dist/sources/museums-victoria/types.d.ts +153 -0
  224. package/dist/sources/museums-victoria/types.d.ts.map +1 -0
  225. package/dist/sources/museums-victoria/types.js +5 -0
  226. package/dist/sources/museums-victoria/types.js.map +1 -0
  227. package/dist/sources/nma/client.d.ts +52 -0
  228. package/dist/sources/nma/client.d.ts.map +1 -0
  229. package/dist/sources/nma/client.js +175 -0
  230. package/dist/sources/nma/client.js.map +1 -0
  231. package/dist/sources/nma/index.d.ts +12 -0
  232. package/dist/sources/nma/index.d.ts.map +1 -0
  233. package/dist/sources/nma/index.js +39 -0
  234. package/dist/sources/nma/index.js.map +1 -0
  235. package/dist/sources/nma/tools/get-media.d.ts +6 -0
  236. package/dist/sources/nma/tools/get-media.d.ts.map +1 -0
  237. package/dist/sources/nma/tools/get-media.js +58 -0
  238. package/dist/sources/nma/tools/get-media.js.map +1 -0
  239. package/dist/sources/nma/tools/get-object.d.ts +6 -0
  240. package/dist/sources/nma/tools/get-object.d.ts.map +1 -0
  241. package/dist/sources/nma/tools/get-object.js +83 -0
  242. package/dist/sources/nma/tools/get-object.js.map +1 -0
  243. package/dist/sources/nma/tools/get-party.d.ts +6 -0
  244. package/dist/sources/nma/tools/get-party.d.ts.map +1 -0
  245. package/dist/sources/nma/tools/get-party.js +63 -0
  246. package/dist/sources/nma/tools/get-party.js.map +1 -0
  247. package/dist/sources/nma/tools/get-place.d.ts +6 -0
  248. package/dist/sources/nma/tools/get-place.d.ts.map +1 -0
  249. package/dist/sources/nma/tools/get-place.js +50 -0
  250. package/dist/sources/nma/tools/get-place.js.map +1 -0
  251. package/dist/sources/nma/tools/harvest.d.ts +6 -0
  252. package/dist/sources/nma/tools/harvest.d.ts.map +1 -0
  253. package/dist/sources/nma/tools/harvest.js +91 -0
  254. package/dist/sources/nma/tools/harvest.js.map +1 -0
  255. package/dist/sources/nma/tools/search-media.d.ts +6 -0
  256. package/dist/sources/nma/tools/search-media.d.ts.map +1 -0
  257. package/dist/sources/nma/tools/search-media.js +66 -0
  258. package/dist/sources/nma/tools/search-media.js.map +1 -0
  259. package/dist/sources/nma/tools/search-objects.d.ts +6 -0
  260. package/dist/sources/nma/tools/search-objects.d.ts.map +1 -0
  261. package/dist/sources/nma/tools/search-objects.js +70 -0
  262. package/dist/sources/nma/tools/search-objects.js.map +1 -0
  263. package/dist/sources/nma/tools/search-parties.d.ts +6 -0
  264. package/dist/sources/nma/tools/search-parties.d.ts.map +1 -0
  265. package/dist/sources/nma/tools/search-parties.js +64 -0
  266. package/dist/sources/nma/tools/search-parties.js.map +1 -0
  267. package/dist/sources/nma/tools/search-places.d.ts +6 -0
  268. package/dist/sources/nma/tools/search-places.d.ts.map +1 -0
  269. package/dist/sources/nma/tools/search-places.js +53 -0
  270. package/dist/sources/nma/tools/search-places.js.map +1 -0
  271. package/dist/sources/nma/types.d.ts +135 -0
  272. package/dist/sources/nma/types.d.ts.map +1 -0
  273. package/dist/sources/nma/types.js +5 -0
  274. package/dist/sources/nma/types.js.map +1 -0
  275. package/dist/sources/pm-transcripts/client.d.ts +39 -0
  276. package/dist/sources/pm-transcripts/client.d.ts.map +1 -0
  277. package/dist/sources/pm-transcripts/client.js +192 -0
  278. package/dist/sources/pm-transcripts/client.js.map +1 -0
  279. package/dist/sources/pm-transcripts/index.d.ts +13 -0
  280. package/dist/sources/pm-transcripts/index.d.ts.map +1 -0
  281. package/dist/sources/pm-transcripts/index.js +23 -0
  282. package/dist/sources/pm-transcripts/index.js.map +1 -0
  283. package/dist/sources/pm-transcripts/tools/get-transcript.d.ts +6 -0
  284. package/dist/sources/pm-transcripts/tools/get-transcript.d.ts.map +1 -0
  285. package/dist/sources/pm-transcripts/tools/get-transcript.js +52 -0
  286. package/dist/sources/pm-transcripts/tools/get-transcript.js.map +1 -0
  287. package/dist/sources/pm-transcripts/tools/harvest.d.ts +9 -0
  288. package/dist/sources/pm-transcripts/tools/harvest.d.ts.map +1 -0
  289. package/dist/sources/pm-transcripts/tools/harvest.js +213 -0
  290. package/dist/sources/pm-transcripts/tools/harvest.js.map +1 -0
  291. package/dist/sources/pm-transcripts/types.d.ts +54 -0
  292. package/dist/sources/pm-transcripts/types.d.ts.map +1 -0
  293. package/dist/sources/pm-transcripts/types.js +8 -0
  294. package/dist/sources/pm-transcripts/types.js.map +1 -0
  295. package/dist/sources/prov/client.d.ts +46 -0
  296. package/dist/sources/prov/client.d.ts.map +1 -0
  297. package/dist/sources/prov/client.js +297 -0
  298. package/dist/sources/prov/client.js.map +1 -0
  299. package/dist/sources/prov/index.d.ts +12 -0
  300. package/dist/sources/prov/index.d.ts.map +1 -0
  301. package/dist/sources/prov/index.js +31 -0
  302. package/dist/sources/prov/index.js.map +1 -0
  303. package/dist/sources/prov/tools/get-agency.d.ts +6 -0
  304. package/dist/sources/prov/tools/get-agency.d.ts.map +1 -0
  305. package/dist/sources/prov/tools/get-agency.js +49 -0
  306. package/dist/sources/prov/tools/get-agency.js.map +1 -0
  307. package/dist/sources/prov/tools/get-series.d.ts +6 -0
  308. package/dist/sources/prov/tools/get-series.d.ts.map +1 -0
  309. package/dist/sources/prov/tools/get-series.js +51 -0
  310. package/dist/sources/prov/tools/get-series.js.map +1 -0
  311. package/dist/sources/prov/tools/harvest.d.ts +6 -0
  312. package/dist/sources/prov/tools/harvest.d.ts.map +1 -0
  313. package/dist/sources/prov/tools/harvest.js +112 -0
  314. package/dist/sources/prov/tools/harvest.js.map +1 -0
  315. package/dist/sources/prov/tools/images.d.ts +9 -0
  316. package/dist/sources/prov/tools/images.d.ts.map +1 -0
  317. package/dist/sources/prov/tools/images.js +67 -0
  318. package/dist/sources/prov/tools/images.js.map +1 -0
  319. package/dist/sources/prov/tools/search.d.ts +6 -0
  320. package/dist/sources/prov/tools/search.d.ts.map +1 -0
  321. package/dist/sources/prov/tools/search.js +103 -0
  322. package/dist/sources/prov/tools/search.js.map +1 -0
  323. package/dist/sources/prov/types.d.ts +75 -0
  324. package/dist/sources/prov/types.d.ts.map +1 -0
  325. package/dist/sources/prov/types.js +31 -0
  326. package/dist/sources/prov/types.js.map +1 -0
  327. package/dist/sources/trove/client.d.ts +128 -0
  328. package/dist/sources/trove/client.d.ts.map +1 -0
  329. package/dist/sources/trove/client.js +1008 -0
  330. package/dist/sources/trove/client.js.map +1 -0
  331. package/dist/sources/trove/index.d.ts +12 -0
  332. package/dist/sources/trove/index.d.ts.map +1 -0
  333. package/dist/sources/trove/index.js +53 -0
  334. package/dist/sources/trove/index.js.map +1 -0
  335. package/dist/sources/trove/tools/get-contributor.d.ts +6 -0
  336. package/dist/sources/trove/tools/get-contributor.d.ts.map +1 -0
  337. package/dist/sources/trove/tools/get-contributor.js +54 -0
  338. package/dist/sources/trove/tools/get-contributor.js.map +1 -0
  339. package/dist/sources/trove/tools/get-list.d.ts +6 -0
  340. package/dist/sources/trove/tools/get-list.d.ts.map +1 -0
  341. package/dist/sources/trove/tools/get-list.js +95 -0
  342. package/dist/sources/trove/tools/get-list.js.map +1 -0
  343. package/dist/sources/trove/tools/get-magazine-title.d.ts +6 -0
  344. package/dist/sources/trove/tools/get-magazine-title.d.ts.map +1 -0
  345. package/dist/sources/trove/tools/get-magazine-title.js +96 -0
  346. package/dist/sources/trove/tools/get-magazine-title.js.map +1 -0
  347. package/dist/sources/trove/tools/get-person.d.ts +6 -0
  348. package/dist/sources/trove/tools/get-person.d.ts.map +1 -0
  349. package/dist/sources/trove/tools/get-person.js +64 -0
  350. package/dist/sources/trove/tools/get-person.js.map +1 -0
  351. package/dist/sources/trove/tools/get-work.d.ts +6 -0
  352. package/dist/sources/trove/tools/get-work.d.ts.map +1 -0
  353. package/dist/sources/trove/tools/get-work.js +104 -0
  354. package/dist/sources/trove/tools/get-work.js.map +1 -0
  355. package/dist/sources/trove/tools/harvest.d.ts +6 -0
  356. package/dist/sources/trove/tools/harvest.d.ts.map +1 -0
  357. package/dist/sources/trove/tools/harvest.js +127 -0
  358. package/dist/sources/trove/tools/harvest.js.map +1 -0
  359. package/dist/sources/trove/tools/list-contributors.d.ts +6 -0
  360. package/dist/sources/trove/tools/list-contributors.d.ts.map +1 -0
  361. package/dist/sources/trove/tools/list-contributors.js +59 -0
  362. package/dist/sources/trove/tools/list-contributors.js.map +1 -0
  363. package/dist/sources/trove/tools/list-magazine-titles.d.ts +6 -0
  364. package/dist/sources/trove/tools/list-magazine-titles.d.ts.map +1 -0
  365. package/dist/sources/trove/tools/list-magazine-titles.js +42 -0
  366. package/dist/sources/trove/tools/list-magazine-titles.js.map +1 -0
  367. package/dist/sources/trove/tools/newspaper.d.ts +17 -0
  368. package/dist/sources/trove/tools/newspaper.d.ts.map +1 -0
  369. package/dist/sources/trove/tools/newspaper.js +210 -0
  370. package/dist/sources/trove/tools/newspaper.js.map +1 -0
  371. package/dist/sources/trove/tools/search-people.d.ts +6 -0
  372. package/dist/sources/trove/tools/search-people.d.ts.map +1 -0
  373. package/dist/sources/trove/tools/search-people.js +72 -0
  374. package/dist/sources/trove/tools/search-people.js.map +1 -0
  375. package/dist/sources/trove/tools/search.d.ts +6 -0
  376. package/dist/sources/trove/tools/search.d.ts.map +1 -0
  377. package/dist/sources/trove/tools/search.js +219 -0
  378. package/dist/sources/trove/tools/search.js.map +1 -0
  379. package/dist/sources/trove/types.d.ts +257 -0
  380. package/dist/sources/trove/types.d.ts.map +1 -0
  381. package/dist/sources/trove/types.js +38 -0
  382. package/dist/sources/trove/types.js.map +1 -0
  383. package/dist/sources/vhd/client.d.ts +47 -0
  384. package/dist/sources/vhd/client.d.ts.map +1 -0
  385. package/dist/sources/vhd/client.js +158 -0
  386. package/dist/sources/vhd/client.js.map +1 -0
  387. package/dist/sources/vhd/index.d.ts +12 -0
  388. package/dist/sources/vhd/index.d.ts.map +1 -0
  389. package/dist/sources/vhd/index.js +39 -0
  390. package/dist/sources/vhd/index.js.map +1 -0
  391. package/dist/sources/vhd/tools/get-place.d.ts +6 -0
  392. package/dist/sources/vhd/tools/get-place.d.ts.map +1 -0
  393. package/dist/sources/vhd/tools/get-place.js +71 -0
  394. package/dist/sources/vhd/tools/get-place.js.map +1 -0
  395. package/dist/sources/vhd/tools/get-shipwreck.d.ts +6 -0
  396. package/dist/sources/vhd/tools/get-shipwreck.d.ts.map +1 -0
  397. package/dist/sources/vhd/tools/get-shipwreck.js +60 -0
  398. package/dist/sources/vhd/tools/get-shipwreck.js.map +1 -0
  399. package/dist/sources/vhd/tools/harvest.d.ts +6 -0
  400. package/dist/sources/vhd/tools/harvest.d.ts.map +1 -0
  401. package/dist/sources/vhd/tools/harvest.js +109 -0
  402. package/dist/sources/vhd/tools/harvest.js.map +1 -0
  403. package/dist/sources/vhd/tools/list-architectural-styles.d.ts +6 -0
  404. package/dist/sources/vhd/tools/list-architectural-styles.d.ts.map +1 -0
  405. package/dist/sources/vhd/tools/list-architectural-styles.js +33 -0
  406. package/dist/sources/vhd/tools/list-architectural-styles.js.map +1 -0
  407. package/dist/sources/vhd/tools/list-municipalities.d.ts +6 -0
  408. package/dist/sources/vhd/tools/list-municipalities.d.ts.map +1 -0
  409. package/dist/sources/vhd/tools/list-municipalities.js +33 -0
  410. package/dist/sources/vhd/tools/list-municipalities.js.map +1 -0
  411. package/dist/sources/vhd/tools/list-periods.d.ts +6 -0
  412. package/dist/sources/vhd/tools/list-periods.d.ts.map +1 -0
  413. package/dist/sources/vhd/tools/list-periods.js +33 -0
  414. package/dist/sources/vhd/tools/list-periods.js.map +1 -0
  415. package/dist/sources/vhd/tools/list-themes.d.ts +6 -0
  416. package/dist/sources/vhd/tools/list-themes.d.ts.map +1 -0
  417. package/dist/sources/vhd/tools/list-themes.js +34 -0
  418. package/dist/sources/vhd/tools/list-themes.js.map +1 -0
  419. package/dist/sources/vhd/tools/search-places.d.ts +6 -0
  420. package/dist/sources/vhd/tools/search-places.d.ts.map +1 -0
  421. package/dist/sources/vhd/tools/search-places.js +71 -0
  422. package/dist/sources/vhd/tools/search-places.js.map +1 -0
  423. package/dist/sources/vhd/tools/search-shipwrecks.d.ts +6 -0
  424. package/dist/sources/vhd/tools/search-shipwrecks.d.ts.map +1 -0
  425. package/dist/sources/vhd/tools/search-shipwrecks.js +52 -0
  426. package/dist/sources/vhd/tools/search-shipwrecks.js.map +1 -0
  427. package/dist/sources/vhd/types.d.ts +179 -0
  428. package/dist/sources/vhd/types.d.ts.map +1 -0
  429. package/dist/sources/vhd/types.js +5 -0
  430. package/dist/sources/vhd/types.js.map +1 -0
  431. package/dist/tools/datagovau_browse.d.ts +96 -0
  432. package/dist/tools/datagovau_browse.d.ts.map +1 -0
  433. package/dist/tools/datagovau_browse.js +297 -0
  434. package/dist/tools/datagovau_browse.js.map +1 -0
  435. package/dist/tools/datagovau_dataset.d.ts +79 -0
  436. package/dist/tools/datagovau_dataset.d.ts.map +1 -0
  437. package/dist/tools/datagovau_dataset.js +246 -0
  438. package/dist/tools/datagovau_dataset.js.map +1 -0
  439. package/dist/tools/datagovau_search.d.ts +58 -0
  440. package/dist/tools/datagovau_search.d.ts.map +1 -0
  441. package/dist/tools/datagovau_search.js +112 -0
  442. package/dist/tools/datagovau_search.js.map +1 -0
  443. package/dist/tools/harvest.d.ts +175 -0
  444. package/dist/tools/harvest.d.ts.map +1 -0
  445. package/dist/tools/harvest.js +426 -0
  446. package/dist/tools/harvest.js.map +1 -0
  447. package/dist/tools/prov_images.d.ts +38 -0
  448. package/dist/tools/prov_images.d.ts.map +1 -0
  449. package/dist/tools/prov_images.js +87 -0
  450. package/dist/tools/prov_images.js.map +1 -0
  451. package/dist/tools/prov_search.d.ts +60 -0
  452. package/dist/tools/prov_search.d.ts.map +1 -0
  453. package/dist/tools/prov_search.js +131 -0
  454. package/dist/tools/prov_search.js.map +1 -0
  455. package/dist/tools/trove_newspaper.d.ts +100 -0
  456. package/dist/tools/trove_newspaper.d.ts.map +1 -0
  457. package/dist/tools/trove_newspaper.js +282 -0
  458. package/dist/tools/trove_newspaper.js.map +1 -0
  459. package/dist/tools/trove_search.d.ts +62 -0
  460. package/dist/tools/trove_search.d.ts.map +1 -0
  461. package/dist/tools/trove_search.js +143 -0
  462. package/dist/tools/trove_search.js.map +1 -0
  463. package/dist/types.d.ts +231 -0
  464. package/dist/types.d.ts.map +1 -0
  465. package/dist/types.js +5 -0
  466. package/dist/types.js.map +1 -0
  467. package/package.json +73 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harvest-runner.d.ts","sourceRoot":"","sources":["../../src/core/harvest-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAgE3B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAC3B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAOA"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Harvest Runner
3
+ *
4
+ * Shared pagination and batch harvesting logic used by all sources.
5
+ * Eliminates duplicate harvest implementations across sources.
6
+ */
7
+ /**
8
+ * Run a harvest operation with consistent pagination handling
9
+ *
10
+ * Supports three pagination modes:
11
+ * - 'offset': Numeric offset (PROV, data.gov.au)
12
+ * - 'cursor': String-based cursor (Trove)
13
+ * - 'page': Page numbers (Museums Victoria)
14
+ */
15
+ export async function runHarvest(source, query, config) {
16
+ const { maxRecords, batchSize, cursorMode, initialCursor, fetchBatch, } = config;
17
+ const allRecords = [];
18
+ let currentCursor = initialCursor ?? (cursorMode === 'cursor' ? '' : 0);
19
+ let totalAvailable = 0;
20
+ let hasMore = true;
21
+ while (allRecords.length < maxRecords && hasMore) {
22
+ const remaining = maxRecords - allRecords.length;
23
+ const batchLimit = Math.min(batchSize, remaining);
24
+ try {
25
+ const batch = await fetchBatch(currentCursor, batchLimit);
26
+ allRecords.push(...batch.records);
27
+ totalAvailable = batch.total;
28
+ hasMore = batch.hasMore;
29
+ if (batch.nextCursor !== undefined) {
30
+ currentCursor = batch.nextCursor;
31
+ }
32
+ else if (cursorMode === 'offset') {
33
+ currentCursor = currentCursor + batch.records.length;
34
+ }
35
+ else if (cursorMode === 'page') {
36
+ currentCursor = currentCursor + 1;
37
+ }
38
+ else {
39
+ // No more pages
40
+ hasMore = false;
41
+ }
42
+ // Stop if we got fewer records than requested (end of results)
43
+ if (batch.records.length < batchLimit) {
44
+ hasMore = false;
45
+ }
46
+ }
47
+ catch (error) {
48
+ // Return what we have so far on error
49
+ console.error(`Harvest error after ${allRecords.length} records:`, error);
50
+ return {
51
+ source,
52
+ query,
53
+ totalHarvested: allRecords.length,
54
+ totalAvailable,
55
+ records: allRecords,
56
+ nextCursor: currentCursor,
57
+ hasMore: true, // Assume more available since we errored
58
+ };
59
+ }
60
+ }
61
+ return {
62
+ source,
63
+ query,
64
+ totalHarvested: allRecords.length,
65
+ totalAvailable,
66
+ records: allRecords,
67
+ nextCursor: hasMore ? currentCursor : undefined,
68
+ hasMore: allRecords.length < totalAvailable,
69
+ };
70
+ }
71
+ /**
72
+ * Calculate pagination info for response formatting
73
+ */
74
+ export function formatPaginationInfo(harvested, total, hasMore, nextCursor) {
75
+ return {
76
+ harvested,
77
+ totalAvailable: total,
78
+ hasMore,
79
+ ...(hasMore && nextCursor !== undefined && { nextOffset: String(nextCursor) }),
80
+ };
81
+ }
82
+ //# sourceMappingURL=harvest-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harvest-runner.js","sourceRoot":"","sources":["../../src/core/harvest-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,KAAa,EACb,MAAwB;IAExB,MAAM,EACJ,UAAU,EACV,SAAS,EACT,UAAU,EACV,aAAa,EACb,UAAU,GACX,GAAG,MAAM,CAAC;IAEX,MAAM,UAAU,GAAQ,EAAE,CAAC;IAC3B,IAAI,aAAa,GAAoB,aAAa,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,UAAU,CAAC,MAAM,GAAG,UAAU,IAAI,OAAO,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAElD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAE1D,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YAClC,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC;YAC7B,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAExB,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACnC,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC;YACnC,CAAC;iBAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACnC,aAAa,GAAI,aAAwB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnE,CAAC;iBAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBACjC,aAAa,GAAI,aAAwB,GAAG,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,gBAAgB;gBAChB,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;YAED,+DAA+D;YAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;gBACtC,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,uBAAuB,UAAU,CAAC,MAAM,WAAW,EAAE,KAAK,CAAC,CAAC;YAC1E,OAAO;gBACL,MAAM;gBACN,KAAK;gBACL,cAAc,EAAE,UAAU,CAAC,MAAM;gBACjC,cAAc;gBACd,OAAO,EAAE,UAAU;gBACnB,UAAU,EAAE,aAAa;gBACzB,OAAO,EAAE,IAAI,EAAE,yCAAyC;aACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM;QACN,KAAK;QACL,cAAc,EAAE,UAAU,CAAC,MAAM;QACjC,cAAc;QACd,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QAC/C,OAAO,EAAE,UAAU,CAAC,MAAM,GAAG,cAAc;KAC5C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAiB,EACjB,KAAa,EACb,OAAgB,EAChB,UAA4B;IAO5B,OAAO;QACL,SAAS;QACT,cAAc,EAAE,KAAK;QACrB,OAAO;QACP,GAAG,CAAC,OAAO,IAAI,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Core Module
3
+ *
4
+ * Exports all shared types, utilities, and base classes.
5
+ */
6
+ export { type MCPToolResponse, type APIError, type HarvestConfig, type HarvestBatchResult, type HarvestResult, APIRequestError, successResponse, errorResponse, } from './types.js';
7
+ export { type Source, type SourceTool, createTool, defineSource, } from './base-source.js';
8
+ export { BaseClient, type FetchOptions } from './base-client.js';
9
+ export { runHarvest, formatPaginationInfo } from './harvest-runner.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,MAAM,EACX,KAAK,UAAU,EACf,UAAU,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGjE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Core Module
3
+ *
4
+ * Exports all shared types, utilities, and base classes.
5
+ */
6
+ // Types
7
+ export { APIRequestError, successResponse, errorResponse, } from './types.js';
8
+ // Source interface
9
+ export { createTool, defineSource, } from './base-source.js';
10
+ // Base client
11
+ export { BaseClient } from './base-client.js';
12
+ // Harvest runner
13
+ export { runHarvest, formatPaginationInfo } from './harvest-runner.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,OAAO,EAML,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,mBAAmB;AACnB,OAAO,EAGL,UAAU,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,cAAc;AACd,OAAO,EAAE,UAAU,EAAqB,MAAM,kBAAkB,CAAC;AAEjE,iBAAiB;AACjB,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Core Type Definitions
3
+ *
4
+ * Base types shared across all sources. Source-specific types
5
+ * live in their respective source directories.
6
+ */
7
+ /**
8
+ * Standard MCP tool response format
9
+ */
10
+ export interface MCPToolResponse {
11
+ content: Array<{
12
+ type: 'text';
13
+ text: string;
14
+ }>;
15
+ isError?: boolean;
16
+ [key: string]: unknown;
17
+ }
18
+ /**
19
+ * Standardised API error format
20
+ */
21
+ export interface APIError {
22
+ code: string;
23
+ message: string;
24
+ details?: string;
25
+ retryable: boolean;
26
+ }
27
+ /**
28
+ * Error class for API failures
29
+ */
30
+ export declare class APIRequestError extends Error {
31
+ readonly code: string;
32
+ readonly statusCode?: number;
33
+ readonly retryable: boolean;
34
+ constructor(message: string, code: string, statusCode?: number, retryable?: boolean);
35
+ }
36
+ /**
37
+ * Configuration for harvest/pagination operations
38
+ */
39
+ export interface HarvestConfig<T> {
40
+ /** Maximum records to harvest */
41
+ maxRecords: number;
42
+ /** Records per batch */
43
+ batchSize: number;
44
+ /** Pagination mode */
45
+ cursorMode: 'offset' | 'cursor' | 'page';
46
+ /** Initial cursor/offset value */
47
+ initialCursor?: string | number;
48
+ /** Function to fetch a batch of records */
49
+ fetchBatch: (cursor: string | number, limit: number) => Promise<HarvestBatchResult<T>>;
50
+ }
51
+ /**
52
+ * Result from a single batch fetch
53
+ */
54
+ export interface HarvestBatchResult<T> {
55
+ records: T[];
56
+ total: number;
57
+ nextCursor?: string | number;
58
+ hasMore: boolean;
59
+ }
60
+ /**
61
+ * Final harvest result
62
+ */
63
+ export interface HarvestResult<T> {
64
+ source: string;
65
+ query: string;
66
+ totalHarvested: number;
67
+ totalAvailable: number;
68
+ records: T[];
69
+ nextCursor?: string | number;
70
+ hasMore: boolean;
71
+ }
72
+ /**
73
+ * Create a successful MCP response
74
+ */
75
+ export declare function successResponse(data: unknown): MCPToolResponse;
76
+ /**
77
+ * Create an error MCP response
78
+ */
79
+ export declare function errorResponse(error: unknown, toolName?: string): MCPToolResponse;
80
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,UAAQ;CAOlF;AAMD;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,2CAA2C;IAC3C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;CACxF;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAO9D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CAYhF"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Core Type Definitions
3
+ *
4
+ * Base types shared across all sources. Source-specific types
5
+ * live in their respective source directories.
6
+ */
7
+ /**
8
+ * Error class for API failures
9
+ */
10
+ export class APIRequestError extends Error {
11
+ code;
12
+ statusCode;
13
+ retryable;
14
+ constructor(message, code, statusCode, retryable = false) {
15
+ super(message);
16
+ this.name = 'APIRequestError';
17
+ this.code = code;
18
+ this.statusCode = statusCode;
19
+ this.retryable = retryable;
20
+ }
21
+ }
22
+ // ============================================================================
23
+ // Response Builders
24
+ // ============================================================================
25
+ /**
26
+ * Create a successful MCP response
27
+ */
28
+ export function successResponse(data) {
29
+ return {
30
+ content: [{
31
+ type: 'text',
32
+ text: JSON.stringify(data, null, 2),
33
+ }],
34
+ };
35
+ }
36
+ /**
37
+ * Create an error MCP response
38
+ */
39
+ export function errorResponse(error, toolName) {
40
+ const message = error instanceof Error ? error.message : String(error);
41
+ return {
42
+ content: [{
43
+ type: 'text',
44
+ text: JSON.stringify({
45
+ error: message,
46
+ ...(toolName && { tool: toolName }),
47
+ }),
48
+ }],
49
+ isError: true,
50
+ };
51
+ }
52
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgCH;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAS;IACb,UAAU,CAAU;IACpB,SAAS,CAAU;IAE5B,YAAY,OAAe,EAAE,IAAY,EAAE,UAAmB,EAAE,SAAS,GAAG,KAAK;QAC/E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AA6CD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aACpC,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,QAAiB;IAC7D,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,OAAO;oBACd,GAAG,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;iBACpC,CAAC;aACH,CAAC;QACF,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Australian History MCP Server
4
+ *
5
+ * Provides Claude Code with programmatic access to:
6
+ * - PROV (Public Record Office Victoria) - Victorian state archives
7
+ * - Trove (National Library of Australia) - Federal digitised collections
8
+ * - data.gov.au (CKAN) - Australian government open data portal
9
+ * - Museums Victoria - Victorian museum collections
10
+ * - ALA (Atlas of Living Australia) - Australian biodiversity data
11
+ * - NMA (National Museum of Australia) - National museum collections
12
+ * - VHD (Victorian Heritage Database) - Heritage places and shipwrecks
13
+ * - ACMI (Australian Centre for the Moving Image) - Films, TV, videogames
14
+ * - PM Transcripts - Prime Ministerial speeches and media releases
15
+ * - IIIF - Generic IIIF manifest and image tools (any institution)
16
+ * - GA HAP (Geoscience Australia) - Historical aerial photography (1928-1996)
17
+ *
18
+ * @package @littlebearapps/australian-history-mcp
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
package/dist/index.js ADDED
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Australian History MCP Server
4
+ *
5
+ * Provides Claude Code with programmatic access to:
6
+ * - PROV (Public Record Office Victoria) - Victorian state archives
7
+ * - Trove (National Library of Australia) - Federal digitised collections
8
+ * - data.gov.au (CKAN) - Australian government open data portal
9
+ * - Museums Victoria - Victorian museum collections
10
+ * - ALA (Atlas of Living Australia) - Australian biodiversity data
11
+ * - NMA (National Museum of Australia) - National museum collections
12
+ * - VHD (Victorian Heritage Database) - Heritage places and shipwrecks
13
+ * - ACMI (Australian Centre for the Moving Image) - Films, TV, videogames
14
+ * - PM Transcripts - Prime Ministerial speeches and media releases
15
+ * - IIIF - Generic IIIF manifest and image tools (any institution)
16
+ * - GA HAP (Geoscience Australia) - Historical aerial photography (1928-1996)
17
+ *
18
+ * @package @littlebearapps/australian-history-mcp
19
+ */
20
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
21
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
22
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
23
+ // Import registry and source modules
24
+ import { registry } from './registry.js';
25
+ import { provSource } from './sources/prov/index.js';
26
+ import { troveSource } from './sources/trove/index.js';
27
+ import { dataGovAUSource } from './sources/datagovau/index.js';
28
+ import { museumsVictoriaSource } from './sources/museums-victoria/index.js';
29
+ import { alaSource } from './sources/ala/index.js';
30
+ import { nmaSource } from './sources/nma/index.js';
31
+ import { vhdSource } from './sources/vhd/index.js';
32
+ import { acmiSource } from './sources/acmi/index.js';
33
+ import { pmTranscriptsSource } from './sources/pm-transcripts/index.js';
34
+ import { iiifSource } from './sources/iiif/index.js';
35
+ import { gaHapSource } from './sources/ga-hap/index.js';
36
+ // ============================================================================
37
+ // Register Source Modules
38
+ // ============================================================================
39
+ registry.register(provSource);
40
+ registry.register(troveSource);
41
+ registry.register(dataGovAUSource);
42
+ registry.register(museumsVictoriaSource);
43
+ registry.register(alaSource);
44
+ registry.register(nmaSource);
45
+ registry.register(vhdSource);
46
+ registry.register(acmiSource);
47
+ registry.register(pmTranscriptsSource);
48
+ registry.register(iiifSource);
49
+ registry.register(gaHapSource);
50
+ // ============================================================================
51
+ // Server Setup
52
+ // ============================================================================
53
+ const server = new Server({
54
+ name: 'australian-history-mcp',
55
+ version: '0.6.0',
56
+ }, {
57
+ capabilities: {
58
+ tools: {},
59
+ },
60
+ });
61
+ // ============================================================================
62
+ // Tool Registration
63
+ // ============================================================================
64
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
65
+ tools: registry.listTools(),
66
+ }));
67
+ // ============================================================================
68
+ // Tool Execution
69
+ // ============================================================================
70
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
71
+ const { name, arguments: args } = request.params;
72
+ return registry.executeTool(name, args ?? {});
73
+ });
74
+ // ============================================================================
75
+ // Server Startup
76
+ // ============================================================================
77
+ async function main() {
78
+ const transport = new StdioServerTransport();
79
+ await server.connect(transport);
80
+ console.error('Australian History MCP Server running on stdio');
81
+ // Show source status
82
+ const sources = registry.getSourcesStatus();
83
+ console.error('');
84
+ console.error('Registered sources:');
85
+ for (const source of sources) {
86
+ const authStatus = source.authRequired
87
+ ? (source.authConfigured ? '✓' : '✗ (API key required)')
88
+ : '(no auth)';
89
+ console.error(` ${source.name}: ${source.toolCount} tools ${authStatus}`);
90
+ }
91
+ console.error('');
92
+ console.error(`Total: ${registry.toolCount} tools from ${registry.sourceCount} sources`);
93
+ if (!process.env.TROVE_API_KEY) {
94
+ console.error('');
95
+ console.error('WARNING: TROVE_API_KEY not set. Trove tools will not work.');
96
+ console.error('Apply for a key: https://trove.nla.gov.au/about/create-something/using-api');
97
+ }
98
+ }
99
+ main().catch((error) => {
100
+ console.error('Server error:', error);
101
+ process.exit(1);
102
+ });
103
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Tool Registry
3
+ *
4
+ * Central registry for all tools from all sources.
5
+ * Replaces the monolithic switch statement with Map-based dispatch.
6
+ */
7
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
8
+ import type { Source } from './core/base-source.js';
9
+ import type { MCPToolResponse } from './core/types.js';
10
+ /**
11
+ * Source registration status
12
+ */
13
+ export interface SourceStatus {
14
+ name: string;
15
+ displayName: string;
16
+ toolCount: number;
17
+ authRequired: boolean;
18
+ authConfigured: boolean;
19
+ }
20
+ /**
21
+ * Central tool registry that manages all sources and their tools
22
+ */
23
+ declare class ToolRegistry {
24
+ private sources;
25
+ private tools;
26
+ /**
27
+ * Register a source and all its tools
28
+ */
29
+ register(source: Source): void;
30
+ /**
31
+ * Get all registered tool schemas for ListToolsRequest
32
+ */
33
+ listTools(): Tool[];
34
+ /**
35
+ * Execute a tool by name
36
+ */
37
+ executeTool(name: string, args: Record<string, unknown>): Promise<MCPToolResponse>;
38
+ /**
39
+ * Check if a tool exists
40
+ */
41
+ hasTool(name: string): boolean;
42
+ /**
43
+ * Get status of all registered sources
44
+ */
45
+ getSourcesStatus(): SourceStatus[];
46
+ /**
47
+ * Get list of tools grouped by source
48
+ */
49
+ getToolsBySource(): Map<string, string[]>;
50
+ /**
51
+ * Get the source name for a given tool
52
+ */
53
+ private getSourceForTool;
54
+ /**
55
+ * Get total tool count
56
+ */
57
+ get toolCount(): number;
58
+ /**
59
+ * Get total source count
60
+ */
61
+ get sourceCount(): number;
62
+ }
63
+ export declare const registry: ToolRegistry;
64
+ export {};
65
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,cAAM,YAAY;IAChB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,KAAK,CAAsC;IAEnD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA0B9B;;OAEG;IACH,SAAS,IAAI,IAAI,EAAE;IAInB;;OAEG;IACG,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,eAAe,CAAC;IAc3B;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,gBAAgB,IAAI,YAAY,EAAE;IAUlC;;OAEG;IACH,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAazC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;CACF;AAGD,eAAO,MAAM,QAAQ,cAAqB,CAAC"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Tool Registry
3
+ *
4
+ * Central registry for all tools from all sources.
5
+ * Replaces the monolithic switch statement with Map-based dispatch.
6
+ */
7
+ import { errorResponse } from './core/types.js';
8
+ /**
9
+ * Central tool registry that manages all sources and their tools
10
+ */
11
+ class ToolRegistry {
12
+ sources = new Map();
13
+ tools = new Map();
14
+ /**
15
+ * Register a source and all its tools
16
+ */
17
+ register(source) {
18
+ // Validate source
19
+ if (this.sources.has(source.name)) {
20
+ console.error(`Warning: Source '${source.name}' already registered, replacing`);
21
+ }
22
+ // Check for tool name conflicts
23
+ for (const tool of source.tools) {
24
+ if (this.tools.has(tool.schema.name)) {
25
+ const existing = this.getSourceForTool(tool.schema.name);
26
+ console.error(`Warning: Tool '${tool.schema.name}' from '${source.name}' ` +
27
+ `conflicts with existing tool from '${existing}'`);
28
+ }
29
+ }
30
+ // Register source
31
+ this.sources.set(source.name, source);
32
+ // Register all tools
33
+ for (const tool of source.tools) {
34
+ this.tools.set(tool.schema.name, tool);
35
+ }
36
+ }
37
+ /**
38
+ * Get all registered tool schemas for ListToolsRequest
39
+ */
40
+ listTools() {
41
+ return Array.from(this.tools.values()).map(t => t.schema);
42
+ }
43
+ /**
44
+ * Execute a tool by name
45
+ */
46
+ async executeTool(name, args) {
47
+ const tool = this.tools.get(name);
48
+ if (!tool) {
49
+ return errorResponse(`Unknown tool: ${name}`, name);
50
+ }
51
+ try {
52
+ return await tool.execute(args);
53
+ }
54
+ catch (error) {
55
+ return errorResponse(error, name);
56
+ }
57
+ }
58
+ /**
59
+ * Check if a tool exists
60
+ */
61
+ hasTool(name) {
62
+ return this.tools.has(name);
63
+ }
64
+ /**
65
+ * Get status of all registered sources
66
+ */
67
+ getSourcesStatus() {
68
+ return Array.from(this.sources.values()).map(source => ({
69
+ name: source.name,
70
+ displayName: source.displayName,
71
+ toolCount: source.tools.length,
72
+ authRequired: source.requiresAuth ?? false,
73
+ authConfigured: source.checkAuth?.() ?? true,
74
+ }));
75
+ }
76
+ /**
77
+ * Get list of tools grouped by source
78
+ */
79
+ getToolsBySource() {
80
+ const result = new Map();
81
+ for (const source of this.sources.values()) {
82
+ result.set(source.name, source.tools.map(t => t.schema.name));
83
+ }
84
+ return result;
85
+ }
86
+ /**
87
+ * Get the source name for a given tool
88
+ */
89
+ getSourceForTool(toolName) {
90
+ for (const source of this.sources.values()) {
91
+ if (source.tools.some(t => t.schema.name === toolName)) {
92
+ return source.name;
93
+ }
94
+ }
95
+ return undefined;
96
+ }
97
+ /**
98
+ * Get total tool count
99
+ */
100
+ get toolCount() {
101
+ return this.tools.size;
102
+ }
103
+ /**
104
+ * Get total source count
105
+ */
106
+ get sourceCount() {
107
+ return this.sources.size;
108
+ }
109
+ }
110
+ // Export singleton registry instance
111
+ export const registry = new ToolRegistry();
112
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Australian Centre for the Moving Image (ACMI) API Client
3
+ *
4
+ * Provides access to ACMI's collection of films, TV, videogames, and digital art.
5
+ * No API key required.
6
+ *
7
+ * API Documentation: https://www.acmi.net.au/api
8
+ */
9
+ import { BaseClient } from '../../core/base-client.js';
10
+ import type { ACMISearchParams, ACMIPaginatedResult, ACMIWork, ACMICreator, ACMIConstellation } from './types.js';
11
+ export declare class ACMIClient extends BaseClient {
12
+ constructor();
13
+ /**
14
+ * Search for works using the search endpoint
15
+ * Note: ACMI API requires no page param for page 1, use ?page=N for pages 2+
16
+ */
17
+ searchWorks(params: ACMISearchParams): Promise<ACMIPaginatedResult<ACMIWork>>;
18
+ /**
19
+ * List all works with pagination (for harvesting)
20
+ * Note: ACMI API requires no page param for page 1, use ?page=N for pages 2+
21
+ */
22
+ listWorks(page?: number): Promise<ACMIPaginatedResult<ACMIWork>>;
23
+ /**
24
+ * Get a single work by ID
25
+ */
26
+ getWork(id: number): Promise<ACMIWork | null>;
27
+ /**
28
+ * List creators with pagination
29
+ * Note: ACMI API requires no page param for page 1, use ?page=N for pages 2+
30
+ */
31
+ listCreators(page?: number): Promise<ACMIPaginatedResult<ACMICreator>>;
32
+ /**
33
+ * Get a single creator by ID
34
+ */
35
+ getCreator(id: number): Promise<ACMICreator | null>;
36
+ /**
37
+ * List constellations with pagination
38
+ * Note: ACMI API requires no page param for page 1, use ?page=N for pages 2+
39
+ */
40
+ listConstellations(page?: number): Promise<ACMIPaginatedResult<ACMIConstellation>>;
41
+ /**
42
+ * Get a single constellation by ID
43
+ */
44
+ getConstellation(id: number): Promise<ACMIConstellation | null>;
45
+ }
46
+ export declare const acmiClient: ACMIClient;
47
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/sources/acmi/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAIpB,qBAAa,UAAW,SAAQ,UAAU;;IASxC;;;OAGG;IACG,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAwBnF;;;OAGG;IACG,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAYtE;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAiBnD;;;OAGG;IACG,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAW5E;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAiBzD;;;OAGG;IACG,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAWxF;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CAatE;AAGD,eAAO,MAAM,UAAU,YAAmB,CAAC"}