@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.
Files changed (278) hide show
  1. package/README.md +18 -5
  2. package/dist/errors/index.d.ts +4 -0
  3. package/dist/errors/index.d.ts.map +1 -0
  4. package/dist/errors/index.js +3 -0
  5. package/dist/errors/index.js.map +1 -0
  6. package/dist/errors/types.d.ts +69 -0
  7. package/dist/errors/types.d.ts.map +1 -0
  8. package/dist/errors/types.js +116 -0
  9. package/dist/errors/types.js.map +1 -0
  10. package/dist/errors/utils.d.ts +17 -0
  11. package/dist/errors/utils.d.ts.map +1 -0
  12. package/dist/errors/utils.js +16 -0
  13. package/dist/errors/utils.js.map +1 -0
  14. package/dist/execution/constants.d.ts +7 -0
  15. package/dist/execution/constants.d.ts.map +1 -0
  16. package/dist/execution/constants.js +7 -0
  17. package/dist/execution/constants.js.map +1 -0
  18. package/dist/execution/index.d.ts +8 -0
  19. package/dist/execution/index.d.ts.map +1 -0
  20. package/dist/execution/index.js +7 -0
  21. package/dist/execution/index.js.map +1 -0
  22. package/dist/execution/mapping.d.ts +17 -0
  23. package/dist/execution/mapping.d.ts.map +1 -0
  24. package/dist/execution/mapping.js +197 -0
  25. package/dist/execution/mapping.js.map +1 -0
  26. package/dist/execution/shared.d.ts +86 -0
  27. package/dist/execution/shared.d.ts.map +1 -0
  28. package/dist/execution/shared.js +100 -0
  29. package/dist/execution/shared.js.map +1 -0
  30. package/dist/execution/simple-host.d.ts +56 -0
  31. package/dist/execution/simple-host.d.ts.map +1 -0
  32. package/dist/execution/simple-host.js +126 -0
  33. package/dist/execution/simple-host.js.map +1 -0
  34. package/dist/execution/streaming-host.d.ts +79 -0
  35. package/dist/execution/streaming-host.d.ts.map +1 -0
  36. package/dist/execution/streaming-host.js +276 -0
  37. package/dist/execution/streaming-host.js.map +1 -0
  38. package/dist/execution/testing/fixtures.d.ts +67 -0
  39. package/dist/execution/testing/fixtures.d.ts.map +1 -0
  40. package/dist/execution/testing/fixtures.js +145 -0
  41. package/dist/execution/testing/fixtures.js.map +1 -0
  42. package/dist/execution/testing/helpers.d.ts +218 -0
  43. package/dist/execution/testing/helpers.d.ts.map +1 -0
  44. package/dist/execution/testing/helpers.js +327 -0
  45. package/dist/execution/testing/helpers.js.map +1 -0
  46. package/dist/execution/testing/host-configs.d.ts +56 -0
  47. package/dist/execution/testing/host-configs.d.ts.map +1 -0
  48. package/dist/execution/testing/host-configs.js +154 -0
  49. package/dist/execution/testing/host-configs.js.map +1 -0
  50. package/dist/execution/testing/vitest-assertions.d.ts +102 -0
  51. package/dist/execution/testing/vitest-assertions.d.ts.map +1 -0
  52. package/dist/execution/testing/vitest-assertions.js +142 -0
  53. package/dist/execution/testing/vitest-assertions.js.map +1 -0
  54. package/dist/execution/types.d.ts +432 -0
  55. package/dist/execution/types.d.ts.map +1 -0
  56. package/dist/execution/types.js +2 -0
  57. package/dist/execution/types.js.map +1 -0
  58. package/dist/execution/utils.d.ts +68 -0
  59. package/dist/execution/utils.d.ts.map +1 -0
  60. package/dist/execution/utils.js +93 -0
  61. package/dist/execution/utils.js.map +1 -0
  62. package/dist/index.d.ts +10 -1506
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +9 -2979
  65. package/dist/index.js.map +1 -1
  66. package/dist/observability/index.d.ts +4 -0
  67. package/dist/observability/index.d.ts.map +1 -0
  68. package/dist/observability/index.js +2 -0
  69. package/dist/observability/index.js.map +1 -0
  70. package/dist/observability/logger.d.ts +161 -0
  71. package/dist/observability/logger.d.ts.map +1 -0
  72. package/dist/observability/logger.js +31 -0
  73. package/dist/observability/logger.js.map +1 -0
  74. package/dist/observability/types.d.ts +46 -0
  75. package/dist/observability/types.d.ts.map +1 -0
  76. package/dist/observability/types.js +2 -0
  77. package/dist/observability/types.js.map +1 -0
  78. package/dist/patterns/index.d.ts +2 -0
  79. package/dist/patterns/index.d.ts.map +1 -0
  80. package/dist/patterns/index.js +2 -0
  81. package/dist/patterns/index.js.map +1 -0
  82. package/dist/patterns/progressive/index.d.ts +2 -0
  83. package/dist/patterns/progressive/index.d.ts.map +1 -0
  84. package/dist/patterns/progressive/index.js +2 -0
  85. package/dist/patterns/progressive/index.js.map +1 -0
  86. package/dist/patterns/progressive/progressive-pattern.d.ts +174 -0
  87. package/dist/patterns/progressive/progressive-pattern.d.ts.map +1 -0
  88. package/dist/patterns/progressive/progressive-pattern.js +260 -0
  89. package/dist/patterns/progressive/progressive-pattern.js.map +1 -0
  90. package/dist/pricing/calculator.d.ts +71 -0
  91. package/dist/pricing/calculator.d.ts.map +1 -0
  92. package/dist/pricing/calculator.js +127 -0
  93. package/dist/pricing/calculator.js.map +1 -0
  94. package/dist/pricing/config.d.ts +61 -0
  95. package/dist/pricing/config.d.ts.map +1 -0
  96. package/dist/pricing/config.js +87 -0
  97. package/dist/pricing/config.js.map +1 -0
  98. package/dist/pricing/defaults.d.ts +29 -0
  99. package/dist/pricing/defaults.d.ts.map +1 -0
  100. package/dist/pricing/defaults.js +139 -0
  101. package/dist/pricing/defaults.js.map +1 -0
  102. package/dist/pricing/index.d.ts +40 -0
  103. package/dist/pricing/index.d.ts.map +1 -0
  104. package/dist/pricing/index.js +43 -0
  105. package/dist/pricing/index.js.map +1 -0
  106. package/dist/pricing/types.d.ts +96 -0
  107. package/dist/pricing/types.d.ts.map +1 -0
  108. package/dist/pricing/types.js +7 -0
  109. package/dist/pricing/types.js.map +1 -0
  110. package/dist/pricing/validator.d.ts +55 -0
  111. package/dist/pricing/validator.d.ts.map +1 -0
  112. package/dist/pricing/validator.js +84 -0
  113. package/dist/pricing/validator.js.map +1 -0
  114. package/dist/prompt/errors.d.ts +112 -0
  115. package/dist/prompt/errors.d.ts.map +1 -0
  116. package/dist/prompt/errors.js +174 -0
  117. package/dist/prompt/errors.js.map +1 -0
  118. package/dist/prompt/file-prompt-repository.d.ts +80 -0
  119. package/dist/prompt/file-prompt-repository.d.ts.map +1 -0
  120. package/dist/prompt/file-prompt-repository.js +287 -0
  121. package/dist/prompt/file-prompt-repository.js.map +1 -0
  122. package/dist/prompt/index.d.ts +34 -0
  123. package/dist/prompt/index.d.ts.map +1 -0
  124. package/dist/prompt/index.js +37 -0
  125. package/dist/prompt/index.js.map +1 -0
  126. package/dist/prompt/prompt-template.d.ts +64 -0
  127. package/dist/prompt/prompt-template.d.ts.map +1 -0
  128. package/dist/prompt/prompt-template.js +90 -0
  129. package/dist/prompt/prompt-template.js.map +1 -0
  130. package/dist/prompt/template.d.ts +23 -0
  131. package/dist/prompt/template.d.ts.map +1 -0
  132. package/dist/prompt/template.js +70 -0
  133. package/dist/prompt/template.js.map +1 -0
  134. package/dist/prompt/types.d.ts +148 -0
  135. package/dist/prompt/types.d.ts.map +1 -0
  136. package/dist/prompt/types.js +7 -0
  137. package/dist/prompt/types.js.map +1 -0
  138. package/dist/provider/base-file-manager.d.ts +14 -0
  139. package/dist/provider/base-file-manager.d.ts.map +1 -0
  140. package/dist/provider/base-file-manager.js +91 -0
  141. package/dist/provider/base-file-manager.js.map +1 -0
  142. package/dist/provider/base-provider.d.ts +41 -0
  143. package/dist/provider/base-provider.d.ts.map +1 -0
  144. package/dist/provider/base-provider.js +21 -0
  145. package/dist/provider/base-provider.js.map +1 -0
  146. package/dist/provider/file-cache.d.ts +14 -0
  147. package/dist/provider/file-cache.d.ts.map +1 -0
  148. package/dist/provider/file-cache.js +29 -0
  149. package/dist/provider/file-cache.js.map +1 -0
  150. package/dist/provider/file-source.d.ts +32 -0
  151. package/dist/provider/file-source.d.ts.map +1 -0
  152. package/dist/provider/file-source.js +180 -0
  153. package/dist/provider/file-source.js.map +1 -0
  154. package/dist/provider/file-utils.d.ts +5 -0
  155. package/dist/provider/file-utils.d.ts.map +1 -0
  156. package/dist/provider/file-utils.js +15 -0
  157. package/dist/provider/file-utils.js.map +1 -0
  158. package/dist/provider/google/factory.d.ts +107 -0
  159. package/dist/provider/google/factory.d.ts.map +1 -0
  160. package/dist/provider/google/factory.js +143 -0
  161. package/dist/provider/google/factory.js.map +1 -0
  162. package/dist/provider/google/file-manager.d.ts +10 -0
  163. package/dist/provider/google/file-manager.d.ts.map +1 -0
  164. package/dist/provider/google/file-manager.js +93 -0
  165. package/dist/provider/google/file-manager.js.map +1 -0
  166. package/dist/provider/google/index.d.ts +8 -0
  167. package/dist/provider/google/index.d.ts.map +1 -0
  168. package/dist/provider/google/index.js +10 -0
  169. package/dist/provider/google/index.js.map +1 -0
  170. package/dist/provider/hash.d.ts +3 -0
  171. package/dist/provider/hash.d.ts.map +1 -0
  172. package/dist/provider/hash.js +34 -0
  173. package/dist/provider/hash.js.map +1 -0
  174. package/dist/provider/index.d.ts +10 -0
  175. package/dist/provider/index.d.ts.map +1 -0
  176. package/dist/provider/index.js +12 -0
  177. package/dist/provider/index.js.map +1 -0
  178. package/dist/provider/noop-file-manager.d.ts +9 -0
  179. package/dist/provider/noop-file-manager.d.ts.map +1 -0
  180. package/dist/provider/noop-file-manager.js +28 -0
  181. package/dist/provider/noop-file-manager.js.map +1 -0
  182. package/dist/provider/openai/factory.d.ts +67 -0
  183. package/dist/provider/openai/factory.d.ts.map +1 -0
  184. package/dist/provider/openai/factory.js +100 -0
  185. package/dist/provider/openai/factory.js.map +1 -0
  186. package/dist/provider/openai/file-manager.d.ts +17 -0
  187. package/dist/provider/openai/file-manager.d.ts.map +1 -0
  188. package/dist/provider/openai/file-manager.js +108 -0
  189. package/dist/provider/openai/file-manager.js.map +1 -0
  190. package/dist/provider/openai/index.d.ts +8 -0
  191. package/dist/provider/openai/index.d.ts.map +1 -0
  192. package/dist/provider/openai/index.js +8 -0
  193. package/dist/provider/openai/index.js.map +1 -0
  194. package/dist/provider/types.d.ts +105 -0
  195. package/dist/provider/types.d.ts.map +1 -0
  196. package/dist/provider/types.js +19 -0
  197. package/dist/provider/types.js.map +1 -0
  198. package/dist/session/index.d.ts +7 -0
  199. package/dist/session/index.d.ts.map +1 -0
  200. package/dist/session/index.js +5 -0
  201. package/dist/session/index.js.map +1 -0
  202. package/dist/session/simple-session.d.ts +98 -0
  203. package/dist/session/simple-session.d.ts.map +1 -0
  204. package/dist/session/simple-session.js +299 -0
  205. package/dist/session/simple-session.js.map +1 -0
  206. package/dist/session/streaming-session.d.ts +90 -0
  207. package/dist/session/streaming-session.d.ts.map +1 -0
  208. package/dist/session/streaming-session.js +151 -0
  209. package/dist/session/streaming-session.js.map +1 -0
  210. package/dist/session/test-utils.d.ts +19 -0
  211. package/dist/session/test-utils.d.ts.map +1 -0
  212. package/dist/session/test-utils.js +65 -0
  213. package/dist/session/test-utils.js.map +1 -0
  214. package/dist/session/types.d.ts +219 -0
  215. package/dist/session/types.d.ts.map +1 -0
  216. package/dist/session/types.js +181 -0
  217. package/dist/session/types.js.map +1 -0
  218. package/dist/session/usage-extractors.d.ts +7 -0
  219. package/dist/session/usage-extractors.d.ts.map +1 -0
  220. package/dist/session/usage-extractors.js +71 -0
  221. package/dist/session/usage-extractors.js.map +1 -0
  222. package/dist/testing/fixtures.d.ts +34 -0
  223. package/dist/testing/fixtures.d.ts.map +1 -0
  224. package/dist/testing/fixtures.js +65 -0
  225. package/dist/testing/fixtures.js.map +1 -0
  226. package/dist/testing/helpers.d.ts +20 -0
  227. package/dist/testing/helpers.d.ts.map +1 -0
  228. package/dist/testing/helpers.js +32 -0
  229. package/dist/testing/helpers.js.map +1 -0
  230. package/dist/testing/index.d.ts +7 -519
  231. package/dist/testing/index.d.ts.map +1 -0
  232. package/dist/testing/index.js +21 -2123
  233. package/dist/testing/index.js.map +1 -1
  234. package/dist/testing/mock-provider.d.ts +79 -0
  235. package/dist/testing/mock-provider.d.ts.map +1 -0
  236. package/dist/testing/mock-provider.js +152 -0
  237. package/dist/testing/mock-provider.js.map +1 -0
  238. package/dist/testing/mock.d.ts +29 -0
  239. package/dist/testing/mock.d.ts.map +1 -0
  240. package/dist/testing/mock.js +154 -0
  241. package/dist/testing/mock.js.map +1 -0
  242. package/dist/testing/test-execution.d.ts +14 -0
  243. package/dist/testing/test-execution.d.ts.map +1 -0
  244. package/dist/testing/test-execution.js +108 -0
  245. package/dist/testing/test-execution.js.map +1 -0
  246. package/dist/utils/deep-merge.d.ts +6 -0
  247. package/dist/utils/deep-merge.d.ts.map +1 -0
  248. package/dist/utils/deep-merge.js +24 -0
  249. package/dist/utils/deep-merge.js.map +1 -0
  250. package/dist/validation/errors.d.ts +28 -0
  251. package/dist/validation/errors.d.ts.map +1 -0
  252. package/dist/validation/errors.js +38 -0
  253. package/dist/validation/errors.js.map +1 -0
  254. package/dist/validation/index.d.ts +5 -0
  255. package/dist/validation/index.d.ts.map +1 -0
  256. package/dist/validation/index.js +4 -0
  257. package/dist/validation/index.js.map +1 -0
  258. package/dist/validation/types.d.ts +49 -0
  259. package/dist/validation/types.d.ts.map +1 -0
  260. package/dist/validation/types.js +2 -0
  261. package/dist/validation/types.js.map +1 -0
  262. package/dist/validation/validation-history.d.ts +12 -0
  263. package/dist/validation/validation-history.d.ts.map +1 -0
  264. package/dist/validation/validation-history.js +29 -0
  265. package/dist/validation/validation-history.js.map +1 -0
  266. package/dist/validation/with-validation.d.ts +38 -0
  267. package/dist/validation/with-validation.d.ts.map +1 -0
  268. package/dist/validation/with-validation.js +58 -0
  269. package/dist/validation/with-validation.js.map +1 -0
  270. package/package.json +71 -75
  271. package/dist/base-provider-2TTw5HAa.d.cts +0 -1254
  272. package/dist/base-provider-2TTw5HAa.d.ts +0 -1254
  273. package/dist/index.cjs +0 -3085
  274. package/dist/index.cjs.map +0 -1
  275. package/dist/index.d.cts +0 -1506
  276. package/dist/testing/index.cjs +0 -2167
  277. package/dist/testing/index.cjs.map +0 -1
  278. 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAA8B,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAExF,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACrD,MAAM,EAAE,iBAAiB;IACzB,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,iBAAiB;CAC5B,CAAC;AAEF,8DAA8D;AAC9D,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAOD,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAC9B,KAAc,EACd,WAAW,GAAwB,EAAE;IAErC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QAChF,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CACR,GAAG,kBAAkB,CAAE,KAAiC,CAAC,GAAG,CAAC,EAAE;gBAC3D,GAAG,WAAW;gBACd,GAAG;aACN,CAAC,CACL,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAOD,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,IAAgB,EAChB,OAAO,GAAmB,EAAE;IAE5B,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAEzE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,mCAAmC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5F,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7C,MAAM,IAAI,SAAS,CAAC,mBAAmB,IAAI,CAAC,IAAI,EAAE,EAAE;YAChD,IAAI,EAAE,aAAa,CAAC,SAAS;YAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;YACtC,KAAK,EAAE,GAAG;SACb,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,SAAS,CAAC,mBAAmB,KAAK,CAAC,IAAI,YAAY,OAAO,QAAQ,EAAE;YAC1E,IAAI,EAAE,aAAa,CAAC,SAAS;YAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE;SAC1D,CAAC,CAAC;IACP,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC;IAC5F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAmB;QAC3B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,SAAS;QACT,QAAQ;KACX,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAI,KAAQ;IAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAM,CAAC;IAC3D,IAAI,KAAK,YAAY,GAAG;QAAE,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC1D,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,IAAI,UAAU,CAAC,KAAK,CAAM,CAAC;IACnE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAM,CAAC;IAE3D,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,MAAW,CAAC;AACvB,CAAC;AAED,SAAS,SAAS,CAAC,GAAY,EAAE,UAA+B,EAAE,KAAc;IAC5E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,GAAG,GAAuC,CAAC;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAqC,CAAC;IACzE,CAAC;IACD,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACnD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,KAAQ,EACR,OAAO,GAAmB,EAAE;IAE5B,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAExC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,gCAAgC;IAChC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9F,4DAA4D;IAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,QAAQ,CAAC,CAAC,CAAM,CAAC;IAC5B,CAAC;IAED,6BAA6B;IAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AASD,gFAAgF;AAChF,MAAM,UAAU,wBAAwB,CAAC,IAAgB;IACrD,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,MAAM;YACP,OAAO;gBACH,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,IAAI,CAAC,IAAI;gBACtB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS;gBACnE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;aACtD,CAAC;QAEN,KAAK,KAAK;YACN,OAAO;gBACH,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,CAAC,GAAG;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,SAAS;gBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B,CAAC;QAEN,KAAK,QAAQ,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9D,OAAO;gBACH,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,kBAAkB,MAAM,KAAK;gBAC1C,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B,CAAC;QACN,CAAC;QAED,KAAK,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC9E,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO;gBACH,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,YAAY,MAAM,KAAK;gBACpC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B,CAAC;QACN,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACpD,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -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"}