@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,105 @@
1
+ import type { FilePart, ImagePart } from 'ai';
2
+ import type { ExecutionOptions, SessionEvent, SimpleExecution, StreamingExecution } from '../execution/index.js';
3
+ import type { Logger } from '../observability/logger.js';
4
+ import type { ProviderPricing } from '../pricing/index.js';
5
+ import { SimpleSession, StreamingSession } from '../session/index.js';
6
+ import type { GenerationOptions } from '../session/index.js';
7
+ /** Result of uploading a file to a provider's file storage */
8
+ export interface UploadedFile {
9
+ /** Unique identifier from the provider (used for deletion, null for external URLs) */
10
+ id: string | null;
11
+ /** AI SDK part ready for use in prompts */
12
+ part: FilePart | ImagePart;
13
+ }
14
+ /** Provider-agnostic file manager interface for upload/delete operations */
15
+ export interface FileManager {
16
+ upload(files: FileSource[]): Promise<UploadedFile[]>;
17
+ delete(fileId: string): Promise<void>;
18
+ clear(): Promise<void>;
19
+ getUploadedFiles(): UploadedFile[];
20
+ }
21
+ /** Cache for uploaded files to prevent duplicate uploads */
22
+ export interface FileCache {
23
+ get(hash: string): UploadedFile | null;
24
+ set(hash: string, file: UploadedFile, ttl?: number): void;
25
+ delete(hash: string): void;
26
+ clear(): void;
27
+ }
28
+ export interface FileManagerOptions {
29
+ cache?: FileCache;
30
+ }
31
+ export interface FileSourcePath {
32
+ source: 'path';
33
+ path: string;
34
+ mediaType?: string;
35
+ filename?: string;
36
+ hash?: string;
37
+ }
38
+ export interface FileSourceData {
39
+ source: 'data';
40
+ data: Buffer | Uint8Array;
41
+ mediaType: string;
42
+ filename?: string;
43
+ hash?: string;
44
+ }
45
+ export interface FileSourceBase64 {
46
+ source: 'base64';
47
+ data: string;
48
+ mediaType: string;
49
+ filename?: string;
50
+ hash?: string;
51
+ }
52
+ export interface FileSourceUrl {
53
+ source: 'url';
54
+ url: string;
55
+ mediaType?: string;
56
+ filename?: string;
57
+ hash?: string;
58
+ }
59
+ /** Union of all file part types. Use `source` to discriminate. */
60
+ export type FileSource = FileSourcePath | FileSourceData | FileSourceBase64 | FileSourceUrl;
61
+ export declare function isFileSource(v: unknown): v is FileSource;
62
+ export declare function isFileSourcePath(v: FileSource): v is FileSourcePath;
63
+ export declare function isFileSourceData(v: FileSource): v is FileSourceData;
64
+ export declare function isFileSourceBase64(v: FileSource): v is FileSourceBase64;
65
+ export declare function isFileSourceUrl(v: FileSource): v is FileSourceUrl;
66
+ /** Provider interface with fluent configuration for AI model operations */
67
+ export interface Provider {
68
+ withDefaultModel(modelId: string): Provider;
69
+ withLogger(logger: Logger): Provider;
70
+ withPricing(pricing: ProviderPricing): Provider;
71
+ /**
72
+ * Set default provider-specific options for all LLM calls.
73
+ * These options will be deep-merged with per-call providerOptions.
74
+ * The actual options type depends on the provider (Google, OpenAI, etc.).
75
+ */
76
+ withDefaultOptions(options: Record<string, unknown>): Provider;
77
+ /**
78
+ * Set default generation options (standard AI SDK parameters) for all LLM calls.
79
+ * Per-call parameters override these defaults.
80
+ */
81
+ withDefaultGenerationOptions(options: GenerationOptions): Provider;
82
+ streamingExecution<TEvent extends {
83
+ type: string;
84
+ }>(generator: (session: StreamingSession<TEvent>) => AsyncGenerator<SessionEvent<TEvent>, SessionEvent<TEvent> | Promise<SessionEvent<TEvent>>>, options?: ExecutionOptions): StreamingExecution<TEvent>;
85
+ /**
86
+ * Execute a non-streaming function with the provider.
87
+ * Returns immediately (sync) - execution starts in the background.
88
+ *
89
+ * Breaking change: Previously returned Promise<Execution<TResult>>.
90
+ * Now returns SimpleExecution<TResult> directly (no await needed).
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * // Before (v1.x):
95
+ * const execution = provider.simpleExecution(fn);
96
+ *
97
+ * // After (v2.x):
98
+ * const execution = provider.simpleExecution(fn);
99
+ * execution.cancel(); // Can cancel in-progress LLM calls
100
+ * const result = await execution.result();
101
+ * ```
102
+ */
103
+ simpleExecution<TResult>(fn: (session: SimpleSession) => Promise<TResult>, options?: ExecutionOptions): SimpleExecution<TResult>;
104
+ }
105
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/provider/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ const FILE_SOURCE_TYPES = new Set(['path', 'data', 'base64', 'url']);
2
+ export function isFileSource(v) {
3
+ return (typeof v === 'object' &&
4
+ v !== null &&
5
+ FILE_SOURCE_TYPES.has(v.source));
6
+ }
7
+ export function isFileSourcePath(v) {
8
+ return v.source === 'path';
9
+ }
10
+ export function isFileSourceData(v) {
11
+ return v.source === 'data';
12
+ }
13
+ export function isFileSourceBase64(v) {
14
+ return v.source === 'base64';
15
+ }
16
+ export function isFileSourceUrl(v) {
17
+ return v.source === 'url';
18
+ }
19
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/provider/types.ts"],"names":[],"mappings":"AAsFA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAErE,MAAM,UAAU,YAAY,CAAC,CAAU;IACnC,OAAO,CACH,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,IAAI;QACV,iBAAiB,CAAC,GAAG,CAAE,CAA6B,CAAC,MAAgB,CAAC,CACzE,CAAC;AACN,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAa;IAC1C,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAa;IAC1C,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAa;IAC5C,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAa;IACzC,OAAO,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './types.js';
2
+ export type { GenerationOptions } from './types.js';
3
+ export type { ProviderType } from './usage-extractors.js';
4
+ export { mergeUsages, createZeroUsage, detectProviderType } from './usage-extractors.js';
5
+ export { SimpleSession, type SimpleSessionOptions } from './simple-session.js';
6
+ export { StreamingSession, createStreamingSession, type StreamingSessionOptions, type CreateStreamingSessionOptions, type StreamingSessionInternal, } from './streaming-session.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEzF,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EACH,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,GAChC,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './types.js';
2
+ export { mergeUsages, createZeroUsage, detectProviderType } from './usage-extractors.js';
3
+ export { SimpleSession } from './simple-session.js';
4
+ export { StreamingSession, createStreamingSession, } from './streaming-session.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAK3B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEzF,OAAO,EAAE,aAAa,EAA6B,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EACH,gBAAgB,EAChB,sBAAsB,GAIzB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,98 @@
1
+ import type { LanguageModel, ToolSet } from 'ai';
2
+ import type { Logger } from '../observability/logger.js';
3
+ import type { FileManager } from '../provider/types.js';
4
+ import type { ProviderType, ProviderPricing } from '../pricing/types.js';
5
+ import { SessionSummary, type DefaultOutput, type GenerateTextParams, type GenerateTextResultTyped, type GenerationOptions, type StreamTextParams, type StreamTextResultTyped, type LLMCallRecord, type LLMCallType, type ToolCallSummary, type OutputSpec, type AdditionalCost } from './types.js';
6
+ /**
7
+ * Provider-specific options type.
8
+ * Maps provider names (e.g., 'google', 'openai') to their option objects.
9
+ */
10
+ type ProviderOptions = Record<string, Record<string, unknown>>;
11
+ export interface SimpleSessionOptions {
12
+ defaultLanguageModel?: LanguageModel | null;
13
+ modelFactory?: (modelId: string) => LanguageModel;
14
+ providerType: ProviderType;
15
+ providerPricing?: ProviderPricing;
16
+ fileManager: FileManager;
17
+ logger?: Logger;
18
+ startTime?: number;
19
+ /**
20
+ * AbortSignal for cancelling AI SDK calls.
21
+ * When aborted, ongoing generateText/streamText calls will be cancelled.
22
+ */
23
+ signal?: AbortSignal;
24
+ /**
25
+ * Default provider-specific options to apply to all LLM calls.
26
+ * These will be deep-merged with per-call providerOptions (per-call takes precedence).
27
+ */
28
+ defaultProviderOptions?: ProviderOptions;
29
+ /**
30
+ * Default tools to apply to all LLM calls (e.g., google_search, url_context).
31
+ * These will be merged with per-call tools (per-call takes precedence).
32
+ */
33
+ defaultTools?: ToolSet;
34
+ /**
35
+ * Default generation options (standard AI SDK parameters) for all LLM calls.
36
+ * Per-call parameters override these defaults via simple spread.
37
+ */
38
+ defaultGenerationOptions?: GenerationOptions;
39
+ }
40
+ export declare class SimpleSession {
41
+ private readonly defaultLanguageModel;
42
+ private readonly modelFactory;
43
+ private readonly providerType;
44
+ private readonly providerPricing;
45
+ private readonly defaultProviderOptions;
46
+ private readonly defaultTools;
47
+ private readonly defaultGenerationOptions;
48
+ private readonly _fileManager;
49
+ private readonly logger;
50
+ private readonly sessionStartTime;
51
+ private readonly signal?;
52
+ private summary;
53
+ private readonly pendingUsagePromises;
54
+ private readonly onDoneFns;
55
+ constructor(options: SimpleSessionOptions);
56
+ private getModel;
57
+ private extractModelId;
58
+ generateText<TOOLS extends ToolSet = {}, OUTPUT extends OutputSpec = DefaultOutput>(params: GenerateTextParams<TOOLS, OUTPUT>): Promise<GenerateTextResultTyped<TOOLS, OUTPUT>>;
59
+ streamText<TOOLS extends ToolSet = {}, OUTPUT extends OutputSpec = DefaultOutput>(params: StreamTextParams<TOOLS, OUTPUT>): StreamTextResultTyped<TOOLS, OUTPUT>;
60
+ get fileManager(): FileManager;
61
+ record(data: Record<string, unknown>): void;
62
+ recordToolCall(toolCallSummary: ToolCallSummary): void;
63
+ recordLLMCall(record: Omit<LLMCallRecord, 'type'> & {
64
+ type?: LLMCallType;
65
+ }): void;
66
+ recordAdditionalCost(cost: Omit<AdditionalCost, 'timestamp'>): void;
67
+ setMetadata(key: string, value: unknown): void;
68
+ setMetadata(data: Record<string, unknown>): void;
69
+ private updateSummaryWithLLMCall;
70
+ onDone(fn: () => Promise<void> | void): void;
71
+ runOnDoneHooks(): Promise<void>;
72
+ getSummary(): Promise<SessionSummary>;
73
+ /**
74
+ * Notifies Logger of execution start.
75
+ * @internal Called by SimpleExecutionHost - not intended for direct use.
76
+ */
77
+ notifyExecutionStart(): void;
78
+ /**
79
+ * Notifies Logger of execution completion with result data and summary.
80
+ * @param data - The execution result data
81
+ * @param startTime - Execution start timestamp for duration calculation
82
+ * @internal Called by SimpleExecutionHost - not intended for direct use.
83
+ */
84
+ notifyExecutionDone<T>(data: T, startTime: number): Promise<void>;
85
+ /**
86
+ * Notifies Logger of execution error with error details and summary (if available).
87
+ * Gracefully handles getSummary() failures - summary will be undefined if it fails.
88
+ * @param error - The error that occurred
89
+ * @param startTime - Execution start timestamp for duration calculation
90
+ * @internal Called by SimpleExecutionHost - not intended for direct use.
91
+ */
92
+ notifyExecutionError(error: Error, startTime: number): Promise<void>;
93
+ protected get _logger(): Logger;
94
+ protected get _startTime(): number;
95
+ protected get _modelId(): string;
96
+ }
97
+ export {};
98
+ //# sourceMappingURL=simple-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-session.d.ts","sourceRoot":"","sources":["../../src/session/simple-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,299 @@
1
+ import { generateText as aiGenerateText, streamText as aiStreamText, } from 'ai';
2
+ import { deepMerge } from '../utils/deep-merge.js';
3
+ import { noopLogger } from '../observability/logger.js';
4
+ import { calculateTotalCost } from '../pricing/calculator.js';
5
+ import { SessionSummary, } from './types.js';
6
+ import { mergeUsages, createZeroUsage } from './usage-extractors.js';
7
+ export class SimpleSession {
8
+ defaultLanguageModel;
9
+ modelFactory;
10
+ providerType;
11
+ providerPricing;
12
+ defaultProviderOptions;
13
+ defaultTools;
14
+ defaultGenerationOptions;
15
+ _fileManager;
16
+ logger;
17
+ sessionStartTime;
18
+ signal;
19
+ summary;
20
+ pendingUsagePromises = [];
21
+ onDoneFns = [];
22
+ constructor(options) {
23
+ this.defaultLanguageModel = options.defaultLanguageModel ?? null;
24
+ this.modelFactory = options.modelFactory ?? null;
25
+ this.providerType = options.providerType;
26
+ this.providerPricing = options.providerPricing;
27
+ this.defaultProviderOptions = options.defaultProviderOptions;
28
+ this.defaultTools = options.defaultTools;
29
+ this.defaultGenerationOptions = options.defaultGenerationOptions;
30
+ this._fileManager = options.fileManager;
31
+ this.logger = options.logger ?? noopLogger;
32
+ this.sessionStartTime = options.startTime ?? Date.now();
33
+ this.signal = options.signal;
34
+ this.summary = SessionSummary.empty(this.sessionStartTime);
35
+ }
36
+ getModel(requestedModelId) {
37
+ if (requestedModelId) {
38
+ if (!this.modelFactory) {
39
+ throw new Error(`Model '${requestedModelId}' requested but no modelFactory provided. ` +
40
+ `Either use the default model or configure the provider with modelFactory.`);
41
+ }
42
+ return this.modelFactory(requestedModelId);
43
+ }
44
+ if (!this.defaultLanguageModel) {
45
+ throw new Error('No model specified and no default model set. ' +
46
+ 'Either specify a model in the call or configure the provider with withDefaultModel().');
47
+ }
48
+ return this.defaultLanguageModel;
49
+ }
50
+ extractModelId(model) {
51
+ const modelWithId = model;
52
+ if (!modelWithId.modelId) {
53
+ console.warn('[SimpleSession] Model does not have modelId property, using "unknown". ' +
54
+ 'This may affect cost tracking accuracy.');
55
+ }
56
+ return modelWithId.modelId ?? 'unknown';
57
+ }
58
+ async generateText(params) {
59
+ const callStartTime = Date.now();
60
+ const { model: requestedModel, providerOptions, tools, ...restParams } = params;
61
+ const languageModel = this.getModel(requestedModel);
62
+ const modelId = this.extractModelId(languageModel);
63
+ const mergedProviderOptions = (this.defaultProviderOptions || providerOptions)
64
+ ? deepMerge(this.defaultProviderOptions ?? {}, providerOptions ?? {})
65
+ : undefined;
66
+ const mergedTools = (this.defaultTools || tools)
67
+ ? { ...this.defaultTools, ...tools }
68
+ : undefined;
69
+ this.logger.onLLMCallStart?.({
70
+ type: 'llm_call_start',
71
+ callType: 'generateText',
72
+ modelId,
73
+ timestamp: callStartTime,
74
+ request: { params: restParams },
75
+ });
76
+ try {
77
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
78
+ const result = await aiGenerateText({
79
+ ...this.defaultGenerationOptions,
80
+ ...restParams,
81
+ tools: mergedTools,
82
+ providerOptions: mergedProviderOptions,
83
+ model: languageModel,
84
+ abortSignal: this.signal,
85
+ });
86
+ const callEndTime = Date.now();
87
+ const call = {
88
+ startTime: callStartTime,
89
+ endTime: callEndTime,
90
+ duration: callEndTime - callStartTime,
91
+ usage: result.usage ?? createZeroUsage(),
92
+ type: 'generateText',
93
+ model: modelId,
94
+ provider: this.providerType,
95
+ };
96
+ this.updateSummaryWithLLMCall(call);
97
+ this.logger.onLLMCallEnd?.({
98
+ type: 'llm_call_end',
99
+ callType: 'generateText',
100
+ modelId,
101
+ timestamp: callEndTime,
102
+ response: {
103
+ duration: callEndTime - callStartTime,
104
+ usage: result.usage,
105
+ raw: result,
106
+ },
107
+ });
108
+ return result;
109
+ }
110
+ catch (error) {
111
+ const callEndTime = Date.now();
112
+ this.logger.onLLMCallEnd?.({
113
+ type: 'llm_call_end',
114
+ callType: 'generateText',
115
+ modelId,
116
+ timestamp: callEndTime,
117
+ response: {
118
+ duration: callEndTime - callStartTime,
119
+ raw: null,
120
+ error: error instanceof Error ? error : new Error(String(error)),
121
+ },
122
+ });
123
+ throw error;
124
+ }
125
+ }
126
+ streamText(params) {
127
+ const callStartTime = Date.now();
128
+ const { model: requestedModel, providerOptions, tools, ...restParams } = params;
129
+ const languageModel = this.getModel(requestedModel);
130
+ const modelId = this.extractModelId(languageModel);
131
+ const mergedProviderOptions = (this.defaultProviderOptions || providerOptions)
132
+ ? deepMerge(this.defaultProviderOptions ?? {}, providerOptions ?? {})
133
+ : undefined;
134
+ const mergedTools = (this.defaultTools || tools)
135
+ ? { ...this.defaultTools, ...tools }
136
+ : undefined;
137
+ this.logger.onLLMCallStart?.({
138
+ type: 'llm_call_start',
139
+ callType: 'streamText',
140
+ modelId,
141
+ timestamp: callStartTime,
142
+ request: { params: restParams },
143
+ });
144
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
145
+ const result = aiStreamText({
146
+ ...this.defaultGenerationOptions,
147
+ ...restParams,
148
+ tools: mergedTools,
149
+ providerOptions: mergedProviderOptions,
150
+ model: languageModel,
151
+ abortSignal: this.signal,
152
+ });
153
+ const usagePromise = Promise.resolve(result.usage).then((usage) => {
154
+ const callEndTime = Date.now();
155
+ const call = {
156
+ startTime: callStartTime,
157
+ endTime: callEndTime,
158
+ duration: callEndTime - callStartTime,
159
+ usage: usage ?? createZeroUsage(),
160
+ type: 'streamText',
161
+ model: modelId,
162
+ provider: this.providerType,
163
+ };
164
+ this.updateSummaryWithLLMCall(call);
165
+ this.logger.onLLMCallEnd?.({
166
+ type: 'llm_call_end',
167
+ callType: 'streamText',
168
+ modelId,
169
+ timestamp: callEndTime,
170
+ response: {
171
+ duration: callEndTime - callStartTime,
172
+ usage,
173
+ raw: result,
174
+ },
175
+ });
176
+ return usage;
177
+ });
178
+ this.pendingUsagePromises.push(usagePromise);
179
+ return result;
180
+ }
181
+ get fileManager() {
182
+ return this._fileManager;
183
+ }
184
+ record(data) {
185
+ this.summary = this.summary.withCustomRecord(data);
186
+ }
187
+ recordToolCall(toolCallSummary) {
188
+ this.summary = this.summary.withToolCall(toolCallSummary);
189
+ }
190
+ recordLLMCall(record) {
191
+ const call = {
192
+ ...record,
193
+ type: record.type ?? 'manual',
194
+ };
195
+ this.updateSummaryWithLLMCall(call);
196
+ }
197
+ recordAdditionalCost(cost) {
198
+ this.summary = this.summary.withAdditionalCost({
199
+ ...cost,
200
+ timestamp: Date.now(),
201
+ });
202
+ }
203
+ setMetadata(keyOrData, value) {
204
+ if (typeof keyOrData === 'string') {
205
+ this.summary = this.summary.withMetadata(keyOrData, value);
206
+ }
207
+ else {
208
+ for (const [k, v] of Object.entries(keyOrData)) {
209
+ this.summary = this.summary.withMetadata(k, v);
210
+ }
211
+ }
212
+ }
213
+ updateSummaryWithLLMCall(call) {
214
+ const newCalls = [...this.summary.llmCalls, call];
215
+ const { totalCost: llmCost, costByModel } = calculateTotalCost(newCalls.map((c) => ({ usage: c.usage, model: c.model, provider: c.provider })), this.providerPricing);
216
+ const newTotalUsage = mergeUsages(newCalls.map((c) => c.usage));
217
+ this.summary = this.summary.withLLMCall(call, llmCost, costByModel, newTotalUsage);
218
+ }
219
+ onDone(fn) {
220
+ this.onDoneFns.push(fn);
221
+ }
222
+ async runOnDoneHooks() {
223
+ const reversedHooks = [...this.onDoneFns].reverse();
224
+ for (const fn of reversedHooks) {
225
+ try {
226
+ await fn();
227
+ }
228
+ catch (error) {
229
+ console.error('[SimpleSession] onDone hook error:', error);
230
+ }
231
+ }
232
+ }
233
+ async getSummary() {
234
+ await Promise.all(this.pendingUsagePromises);
235
+ return this.summary;
236
+ }
237
+ /**
238
+ * Notifies Logger of execution start.
239
+ * @internal Called by SimpleExecutionHost - not intended for direct use.
240
+ */
241
+ notifyExecutionStart() {
242
+ this._logger.onExecutionStart?.({
243
+ type: 'execution_start',
244
+ timestamp: Date.now(),
245
+ });
246
+ }
247
+ /**
248
+ * Notifies Logger of execution completion with result data and summary.
249
+ * @param data - The execution result data
250
+ * @param startTime - Execution start timestamp for duration calculation
251
+ * @internal Called by SimpleExecutionHost - not intended for direct use.
252
+ */
253
+ async notifyExecutionDone(data, startTime) {
254
+ const summary = await this.getSummary();
255
+ this._logger.onExecutionDone?.({
256
+ type: 'execution_done',
257
+ timestamp: Date.now(),
258
+ duration: Date.now() - startTime,
259
+ data,
260
+ summary,
261
+ });
262
+ }
263
+ /**
264
+ * Notifies Logger of execution error with error details and summary (if available).
265
+ * Gracefully handles getSummary() failures - summary will be undefined if it fails.
266
+ * @param error - The error that occurred
267
+ * @param startTime - Execution start timestamp for duration calculation
268
+ * @internal Called by SimpleExecutionHost - not intended for direct use.
269
+ */
270
+ async notifyExecutionError(error, startTime) {
271
+ let summary;
272
+ try {
273
+ summary = await this.getSummary();
274
+ }
275
+ catch {
276
+ // Ignore summary errors on failure path
277
+ }
278
+ this._logger.onExecutionError?.({
279
+ type: 'execution_error',
280
+ timestamp: Date.now(),
281
+ duration: Date.now() - startTime,
282
+ error,
283
+ summary,
284
+ });
285
+ }
286
+ get _logger() {
287
+ return this.logger;
288
+ }
289
+ get _startTime() {
290
+ return this.sessionStartTime;
291
+ }
292
+ get _modelId() {
293
+ if (!this.defaultLanguageModel) {
294
+ return 'unknown';
295
+ }
296
+ return this.extractModelId(this.defaultLanguageModel);
297
+ }
298
+ }
299
+ //# sourceMappingURL=simple-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-session.js","sourceRoot":"","sources":["../../src/session/simple-session.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,IAAI,cAAc,EAC9B,UAAU,IAAI,YAAY,GAC3B,MAAM,IAAI,CAAC;AAMZ,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,cAAc,GAYf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAsCrE,MAAM,OAAO,aAAa;IACP,oBAAoB,CAAuB;IAC3C,YAAY,CAA8C;IAC1D,YAAY,CAAe;IAC3B,eAAe,CAA8B;IAC7C,sBAAsB,CAA8B;IACpD,YAAY,CAAsB;IAClC,wBAAwB,CAAgC;IACxD,YAAY,CAAc;IAC1B,MAAM,CAAS;IACf,gBAAgB,CAAS;IACzB,MAAM,CAAe;IAE9B,OAAO,CAAkB;IAChB,oBAAoB,GAA8C,EAAE,CAAC;IAErE,SAAS,GAAsC,EAAE,CAAC;IAEnE,YAAY,OAA6B;QACvC,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC;QACjE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAC7D,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;QACjE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7D,CAAC;IAEO,QAAQ,CAAC,gBAAyB;QACxC,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CACb,UAAU,gBAAgB,4CAA4C;oBACtE,2EAA2E,CAC5E,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,+CAA+C;gBAC/C,uFAAuF,CACxF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAEO,cAAc,CAAC,KAAoB;QACzC,MAAM,WAAW,GAAG,KAAwC,CAAC;QAC7D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,yEAAyE;gBACvE,yCAAyC,CAC5C,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC,OAAO,IAAI,SAAS,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,YAAY,CAIhB,MAAyC;QAEzC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;QAChF,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAEnD,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,eAAe,CAAC;YAC5E,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,EAAE,eAAe,IAAI,EAAE,CAAoB;YACxF,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;YAC9C,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK,EAAE;YACpC,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3B,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,cAAc;YACxB,OAAO;YACP,SAAS,EAAE,aAAa;YACxB,OAAO,EAAE,EAAE,MAAM,EAAE,UAAqC,EAAE;SAC3D,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,GAAG,IAAI,CAAC,wBAAwB;gBAChC,GAAG,UAAU;gBACb,KAAK,EAAE,WAAW;gBAClB,eAAe,EAAE,qBAAqB;gBACtC,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,IAAI,CAAC,MAAM;aAClB,CAAC,CAAC;YACV,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE/B,MAAM,IAAI,GAAkB;gBAC1B,SAAS,EAAE,aAAa;gBACxB,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,WAAW,GAAG,aAAa;gBACrC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,eAAe,EAAE;gBACxC,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE,IAAI,CAAC,YAAY;aAC5B,CAAC;YACF,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACzB,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,cAAc;gBACxB,OAAO;gBACP,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE;oBACR,QAAQ,EAAE,WAAW,GAAG,aAAa;oBACrC,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,GAAG,EAAE,MAAM;iBACZ;aACF,CAAC,CAAC;YAEH,OAAO,MAA2D,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE/B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACzB,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,cAAc;gBACxB,OAAO;gBACP,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE;oBACR,QAAQ,EAAE,WAAW,GAAG,aAAa;oBACrC,GAAG,EAAE,IAAI;oBACT,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjE;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,UAAU,CAGR,MAAuC;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;QAChF,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAEnD,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,eAAe,CAAC;YAC5E,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,EAAE,eAAe,IAAI,EAAE,CAAoB;YACxF,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;YAC9C,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK,EAAE;YACpC,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3B,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,YAAY;YACtB,OAAO;YACP,SAAS,EAAE,aAAa;YACxB,OAAO,EAAE,EAAE,MAAM,EAAE,UAAqC,EAAE;SAC3D,CAAC,CAAC;QAEH,8DAA8D;QAC9D,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,GAAG,IAAI,CAAC,wBAAwB;YAChC,GAAG,UAAU;YACb,KAAK,EAAE,WAAW;YAClB,eAAe,EAAE,qBAAqB;YACtC,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,IAAI,CAAC,MAAM;SAClB,CAAC,CAAC;QAEV,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YAChE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE/B,MAAM,IAAI,GAAkB;gBAC1B,SAAS,EAAE,aAAa;gBACxB,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,WAAW,GAAG,aAAa;gBACrC,KAAK,EAAE,KAAK,IAAI,eAAe,EAAE;gBACjC,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE,IAAI,CAAC,YAAY;aAC5B,CAAC;YACF,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACzB,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,YAAY;gBACtB,OAAO;gBACP,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE;oBACR,QAAQ,EAAE,WAAW,GAAG,aAAa;oBACrC,KAAK;oBACL,GAAG,EAAE,MAAM;iBACZ;aACF,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE7C,OAAO,MAAyD,CAAC;IACnE,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,IAA6B;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,cAAc,CAAC,eAAgC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAC5D,CAAC;IAED,aAAa,CAAC,MAA4D;QACxE,MAAM,IAAI,GAAkB;YAC1B,GAAG,MAAM;YACT,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,QAAQ;SAC9B,CAAC;QACF,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,oBAAoB,CAAC,IAAuC;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;YAC7C,GAAG,IAAI;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAID,WAAW,CAAC,SAA2C,EAAE,KAAe;QACtE,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,wBAAwB,CAAC,IAAmB;QAClD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAC5D,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAC/E,IAAI,CAAC,eAAe,CACrB,CAAC;QACF,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,CAAC,EAA8B;QACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAEpD,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,EAAE,EAAE,CAAC;YACb,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,oBAAoB;QAClB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC9B,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB,CAAI,IAAO,EAAE,SAAiB;QACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,IAAI;YACJ,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CAAC,KAAY,EAAE,SAAiB;QACxD,IAAI,OAAmC,CAAC;QACxC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC9B,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,KAAK;YACL,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,IAAc,OAAO;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAc,UAAU;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAc,QAAQ;QACpB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxD,CAAC;CACF"}