@llm4ts/core 0.1.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 (284) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/AgentSession.d.ts +66 -0
  4. package/dist/AgentSession.d.ts.map +1 -0
  5. package/dist/AgentSession.js +53 -0
  6. package/dist/AgentSession.js.map +1 -0
  7. package/dist/Capability.d.ts +101 -0
  8. package/dist/Capability.d.ts.map +1 -0
  9. package/dist/Capability.js +210 -0
  10. package/dist/Capability.js.map +1 -0
  11. package/dist/Connector.d.ts +69 -0
  12. package/dist/Connector.d.ts.map +1 -0
  13. package/dist/Connector.js +86 -0
  14. package/dist/Connector.js.map +1 -0
  15. package/dist/ConnectorConfig.d.ts +70 -0
  16. package/dist/ConnectorConfig.d.ts.map +1 -0
  17. package/dist/ConnectorConfig.js +110 -0
  18. package/dist/ConnectorConfig.js.map +1 -0
  19. package/dist/ConnectorRegistry.d.ts +28 -0
  20. package/dist/ConnectorRegistry.d.ts.map +1 -0
  21. package/dist/ConnectorRegistry.js +87 -0
  22. package/dist/ConnectorRegistry.js.map +1 -0
  23. package/dist/ContextManagement.d.ts +78 -0
  24. package/dist/ContextManagement.d.ts.map +1 -0
  25. package/dist/ContextManagement.js +221 -0
  26. package/dist/ContextManagement.js.map +1 -0
  27. package/dist/Conversation.d.ts +18 -0
  28. package/dist/Conversation.d.ts.map +1 -0
  29. package/dist/Conversation.js +17 -0
  30. package/dist/Conversation.js.map +1 -0
  31. package/dist/Errors.d.ts +64 -0
  32. package/dist/Errors.d.ts.map +1 -0
  33. package/dist/Errors.js +76 -0
  34. package/dist/Errors.js.map +1 -0
  35. package/dist/HttpClient.d.ts +43 -0
  36. package/dist/HttpClient.d.ts.map +1 -0
  37. package/dist/HttpClient.js +99 -0
  38. package/dist/HttpClient.js.map +1 -0
  39. package/dist/LlmService.d.ts +24 -0
  40. package/dist/LlmService.d.ts.map +1 -0
  41. package/dist/LlmService.js +4 -0
  42. package/dist/LlmService.js.map +1 -0
  43. package/dist/Models.d.ts +138 -0
  44. package/dist/Models.d.ts.map +1 -0
  45. package/dist/Models.js +209 -0
  46. package/dist/Models.js.map +1 -0
  47. package/dist/ProcessExecutor.d.ts +57 -0
  48. package/dist/ProcessExecutor.d.ts.map +1 -0
  49. package/dist/ProcessExecutor.js +71 -0
  50. package/dist/ProcessExecutor.js.map +1 -0
  51. package/dist/RateLimiter.d.ts +44 -0
  52. package/dist/RateLimiter.d.ts.map +1 -0
  53. package/dist/RateLimiter.js +155 -0
  54. package/dist/RateLimiter.js.map +1 -0
  55. package/dist/Streaming.d.ts +17 -0
  56. package/dist/Streaming.d.ts.map +1 -0
  57. package/dist/Streaming.js +65 -0
  58. package/dist/Streaming.js.map +1 -0
  59. package/dist/StructuredOutput.d.ts +10 -0
  60. package/dist/StructuredOutput.d.ts.map +1 -0
  61. package/dist/StructuredOutput.js +97 -0
  62. package/dist/StructuredOutput.js.map +1 -0
  63. package/dist/TemporaryFiles.d.ts +20 -0
  64. package/dist/TemporaryFiles.d.ts.map +1 -0
  65. package/dist/TemporaryFiles.js +18 -0
  66. package/dist/TemporaryFiles.js.map +1 -0
  67. package/dist/UsageLimits.d.ts +5 -0
  68. package/dist/UsageLimits.d.ts.map +1 -0
  69. package/dist/UsageLimits.js +187 -0
  70. package/dist/UsageLimits.js.map +1 -0
  71. package/dist/eval/Checks.d.ts +6 -0
  72. package/dist/eval/Checks.d.ts.map +1 -0
  73. package/dist/eval/Checks.js +39 -0
  74. package/dist/eval/Checks.js.map +1 -0
  75. package/dist/eval/Eval.d.ts +57 -0
  76. package/dist/eval/Eval.d.ts.map +1 -0
  77. package/dist/eval/Eval.js +91 -0
  78. package/dist/eval/Eval.js.map +1 -0
  79. package/dist/eval/EvalSuite.d.ts +21 -0
  80. package/dist/eval/EvalSuite.d.ts.map +1 -0
  81. package/dist/eval/EvalSuite.js +30 -0
  82. package/dist/eval/EvalSuite.js.map +1 -0
  83. package/dist/eval/Evaluator.d.ts +10 -0
  84. package/dist/eval/Evaluator.d.ts.map +1 -0
  85. package/dist/eval/Evaluator.js +14 -0
  86. package/dist/eval/Evaluator.js.map +1 -0
  87. package/dist/eval/Judge.d.ts +15 -0
  88. package/dist/eval/Judge.d.ts.map +1 -0
  89. package/dist/eval/Judge.js +73 -0
  90. package/dist/eval/Judge.js.map +1 -0
  91. package/dist/observability/MeteredLlmService.d.ts +16 -0
  92. package/dist/observability/MeteredLlmService.d.ts.map +1 -0
  93. package/dist/observability/MeteredLlmService.js +66 -0
  94. package/dist/observability/MeteredLlmService.js.map +1 -0
  95. package/dist/observability/Metrics.d.ts +71 -0
  96. package/dist/observability/Metrics.d.ts.map +1 -0
  97. package/dist/observability/Metrics.js +147 -0
  98. package/dist/observability/Metrics.js.map +1 -0
  99. package/dist/observability/Redaction.d.ts +8 -0
  100. package/dist/observability/Redaction.d.ts.map +1 -0
  101. package/dist/observability/Redaction.js +38 -0
  102. package/dist/observability/Redaction.js.map +1 -0
  103. package/dist/observability/StreamRecorder.d.ts +9 -0
  104. package/dist/observability/StreamRecorder.d.ts.map +1 -0
  105. package/dist/observability/StreamRecorder.js +10 -0
  106. package/dist/observability/StreamRecorder.js.map +1 -0
  107. package/dist/observability/StructuredLogger.d.ts +31 -0
  108. package/dist/observability/StructuredLogger.d.ts.map +1 -0
  109. package/dist/observability/StructuredLogger.js +34 -0
  110. package/dist/observability/StructuredLogger.js.map +1 -0
  111. package/dist/observability/Tracing.d.ts +38 -0
  112. package/dist/observability/Tracing.d.ts.map +1 -0
  113. package/dist/observability/Tracing.js +75 -0
  114. package/dist/observability/Tracing.js.map +1 -0
  115. package/dist/providers/AnthropicModels.d.ts +95 -0
  116. package/dist/providers/AnthropicModels.d.ts.map +1 -0
  117. package/dist/providers/AnthropicModels.js +83 -0
  118. package/dist/providers/AnthropicModels.js.map +1 -0
  119. package/dist/providers/AnthropicProvider.d.ts +13 -0
  120. package/dist/providers/AnthropicProvider.d.ts.map +1 -0
  121. package/dist/providers/AnthropicProvider.js +177 -0
  122. package/dist/providers/AnthropicProvider.js.map +1 -0
  123. package/dist/providers/AntigravityConnector.d.ts +7 -0
  124. package/dist/providers/AntigravityConnector.d.ts.map +1 -0
  125. package/dist/providers/AntigravityConnector.js +52 -0
  126. package/dist/providers/AntigravityConnector.js.map +1 -0
  127. package/dist/providers/ClaudeAgentSession.d.ts +11 -0
  128. package/dist/providers/ClaudeAgentSession.d.ts.map +1 -0
  129. package/dist/providers/ClaudeAgentSession.js +158 -0
  130. package/dist/providers/ClaudeAgentSession.js.map +1 -0
  131. package/dist/providers/ClaudeCliConnector.d.ts +9 -0
  132. package/dist/providers/ClaudeCliConnector.d.ts.map +1 -0
  133. package/dist/providers/ClaudeCliConnector.js +123 -0
  134. package/dist/providers/ClaudeCliConnector.js.map +1 -0
  135. package/dist/providers/CliSupport.d.ts +21 -0
  136. package/dist/providers/CliSupport.d.ts.map +1 -0
  137. package/dist/providers/CliSupport.js +62 -0
  138. package/dist/providers/CliSupport.js.map +1 -0
  139. package/dist/providers/CodexConnector.d.ts +12 -0
  140. package/dist/providers/CodexConnector.d.ts.map +1 -0
  141. package/dist/providers/CodexConnector.js +175 -0
  142. package/dist/providers/CodexConnector.js.map +1 -0
  143. package/dist/providers/ConnectorFactories.d.ts +15 -0
  144. package/dist/providers/ConnectorFactories.d.ts.map +1 -0
  145. package/dist/providers/ConnectorFactories.js +74 -0
  146. package/dist/providers/ConnectorFactories.js.map +1 -0
  147. package/dist/providers/CopilotConnector.d.ts +6 -0
  148. package/dist/providers/CopilotConnector.d.ts.map +1 -0
  149. package/dist/providers/CopilotConnector.js +35 -0
  150. package/dist/providers/CopilotConnector.js.map +1 -0
  151. package/dist/providers/CursorConnector.d.ts +8 -0
  152. package/dist/providers/CursorConnector.d.ts.map +1 -0
  153. package/dist/providers/CursorConnector.js +82 -0
  154. package/dist/providers/CursorConnector.js.map +1 -0
  155. package/dist/providers/GeminiApiProvider.d.ts +9 -0
  156. package/dist/providers/GeminiApiProvider.d.ts.map +1 -0
  157. package/dist/providers/GeminiApiProvider.js +181 -0
  158. package/dist/providers/GeminiApiProvider.js.map +1 -0
  159. package/dist/providers/GeminiCliProvider.d.ts +106 -0
  160. package/dist/providers/GeminiCliProvider.d.ts.map +1 -0
  161. package/dist/providers/GeminiCliProvider.js +596 -0
  162. package/dist/providers/GeminiCliProvider.js.map +1 -0
  163. package/dist/providers/GeminiModels.d.ts +92 -0
  164. package/dist/providers/GeminiModels.d.ts.map +1 -0
  165. package/dist/providers/GeminiModels.js +80 -0
  166. package/dist/providers/GeminiModels.js.map +1 -0
  167. package/dist/providers/GrokCliConnector.d.ts +8 -0
  168. package/dist/providers/GrokCliConnector.d.ts.map +1 -0
  169. package/dist/providers/GrokCliConnector.js +82 -0
  170. package/dist/providers/GrokCliConnector.js.map +1 -0
  171. package/dist/providers/LmStudioModels.d.ts +114 -0
  172. package/dist/providers/LmStudioModels.d.ts.map +1 -0
  173. package/dist/providers/LmStudioModels.js +102 -0
  174. package/dist/providers/LmStudioModels.js.map +1 -0
  175. package/dist/providers/LmStudioProvider.d.ts +13 -0
  176. package/dist/providers/LmStudioProvider.d.ts.map +1 -0
  177. package/dist/providers/LmStudioProvider.js +158 -0
  178. package/dist/providers/LmStudioProvider.js.map +1 -0
  179. package/dist/providers/MockProvider.d.ts +6 -0
  180. package/dist/providers/MockProvider.d.ts.map +1 -0
  181. package/dist/providers/MockProvider.js +271 -0
  182. package/dist/providers/MockProvider.js.map +1 -0
  183. package/dist/providers/OllamaModels.d.ts +68 -0
  184. package/dist/providers/OllamaModels.d.ts.map +1 -0
  185. package/dist/providers/OllamaModels.js +59 -0
  186. package/dist/providers/OllamaModels.js.map +1 -0
  187. package/dist/providers/OllamaProvider.d.ts +7 -0
  188. package/dist/providers/OllamaProvider.d.ts.map +1 -0
  189. package/dist/providers/OllamaProvider.js +134 -0
  190. package/dist/providers/OllamaProvider.js.map +1 -0
  191. package/dist/providers/OpenAIModels.d.ts +139 -0
  192. package/dist/providers/OpenAIModels.d.ts.map +1 -0
  193. package/dist/providers/OpenAIModels.js +123 -0
  194. package/dist/providers/OpenAIModels.js.map +1 -0
  195. package/dist/providers/OpenAIProvider.d.ts +9 -0
  196. package/dist/providers/OpenAIProvider.d.ts.map +1 -0
  197. package/dist/providers/OpenAIProvider.js +185 -0
  198. package/dist/providers/OpenAIProvider.js.map +1 -0
  199. package/dist/providers/OpenCodeCliConnector.d.ts +8 -0
  200. package/dist/providers/OpenCodeCliConnector.d.ts.map +1 -0
  201. package/dist/providers/OpenCodeCliConnector.js +93 -0
  202. package/dist/providers/OpenCodeCliConnector.js.map +1 -0
  203. package/dist/providers/OpenCodeModels.d.ts +61 -0
  204. package/dist/providers/OpenCodeModels.d.ts.map +1 -0
  205. package/dist/providers/OpenCodeModels.js +53 -0
  206. package/dist/providers/OpenCodeModels.js.map +1 -0
  207. package/dist/providers/OpenCodeProvider.d.ts +10 -0
  208. package/dist/providers/OpenCodeProvider.d.ts.map +1 -0
  209. package/dist/providers/OpenCodeProvider.js +154 -0
  210. package/dist/providers/OpenCodeProvider.js.map +1 -0
  211. package/dist/providers/PiConnector.d.ts +8 -0
  212. package/dist/providers/PiConnector.d.ts.map +1 -0
  213. package/dist/providers/PiConnector.js +99 -0
  214. package/dist/providers/PiConnector.js.map +1 -0
  215. package/dist/tools/Tool.d.ts +83 -0
  216. package/dist/tools/Tool.d.ts.map +1 -0
  217. package/dist/tools/Tool.js +278 -0
  218. package/dist/tools/Tool.js.map +1 -0
  219. package/dist/tools/ToolCallingExecutor.d.ts +18 -0
  220. package/dist/tools/ToolCallingExecutor.d.ts.map +1 -0
  221. package/dist/tools/ToolCallingExecutor.js +64 -0
  222. package/dist/tools/ToolCallingExecutor.js.map +1 -0
  223. package/dist/tools/ToolRegistry.d.ts +45 -0
  224. package/dist/tools/ToolRegistry.d.ts.map +1 -0
  225. package/dist/tools/ToolRegistry.js +133 -0
  226. package/dist/tools/ToolRegistry.js.map +1 -0
  227. package/package.json +105 -0
  228. package/src/.gitkeep +1 -0
  229. package/src/AgentSession.ts +69 -0
  230. package/src/Capability.ts +240 -0
  231. package/src/Connector.ts +220 -0
  232. package/src/ConnectorConfig.ts +146 -0
  233. package/src/ConnectorRegistry.ts +184 -0
  234. package/src/ContextManagement.ts +372 -0
  235. package/src/Conversation.ts +21 -0
  236. package/src/Errors.ts +87 -0
  237. package/src/HttpClient.ts +202 -0
  238. package/src/LlmService.ts +45 -0
  239. package/src/Models.ts +250 -0
  240. package/src/ProcessExecutor.ts +157 -0
  241. package/src/RateLimiter.ts +238 -0
  242. package/src/Streaming.ts +164 -0
  243. package/src/StructuredOutput.ts +138 -0
  244. package/src/TemporaryFiles.ts +51 -0
  245. package/src/UsageLimits.ts +242 -0
  246. package/src/eval/Checks.ts +68 -0
  247. package/src/eval/Eval.ts +112 -0
  248. package/src/eval/EvalSuite.ts +63 -0
  249. package/src/eval/Evaluator.ts +31 -0
  250. package/src/eval/Judge.ts +92 -0
  251. package/src/observability/MeteredLlmService.ts +156 -0
  252. package/src/observability/Metrics.ts +195 -0
  253. package/src/observability/Redaction.ts +55 -0
  254. package/src/observability/StreamRecorder.ts +32 -0
  255. package/src/observability/StructuredLogger.ts +62 -0
  256. package/src/observability/Tracing.ts +141 -0
  257. package/src/providers/AnthropicModels.ts +96 -0
  258. package/src/providers/AnthropicProvider.ts +320 -0
  259. package/src/providers/AntigravityConnector.ts +77 -0
  260. package/src/providers/ClaudeAgentSession.ts +226 -0
  261. package/src/providers/ClaudeCliConnector.ts +201 -0
  262. package/src/providers/CliSupport.ts +100 -0
  263. package/src/providers/CodexConnector.ts +251 -0
  264. package/src/providers/ConnectorFactories.ts +142 -0
  265. package/src/providers/CopilotConnector.ts +47 -0
  266. package/src/providers/CursorConnector.ts +120 -0
  267. package/src/providers/GeminiApiProvider.ts +337 -0
  268. package/src/providers/GeminiCliProvider.ts +793 -0
  269. package/src/providers/GeminiModels.ts +97 -0
  270. package/src/providers/GrokCliConnector.ts +117 -0
  271. package/src/providers/LmStudioModels.ts +117 -0
  272. package/src/providers/LmStudioProvider.ts +260 -0
  273. package/src/providers/MockProvider.ts +322 -0
  274. package/src/providers/OllamaModels.ts +64 -0
  275. package/src/providers/OllamaProvider.ts +236 -0
  276. package/src/providers/OpenAIModels.ts +152 -0
  277. package/src/providers/OpenAIProvider.ts +331 -0
  278. package/src/providers/OpenCodeCliConnector.ts +135 -0
  279. package/src/providers/OpenCodeModels.ts +60 -0
  280. package/src/providers/OpenCodeProvider.ts +278 -0
  281. package/src/providers/PiConnector.ts +142 -0
  282. package/src/tools/Tool.ts +379 -0
  283. package/src/tools/ToolCallingExecutor.ts +106 -0
  284. package/src/tools/ToolRegistry.ts +224 -0
@@ -0,0 +1,147 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Ref from "effect/Ref";
5
+ import * as Schema from "effect/Schema";
6
+ import { TokenUsage } from "../Models.js";
7
+ export class RequestLabels extends Schema.Class("RequestLabels")({
8
+ provider: Schema.String,
9
+ model: Schema.String,
10
+ agent: Schema.optionalKey(Schema.String),
11
+ runId: Schema.optionalKey(Schema.String),
12
+ workflowStep: Schema.optionalKey(Schema.String)
13
+ }) {
14
+ }
15
+ export class RequestMetrics extends Schema.Class("RequestMetrics")({
16
+ labels: RequestLabels,
17
+ tokenUsage: Schema.optionalKey(TokenUsage),
18
+ latencyMs: Schema.Number,
19
+ success: Schema.Boolean,
20
+ errorType: Schema.optionalKey(Schema.String),
21
+ estimatedCostUsd: Schema.optionalKey(Schema.Number)
22
+ }) {
23
+ }
24
+ export class ProviderHealth extends Schema.Class("ProviderHealth")({
25
+ provider: Schema.String,
26
+ requestCount: Schema.Int,
27
+ successRate: Schema.Number,
28
+ avgLatencyMs: Schema.Number,
29
+ p95LatencyMs: Schema.Number,
30
+ estimatedCostUsd: Schema.Number
31
+ }) {
32
+ }
33
+ export class ObservabilitySnapshot extends Schema.Class("ObservabilitySnapshot")({
34
+ totalRequests: Schema.Int,
35
+ totalErrors: Schema.Int,
36
+ activeRequests: Schema.Int,
37
+ promptTokens: Schema.Int,
38
+ completionTokens: Schema.Int,
39
+ totalTokens: Schema.Int,
40
+ estimatedCostUsd: Schema.Number,
41
+ p50LatencyMs: Schema.Number,
42
+ p95LatencyMs: Schema.Number,
43
+ byProvider: Schema.Array(ProviderHealth),
44
+ byAgentRequests: Schema.Record(Schema.String, Schema.Int)
45
+ }) {
46
+ }
47
+ export class DashboardMetricsSnapshot extends Schema.Class("DashboardMetricsSnapshot")({
48
+ providerHealth: Schema.Array(ProviderHealth),
49
+ totalTokens: Schema.Int,
50
+ totalCostUsd: Schema.Number,
51
+ totalRequests: Schema.Int,
52
+ errorRate: Schema.Number
53
+ }) {
54
+ }
55
+ export class MetricsCollector extends Context.Service()("@llm4ts/core/observability/MetricsCollector") {
56
+ }
57
+ const percentile = (values, quantile) => {
58
+ if (values.length === 0) {
59
+ return 0;
60
+ }
61
+ const sorted = [...values].sort((left, right) => left - right);
62
+ const index = Math.max(0, Math.ceil(quantile * sorted.length) - 1);
63
+ return sorted[index] ?? 0;
64
+ };
65
+ const providerHealth = (completed) => {
66
+ const providers = new Map();
67
+ for (const metric of completed) {
68
+ const current = providers.get(metric.labels.provider) ?? [];
69
+ current.push(metric);
70
+ providers.set(metric.labels.provider, current);
71
+ }
72
+ return [...providers.entries()]
73
+ .sort(([left], [right]) => left.localeCompare(right))
74
+ .map(([provider, metrics]) => {
75
+ const latencies = metrics.map((metric) => metric.latencyMs);
76
+ const successes = metrics.filter((metric) => metric.success).length;
77
+ return ProviderHealth.make({
78
+ provider,
79
+ requestCount: metrics.length,
80
+ successRate: metrics.length === 0 ? 1 : successes / metrics.length,
81
+ avgLatencyMs: metrics.length === 0
82
+ ? 0
83
+ : latencies.reduce((sum, latency) => sum + latency, 0) / metrics.length,
84
+ p95LatencyMs: percentile(latencies, 0.95),
85
+ estimatedCostUsd: metrics.reduce((sum, metric) => sum + (metric.estimatedCostUsd ?? 0), 0)
86
+ });
87
+ });
88
+ };
89
+ const toSnapshot = (state) => {
90
+ const completed = state.completed;
91
+ const promptTokens = completed.reduce((sum, metric) => sum + (metric.tokenUsage?.prompt ?? 0), 0);
92
+ const completionTokens = completed.reduce((sum, metric) => sum + (metric.tokenUsage?.completion ?? 0), 0);
93
+ return ObservabilitySnapshot.make({
94
+ totalRequests: state.totalRequests,
95
+ totalErrors: completed.filter((metric) => !metric.success).length,
96
+ activeRequests: state.activeRequests,
97
+ promptTokens,
98
+ completionTokens,
99
+ totalTokens: promptTokens + completionTokens,
100
+ estimatedCostUsd: completed.reduce((sum, metric) => sum + (metric.estimatedCostUsd ?? 0), 0),
101
+ p50LatencyMs: percentile(completed.map((metric) => metric.latencyMs), 0.5),
102
+ p95LatencyMs: percentile(completed.map((metric) => metric.latencyMs), 0.95),
103
+ byProvider: providerHealth(completed),
104
+ byAgentRequests: Object.fromEntries(state.byAgentRequests)
105
+ });
106
+ };
107
+ export const makeMetricsCollector = Effect.fn("@llm4ts/core/observability/MetricsCollector.make")(function* () {
108
+ const state = yield* Ref.make({
109
+ totalRequests: 0,
110
+ activeRequests: 0,
111
+ completed: [],
112
+ byAgentRequests: new Map()
113
+ });
114
+ const markRequestStarted = (labels) => Ref.update(state, (current) => {
115
+ const agents = new Map(current.byAgentRequests);
116
+ if (labels.agent !== undefined) {
117
+ agents.set(labels.agent, (agents.get(labels.agent) ?? 0) + 1);
118
+ }
119
+ return {
120
+ totalRequests: current.totalRequests + 1,
121
+ activeRequests: current.activeRequests + 1,
122
+ completed: current.completed,
123
+ byAgentRequests: agents
124
+ };
125
+ });
126
+ const recordCompleted = (metrics) => Ref.update(state, (current) => ({
127
+ ...current,
128
+ activeRequests: Math.max(0, current.activeRequests - 1),
129
+ completed: [...current.completed, metrics]
130
+ }));
131
+ const snapshot = Ref.get(state).pipe(Effect.map(toSnapshot));
132
+ const dashboardSnapshot = snapshot.pipe(Effect.map((current) => DashboardMetricsSnapshot.make({
133
+ providerHealth: current.byProvider,
134
+ totalTokens: current.totalTokens,
135
+ totalCostUsd: current.estimatedCostUsd,
136
+ totalRequests: current.totalRequests,
137
+ errorRate: current.totalRequests === 0 ? 0 : current.totalErrors / current.totalRequests
138
+ })));
139
+ return {
140
+ markRequestStarted,
141
+ recordCompleted,
142
+ snapshot,
143
+ dashboardSnapshot
144
+ };
145
+ });
146
+ export const MetricsCollectorLive = Layer.effect(MetricsCollector, makeMetricsCollector());
147
+ //# sourceMappingURL=Metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Metrics.js","sourceRoot":"","sources":["../../src/observability/Metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { JsonValue } from "../providers/CliSupport.ts";
2
+ export interface RedactionOptions {
3
+ readonly secrets?: ReadonlyArray<string>;
4
+ readonly maxLength?: number;
5
+ }
6
+ export declare const redactText: (text: string, options?: RedactionOptions) => string;
7
+ export declare const sanitizeFields: (fields: Readonly<Record<string, JsonValue>>, options?: RedactionOptions) => Readonly<Record<string, JsonValue>>;
8
+ //# sourceMappingURL=Redaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Redaction.d.ts","sourceRoot":"","sources":["../../src/observability/Redaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAQD,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,UAAS,gBAAqB,KAAG,MAYzE,CAAA;AAoBD,eAAO,MAAM,cAAc,GACzB,QAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAC3C,UAAS,gBAAqB,KAC7B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAMlC,CAAA"}
@@ -0,0 +1,38 @@
1
+ const sensitiveKey = /(?:api[-_]?key|authorization|cookie|password|secret|token)/i;
2
+ const credentialPatterns = [
3
+ /\bBearer\s+[A-Za-z0-9._~+/=-]+\b/gi,
4
+ /\b(?:sk|xox[baprs]|gh[opusr])[-_][A-Za-z0-9_-]{8,}\b/g
5
+ ];
6
+ export const redactText = (text, options = {}) => {
7
+ let redacted = text;
8
+ for (const secret of options.secrets ?? []) {
9
+ if (secret.length > 0) {
10
+ redacted = redacted.split(secret).join("[REDACTED]");
11
+ }
12
+ }
13
+ for (const pattern of credentialPatterns) {
14
+ redacted = redacted.replace(pattern, "[REDACTED]");
15
+ }
16
+ const maxLength = Math.max(0, options.maxLength ?? 2_048);
17
+ return redacted.length <= maxLength ? redacted : `${redacted.slice(0, maxLength)}…[TRUNCATED]`;
18
+ };
19
+ const sanitizeValue = (value, options) => {
20
+ if (typeof value === "string") {
21
+ return redactText(value, options);
22
+ }
23
+ if (Array.isArray(value)) {
24
+ return value.map((item) => sanitizeValue(item, options));
25
+ }
26
+ if (value !== null && typeof value === "object") {
27
+ return Object.fromEntries(Object.entries(value).map(([key, child]) => [
28
+ key,
29
+ sensitiveKey.test(key) ? "[REDACTED]" : sanitizeValue(child, options)
30
+ ]));
31
+ }
32
+ return value;
33
+ };
34
+ export const sanitizeFields = (fields, options = {}) => Object.fromEntries(Object.entries(fields).map(([key, value]) => [
35
+ key,
36
+ sensitiveKey.test(key) ? "[REDACTED]" : sanitizeValue(value, options)
37
+ ]));
38
+ //# sourceMappingURL=Redaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Redaction.js","sourceRoot":"","sources":["../../src/observability/Redaction.ts"],"names":[],"mappings":"AAOA,MAAM,YAAY,GAAG,6DAA6D,CAAA;AAClF,MAAM,kBAAkB,GAA0B;IAChD,oCAAoC;IACpC,uDAAuD;CACxD,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,UAA4B,EAAE,EAAU,EAAE;IACjF,IAAI,QAAQ,GAAG,IAAI,CAAA;IACnB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IACpD,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAA;IACzD,OAAO,QAAQ,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,cAAc,CAAA;AAChG,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,KAAgB,EAAE,OAAyB,EAAa,EAAE;IAC/E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IAC1D,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YAC1C,GAAG;YACH,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;SACtE,CAAC,CACH,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAA2C,EAC3C,UAA4B,EAAE,EACO,EAAE,CACvC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IAC3C,GAAG;IACH,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;CACtE,CAAC,CACH,CAAA"}
@@ -0,0 +1,9 @@
1
+ import * as Effect from "effect/Effect";
2
+ export interface StreamRecorder {
3
+ readonly rawLine: (provider: string, model: string | undefined, line: string) => Effect.Effect<void>;
4
+ readonly streamError: (provider: string, model: string | undefined, message: string) => Effect.Effect<void>;
5
+ }
6
+ export declare const noopStreamRecorder: StreamRecorder;
7
+ export declare const currentStreamRecorder: Effect.Effect<StreamRecorder>;
8
+ export declare const withStreamRecorder: (recorder: StreamRecorder) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
9
+ //# sourceMappingURL=StreamRecorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamRecorder.d.ts","sourceRoot":"","sources":["../../src/observability/StreamRecorder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,CAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,MAAM,KACT,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,CACpB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACzB;AAED,eAAO,MAAM,kBAAkB,EAAE,cAGhC,CAAA;AAOD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAyB,CAAA;AAEzF,eAAO,MAAM,kBAAkB,GAC5B,UAAU,cAAc,MACxB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACA,CAAA"}
@@ -0,0 +1,10 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ export const noopStreamRecorder = {
4
+ rawLine: (_provider, _model, _line) => Effect.void,
5
+ streamError: (_provider, _model, _message) => Effect.void
6
+ };
7
+ const CurrentStreamRecorder = Context.Reference("@llm4ts/core/observability/CurrentStreamRecorder", { defaultValue: () => noopStreamRecorder });
8
+ export const currentStreamRecorder = CurrentStreamRecorder;
9
+ export const withStreamRecorder = (recorder) => (effect) => Effect.provideService(effect, CurrentStreamRecorder, recorder);
10
+ //# sourceMappingURL=StreamRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamRecorder.js","sourceRoot":"","sources":["../../src/observability/StreamRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAevC,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI;IAClD,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI;CAC1D,CAAA;AAED,MAAM,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAC7C,kDAAkD,EAClD,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAC3C,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAkC,qBAAqB,CAAA;AAEzF,MAAM,CAAC,MAAM,kBAAkB,GAC7B,CAAC,QAAwB,EAAE,EAAE,CAC7B,CAAU,MAA8B,EAA0B,EAAE,CAClE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAA"}
@@ -0,0 +1,31 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Schema from "effect/Schema";
5
+ import type { JsonValue } from "../providers/CliSupport.ts";
6
+ import { type RedactionOptions } from "./Redaction.ts";
7
+ import type { TracingServiceShape } from "./Tracing.ts";
8
+ export declare const LogLevel: Schema.Literals<readonly ["Debug", "Info", "Warning", "Error"]>;
9
+ export type LogLevel = typeof LogLevel.Type;
10
+ declare const StructuredLogEvent_base: Schema.Class<StructuredLogEvent, Schema.Struct<{
11
+ readonly level: Schema.Literals<readonly ["Debug", "Info", "Warning", "Error"]>;
12
+ readonly message: Schema.String;
13
+ readonly correlationId: Schema.String;
14
+ readonly timestamp: Schema.Number;
15
+ readonly fields: Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>;
16
+ }>, {}>;
17
+ export declare class StructuredLogEvent extends StructuredLogEvent_base {
18
+ }
19
+ export interface StructuredLoggerShape {
20
+ readonly log: (level: LogLevel, message: string, fields?: Readonly<Record<string, JsonValue>>) => Effect.Effect<void>;
21
+ }
22
+ declare const StructuredLogger_base: Context.ServiceClass<StructuredLogger, "@llm4ts/core/observability/StructuredLogger", StructuredLoggerShape>;
23
+ export declare class StructuredLogger extends StructuredLogger_base {
24
+ }
25
+ export interface StructuredLoggerOptions extends RedactionOptions {
26
+ readonly sink: (event: StructuredLogEvent) => Effect.Effect<void>;
27
+ }
28
+ export declare const makeStructuredLogger: (tracing: TracingServiceShape, options: StructuredLoggerOptions) => StructuredLoggerShape;
29
+ export declare const StructuredLoggerNoop: Layer.Layer<StructuredLogger, never, never>;
30
+ export {};
31
+ //# sourceMappingURL=StructuredLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StructuredLogger.d.ts","sourceRoot":"","sources":["../../src/observability/StructuredLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAA8B,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEvD,eAAO,MAAM,QAAQ,iEAAyD,CAAA;AAC9E,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;;;;;;;;AAE3C,qBAAa,kBAAmB,SAAQ,uBAMtC;CAAG;AAEL,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,CACZ,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,KACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACzB;;AAED,qBAAa,gBAAiB,SAAQ,qBAErC;CAAG;AAEJ,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAClE;AAED,eAAO,MAAM,oBAAoB,GAC/B,SAAS,mBAAmB,EAC5B,SAAS,uBAAuB,KAC/B,qBAkBD,CAAA;AAEF,eAAO,MAAM,oBAAoB,6CAE/B,CAAA"}
@@ -0,0 +1,34 @@
1
+ import * as Clock from "effect/Clock";
2
+ import * as Context from "effect/Context";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import * as Schema from "effect/Schema";
6
+ import { redactText, sanitizeFields } from "./Redaction.js";
7
+ export const LogLevel = Schema.Literals(["Debug", "Info", "Warning", "Error"]);
8
+ export class StructuredLogEvent extends Schema.Class("StructuredLogEvent")({
9
+ level: LogLevel,
10
+ message: Schema.String,
11
+ correlationId: Schema.String,
12
+ timestamp: Schema.Number,
13
+ fields: Schema.Record(Schema.String, Schema.Json)
14
+ }) {
15
+ }
16
+ export class StructuredLogger extends Context.Service()("@llm4ts/core/observability/StructuredLogger") {
17
+ }
18
+ export const makeStructuredLogger = (tracing, options) => ({
19
+ log: Effect.fn("@llm4ts/core/observability/StructuredLogger.log")(function* (level, message, fields = {}) {
20
+ const correlationId = yield* tracing.correlationId;
21
+ const timestamp = yield* Clock.currentTimeMillis;
22
+ yield* options.sink(StructuredLogEvent.make({
23
+ level,
24
+ message: redactText(message, options),
25
+ correlationId,
26
+ timestamp,
27
+ fields: sanitizeFields(fields, options)
28
+ }));
29
+ })
30
+ });
31
+ export const StructuredLoggerNoop = Layer.succeed(StructuredLogger)({
32
+ log: (_level, _message, _fields) => Effect.void
33
+ });
34
+ //# sourceMappingURL=StructuredLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StructuredLogger.js","sourceRoot":"","sources":["../../src/observability/StructuredLogger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAyB,MAAM,gBAAgB,CAAA;AAGlF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;AAG9E,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,KAAK,CAAqB,oBAAoB,CAAC,CAAC;IAC7F,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,aAAa,EAAE,MAAM,CAAC,MAAM;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;CAClD,CAAC;CAAG;AAUL,MAAM,OAAO,gBAAiB,SAAQ,OAAO,CAAC,OAAO,EAA2C,CAC9F,6CAA6C,CAC9C;CAAG;AAMJ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAA4B,EAC5B,OAAgC,EACT,EAAE,CAAC,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,iDAAiD,CAAC,CAAC,QAAQ,CAAC,EACzE,KAAe,EACf,OAAe,EACf,SAA8C,EAAE;QAEhD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAA;QAClD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAA;QAChD,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CACjB,kBAAkB,CAAC,IAAI,CAAC;YACtB,KAAK;YACL,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;YACrC,aAAa;YACb,SAAS;YACT,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC;SACxC,CAAC,CACH,CAAA;IACH,CAAC,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClE,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI;CAChD,CAAC,CAAA"}
@@ -0,0 +1,38 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Schema from "effect/Schema";
5
+ import type { JsonValue } from "../providers/CliSupport.ts";
6
+ import { type RedactionOptions } from "./Redaction.ts";
7
+ export declare const TraceStatus: Schema.Literals<readonly ["Ok", "Error"]>;
8
+ export type TraceStatus = typeof TraceStatus.Type;
9
+ declare const TraceSpan_base: Schema.Class<TraceSpan, Schema.Struct<{
10
+ readonly traceId: Schema.String;
11
+ readonly spanId: Schema.String;
12
+ readonly parentSpanId: Schema.optionalKey<Schema.String>;
13
+ readonly correlationId: Schema.String;
14
+ readonly name: Schema.String;
15
+ readonly status: Schema.Literals<readonly ["Ok", "Error"]>;
16
+ readonly startedAt: Schema.Number;
17
+ readonly endedAt: Schema.Number;
18
+ readonly attributes: Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>;
19
+ readonly errorMessage: Schema.optionalKey<Schema.String>;
20
+ }>, {}>;
21
+ export declare class TraceSpan extends TraceSpan_base {
22
+ }
23
+ export interface TracingServiceShape {
24
+ readonly withCorrelationId: <A, E, R>(id: string, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
25
+ readonly correlationId: Effect.Effect<string>;
26
+ readonly inSpan: <A, E, R>(name: string, attributes: Readonly<Record<string, JsonValue>>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
27
+ readonly recordedSpans: Effect.Effect<ReadonlyArray<TraceSpan>>;
28
+ }
29
+ declare const TracingService_base: Context.ServiceClass<TracingService, "@llm4ts/core/observability/TracingService", TracingServiceShape>;
30
+ export declare class TracingService extends TracingService_base {
31
+ }
32
+ export interface TracingOptions extends RedactionOptions {
33
+ readonly makeId?: Effect.Effect<string>;
34
+ }
35
+ export declare const makeTracingService: (options?: TracingOptions | undefined) => Effect.Effect<TracingServiceShape, never, never>;
36
+ export declare const TracingServiceLive: Layer.Layer<TracingService, never, never>;
37
+ export {};
38
+ //# sourceMappingURL=Tracing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tracing.d.ts","sourceRoot":"","sources":["../../src/observability/Tracing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAA8B,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAElF,eAAO,MAAM,WAAW,2CAAmC,CAAA;AAC3D,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;;;;;;;;;;;;;AAEjD,qBAAa,SAAU,SAAQ,cAW7B;CAAG;AAaL,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAClC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACvB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;CAChE;;AAED,qBAAa,cAAe,SAAQ,mBAEnC;CAAG;AAEJ,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;CACxC;AAID,eAAO,MAAM,kBAAkB,4FA6E9B,CAAA;AAED,eAAO,MAAM,kBAAkB,2CAAqD,CAAA"}
@@ -0,0 +1,75 @@
1
+ import * as Clock from "effect/Clock";
2
+ import * as Context from "effect/Context";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Exit from "effect/Exit";
5
+ import * as Layer from "effect/Layer";
6
+ import * as Ref from "effect/Ref";
7
+ import * as Schema from "effect/Schema";
8
+ import { redactText, sanitizeFields } from "./Redaction.js";
9
+ export const TraceStatus = Schema.Literals(["Ok", "Error"]);
10
+ export class TraceSpan extends Schema.Class("TraceSpan")({
11
+ traceId: Schema.String,
12
+ spanId: Schema.String,
13
+ parentSpanId: Schema.optionalKey(Schema.String),
14
+ correlationId: Schema.String,
15
+ name: Schema.String,
16
+ status: TraceStatus,
17
+ startedAt: Schema.Number,
18
+ endedAt: Schema.Number,
19
+ attributes: Schema.Record(Schema.String, Schema.Json),
20
+ errorMessage: Schema.optionalKey(Schema.String)
21
+ }) {
22
+ }
23
+ const CurrentTraceContext = Context.Reference("@llm4ts/core/observability/CurrentTraceContext", { defaultValue: () => undefined });
24
+ export class TracingService extends Context.Service()("@llm4ts/core/observability/TracingService") {
25
+ }
26
+ const defaultId = Effect.sync(() => globalThis.crypto.randomUUID());
27
+ export const makeTracingService = Effect.fn("@llm4ts/core/observability/TracingService.make")(function* (options = {}) {
28
+ const spans = yield* Ref.make([]);
29
+ const makeId = options.makeId ?? defaultId;
30
+ const correlationId = Effect.flatMap(CurrentTraceContext, (current) => current === undefined ? makeId : Effect.succeed(current.correlationId));
31
+ const withCorrelationId = (id, effect) => Effect.flatMap(CurrentTraceContext, (current) => Effect.provideService(effect, CurrentTraceContext, {
32
+ traceId: current?.traceId ?? id,
33
+ spanId: current?.spanId ?? id,
34
+ correlationId: id
35
+ }));
36
+ const inSpan = (name, attributes, effect) => Effect.gen(function* () {
37
+ const parent = yield* CurrentTraceContext;
38
+ const correlation = yield* correlationId;
39
+ const traceId = parent?.traceId ?? (yield* makeId);
40
+ const spanId = yield* makeId;
41
+ const startedAt = yield* Clock.currentTimeMillis;
42
+ const next = {
43
+ traceId,
44
+ spanId,
45
+ correlationId: correlation
46
+ };
47
+ return yield* Effect.provideService(effect.pipe(Effect.onExit((exit) => Clock.currentTimeMillis.pipe(Effect.flatMap((endedAt) => Ref.update(spans, (current) => [
48
+ ...current,
49
+ TraceSpan.make({
50
+ traceId,
51
+ spanId,
52
+ ...(parent === undefined ? {} : { parentSpanId: parent.spanId }),
53
+ correlationId: correlation,
54
+ name,
55
+ status: Exit.isSuccess(exit) ? "Ok" : "Error",
56
+ startedAt,
57
+ endedAt,
58
+ attributes: sanitizeFields(attributes, options),
59
+ ...(Exit.isFailure(exit)
60
+ ? {
61
+ errorMessage: redactText(String(exit.cause), options)
62
+ }
63
+ : {})
64
+ })
65
+ ]))))), CurrentTraceContext, next);
66
+ });
67
+ return {
68
+ withCorrelationId,
69
+ correlationId,
70
+ inSpan,
71
+ recordedSpans: Ref.get(spans)
72
+ };
73
+ });
74
+ export const TracingServiceLive = Layer.effect(TracingService, makeTracingService());
75
+ //# sourceMappingURL=Tracing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tracing.js","sourceRoot":"","sources":["../../src/observability/Tracing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import * as Schema from "effect/Schema";
2
+ declare const AnthropicMessage_base: Schema.Class<AnthropicMessage, Schema.Struct<{
3
+ readonly role: Schema.String;
4
+ readonly content: Schema.String;
5
+ }>, {}>;
6
+ export declare class AnthropicMessage extends AnthropicMessage_base {
7
+ }
8
+ declare const AnthropicRequest_base: Schema.Class<AnthropicRequest, Schema.Struct<{
9
+ readonly model: Schema.String;
10
+ readonly max_tokens: Schema.Int;
11
+ readonly messages: Schema.$Array<typeof AnthropicMessage>;
12
+ readonly temperature: Schema.optionalKey<Schema.Number>;
13
+ readonly system: Schema.optionalKey<Schema.String>;
14
+ readonly stream: Schema.optionalKey<Schema.Boolean>;
15
+ }>, {}>;
16
+ export declare class AnthropicRequest extends AnthropicRequest_base {
17
+ }
18
+ declare const AnthropicContentBlock_base: Schema.Class<AnthropicContentBlock, Schema.Struct<{
19
+ readonly type: Schema.String;
20
+ readonly text: Schema.optionalKey<Schema.NullOr<Schema.String>>;
21
+ }>, {}>;
22
+ export declare class AnthropicContentBlock extends AnthropicContentBlock_base {
23
+ }
24
+ declare const AnthropicUsage_base: Schema.Class<AnthropicUsage, Schema.Struct<{
25
+ readonly input_tokens: Schema.optionalKey<Schema.Int>;
26
+ readonly output_tokens: Schema.optionalKey<Schema.Int>;
27
+ }>, {}>;
28
+ export declare class AnthropicUsage extends AnthropicUsage_base {
29
+ }
30
+ declare const AnthropicResponse_base: Schema.Class<AnthropicResponse, Schema.Struct<{
31
+ readonly id: Schema.optionalKey<Schema.String>;
32
+ readonly content: Schema.$Array<typeof AnthropicContentBlock>;
33
+ readonly model: Schema.optionalKey<Schema.String>;
34
+ readonly usage: Schema.optionalKey<typeof AnthropicUsage>;
35
+ readonly stop_reason: Schema.optionalKey<Schema.NullOr<Schema.String>>;
36
+ }>, {}>;
37
+ export declare class AnthropicResponse extends AnthropicResponse_base {
38
+ }
39
+ declare const AnthropicToolInputSchema_base: Schema.Class<AnthropicToolInputSchema, Schema.Struct<{
40
+ readonly type: Schema.String;
41
+ readonly properties: Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>;
42
+ readonly required: Schema.optionalKey<Schema.$Array<Schema.String>>;
43
+ }>, {}>;
44
+ export declare class AnthropicToolInputSchema extends AnthropicToolInputSchema_base {
45
+ }
46
+ declare const AnthropicTool_base: Schema.Class<AnthropicTool, Schema.Struct<{
47
+ readonly name: Schema.String;
48
+ readonly description: Schema.String;
49
+ readonly input_schema: typeof AnthropicToolInputSchema;
50
+ }>, {}>;
51
+ export declare class AnthropicTool extends AnthropicTool_base {
52
+ }
53
+ declare const AnthropicContentBlockFull_base: Schema.Class<AnthropicContentBlockFull, Schema.Struct<{
54
+ readonly type: Schema.String;
55
+ readonly text: Schema.optionalKey<Schema.NullOr<Schema.String>>;
56
+ readonly id: Schema.optionalKey<Schema.String>;
57
+ readonly name: Schema.optionalKey<Schema.String>;
58
+ readonly input: Schema.optionalKey<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
59
+ }>, {}>;
60
+ export declare class AnthropicContentBlockFull extends AnthropicContentBlockFull_base {
61
+ }
62
+ declare const AnthropicRequestWithTools_base: Schema.Class<AnthropicRequestWithTools, Schema.Struct<{
63
+ readonly model: Schema.String;
64
+ readonly max_tokens: Schema.Int;
65
+ readonly messages: Schema.$Array<typeof AnthropicMessage>;
66
+ readonly tools: Schema.$Array<typeof AnthropicTool>;
67
+ readonly temperature: Schema.optionalKey<Schema.Number>;
68
+ readonly system: Schema.optionalKey<Schema.String>;
69
+ }>, {}>;
70
+ export declare class AnthropicRequestWithTools extends AnthropicRequestWithTools_base {
71
+ }
72
+ declare const AnthropicResponseWithTools_base: Schema.Class<AnthropicResponseWithTools, Schema.Struct<{
73
+ readonly id: Schema.optionalKey<Schema.String>;
74
+ readonly content: Schema.$Array<typeof AnthropicContentBlockFull>;
75
+ readonly model: Schema.optionalKey<Schema.String>;
76
+ readonly usage: Schema.optionalKey<typeof AnthropicUsage>;
77
+ readonly stop_reason: Schema.optionalKey<Schema.NullOr<Schema.String>>;
78
+ }>, {}>;
79
+ export declare class AnthropicResponseWithTools extends AnthropicResponseWithTools_base {
80
+ }
81
+ declare const AnthropicStreamChunkDelta_base: Schema.Class<AnthropicStreamChunkDelta, Schema.Struct<{
82
+ readonly type: Schema.optionalKey<Schema.String>;
83
+ readonly text: Schema.optionalKey<Schema.NullOr<Schema.String>>;
84
+ readonly stop_reason: Schema.optionalKey<Schema.NullOr<Schema.String>>;
85
+ }>, {}>;
86
+ export declare class AnthropicStreamChunkDelta extends AnthropicStreamChunkDelta_base {
87
+ }
88
+ declare const AnthropicStreamChunk_base: Schema.Class<AnthropicStreamChunk, Schema.Struct<{
89
+ readonly type: Schema.String;
90
+ readonly delta: Schema.optionalKey<typeof AnthropicStreamChunkDelta>;
91
+ }>, {}>;
92
+ export declare class AnthropicStreamChunk extends AnthropicStreamChunk_base {
93
+ }
94
+ export {};
95
+ //# sourceMappingURL=AnthropicModels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnthropicModels.d.ts","sourceRoot":"","sources":["../../src/providers/AnthropicModels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;;;;AAGvC,qBAAa,gBAAiB,SAAQ,qBAGpC;CAAG;;;;;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAOpC;CAAG;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAKzC;CAAG;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAGlC;CAAG;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAMrC;CAAG;;;;;;AAEL,qBAAa,wBAAyB,SAAQ,6BAM5C;CAAG;;;;;;AAEL,qBAAa,aAAc,SAAQ,kBAIjC;CAAG;;;;;;;;AAEL,qBAAa,yBAA0B,SAAQ,8BAQ7C;CAAG;;;;;;;;;AAEL,qBAAa,yBAA0B,SAAQ,8BAS7C;CAAG;;;;;;;;AAEL,qBAAa,0BAA2B,SAAQ,+BAQ9C;CAAG;;;;;;AAEL,qBAAa,yBAA0B,SAAQ,8BAM7C;CAAG;;;;;AAEL,qBAAa,oBAAqB,SAAQ,yBAKxC;CAAG"}
@@ -0,0 +1,83 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { JsonSchema } from "../Models.js";
3
+ export class AnthropicMessage extends Schema.Class("AnthropicMessage")({
4
+ role: Schema.String,
5
+ content: Schema.String
6
+ }) {
7
+ }
8
+ export class AnthropicRequest extends Schema.Class("AnthropicRequest")({
9
+ model: Schema.String,
10
+ max_tokens: Schema.Int,
11
+ messages: Schema.Array(AnthropicMessage),
12
+ temperature: Schema.optionalKey(Schema.Number),
13
+ system: Schema.optionalKey(Schema.String),
14
+ stream: Schema.optionalKey(Schema.Boolean)
15
+ }) {
16
+ }
17
+ export class AnthropicContentBlock extends Schema.Class("AnthropicContentBlock")({
18
+ type: Schema.String,
19
+ text: Schema.optionalKey(Schema.NullOr(Schema.String))
20
+ }) {
21
+ }
22
+ export class AnthropicUsage extends Schema.Class("AnthropicUsage")({
23
+ input_tokens: Schema.optionalKey(Schema.Int),
24
+ output_tokens: Schema.optionalKey(Schema.Int)
25
+ }) {
26
+ }
27
+ export class AnthropicResponse extends Schema.Class("AnthropicResponse")({
28
+ id: Schema.optionalKey(Schema.String),
29
+ content: Schema.Array(AnthropicContentBlock),
30
+ model: Schema.optionalKey(Schema.String),
31
+ usage: Schema.optionalKey(AnthropicUsage),
32
+ stop_reason: Schema.optionalKey(Schema.NullOr(Schema.String))
33
+ }) {
34
+ }
35
+ export class AnthropicToolInputSchema extends Schema.Class("AnthropicToolInputSchema")({
36
+ type: Schema.String,
37
+ properties: JsonSchema,
38
+ required: Schema.optionalKey(Schema.Array(Schema.String))
39
+ }) {
40
+ }
41
+ export class AnthropicTool extends Schema.Class("AnthropicTool")({
42
+ name: Schema.String,
43
+ description: Schema.String,
44
+ input_schema: AnthropicToolInputSchema
45
+ }) {
46
+ }
47
+ export class AnthropicContentBlockFull extends Schema.Class("AnthropicContentBlockFull")({
48
+ type: Schema.String,
49
+ text: Schema.optionalKey(Schema.NullOr(Schema.String)),
50
+ id: Schema.optionalKey(Schema.String),
51
+ name: Schema.optionalKey(Schema.String),
52
+ input: Schema.optionalKey(Schema.Json)
53
+ }) {
54
+ }
55
+ export class AnthropicRequestWithTools extends Schema.Class("AnthropicRequestWithTools")({
56
+ model: Schema.String,
57
+ max_tokens: Schema.Int,
58
+ messages: Schema.Array(AnthropicMessage),
59
+ tools: Schema.Array(AnthropicTool),
60
+ temperature: Schema.optionalKey(Schema.Number),
61
+ system: Schema.optionalKey(Schema.String)
62
+ }) {
63
+ }
64
+ export class AnthropicResponseWithTools extends Schema.Class("AnthropicResponseWithTools")({
65
+ id: Schema.optionalKey(Schema.String),
66
+ content: Schema.Array(AnthropicContentBlockFull),
67
+ model: Schema.optionalKey(Schema.String),
68
+ usage: Schema.optionalKey(AnthropicUsage),
69
+ stop_reason: Schema.optionalKey(Schema.NullOr(Schema.String))
70
+ }) {
71
+ }
72
+ export class AnthropicStreamChunkDelta extends Schema.Class("AnthropicStreamChunkDelta")({
73
+ type: Schema.optionalKey(Schema.String),
74
+ text: Schema.optionalKey(Schema.NullOr(Schema.String)),
75
+ stop_reason: Schema.optionalKey(Schema.NullOr(Schema.String))
76
+ }) {
77
+ }
78
+ export class AnthropicStreamChunk extends Schema.Class("AnthropicStreamChunk")({
79
+ type: Schema.String,
80
+ delta: Schema.optionalKey(AnthropicStreamChunkDelta)
81
+ }) {
82
+ }
83
+ //# sourceMappingURL=AnthropicModels.js.map