@agtlantis/core 0.5.0 → 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 -1506
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +9 -2979
  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 -519
  218. package/dist/testing/index.d.ts.map +1 -0
  219. package/dist/testing/index.js +21 -2123
  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 -76
  258. package/dist/base-provider-2TTw5HAa.d.cts +0 -1254
  259. package/dist/base-provider-2TTw5HAa.d.ts +0 -1254
  260. package/dist/index.cjs +0 -3085
  261. package/dist/index.cjs.map +0 -1
  262. package/dist/index.d.cts +0 -1506
  263. package/dist/testing/index.cjs +0 -2167
  264. package/dist/testing/index.cjs.map +0 -1
  265. package/dist/testing/index.d.cts +0 -520
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/session/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAK5B,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAiB,CAAC;AAEpD,MAAM,UAAU,eAAe,GAAkB;IAC/C,OAAO;QACL,oBAAoB,EAAE,IAAI;QAC1B,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,YAAY;QACrB,2BAA2B,EAAE,MAAM;QACnC,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;QACnB,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;KACU,CAAC;AAAA,CAC/B;AAED,MAAM,UAAU,qBAAqB,GAAgB;IACnD,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC5C,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC3C,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;KAC9C,CAAC;AAAA,CACH;AAWD,MAAM,UAAU,gBAAgB,GAAe;IAC7C,OAAO;QACL,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;QACvB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;QACrB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;QACzB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;QACxB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;QACxB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;KACZ,CAAC;AAAA,CACjB;AAED,MAAM,UAAU,eAAe,CAAC,SAAS,GAAgC,EAAE,EAAsB;IAC/F,OAAO;QACL,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,GAAG;QAChB,iBAAiB,EAAE;YACjB,aAAa,EAAE,GAAG;YAClB,eAAe,EAAE,CAAC;YAClB,gBAAgB,EAAE,CAAC;SACpB;QACD,kBAAkB,EAAE;YAClB,UAAU,EAAE,EAAE;YACd,eAAe,EAAE,CAAC;SACnB;QACD,GAAG,SAAS;KACb,CAAC;AAAA,CACH;AAED,MAAM,UAAU,eAAe,CAAC,OAAoC,EAAsB;IACxF,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;QACD,GAAG,OAAO;KACX,CAAC;AAAA,CACH"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Session module types for @agtlantis/core.
3
+ * Provides interfaces for tracking LLM calls, tool calls, and session summaries.
4
+ */
5
+ import type { CallSettings, LanguageModelUsage, generateText as aiGenerateText, streamText as aiStreamText, generateObject as aiGenerateObject, GenerateTextResult, StreamTextResult, ToolSet } from 'ai';
6
+ import type { ExecutionMetadata } from '../observability/types.js';
7
+ import type { ProviderType } from '../pricing/types.js';
8
+ /**
9
+ * Standard AI SDK generation parameters that can be set as defaults at the Provider level.
10
+ * Per-call parameters override these defaults via simple spread merge.
11
+ */
12
+ export type GenerationOptions = Pick<CallSettings, 'maxOutputTokens' | 'temperature' | 'topP' | 'topK' | 'presencePenalty' | 'frequencyPenalty' | 'stopSequences' | 'seed'>;
13
+ /**
14
+ * Structural interface matching AI SDK's internal Output<OUTPUT, PARTIAL>.
15
+ *
16
+ * AI SDK exports `output as Output` (runtime value), not the interface directly.
17
+ * We define this compatible interface to enable structural typing.
18
+ *
19
+ * CRITICAL: Method signatures MUST exactly match AI SDK's internal interface
20
+ * for generic type inference to work.
21
+ *
22
+ * @see AI SDK source: node_modules/ai/dist/index.d.ts lines 572-596
23
+ */
24
+ export interface OutputSpec<OUTPUT = unknown, PARTIAL = unknown> {
25
+ responseFormat: PromiseLike<unknown>;
26
+ parseCompleteOutput(options: {
27
+ text: string;
28
+ }, context: {
29
+ response: unknown;
30
+ usage: unknown;
31
+ finishReason: unknown;
32
+ }): Promise<OUTPUT>;
33
+ parsePartialOutput(options: {
34
+ text: string;
35
+ }): Promise<{
36
+ partial: PARTIAL;
37
+ } | undefined>;
38
+ }
39
+ export type DefaultOutput = OutputSpec<string, string>;
40
+ export type InferOutputComplete<T> = T extends OutputSpec<infer O, unknown> ? O : string;
41
+ export type GenerateTextResultTyped<TOOLS extends ToolSet, OUTPUT extends OutputSpec> = Awaited<ReturnType<typeof aiGenerateText<TOOLS>>> & {
42
+ output: InferOutputComplete<OUTPUT> | undefined;
43
+ };
44
+ export type StreamTextResultTyped<TOOLS extends ToolSet, OUTPUT extends OutputSpec> = ReturnType<typeof aiStreamText<TOOLS>> & {
45
+ output: Promise<InferOutputComplete<OUTPUT> | undefined>;
46
+ };
47
+ /**
48
+ * Parameters for session.generateText().
49
+ * Mirrors AI SDK's generateText() with 'model' excluded (injected by session).
50
+ */
51
+ export type GenerateTextParams<TOOLS extends ToolSet = {}, OUTPUT extends OutputSpec = DefaultOutput> = Omit<Parameters<typeof aiGenerateText<TOOLS>>[0], 'model' | 'output'> & {
52
+ model?: string;
53
+ output?: OUTPUT;
54
+ };
55
+ export type { GenerateTextResult };
56
+ /**
57
+ * Parameters for session.streamText().
58
+ * Mirrors AI SDK's streamText() with 'model' excluded (injected by session).
59
+ */
60
+ export type StreamTextParams<TOOLS extends ToolSet = {}, OUTPUT extends OutputSpec = DefaultOutput> = Omit<Parameters<typeof aiStreamText<TOOLS>>[0], 'model' | 'output'> & {
61
+ model?: string;
62
+ output?: OUTPUT;
63
+ };
64
+ export type { StreamTextResult };
65
+ /**
66
+ * @deprecated Use generateText with Output.object instead
67
+ */
68
+ export type GenerateObjectParams = Omit<Parameters<typeof aiGenerateObject>[0], 'model'>;
69
+ export type { ToolSet };
70
+ export interface ToolCallSummary {
71
+ name: string;
72
+ duration?: number;
73
+ success: boolean;
74
+ error?: string;
75
+ }
76
+ export type LLMCallType = 'generateText' | 'streamText' | 'generateObject' | 'manual';
77
+ export interface LLMCallRecord {
78
+ startTime: number;
79
+ endTime: number;
80
+ duration: number;
81
+ usage: LanguageModelUsage;
82
+ type: LLMCallType;
83
+ model: string;
84
+ provider: ProviderType;
85
+ }
86
+ /**
87
+ * Aggregated summary of all activity within an execution session.
88
+ * Used for cost tracking, performance analysis, and metadata reporting.
89
+ */
90
+ export interface AdditionalCost {
91
+ type: string;
92
+ cost: number;
93
+ label?: string;
94
+ metadata?: Record<string, unknown>;
95
+ timestamp: number;
96
+ }
97
+ /**
98
+ * Internal data structure for SessionSummary constructor.
99
+ */
100
+ interface SessionSummaryData {
101
+ totalLLMUsage: LanguageModelUsage;
102
+ llmCalls: LLMCallRecord[];
103
+ toolCalls: ToolCallSummary[];
104
+ customRecords: Record<string, unknown>[];
105
+ llmCost: number;
106
+ additionalCosts: AdditionalCost[];
107
+ metadata: Record<string, unknown>;
108
+ costByModel: Record<string, number>;
109
+ }
110
+ /**
111
+ * Aggregated summary of all activity within an execution session.
112
+ * Used for cost tracking, performance analysis, and metadata reporting.
113
+ *
114
+ * This is an immutable Value Object. All mutation methods return new instances.
115
+ */
116
+ export declare class SessionSummary {
117
+ readonly totalLLMUsage: LanguageModelUsage;
118
+ readonly llmCallCount: number;
119
+ readonly llmCalls: readonly LLMCallRecord[];
120
+ readonly toolCalls: readonly ToolCallSummary[];
121
+ readonly customRecords: readonly Record<string, unknown>[];
122
+ readonly llmCost: number;
123
+ readonly additionalCosts: readonly AdditionalCost[];
124
+ readonly metadata: Readonly<Record<string, unknown>>;
125
+ /** Cost breakdown by model. Key format: `${provider}/${model}` */
126
+ readonly costByModel: Readonly<Record<string, number>>;
127
+ private readonly startTime;
128
+ private constructor();
129
+ /**
130
+ * Total duration from session start to now (computed dynamically).
131
+ */
132
+ get totalDuration(): number;
133
+ /**
134
+ * Creates an empty SessionSummary.
135
+ */
136
+ static empty(startTime: number): SessionSummary;
137
+ /**
138
+ * Creates a SessionSummary with custom data for testing purposes.
139
+ * @internal For testing only - do not use in production code.
140
+ */
141
+ static forTest(data: Partial<SessionSummaryData> & {
142
+ startTime?: number;
143
+ }): SessionSummary;
144
+ /**
145
+ * Total cost of all additional (non-LLM) operations.
146
+ */
147
+ get totalAdditionalCost(): number;
148
+ /**
149
+ * Total cost including LLM and additional costs.
150
+ */
151
+ get totalCost(): number;
152
+ /**
153
+ * Returns a new SessionSummary with an LLM call added.
154
+ */
155
+ withLLMCall(call: LLMCallRecord, newLlmCost: number, newCostByModel: Record<string, number>, newTotalUsage: LanguageModelUsage): SessionSummary;
156
+ /**
157
+ * Returns a new SessionSummary with an additional cost recorded.
158
+ */
159
+ withAdditionalCost(cost: AdditionalCost): SessionSummary;
160
+ /**
161
+ * Returns a new SessionSummary with metadata updated.
162
+ */
163
+ withMetadata(key: string, value: unknown): SessionSummary;
164
+ /**
165
+ * Returns a new SessionSummary with a tool call added.
166
+ */
167
+ withToolCall(call: ToolCallSummary): SessionSummary;
168
+ /**
169
+ * Returns a new SessionSummary with a custom record added.
170
+ */
171
+ withCustomRecord(record: Record<string, unknown>): SessionSummary;
172
+ /**
173
+ * Serializes to plain JSON object for database storage.
174
+ */
175
+ toJSON(): SessionSummaryJSON;
176
+ }
177
+ /**
178
+ * JSON representation of SessionSummary for database storage.
179
+ */
180
+ export interface SessionSummaryJSON {
181
+ totalDuration: number;
182
+ totalLLMUsage: LanguageModelUsage;
183
+ llmCallCount: number;
184
+ llmCalls: LLMCallRecord[];
185
+ toolCalls: ToolCallSummary[];
186
+ customRecords: Record<string, unknown>[];
187
+ llmCost: number;
188
+ additionalCosts: AdditionalCost[];
189
+ metadata: Record<string, unknown>;
190
+ costByModel: Record<string, number>;
191
+ totalCost: number;
192
+ totalAdditionalCost: number;
193
+ }
194
+ /**
195
+ * Session for tracking LLM calls, tool calls, and custom records.
196
+ * Provides AI SDK wrappers with auto-tracking and manual recording methods.
197
+ */
198
+ export interface ExecutionSession {
199
+ generateText(params: GenerateTextParams): Promise<Awaited<ReturnType<typeof aiGenerateText>>>;
200
+ streamText(params: StreamTextParams): ReturnType<typeof aiStreamText>;
201
+ generateObject<T>(params: GenerateObjectParams & {
202
+ schema: import('zod').ZodType<T>;
203
+ }): Promise<Awaited<ReturnType<typeof aiGenerateObject>>>;
204
+ recordToolCall(summary: ToolCallSummary): void;
205
+ recordLLMCall(record: Omit<LLMCallRecord, 'type'> & {
206
+ type?: LLMCallType;
207
+ }): void;
208
+ record(data: Record<string, unknown>): void;
209
+ recordAdditionalCost(cost: Omit<AdditionalCost, 'timestamp'>): void;
210
+ setMetadata(key: string, value: unknown): void;
211
+ setMetadata(data: Record<string, unknown>): void;
212
+ summary(): Promise<SessionSummary>;
213
+ }
214
+ /**
215
+ * Metadata passed to done() and fail() in StreamGeneratorControl.
216
+ * Union of SessionSummary and ExecutionMetadata for flexible usage.
217
+ */
218
+ export type DoneMetadata = SessionSummary | ExecutionMetadata;
219
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
@@ -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,EAAsB;IAC5E,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;AAAA,CACH;AAED,MAAM,UAAU,eAAe,GAAuB;IACpD,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;AAAA,CACH;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAA4B;IAC5E,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;AAAA,CAClB"}
@@ -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,EAAsB;IACzF,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;AAAA,CACL;AAcD,MAAM,UAAU,eAAe,CAC3B,IAAY,EACZ,SAAgD,EACnC;IACb,OAAO;QACH,IAAI;QACJ,GAAG,SAAS;KACf,CAAC;AAAA,CACL;AAoBD,SAAS,kBAAkB,GAAkB;IACzC,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;AAAA,CACL;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAqC,EAAkB;IAC5F,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;AAAA,CACN"}
@@ -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"}