@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,4 @@
1
+ export type { EventMetrics, LanguageModelUsage, ExecutionMetadata } from './types.js';
2
+ export type { Logger, LogLevel, LLMCallLogType, LLMCallStartEvent, LLMCallEndEvent, ExecutionStartEvent, ExecutionEmitEvent, ExecutionDoneEvent, ExecutionErrorEvent, } from './logger.js';
3
+ export { noopLogger, createLogger } from './logger.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtF,YAAY,EACV,MAAM,EACN,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { noopLogger, createLogger } from './logger.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,161 @@
1
+ import type { LanguageModelUsage } from 'ai';
2
+ import type { SessionSummary } from '../session/types.js';
3
+ /**
4
+ * Logger interface for observability.
5
+ * All methods are optional - implement only the events you care about.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const myLogger: Logger = {
10
+ * onLLMCallEnd(event) {
11
+ * console.log(`${event.modelId}: ${event.response.duration}ms`);
12
+ * },
13
+ * onExecutionDone(event) {
14
+ * console.log('Total duration:', event.duration);
15
+ * },
16
+ * };
17
+ * ```
18
+ */
19
+ export interface Logger {
20
+ onLLMCallStart?(event: LLMCallStartEvent): void;
21
+ onLLMCallEnd?(event: LLMCallEndEvent): void;
22
+ onExecutionStart?(event: ExecutionStartEvent): void;
23
+ onExecutionEmit?<TEvent>(event: ExecutionEmitEvent<TEvent>): void;
24
+ onExecutionDone?<TResult>(event: ExecutionDoneEvent<TResult>): void;
25
+ onExecutionError?<TResult>(event: ExecutionErrorEvent<TResult>): void;
26
+ log?(level: LogLevel, message: string, data?: Record<string, unknown>): void;
27
+ }
28
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
29
+ export type LLMCallLogType = 'generateText' | 'streamText';
30
+ /**
31
+ * Event emitted when an LLM call starts.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * logger.onLLMCallStart?.({
36
+ * type: 'llm_call_start',
37
+ * callType: 'generateText',
38
+ * modelId: 'gemini-2.5-flash',
39
+ * timestamp: Date.now(),
40
+ * request: { params: { prompt: 'Hello' } },
41
+ * });
42
+ * ```
43
+ */
44
+ export interface LLMCallStartEvent {
45
+ type: 'llm_call_start';
46
+ callType: LLMCallLogType;
47
+ modelId: string;
48
+ timestamp: number;
49
+ request: {
50
+ params: Record<string, unknown>;
51
+ };
52
+ }
53
+ /**
54
+ * Event emitted when an LLM call ends (success or error).
55
+ *
56
+ * @example Success case:
57
+ * ```typescript
58
+ * logger.onLLMCallEnd?.({
59
+ * type: 'llm_call_end',
60
+ * callType: 'generateText',
61
+ * modelId: 'gemini-2.5-flash',
62
+ * timestamp: Date.now(),
63
+ * response: {
64
+ * duration: 1500,
65
+ * usage: { inputTokens: 100, outputTokens: 50, totalTokens: 150 },
66
+ * raw: result,
67
+ * },
68
+ * });
69
+ * ```
70
+ *
71
+ * @example Error case:
72
+ * ```typescript
73
+ * logger.onLLMCallEnd?.({
74
+ * type: 'llm_call_end',
75
+ * callType: 'streamText',
76
+ * modelId: 'gpt-4o',
77
+ * timestamp: Date.now(),
78
+ * response: {
79
+ * duration: 500,
80
+ * error: new Error('Rate limit exceeded'),
81
+ * raw: null,
82
+ * },
83
+ * });
84
+ * ```
85
+ */
86
+ export interface LLMCallEndEvent {
87
+ type: 'llm_call_end';
88
+ callType: LLMCallLogType;
89
+ modelId: string;
90
+ timestamp: number;
91
+ response: {
92
+ duration: number;
93
+ usage?: LanguageModelUsage;
94
+ raw: unknown;
95
+ error?: Error;
96
+ };
97
+ }
98
+ export interface ExecutionStartEvent {
99
+ type: 'execution_start';
100
+ timestamp: number;
101
+ }
102
+ /**
103
+ * Event emitted for each intermediate event during execution.
104
+ * @typeParam TEvent - The type of the emitted event (includes metrics)
105
+ */
106
+ export interface ExecutionEmitEvent<TEvent = unknown> {
107
+ type: 'execution_emit';
108
+ event: TEvent;
109
+ }
110
+ /**
111
+ * Event emitted when execution completes successfully.
112
+ * @typeParam TResult - The type of the execution result
113
+ */
114
+ export interface ExecutionDoneEvent<TResult = unknown> {
115
+ type: 'execution_done';
116
+ timestamp: number;
117
+ duration: number;
118
+ data: TResult;
119
+ summary: SessionSummary;
120
+ }
121
+ /**
122
+ * Event emitted when execution fails with an error.
123
+ * @typeParam TResult - The type of partial result data (if available)
124
+ */
125
+ export interface ExecutionErrorEvent<TResult = unknown> {
126
+ type: 'execution_error';
127
+ timestamp: number;
128
+ duration: number;
129
+ error: Error;
130
+ data?: TResult;
131
+ summary?: SessionSummary;
132
+ }
133
+ /**
134
+ * No-op logger (default when no logger provided).
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * const provider = createGoogleProvider({
139
+ * apiKey: 'xxx',
140
+ * logger: noopLogger,
141
+ * });
142
+ * ```
143
+ */
144
+ export declare const noopLogger: Logger;
145
+ /**
146
+ * Helper to create a logger with only the handlers you need.
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * const metricsLogger = createLogger({
151
+ * onLLMCallEnd(event) {
152
+ * metrics.recordLatency(event.response.duration);
153
+ * },
154
+ * onExecutionDone(event) {
155
+ * metrics.recordTokens(event.summary.totalLLMUsage.totalTokens);
156
+ * },
157
+ * });
158
+ * ```
159
+ */
160
+ export declare function createLogger(handlers: Partial<Logger>): Logger;
161
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/observability/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * No-op logger (default when no logger provided).
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * const provider = createGoogleProvider({
7
+ * apiKey: 'xxx',
8
+ * logger: noopLogger,
9
+ * });
10
+ * ```
11
+ */
12
+ export const noopLogger = {};
13
+ /**
14
+ * Helper to create a logger with only the handlers you need.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const metricsLogger = createLogger({
19
+ * onLLMCallEnd(event) {
20
+ * metrics.recordLatency(event.response.duration);
21
+ * },
22
+ * onExecutionDone(event) {
23
+ * metrics.recordTokens(event.summary.totalLLMUsage.totalTokens);
24
+ * },
25
+ * });
26
+ * ```
27
+ */
28
+ export function createLogger(handlers) {
29
+ return handlers;
30
+ }
31
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/observability/logger.ts"],"names":[],"mappings":"AA8IA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAW,EAAE,CAAC;AAErC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,QAAyB;IACpD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { LanguageModelUsage } from 'ai';
2
+ /**
3
+ * Timing metrics attached to each streaming event.
4
+ * Enables performance monitoring and latency debugging.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * const event = {
9
+ * type: 'progress',
10
+ * message: 'Processing...',
11
+ * metrics: {
12
+ * timestamp: Date.now(),
13
+ * elapsedMs: 150,
14
+ * deltaMs: 50,
15
+ * },
16
+ * };
17
+ * ```
18
+ */
19
+ export interface EventMetrics {
20
+ timestamp: number;
21
+ elapsedMs: number;
22
+ deltaMs: number;
23
+ }
24
+ export type { LanguageModelUsage } from 'ai';
25
+ /**
26
+ * Metadata collected during agent execution.
27
+ * Available after execution completes via `getSummary()`.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const metadata: ExecutionMetadata = {
32
+ * duration: 1250,
33
+ * usage: {
34
+ * inputTokens: 500,
35
+ * outputTokens: 200,
36
+ * totalTokens: 700,
37
+ * },
38
+ * };
39
+ * ```
40
+ */
41
+ export interface ExecutionMetadata {
42
+ duration: number;
43
+ languageModelUsage?: LanguageModelUsage;
44
+ [key: string]: unknown;
45
+ }
46
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/observability/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAE7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,YAAY,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAE7C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/observability/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './progressive/index.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './progressive/index.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { defineProgressivePattern, ProgressivePattern, TOOL_CALLING_PROTOCOL, type ProgressiveStreamOptions, type ProgressEvent, type CompleteEvent, } from './progressive-pattern.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/patterns/progressive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { defineProgressivePattern, ProgressivePattern, TOOL_CALLING_PROTOCOL, } from './progressive-pattern.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/patterns/progressive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,GAItB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,174 @@
1
+ import { type StopCondition, type ToolSet } from 'ai';
2
+ import { z } from 'zod';
3
+ import type { ErrorEvent, SessionEvent } from '../../execution/types.js';
4
+ import type { BaseProvider } from '../../provider/base-provider.js';
5
+ import type { StreamingSession } from '../../session/streaming-session.js';
6
+ import type { StreamTextParams } from '../../session/types.js';
7
+ export type ProgressiveStreamOptions<TUserTools extends ToolSet = {}> = Omit<StreamTextParams<TUserTools>, 'tools' | 'toolChoice' | 'stopWhen'> & {
8
+ tools?: TUserTools;
9
+ /**
10
+ * Additional stop conditions. Will be combined with the default
11
+ * `hasToolCall('submitResult')`.
12
+ */
13
+ stopWhen?: StopCondition<ToolSet> | StopCondition<ToolSet>[];
14
+ /**
15
+ * Custom protocol instructions appended to the system prompt.
16
+ * If not provided, uses the default TOOL_CALLING_PROTOCOL.
17
+ */
18
+ protocol?: string;
19
+ };
20
+ /**
21
+ * Progress event - pure domain event without metrics.
22
+ * Framework automatically wraps with SessionEvent at runtime.
23
+ */
24
+ export interface ProgressEvent<TProgress> {
25
+ type: 'progress';
26
+ data: TProgress;
27
+ }
28
+ /**
29
+ * Complete event - pure domain event without metrics.
30
+ * Framework automatically wraps with SessionEvent at runtime.
31
+ */
32
+ export interface CompleteEvent<TResult> {
33
+ type: 'complete';
34
+ data: TResult;
35
+ summary: unknown;
36
+ }
37
+ export declare const TOOL_CALLING_PROTOCOL = "## CRITICAL INSTRUCTION - READ CAREFULLY\n\nYou have 2 tools available:\n1. reportProgress - [OPTIONAL] Show intermediate work (multiple times)\n2. submitResult - [REQUIRED] Submit your final answer\n\n\u26A0\uFE0F IMPORTANT RULES:\n- You may call reportProgress 0-3 times to show progress\n- You MUST call submitResult exactly once to complete the task\n- After calling reportProgress, you MUST call submitResult in your NEXT response\n- If you call reportProgress more than 3 times without submitResult, the task FAILS\n- The task is NOT complete until submitResult is called\n\nCORRECT SEQUENCE:\n1. [Optional] reportProgress\n2. [Required] submitResult (exactly once)\n\n\u274C WRONG: reportProgress \u2192 reportProgress \u2192 reportProgress \u2192 reportProgress (no submitResult = FAIL)\n\u2705 CORRECT: reportProgress \u2192 submitResult (SUCCESS)";
38
+ /**
39
+ * Creates a progressive pattern for streaming LLM responses with intermediate progress updates.
40
+ *
41
+ * The pattern automatically:
42
+ * - Injects `reportProgress` and `submitResult` tools
43
+ * - Stops when `submitResult` is called (via `hasToolCall('submitResult')`)
44
+ * - Appends protocol instructions to the system prompt
45
+ *
46
+ * @example Basic usage
47
+ * ```typescript
48
+ * const pattern = defineProgressivePattern({
49
+ * progressSchema: z.object({ stage: z.string(), message: z.string() }),
50
+ * resultSchema: z.object({ summary: z.string(), score: z.number() }),
51
+ * });
52
+ *
53
+ * for await (const event of pattern.run(provider, {
54
+ * system: 'You are an analyzer.',
55
+ * prompt: 'Analyze this...',
56
+ * })) {
57
+ * console.log(event.type, event.data);
58
+ * }
59
+ * ```
60
+ *
61
+ * @example With custom stopWhen (add step limit)
62
+ * ```typescript
63
+ * import { stepCountIs } from 'ai';
64
+ *
65
+ * for await (const event of pattern.run(provider, {
66
+ * prompt: 'Analyze...',
67
+ * stopWhen: stepCountIs(10), // Stop at submitResult OR after 10 steps
68
+ * })) { ... }
69
+ * ```
70
+ *
71
+ * @example With custom protocol
72
+ * ```typescript
73
+ * for await (const event of pattern.run(provider, {
74
+ * prompt: 'Analyze...',
75
+ * protocol: 'Call reportProgress for each step, then submitResult.',
76
+ * })) { ... }
77
+ * ```
78
+ *
79
+ * @example Composable (within a session)
80
+ * ```typescript
81
+ * provider.streamingExecution(async function*(session) {
82
+ * yield* pattern.runInSession(session, {
83
+ * system: 'You are an analyzer.',
84
+ * messages: [...],
85
+ * });
86
+ * });
87
+ * ```
88
+ */
89
+ export declare function defineProgressivePattern<TProgressSchema extends z.ZodType, TResultSchema extends z.ZodType>(config: {
90
+ progressSchema: TProgressSchema;
91
+ resultSchema: TResultSchema;
92
+ }): ProgressivePattern<TProgressSchema, TResultSchema, z.TypeOf<TProgressSchema>, z.TypeOf<TResultSchema>, {
93
+ type: string;
94
+ }>;
95
+ export declare class ProgressivePattern<TProgressSchema extends z.ZodType, TResultSchema extends z.ZodType, TProgress = z.infer<TProgressSchema>, TResult = z.infer<TResultSchema>, TEvent extends {
96
+ type: string;
97
+ } = {
98
+ type: string;
99
+ }> {
100
+ readonly progressSchema: TProgressSchema;
101
+ readonly resultSchema: TResultSchema;
102
+ constructor(progressSchema: TProgressSchema, resultSchema: TResultSchema);
103
+ private lastParseError;
104
+ /**
105
+ * Runs the pattern within an existing session. Use this for composing
106
+ * multiple patterns or when you need fine-grained control over the session.
107
+ *
108
+ * @param session - The streaming session to run within
109
+ * @param options - Stream options including:
110
+ * - `stopWhen` - Additional stop conditions (combined with default `hasToolCall('submitResult')`)
111
+ * - `protocol` - Custom protocol instructions (replaces default `TOOL_CALLING_PROTOCOL`)
112
+ * - All other `streamText` options except `tools`, `toolChoice`, `stopWhen`
113
+ *
114
+ * @example Basic usage
115
+ * ```typescript
116
+ * provider.streamingExecution(async function*(session) {
117
+ * yield* pattern.runInSession(session, {
118
+ * system: 'You are an analyzer.',
119
+ * messages: [{ role: 'user', content: 'Analyze...' }],
120
+ * });
121
+ * });
122
+ * ```
123
+ *
124
+ * @example With custom stopWhen
125
+ * ```typescript
126
+ * yield* pattern.runInSession(session, {
127
+ * prompt: 'Analyze...',
128
+ * stopWhen: stepCountIs(5), // Combined: submitResult OR 5 steps
129
+ * });
130
+ * ```
131
+ */
132
+ runInSession<TUserTools extends ToolSet = {}>(session: StreamingSession<TEvent>, options: ProgressiveStreamOptions<TUserTools>): AsyncGenerator<SessionEvent<TEvent>, SessionEvent<TEvent>, undefined>;
133
+ /**
134
+ * Standalone execution that creates a new session internally.
135
+ * Use this for simple, single-pattern executions.
136
+ *
137
+ * @param provider - The AI provider to use
138
+ * @param options - Stream options including:
139
+ * - `stopWhen` - Additional stop conditions (combined with default `hasToolCall('submitResult')`)
140
+ * - `protocol` - Custom protocol instructions (replaces default `TOOL_CALLING_PROTOCOL`)
141
+ *
142
+ * @example Basic usage
143
+ * ```typescript
144
+ * for await (const event of pattern.run(provider, {
145
+ * system: 'You are an analyzer.',
146
+ * prompt: 'Analyze this document...',
147
+ * })) {
148
+ * if (event.type === 'progress') {
149
+ * console.log('Progress:', event.data);
150
+ * } else if (event.type === 'complete') {
151
+ * console.log('Result:', event.data);
152
+ * }
153
+ * }
154
+ * ```
155
+ *
156
+ * @example With step limit
157
+ * ```typescript
158
+ * import { stepCountIs } from 'ai';
159
+ *
160
+ * for await (const event of pattern.run(provider, {
161
+ * prompt: 'Analyze...',
162
+ * stopWhen: stepCountIs(10),
163
+ * })) { ... }
164
+ * ```
165
+ */
166
+ run<TUserTools extends ToolSet = {}>(provider: BaseProvider, options: ProgressiveStreamOptions<TUserTools>): AsyncIterable<SessionEvent<TEvent | ErrorEvent>>;
167
+ private createTools;
168
+ private parseJsonWrapper;
169
+ private parseProgressInput;
170
+ private parseResultInput;
171
+ private combineStopConditions;
172
+ private renderSystemPrompt;
173
+ }
174
+ //# sourceMappingURL=progressive-pattern.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressive-pattern.d.ts","sourceRoot":"","sources":["../../../src/patterns/progressive/progressive-pattern.ts"],"names":[],"mappings":"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"}