@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,181 @@
1
+ /**
2
+ * Session module types for @agtlantis/core.
3
+ * Provides interfaces for tracking LLM calls, tool calls, and session summaries.
4
+ */
5
+ import { createZeroUsage } from './usage-extractors.js';
6
+ /**
7
+ * Aggregated summary of all activity within an execution session.
8
+ * Used for cost tracking, performance analysis, and metadata reporting.
9
+ *
10
+ * This is an immutable Value Object. All mutation methods return new instances.
11
+ */
12
+ export class SessionSummary {
13
+ totalLLMUsage;
14
+ llmCallCount;
15
+ llmCalls;
16
+ toolCalls;
17
+ customRecords;
18
+ llmCost;
19
+ additionalCosts;
20
+ metadata;
21
+ /** Cost breakdown by model. Key format: `${provider}/${model}` */
22
+ costByModel;
23
+ startTime;
24
+ constructor(data, startTime) {
25
+ this.startTime = startTime;
26
+ this.totalLLMUsage = data.totalLLMUsage;
27
+ this.llmCallCount = data.llmCalls.length;
28
+ this.llmCalls = Object.freeze([...data.llmCalls]);
29
+ this.toolCalls = Object.freeze([...data.toolCalls]);
30
+ this.customRecords = Object.freeze([...data.customRecords]);
31
+ this.llmCost = data.llmCost;
32
+ this.additionalCosts = Object.freeze([...data.additionalCosts]);
33
+ this.metadata = Object.freeze({ ...data.metadata });
34
+ this.costByModel = Object.freeze({ ...data.costByModel });
35
+ }
36
+ /**
37
+ * Total duration from session start to now (computed dynamically).
38
+ */
39
+ get totalDuration() {
40
+ return Date.now() - this.startTime;
41
+ }
42
+ /**
43
+ * Creates an empty SessionSummary.
44
+ */
45
+ static empty(startTime) {
46
+ return new SessionSummary({
47
+ totalLLMUsage: createZeroUsage(),
48
+ llmCalls: [],
49
+ toolCalls: [],
50
+ customRecords: [],
51
+ llmCost: 0,
52
+ additionalCosts: [],
53
+ metadata: {},
54
+ costByModel: {},
55
+ }, startTime);
56
+ }
57
+ /**
58
+ * Creates a SessionSummary with custom data for testing purposes.
59
+ * @internal For testing only - do not use in production code.
60
+ */
61
+ static forTest(data) {
62
+ const startTime = data.startTime ?? Date.now() - 1000;
63
+ return new SessionSummary({
64
+ totalLLMUsage: data.totalLLMUsage ?? createZeroUsage(),
65
+ llmCalls: data.llmCalls ?? [],
66
+ toolCalls: data.toolCalls ?? [],
67
+ customRecords: data.customRecords ?? [],
68
+ llmCost: data.llmCost ?? 0,
69
+ additionalCosts: data.additionalCosts ?? [],
70
+ metadata: data.metadata ?? {},
71
+ costByModel: data.costByModel ?? {},
72
+ }, startTime);
73
+ }
74
+ /**
75
+ * Total cost of all additional (non-LLM) operations.
76
+ */
77
+ get totalAdditionalCost() {
78
+ return this.additionalCosts.reduce((sum, c) => sum + c.cost, 0);
79
+ }
80
+ /**
81
+ * Total cost including LLM and additional costs.
82
+ */
83
+ get totalCost() {
84
+ return this.llmCost + this.totalAdditionalCost;
85
+ }
86
+ /**
87
+ * Returns a new SessionSummary with an LLM call added.
88
+ */
89
+ withLLMCall(call, newLlmCost, newCostByModel, newTotalUsage) {
90
+ return new SessionSummary({
91
+ totalLLMUsage: newTotalUsage,
92
+ llmCalls: [...this.llmCalls, call],
93
+ toolCalls: [...this.toolCalls],
94
+ customRecords: [...this.customRecords],
95
+ llmCost: newLlmCost,
96
+ additionalCosts: [...this.additionalCosts],
97
+ metadata: { ...this.metadata },
98
+ costByModel: newCostByModel,
99
+ }, this.startTime);
100
+ }
101
+ /**
102
+ * Returns a new SessionSummary with an additional cost recorded.
103
+ */
104
+ withAdditionalCost(cost) {
105
+ return new SessionSummary({
106
+ totalLLMUsage: this.totalLLMUsage,
107
+ llmCalls: [...this.llmCalls],
108
+ toolCalls: [...this.toolCalls],
109
+ customRecords: [...this.customRecords],
110
+ llmCost: this.llmCost,
111
+ additionalCosts: [...this.additionalCosts, cost],
112
+ metadata: { ...this.metadata },
113
+ costByModel: { ...this.costByModel },
114
+ }, this.startTime);
115
+ }
116
+ /**
117
+ * Returns a new SessionSummary with metadata updated.
118
+ */
119
+ withMetadata(key, value) {
120
+ return new SessionSummary({
121
+ totalLLMUsage: this.totalLLMUsage,
122
+ llmCalls: [...this.llmCalls],
123
+ toolCalls: [...this.toolCalls],
124
+ customRecords: [...this.customRecords],
125
+ llmCost: this.llmCost,
126
+ additionalCosts: [...this.additionalCosts],
127
+ metadata: { ...this.metadata, [key]: value },
128
+ costByModel: { ...this.costByModel },
129
+ }, this.startTime);
130
+ }
131
+ /**
132
+ * Returns a new SessionSummary with a tool call added.
133
+ */
134
+ withToolCall(call) {
135
+ return new SessionSummary({
136
+ totalLLMUsage: this.totalLLMUsage,
137
+ llmCalls: [...this.llmCalls],
138
+ toolCalls: [...this.toolCalls, call],
139
+ customRecords: [...this.customRecords],
140
+ llmCost: this.llmCost,
141
+ additionalCosts: [...this.additionalCosts],
142
+ metadata: { ...this.metadata },
143
+ costByModel: { ...this.costByModel },
144
+ }, this.startTime);
145
+ }
146
+ /**
147
+ * Returns a new SessionSummary with a custom record added.
148
+ */
149
+ withCustomRecord(record) {
150
+ return new SessionSummary({
151
+ totalLLMUsage: this.totalLLMUsage,
152
+ llmCalls: [...this.llmCalls],
153
+ toolCalls: [...this.toolCalls],
154
+ customRecords: [...this.customRecords, record],
155
+ llmCost: this.llmCost,
156
+ additionalCosts: [...this.additionalCosts],
157
+ metadata: { ...this.metadata },
158
+ costByModel: { ...this.costByModel },
159
+ }, this.startTime);
160
+ }
161
+ /**
162
+ * Serializes to plain JSON object for database storage.
163
+ */
164
+ toJSON() {
165
+ return {
166
+ totalDuration: this.totalDuration,
167
+ totalLLMUsage: this.totalLLMUsage,
168
+ llmCallCount: this.llmCallCount,
169
+ llmCalls: [...this.llmCalls],
170
+ toolCalls: [...this.toolCalls],
171
+ customRecords: [...this.customRecords],
172
+ llmCost: this.llmCost,
173
+ additionalCosts: [...this.additionalCosts],
174
+ metadata: { ...this.metadata },
175
+ costByModel: { ...this.costByModel },
176
+ totalCost: this.totalCost,
177
+ totalAdditionalCost: this.totalAdditionalCost,
178
+ };
179
+ }
180
+ }
181
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA0IxD;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAChB,aAAa,CAAqB;IAClC,YAAY,CAAS;IACrB,QAAQ,CAA2B;IACnC,SAAS,CAA6B;IACtC,aAAa,CAAqC;IAClD,OAAO,CAAS;IAChB,eAAe,CAA4B;IAC3C,QAAQ,CAAoC;IACrD,kEAAkE;IACzD,WAAW,CAAmC;IAEtC,SAAS,CAAS;IAEnC,YAAoB,IAAwB,EAAE,SAAiB;QAC7D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,SAAiB;QAC5B,OAAO,IAAI,cAAc,CACvB;YACE,aAAa,EAAE,eAAe,EAAE;YAChC,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,EAAE;YACb,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,CAAC;YACV,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,EAAE;SAChB,EACD,SAAS,CACV,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,IAA0D;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACtD,OAAO,IAAI,cAAc,CACvB;YACE,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,eAAe,EAAE;YACtD,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC;YAC1B,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;YAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;SACpC,EACD,SAAS,CACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,WAAW,CACT,IAAmB,EACnB,UAAkB,EAClB,cAAsC,EACtC,aAAiC;QAEjC,OAAO,IAAI,cAAc,CACvB;YACE,aAAa,EAAE,aAAa;YAC5B,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;YAClC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9B,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE,UAAU;YACnB,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;YAC1C,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC9B,WAAW,EAAE,cAAc;SAC5B,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,IAAoB;QACrC,OAAO,IAAI,cAAc,CACvB;YACE,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9B,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC;YAChD,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC9B,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;SACrC,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,GAAW,EAAE,KAAc;QACtC,OAAO,IAAI,cAAc,CACvB;YACE,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9B,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;YAC1C,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE;YAC5C,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;SACrC,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAqB;QAChC,OAAO,IAAI,cAAc,CACvB;YACE,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;YACpC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;YAC1C,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC9B,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;SACrC,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,MAA+B;QAC9C,OAAO,IAAI,cAAc,CACvB;YACE,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9B,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;YAC9C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;YAC1C,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC9B,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;SACrC,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9B,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;YAC1C,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC9B,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;SAC9C,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { LanguageModelUsage } from 'ai';
2
+ import type { ProviderType } from '../pricing/types.js';
3
+ export type { ProviderType } from '../pricing/types.js';
4
+ export declare function mergeUsages(usages: LanguageModelUsage[]): LanguageModelUsage;
5
+ export declare function createZeroUsage(): LanguageModelUsage;
6
+ export declare function detectProviderType(modelId: string): ProviderType | undefined;
7
+ //# sourceMappingURL=usage-extractors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-extractors.d.ts","sourceRoot":"","sources":["../../src/session/usage-extractors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,wBAAgB,WAAW,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAyC5E;AAED,wBAAgB,eAAe,IAAI,kBAAkB,CAepD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAsB5E"}
@@ -0,0 +1,71 @@
1
+ export function mergeUsages(usages) {
2
+ if (usages.length === 0) {
3
+ return createZeroUsage();
4
+ }
5
+ let inputTokens = 0;
6
+ let outputTokens = 0;
7
+ let totalTokens = 0;
8
+ let noCacheTokens = 0;
9
+ let cacheReadTokens = 0;
10
+ let cacheWriteTokens = 0;
11
+ let textTokens = 0;
12
+ let reasoningTokens = 0;
13
+ for (const usage of usages) {
14
+ inputTokens += usage.inputTokens ?? 0;
15
+ outputTokens += usage.outputTokens ?? 0;
16
+ totalTokens += usage.totalTokens ?? 0;
17
+ noCacheTokens += usage.inputTokenDetails?.noCacheTokens ?? 0;
18
+ cacheReadTokens += usage.inputTokenDetails?.cacheReadTokens ?? 0;
19
+ cacheWriteTokens += usage.inputTokenDetails?.cacheWriteTokens ?? 0;
20
+ textTokens += usage.outputTokenDetails?.textTokens ?? 0;
21
+ reasoningTokens += usage.outputTokenDetails?.reasoningTokens ?? 0;
22
+ }
23
+ return {
24
+ inputTokens,
25
+ outputTokens,
26
+ totalTokens,
27
+ inputTokenDetails: {
28
+ noCacheTokens,
29
+ cacheReadTokens,
30
+ cacheWriteTokens,
31
+ },
32
+ outputTokenDetails: {
33
+ textTokens,
34
+ reasoningTokens,
35
+ },
36
+ };
37
+ }
38
+ export function createZeroUsage() {
39
+ return {
40
+ inputTokens: 0,
41
+ outputTokens: 0,
42
+ totalTokens: 0,
43
+ inputTokenDetails: {
44
+ noCacheTokens: 0,
45
+ cacheReadTokens: 0,
46
+ cacheWriteTokens: 0,
47
+ },
48
+ outputTokenDetails: {
49
+ textTokens: 0,
50
+ reasoningTokens: 0,
51
+ },
52
+ };
53
+ }
54
+ export function detectProviderType(modelId) {
55
+ const lowerModel = modelId.toLowerCase();
56
+ if (lowerModel.startsWith('gpt-') ||
57
+ lowerModel === 'o1' ||
58
+ lowerModel.startsWith('o1-') ||
59
+ lowerModel === 'o3' ||
60
+ lowerModel.startsWith('o3-')) {
61
+ return 'openai';
62
+ }
63
+ if (lowerModel.startsWith('gemini')) {
64
+ return 'google';
65
+ }
66
+ if (lowerModel.startsWith('claude')) {
67
+ return 'anthropic';
68
+ }
69
+ return undefined;
70
+ }
71
+ //# sourceMappingURL=usage-extractors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-extractors.js","sourceRoot":"","sources":["../../src/session/usage-extractors.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,WAAW,CAAC,MAA4B;IACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QACtC,YAAY,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;QACxC,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QAEtC,aAAa,IAAI,KAAK,CAAC,iBAAiB,EAAE,aAAa,IAAI,CAAC,CAAC;QAC7D,eAAe,IAAI,KAAK,CAAC,iBAAiB,EAAE,eAAe,IAAI,CAAC,CAAC;QACjE,gBAAgB,IAAI,KAAK,CAAC,iBAAiB,EAAE,gBAAgB,IAAI,CAAC,CAAC;QAEnE,UAAU,IAAI,KAAK,CAAC,kBAAkB,EAAE,UAAU,IAAI,CAAC,CAAC;QACxD,eAAe,IAAI,KAAK,CAAC,kBAAkB,EAAE,eAAe,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,OAAO;QACL,WAAW;QACX,YAAY;QACZ,WAAW;QACX,iBAAiB,EAAE;YACjB,aAAa;YACb,eAAe;YACf,gBAAgB;SACjB;QACD,kBAAkB,EAAE;YAClB,UAAU;YACV,eAAe;SAChB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,iBAAiB,EAAE;YACjB,aAAa,EAAE,CAAC;YAChB,eAAe,EAAE,CAAC;YAClB,gBAAgB,EAAE,CAAC;SACpB;QACD,kBAAkB,EAAE;YAClB,UAAU,EAAE,CAAC;YACb,eAAe,EAAE,CAAC;SACnB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEzC,IACE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;QAC7B,UAAU,KAAK,IAAI;QACnB,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;QAC5B,UAAU,KAAK,IAAI;QACnB,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAC5B,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { CompletionEvent } from '../execution/types.js';
2
+ import type { LanguageModelUsage } from '../observability/index.js';
3
+ import { SessionSummary, type LLMCallRecord, type ToolCallSummary, type AdditionalCost } from '../session/types.js';
4
+ export declare const TEST_API_KEY = "test-api-key";
5
+ export declare function createMockUsage(overrides?: Partial<LanguageModelUsage>): LanguageModelUsage;
6
+ export interface TestBaseEvent {
7
+ type: string;
8
+ message?: string;
9
+ data?: string;
10
+ }
11
+ export type TestEvent = TestBaseEvent | CompletionEvent<string>;
12
+ export interface TestResult {
13
+ value: string;
14
+ }
15
+ export declare function createTestEvent(type: string, overrides?: Partial<Omit<TestBaseEvent, 'type'>>): TestBaseEvent;
16
+ export interface MockSessionSummaryOptions {
17
+ /** @deprecated Use startTime instead. totalDuration is computed from startTime. */
18
+ totalDuration?: number;
19
+ startTime?: number;
20
+ totalLLMUsage?: LanguageModelUsage;
21
+ /** @deprecated Provide llmCalls array instead. llmCallCount creates dummy records. */
22
+ llmCallCount?: number;
23
+ llmCalls?: LLMCallRecord[];
24
+ toolCalls?: ToolCallSummary[];
25
+ customRecords?: Record<string, unknown>[];
26
+ /** @deprecated Use llmCost instead */
27
+ totalCost?: number;
28
+ llmCost?: number;
29
+ additionalCosts?: AdditionalCost[];
30
+ metadata?: Record<string, unknown>;
31
+ costByModel?: Record<string, number>;
32
+ }
33
+ export declare function createMockSessionSummary(overrides?: MockSessionSummaryOptions): SessionSummary;
34
+ //# sourceMappingURL=fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/testing/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEpH,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAoB3F;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAEhE,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,CAC3B,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,GACjD,aAAa,CAKf;AAED,MAAM,WAAW,yBAAyB;IACtC,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAcD,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,yBAAyB,GAAG,cAAc,CA2B9F"}
@@ -0,0 +1,65 @@
1
+ import { SessionSummary } from '../session/types.js';
2
+ export const TEST_API_KEY = 'test-api-key';
3
+ export function createMockUsage(overrides) {
4
+ const inputTokens = overrides?.inputTokens ?? 10;
5
+ const outputTokens = overrides?.outputTokens ?? 5;
6
+ return {
7
+ inputTokens,
8
+ outputTokens,
9
+ totalTokens: overrides?.totalTokens ?? inputTokens + outputTokens,
10
+ inputTokenDetails: {
11
+ cacheReadTokens: undefined,
12
+ cacheWriteTokens: undefined,
13
+ noCacheTokens: undefined,
14
+ ...overrides?.inputTokenDetails,
15
+ },
16
+ outputTokenDetails: {
17
+ textTokens: undefined,
18
+ reasoningTokens: undefined,
19
+ ...overrides?.outputTokenDetails,
20
+ },
21
+ };
22
+ }
23
+ export function createTestEvent(type, overrides) {
24
+ return {
25
+ type,
26
+ ...overrides,
27
+ };
28
+ }
29
+ function createDummyLLMCall() {
30
+ return {
31
+ startTime: Date.now() - 100,
32
+ endTime: Date.now(),
33
+ duration: 100,
34
+ usage: createMockUsage(),
35
+ type: 'generateText',
36
+ model: 'test-model',
37
+ provider: 'openai',
38
+ };
39
+ }
40
+ export function createMockSessionSummary(overrides) {
41
+ // Compute startTime from totalDuration for backward compatibility
42
+ let startTime = overrides?.startTime;
43
+ if (startTime === undefined && overrides?.totalDuration !== undefined) {
44
+ startTime = Date.now() - overrides.totalDuration;
45
+ }
46
+ // Support both llmCost and deprecated totalCost
47
+ const llmCost = overrides?.llmCost ?? overrides?.totalCost ?? 0;
48
+ // Support deprecated llmCallCount by creating dummy records
49
+ let llmCalls = overrides?.llmCalls;
50
+ if (!llmCalls && overrides?.llmCallCount !== undefined) {
51
+ llmCalls = Array.from({ length: overrides.llmCallCount }, () => createDummyLLMCall());
52
+ }
53
+ return SessionSummary.forTest({
54
+ startTime,
55
+ totalLLMUsage: overrides?.totalLLMUsage ?? createMockUsage(),
56
+ llmCalls: llmCalls ?? [],
57
+ toolCalls: overrides?.toolCalls ?? [],
58
+ customRecords: overrides?.customRecords ?? [],
59
+ llmCost,
60
+ additionalCosts: overrides?.additionalCosts ?? [],
61
+ metadata: overrides?.metadata ?? {},
62
+ costByModel: overrides?.costByModel ?? {},
63
+ });
64
+ }
65
+ //# sourceMappingURL=fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/testing/fixtures.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAiE,MAAM,qBAAqB,CAAC;AAEpH,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAE3C,MAAM,UAAU,eAAe,CAAC,SAAuC;IACnE,MAAM,WAAW,GAAG,SAAS,EAAE,WAAW,IAAI,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,SAAS,EAAE,YAAY,IAAI,CAAC,CAAC;IAElD,OAAO;QACH,WAAW;QACX,YAAY;QACZ,WAAW,EAAE,SAAS,EAAE,WAAW,IAAI,WAAW,GAAG,YAAY;QACjE,iBAAiB,EAAE;YACf,eAAe,EAAE,SAAS;YAC1B,gBAAgB,EAAE,SAAS;YAC3B,aAAa,EAAE,SAAS;YACxB,GAAG,SAAS,EAAE,iBAAiB;SAClC;QACD,kBAAkB,EAAE;YAChB,UAAU,EAAE,SAAS;YACrB,eAAe,EAAE,SAAS;YAC1B,GAAG,SAAS,EAAE,kBAAkB;SACnC;KACJ,CAAC;AACN,CAAC;AAcD,MAAM,UAAU,eAAe,CAC3B,IAAY,EACZ,SAAgD;IAEhD,OAAO;QACH,IAAI;QACJ,GAAG,SAAS;KACf,CAAC;AACN,CAAC;AAoBD,SAAS,kBAAkB;IACvB,OAAO;QACH,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG;QAC3B,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;QACnB,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,eAAe,EAAE;QACxB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,QAAQ;KACrB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAqC;IAC1E,kEAAkE;IAClE,IAAI,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC;IACrC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;QACpE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC;IACrD,CAAC;IAED,gDAAgD;IAChD,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO,IAAI,SAAS,EAAE,SAAS,IAAI,CAAC,CAAC;IAEhE,4DAA4D;IAC5D,IAAI,QAAQ,GAAG,SAAS,EAAE,QAAQ,CAAC;IACnC,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;QACrD,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,cAAc,CAAC,OAAO,CAAC;QAC1B,SAAS;QACT,aAAa,EAAE,SAAS,EAAE,aAAa,IAAI,eAAe,EAAE;QAC5D,QAAQ,EAAE,QAAQ,IAAI,EAAE;QACxB,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE;QACrC,aAAa,EAAE,SAAS,EAAE,aAAa,IAAI,EAAE;QAC7C,OAAO;QACP,eAAe,EAAE,SAAS,EAAE,eAAe,IAAI,EAAE;QACjD,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,EAAE;QACnC,WAAW,EAAE,SAAS,EAAE,WAAW,IAAI,EAAE;KAC5C,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { FileManager } from '../provider/index.js';
2
+ import type { ErrorEvent, SessionEvent, StreamingExecution } from '../execution/types.js';
3
+ /**
4
+ * Collects all events from a StreamingExecution into an array.
5
+ * Works with both StreamingExecution (via .stream()) and raw AsyncIterable.
6
+ */
7
+ export declare function collectEvents<T extends {
8
+ type: string;
9
+ }>(execution: StreamingExecution<T>): Promise<SessionEvent<T | ErrorEvent>[]>;
10
+ export declare function collectEvents<T extends {
11
+ type: string;
12
+ }>(execution: AsyncIterable<SessionEvent<T>>): Promise<SessionEvent<T>[]>;
13
+ /**
14
+ * Drains a StreamingExecution or AsyncIterable without storing events.
15
+ */
16
+ export declare function consumeExecution<T extends {
17
+ type: string;
18
+ }>(execution: StreamingExecution<T> | AsyncIterable<SessionEvent<T>>): Promise<void>;
19
+ export declare function expectFileManagerInterface(obj: unknown): asserts obj is FileManager;
20
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/testing/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE1F;;;GAGG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1D,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;AAC3C,wBAAsB,aAAa,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1D,SAAS,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC1C,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAkB9B;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC7D,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAClE,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAWnF"}
@@ -0,0 +1,32 @@
1
+ export async function collectEvents(execution) {
2
+ const events = [];
3
+ // Check if it's a StreamingExecution (has stream method)
4
+ const iterable = 'stream' in execution && typeof execution.stream === 'function'
5
+ ? execution.stream()
6
+ : execution;
7
+ for await (const event of iterable) {
8
+ events.push(event);
9
+ }
10
+ return events;
11
+ }
12
+ /**
13
+ * Drains a StreamingExecution or AsyncIterable without storing events.
14
+ */
15
+ export async function consumeExecution(execution) {
16
+ const iterable = 'stream' in execution && typeof execution.stream === 'function'
17
+ ? execution.stream()
18
+ : execution;
19
+ for await (const _event of iterable) {
20
+ // intentionally empty - drains the async iterator
21
+ }
22
+ }
23
+ export function expectFileManagerInterface(obj) {
24
+ const fm = obj;
25
+ const requiredMethods = ['upload', 'delete', 'clear', 'getUploadedFiles'];
26
+ for (const method of requiredMethods) {
27
+ if (typeof fm[method] !== 'function') {
28
+ throw new Error(`Expected FileManager.${method} to be a function, got ${typeof fm[method]}`);
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/testing/helpers.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,KAAK,UAAU,aAAa,CAC/B,SAAiE;IAEjE,MAAM,MAAM,GAAwC,EAAE,CAAC;IAEvD,yDAAyD;IACzD,MAAM,QAAQ,GACV,QAAQ,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,UAAU;QAC3D,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE;QACpB,CAAC,CAAE,SAAyD,CAAC;IAErE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,SAAiE;IAEjE,MAAM,QAAQ,GACV,QAAQ,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,UAAU;QAC3D,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE;QACpB,CAAC,CAAE,SAA4C,CAAC;IAExD,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAClC,kDAAkD;IACtD,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,GAAY;IACnD,MAAM,EAAE,GAAG,GAAkB,CAAC;IAC9B,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAU,CAAC;IAEnF,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACX,wBAAwB,MAAM,0BAA0B,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAC9E,CAAC;QACN,CAAC;IACL,CAAC;AACL,CAAC"}