@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.
- package/LICENSE +21 -0
- package/README.md +502 -0
- package/dist/clients/datagovau_client.d.ts +61 -0
- package/dist/clients/datagovau_client.d.ts.map +1 -0
- package/dist/clients/datagovau_client.js +421 -0
- package/dist/clients/datagovau_client.js.map +1 -0
- package/dist/clients/prov_client.d.ts +64 -0
- package/dist/clients/prov_client.d.ts.map +1 -0
- package/dist/clients/prov_client.js +393 -0
- package/dist/clients/prov_client.js.map +1 -0
- package/dist/clients/trove_client.d.ts +77 -0
- package/dist/clients/trove_client.d.ts.map +1 -0
- package/dist/clients/trove_client.js +374 -0
- package/dist/clients/trove_client.js.map +1 -0
- package/dist/core/base-client.d.ts +49 -0
- package/dist/core/base-client.d.ts.map +1 -0
- package/dist/core/base-client.js +116 -0
- package/dist/core/base-client.js.map +1 -0
- package/dist/core/base-source.d.ts +45 -0
- package/dist/core/base-source.d.ts.map +1 -0
- package/dist/core/base-source.js +19 -0
- package/dist/core/base-source.js.map +1 -0
- package/dist/core/harvest-runner.d.ts +26 -0
- package/dist/core/harvest-runner.d.ts.map +1 -0
- package/dist/core/harvest-runner.js +82 -0
- package/dist/core/harvest-runner.js.map +1 -0
- package/dist/core/index.d.ts +10 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/types.d.ts +80 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +52 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +103 -0
- package/dist/index.js.map +1 -0
- package/dist/registry.d.ts +65 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +112 -0
- package/dist/registry.js.map +1 -0
- package/dist/sources/acmi/client.d.ts +47 -0
- package/dist/sources/acmi/client.d.ts.map +1 -0
- package/dist/sources/acmi/client.js +131 -0
- package/dist/sources/acmi/client.js.map +1 -0
- package/dist/sources/acmi/index.d.ts +12 -0
- package/dist/sources/acmi/index.d.ts.map +1 -0
- package/dist/sources/acmi/index.js +35 -0
- package/dist/sources/acmi/index.js.map +1 -0
- package/dist/sources/acmi/tools/get-constellation.d.ts +6 -0
- package/dist/sources/acmi/tools/get-constellation.d.ts.map +1 -0
- package/dist/sources/acmi/tools/get-constellation.js +53 -0
- package/dist/sources/acmi/tools/get-constellation.js.map +1 -0
- package/dist/sources/acmi/tools/get-creator.d.ts +6 -0
- package/dist/sources/acmi/tools/get-creator.d.ts.map +1 -0
- package/dist/sources/acmi/tools/get-creator.js +52 -0
- package/dist/sources/acmi/tools/get-creator.js.map +1 -0
- package/dist/sources/acmi/tools/get-work.d.ts +6 -0
- package/dist/sources/acmi/tools/get-work.d.ts.map +1 -0
- package/dist/sources/acmi/tools/get-work.js +103 -0
- package/dist/sources/acmi/tools/get-work.js.map +1 -0
- package/dist/sources/acmi/tools/harvest.d.ts +6 -0
- package/dist/sources/acmi/tools/harvest.d.ts.map +1 -0
- package/dist/sources/acmi/tools/harvest.js +95 -0
- package/dist/sources/acmi/tools/harvest.js.map +1 -0
- package/dist/sources/acmi/tools/list-constellations.d.ts +6 -0
- package/dist/sources/acmi/tools/list-constellations.d.ts.map +1 -0
- package/dist/sources/acmi/tools/list-constellations.js +44 -0
- package/dist/sources/acmi/tools/list-constellations.js.map +1 -0
- package/dist/sources/acmi/tools/list-creators.d.ts +6 -0
- package/dist/sources/acmi/tools/list-creators.d.ts.map +1 -0
- package/dist/sources/acmi/tools/list-creators.js +46 -0
- package/dist/sources/acmi/tools/list-creators.js.map +1 -0
- package/dist/sources/acmi/tools/search-works.d.ts +6 -0
- package/dist/sources/acmi/tools/search-works.d.ts.map +1 -0
- package/dist/sources/acmi/tools/search-works.js +73 -0
- package/dist/sources/acmi/tools/search-works.js.map +1 -0
- package/dist/sources/acmi/types.d.ts +135 -0
- package/dist/sources/acmi/types.d.ts.map +1 -0
- package/dist/sources/acmi/types.js +5 -0
- package/dist/sources/acmi/types.js.map +1 -0
- package/dist/sources/ala/client.d.ts +79 -0
- package/dist/sources/ala/client.d.ts.map +1 -0
- package/dist/sources/ala/client.js +556 -0
- package/dist/sources/ala/client.js.map +1 -0
- package/dist/sources/ala/index.d.ts +12 -0
- package/dist/sources/ala/index.d.ts.map +1 -0
- package/dist/sources/ala/index.js +37 -0
- package/dist/sources/ala/index.js.map +1 -0
- package/dist/sources/ala/tools/get-species-list.d.ts +6 -0
- package/dist/sources/ala/tools/get-species-list.d.ts.map +1 -0
- package/dist/sources/ala/tools/get-species-list.js +56 -0
- package/dist/sources/ala/tools/get-species-list.js.map +1 -0
- package/dist/sources/ala/tools/get-species.d.ts +6 -0
- package/dist/sources/ala/tools/get-species.d.ts.map +1 -0
- package/dist/sources/ala/tools/get-species.js +81 -0
- package/dist/sources/ala/tools/get-species.js.map +1 -0
- package/dist/sources/ala/tools/harvest.d.ts +6 -0
- package/dist/sources/ala/tools/harvest.d.ts.map +1 -0
- package/dist/sources/ala/tools/harvest.js +133 -0
- package/dist/sources/ala/tools/harvest.js.map +1 -0
- package/dist/sources/ala/tools/list-species-lists.d.ts +6 -0
- package/dist/sources/ala/tools/list-species-lists.d.ts.map +1 -0
- package/dist/sources/ala/tools/list-species-lists.js +60 -0
- package/dist/sources/ala/tools/list-species-lists.js.map +1 -0
- package/dist/sources/ala/tools/match-name.d.ts +6 -0
- package/dist/sources/ala/tools/match-name.d.ts.map +1 -0
- package/dist/sources/ala/tools/match-name.js +66 -0
- package/dist/sources/ala/tools/match-name.js.map +1 -0
- package/dist/sources/ala/tools/search-images.d.ts +6 -0
- package/dist/sources/ala/tools/search-images.d.ts.map +1 -0
- package/dist/sources/ala/tools/search-images.js +64 -0
- package/dist/sources/ala/tools/search-images.js.map +1 -0
- package/dist/sources/ala/tools/search-occurrences.d.ts +6 -0
- package/dist/sources/ala/tools/search-occurrences.d.ts.map +1 -0
- package/dist/sources/ala/tools/search-occurrences.js +134 -0
- package/dist/sources/ala/tools/search-occurrences.js.map +1 -0
- package/dist/sources/ala/tools/search-species.d.ts +6 -0
- package/dist/sources/ala/tools/search-species.d.ts.map +1 -0
- package/dist/sources/ala/tools/search-species.js +68 -0
- package/dist/sources/ala/tools/search-species.js.map +1 -0
- package/dist/sources/ala/types.d.ts +255 -0
- package/dist/sources/ala/types.d.ts.map +1 -0
- package/dist/sources/ala/types.js +7 -0
- package/dist/sources/ala/types.js.map +1 -0
- package/dist/sources/datagovau/client.d.ts +68 -0
- package/dist/sources/datagovau/client.d.ts.map +1 -0
- package/dist/sources/datagovau/client.js +344 -0
- package/dist/sources/datagovau/client.js.map +1 -0
- package/dist/sources/datagovau/index.d.ts +12 -0
- package/dist/sources/datagovau/index.d.ts.map +1 -0
- package/dist/sources/datagovau/index.js +37 -0
- package/dist/sources/datagovau/index.js.map +1 -0
- package/dist/sources/datagovau/tools/autocomplete.d.ts +6 -0
- package/dist/sources/datagovau/tools/autocomplete.d.ts.map +1 -0
- package/dist/sources/datagovau/tools/autocomplete.js +49 -0
- package/dist/sources/datagovau/tools/autocomplete.js.map +1 -0
- package/dist/sources/datagovau/tools/browse.d.ts +25 -0
- package/dist/sources/datagovau/tools/browse.d.ts.map +1 -0
- package/dist/sources/datagovau/tools/browse.js +205 -0
- package/dist/sources/datagovau/tools/browse.js.map +1 -0
- package/dist/sources/datagovau/tools/dataset.d.ts +17 -0
- package/dist/sources/datagovau/tools/dataset.d.ts.map +1 -0
- package/dist/sources/datagovau/tools/dataset.js +177 -0
- package/dist/sources/datagovau/tools/dataset.js.map +1 -0
- package/dist/sources/datagovau/tools/harvest.d.ts +6 -0
- package/dist/sources/datagovau/tools/harvest.d.ts.map +1 -0
- package/dist/sources/datagovau/tools/harvest.js +99 -0
- package/dist/sources/datagovau/tools/harvest.js.map +1 -0
- package/dist/sources/datagovau/tools/search.d.ts +6 -0
- package/dist/sources/datagovau/tools/search.d.ts.map +1 -0
- package/dist/sources/datagovau/tools/search.js +85 -0
- package/dist/sources/datagovau/tools/search.js.map +1 -0
- package/dist/sources/datagovau/types.d.ts +81 -0
- package/dist/sources/datagovau/types.d.ts.map +1 -0
- package/dist/sources/datagovau/types.js +5 -0
- package/dist/sources/datagovau/types.js.map +1 -0
- package/dist/sources/ga-hap/client.d.ts +65 -0
- package/dist/sources/ga-hap/client.d.ts.map +1 -0
- package/dist/sources/ga-hap/client.js +247 -0
- package/dist/sources/ga-hap/client.js.map +1 -0
- package/dist/sources/ga-hap/index.d.ts +12 -0
- package/dist/sources/ga-hap/index.d.ts.map +1 -0
- package/dist/sources/ga-hap/index.js +23 -0
- package/dist/sources/ga-hap/index.js.map +1 -0
- package/dist/sources/ga-hap/tools/get-photo.d.ts +6 -0
- package/dist/sources/ga-hap/tools/get-photo.d.ts.map +1 -0
- package/dist/sources/ga-hap/tools/get-photo.js +89 -0
- package/dist/sources/ga-hap/tools/get-photo.js.map +1 -0
- package/dist/sources/ga-hap/tools/harvest.d.ts +6 -0
- package/dist/sources/ga-hap/tools/harvest.d.ts.map +1 -0
- package/dist/sources/ga-hap/tools/harvest.js +87 -0
- package/dist/sources/ga-hap/tools/harvest.js.map +1 -0
- package/dist/sources/ga-hap/tools/search.d.ts +6 -0
- package/dist/sources/ga-hap/tools/search.d.ts.map +1 -0
- package/dist/sources/ga-hap/tools/search.js +97 -0
- package/dist/sources/ga-hap/tools/search.js.map +1 -0
- package/dist/sources/ga-hap/types.d.ts +178 -0
- package/dist/sources/ga-hap/types.d.ts.map +1 -0
- package/dist/sources/ga-hap/types.js +30 -0
- package/dist/sources/ga-hap/types.js.map +1 -0
- package/dist/sources/iiif/client.d.ts +37 -0
- package/dist/sources/iiif/client.d.ts.map +1 -0
- package/dist/sources/iiif/client.js +142 -0
- package/dist/sources/iiif/client.js.map +1 -0
- package/dist/sources/iiif/index.d.ts +18 -0
- package/dist/sources/iiif/index.d.ts.map +1 -0
- package/dist/sources/iiif/index.js +31 -0
- package/dist/sources/iiif/index.js.map +1 -0
- package/dist/sources/iiif/tools/get-image-url.d.ts +9 -0
- package/dist/sources/iiif/tools/get-image-url.d.ts.map +1 -0
- package/dist/sources/iiif/tools/get-image-url.js +101 -0
- package/dist/sources/iiif/tools/get-image-url.js.map +1 -0
- package/dist/sources/iiif/tools/get-manifest.d.ts +9 -0
- package/dist/sources/iiif/tools/get-manifest.d.ts.map +1 -0
- package/dist/sources/iiif/tools/get-manifest.js +87 -0
- package/dist/sources/iiif/tools/get-manifest.js.map +1 -0
- package/dist/sources/iiif/types.d.ts +123 -0
- package/dist/sources/iiif/types.d.ts.map +1 -0
- package/dist/sources/iiif/types.js +26 -0
- package/dist/sources/iiif/types.js.map +1 -0
- package/dist/sources/museums-victoria/client.d.ts +64 -0
- package/dist/sources/museums-victoria/client.d.ts.map +1 -0
- package/dist/sources/museums-victoria/client.js +358 -0
- package/dist/sources/museums-victoria/client.js.map +1 -0
- package/dist/sources/museums-victoria/index.d.ts +12 -0
- package/dist/sources/museums-victoria/index.d.ts.map +1 -0
- package/dist/sources/museums-victoria/index.js +30 -0
- package/dist/sources/museums-victoria/index.js.map +1 -0
- package/dist/sources/museums-victoria/tools/harvest.d.ts +6 -0
- package/dist/sources/museums-victoria/tools/harvest.d.ts.map +1 -0
- package/dist/sources/museums-victoria/tools/harvest.js +120 -0
- package/dist/sources/museums-victoria/tools/harvest.js.map +1 -0
- package/dist/sources/museums-victoria/tools/records.d.ts +21 -0
- package/dist/sources/museums-victoria/tools/records.d.ts.map +1 -0
- package/dist/sources/museums-victoria/tools/records.js +225 -0
- package/dist/sources/museums-victoria/tools/records.js.map +1 -0
- package/dist/sources/museums-victoria/tools/search.d.ts +6 -0
- package/dist/sources/museums-victoria/tools/search.d.ts.map +1 -0
- package/dist/sources/museums-victoria/tools/search.js +147 -0
- package/dist/sources/museums-victoria/tools/search.js.map +1 -0
- package/dist/sources/museums-victoria/types.d.ts +153 -0
- package/dist/sources/museums-victoria/types.d.ts.map +1 -0
- package/dist/sources/museums-victoria/types.js +5 -0
- package/dist/sources/museums-victoria/types.js.map +1 -0
- package/dist/sources/nma/client.d.ts +52 -0
- package/dist/sources/nma/client.d.ts.map +1 -0
- package/dist/sources/nma/client.js +175 -0
- package/dist/sources/nma/client.js.map +1 -0
- package/dist/sources/nma/index.d.ts +12 -0
- package/dist/sources/nma/index.d.ts.map +1 -0
- package/dist/sources/nma/index.js +39 -0
- package/dist/sources/nma/index.js.map +1 -0
- package/dist/sources/nma/tools/get-media.d.ts +6 -0
- package/dist/sources/nma/tools/get-media.d.ts.map +1 -0
- package/dist/sources/nma/tools/get-media.js +58 -0
- package/dist/sources/nma/tools/get-media.js.map +1 -0
- package/dist/sources/nma/tools/get-object.d.ts +6 -0
- package/dist/sources/nma/tools/get-object.d.ts.map +1 -0
- package/dist/sources/nma/tools/get-object.js +83 -0
- package/dist/sources/nma/tools/get-object.js.map +1 -0
- package/dist/sources/nma/tools/get-party.d.ts +6 -0
- package/dist/sources/nma/tools/get-party.d.ts.map +1 -0
- package/dist/sources/nma/tools/get-party.js +63 -0
- package/dist/sources/nma/tools/get-party.js.map +1 -0
- package/dist/sources/nma/tools/get-place.d.ts +6 -0
- package/dist/sources/nma/tools/get-place.d.ts.map +1 -0
- package/dist/sources/nma/tools/get-place.js +50 -0
- package/dist/sources/nma/tools/get-place.js.map +1 -0
- package/dist/sources/nma/tools/harvest.d.ts +6 -0
- package/dist/sources/nma/tools/harvest.d.ts.map +1 -0
- package/dist/sources/nma/tools/harvest.js +91 -0
- package/dist/sources/nma/tools/harvest.js.map +1 -0
- package/dist/sources/nma/tools/search-media.d.ts +6 -0
- package/dist/sources/nma/tools/search-media.d.ts.map +1 -0
- package/dist/sources/nma/tools/search-media.js +66 -0
- package/dist/sources/nma/tools/search-media.js.map +1 -0
- package/dist/sources/nma/tools/search-objects.d.ts +6 -0
- package/dist/sources/nma/tools/search-objects.d.ts.map +1 -0
- package/dist/sources/nma/tools/search-objects.js +70 -0
- package/dist/sources/nma/tools/search-objects.js.map +1 -0
- package/dist/sources/nma/tools/search-parties.d.ts +6 -0
- package/dist/sources/nma/tools/search-parties.d.ts.map +1 -0
- package/dist/sources/nma/tools/search-parties.js +64 -0
- package/dist/sources/nma/tools/search-parties.js.map +1 -0
- package/dist/sources/nma/tools/search-places.d.ts +6 -0
- package/dist/sources/nma/tools/search-places.d.ts.map +1 -0
- package/dist/sources/nma/tools/search-places.js +53 -0
- package/dist/sources/nma/tools/search-places.js.map +1 -0
- package/dist/sources/nma/types.d.ts +135 -0
- package/dist/sources/nma/types.d.ts.map +1 -0
- package/dist/sources/nma/types.js +5 -0
- package/dist/sources/nma/types.js.map +1 -0
- package/dist/sources/pm-transcripts/client.d.ts +39 -0
- package/dist/sources/pm-transcripts/client.d.ts.map +1 -0
- package/dist/sources/pm-transcripts/client.js +192 -0
- package/dist/sources/pm-transcripts/client.js.map +1 -0
- package/dist/sources/pm-transcripts/index.d.ts +13 -0
- package/dist/sources/pm-transcripts/index.d.ts.map +1 -0
- package/dist/sources/pm-transcripts/index.js +23 -0
- package/dist/sources/pm-transcripts/index.js.map +1 -0
- package/dist/sources/pm-transcripts/tools/get-transcript.d.ts +6 -0
- package/dist/sources/pm-transcripts/tools/get-transcript.d.ts.map +1 -0
- package/dist/sources/pm-transcripts/tools/get-transcript.js +52 -0
- package/dist/sources/pm-transcripts/tools/get-transcript.js.map +1 -0
- package/dist/sources/pm-transcripts/tools/harvest.d.ts +9 -0
- package/dist/sources/pm-transcripts/tools/harvest.d.ts.map +1 -0
- package/dist/sources/pm-transcripts/tools/harvest.js +213 -0
- package/dist/sources/pm-transcripts/tools/harvest.js.map +1 -0
- package/dist/sources/pm-transcripts/types.d.ts +54 -0
- package/dist/sources/pm-transcripts/types.d.ts.map +1 -0
- package/dist/sources/pm-transcripts/types.js +8 -0
- package/dist/sources/pm-transcripts/types.js.map +1 -0
- package/dist/sources/prov/client.d.ts +46 -0
- package/dist/sources/prov/client.d.ts.map +1 -0
- package/dist/sources/prov/client.js +297 -0
- package/dist/sources/prov/client.js.map +1 -0
- package/dist/sources/prov/index.d.ts +12 -0
- package/dist/sources/prov/index.d.ts.map +1 -0
- package/dist/sources/prov/index.js +31 -0
- package/dist/sources/prov/index.js.map +1 -0
- package/dist/sources/prov/tools/get-agency.d.ts +6 -0
- package/dist/sources/prov/tools/get-agency.d.ts.map +1 -0
- package/dist/sources/prov/tools/get-agency.js +49 -0
- package/dist/sources/prov/tools/get-agency.js.map +1 -0
- package/dist/sources/prov/tools/get-series.d.ts +6 -0
- package/dist/sources/prov/tools/get-series.d.ts.map +1 -0
- package/dist/sources/prov/tools/get-series.js +51 -0
- package/dist/sources/prov/tools/get-series.js.map +1 -0
- package/dist/sources/prov/tools/harvest.d.ts +6 -0
- package/dist/sources/prov/tools/harvest.d.ts.map +1 -0
- package/dist/sources/prov/tools/harvest.js +112 -0
- package/dist/sources/prov/tools/harvest.js.map +1 -0
- package/dist/sources/prov/tools/images.d.ts +9 -0
- package/dist/sources/prov/tools/images.d.ts.map +1 -0
- package/dist/sources/prov/tools/images.js +67 -0
- package/dist/sources/prov/tools/images.js.map +1 -0
- package/dist/sources/prov/tools/search.d.ts +6 -0
- package/dist/sources/prov/tools/search.d.ts.map +1 -0
- package/dist/sources/prov/tools/search.js +103 -0
- package/dist/sources/prov/tools/search.js.map +1 -0
- package/dist/sources/prov/types.d.ts +75 -0
- package/dist/sources/prov/types.d.ts.map +1 -0
- package/dist/sources/prov/types.js +31 -0
- package/dist/sources/prov/types.js.map +1 -0
- package/dist/sources/trove/client.d.ts +128 -0
- package/dist/sources/trove/client.d.ts.map +1 -0
- package/dist/sources/trove/client.js +1008 -0
- package/dist/sources/trove/client.js.map +1 -0
- package/dist/sources/trove/index.d.ts +12 -0
- package/dist/sources/trove/index.d.ts.map +1 -0
- package/dist/sources/trove/index.js +53 -0
- package/dist/sources/trove/index.js.map +1 -0
- package/dist/sources/trove/tools/get-contributor.d.ts +6 -0
- package/dist/sources/trove/tools/get-contributor.d.ts.map +1 -0
- package/dist/sources/trove/tools/get-contributor.js +54 -0
- package/dist/sources/trove/tools/get-contributor.js.map +1 -0
- package/dist/sources/trove/tools/get-list.d.ts +6 -0
- package/dist/sources/trove/tools/get-list.d.ts.map +1 -0
- package/dist/sources/trove/tools/get-list.js +95 -0
- package/dist/sources/trove/tools/get-list.js.map +1 -0
- package/dist/sources/trove/tools/get-magazine-title.d.ts +6 -0
- package/dist/sources/trove/tools/get-magazine-title.d.ts.map +1 -0
- package/dist/sources/trove/tools/get-magazine-title.js +96 -0
- package/dist/sources/trove/tools/get-magazine-title.js.map +1 -0
- package/dist/sources/trove/tools/get-person.d.ts +6 -0
- package/dist/sources/trove/tools/get-person.d.ts.map +1 -0
- package/dist/sources/trove/tools/get-person.js +64 -0
- package/dist/sources/trove/tools/get-person.js.map +1 -0
- package/dist/sources/trove/tools/get-work.d.ts +6 -0
- package/dist/sources/trove/tools/get-work.d.ts.map +1 -0
- package/dist/sources/trove/tools/get-work.js +104 -0
- package/dist/sources/trove/tools/get-work.js.map +1 -0
- package/dist/sources/trove/tools/harvest.d.ts +6 -0
- package/dist/sources/trove/tools/harvest.d.ts.map +1 -0
- package/dist/sources/trove/tools/harvest.js +127 -0
- package/dist/sources/trove/tools/harvest.js.map +1 -0
- package/dist/sources/trove/tools/list-contributors.d.ts +6 -0
- package/dist/sources/trove/tools/list-contributors.d.ts.map +1 -0
- package/dist/sources/trove/tools/list-contributors.js +59 -0
- package/dist/sources/trove/tools/list-contributors.js.map +1 -0
- package/dist/sources/trove/tools/list-magazine-titles.d.ts +6 -0
- package/dist/sources/trove/tools/list-magazine-titles.d.ts.map +1 -0
- package/dist/sources/trove/tools/list-magazine-titles.js +42 -0
- package/dist/sources/trove/tools/list-magazine-titles.js.map +1 -0
- package/dist/sources/trove/tools/newspaper.d.ts +17 -0
- package/dist/sources/trove/tools/newspaper.d.ts.map +1 -0
- package/dist/sources/trove/tools/newspaper.js +210 -0
- package/dist/sources/trove/tools/newspaper.js.map +1 -0
- package/dist/sources/trove/tools/search-people.d.ts +6 -0
- package/dist/sources/trove/tools/search-people.d.ts.map +1 -0
- package/dist/sources/trove/tools/search-people.js +72 -0
- package/dist/sources/trove/tools/search-people.js.map +1 -0
- package/dist/sources/trove/tools/search.d.ts +6 -0
- package/dist/sources/trove/tools/search.d.ts.map +1 -0
- package/dist/sources/trove/tools/search.js +219 -0
- package/dist/sources/trove/tools/search.js.map +1 -0
- package/dist/sources/trove/types.d.ts +257 -0
- package/dist/sources/trove/types.d.ts.map +1 -0
- package/dist/sources/trove/types.js +38 -0
- package/dist/sources/trove/types.js.map +1 -0
- package/dist/sources/vhd/client.d.ts +47 -0
- package/dist/sources/vhd/client.d.ts.map +1 -0
- package/dist/sources/vhd/client.js +158 -0
- package/dist/sources/vhd/client.js.map +1 -0
- package/dist/sources/vhd/index.d.ts +12 -0
- package/dist/sources/vhd/index.d.ts.map +1 -0
- package/dist/sources/vhd/index.js +39 -0
- package/dist/sources/vhd/index.js.map +1 -0
- package/dist/sources/vhd/tools/get-place.d.ts +6 -0
- package/dist/sources/vhd/tools/get-place.d.ts.map +1 -0
- package/dist/sources/vhd/tools/get-place.js +71 -0
- package/dist/sources/vhd/tools/get-place.js.map +1 -0
- package/dist/sources/vhd/tools/get-shipwreck.d.ts +6 -0
- package/dist/sources/vhd/tools/get-shipwreck.d.ts.map +1 -0
- package/dist/sources/vhd/tools/get-shipwreck.js +60 -0
- package/dist/sources/vhd/tools/get-shipwreck.js.map +1 -0
- package/dist/sources/vhd/tools/harvest.d.ts +6 -0
- package/dist/sources/vhd/tools/harvest.d.ts.map +1 -0
- package/dist/sources/vhd/tools/harvest.js +109 -0
- package/dist/sources/vhd/tools/harvest.js.map +1 -0
- package/dist/sources/vhd/tools/list-architectural-styles.d.ts +6 -0
- package/dist/sources/vhd/tools/list-architectural-styles.d.ts.map +1 -0
- package/dist/sources/vhd/tools/list-architectural-styles.js +33 -0
- package/dist/sources/vhd/tools/list-architectural-styles.js.map +1 -0
- package/dist/sources/vhd/tools/list-municipalities.d.ts +6 -0
- package/dist/sources/vhd/tools/list-municipalities.d.ts.map +1 -0
- package/dist/sources/vhd/tools/list-municipalities.js +33 -0
- package/dist/sources/vhd/tools/list-municipalities.js.map +1 -0
- package/dist/sources/vhd/tools/list-periods.d.ts +6 -0
- package/dist/sources/vhd/tools/list-periods.d.ts.map +1 -0
- package/dist/sources/vhd/tools/list-periods.js +33 -0
- package/dist/sources/vhd/tools/list-periods.js.map +1 -0
- package/dist/sources/vhd/tools/list-themes.d.ts +6 -0
- package/dist/sources/vhd/tools/list-themes.d.ts.map +1 -0
- package/dist/sources/vhd/tools/list-themes.js +34 -0
- package/dist/sources/vhd/tools/list-themes.js.map +1 -0
- package/dist/sources/vhd/tools/search-places.d.ts +6 -0
- package/dist/sources/vhd/tools/search-places.d.ts.map +1 -0
- package/dist/sources/vhd/tools/search-places.js +71 -0
- package/dist/sources/vhd/tools/search-places.js.map +1 -0
- package/dist/sources/vhd/tools/search-shipwrecks.d.ts +6 -0
- package/dist/sources/vhd/tools/search-shipwrecks.d.ts.map +1 -0
- package/dist/sources/vhd/tools/search-shipwrecks.js +52 -0
- package/dist/sources/vhd/tools/search-shipwrecks.js.map +1 -0
- package/dist/sources/vhd/types.d.ts +179 -0
- package/dist/sources/vhd/types.d.ts.map +1 -0
- package/dist/sources/vhd/types.js +5 -0
- package/dist/sources/vhd/types.js.map +1 -0
- package/dist/tools/datagovau_browse.d.ts +96 -0
- package/dist/tools/datagovau_browse.d.ts.map +1 -0
- package/dist/tools/datagovau_browse.js +297 -0
- package/dist/tools/datagovau_browse.js.map +1 -0
- package/dist/tools/datagovau_dataset.d.ts +79 -0
- package/dist/tools/datagovau_dataset.d.ts.map +1 -0
- package/dist/tools/datagovau_dataset.js +246 -0
- package/dist/tools/datagovau_dataset.js.map +1 -0
- package/dist/tools/datagovau_search.d.ts +58 -0
- package/dist/tools/datagovau_search.d.ts.map +1 -0
- package/dist/tools/datagovau_search.js +112 -0
- package/dist/tools/datagovau_search.js.map +1 -0
- package/dist/tools/harvest.d.ts +175 -0
- package/dist/tools/harvest.d.ts.map +1 -0
- package/dist/tools/harvest.js +426 -0
- package/dist/tools/harvest.js.map +1 -0
- package/dist/tools/prov_images.d.ts +38 -0
- package/dist/tools/prov_images.d.ts.map +1 -0
- package/dist/tools/prov_images.js +87 -0
- package/dist/tools/prov_images.js.map +1 -0
- package/dist/tools/prov_search.d.ts +60 -0
- package/dist/tools/prov_search.d.ts.map +1 -0
- package/dist/tools/prov_search.js +131 -0
- package/dist/tools/prov_search.js.map +1 -0
- package/dist/tools/trove_newspaper.d.ts +100 -0
- package/dist/tools/trove_newspaper.d.ts.map +1 -0
- package/dist/tools/trove_newspaper.js +282 -0
- package/dist/tools/trove_newspaper.js.map +1 -0
- package/dist/tools/trove_search.d.ts +62 -0
- package/dist/tools/trove_search.d.ts.map +1 -0
- package/dist/tools/trove_search.js +143 -0
- package/dist/tools/trove_search.js.map +1 -0
- package/dist/types.d.ts +231 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- 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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/B,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AACnC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACzC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AACvC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE/B,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,wBAAwB;IAC9B,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE;CAC5B,CAAC,CAAC,CAAC;AAEJ,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACjD,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAEhE,qBAAqB;IACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IAC5C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY;YACpC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC;YACxD,CAAC,CAAC,WAAW,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,SAAS,UAAU,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,SAAS,eAAe,QAAQ,CAAC,WAAW,UAAU,CAAC,CAAC;IAEzF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -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"}
|
package/dist/registry.js
ADDED
|
@@ -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"}
|