@agtlantis/core 0.5.0 → 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/README.md +18 -5
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +3 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/types.d.ts +69 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +116 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/errors/utils.d.ts +17 -0
- package/dist/errors/utils.d.ts.map +1 -0
- package/dist/errors/utils.js +16 -0
- package/dist/errors/utils.js.map +1 -0
- package/dist/execution/constants.d.ts +7 -0
- package/dist/execution/constants.d.ts.map +1 -0
- package/dist/execution/constants.js +7 -0
- package/dist/execution/constants.js.map +1 -0
- package/dist/execution/index.d.ts +8 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +7 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/mapping.d.ts +17 -0
- package/dist/execution/mapping.d.ts.map +1 -0
- package/dist/execution/mapping.js +197 -0
- package/dist/execution/mapping.js.map +1 -0
- package/dist/execution/shared.d.ts +86 -0
- package/dist/execution/shared.d.ts.map +1 -0
- package/dist/execution/shared.js +100 -0
- package/dist/execution/shared.js.map +1 -0
- package/dist/execution/simple-host.d.ts +56 -0
- package/dist/execution/simple-host.d.ts.map +1 -0
- package/dist/execution/simple-host.js +126 -0
- package/dist/execution/simple-host.js.map +1 -0
- package/dist/execution/streaming-host.d.ts +79 -0
- package/dist/execution/streaming-host.d.ts.map +1 -0
- package/dist/execution/streaming-host.js +276 -0
- package/dist/execution/streaming-host.js.map +1 -0
- package/dist/execution/testing/fixtures.d.ts +67 -0
- package/dist/execution/testing/fixtures.d.ts.map +1 -0
- package/dist/execution/testing/fixtures.js +145 -0
- package/dist/execution/testing/fixtures.js.map +1 -0
- package/dist/execution/testing/helpers.d.ts +218 -0
- package/dist/execution/testing/helpers.d.ts.map +1 -0
- package/dist/execution/testing/helpers.js +327 -0
- package/dist/execution/testing/helpers.js.map +1 -0
- package/dist/execution/testing/host-configs.d.ts +56 -0
- package/dist/execution/testing/host-configs.d.ts.map +1 -0
- package/dist/execution/testing/host-configs.js +154 -0
- package/dist/execution/testing/host-configs.js.map +1 -0
- package/dist/execution/testing/vitest-assertions.d.ts +102 -0
- package/dist/execution/testing/vitest-assertions.d.ts.map +1 -0
- package/dist/execution/testing/vitest-assertions.js +142 -0
- package/dist/execution/testing/vitest-assertions.js.map +1 -0
- package/dist/execution/types.d.ts +432 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +2 -0
- package/dist/execution/types.js.map +1 -0
- package/dist/execution/utils.d.ts +68 -0
- package/dist/execution/utils.d.ts.map +1 -0
- package/dist/execution/utils.js +93 -0
- package/dist/execution/utils.js.map +1 -0
- package/dist/index.d.ts +10 -1506
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -2979
- package/dist/index.js.map +1 -1
- package/dist/observability/index.d.ts +4 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +2 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/logger.d.ts +161 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +31 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/types.d.ts +46 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +2 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/patterns/index.d.ts +2 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +2 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/patterns/progressive/index.d.ts +2 -0
- package/dist/patterns/progressive/index.d.ts.map +1 -0
- package/dist/patterns/progressive/index.js +2 -0
- package/dist/patterns/progressive/index.js.map +1 -0
- package/dist/patterns/progressive/progressive-pattern.d.ts +174 -0
- package/dist/patterns/progressive/progressive-pattern.d.ts.map +1 -0
- package/dist/patterns/progressive/progressive-pattern.js +260 -0
- package/dist/patterns/progressive/progressive-pattern.js.map +1 -0
- package/dist/pricing/calculator.d.ts +71 -0
- package/dist/pricing/calculator.d.ts.map +1 -0
- package/dist/pricing/calculator.js +127 -0
- package/dist/pricing/calculator.js.map +1 -0
- package/dist/pricing/config.d.ts +61 -0
- package/dist/pricing/config.d.ts.map +1 -0
- package/dist/pricing/config.js +87 -0
- package/dist/pricing/config.js.map +1 -0
- package/dist/pricing/defaults.d.ts +29 -0
- package/dist/pricing/defaults.d.ts.map +1 -0
- package/dist/pricing/defaults.js +139 -0
- package/dist/pricing/defaults.js.map +1 -0
- package/dist/pricing/index.d.ts +40 -0
- package/dist/pricing/index.d.ts.map +1 -0
- package/dist/pricing/index.js +43 -0
- package/dist/pricing/index.js.map +1 -0
- package/dist/pricing/types.d.ts +96 -0
- package/dist/pricing/types.d.ts.map +1 -0
- package/dist/pricing/types.js +7 -0
- package/dist/pricing/types.js.map +1 -0
- package/dist/pricing/validator.d.ts +55 -0
- package/dist/pricing/validator.d.ts.map +1 -0
- package/dist/pricing/validator.js +84 -0
- package/dist/pricing/validator.js.map +1 -0
- package/dist/prompt/errors.d.ts +112 -0
- package/dist/prompt/errors.d.ts.map +1 -0
- package/dist/prompt/errors.js +174 -0
- package/dist/prompt/errors.js.map +1 -0
- package/dist/prompt/file-prompt-repository.d.ts +80 -0
- package/dist/prompt/file-prompt-repository.d.ts.map +1 -0
- package/dist/prompt/file-prompt-repository.js +287 -0
- package/dist/prompt/file-prompt-repository.js.map +1 -0
- package/dist/prompt/index.d.ts +34 -0
- package/dist/prompt/index.d.ts.map +1 -0
- package/dist/prompt/index.js +37 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/prompt/prompt-template.d.ts +64 -0
- package/dist/prompt/prompt-template.d.ts.map +1 -0
- package/dist/prompt/prompt-template.js +90 -0
- package/dist/prompt/prompt-template.js.map +1 -0
- package/dist/prompt/template.d.ts +23 -0
- package/dist/prompt/template.d.ts.map +1 -0
- package/dist/prompt/template.js +70 -0
- package/dist/prompt/template.js.map +1 -0
- package/dist/prompt/types.d.ts +148 -0
- package/dist/prompt/types.d.ts.map +1 -0
- package/dist/prompt/types.js +7 -0
- package/dist/prompt/types.js.map +1 -0
- package/dist/provider/base-file-manager.d.ts +14 -0
- package/dist/provider/base-file-manager.d.ts.map +1 -0
- package/dist/provider/base-file-manager.js +91 -0
- package/dist/provider/base-file-manager.js.map +1 -0
- package/dist/provider/base-provider.d.ts +41 -0
- package/dist/provider/base-provider.d.ts.map +1 -0
- package/dist/provider/base-provider.js +21 -0
- package/dist/provider/base-provider.js.map +1 -0
- package/dist/provider/file-cache.d.ts +14 -0
- package/dist/provider/file-cache.d.ts.map +1 -0
- package/dist/provider/file-cache.js +29 -0
- package/dist/provider/file-cache.js.map +1 -0
- package/dist/provider/file-source.d.ts +32 -0
- package/dist/provider/file-source.d.ts.map +1 -0
- package/dist/provider/file-source.js +180 -0
- package/dist/provider/file-source.js.map +1 -0
- package/dist/provider/file-utils.d.ts +5 -0
- package/dist/provider/file-utils.d.ts.map +1 -0
- package/dist/provider/file-utils.js +15 -0
- package/dist/provider/file-utils.js.map +1 -0
- package/dist/provider/google/factory.d.ts +107 -0
- package/dist/provider/google/factory.d.ts.map +1 -0
- package/dist/provider/google/factory.js +143 -0
- package/dist/provider/google/factory.js.map +1 -0
- package/dist/provider/google/file-manager.d.ts +10 -0
- package/dist/provider/google/file-manager.d.ts.map +1 -0
- package/dist/provider/google/file-manager.js +93 -0
- package/dist/provider/google/file-manager.js.map +1 -0
- package/dist/provider/google/index.d.ts +8 -0
- package/dist/provider/google/index.d.ts.map +1 -0
- package/dist/provider/google/index.js +10 -0
- package/dist/provider/google/index.js.map +1 -0
- package/dist/provider/hash.d.ts +3 -0
- package/dist/provider/hash.d.ts.map +1 -0
- package/dist/provider/hash.js +34 -0
- package/dist/provider/hash.js.map +1 -0
- package/dist/provider/index.d.ts +10 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/index.js +12 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/provider/noop-file-manager.d.ts +9 -0
- package/dist/provider/noop-file-manager.d.ts.map +1 -0
- package/dist/provider/noop-file-manager.js +28 -0
- package/dist/provider/noop-file-manager.js.map +1 -0
- package/dist/provider/openai/factory.d.ts +67 -0
- package/dist/provider/openai/factory.d.ts.map +1 -0
- package/dist/provider/openai/factory.js +100 -0
- package/dist/provider/openai/factory.js.map +1 -0
- package/dist/provider/openai/file-manager.d.ts +17 -0
- package/dist/provider/openai/file-manager.d.ts.map +1 -0
- package/dist/provider/openai/file-manager.js +108 -0
- package/dist/provider/openai/file-manager.js.map +1 -0
- package/dist/provider/openai/index.d.ts +8 -0
- package/dist/provider/openai/index.d.ts.map +1 -0
- package/dist/provider/openai/index.js +8 -0
- package/dist/provider/openai/index.js.map +1 -0
- package/dist/provider/types.d.ts +105 -0
- package/dist/provider/types.d.ts.map +1 -0
- package/dist/provider/types.js +19 -0
- package/dist/provider/types.js.map +1 -0
- package/dist/session/index.d.ts +7 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +5 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/simple-session.d.ts +98 -0
- package/dist/session/simple-session.d.ts.map +1 -0
- package/dist/session/simple-session.js +299 -0
- package/dist/session/simple-session.js.map +1 -0
- package/dist/session/streaming-session.d.ts +90 -0
- package/dist/session/streaming-session.d.ts.map +1 -0
- package/dist/session/streaming-session.js +151 -0
- package/dist/session/streaming-session.js.map +1 -0
- package/dist/session/test-utils.d.ts +19 -0
- package/dist/session/test-utils.d.ts.map +1 -0
- package/dist/session/test-utils.js +65 -0
- package/dist/session/test-utils.js.map +1 -0
- package/dist/session/types.d.ts +219 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +181 -0
- package/dist/session/types.js.map +1 -0
- package/dist/session/usage-extractors.d.ts +7 -0
- package/dist/session/usage-extractors.d.ts.map +1 -0
- package/dist/session/usage-extractors.js +71 -0
- package/dist/session/usage-extractors.js.map +1 -0
- package/dist/testing/fixtures.d.ts +34 -0
- package/dist/testing/fixtures.d.ts.map +1 -0
- package/dist/testing/fixtures.js +65 -0
- package/dist/testing/fixtures.js.map +1 -0
- package/dist/testing/helpers.d.ts +20 -0
- package/dist/testing/helpers.d.ts.map +1 -0
- package/dist/testing/helpers.js +32 -0
- package/dist/testing/helpers.js.map +1 -0
- package/dist/testing/index.d.ts +7 -519
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +21 -2123
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/mock-provider.d.ts +79 -0
- package/dist/testing/mock-provider.d.ts.map +1 -0
- package/dist/testing/mock-provider.js +152 -0
- package/dist/testing/mock-provider.js.map +1 -0
- package/dist/testing/mock.d.ts +29 -0
- package/dist/testing/mock.d.ts.map +1 -0
- package/dist/testing/mock.js +154 -0
- package/dist/testing/mock.js.map +1 -0
- package/dist/testing/test-execution.d.ts +14 -0
- package/dist/testing/test-execution.d.ts.map +1 -0
- package/dist/testing/test-execution.js +108 -0
- package/dist/testing/test-execution.js.map +1 -0
- package/dist/utils/deep-merge.d.ts +6 -0
- package/dist/utils/deep-merge.d.ts.map +1 -0
- package/dist/utils/deep-merge.js +24 -0
- package/dist/utils/deep-merge.js.map +1 -0
- package/dist/validation/errors.d.ts +28 -0
- package/dist/validation/errors.d.ts.map +1 -0
- package/dist/validation/errors.js +38 -0
- package/dist/validation/errors.js.map +1 -0
- package/dist/validation/index.d.ts +5 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +4 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/types.d.ts +49 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +2 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/validation-history.d.ts +12 -0
- package/dist/validation/validation-history.d.ts.map +1 -0
- package/dist/validation/validation-history.js +29 -0
- package/dist/validation/validation-history.js.map +1 -0
- package/dist/validation/with-validation.d.ts +38 -0
- package/dist/validation/with-validation.d.ts.map +1 -0
- package/dist/validation/with-validation.js +58 -0
- package/dist/validation/with-validation.js.map +1 -0
- package/package.json +71 -75
- package/dist/base-provider-2TTw5HAa.d.cts +0 -1254
- package/dist/base-provider-2TTw5HAa.d.ts +0 -1254
- package/dist/index.cjs +0 -3085
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -1506
- package/dist/testing/index.cjs +0 -2167
- package/dist/testing/index.cjs.map +0 -1
- package/dist/testing/index.d.cts +0 -520
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export class InMemoryFileCache {
|
|
2
|
+
cache = new Map();
|
|
3
|
+
defaultTTL;
|
|
4
|
+
constructor(options) {
|
|
5
|
+
this.defaultTTL = options?.defaultTTL;
|
|
6
|
+
}
|
|
7
|
+
get(hash) {
|
|
8
|
+
const entry = this.cache.get(hash);
|
|
9
|
+
if (!entry)
|
|
10
|
+
return null;
|
|
11
|
+
if (entry.expiresAt !== undefined && Date.now() > entry.expiresAt) {
|
|
12
|
+
this.cache.delete(hash);
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
return entry.file;
|
|
16
|
+
}
|
|
17
|
+
set(hash, file, ttl) {
|
|
18
|
+
const effectiveTTL = ttl ?? this.defaultTTL;
|
|
19
|
+
const expiresAt = effectiveTTL !== undefined ? Date.now() + effectiveTTL : undefined;
|
|
20
|
+
this.cache.set(hash, { file, expiresAt });
|
|
21
|
+
}
|
|
22
|
+
delete(hash) {
|
|
23
|
+
this.cache.delete(hash);
|
|
24
|
+
}
|
|
25
|
+
clear() {
|
|
26
|
+
this.cache.clear();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=file-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-cache.js","sourceRoot":"","sources":["../../src/provider/file-cache.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,iBAAiB;IACT,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtC,UAAU,CAAqB;IAEhD,YAAY,OAAkC;QAC1C,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IAC1C,CAAC;IAED,GAAG,CAAC,IAAY;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,IAAkB,EAAE,GAAY;QAC9C,MAAM,YAAY,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;QAC5C,MAAM,SAAS,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,IAAY;QACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACJ"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { FileSource } from './types.js';
|
|
2
|
+
export declare const EXTENSION_TO_MIME: Record<string, string>;
|
|
3
|
+
/** Infers MIME type from file extension (case-insensitive) */
|
|
4
|
+
export declare function inferMediaType(filePath: string): string | undefined;
|
|
5
|
+
export interface FoundFileSource {
|
|
6
|
+
part: FileSource;
|
|
7
|
+
path: (string | number)[];
|
|
8
|
+
}
|
|
9
|
+
/** Recursively scans an input for FileSources and returns them with their JSON paths */
|
|
10
|
+
export declare function scanForFileSources(input: unknown, currentPath?: (string | number)[]): FoundFileSource[];
|
|
11
|
+
export interface ResolveOptions {
|
|
12
|
+
basePath?: string;
|
|
13
|
+
maxSize?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare const DEFAULT_MAX_SIZE: number;
|
|
16
|
+
/**
|
|
17
|
+
* Resolves a FileSource to AI SDK compatible format.
|
|
18
|
+
* Path-based parts are read into Buffer; others returned unchanged.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveFileSource(part: FileSource, options?: ResolveOptions): Promise<FileSource>;
|
|
21
|
+
/** Resolves all FileSources in an input (returns new object, original unchanged) */
|
|
22
|
+
export declare function resolveFileSourcesInInput<T>(input: T, options?: ResolveOptions): Promise<T>;
|
|
23
|
+
export interface FileSourceDisplayInfo {
|
|
24
|
+
source: FileSource['source'];
|
|
25
|
+
description: string;
|
|
26
|
+
mediaType: string;
|
|
27
|
+
filename?: string;
|
|
28
|
+
}
|
|
29
|
+
/** Extracts display info from a FileSource for reporting (excludes raw data) */
|
|
30
|
+
export declare function getFileSourceDisplayInfo(part: FileSource): FileSourceDisplayInfo;
|
|
31
|
+
export declare function getFileSourcesDisplayInfo(input: unknown): FileSourceDisplayInfo[];
|
|
32
|
+
//# sourceMappingURL=file-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-source.d.ts","sourceRoot":"","sources":["../../src/provider/file-source.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAkD,MAAM,YAAY,CAAC;AAExF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgBpD,CAAC;AAEF,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGnE;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7B;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,OAAO,EACd,WAAW,GAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAO,GACtC,eAAe,EAAE,CA+BnB;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,QAAmB,CAAC;AAEjD;;;GAGG;AACH,wBAAsB,iBAAiB,CACnC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,UAAU,CAAC,CAqCrB;AA4BD,oFAAoF;AACpF,wBAAsB,yBAAyB,CAAC,CAAC,EAC7C,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAED,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,qBAAqB,CAuChF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,EAAE,CAGjF"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { FileError, FileErrorCode } from '../errors/index.js';
|
|
4
|
+
import { isFileSource, isFileSourcePath } from './types.js';
|
|
5
|
+
export const EXTENSION_TO_MIME = {
|
|
6
|
+
'.pdf': 'application/pdf',
|
|
7
|
+
'.html': 'text/html',
|
|
8
|
+
'.htm': 'text/html',
|
|
9
|
+
'.txt': 'text/plain',
|
|
10
|
+
'.json': 'application/json',
|
|
11
|
+
'.xml': 'application/xml',
|
|
12
|
+
'.csv': 'text/csv',
|
|
13
|
+
'.png': 'image/png',
|
|
14
|
+
'.jpg': 'image/jpeg',
|
|
15
|
+
'.jpeg': 'image/jpeg',
|
|
16
|
+
'.gif': 'image/gif',
|
|
17
|
+
'.webp': 'image/webp',
|
|
18
|
+
'.svg': 'image/svg+xml',
|
|
19
|
+
'.bmp': 'image/bmp',
|
|
20
|
+
'.zip': 'application/zip',
|
|
21
|
+
};
|
|
22
|
+
/** Infers MIME type from file extension (case-insensitive) */
|
|
23
|
+
export function inferMediaType(filePath) {
|
|
24
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
25
|
+
return EXTENSION_TO_MIME[ext];
|
|
26
|
+
}
|
|
27
|
+
/** Recursively scans an input for FileSources and returns them with their JSON paths */
|
|
28
|
+
export function scanForFileSources(input, currentPath = []) {
|
|
29
|
+
if (isFileSource(input)) {
|
|
30
|
+
return [{ part: input, path: currentPath }];
|
|
31
|
+
}
|
|
32
|
+
if (input === null || typeof input !== 'object') {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
if (Buffer.isBuffer(input) || input instanceof Uint8Array || input instanceof URL) {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
const results = [];
|
|
39
|
+
if (Array.isArray(input)) {
|
|
40
|
+
for (let i = 0; i < input.length; i++) {
|
|
41
|
+
results.push(...scanForFileSources(input[i], [...currentPath, i]));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
for (const key of Object.keys(input)) {
|
|
46
|
+
results.push(...scanForFileSources(input[key], [
|
|
47
|
+
...currentPath,
|
|
48
|
+
key,
|
|
49
|
+
]));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return results;
|
|
53
|
+
}
|
|
54
|
+
export const DEFAULT_MAX_SIZE = 50 * 1024 * 1024;
|
|
55
|
+
/**
|
|
56
|
+
* Resolves a FileSource to AI SDK compatible format.
|
|
57
|
+
* Path-based parts are read into Buffer; others returned unchanged.
|
|
58
|
+
*/
|
|
59
|
+
export async function resolveFileSource(part, options = {}) {
|
|
60
|
+
const { basePath = process.cwd(), maxSize = DEFAULT_MAX_SIZE } = options;
|
|
61
|
+
if (!isFileSourcePath(part)) {
|
|
62
|
+
// data, base64, url - return as-is
|
|
63
|
+
return part;
|
|
64
|
+
}
|
|
65
|
+
// path source - read file and convert to data
|
|
66
|
+
const fullPath = path.isAbsolute(part.path) ? part.path : path.resolve(basePath, part.path);
|
|
67
|
+
const stats = await stat(fullPath).catch((err) => {
|
|
68
|
+
throw new FileError(`File not found: ${part.path}`, {
|
|
69
|
+
code: FileErrorCode.NOT_FOUND,
|
|
70
|
+
context: { path: part.path, fullPath },
|
|
71
|
+
cause: err,
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
if (stats.size > maxSize) {
|
|
75
|
+
throw new FileError(`File too large: ${stats.size} bytes > ${maxSize} bytes`, {
|
|
76
|
+
code: FileErrorCode.TOO_LARGE,
|
|
77
|
+
context: { path: part.path, size: stats.size, maxSize },
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const buffer = await readFile(fullPath);
|
|
81
|
+
const mediaType = part.mediaType ?? inferMediaType(part.path) ?? 'application/octet-stream';
|
|
82
|
+
const filename = part.filename ?? path.basename(part.path);
|
|
83
|
+
const result = {
|
|
84
|
+
source: 'data',
|
|
85
|
+
data: buffer,
|
|
86
|
+
mediaType,
|
|
87
|
+
filename,
|
|
88
|
+
};
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
function deepClone(value) {
|
|
92
|
+
if (value === null || typeof value !== 'object')
|
|
93
|
+
return value;
|
|
94
|
+
if (Buffer.isBuffer(value))
|
|
95
|
+
return Buffer.from(value);
|
|
96
|
+
if (value instanceof URL)
|
|
97
|
+
return new URL(value.href);
|
|
98
|
+
if (value instanceof Uint8Array)
|
|
99
|
+
return new Uint8Array(value);
|
|
100
|
+
if (Array.isArray(value))
|
|
101
|
+
return value.map(deepClone);
|
|
102
|
+
const result = {};
|
|
103
|
+
for (const key of Object.keys(value)) {
|
|
104
|
+
result[key] = deepClone(value[key]);
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
function setAtPath(obj, targetPath, value) {
|
|
109
|
+
if (targetPath.length === 0) {
|
|
110
|
+
return value;
|
|
111
|
+
}
|
|
112
|
+
let current = obj;
|
|
113
|
+
for (let i = 0; i < targetPath.length - 1; i++) {
|
|
114
|
+
current = current[targetPath[i]];
|
|
115
|
+
}
|
|
116
|
+
current[targetPath[targetPath.length - 1]] = value;
|
|
117
|
+
return obj;
|
|
118
|
+
}
|
|
119
|
+
/** Resolves all FileSources in an input (returns new object, original unchanged) */
|
|
120
|
+
export async function resolveFileSourcesInInput(input, options = {}) {
|
|
121
|
+
const found = scanForFileSources(input);
|
|
122
|
+
if (found.length === 0) {
|
|
123
|
+
return input;
|
|
124
|
+
}
|
|
125
|
+
// Resolve all parts in parallel
|
|
126
|
+
const resolved = await Promise.all(found.map(({ part }) => resolveFileSource(part, options)));
|
|
127
|
+
// Special case: if input itself is a FileSource (path = [])
|
|
128
|
+
if (found.length === 1 && found[0].path.length === 0) {
|
|
129
|
+
return resolved[0];
|
|
130
|
+
}
|
|
131
|
+
// Clone and replace in-place
|
|
132
|
+
const result = deepClone(input);
|
|
133
|
+
for (let i = 0; i < found.length; i++) {
|
|
134
|
+
setAtPath(result, found[i].path, resolved[i]);
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
/** Extracts display info from a FileSource for reporting (excludes raw data) */
|
|
139
|
+
export function getFileSourceDisplayInfo(part) {
|
|
140
|
+
switch (part.source) {
|
|
141
|
+
case 'path':
|
|
142
|
+
return {
|
|
143
|
+
source: 'path',
|
|
144
|
+
description: part.path,
|
|
145
|
+
mediaType: part.mediaType ?? inferMediaType(part.path) ?? 'unknown',
|
|
146
|
+
filename: part.filename ?? path.basename(part.path),
|
|
147
|
+
};
|
|
148
|
+
case 'url':
|
|
149
|
+
return {
|
|
150
|
+
source: 'url',
|
|
151
|
+
description: part.url,
|
|
152
|
+
mediaType: part.mediaType ?? 'unknown',
|
|
153
|
+
filename: part.filename,
|
|
154
|
+
};
|
|
155
|
+
case 'base64': {
|
|
156
|
+
const sizeKB = ((part.data.length * 3) / 4 / 1024).toFixed(1);
|
|
157
|
+
return {
|
|
158
|
+
source: 'base64',
|
|
159
|
+
description: `[base64 data, ~${sizeKB}KB]`,
|
|
160
|
+
mediaType: part.mediaType,
|
|
161
|
+
filename: part.filename,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
case 'data': {
|
|
165
|
+
const size = Buffer.isBuffer(part.data) ? part.data.length : part.data.length;
|
|
166
|
+
const sizeKB = (size / 1024).toFixed(1);
|
|
167
|
+
return {
|
|
168
|
+
source: 'data',
|
|
169
|
+
description: `[Buffer, ${sizeKB}KB]`,
|
|
170
|
+
mediaType: part.mediaType,
|
|
171
|
+
filename: part.filename,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
export function getFileSourcesDisplayInfo(input) {
|
|
177
|
+
const found = scanForFileSources(input);
|
|
178
|
+
return found.map(({ part }) => getFileSourceDisplayInfo(part));
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=file-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-source.js","sourceRoot":"","sources":["../../src/provider/file-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FilePart, ImagePart } from 'ai';
|
|
2
|
+
export declare function isImageMediaType(mediaType: string): boolean;
|
|
3
|
+
export declare function bufferToBlob(buffer: Uint8Array, type?: string): Blob;
|
|
4
|
+
export declare function createPartFromURI(uri: string, mediaType: string): FilePart | ImagePart;
|
|
5
|
+
//# sourceMappingURL=file-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/provider/file-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE9C,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAMpE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAMtF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function isImageMediaType(mediaType) {
|
|
2
|
+
return mediaType.startsWith('image/');
|
|
3
|
+
}
|
|
4
|
+
export function bufferToBlob(buffer, type) {
|
|
5
|
+
const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
|
6
|
+
return new Blob([arrayBuffer], { type });
|
|
7
|
+
}
|
|
8
|
+
export function createPartFromURI(uri, mediaType) {
|
|
9
|
+
const url = new URL(uri);
|
|
10
|
+
if (isImageMediaType(mediaType)) {
|
|
11
|
+
return { type: 'image', image: url, mediaType };
|
|
12
|
+
}
|
|
13
|
+
return { type: 'file', data: url, mediaType };
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=file-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/provider/file-utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAC9C,OAAO,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAkB,EAAE,IAAa;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CACnC,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CACzB,CAAC;IACjB,OAAO,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,SAAiB;IAC5D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { type GoogleGenerativeAIProviderOptions } from '@ai-sdk/google';
|
|
2
|
+
import type { Logger } from '../../observability/logger.js';
|
|
3
|
+
import type { ProviderPricing } from '../../pricing/index.js';
|
|
4
|
+
import type { GenerationOptions } from '../../session/index.js';
|
|
5
|
+
import { SimpleSession } from '../../session/simple-session.js';
|
|
6
|
+
import { StreamingSession } from '../../session/streaming-session.js';
|
|
7
|
+
import { BaseProvider } from '../base-provider.js';
|
|
8
|
+
import type { FileCache } from '../types.js';
|
|
9
|
+
export type HarmCategory = 'HARM_CATEGORY_HATE_SPEECH' | 'HARM_CATEGORY_SEXUALLY_EXPLICIT' | 'HARM_CATEGORY_DANGEROUS_CONTENT' | 'HARM_CATEGORY_HARASSMENT' | 'HARM_CATEGORY_CIVIC_INTEGRITY';
|
|
10
|
+
export type HarmBlockThreshold = 'BLOCK_NONE' | 'BLOCK_ONLY_HIGH' | 'BLOCK_MEDIUM_AND_ABOVE' | 'BLOCK_LOW_AND_ABOVE' | 'OFF';
|
|
11
|
+
export interface SafetySetting {
|
|
12
|
+
category: HarmCategory;
|
|
13
|
+
threshold: HarmBlockThreshold;
|
|
14
|
+
}
|
|
15
|
+
export interface GoogleProviderConfig {
|
|
16
|
+
apiKey: string;
|
|
17
|
+
safetySettings?: SafetySetting[];
|
|
18
|
+
}
|
|
19
|
+
interface GoogleProviderState {
|
|
20
|
+
apiKey: string;
|
|
21
|
+
defaultModelId: string | null;
|
|
22
|
+
logger: Logger;
|
|
23
|
+
safetySettings?: SafetySetting[];
|
|
24
|
+
pricingConfig?: ProviderPricing;
|
|
25
|
+
defaultOptions?: GoogleGenerativeAIProviderOptions;
|
|
26
|
+
searchEnabled: boolean;
|
|
27
|
+
urlContextEnabled: boolean;
|
|
28
|
+
fileCache?: FileCache;
|
|
29
|
+
defaultGenOptions?: GenerationOptions;
|
|
30
|
+
}
|
|
31
|
+
export declare class GoogleProvider extends BaseProvider {
|
|
32
|
+
private readonly config;
|
|
33
|
+
private readonly google;
|
|
34
|
+
constructor(config: GoogleProviderState);
|
|
35
|
+
withDefaultModel(modelId: string): GoogleProvider;
|
|
36
|
+
withLogger(newLogger: Logger): GoogleProvider;
|
|
37
|
+
withPricing(pricing: ProviderPricing): GoogleProvider;
|
|
38
|
+
/**
|
|
39
|
+
* Set default provider-specific options for all LLM calls.
|
|
40
|
+
* These options will be deep-merged with per-call providerOptions.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* createGoogleProvider({ apiKey: 'xxx' })
|
|
45
|
+
* .withDefaultModel('gemini-2.0-flash-thinking-exp')
|
|
46
|
+
* .withDefaultOptions({
|
|
47
|
+
* thinkingConfig: { includeThoughts: true, thinkingLevel: 'low' }
|
|
48
|
+
* })
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
withDefaultOptions(options: GoogleGenerativeAIProviderOptions): GoogleProvider;
|
|
52
|
+
withDefaultGenerationOptions(options: GenerationOptions): GoogleProvider;
|
|
53
|
+
/**
|
|
54
|
+
* Enable Google Search grounding for all LLM calls.
|
|
55
|
+
* Allows the model to access real-time web information.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* createGoogleProvider({ apiKey: 'xxx' })
|
|
60
|
+
* .withDefaultModel('gemini-2.5-flash')
|
|
61
|
+
* .withSearchEnabled()
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
withSearchEnabled(): GoogleProvider;
|
|
65
|
+
/**
|
|
66
|
+
* Enable URL Context grounding for all LLM calls.
|
|
67
|
+
* Allows the model to retrieve and use content from URLs in the prompt.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* createGoogleProvider({ apiKey: 'xxx' })
|
|
72
|
+
* .withDefaultModel('gemini-2.5-flash')
|
|
73
|
+
* .withUrlContextEnabled()
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
withUrlContextEnabled(): GoogleProvider;
|
|
77
|
+
/**
|
|
78
|
+
* Set a file cache for reusing uploaded files across sessions.
|
|
79
|
+
* If no cache is provided, creates a new InMemoryFileCache.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* // Use default InMemoryFileCache
|
|
84
|
+
* createGoogleProvider({ apiKey: 'xxx' })
|
|
85
|
+
* .withFileCache()
|
|
86
|
+
*
|
|
87
|
+
* // Use custom cache with TTL
|
|
88
|
+
* const cache = new InMemoryFileCache({ defaultTTL: 3600000 });
|
|
89
|
+
* createGoogleProvider({ apiKey: 'xxx' })
|
|
90
|
+
* .withFileCache(cache)
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
withFileCache(cache?: FileCache): GoogleProvider;
|
|
94
|
+
private getSessionConfig;
|
|
95
|
+
protected createStreamingSession<TEvent extends {
|
|
96
|
+
type: string;
|
|
97
|
+
}>(signal?: AbortSignal): StreamingSession<TEvent>;
|
|
98
|
+
protected createSimpleSession(signal?: AbortSignal): SimpleSession;
|
|
99
|
+
/**
|
|
100
|
+
* Type assertion needed because @ai-sdk/google's type signature doesn't
|
|
101
|
+
* include the second parameter, but it's supported at runtime.
|
|
102
|
+
*/
|
|
103
|
+
private createModel;
|
|
104
|
+
}
|
|
105
|
+
export declare function createGoogleProvider(config: GoogleProviderConfig): GoogleProvider;
|
|
106
|
+
export type { GoogleGenerativeAIProviderOptions } from '@ai-sdk/google';
|
|
107
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/provider/google/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAClG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,MAAM,YAAY,GAClB,2BAA2B,GAC3B,iCAAiC,GACjC,iCAAiC,GACjC,0BAA0B,GAC1B,+BAA+B,CAAC;AAEtC,MAAM,MAAM,kBAAkB,GACxB,YAAY,GACZ,iBAAiB,GACjB,wBAAwB,GACxB,qBAAqB,GACrB,KAAK,CAAC;AAEZ,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CACpC;AAED,UAAU,mBAAmB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,cAAc,CAAC,EAAE,iCAAiC,CAAC;IACnD,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACzC;AAED,qBAAa,cAAe,SAAQ,YAAY;IAGhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;IAErE,YAA6B,MAAM,EAAE,mBAAmB,EAGvD;IAED,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAEhD;IAED,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAE5C;IAED,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAGpD;IAED;;;;;;;;;;;;OAYG;IACH,kBAAkB,CAAC,OAAO,EAAE,iCAAiC,GAAG,cAAc,CAE7E;IAED,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAEvE;IAED;;;;;;;;;;OAUG;IACH,iBAAiB,IAAI,cAAc,CAElC;IAED;;;;;;;;;;OAUG;IACH,qBAAqB,IAAI,cAAc,CAEtC;IAED;;;;;;;;;;;;;;;OAeG;IACH,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,cAAc,CAE/C;IAED,OAAO,CAAC,gBAAgB;IA0BxB,SAAS,CAAC,sBAAsB,CAC5B,MAAM,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EACjC,MAAM,CAAC,EAAE,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAEhD;IAED,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,aAAa,CAEjE;IAED;;;OAGG;IACH,OAAO,CAAC,WAAW;CAWtB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CASjF;AAGD,YAAY,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { createGoogleGenerativeAI } from '@ai-sdk/google';
|
|
2
|
+
import { noopLogger } from '../../observability/logger.js';
|
|
3
|
+
import { validateProviderPricing } from '../../pricing/index.js';
|
|
4
|
+
import { GoogleFileManager } from './file-manager.js';
|
|
5
|
+
import { SimpleSession } from '../../session/simple-session.js';
|
|
6
|
+
import { StreamingSession } from '../../session/streaming-session.js';
|
|
7
|
+
import { BaseProvider } from '../base-provider.js';
|
|
8
|
+
import { InMemoryFileCache } from '../file-cache.js';
|
|
9
|
+
export class GoogleProvider extends BaseProvider {
|
|
10
|
+
config;
|
|
11
|
+
google;
|
|
12
|
+
constructor(config) {
|
|
13
|
+
super();
|
|
14
|
+
this.config = config;
|
|
15
|
+
this.google = createGoogleGenerativeAI({ apiKey: config.apiKey });
|
|
16
|
+
}
|
|
17
|
+
withDefaultModel(modelId) {
|
|
18
|
+
return new GoogleProvider({ ...this.config, defaultModelId: modelId });
|
|
19
|
+
}
|
|
20
|
+
withLogger(newLogger) {
|
|
21
|
+
return new GoogleProvider({ ...this.config, logger: newLogger });
|
|
22
|
+
}
|
|
23
|
+
withPricing(pricing) {
|
|
24
|
+
validateProviderPricing(pricing, 'google');
|
|
25
|
+
return new GoogleProvider({ ...this.config, pricingConfig: pricing });
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Set default provider-specific options for all LLM calls.
|
|
29
|
+
* These options will be deep-merged with per-call providerOptions.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* createGoogleProvider({ apiKey: 'xxx' })
|
|
34
|
+
* .withDefaultModel('gemini-2.0-flash-thinking-exp')
|
|
35
|
+
* .withDefaultOptions({
|
|
36
|
+
* thinkingConfig: { includeThoughts: true, thinkingLevel: 'low' }
|
|
37
|
+
* })
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
withDefaultOptions(options) {
|
|
41
|
+
return new GoogleProvider({ ...this.config, defaultOptions: options });
|
|
42
|
+
}
|
|
43
|
+
withDefaultGenerationOptions(options) {
|
|
44
|
+
return new GoogleProvider({ ...this.config, defaultGenOptions: options });
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Enable Google Search grounding for all LLM calls.
|
|
48
|
+
* Allows the model to access real-time web information.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* createGoogleProvider({ apiKey: 'xxx' })
|
|
53
|
+
* .withDefaultModel('gemini-2.5-flash')
|
|
54
|
+
* .withSearchEnabled()
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
withSearchEnabled() {
|
|
58
|
+
return new GoogleProvider({ ...this.config, searchEnabled: true });
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Enable URL Context grounding for all LLM calls.
|
|
62
|
+
* Allows the model to retrieve and use content from URLs in the prompt.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* createGoogleProvider({ apiKey: 'xxx' })
|
|
67
|
+
* .withDefaultModel('gemini-2.5-flash')
|
|
68
|
+
* .withUrlContextEnabled()
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
withUrlContextEnabled() {
|
|
72
|
+
return new GoogleProvider({ ...this.config, urlContextEnabled: true });
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Set a file cache for reusing uploaded files across sessions.
|
|
76
|
+
* If no cache is provided, creates a new InMemoryFileCache.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* // Use default InMemoryFileCache
|
|
81
|
+
* createGoogleProvider({ apiKey: 'xxx' })
|
|
82
|
+
* .withFileCache()
|
|
83
|
+
*
|
|
84
|
+
* // Use custom cache with TTL
|
|
85
|
+
* const cache = new InMemoryFileCache({ defaultTTL: 3600000 });
|
|
86
|
+
* createGoogleProvider({ apiKey: 'xxx' })
|
|
87
|
+
* .withFileCache(cache)
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
withFileCache(cache) {
|
|
91
|
+
return new GoogleProvider({ ...this.config, fileCache: cache ?? new InMemoryFileCache() });
|
|
92
|
+
}
|
|
93
|
+
getSessionConfig() {
|
|
94
|
+
const { searchEnabled, urlContextEnabled } = this.config;
|
|
95
|
+
const defaultTools = {
|
|
96
|
+
...(searchEnabled && { google_search: this.google.tools.googleSearch({}) }),
|
|
97
|
+
...(urlContextEnabled && { url_context: this.google.tools.urlContext({}) }),
|
|
98
|
+
};
|
|
99
|
+
const hasDefaultTools = searchEnabled || urlContextEnabled;
|
|
100
|
+
return {
|
|
101
|
+
defaultLanguageModel: this.config.defaultModelId
|
|
102
|
+
? this.createModel(this.config.defaultModelId)
|
|
103
|
+
: null,
|
|
104
|
+
modelFactory: (modelId) => this.createModel(modelId),
|
|
105
|
+
providerType: 'google',
|
|
106
|
+
providerPricing: this.config.pricingConfig,
|
|
107
|
+
fileManager: new GoogleFileManager(this.config.apiKey, { cache: this.config.fileCache }),
|
|
108
|
+
logger: this.config.logger,
|
|
109
|
+
defaultProviderOptions: this.config.defaultOptions
|
|
110
|
+
? { google: this.config.defaultOptions }
|
|
111
|
+
: undefined,
|
|
112
|
+
defaultTools: hasDefaultTools ? defaultTools : undefined,
|
|
113
|
+
defaultGenerationOptions: this.config.defaultGenOptions,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
createStreamingSession(signal) {
|
|
117
|
+
return new StreamingSession({ ...this.getSessionConfig(), signal });
|
|
118
|
+
}
|
|
119
|
+
createSimpleSession(signal) {
|
|
120
|
+
return new SimpleSession({ ...this.getSessionConfig(), signal });
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Type assertion needed because @ai-sdk/google's type signature doesn't
|
|
124
|
+
* include the second parameter, but it's supported at runtime.
|
|
125
|
+
*/
|
|
126
|
+
createModel(modelId) {
|
|
127
|
+
if (this.config.safetySettings) {
|
|
128
|
+
return this.google(modelId, { safetySettings: this.config.safetySettings });
|
|
129
|
+
}
|
|
130
|
+
return this.google(modelId);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export function createGoogleProvider(config) {
|
|
134
|
+
return new GoogleProvider({
|
|
135
|
+
apiKey: config.apiKey,
|
|
136
|
+
defaultModelId: null,
|
|
137
|
+
logger: noopLogger,
|
|
138
|
+
safetySettings: config.safetySettings,
|
|
139
|
+
searchEnabled: false,
|
|
140
|
+
urlContextEnabled: false,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/provider/google/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseFileManager } from '../base-file-manager.js';
|
|
2
|
+
import type { FileManagerOptions, FileSource, FileSourceUrl, UploadedFile } from '../types.js';
|
|
3
|
+
/** Google GenAI File API implementation with automatic session cleanup */
|
|
4
|
+
export declare class GoogleFileManager extends BaseFileManager {
|
|
5
|
+
private client;
|
|
6
|
+
constructor(apiKey: string, options?: FileManagerOptions);
|
|
7
|
+
protected uploadToProvider(source: Exclude<FileSource, FileSourceUrl>, index: number): Promise<UploadedFile>;
|
|
8
|
+
protected deleteFromProvider(fileId: string): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=file-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-manager.d.ts","sourceRoot":"","sources":["../../../src/provider/google/file-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyB/F,0EAA0E;AAC1E,qBAAa,iBAAkB,SAAQ,eAAe;IAClD,OAAO,CAAC,MAAM,CAAc;IAE5B,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,EAGvD;IAED,UAAgB,gBAAgB,CAC5B,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,EAC1C,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,CAmEvB;IAED,UAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE;CACJ"}
|