@mantra-ai/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/google/client.d.ts +67 -0
- package/dist/ai/google/client.d.ts.map +1 -0
- package/dist/ai/google/client.js +169 -0
- package/dist/ai/google/client.js.map +1 -0
- package/dist/ai/google/generate.d.ts +10 -0
- package/dist/ai/google/generate.d.ts.map +1 -0
- package/dist/ai/google/generate.js +137 -0
- package/dist/ai/google/generate.js.map +1 -0
- package/dist/ai/google/index.d.ts +4 -0
- package/dist/ai/google/index.d.ts.map +1 -0
- package/dist/ai/google/index.js +4 -0
- package/dist/ai/google/index.js.map +1 -0
- package/dist/ai/google/types.d.ts +88 -0
- package/dist/ai/google/types.d.ts.map +1 -0
- package/dist/ai/google/types.js +55 -0
- package/dist/ai/google/types.js.map +1 -0
- package/dist/ai/index.d.ts +3 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +3 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/openai/client.d.ts +22 -0
- package/dist/ai/openai/client.d.ts.map +1 -0
- package/dist/ai/openai/client.js +49 -0
- package/dist/ai/openai/client.js.map +1 -0
- package/dist/ai/openai/generate.d.ts +14 -0
- package/dist/ai/openai/generate.d.ts.map +1 -0
- package/dist/ai/openai/generate.js +178 -0
- package/dist/ai/openai/generate.js.map +1 -0
- package/dist/ai/openai/index.d.ts +4 -0
- package/dist/ai/openai/index.d.ts.map +1 -0
- package/dist/ai/openai/index.js +4 -0
- package/dist/ai/openai/index.js.map +1 -0
- package/dist/ai/openai/types.d.ts +86 -0
- package/dist/ai/openai/types.d.ts.map +1 -0
- package/dist/ai/openai/types.js +56 -0
- package/dist/ai/openai/types.js.map +1 -0
- package/dist/ai/prompts/index.d.ts +1 -0
- package/dist/ai/prompts/index.d.ts.map +1 -0
- package/dist/ai/prompts/index.js +2 -0
- package/dist/ai/prompts/index.js.map +1 -0
- package/dist/errors/index.d.ts +3 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +4 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/schemas.d.ts +304 -0
- package/dist/errors/schemas.d.ts.map +1 -0
- package/dist/errors/schemas.js +57 -0
- package/dist/errors/schemas.js.map +1 -0
- package/dist/errors/types.d.ts +30 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +33 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/normalization/jats/index.d.ts +4 -0
- package/dist/normalization/jats/index.d.ts.map +1 -0
- package/dist/normalization/jats/index.js +3 -0
- package/dist/normalization/jats/index.js.map +1 -0
- package/dist/normalization/jats/normalize.d.ts +7 -0
- package/dist/normalization/jats/normalize.d.ts.map +1 -0
- package/dist/normalization/jats/normalize.js +213 -0
- package/dist/normalization/jats/normalize.js.map +1 -0
- package/dist/normalization/jats/utils/build/finalize.d.ts +3 -0
- package/dist/normalization/jats/utils/build/finalize.d.ts.map +1 -0
- package/dist/normalization/jats/utils/build/finalize.js +462 -0
- package/dist/normalization/jats/utils/build/finalize.js.map +1 -0
- package/dist/normalization/jats/utils/build/flatten.d.ts +20 -0
- package/dist/normalization/jats/utils/build/flatten.d.ts.map +1 -0
- package/dist/normalization/jats/utils/build/flatten.js +502 -0
- package/dist/normalization/jats/utils/build/flatten.js.map +1 -0
- package/dist/normalization/jats/utils/build/meta.d.ts +10 -0
- package/dist/normalization/jats/utils/build/meta.d.ts.map +1 -0
- package/dist/normalization/jats/utils/build/meta.js +32 -0
- package/dist/normalization/jats/utils/build/meta.js.map +1 -0
- package/dist/normalization/jats/utils/build/version.d.ts +3 -0
- package/dist/normalization/jats/utils/build/version.d.ts.map +1 -0
- package/dist/normalization/jats/utils/build/version.js +11 -0
- package/dist/normalization/jats/utils/build/version.js.map +1 -0
- package/dist/normalization/jats/utils/category.d.ts +11 -0
- package/dist/normalization/jats/utils/category.d.ts.map +1 -0
- package/dist/normalization/jats/utils/category.js +431 -0
- package/dist/normalization/jats/utils/category.js.map +1 -0
- package/dist/normalization/jats/utils/collectors/abstracts.d.ts +3 -0
- package/dist/normalization/jats/utils/collectors/abstracts.d.ts.map +1 -0
- package/dist/normalization/jats/utils/collectors/abstracts.js +168 -0
- package/dist/normalization/jats/utils/collectors/abstracts.js.map +1 -0
- package/dist/normalization/jats/utils/collectors/back.d.ts +35 -0
- package/dist/normalization/jats/utils/collectors/back.d.ts.map +1 -0
- package/dist/normalization/jats/utils/collectors/back.js +801 -0
- package/dist/normalization/jats/utils/collectors/back.js.map +1 -0
- package/dist/normalization/jats/utils/collectors/contributors.d.ts +4 -0
- package/dist/normalization/jats/utils/collectors/contributors.d.ts.map +1 -0
- package/dist/normalization/jats/utils/collectors/contributors.js +77 -0
- package/dist/normalization/jats/utils/collectors/contributors.js.map +1 -0
- package/dist/normalization/jats/utils/collectors/keywords.d.ts +2 -0
- package/dist/normalization/jats/utils/collectors/keywords.d.ts.map +1 -0
- package/dist/normalization/jats/utils/collectors/keywords.js +14 -0
- package/dist/normalization/jats/utils/collectors/keywords.js.map +1 -0
- package/dist/normalization/jats/utils/collectors/meta.d.ts +6 -0
- package/dist/normalization/jats/utils/collectors/meta.d.ts.map +1 -0
- package/dist/normalization/jats/utils/collectors/meta.js +103 -0
- package/dist/normalization/jats/utils/collectors/meta.js.map +1 -0
- package/dist/normalization/jats/utils/collectors/sections.d.ts +7 -0
- package/dist/normalization/jats/utils/collectors/sections.d.ts.map +1 -0
- package/dist/normalization/jats/utils/collectors/sections.js +484 -0
- package/dist/normalization/jats/utils/collectors/sections.js.map +1 -0
- package/dist/normalization/jats/utils/licenses.d.ts +5 -0
- package/dist/normalization/jats/utils/licenses.d.ts.map +1 -0
- package/dist/normalization/jats/utils/licenses.js +64 -0
- package/dist/normalization/jats/utils/licenses.js.map +1 -0
- package/dist/normalization/jats/utils/po/nodes.d.ts +6 -0
- package/dist/normalization/jats/utils/po/nodes.d.ts.map +1 -0
- package/dist/normalization/jats/utils/po/nodes.js +60 -0
- package/dist/normalization/jats/utils/po/nodes.js.map +1 -0
- package/dist/normalization/jats/utils/po/query.d.ts +7 -0
- package/dist/normalization/jats/utils/po/query.d.ts.map +1 -0
- package/dist/normalization/jats/utils/po/query.js +67 -0
- package/dist/normalization/jats/utils/po/query.js.map +1 -0
- package/dist/normalization/jats/utils/po/serialize.d.ts +4 -0
- package/dist/normalization/jats/utils/po/serialize.d.ts.map +1 -0
- package/dist/normalization/jats/utils/po/serialize.js +329 -0
- package/dist/normalization/jats/utils/po/serialize.js.map +1 -0
- package/dist/normalization/jats/utils/po/text.d.ts +7 -0
- package/dist/normalization/jats/utils/po/text.d.ts.map +1 -0
- package/dist/normalization/jats/utils/po/text.js +114 -0
- package/dist/normalization/jats/utils/po/text.js.map +1 -0
- package/dist/normalization/jats/utils/references.d.ts +26 -0
- package/dist/normalization/jats/utils/references.d.ts.map +1 -0
- package/dist/normalization/jats/utils/references.js +371 -0
- package/dist/normalization/jats/utils/references.js.map +1 -0
- package/dist/normalization/jats/utils/strings.d.ts +8 -0
- package/dist/normalization/jats/utils/strings.d.ts.map +1 -0
- package/dist/normalization/jats/utils/strings.js +197 -0
- package/dist/normalization/jats/utils/strings.js.map +1 -0
- package/dist/normalization/jats/utils/types.d.ts +233 -0
- package/dist/normalization/jats/utils/types.d.ts.map +1 -0
- package/dist/normalization/jats/utils/types.js +2 -0
- package/dist/normalization/jats/utils/types.js.map +1 -0
- package/dist/normalization/jats/utils/xml.d.ts +5 -0
- package/dist/normalization/jats/utils/xml.d.ts.map +1 -0
- package/dist/normalization/jats/utils/xml.js +69 -0
- package/dist/normalization/jats/utils/xml.js.map +1 -0
- package/dist/normalization/normalized-doc-schema.d.ts +1094 -0
- package/dist/normalization/normalized-doc-schema.d.ts.map +1 -0
- package/dist/normalization/normalized-doc-schema.js +410 -0
- package/dist/normalization/normalized-doc-schema.js.map +1 -0
- package/dist/normalization/pdf/index.d.ts +4 -0
- package/dist/normalization/pdf/index.d.ts.map +1 -0
- package/dist/normalization/pdf/index.js +3 -0
- package/dist/normalization/pdf/index.js.map +1 -0
- package/dist/normalization/pdf/normalize.d.ts +31 -0
- package/dist/normalization/pdf/normalize.d.ts.map +1 -0
- package/dist/normalization/pdf/normalize.js +321 -0
- package/dist/normalization/pdf/normalize.js.map +1 -0
- package/dist/normalization/pdf/prompt.d.ts +3 -0
- package/dist/normalization/pdf/prompt.d.ts.map +1 -0
- package/dist/normalization/pdf/prompt.js +118 -0
- package/dist/normalization/pdf/prompt.js.map +1 -0
- package/dist/sources/arxiv/client.d.ts +4 -0
- package/dist/sources/arxiv/client.d.ts.map +1 -0
- package/dist/sources/arxiv/client.js +13 -0
- package/dist/sources/arxiv/client.js.map +1 -0
- package/dist/sources/biorxiv/client.d.ts +21 -0
- package/dist/sources/biorxiv/client.d.ts.map +1 -0
- package/dist/sources/biorxiv/client.js +173 -0
- package/dist/sources/biorxiv/client.js.map +1 -0
- package/dist/sources/crossref/client.d.ts +3 -0
- package/dist/sources/crossref/client.d.ts.map +1 -0
- package/dist/sources/crossref/client.js +24 -0
- package/dist/sources/crossref/client.js.map +1 -0
- package/dist/sources/europepmc/client.d.ts +3 -0
- package/dist/sources/europepmc/client.d.ts.map +1 -0
- package/dist/sources/europepmc/client.js +29 -0
- package/dist/sources/europepmc/client.js.map +1 -0
- package/dist/sources/medrxiv/browser.d.ts +16 -0
- package/dist/sources/medrxiv/browser.d.ts.map +1 -0
- package/dist/sources/medrxiv/browser.js +210 -0
- package/dist/sources/medrxiv/browser.js.map +1 -0
- package/dist/sources/medrxiv/client.d.ts +34 -0
- package/dist/sources/medrxiv/client.d.ts.map +1 -0
- package/dist/sources/medrxiv/client.js +673 -0
- package/dist/sources/medrxiv/client.js.map +1 -0
- package/dist/sources/medrxiv/shared.d.ts +7 -0
- package/dist/sources/medrxiv/shared.d.ts.map +1 -0
- package/dist/sources/medrxiv/shared.js +18 -0
- package/dist/sources/medrxiv/shared.js.map +1 -0
- package/dist/sources/plos/client.d.ts +13 -0
- package/dist/sources/plos/client.d.ts.map +1 -0
- package/dist/sources/plos/client.js +147 -0
- package/dist/sources/plos/client.js.map +1 -0
- package/dist/sources/preprint-discovery.d.ts +55 -0
- package/dist/sources/preprint-discovery.d.ts.map +1 -0
- package/dist/sources/preprint-discovery.js +115 -0
- package/dist/sources/preprint-discovery.js.map +1 -0
- package/dist/types/expand.d.ts +5 -0
- package/dist/types/expand.d.ts.map +1 -0
- package/dist/types/expand.js +20 -0
- package/dist/types/expand.js.map +1 -0
- package/dist/types/methods-types.d.ts +37 -0
- package/dist/types/methods-types.d.ts.map +1 -0
- package/dist/types/methods-types.js +2 -0
- package/dist/types/methods-types.js.map +1 -0
- package/dist/types/multi-input-types.d.ts +57 -0
- package/dist/types/multi-input-types.d.ts.map +1 -0
- package/dist/types/multi-input-types.js +2 -0
- package/dist/types/multi-input-types.js.map +1 -0
- package/dist/types/paper/types.d.ts +41 -0
- package/dist/types/paper/types.d.ts.map +1 -0
- package/dist/types/paper/types.js +2 -0
- package/dist/types/paper/types.js.map +1 -0
- package/dist/types/results-types.d.ts +122 -0
- package/dist/types/results-types.d.ts.map +1 -0
- package/dist/types/results-types.js +17 -0
- package/dist/types/results-types.js.map +1 -0
- package/dist/types/supp-types.d.ts +6 -0
- package/dist/types/supp-types.d.ts.map +1 -0
- package/dist/types/supp-types.js +2 -0
- package/dist/types/supp-types.js.map +1 -0
- package/dist/types/version.d.ts +1828 -0
- package/dist/types/version.d.ts.map +1 -0
- package/dist/types/version.js +311 -0
- package/dist/types/version.js.map +1 -0
- package/dist/types/work.d.ts +4455 -0
- package/dist/types/work.d.ts.map +1 -0
- package/dist/types/work.js +330 -0
- package/dist/types/work.js.map +1 -0
- package/dist/works/adapters/crossref.d.ts +28 -0
- package/dist/works/adapters/crossref.d.ts.map +1 -0
- package/dist/works/adapters/crossref.js +43 -0
- package/dist/works/adapters/crossref.js.map +1 -0
- package/dist/works/adapters/europepmc.d.ts +14 -0
- package/dist/works/adapters/europepmc.d.ts.map +1 -0
- package/dist/works/adapters/europepmc.js +46 -0
- package/dist/works/adapters/europepmc.js.map +1 -0
- package/dist/works/adapters/openalex.d.ts +5 -0
- package/dist/works/adapters/openalex.d.ts.map +1 -0
- package/dist/works/adapters/openalex.js +75 -0
- package/dist/works/adapters/openalex.js.map +1 -0
- package/dist/works/errors.d.ts +23 -0
- package/dist/works/errors.d.ts.map +1 -0
- package/dist/works/errors.js +37 -0
- package/dist/works/errors.js.map +1 -0
- package/dist/works/id/detect-identifier.d.ts +15 -0
- package/dist/works/id/detect-identifier.d.ts.map +1 -0
- package/dist/works/id/detect-identifier.js +50 -0
- package/dist/works/id/detect-identifier.js.map +1 -0
- package/dist/works/id/normalize-external-id.d.ts +3 -0
- package/dist/works/id/normalize-external-id.d.ts.map +1 -0
- package/dist/works/id/normalize-external-id.js +44 -0
- package/dist/works/id/normalize-external-id.js.map +1 -0
- package/dist/works/id/normalize-ids.d.ts +66 -0
- package/dist/works/id/normalize-ids.d.ts.map +1 -0
- package/dist/works/id/normalize-ids.js +112 -0
- package/dist/works/id/normalize-ids.js.map +1 -0
- package/dist/works/id/normalize-internals.d.ts +7 -0
- package/dist/works/id/normalize-internals.d.ts.map +1 -0
- package/dist/works/id/normalize-internals.js +65 -0
- package/dist/works/id/normalize-internals.js.map +1 -0
- package/dist/works/id/resolve.d.ts +31 -0
- package/dist/works/id/resolve.d.ts.map +1 -0
- package/dist/works/id/resolve.js +123 -0
- package/dist/works/id/resolve.js.map +1 -0
- package/dist/works/id/resolveIds/assign.d.ts +4 -0
- package/dist/works/id/resolveIds/assign.d.ts.map +1 -0
- package/dist/works/id/resolveIds/assign.js +15 -0
- package/dist/works/id/resolveIds/assign.js.map +1 -0
- package/dist/works/id/resolveIds/flags.d.ts +11 -0
- package/dist/works/id/resolveIds/flags.d.ts.map +1 -0
- package/dist/works/id/resolveIds/flags.js +27 -0
- package/dist/works/id/resolveIds/flags.js.map +1 -0
- package/dist/works/id/resolveIds/idctx.d.ts +4 -0
- package/dist/works/id/resolveIds/idctx.d.ts.map +1 -0
- package/dist/works/id/resolveIds/idctx.js +25 -0
- package/dist/works/id/resolveIds/idctx.js.map +1 -0
- package/dist/works/id/resolveIds/index.d.ts +13 -0
- package/dist/works/id/resolveIds/index.d.ts.map +1 -0
- package/dist/works/id/resolveIds/index.js +498 -0
- package/dist/works/id/resolveIds/index.js.map +1 -0
- package/dist/works/id/resolveIds/versioning.d.ts +27 -0
- package/dist/works/id/resolveIds/versioning.d.ts.map +1 -0
- package/dist/works/id/resolveIds/versioning.js +156 -0
- package/dist/works/id/resolveIds/versioning.js.map +1 -0
- package/dist/works/id/resolveIds/workWhere.d.ts +3 -0
- package/dist/works/id/resolveIds/workWhere.d.ts.map +1 -0
- package/dist/works/id/resolveIds/workWhere.js +35 -0
- package/dist/works/id/resolveIds/workWhere.js.map +1 -0
- package/dist/works/id/types.d.ts +6 -0
- package/dist/works/id/types.d.ts.map +1 -0
- package/dist/works/id/types.js +2 -0
- package/dist/works/id/types.js.map +1 -0
- package/dist/works/pdf-fallback/candidates.d.ts +12 -0
- package/dist/works/pdf-fallback/candidates.d.ts.map +1 -0
- package/dist/works/pdf-fallback/candidates.js +51 -0
- package/dist/works/pdf-fallback/candidates.js.map +1 -0
- package/dist/works/pdf-fallback/fetch.d.ts +21 -0
- package/dist/works/pdf-fallback/fetch.d.ts.map +1 -0
- package/dist/works/pdf-fallback/fetch.js +89 -0
- package/dist/works/pdf-fallback/fetch.js.map +1 -0
- package/dist/works/pdf-fallback/index.d.ts +28 -0
- package/dist/works/pdf-fallback/index.d.ts.map +1 -0
- package/dist/works/pdf-fallback/index.js +35 -0
- package/dist/works/pdf-fallback/index.js.map +1 -0
- package/dist/works/plan.d.ts +8 -0
- package/dist/works/plan.d.ts.map +1 -0
- package/dist/works/plan.js +62 -0
- package/dist/works/plan.js.map +1 -0
- package/dist/works/strategies/arxiv.d.ts +3 -0
- package/dist/works/strategies/arxiv.d.ts.map +1 -0
- package/dist/works/strategies/arxiv.js +56 -0
- package/dist/works/strategies/arxiv.js.map +1 -0
- package/dist/works/strategies/biorxiv.d.ts +3 -0
- package/dist/works/strategies/biorxiv.d.ts.map +1 -0
- package/dist/works/strategies/biorxiv.js +63 -0
- package/dist/works/strategies/biorxiv.js.map +1 -0
- package/dist/works/strategies/europepmc.d.ts +3 -0
- package/dist/works/strategies/europepmc.d.ts.map +1 -0
- package/dist/works/strategies/europepmc.js +15 -0
- package/dist/works/strategies/europepmc.js.map +1 -0
- package/dist/works/strategies/index.d.ts +12 -0
- package/dist/works/strategies/index.d.ts.map +1 -0
- package/dist/works/strategies/index.js +19 -0
- package/dist/works/strategies/index.js.map +1 -0
- package/dist/works/strategies/landing-url.d.ts +3 -0
- package/dist/works/strategies/landing-url.d.ts.map +1 -0
- package/dist/works/strategies/landing-url.js +10 -0
- package/dist/works/strategies/landing-url.js.map +1 -0
- package/dist/works/strategies/medrxiv.d.ts +3 -0
- package/dist/works/strategies/medrxiv.d.ts.map +1 -0
- package/dist/works/strategies/medrxiv.js +47 -0
- package/dist/works/strategies/medrxiv.js.map +1 -0
- package/dist/works/strategies/plos.d.ts +3 -0
- package/dist/works/strategies/plos.d.ts.map +1 -0
- package/dist/works/strategies/plos.js +15 -0
- package/dist/works/strategies/plos.js.map +1 -0
- package/dist/works/strategies/shared.d.ts +11 -0
- package/dist/works/strategies/shared.d.ts.map +1 -0
- package/dist/works/strategies/shared.js +97 -0
- package/dist/works/strategies/shared.js.map +1 -0
- package/dist/works/strategies/ten1101.d.ts +3 -0
- package/dist/works/strategies/ten1101.d.ts.map +1 -0
- package/dist/works/strategies/ten1101.js +84 -0
- package/dist/works/strategies/ten1101.js.map +1 -0
- package/dist/works/text/acquire-fulltext.d.ts +7 -0
- package/dist/works/text/acquire-fulltext.d.ts.map +1 -0
- package/dist/works/text/acquire-fulltext.js +62 -0
- package/dist/works/text/acquire-fulltext.js.map +1 -0
- package/dist/works/text/normalize.d.ts +40 -0
- package/dist/works/text/normalize.d.ts.map +1 -0
- package/dist/works/text/normalize.js +188 -0
- package/dist/works/text/normalize.js.map +1 -0
- package/dist/works/types.d.ts +215 -0
- package/dist/works/types.d.ts.map +1 -0
- package/dist/works/types.js +6 -0
- package/dist/works/types.js.map +1 -0
- package/dist/works/util/debug.d.ts +7 -0
- package/dist/works/util/debug.d.ts.map +1 -0
- package/dist/works/util/debug.js +9 -0
- package/dist/works/util/debug.js.map +1 -0
- package/dist/works/util/license.d.ts +9 -0
- package/dist/works/util/license.d.ts.map +1 -0
- package/dist/works/util/license.js +39 -0
- package/dist/works/util/license.js.map +1 -0
- package/dist/works/util/normalize.d.ts +2 -0
- package/dist/works/util/normalize.d.ts.map +1 -0
- package/dist/works/util/normalize.js +76 -0
- package/dist/works/util/normalize.js.map +1 -0
- package/dist/works/util/parse.d.ts +8 -0
- package/dist/works/util/parse.d.ts.map +1 -0
- package/dist/works/util/parse.js +32 -0
- package/dist/works/util/parse.js.map +1 -0
- package/dist/works/util/source.d.ts +10 -0
- package/dist/works/util/source.d.ts.map +1 -0
- package/dist/works/util/source.js +48 -0
- package/dist/works/util/source.js.map +1 -0
- package/dist/works/util/version-label.d.ts +2 -0
- package/dist/works/util/version-label.d.ts.map +1 -0
- package/dist/works/util/version-label.js +8 -0
- package/dist/works/util/version-label.js.map +1 -0
- package/dist/works/util/work-id.d.ts +2 -0
- package/dist/works/util/work-id.d.ts.map +1 -0
- package/dist/works/util/work-id.js +27 -0
- package/dist/works/util/work-id.js.map +1 -0
- package/package.json +208 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { ChatMessage, GeminiResponseMeta, LLMCallOptions } from "./types";
|
|
2
|
+
export declare function toGeminiContents(messages: ChatMessage[]): any[];
|
|
3
|
+
export interface GenerateContentParams {
|
|
4
|
+
model: string;
|
|
5
|
+
contents: any;
|
|
6
|
+
systemInstruction?: string;
|
|
7
|
+
temperature?: number;
|
|
8
|
+
maxOutputTokens?: number;
|
|
9
|
+
responseMimeType?: string;
|
|
10
|
+
thinkingConfig?: {
|
|
11
|
+
includeThoughts?: boolean;
|
|
12
|
+
thinkingBudget?: number;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export type GenerateContentResult = {
|
|
16
|
+
ok: true;
|
|
17
|
+
text: string;
|
|
18
|
+
meta: GeminiResponseMeta;
|
|
19
|
+
raw: unknown;
|
|
20
|
+
} | {
|
|
21
|
+
ok: false;
|
|
22
|
+
error: string;
|
|
23
|
+
code?: string;
|
|
24
|
+
meta?: GeminiResponseMeta;
|
|
25
|
+
details?: unknown;
|
|
26
|
+
};
|
|
27
|
+
export declare function generateContentRaw(params: GenerateContentParams): Promise<GenerateContentResult>;
|
|
28
|
+
export declare function toGenerateContentParams(messages: ChatMessage[], opts?: LLMCallOptions): GenerateContentParams;
|
|
29
|
+
/**
|
|
30
|
+
* Build Gemini contents array with a PDF inline data part (base64).
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildPdfContents(pdfBase64: string, prompt: string): any[];
|
|
33
|
+
/**
|
|
34
|
+
* Build Gemini contents array referencing an uploaded file via fileData URI.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildPdfContentsFromFileUri(fileUri: string, mimeType: string, prompt: string): any[];
|
|
37
|
+
/**
|
|
38
|
+
* Upload a PDF buffer to the Gemini Files API.
|
|
39
|
+
* Returns the file URI and mime type for use with fileData content parts.
|
|
40
|
+
*/
|
|
41
|
+
export declare function uploadPdfToGemini(pdfBuffer: Buffer, displayName?: string): Promise<{
|
|
42
|
+
ok: true;
|
|
43
|
+
fileUri: string;
|
|
44
|
+
mimeType: string;
|
|
45
|
+
} | {
|
|
46
|
+
ok: false;
|
|
47
|
+
error: string;
|
|
48
|
+
}>;
|
|
49
|
+
/** PDF delivery strategy: inline base64 or uploaded file reference. */
|
|
50
|
+
export type PdfStrategy = "inline" | "file_upload";
|
|
51
|
+
export interface GenerateWithPdfParams {
|
|
52
|
+
pdfBase64: string;
|
|
53
|
+
pdfBuffer?: Buffer;
|
|
54
|
+
prompt: string;
|
|
55
|
+
systemInstruction?: string;
|
|
56
|
+
model?: string;
|
|
57
|
+
temperature?: number;
|
|
58
|
+
maxOutputTokens?: number;
|
|
59
|
+
responseMimeType?: string;
|
|
60
|
+
thinkingConfig?: {
|
|
61
|
+
includeThoughts?: boolean;
|
|
62
|
+
thinkingBudget?: number;
|
|
63
|
+
};
|
|
64
|
+
strategy?: PdfStrategy;
|
|
65
|
+
}
|
|
66
|
+
export declare function generateContentWithPdf(params: GenerateWithPdfParams): Promise<GenerateContentResult>;
|
|
67
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ai/google/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EAGX,kBAAkB,EAClB,cAAc,EACf,MAAM,SAAS,CAAC;AAkBjB,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,GAAG,EAAE,CAO/D;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAClE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9F,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CA2DhC;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,WAAW,EAAE,EACvB,IAAI,CAAC,EAAE,cAAc,GACpB,qBAAqB,CAMvB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,GAAG,EAAE,CAOP;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,GAAG,EAAE,CAQP;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBzF;AAED,uEAAuE;AACvE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAmChC"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { GoogleGenAI } from "@google/genai";
|
|
2
|
+
import { createPdfPart } from "./types";
|
|
3
|
+
let aiSingleton = null;
|
|
4
|
+
function getApiKey() {
|
|
5
|
+
return process.env.GEMINI_API_KEY || undefined;
|
|
6
|
+
}
|
|
7
|
+
function getClient() {
|
|
8
|
+
const apiKey = getApiKey();
|
|
9
|
+
if (!apiKey)
|
|
10
|
+
return { __error: "Missing GEMINI_API_KEY" };
|
|
11
|
+
if (!aiSingleton) {
|
|
12
|
+
aiSingleton = new GoogleGenAI({ apiKey });
|
|
13
|
+
}
|
|
14
|
+
return aiSingleton;
|
|
15
|
+
}
|
|
16
|
+
export function toGeminiContents(messages) {
|
|
17
|
+
// Map our chat messages to Gemini's Content shape.
|
|
18
|
+
// Gemini recognizes roles 'user' and 'model'; treat 'system' as 'user' instruction.
|
|
19
|
+
return messages.map((m) => ({
|
|
20
|
+
role: m.role === "assistant" ? "model" : "user",
|
|
21
|
+
parts: [{ text: m.content }],
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
export async function generateContentRaw(params) {
|
|
25
|
+
const client = getClient();
|
|
26
|
+
if (client.__error) {
|
|
27
|
+
return { ok: false, error: client.__error, code: "missing_api_key" };
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const response = await client.models.generateContent({
|
|
31
|
+
model: params.model,
|
|
32
|
+
contents: params.contents,
|
|
33
|
+
config: {
|
|
34
|
+
temperature: params.temperature,
|
|
35
|
+
maxOutputTokens: params.maxOutputTokens,
|
|
36
|
+
...(params.systemInstruction && {
|
|
37
|
+
systemInstruction: params.systemInstruction,
|
|
38
|
+
}),
|
|
39
|
+
...(params.responseMimeType && { responseMimeType: params.responseMimeType }),
|
|
40
|
+
...(params.thinkingConfig && { thinkingConfig: params.thinkingConfig }),
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
const candidates = response?.candidates;
|
|
44
|
+
const firstCandidate = candidates?.[0];
|
|
45
|
+
const parts = firstCandidate?.content?.parts;
|
|
46
|
+
const finishReason = firstCandidate?.finishReason;
|
|
47
|
+
const finishMessage = firstCandidate?.finishMessage;
|
|
48
|
+
const text = response?.text ?? "";
|
|
49
|
+
const meta = {
|
|
50
|
+
finishReason,
|
|
51
|
+
finishMessage,
|
|
52
|
+
partsCount: parts?.length,
|
|
53
|
+
textLength: text.length,
|
|
54
|
+
};
|
|
55
|
+
if (finishReason === "RECITATION") {
|
|
56
|
+
return {
|
|
57
|
+
ok: false,
|
|
58
|
+
error: `Gemini returned RECITATION: model refused to generate output${finishMessage ? ` (${finishMessage})` : ""}`,
|
|
59
|
+
code: "recitation",
|
|
60
|
+
meta,
|
|
61
|
+
raw: response,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (finishReason === "SAFETY") {
|
|
65
|
+
return {
|
|
66
|
+
ok: false,
|
|
67
|
+
error: `Gemini blocked by safety filter${finishMessage ? ` (${finishMessage})` : ""}`,
|
|
68
|
+
code: "safety_blocked",
|
|
69
|
+
meta,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return { ok: true, text, meta, raw: response };
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
return { ok: false, error: err?.message || String(err), code: "api_error" };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export function toGenerateContentParams(messages, opts) {
|
|
79
|
+
const model = opts?.model ?? "gemini-2.0-flash-001";
|
|
80
|
+
const temperature = opts?.temperature ?? 0.2;
|
|
81
|
+
const maxOutputTokens = opts?.maxOutputTokens ?? 1024;
|
|
82
|
+
const contents = toGeminiContents(messages);
|
|
83
|
+
return { model, contents, temperature, maxOutputTokens };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Build Gemini contents array with a PDF inline data part (base64).
|
|
87
|
+
*/
|
|
88
|
+
export function buildPdfContents(pdfBase64, prompt) {
|
|
89
|
+
const parts = [
|
|
90
|
+
createPdfPart(pdfBase64),
|
|
91
|
+
{ text: prompt },
|
|
92
|
+
];
|
|
93
|
+
return [{ role: "user", parts }];
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Build Gemini contents array referencing an uploaded file via fileData URI.
|
|
97
|
+
*/
|
|
98
|
+
export function buildPdfContentsFromFileUri(fileUri, mimeType, prompt) {
|
|
99
|
+
return [{
|
|
100
|
+
role: "user",
|
|
101
|
+
parts: [
|
|
102
|
+
{ fileData: { fileUri, mimeType } },
|
|
103
|
+
{ text: prompt },
|
|
104
|
+
],
|
|
105
|
+
}];
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Upload a PDF buffer to the Gemini Files API.
|
|
109
|
+
* Returns the file URI and mime type for use with fileData content parts.
|
|
110
|
+
*/
|
|
111
|
+
export async function uploadPdfToGemini(pdfBuffer, displayName) {
|
|
112
|
+
const client = getClient();
|
|
113
|
+
if (client.__error) {
|
|
114
|
+
return { ok: false, error: client.__error };
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
const blob = new Blob([pdfBuffer], { type: "application/pdf" });
|
|
118
|
+
const file = await client.files.upload({
|
|
119
|
+
file: blob,
|
|
120
|
+
config: {
|
|
121
|
+
mimeType: "application/pdf",
|
|
122
|
+
displayName: displayName ?? "upload.pdf",
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
const fileUri = file.uri;
|
|
126
|
+
if (!fileUri) {
|
|
127
|
+
return { ok: false, error: "File upload succeeded but no URI returned" };
|
|
128
|
+
}
|
|
129
|
+
return { ok: true, fileUri, mimeType: "application/pdf" };
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
return { ok: false, error: err?.message || String(err) };
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
export async function generateContentWithPdf(params) {
|
|
136
|
+
const strategy = params.strategy ?? "inline";
|
|
137
|
+
let contents;
|
|
138
|
+
if (strategy === "file_upload") {
|
|
139
|
+
if (!params.pdfBuffer) {
|
|
140
|
+
return {
|
|
141
|
+
ok: false,
|
|
142
|
+
error: "file_upload strategy requires pdfBuffer",
|
|
143
|
+
code: "invalid_params",
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
const upload = await uploadPdfToGemini(params.pdfBuffer);
|
|
147
|
+
if (!upload.ok) {
|
|
148
|
+
return {
|
|
149
|
+
ok: false,
|
|
150
|
+
error: `File upload failed: ${upload.error}`,
|
|
151
|
+
code: "file_upload_error",
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
contents = buildPdfContentsFromFileUri(upload.fileUri, upload.mimeType, params.prompt);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
contents = buildPdfContents(params.pdfBase64, params.prompt);
|
|
158
|
+
}
|
|
159
|
+
return generateContentRaw({
|
|
160
|
+
model: params.model ?? "gemini-2.5-flash",
|
|
161
|
+
contents,
|
|
162
|
+
systemInstruction: params.systemInstruction,
|
|
163
|
+
temperature: params.temperature ?? 0.1,
|
|
164
|
+
maxOutputTokens: params.maxOutputTokens ?? 16384,
|
|
165
|
+
responseMimeType: params.responseMimeType,
|
|
166
|
+
thinkingConfig: params.thinkingConfig,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/ai/google/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type ChatMessage, type LLMCallOptions, type LLMResult, type RetryOptions } from "./types";
|
|
3
|
+
export interface GenerateWithSchemaArgs<T> {
|
|
4
|
+
messages: ChatMessage[];
|
|
5
|
+
schema: z.ZodType<T>;
|
|
6
|
+
options?: LLMCallOptions;
|
|
7
|
+
retry?: RetryOptions;
|
|
8
|
+
}
|
|
9
|
+
export declare function generateWithSchema<T>(args: GenerateWithSchemaArgs<T>): Promise<LLMResult<T>>;
|
|
10
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/ai/google/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,YAAY,EAGlB,MAAM,SAAS,CAAC;AAyCjB,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CA4GlG"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { generateContentRaw, toGenerateContentParams } from "./client";
|
|
3
|
+
import { ChatMessagesSchema, describeZodObjectSchema, } from "./types";
|
|
4
|
+
const DEFAULT_SYSTEM_JSON_INSTRUCTIONS = [
|
|
5
|
+
"You are a precise JSON generator.",
|
|
6
|
+
"Respond with strictly valid JSON only.",
|
|
7
|
+
"No markdown, no code fences, no comments, no extra text.",
|
|
8
|
+
"If a field is optional, omit it entirely rather than using null.",
|
|
9
|
+
"Do not include trailing commas.",
|
|
10
|
+
].join(" ");
|
|
11
|
+
function extractFirstJson(text) {
|
|
12
|
+
const trimmed = text.trim();
|
|
13
|
+
try {
|
|
14
|
+
JSON.parse(trimmed);
|
|
15
|
+
return { ok: true, jsonText: trimmed };
|
|
16
|
+
}
|
|
17
|
+
catch { }
|
|
18
|
+
const unfenced = trimmed.replace(/^```(json)?/i, "").replace(/```$/i, "").trim();
|
|
19
|
+
try {
|
|
20
|
+
JSON.parse(unfenced);
|
|
21
|
+
return { ok: true, jsonText: unfenced };
|
|
22
|
+
}
|
|
23
|
+
catch { }
|
|
24
|
+
const objStart = unfenced.indexOf("{");
|
|
25
|
+
const arrStart = unfenced.indexOf("[");
|
|
26
|
+
const start = (objStart === -1) ? arrStart : (arrStart === -1 ? objStart : Math.min(objStart, arrStart));
|
|
27
|
+
if (start === -1)
|
|
28
|
+
return { ok: false };
|
|
29
|
+
for (let end = unfenced.length; end > start; end--) {
|
|
30
|
+
const candidate = unfenced.slice(start, end).trim();
|
|
31
|
+
try {
|
|
32
|
+
JSON.parse(candidate);
|
|
33
|
+
return { ok: true, jsonText: candidate };
|
|
34
|
+
}
|
|
35
|
+
catch { }
|
|
36
|
+
}
|
|
37
|
+
return { ok: false };
|
|
38
|
+
}
|
|
39
|
+
function sleep(ms) {
|
|
40
|
+
return new Promise((res) => setTimeout(res, ms));
|
|
41
|
+
}
|
|
42
|
+
export async function generateWithSchema(args) {
|
|
43
|
+
const parsed = ChatMessagesSchema.safeParse(args.messages);
|
|
44
|
+
if (!parsed.success) {
|
|
45
|
+
return {
|
|
46
|
+
ok: false,
|
|
47
|
+
error: { code: "invalid_output", message: "Invalid messages", details: parsed.error.flatten() },
|
|
48
|
+
attempts: 0,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const { schema } = args;
|
|
52
|
+
const opts = args.options ?? {};
|
|
53
|
+
const retry = args.retry ?? {};
|
|
54
|
+
const maxAttempts = Math.max(1, retry.maxAttempts ?? 2);
|
|
55
|
+
const delayMs = Math.max(0, retry.delayMs ?? 250);
|
|
56
|
+
let attempts = 0;
|
|
57
|
+
let usage = undefined;
|
|
58
|
+
const schemaDescription = describeZodObjectSchema(schema);
|
|
59
|
+
const baseMessages = [
|
|
60
|
+
{ role: "system", content: DEFAULT_SYSTEM_JSON_INSTRUCTIONS + (schemaDescription ? ` Output shape: { ${schemaDescription} }` : "") },
|
|
61
|
+
...parsed.data,
|
|
62
|
+
];
|
|
63
|
+
const convo = baseMessages.slice();
|
|
64
|
+
while (attempts < maxAttempts) {
|
|
65
|
+
attempts++;
|
|
66
|
+
const params = toGenerateContentParams(convo, opts);
|
|
67
|
+
const res = await generateContentRaw(params);
|
|
68
|
+
if (!res.ok) {
|
|
69
|
+
if (attempts >= maxAttempts) {
|
|
70
|
+
return { ok: false, error: { code: "api_error", message: res.error }, attempts };
|
|
71
|
+
}
|
|
72
|
+
await sleep(delayMs);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const rawText = (res.text ?? "").trim();
|
|
76
|
+
if (!rawText) {
|
|
77
|
+
if (attempts >= maxAttempts) {
|
|
78
|
+
return { ok: false, error: { code: "no_text", message: "Empty response" }, attempts, usage };
|
|
79
|
+
}
|
|
80
|
+
await sleep(delayMs);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const extracted = extractFirstJson(rawText);
|
|
84
|
+
if (!extracted.ok) {
|
|
85
|
+
convo.push({ role: "assistant", content: rawText });
|
|
86
|
+
convo.push({
|
|
87
|
+
role: "user",
|
|
88
|
+
content: "Your previous response did not contain valid JSON. Return strictly valid JSON only, matching the required shape. No prose.",
|
|
89
|
+
});
|
|
90
|
+
if (attempts >= maxAttempts) {
|
|
91
|
+
return { ok: false, error: { code: "parse_error", message: "Could not extract JSON from response" }, attempts, usage, rawText };
|
|
92
|
+
}
|
|
93
|
+
await sleep(delayMs);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
let parsedJson;
|
|
97
|
+
try {
|
|
98
|
+
parsedJson = JSON.parse(extracted.jsonText);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
convo.push({ role: "assistant", content: rawText });
|
|
102
|
+
convo.push({ role: "user", content: `Parsing error: ${err?.message || String(err)}. Reply with corrected JSON only.` });
|
|
103
|
+
if (attempts >= maxAttempts) {
|
|
104
|
+
return { ok: false, error: { code: "parse_error", message: err?.message || String(err) }, attempts, usage, rawText };
|
|
105
|
+
}
|
|
106
|
+
await sleep(delayMs);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const safe = schema.safeParse(parsedJson);
|
|
110
|
+
if (safe.success) {
|
|
111
|
+
return { ok: true, value: safe.data, rawText, attempts, usage };
|
|
112
|
+
}
|
|
113
|
+
const flattened = safe.error.flatten();
|
|
114
|
+
const errorSummary = JSON.stringify(flattened, null, 2);
|
|
115
|
+
const previousJson = extracted.jsonText;
|
|
116
|
+
convo.push({ role: "assistant", content: rawText });
|
|
117
|
+
convo.push({
|
|
118
|
+
role: "user",
|
|
119
|
+
content: [
|
|
120
|
+
"The JSON does not match the required schema.",
|
|
121
|
+
schemaDescription ? `Schema shape: { ${schemaDescription} }` : "",
|
|
122
|
+
`Validation errors: ${errorSummary}`,
|
|
123
|
+
"Return corrected JSON only. Do not include markdown or explanations.",
|
|
124
|
+
`Previous JSON to correct: ${previousJson}`,
|
|
125
|
+
]
|
|
126
|
+
.filter(Boolean)
|
|
127
|
+
.join("\n"),
|
|
128
|
+
});
|
|
129
|
+
if (attempts < maxAttempts) {
|
|
130
|
+
await sleep(delayMs);
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
return { ok: false, error: { code: "invalid_output", message: "Output did not satisfy schema", details: flattened }, attempts, usage, rawText };
|
|
134
|
+
}
|
|
135
|
+
return { ok: false, error: { code: "api_error", message: "Unexpected end of control flow" }, attempts };
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/ai/google/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/google/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/google/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export type ChatRole = "system" | "user" | "assistant";
|
|
3
|
+
export interface ChatMessage {
|
|
4
|
+
role: ChatRole;
|
|
5
|
+
content: string;
|
|
6
|
+
}
|
|
7
|
+
export interface InlineDataPart {
|
|
8
|
+
inlineData: {
|
|
9
|
+
data: string;
|
|
10
|
+
mimeType: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface TextPart {
|
|
14
|
+
text: string;
|
|
15
|
+
}
|
|
16
|
+
export type GeminiPart = TextPart | InlineDataPart;
|
|
17
|
+
export declare function createPdfPart(base64Data: string): InlineDataPart;
|
|
18
|
+
export interface GeminiUsage {
|
|
19
|
+
inputTokens?: number;
|
|
20
|
+
outputTokens?: number;
|
|
21
|
+
totalTokens?: number;
|
|
22
|
+
}
|
|
23
|
+
/** Known Gemini finish reasons from the SDK FinishReason enum. */
|
|
24
|
+
export type GeminiFinishReason = "STOP" | "MAX_TOKENS" | "SAFETY" | "RECITATION" | "LANGUAGE" | "OTHER" | "BLOCKLIST" | "PROHIBITED_CONTENT" | "SPII" | "FINISH_REASON_UNSPECIFIED";
|
|
25
|
+
/** Typed metadata from the first candidate of a Gemini response. */
|
|
26
|
+
export interface GeminiResponseMeta {
|
|
27
|
+
finishReason?: GeminiFinishReason;
|
|
28
|
+
finishMessage?: string;
|
|
29
|
+
partsCount?: number;
|
|
30
|
+
textLength: number;
|
|
31
|
+
}
|
|
32
|
+
export interface LLMCallOptions {
|
|
33
|
+
model?: string;
|
|
34
|
+
temperature?: number;
|
|
35
|
+
maxOutputTokens?: number;
|
|
36
|
+
responseFormat?: "json" | "text";
|
|
37
|
+
}
|
|
38
|
+
export interface RetryOptions {
|
|
39
|
+
maxAttempts?: number;
|
|
40
|
+
delayMs?: number;
|
|
41
|
+
}
|
|
42
|
+
export type LLMResult<T> = {
|
|
43
|
+
ok: true;
|
|
44
|
+
value: T;
|
|
45
|
+
rawText: string;
|
|
46
|
+
attempts: number;
|
|
47
|
+
usage?: GeminiUsage;
|
|
48
|
+
} | {
|
|
49
|
+
ok: false;
|
|
50
|
+
error: {
|
|
51
|
+
code: "missing_api_key" | "api_error" | "no_text" | "parse_error" | "invalid_output";
|
|
52
|
+
message: string;
|
|
53
|
+
details?: unknown;
|
|
54
|
+
};
|
|
55
|
+
rawText?: string;
|
|
56
|
+
attempts: number;
|
|
57
|
+
usage?: GeminiUsage;
|
|
58
|
+
};
|
|
59
|
+
export declare const ChatMessageSchema: z.ZodObject<{
|
|
60
|
+
role: z.ZodUnion<[z.ZodLiteral<"system">, z.ZodLiteral<"user">, z.ZodLiteral<"assistant">]>;
|
|
61
|
+
content: z.ZodString;
|
|
62
|
+
}, "strip", z.ZodTypeAny, {
|
|
63
|
+
role: "system" | "user" | "assistant";
|
|
64
|
+
content: string;
|
|
65
|
+
}, {
|
|
66
|
+
role: "system" | "user" | "assistant";
|
|
67
|
+
content: string;
|
|
68
|
+
}>;
|
|
69
|
+
export declare const ChatMessagesSchema: z.ZodArray<z.ZodObject<{
|
|
70
|
+
role: z.ZodUnion<[z.ZodLiteral<"system">, z.ZodLiteral<"user">, z.ZodLiteral<"assistant">]>;
|
|
71
|
+
content: z.ZodString;
|
|
72
|
+
}, "strip", z.ZodTypeAny, {
|
|
73
|
+
role: "system" | "user" | "assistant";
|
|
74
|
+
content: string;
|
|
75
|
+
}, {
|
|
76
|
+
role: "system" | "user" | "assistant";
|
|
77
|
+
content: string;
|
|
78
|
+
}>, "many">;
|
|
79
|
+
export declare const SimpleSummarySchema: z.ZodObject<{
|
|
80
|
+
summary: z.ZodString;
|
|
81
|
+
}, "strip", z.ZodTypeAny, {
|
|
82
|
+
summary: string;
|
|
83
|
+
}, {
|
|
84
|
+
summary: string;
|
|
85
|
+
}>;
|
|
86
|
+
export type SimpleSummary = z.infer<typeof SimpleSummarySchema>;
|
|
87
|
+
export declare function describeZodObjectSchema(schema: z.ZodTypeAny): string;
|
|
88
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ai/google/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AACvD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,cAAc,CAAC;AAEnD,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAEhE;AAGD,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,kEAAkE;AAClE,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,OAAO,GACP,WAAW,GACX,oBAAoB,GACpB,MAAM,GACN,2BAA2B,CAAC;AAEhC,oEAAoE;AACpE,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE,GAC9E;IACE,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE;QACL,IAAI,EACA,iBAAiB,GACjB,WAAW,GACX,SAAS,GACT,aAAa,GACb,gBAAgB,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEN,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;WAAoC,CAAC;AAGpE,eAAO,MAAM,mBAAmB;;;;;;EAA2C,CAAC;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,CAUpE"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function createPdfPart(base64Data) {
|
|
3
|
+
return { inlineData: { data: base64Data, mimeType: "application/pdf" } };
|
|
4
|
+
}
|
|
5
|
+
export const ChatMessageSchema = z.object({
|
|
6
|
+
role: z.union([z.literal("system"), z.literal("user"), z.literal("assistant")]),
|
|
7
|
+
content: z.string().min(1),
|
|
8
|
+
});
|
|
9
|
+
export const ChatMessagesSchema = z.array(ChatMessageSchema).min(1);
|
|
10
|
+
// Simple reusable example schema
|
|
11
|
+
export const SimpleSummarySchema = z.object({ summary: z.string().min(1) });
|
|
12
|
+
// Mirrors the helper in OpenAI impl; kept local to avoid coupling
|
|
13
|
+
export function describeZodObjectSchema(schema) {
|
|
14
|
+
const parts = [];
|
|
15
|
+
const root = schema._def;
|
|
16
|
+
if (root?.typeName !== z.ZodFirstPartyTypeKind.ZodObject)
|
|
17
|
+
return "";
|
|
18
|
+
const shape = root.shape();
|
|
19
|
+
for (const key of Object.keys(shape)) {
|
|
20
|
+
const def = shape[key]?._def;
|
|
21
|
+
parts.push(`${key}: ${describeZodType(def)}`);
|
|
22
|
+
}
|
|
23
|
+
return parts.join("; ");
|
|
24
|
+
}
|
|
25
|
+
function describeZodType(def) {
|
|
26
|
+
const t = def?.typeName;
|
|
27
|
+
switch (t) {
|
|
28
|
+
case z.ZodFirstPartyTypeKind.ZodString:
|
|
29
|
+
return "string";
|
|
30
|
+
case z.ZodFirstPartyTypeKind.ZodNumber:
|
|
31
|
+
return "number";
|
|
32
|
+
case z.ZodFirstPartyTypeKind.ZodBoolean:
|
|
33
|
+
return "boolean";
|
|
34
|
+
case z.ZodFirstPartyTypeKind.ZodArray:
|
|
35
|
+
return `array<${describeZodType(def?.type?._def)}>`;
|
|
36
|
+
case z.ZodFirstPartyTypeKind.ZodObject: {
|
|
37
|
+
const shape = def.shape?.();
|
|
38
|
+
const entries = Object.keys(shape || {}).map((k) => `${k}: ${describeZodType(shape[k]._def)}`);
|
|
39
|
+
return `{ ${entries.join(", ")} }`;
|
|
40
|
+
}
|
|
41
|
+
case z.ZodFirstPartyTypeKind.ZodLiteral:
|
|
42
|
+
return JSON.stringify(def?.value);
|
|
43
|
+
case z.ZodFirstPartyTypeKind.ZodEnum:
|
|
44
|
+
return `enum<${(def?.values || []).join(", ")}>`;
|
|
45
|
+
case z.ZodFirstPartyTypeKind.ZodUnion:
|
|
46
|
+
return (def?.options || []).map((o) => describeZodType(o._def)).join(" | ");
|
|
47
|
+
case z.ZodFirstPartyTypeKind.ZodOptional:
|
|
48
|
+
return `${describeZodType(def?.innerType?._def)}?`;
|
|
49
|
+
case z.ZodFirstPartyTypeKind.ZodNullable:
|
|
50
|
+
return `${describeZodType(def?.innerType?._def)} | null`;
|
|
51
|
+
default:
|
|
52
|
+
return t || "unknown";
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ai/google/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC"}
|
package/dist/ai/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type ChatMessage, type LLMCallOptions, type OpenAIChatResponse } from "./types";
|
|
2
|
+
export interface ChatCompletionParams {
|
|
3
|
+
model: string;
|
|
4
|
+
messages: ChatMessage[];
|
|
5
|
+
temperature?: number;
|
|
6
|
+
max_tokens?: number;
|
|
7
|
+
response_format?: {
|
|
8
|
+
type: "json_object" | "text";
|
|
9
|
+
} | undefined;
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
}
|
|
12
|
+
export declare function chatCompletionRaw(params: ChatCompletionParams): Promise<{
|
|
13
|
+
ok: true;
|
|
14
|
+
data: OpenAIChatResponse;
|
|
15
|
+
} | {
|
|
16
|
+
ok: false;
|
|
17
|
+
status?: number;
|
|
18
|
+
error: string;
|
|
19
|
+
details?: unknown;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function toChatCompletionParams(messages: ChatMessage[], opts?: LLMCallOptions): ChatCompletionParams;
|
|
22
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ai/openai/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AASzF,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC/D,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAgCpH;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,WAAW,EAAE,EACvB,IAAI,CAAC,EAAE,cAAc,GACpB,oBAAoB,CAMtB"}
|