@agtlantis/core 0.4.1 → 0.5.1

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 (265) hide show
  1. package/dist/errors/index.d.ts +4 -0
  2. package/dist/errors/index.d.ts.map +1 -0
  3. package/dist/errors/index.js +3 -0
  4. package/dist/errors/index.js.map +1 -0
  5. package/dist/errors/types.d.ts +69 -0
  6. package/dist/errors/types.d.ts.map +1 -0
  7. package/dist/errors/types.js +119 -0
  8. package/dist/errors/types.js.map +1 -0
  9. package/dist/errors/utils.d.ts +17 -0
  10. package/dist/errors/utils.d.ts.map +1 -0
  11. package/dist/errors/utils.js +16 -0
  12. package/dist/errors/utils.js.map +1 -0
  13. package/dist/execution/constants.d.ts +7 -0
  14. package/dist/execution/constants.d.ts.map +1 -0
  15. package/dist/execution/constants.js +7 -0
  16. package/dist/execution/constants.js.map +1 -0
  17. package/dist/execution/index.d.ts +8 -0
  18. package/dist/execution/index.d.ts.map +1 -0
  19. package/dist/execution/index.js +7 -0
  20. package/dist/execution/index.js.map +1 -0
  21. package/dist/execution/mapping.d.ts +17 -0
  22. package/dist/execution/mapping.d.ts.map +1 -0
  23. package/dist/execution/mapping.js +197 -0
  24. package/dist/execution/mapping.js.map +1 -0
  25. package/dist/execution/shared.d.ts +86 -0
  26. package/dist/execution/shared.d.ts.map +1 -0
  27. package/dist/execution/shared.js +100 -0
  28. package/dist/execution/shared.js.map +1 -0
  29. package/dist/execution/simple-host.d.ts +56 -0
  30. package/dist/execution/simple-host.d.ts.map +1 -0
  31. package/dist/execution/simple-host.js +126 -0
  32. package/dist/execution/simple-host.js.map +1 -0
  33. package/dist/execution/streaming-host.d.ts +79 -0
  34. package/dist/execution/streaming-host.d.ts.map +1 -0
  35. package/dist/execution/streaming-host.js +276 -0
  36. package/dist/execution/streaming-host.js.map +1 -0
  37. package/dist/execution/testing/fixtures.d.ts +67 -0
  38. package/dist/execution/testing/fixtures.d.ts.map +1 -0
  39. package/dist/execution/testing/fixtures.js +145 -0
  40. package/dist/execution/testing/fixtures.js.map +1 -0
  41. package/dist/execution/testing/helpers.d.ts +218 -0
  42. package/dist/execution/testing/helpers.d.ts.map +1 -0
  43. package/dist/execution/testing/helpers.js +327 -0
  44. package/dist/execution/testing/helpers.js.map +1 -0
  45. package/dist/execution/testing/host-configs.d.ts +56 -0
  46. package/dist/execution/testing/host-configs.d.ts.map +1 -0
  47. package/dist/execution/testing/host-configs.js +154 -0
  48. package/dist/execution/testing/host-configs.js.map +1 -0
  49. package/dist/execution/testing/vitest-assertions.d.ts +102 -0
  50. package/dist/execution/testing/vitest-assertions.d.ts.map +1 -0
  51. package/dist/execution/testing/vitest-assertions.js +142 -0
  52. package/dist/execution/testing/vitest-assertions.js.map +1 -0
  53. package/dist/execution/types.d.ts +432 -0
  54. package/dist/execution/types.d.ts.map +1 -0
  55. package/dist/execution/types.js +2 -0
  56. package/dist/execution/types.js.map +1 -0
  57. package/dist/execution/utils.d.ts +68 -0
  58. package/dist/execution/utils.d.ts.map +1 -0
  59. package/dist/execution/utils.js +93 -0
  60. package/dist/execution/utils.js.map +1 -0
  61. package/dist/index.d.ts +10 -1502
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +9 -3081
  64. package/dist/index.js.map +1 -1
  65. package/dist/observability/index.d.ts +4 -0
  66. package/dist/observability/index.d.ts.map +1 -0
  67. package/dist/observability/index.js +2 -0
  68. package/dist/observability/index.js.map +1 -0
  69. package/dist/observability/logger.d.ts +161 -0
  70. package/dist/observability/logger.d.ts.map +1 -0
  71. package/dist/observability/logger.js +31 -0
  72. package/dist/observability/logger.js.map +1 -0
  73. package/dist/observability/types.d.ts +46 -0
  74. package/dist/observability/types.d.ts.map +1 -0
  75. package/dist/observability/types.js +2 -0
  76. package/dist/observability/types.js.map +1 -0
  77. package/dist/patterns/index.d.ts +2 -0
  78. package/dist/patterns/index.d.ts.map +1 -0
  79. package/dist/patterns/index.js +2 -0
  80. package/dist/patterns/index.js.map +1 -0
  81. package/dist/patterns/progressive/index.d.ts +2 -0
  82. package/dist/patterns/progressive/index.d.ts.map +1 -0
  83. package/dist/patterns/progressive/index.js +2 -0
  84. package/dist/patterns/progressive/index.js.map +1 -0
  85. package/dist/patterns/progressive/progressive-pattern.d.ts +174 -0
  86. package/dist/patterns/progressive/progressive-pattern.d.ts.map +1 -0
  87. package/dist/patterns/progressive/progressive-pattern.js +260 -0
  88. package/dist/patterns/progressive/progressive-pattern.js.map +1 -0
  89. package/dist/pricing/calculator.d.ts +71 -0
  90. package/dist/pricing/calculator.d.ts.map +1 -0
  91. package/dist/pricing/calculator.js +127 -0
  92. package/dist/pricing/calculator.js.map +1 -0
  93. package/dist/pricing/config.d.ts +61 -0
  94. package/dist/pricing/config.d.ts.map +1 -0
  95. package/dist/pricing/config.js +87 -0
  96. package/dist/pricing/config.js.map +1 -0
  97. package/dist/pricing/defaults.d.ts +29 -0
  98. package/dist/pricing/defaults.d.ts.map +1 -0
  99. package/dist/pricing/defaults.js +139 -0
  100. package/dist/pricing/defaults.js.map +1 -0
  101. package/dist/pricing/index.d.ts +40 -0
  102. package/dist/pricing/index.d.ts.map +1 -0
  103. package/dist/pricing/index.js +43 -0
  104. package/dist/pricing/index.js.map +1 -0
  105. package/dist/pricing/types.d.ts +96 -0
  106. package/dist/pricing/types.d.ts.map +1 -0
  107. package/dist/pricing/types.js +7 -0
  108. package/dist/pricing/types.js.map +1 -0
  109. package/dist/pricing/validator.d.ts +55 -0
  110. package/dist/pricing/validator.d.ts.map +1 -0
  111. package/dist/pricing/validator.js +84 -0
  112. package/dist/pricing/validator.js.map +1 -0
  113. package/dist/prompt/errors.d.ts +112 -0
  114. package/dist/prompt/errors.d.ts.map +1 -0
  115. package/dist/prompt/errors.js +175 -0
  116. package/dist/prompt/errors.js.map +1 -0
  117. package/dist/prompt/file-prompt-repository.d.ts +80 -0
  118. package/dist/prompt/file-prompt-repository.d.ts.map +1 -0
  119. package/dist/prompt/file-prompt-repository.js +287 -0
  120. package/dist/prompt/file-prompt-repository.js.map +1 -0
  121. package/dist/prompt/index.d.ts +34 -0
  122. package/dist/prompt/index.d.ts.map +1 -0
  123. package/dist/prompt/index.js +37 -0
  124. package/dist/prompt/index.js.map +1 -0
  125. package/dist/prompt/prompt-template.d.ts +64 -0
  126. package/dist/prompt/prompt-template.d.ts.map +1 -0
  127. package/dist/prompt/prompt-template.js +90 -0
  128. package/dist/prompt/prompt-template.js.map +1 -0
  129. package/dist/prompt/template.d.ts +23 -0
  130. package/dist/prompt/template.d.ts.map +1 -0
  131. package/dist/prompt/template.js +70 -0
  132. package/dist/prompt/template.js.map +1 -0
  133. package/dist/prompt/types.d.ts +148 -0
  134. package/dist/prompt/types.d.ts.map +1 -0
  135. package/dist/prompt/types.js +7 -0
  136. package/dist/prompt/types.js.map +1 -0
  137. package/dist/provider/base-provider.d.ts +41 -0
  138. package/dist/provider/base-provider.d.ts.map +1 -0
  139. package/dist/provider/base-provider.js +21 -0
  140. package/dist/provider/base-provider.js.map +1 -0
  141. package/dist/provider/file-cache.d.ts +14 -0
  142. package/dist/provider/file-cache.d.ts.map +1 -0
  143. package/dist/provider/file-cache.js +29 -0
  144. package/dist/provider/file-cache.js.map +1 -0
  145. package/dist/provider/file-source.d.ts +32 -0
  146. package/dist/provider/file-source.d.ts.map +1 -0
  147. package/dist/provider/file-source.js +180 -0
  148. package/dist/provider/file-source.js.map +1 -0
  149. package/dist/provider/google/factory.d.ts +107 -0
  150. package/dist/provider/google/factory.d.ts.map +1 -0
  151. package/dist/provider/google/factory.js +143 -0
  152. package/dist/provider/google/factory.js.map +1 -0
  153. package/dist/provider/google/file-manager.d.ts +14 -0
  154. package/dist/provider/google/file-manager.d.ts.map +1 -0
  155. package/dist/provider/google/file-manager.js +183 -0
  156. package/dist/provider/google/file-manager.js.map +1 -0
  157. package/dist/provider/google/index.d.ts +8 -0
  158. package/dist/provider/google/index.d.ts.map +1 -0
  159. package/dist/provider/google/index.js +10 -0
  160. package/dist/provider/google/index.js.map +1 -0
  161. package/dist/provider/hash.d.ts +3 -0
  162. package/dist/provider/hash.d.ts.map +1 -0
  163. package/dist/provider/hash.js +34 -0
  164. package/dist/provider/hash.js.map +1 -0
  165. package/dist/provider/index.d.ts +9 -0
  166. package/dist/provider/index.d.ts.map +1 -0
  167. package/dist/provider/index.js +11 -0
  168. package/dist/provider/index.js.map +1 -0
  169. package/dist/provider/noop-file-manager.d.ts +9 -0
  170. package/dist/provider/noop-file-manager.d.ts.map +1 -0
  171. package/dist/provider/noop-file-manager.js +28 -0
  172. package/dist/provider/noop-file-manager.js.map +1 -0
  173. package/dist/provider/openai/factory.d.ts +67 -0
  174. package/dist/provider/openai/factory.d.ts.map +1 -0
  175. package/dist/provider/openai/factory.js +95 -0
  176. package/dist/provider/openai/factory.js.map +1 -0
  177. package/dist/provider/openai/index.d.ts +7 -0
  178. package/dist/provider/openai/index.d.ts.map +1 -0
  179. package/dist/provider/openai/index.js +7 -0
  180. package/dist/provider/openai/index.js.map +1 -0
  181. package/dist/provider/types.d.ts +105 -0
  182. package/dist/provider/types.d.ts.map +1 -0
  183. package/dist/provider/types.js +19 -0
  184. package/dist/provider/types.js.map +1 -0
  185. package/dist/session/index.d.ts +7 -0
  186. package/dist/session/index.d.ts.map +1 -0
  187. package/dist/session/index.js +5 -0
  188. package/dist/session/index.js.map +1 -0
  189. package/dist/session/simple-session.d.ts +98 -0
  190. package/dist/session/simple-session.d.ts.map +1 -0
  191. package/dist/session/simple-session.js +299 -0
  192. package/dist/session/simple-session.js.map +1 -0
  193. package/dist/session/streaming-session.d.ts +90 -0
  194. package/dist/session/streaming-session.d.ts.map +1 -0
  195. package/dist/session/streaming-session.js +151 -0
  196. package/dist/session/streaming-session.js.map +1 -0
  197. package/dist/session/test-utils.d.ts +19 -0
  198. package/dist/session/test-utils.d.ts.map +1 -0
  199. package/dist/session/test-utils.js +65 -0
  200. package/dist/session/test-utils.js.map +1 -0
  201. package/dist/session/types.d.ts +219 -0
  202. package/dist/session/types.d.ts.map +1 -0
  203. package/dist/session/types.js +181 -0
  204. package/dist/session/types.js.map +1 -0
  205. package/dist/session/usage-extractors.d.ts +7 -0
  206. package/dist/session/usage-extractors.d.ts.map +1 -0
  207. package/dist/session/usage-extractors.js +71 -0
  208. package/dist/session/usage-extractors.js.map +1 -0
  209. package/dist/testing/fixtures.d.ts +34 -0
  210. package/dist/testing/fixtures.d.ts.map +1 -0
  211. package/dist/testing/fixtures.js +65 -0
  212. package/dist/testing/fixtures.js.map +1 -0
  213. package/dist/testing/helpers.d.ts +20 -0
  214. package/dist/testing/helpers.d.ts.map +1 -0
  215. package/dist/testing/helpers.js +32 -0
  216. package/dist/testing/helpers.js.map +1 -0
  217. package/dist/testing/index.d.ts +7 -515
  218. package/dist/testing/index.d.ts.map +1 -0
  219. package/dist/testing/index.js +21 -2096
  220. package/dist/testing/index.js.map +1 -1
  221. package/dist/testing/mock-provider.d.ts +79 -0
  222. package/dist/testing/mock-provider.d.ts.map +1 -0
  223. package/dist/testing/mock-provider.js +152 -0
  224. package/dist/testing/mock-provider.js.map +1 -0
  225. package/dist/testing/mock.d.ts +29 -0
  226. package/dist/testing/mock.d.ts.map +1 -0
  227. package/dist/testing/mock.js +154 -0
  228. package/dist/testing/mock.js.map +1 -0
  229. package/dist/testing/test-execution.d.ts +14 -0
  230. package/dist/testing/test-execution.d.ts.map +1 -0
  231. package/dist/testing/test-execution.js +108 -0
  232. package/dist/testing/test-execution.js.map +1 -0
  233. package/dist/utils/deep-merge.d.ts +6 -0
  234. package/dist/utils/deep-merge.d.ts.map +1 -0
  235. package/dist/utils/deep-merge.js +24 -0
  236. package/dist/utils/deep-merge.js.map +1 -0
  237. package/dist/validation/errors.d.ts +28 -0
  238. package/dist/validation/errors.d.ts.map +1 -0
  239. package/dist/validation/errors.js +39 -0
  240. package/dist/validation/errors.js.map +1 -0
  241. package/dist/validation/index.d.ts +5 -0
  242. package/dist/validation/index.d.ts.map +1 -0
  243. package/dist/validation/index.js +4 -0
  244. package/dist/validation/index.js.map +1 -0
  245. package/dist/validation/types.d.ts +49 -0
  246. package/dist/validation/types.d.ts.map +1 -0
  247. package/dist/validation/types.js +2 -0
  248. package/dist/validation/types.js.map +1 -0
  249. package/dist/validation/validation-history.d.ts +12 -0
  250. package/dist/validation/validation-history.d.ts.map +1 -0
  251. package/dist/validation/validation-history.js +29 -0
  252. package/dist/validation/validation-history.js.map +1 -0
  253. package/dist/validation/with-validation.d.ts +38 -0
  254. package/dist/validation/with-validation.d.ts.map +1 -0
  255. package/dist/validation/with-validation.js +58 -0
  256. package/dist/validation/with-validation.js.map +1 -0
  257. package/package.json +72 -78
  258. package/dist/base-provider-C3mFLNiN.d.cts +0 -1236
  259. package/dist/base-provider-C3mFLNiN.d.ts +0 -1236
  260. package/dist/index.cjs +0 -3188
  261. package/dist/index.cjs.map +0 -1
  262. package/dist/index.d.cts +0 -1502
  263. package/dist/testing/index.cjs +0 -2144
  264. package/dist/testing/index.cjs.map +0 -1
  265. package/dist/testing/index.d.cts +0 -516
@@ -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":"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"}
@@ -0,0 +1,90 @@
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 type { GenerationOptions, SessionSummary } from './types.js';
6
+ import { SimpleSession } from './simple-session.js';
7
+ import type { SessionEvent, EmittableEventInput, ExtractResult } from '../execution/types.js';
8
+ type ProviderOptions = Record<string, Record<string, unknown>>;
9
+ export interface StreamingSessionOptions {
10
+ defaultLanguageModel?: LanguageModel | null;
11
+ modelFactory?: (modelId: string) => LanguageModel;
12
+ providerType: ProviderType;
13
+ providerPricing?: ProviderPricing;
14
+ fileManager: FileManager;
15
+ logger?: Logger;
16
+ startTime?: number;
17
+ signal?: AbortSignal;
18
+ defaultProviderOptions?: ProviderOptions;
19
+ defaultTools?: ToolSet;
20
+ defaultGenerationOptions?: GenerationOptions;
21
+ }
22
+ export declare class StreamingSession<TEvent extends {
23
+ type: string;
24
+ }> extends SimpleSession {
25
+ private lastEventTime;
26
+ private _terminated;
27
+ constructor(options: StreamingSessionOptions);
28
+ /**
29
+ * Emits a streaming event with automatically attached metrics.
30
+ *
31
+ * Reserved types ('complete', 'error') throw at runtime - use session.done()
32
+ * or session.fail() instead.
33
+ *
34
+ * @param event - The event to emit (metrics will be added automatically)
35
+ * @returns The complete event with metrics attached
36
+ * @throws Error when attempting to emit reserved types ('complete', 'error')
37
+ */
38
+ emit(event: EmittableEventInput<TEvent>): SessionEvent<TEvent>;
39
+ /**
40
+ * Internal emit method - bypasses reserved type check.
41
+ * Used by done() and fail() to emit terminal events.
42
+ */
43
+ private emitInternal;
44
+ /**
45
+ * Signals successful completion of the streaming execution.
46
+ * Emits a 'complete' event with the result data and session summary.
47
+ * Also triggers Logger.onExecutionDone for observability.
48
+ * @param data - The final result data
49
+ * @returns The complete event with data and summary
50
+ */
51
+ done(data: ExtractResult<TEvent>): Promise<SessionEvent<TEvent>>;
52
+ /**
53
+ * Signals that the streaming execution failed with an error.
54
+ * Emits an 'error' event and triggers Logger.onExecutionError for observability.
55
+ * Gracefully handles getSummary() failures - summary will be undefined if it fails.
56
+ * @param error - The error that caused the failure
57
+ * @param data - Optional partial result data (if any was produced before failure)
58
+ * @returns The error event
59
+ */
60
+ fail(error: Error, data?: ExtractResult<TEvent>): Promise<SessionEvent<TEvent>>;
61
+ private createMetrics;
62
+ }
63
+ export interface StreamingSessionInternal<TEvent extends {
64
+ type: string;
65
+ }> {
66
+ generateText: SimpleSession['generateText'];
67
+ streamText: SimpleSession['streamText'];
68
+ fileManager: FileManager;
69
+ onDone: SimpleSession['onDone'];
70
+ record: SimpleSession['record'];
71
+ recordToolCall: SimpleSession['recordToolCall'];
72
+ emit(event: EmittableEventInput<TEvent>): SessionEvent<TEvent>;
73
+ done(data: ExtractResult<TEvent>): Promise<SessionEvent<TEvent>>;
74
+ fail(error: Error, data?: ExtractResult<TEvent>): Promise<SessionEvent<TEvent>>;
75
+ runOnDoneHooks(): Promise<void>;
76
+ getSummary(): Promise<SessionSummary>;
77
+ }
78
+ export interface CreateStreamingSessionOptions {
79
+ defaultLanguageModel: LanguageModel;
80
+ providerType: ProviderType;
81
+ fileManager: FileManager;
82
+ logger?: Logger;
83
+ startTime?: number;
84
+ signal?: AbortSignal;
85
+ }
86
+ export declare function createStreamingSession<TEvent extends {
87
+ type: string;
88
+ }>(options: CreateStreamingSessionOptions): StreamingSessionInternal<TEvent>;
89
+ export {};
90
+ //# sourceMappingURL=streaming-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-session.d.ts","sourceRoot":"","sources":["../../src/session/streaming-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ import { noopLogger } from '../observability/logger.js';
2
+ import { SimpleSession } from './simple-session.js';
3
+ export class StreamingSession extends SimpleSession {
4
+ lastEventTime;
5
+ _terminated = false;
6
+ constructor(options) {
7
+ super({
8
+ defaultLanguageModel: options.defaultLanguageModel,
9
+ modelFactory: options.modelFactory,
10
+ providerType: options.providerType,
11
+ providerPricing: options.providerPricing,
12
+ fileManager: options.fileManager,
13
+ logger: options.logger,
14
+ startTime: options.startTime,
15
+ signal: options.signal,
16
+ defaultProviderOptions: options.defaultProviderOptions,
17
+ defaultTools: options.defaultTools,
18
+ defaultGenerationOptions: options.defaultGenerationOptions,
19
+ });
20
+ this.lastEventTime = this._startTime;
21
+ this._logger.onExecutionStart?.({
22
+ type: 'execution_start',
23
+ timestamp: Date.now(),
24
+ });
25
+ }
26
+ /**
27
+ * Emits a streaming event with automatically attached metrics.
28
+ *
29
+ * Reserved types ('complete', 'error') throw at runtime - use session.done()
30
+ * or session.fail() instead.
31
+ *
32
+ * @param event - The event to emit (metrics will be added automatically)
33
+ * @returns The complete event with metrics attached
34
+ * @throws Error when attempting to emit reserved types ('complete', 'error')
35
+ */
36
+ emit(event) {
37
+ if (this._terminated) {
38
+ throw new Error('Session already terminated. Cannot call emit() after a terminal operation.');
39
+ }
40
+ // Runtime check: prevent reserved types even when TypeScript is bypassed
41
+ const eventType = event.type;
42
+ if (eventType === 'complete' || eventType === 'error') {
43
+ throw new Error(`Cannot emit reserved type "${eventType}". ` +
44
+ 'Use session.done() for completion or session.fail() for errors.');
45
+ }
46
+ return this.emitInternal(event);
47
+ }
48
+ /**
49
+ * Internal emit method - bypasses reserved type check.
50
+ * Used by done() and fail() to emit terminal events.
51
+ */
52
+ emitInternal(event) {
53
+ const metrics = this.createMetrics();
54
+ const fullEvent = { ...event, metrics };
55
+ this._logger.onExecutionEmit?.({
56
+ type: 'execution_emit',
57
+ event: fullEvent,
58
+ });
59
+ return fullEvent;
60
+ }
61
+ /**
62
+ * Signals successful completion of the streaming execution.
63
+ * Emits a 'complete' event with the result data and session summary.
64
+ * Also triggers Logger.onExecutionDone for observability.
65
+ * @param data - The final result data
66
+ * @returns The complete event with data and summary
67
+ */
68
+ async done(data) {
69
+ if (this._terminated) {
70
+ throw new Error('Session already terminated. Cannot call done() after a terminal operation.');
71
+ }
72
+ this._terminated = true;
73
+ const summary = await this.getSummary();
74
+ this._logger.onExecutionDone?.({
75
+ type: 'execution_done',
76
+ timestamp: Date.now(),
77
+ duration: summary.totalDuration,
78
+ data,
79
+ summary,
80
+ });
81
+ // Use emitInternal to bypass reserved type check (internal only)
82
+ return this.emitInternal({
83
+ type: 'complete',
84
+ data,
85
+ summary,
86
+ });
87
+ }
88
+ /**
89
+ * Signals that the streaming execution failed with an error.
90
+ * Emits an 'error' event and triggers Logger.onExecutionError for observability.
91
+ * Gracefully handles getSummary() failures - summary will be undefined if it fails.
92
+ * @param error - The error that caused the failure
93
+ * @param data - Optional partial result data (if any was produced before failure)
94
+ * @returns The error event
95
+ */
96
+ async fail(error, data) {
97
+ if (this._terminated) {
98
+ throw new Error('Session already terminated. Cannot call fail() after a terminal operation.');
99
+ }
100
+ this._terminated = true;
101
+ let summary;
102
+ try {
103
+ summary = await this.getSummary();
104
+ }
105
+ catch {
106
+ // Ignore summary errors on failure path
107
+ }
108
+ this._logger.onExecutionError?.({
109
+ type: 'execution_error',
110
+ timestamp: Date.now(),
111
+ duration: summary?.totalDuration ?? (Date.now() - this._startTime),
112
+ error,
113
+ data,
114
+ summary,
115
+ });
116
+ const errorEvent = {
117
+ type: 'error',
118
+ error,
119
+ };
120
+ if (summary) {
121
+ errorEvent.summary = summary;
122
+ }
123
+ if (data !== undefined) {
124
+ errorEvent.data = data;
125
+ }
126
+ // Use emitInternal to bypass reserved type check (internal only)
127
+ return this.emitInternal(errorEvent);
128
+ }
129
+ createMetrics() {
130
+ const now = Date.now();
131
+ const metrics = {
132
+ timestamp: now,
133
+ elapsedMs: now - this._startTime,
134
+ deltaMs: now - this.lastEventTime,
135
+ };
136
+ this.lastEventTime = now;
137
+ return metrics;
138
+ }
139
+ }
140
+ export function createStreamingSession(options) {
141
+ const session = new StreamingSession({
142
+ defaultLanguageModel: options.defaultLanguageModel,
143
+ providerType: options.providerType,
144
+ fileManager: options.fileManager,
145
+ logger: options.logger ?? noopLogger,
146
+ startTime: options.startTime,
147
+ signal: options.signal,
148
+ });
149
+ return session;
150
+ }
151
+ //# sourceMappingURL=streaming-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-session.js","sourceRoot":"","sources":["../../src/session/streaming-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { vi } from 'vitest';
2
+ import type { LanguageModel, LanguageModelUsage } from 'ai';
3
+ import type { Logger } from '../observability/logger.js';
4
+ import type { FileManager } from '../provider/types.js';
5
+ export declare const TEST_PROVIDER_TYPE: "google";
6
+ export declare function createMockModel(): LanguageModel;
7
+ export declare function createMockFileManager(): FileManager;
8
+ export type MockLogger = Logger & {
9
+ onLLMCallStart: ReturnType<typeof vi.fn>;
10
+ onLLMCallEnd: ReturnType<typeof vi.fn>;
11
+ onExecutionStart: ReturnType<typeof vi.fn>;
12
+ onExecutionEmit: ReturnType<typeof vi.fn>;
13
+ onExecutionDone: ReturnType<typeof vi.fn>;
14
+ onExecutionError: ReturnType<typeof vi.fn>;
15
+ };
16
+ export declare function createMockLogger(): MockLogger;
17
+ export declare function createMockUsage(overrides?: Partial<LanguageModelUsage>): LanguageModelUsage;
18
+ export declare function createTestUsage(partial: Partial<LanguageModelUsage>): LanguageModelUsage;
19
+ //# sourceMappingURL=test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/session/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,kBAAkB,UAAoB,CAAC;AAEpD,wBAAgB,eAAe,IAAI,aAAa,CAS/C;AAED,wBAAgB,qBAAqB,IAAI,WAAW,CAOnD;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAChC,cAAc,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACzC,YAAY,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,gBAAgB,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3C,eAAe,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,eAAe,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,gBAAgB,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;CAC5C,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,UAAU,CAS7C;AAED,wBAAgB,eAAe,CAAC,SAAS,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAAG,kBAAkB,CAgB/F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAgBxF"}
@@ -0,0 +1,65 @@
1
+ import { vi } from 'vitest';
2
+ export const TEST_PROVIDER_TYPE = 'google';
3
+ export function createMockModel() {
4
+ return {
5
+ specificationVersion: 'v1',
6
+ provider: 'test-provider',
7
+ modelId: 'test-model',
8
+ defaultObjectGenerationMode: 'json',
9
+ doGenerate: vi.fn(),
10
+ doStream: vi.fn(),
11
+ };
12
+ }
13
+ export function createMockFileManager() {
14
+ return {
15
+ upload: vi.fn().mockResolvedValue([]),
16
+ delete: vi.fn().mockResolvedValue(undefined),
17
+ clear: vi.fn().mockResolvedValue(undefined),
18
+ getUploadedFiles: vi.fn().mockReturnValue([]),
19
+ };
20
+ }
21
+ export function createMockLogger() {
22
+ return {
23
+ onLLMCallStart: vi.fn(),
24
+ onLLMCallEnd: vi.fn(),
25
+ onExecutionStart: vi.fn(),
26
+ onExecutionEmit: vi.fn(),
27
+ onExecutionDone: vi.fn(),
28
+ onExecutionError: vi.fn(),
29
+ };
30
+ }
31
+ export function createMockUsage(overrides = {}) {
32
+ return {
33
+ inputTokens: 100,
34
+ outputTokens: 50,
35
+ totalTokens: 150,
36
+ inputTokenDetails: {
37
+ noCacheTokens: 100,
38
+ cacheReadTokens: 0,
39
+ cacheWriteTokens: 0,
40
+ },
41
+ outputTokenDetails: {
42
+ textTokens: 50,
43
+ reasoningTokens: 0,
44
+ },
45
+ ...overrides,
46
+ };
47
+ }
48
+ export function createTestUsage(partial) {
49
+ return {
50
+ inputTokens: 0,
51
+ outputTokens: 0,
52
+ totalTokens: 0,
53
+ inputTokenDetails: {
54
+ noCacheTokens: 0,
55
+ cacheReadTokens: 0,
56
+ cacheWriteTokens: 0,
57
+ },
58
+ outputTokenDetails: {
59
+ textTokens: 0,
60
+ reasoningTokens: 0,
61
+ },
62
+ ...partial,
63
+ };
64
+ }
65
+ //# sourceMappingURL=test-utils.js.map