@sovara/sdk 0.0.0-stage → 0.9.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 (133) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +36 -2
  3. package/dist/apiTypes.d.ts +5 -0
  4. package/dist/apiTypes.d.ts.map +1 -0
  5. package/dist/apiTypes.js +5 -0
  6. package/dist/apiTypes.js.map +1 -0
  7. package/dist/capture/requestEnvelope.d.ts +10 -0
  8. package/dist/capture/requestEnvelope.d.ts.map +1 -0
  9. package/dist/capture/requestEnvelope.js +79 -0
  10. package/dist/capture/requestEnvelope.js.map +1 -0
  11. package/dist/capture/responseEnvelope.d.ts +17 -0
  12. package/dist/capture/responseEnvelope.d.ts.map +1 -0
  13. package/dist/capture/responseEnvelope.js +72 -0
  14. package/dist/capture/responseEnvelope.js.map +1 -0
  15. package/dist/capture/sensitiveHeaders.d.ts +7 -0
  16. package/dist/capture/sensitiveHeaders.d.ts.map +1 -0
  17. package/dist/capture/sensitiveHeaders.js +41 -0
  18. package/dist/capture/sensitiveHeaders.js.map +1 -0
  19. package/dist/capture/sseUtils.d.ts +3 -0
  20. package/dist/capture/sseUtils.d.ts.map +1 -0
  21. package/dist/capture/sseUtils.js +69 -0
  22. package/dist/capture/sseUtils.js.map +1 -0
  23. package/dist/capture/streamCapture.d.ts +5 -0
  24. package/dist/capture/streamCapture.d.ts.map +1 -0
  25. package/dist/capture/streamCapture.js +19 -0
  26. package/dist/capture/streamCapture.js.map +1 -0
  27. package/dist/client.d.ts +52 -0
  28. package/dist/client.d.ts.map +1 -0
  29. package/dist/client.js +66 -0
  30. package/dist/client.js.map +1 -0
  31. package/dist/codeVersion.d.ts +17 -0
  32. package/dist/codeVersion.d.ts.map +1 -0
  33. package/dist/codeVersion.js +107 -0
  34. package/dist/codeVersion.js.map +1 -0
  35. package/dist/compatibility.d.ts +26 -0
  36. package/dist/compatibility.d.ts.map +1 -0
  37. package/dist/compatibility.js +130 -0
  38. package/dist/compatibility.js.map +1 -0
  39. package/dist/constants.d.ts +9 -0
  40. package/dist/constants.d.ts.map +1 -0
  41. package/dist/constants.js +37 -0
  42. package/dist/constants.js.map +1 -0
  43. package/dist/context.d.ts +55 -0
  44. package/dist/context.d.ts.map +1 -0
  45. package/dist/context.js +380 -0
  46. package/dist/context.js.map +1 -0
  47. package/dist/endpointPatterns.json +90 -0
  48. package/dist/endpointWhitelist.d.ts +2 -0
  49. package/dist/endpointWhitelist.d.ts.map +1 -0
  50. package/dist/endpointWhitelist.js +11 -0
  51. package/dist/endpointWhitelist.js.map +1 -0
  52. package/dist/env.d.ts +7 -0
  53. package/dist/env.d.ts.map +1 -0
  54. package/dist/env.js +11 -0
  55. package/dist/env.js.map +1 -0
  56. package/dist/failsafe.d.ts +5 -0
  57. package/dist/failsafe.d.ts.map +1 -0
  58. package/dist/failsafe.js +25 -0
  59. package/dist/failsafe.js.map +1 -0
  60. package/dist/index.d.ts +6 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +16 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/mcpPatch.d.ts +2 -0
  65. package/dist/mcpPatch.d.ts.map +1 -0
  66. package/dist/mcpPatch.js +202 -0
  67. package/dist/mcpPatch.js.map +1 -0
  68. package/dist/openaiAgentsPatch.d.ts +2 -0
  69. package/dist/openaiAgentsPatch.d.ts.map +1 -0
  70. package/dist/openaiAgentsPatch.js +112 -0
  71. package/dist/openaiAgentsPatch.js.map +1 -0
  72. package/dist/payload/editIoExcludePatterns.json +322 -0
  73. package/dist/payload/filterDict.d.ts +3 -0
  74. package/dist/payload/filterDict.d.ts.map +1 -0
  75. package/dist/payload/filterDict.js +26 -0
  76. package/dist/payload/filterDict.js.map +1 -0
  77. package/dist/payload/flatten.d.ts +6 -0
  78. package/dist/payload/flatten.d.ts.map +1 -0
  79. package/dist/payload/flatten.js +79 -0
  80. package/dist/payload/flatten.js.map +1 -0
  81. package/dist/payload/wrap.d.ts +10 -0
  82. package/dist/payload/wrap.d.ts.map +1 -0
  83. package/dist/payload/wrap.js +82 -0
  84. package/dist/payload/wrap.js.map +1 -0
  85. package/dist/platformSession.d.ts +3 -0
  86. package/dist/platformSession.d.ts.map +1 -0
  87. package/dist/platformSession.js +21 -0
  88. package/dist/platformSession.js.map +1 -0
  89. package/dist/runtimeClient.d.ts +117 -0
  90. package/dist/runtimeClient.d.ts.map +1 -0
  91. package/dist/runtimeClient.js +287 -0
  92. package/dist/runtimeClient.js.map +1 -0
  93. package/dist/serverLifecycle.d.ts +12 -0
  94. package/dist/serverLifecycle.d.ts.map +1 -0
  95. package/dist/serverLifecycle.js +77 -0
  96. package/dist/serverLifecycle.js.map +1 -0
  97. package/dist/toolTraceUtils.d.ts +38 -0
  98. package/dist/toolTraceUtils.d.ts.map +1 -0
  99. package/dist/toolTraceUtils.js +189 -0
  100. package/dist/toolTraceUtils.js.map +1 -0
  101. package/dist/trace.d.ts +13 -0
  102. package/dist/trace.d.ts.map +1 -0
  103. package/dist/trace.js +133 -0
  104. package/dist/trace.js.map +1 -0
  105. package/dist/traceLogCapture.d.ts +18 -0
  106. package/dist/traceLogCapture.d.ts.map +1 -0
  107. package/dist/traceLogCapture.js +125 -0
  108. package/dist/traceLogCapture.js.map +1 -0
  109. package/dist/transport/awsSdkHttp2Patch.d.ts +2 -0
  110. package/dist/transport/awsSdkHttp2Patch.d.ts.map +1 -0
  111. package/dist/transport/awsSdkHttp2Patch.js +442 -0
  112. package/dist/transport/awsSdkHttp2Patch.js.map +1 -0
  113. package/dist/transport/fetchPatch.d.ts +3 -0
  114. package/dist/transport/fetchPatch.d.ts.map +1 -0
  115. package/dist/transport/fetchPatch.js +257 -0
  116. package/dist/transport/fetchPatch.js.map +1 -0
  117. package/dist/transport/nodeHttpPatch.d.ts +3 -0
  118. package/dist/transport/nodeHttpPatch.d.ts.map +1 -0
  119. package/dist/transport/nodeHttpPatch.js +532 -0
  120. package/dist/transport/nodeHttpPatch.js.map +1 -0
  121. package/dist/util/logger.d.ts +2 -0
  122. package/dist/util/logger.d.ts.map +1 -0
  123. package/dist/util/logger.js +9 -0
  124. package/dist/util/logger.js.map +1 -0
  125. package/dist/util/stableJson.d.ts +2 -0
  126. package/dist/util/stableJson.d.ts.map +1 -0
  127. package/dist/util/stableJson.js +22 -0
  128. package/dist/util/stableJson.js.map +1 -0
  129. package/dist/util/stackTrace.d.ts +2 -0
  130. package/dist/util/stackTrace.d.ts.map +1 -0
  131. package/dist/util/stackTrace.js +11 -0
  132. package/dist/util/stackTrace.js.map +1 -0
  133. package/package.json +70 -4
@@ -0,0 +1,380 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { randomUUID } from "node:crypto";
3
+ import { renameSync, unlinkSync, writeFileSync } from "node:fs";
4
+ import { basename, dirname, resolve } from "node:path";
5
+ import { collectCodeVersion } from "./codeVersion.js";
6
+ import { readRunnerConfig } from "./env.js";
7
+ import { installTraceLogCapture, } from "./traceLogCapture.js";
8
+ import { RuntimeClient, RuntimeClientError, } from "./runtimeClient.js";
9
+ import { ensureServerRunning } from "./serverLifecycle.js";
10
+ import { raiseIfConfigError, SovaraConfigError } from "./failsafe.js";
11
+ import { ensureMcpPatchInstalled } from "./mcpPatch.js";
12
+ import { ensureOpenAIAgentsPatchInstalled } from "./openaiAgentsPatch.js";
13
+ import { warnOnce } from "./util/logger.js";
14
+ const scopeStorage = new AsyncLocalStorage();
15
+ const noopStorage = new AsyncLocalStorage();
16
+ const lessonScopeStorage = new AsyncLocalStorage();
17
+ const ROOT_SCOPE_MARKERS = new Set(["", ".", "/"]);
18
+ export function normalizeProjectName(projectName) {
19
+ if (projectName === null || projectName === undefined) {
20
+ throw new Error("projectName is required.");
21
+ }
22
+ if (typeof projectName !== "string") {
23
+ throw new TypeError("projectName must be a string.");
24
+ }
25
+ const normalized = projectName.trim();
26
+ if (!normalized) {
27
+ throw new Error("projectName is required.");
28
+ }
29
+ return normalized;
30
+ }
31
+ function normalizeTraceOptions(input) {
32
+ if (typeof input === "string") {
33
+ throw new Error("SovaraClient.trace() requires a client-bound project name.");
34
+ }
35
+ const options = input;
36
+ if (options.name !== undefined && typeof options.name !== "string") {
37
+ throw new Error("SovaraClient.trace() name must be a string.");
38
+ }
39
+ const name = options.name === undefined ? defaultTopLevelTraceName() : options.name.trim();
40
+ if (!name) {
41
+ throw new Error("SovaraClient.trace() name must be a non-empty string.");
42
+ }
43
+ if ("traceKey" in options || "clientTraceId" in options) {
44
+ throw new TypeError("SovaraClient.trace() no longer accepts traceKey or clientTraceId; use traceId.");
45
+ }
46
+ if (options.traceId !== undefined && typeof options.traceId !== "string") {
47
+ throw new TypeError("SovaraClient.trace() traceId must be a string.");
48
+ }
49
+ return { ...options, name };
50
+ }
51
+ function defaultTopLevelTraceName() {
52
+ return `Trace ${randomUUID().replace(/-/g, "").slice(0, 4)}`;
53
+ }
54
+ function writeTraceResult(result) {
55
+ const path = process.env.SOVARA_TRACE_FILE;
56
+ if (!path)
57
+ return;
58
+ const absolutePath = resolve(path);
59
+ const tempPath = `${dirname(absolutePath)}/.${basename(absolutePath)}.${randomUUID()}`;
60
+ try {
61
+ writeFileSync(tempPath, JSON.stringify({
62
+ trace_id: result.traceId,
63
+ project_id: result.projectId,
64
+ project_name: result.projectName,
65
+ appended: result.appended,
66
+ }), { encoding: "utf8", flag: "wx", mode: 0o600 });
67
+ renameSync(tempPath, absolutePath);
68
+ }
69
+ catch {
70
+ try {
71
+ unlinkSync(tempPath);
72
+ }
73
+ catch {
74
+ // The temporary file may not have been created.
75
+ }
76
+ warnOnce("publish-trace-result", "[sovara] Failed to publish trace result.");
77
+ }
78
+ }
79
+ function normalizeSubtraceOptions(input) {
80
+ const options = typeof input === "string" ? { name: input } : input;
81
+ const name = options.name.trim();
82
+ if (!name) {
83
+ throw new Error("SovaraClient.subtrace() name must be a non-empty string.");
84
+ }
85
+ return { ...options, name };
86
+ }
87
+ function normalizeLessonScopePath(path) {
88
+ if (typeof path !== "string") {
89
+ throw new Error("lessonScope paths must be strings.");
90
+ }
91
+ const raw = path.trim();
92
+ if (ROOT_SCOPE_MARKERS.has(raw))
93
+ return "";
94
+ if (raw.includes("//")) {
95
+ throw new Error("lessonScope paths must not contain '//'.");
96
+ }
97
+ const cleaned = raw.replace(/^\/+|\/+$/g, "");
98
+ if (!cleaned)
99
+ return "";
100
+ for (const segment of cleaned.split("/")) {
101
+ if (!segment || segment === "." || segment === ".." || segment.startsWith(".")) {
102
+ throw new Error(`Invalid lessonScope path segment: ${segment}`);
103
+ }
104
+ }
105
+ return `${cleaned}/`;
106
+ }
107
+ export function normalizeLessonScope(scope) {
108
+ if (scope === null || scope === undefined)
109
+ return null;
110
+ if (typeof scope === "string") {
111
+ const normalized = normalizeLessonScopePath(scope);
112
+ return normalized ? [normalized] : null;
113
+ }
114
+ if (!Array.isArray(scope)) {
115
+ throw new Error("lessonScope must be a string, string array, null, or undefined.");
116
+ }
117
+ const paths = [];
118
+ for (const item of scope) {
119
+ const normalized = normalizeLessonScopePath(item);
120
+ if (!normalized)
121
+ return null;
122
+ if (!paths.includes(normalized))
123
+ paths.push(normalized);
124
+ }
125
+ return paths;
126
+ }
127
+ function cloneLessonScopePaths(scopePaths) {
128
+ return scopePaths === null ? null : Object.freeze([...scopePaths]);
129
+ }
130
+ function ambientLessonScopePaths() {
131
+ const scopePaths = lessonScopeStorage.getStore();
132
+ return scopePaths === undefined ? undefined : cloneLessonScopePaths(scopePaths);
133
+ }
134
+ function resolveLessonScope(lessonScope, fallback) {
135
+ return cloneLessonScopePaths(lessonScope === undefined ? fallback : normalizeLessonScope(lessonScope));
136
+ }
137
+ function scopeWithLessonScope(parent, lessonScopePaths) {
138
+ return Object.freeze({
139
+ ...parent,
140
+ lessonScopePaths: cloneLessonScopePaths(lessonScopePaths),
141
+ });
142
+ }
143
+ function resolveTraceProjectConfig(cwd, options) {
144
+ return { projectName: normalizeProjectName(options.projectName), projectRoot: cwd };
145
+ }
146
+ export function getCurrentTraceScope() {
147
+ return scopeStorage.getStore();
148
+ }
149
+ function assertOwner(method, owner) {
150
+ const contextOwner = getCurrentTraceScope()?.owner ?? noopStorage.getStore()?.owner;
151
+ if (owner && contextOwner && owner !== contextOwner) {
152
+ throw new Error(`SovaraClient.${method}() cannot use a trace opened by a different SovaraClient.`);
153
+ }
154
+ }
155
+ export async function withSovaraTurn(options, fn, owner) {
156
+ if (!options || typeof options !== "object" || Array.isArray(options)
157
+ || (options.turnInput !== undefined && typeof options.turnInput !== "string")) {
158
+ throw new TypeError("turnInput must be a string or undefined.");
159
+ }
160
+ assertOwner("turn", owner);
161
+ const parent = getCurrentTraceScope();
162
+ const noop = noopStorage.getStore();
163
+ if (noop) {
164
+ if (noop.insideTurn)
165
+ throw new Error("SovaraClient.turn() cannot nest turns in the same trace.");
166
+ return await noopStorage.run(Object.freeze({ ...noop, insideTurn: true }), fn);
167
+ }
168
+ if (!parent)
169
+ throw new Error("SovaraClient.turn() requires an active Sovara trace.");
170
+ if (parent.turnId !== null)
171
+ throw new Error("SovaraClient.turn() cannot nest turns in the same trace.");
172
+ const turnId = await parent.client.declareTurn(parent.credentials, options.turnInput);
173
+ return await scopeStorage.run(Object.freeze({ ...parent, turnId }), fn);
174
+ }
175
+ function currentScopeFor(apiName, owner) {
176
+ const scope = getCurrentTraceScope();
177
+ assertOwner(apiName, owner);
178
+ if (!scope) {
179
+ warnOnce(apiName, `[sovara] ${apiName}() only works inside an active Sovara trace.`);
180
+ }
181
+ return scope;
182
+ }
183
+ export function getTraceId(owner) {
184
+ assertOwner("getTraceId", owner);
185
+ const scope = getCurrentTraceScope();
186
+ return scope?.credentials.traceId;
187
+ }
188
+ export async function logMetrics(metrics, owner) {
189
+ const scope = currentScopeFor("logMetrics", owner);
190
+ if (!scope)
191
+ return;
192
+ if (!scope.client.logMetrics)
193
+ return;
194
+ await scope.client.logMetrics({ credentials: scope.credentials, turnId: scope.turnId, metrics });
195
+ }
196
+ export async function logInput(input, owner) {
197
+ const scope = currentScopeFor("logInput", owner);
198
+ if (!scope)
199
+ return;
200
+ if (!scope.client.logInput)
201
+ return;
202
+ await scope.client.logInput({ credentials: scope.credentials, turnId: scope.turnId, value: input });
203
+ }
204
+ export async function logOutput(output, owner) {
205
+ const scope = currentScopeFor("logOutput", owner);
206
+ if (!scope)
207
+ return;
208
+ if (!scope.client.logOutput)
209
+ return;
210
+ await scope.client.logOutput({ credentials: scope.credentials, turnId: scope.turnId, value: output });
211
+ }
212
+ export async function withSovaraTrace(input, fn, binding) {
213
+ const options = normalizeTraceOptions(input);
214
+ const parent = getCurrentTraceScope();
215
+ const owner = binding?.owner ?? parent?.owner ?? Object.freeze({});
216
+ assertOwner("trace", owner);
217
+ if (noopStorage.getStore())
218
+ return await fn();
219
+ if (parent) {
220
+ console.warn("SovaraClient.trace() was called inside an active trace; ignoring nested trace. Use SovaraClient.subtrace() for child agent execution.");
221
+ return await fn();
222
+ }
223
+ await Promise.all([ensureMcpPatchInstalled(), ensureOpenAIAgentsPatchInstalled()]);
224
+ const config = readRunnerConfig();
225
+ const project = resolveTraceProjectConfig(config.cwd, options);
226
+ const url = options.url ?? config.url;
227
+ const skipLifecycle = options.__testing?.skipLifecycle ?? false;
228
+ if (!skipLifecycle) {
229
+ const reachable = await ensureServerRunning(url, options.fetch ? { fetchFn: options.fetch } : undefined);
230
+ if (!reachable) {
231
+ return await noopStorage.run(Object.freeze({ owner, insideTurn: false }), fn);
232
+ }
233
+ }
234
+ const client = binding?.client ?? options.__testing?.client
235
+ ?? new RuntimeClient(url, options.fetch, options.agentToken);
236
+ const codeVersion = collectCodeVersion(project.projectRoot);
237
+ let registration;
238
+ try {
239
+ registration = await client.registerTrace({
240
+ name: options.name,
241
+ traceId: options.traceId,
242
+ evalRunId: options.evalRunId,
243
+ projectName: project.projectName,
244
+ projectRoot: project.projectRoot,
245
+ codeVersion,
246
+ });
247
+ }
248
+ catch (error) {
249
+ raiseIfConfigError(error); // auth/compatibility -> throw
250
+ const status = error instanceof RuntimeClientError ? error.status : undefined;
251
+ if (options.evalRunId !== undefined && status === 409) {
252
+ throw new SovaraConfigError("Trace registration conflicts with the stored trace identity or evaluation ownership.");
253
+ }
254
+ if ((status === 404 && options.evalRunId !== undefined)
255
+ || (status === 422 && options.traceId !== undefined)) {
256
+ const body = error.body;
257
+ const detail = body && typeof body === "object"
258
+ ? body.detail
259
+ : undefined;
260
+ const suffix = typeof detail === "string" && detail.trim() ? `: ${detail.trim()}` : ".";
261
+ throw new SovaraConfigError(`Sovara rejected the trace registration (HTTP ${status})${suffix}`);
262
+ }
263
+ warnOnce("register", "[sovara] Trace registration failed; continuing without recording.");
264
+ return await noopStorage.run(Object.freeze({ owner, insideTurn: false }), fn);
265
+ }
266
+ let logCapture;
267
+ try {
268
+ const captureId = options.captureLogs === false ? undefined : Symbol("sovara-log-capture");
269
+ logCapture = captureId
270
+ ? installTraceLogCapture({
271
+ captureId,
272
+ resolveContext: getCurrentTraceScope,
273
+ onAppend: async (recording, chunk) => {
274
+ try {
275
+ await recording.client.updateTraceLog({
276
+ credentials: recording.credentials,
277
+ turnId: recording.turnId,
278
+ logText: chunk,
279
+ replace: false,
280
+ });
281
+ }
282
+ catch (error) {
283
+ if (!(error instanceof RuntimeClientError && error.status === 409)) {
284
+ warnOnce("update-trace-log-failed", "[sovara] Failed to update trace log.");
285
+ }
286
+ }
287
+ },
288
+ })
289
+ : undefined;
290
+ const scope = Object.freeze({
291
+ name: options.name,
292
+ client,
293
+ owner,
294
+ credentials: registration.credentials,
295
+ turnId: null,
296
+ lessonScopePaths: resolveLessonScope(options.lessonScope, ambientLessonScopePaths() ?? null),
297
+ logCaptureId: captureId,
298
+ logCapture,
299
+ });
300
+ return await scopeStorage.run(scope, fn);
301
+ }
302
+ finally {
303
+ let logCaptureError;
304
+ try {
305
+ await logCapture?.stop();
306
+ }
307
+ catch (error) {
308
+ logCaptureError = error;
309
+ }
310
+ try {
311
+ await client.deregisterTrace(registration.credentials);
312
+ }
313
+ catch (error) {
314
+ // If the trace was already finalized server-side (e.g. the connection
315
+ // dropped early and the server's disconnect handler finished it), the
316
+ // deregister answers 409 "Trace is not active". That is benign.
317
+ if (!(error instanceof RuntimeClientError && error.status === 409)) {
318
+ throw error;
319
+ }
320
+ }
321
+ finally {
322
+ writeTraceResult({
323
+ traceId: registration.credentials.traceId,
324
+ projectId: registration.projectId,
325
+ projectName: project.projectName,
326
+ appended: registration.appended ?? false,
327
+ });
328
+ }
329
+ if (logCaptureError !== undefined)
330
+ throw logCaptureError;
331
+ }
332
+ }
333
+ export async function withSovaraSubtrace(input, fn, binding) {
334
+ const options = normalizeSubtraceOptions(input);
335
+ assertOwner("subtrace", binding?.owner);
336
+ const noop = noopStorage.getStore();
337
+ if (noop)
338
+ return await noopStorage.run(Object.freeze({ ...noop, insideTurn: false }), fn);
339
+ const parent = getCurrentTraceScope();
340
+ if (!parent) {
341
+ throw new Error("SovaraClient.subtrace() requires an active Sovara trace.");
342
+ }
343
+ const owner = binding?.owner ?? parent.owner;
344
+ const lessonScopePaths = resolveLessonScope(options.lessonScope, parent.lessonScopePaths);
345
+ const subtrace = await parent.client.registerSubtrace({
346
+ credentials: parent.credentials,
347
+ turnId: parent.turnId,
348
+ name: options.name,
349
+ lessonScopePaths,
350
+ });
351
+ const scope = Object.freeze({
352
+ name: options.name,
353
+ client: parent.client,
354
+ owner,
355
+ credentials: subtrace.credentials,
356
+ turnId: null,
357
+ lessonScopePaths,
358
+ logCaptureId: parent.logCaptureId,
359
+ logCapture: parent.logCapture,
360
+ });
361
+ try {
362
+ return await scopeStorage.run(scope, fn);
363
+ }
364
+ finally {
365
+ await scope.logCapture?.flush(scope);
366
+ await parent.client.deregisterTrace(scope.credentials);
367
+ }
368
+ }
369
+ export async function withLessonScope(lessonScope, fn, owner) {
370
+ const lessonScopePaths = normalizeLessonScope(lessonScope);
371
+ assertOwner("lessonScope", owner);
372
+ const parent = getCurrentTraceScope();
373
+ return await lessonScopeStorage.run(lessonScopePaths, async () => {
374
+ if (!parent) {
375
+ return await fn();
376
+ }
377
+ return await scopeStorage.run(scopeWithLessonScope(parent, lessonScopePaths), fn);
378
+ });
379
+ }
380
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ [
2
+ {
3
+ "url": ".*",
4
+ "path": "/v1/messages"
5
+ },
6
+ {
7
+ "url": ".*",
8
+ "path": "/v1/responses"
9
+ },
10
+ {
11
+ "url": ".*",
12
+ "path": "/v1/chat/completions"
13
+ },
14
+ {
15
+ "url": "(?:^|//)api\\.deepseek\\.com(?:/|$)",
16
+ "path": "^/chat/completions$"
17
+ },
18
+ {
19
+ "url": ".*",
20
+ "path": "/language-model-service/api/llm/v3/completion/[^/?]+(?:/(?:stream|streamCompletionChunk))?$"
21
+ },
22
+ {
23
+ "url": ".*bedrock-runtime\\..*amazonaws\\.com",
24
+ "path": "/model/[^/]+/(?:converse|converse-stream)"
25
+ },
26
+ {
27
+ "url": ".*bedrock-runtime\\..*amazonaws\\.com",
28
+ "path": "/model/[^/]+/(?:invoke|invoke-with-response-stream)"
29
+ },
30
+ {
31
+ "url": ".*",
32
+ "path": "models/[^/]+:generateContent"
33
+ },
34
+ {
35
+ "url": ".*",
36
+ "path": "models/[^/]+:streamGenerateContent"
37
+ },
38
+ {
39
+ "url": ".*",
40
+ "path": "/api/chat"
41
+ },
42
+ {
43
+ "url": ".*",
44
+ "path": "/api/generate"
45
+ },
46
+ {
47
+ "url": ".*",
48
+ "path": "/api/embed"
49
+ },
50
+ {
51
+ "url": ".*",
52
+ "path": "/api/embeddings"
53
+ },
54
+ {
55
+ "url": "serper\\.dev",
56
+ "path": ".*"
57
+ },
58
+ {
59
+ "url": ".*api\\.search\\.brave\\.com",
60
+ "path": "/res/v1/web/search"
61
+ },
62
+ {
63
+ "url": ".*r\\.jina\\.ai",
64
+ "path": ".*"
65
+ },
66
+ {
67
+ "url": ".*api\\.brightdata\\.com",
68
+ "path": "/request"
69
+ },
70
+ {
71
+ "url": ".*api\\.patronus\\.ai",
72
+ "path": "/v1/evaluate"
73
+ },
74
+ {
75
+ "url": ".*api\\.contextual\\.ai",
76
+ "path": "/v1/datastores/"
77
+ },
78
+ {
79
+ "url": ".*api\\.contextual\\.ai",
80
+ "path": "/v1/parse"
81
+ },
82
+ {
83
+ "url": ".*api\\.contextual\\.ai",
84
+ "path": "/v1/rerank"
85
+ },
86
+ {
87
+ "url": ".*api\\.parallel\\.ai",
88
+ "path": "/v1beta/search"
89
+ }
90
+ ]
@@ -0,0 +1,2 @@
1
+ export declare function isWhitelistedEndpoint(url: URL): boolean;
2
+ //# sourceMappingURL=endpointWhitelist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpointWhitelist.d.ts","sourceRoot":"","sources":["../src/endpointWhitelist.ts"],"names":[],"mappings":"AAgBA,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAKvD"}
@@ -0,0 +1,11 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { fileURLToPath } from "node:url";
3
+ const patternSpec = JSON.parse(readFileSync(fileURLToPath(new URL("./endpointPatterns.json", import.meta.url)), "utf8"));
4
+ const ENDPOINT_PATTERNS = patternSpec.map((entry) => ({ url: new RegExp(entry.url), path: new RegExp(entry.path) }));
5
+ export function isWhitelistedEndpoint(url) {
6
+ const hostAndPath = `${url.host}${url.pathname}`;
7
+ return ENDPOINT_PATTERNS.some(({ url: urlPattern, path }) => {
8
+ return urlPattern.test(hostAndPath) && path.test(url.pathname);
9
+ });
10
+ }
11
+ //# sourceMappingURL=endpointWhitelist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpointWhitelist.js","sourceRoot":"","sources":["../src/endpointWhitelist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CACV,aAAa,CAAC,IAAI,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAClE,MAAM,CACP,CACiB,CAAC;AAErB,MAAM,iBAAiB,GAAyC,WAAW,CAAC,GAAG,CAC7E,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAC1E,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,GAAQ;IAC5C,MAAM,WAAW,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IACjD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1D,OAAO,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export type RunnerConfig = {
2
+ cwd: string;
3
+ url: string;
4
+ };
5
+ export declare function resolveServerURL(): string;
6
+ export declare function readRunnerConfig(): RunnerConfig;
7
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CAK/C"}
package/dist/env.js ADDED
@@ -0,0 +1,11 @@
1
+ import { DEFAULT_SERVER_URL } from "./constants.js";
2
+ export function resolveServerURL() {
3
+ return DEFAULT_SERVER_URL;
4
+ }
5
+ export function readRunnerConfig() {
6
+ return {
7
+ cwd: process.cwd(),
8
+ url: resolveServerURL(),
9
+ };
10
+ }
11
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAOpD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,GAAG,EAAE,gBAAgB,EAAE;KACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare class SovaraConfigError extends Error {
2
+ }
3
+ export declare function isAuthError(err: unknown): boolean;
4
+ export declare function raiseIfConfigError(err: unknown): void;
5
+ //# sourceMappingURL=failsafe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failsafe.d.ts","sourceRoot":"","sources":["../src/failsafe.ts"],"names":[],"mappings":"AAGA,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKjD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAkBrD"}
@@ -0,0 +1,25 @@
1
+ import { RuntimeClientError } from "./runtimeClient.js";
2
+ import { CompatibilityError, raiseForCompatibilityResponse } from "./compatibility.js";
3
+ export class SovaraConfigError extends Error {
4
+ }
5
+ export function isAuthError(err) {
6
+ return (err instanceof RuntimeClientError &&
7
+ (err.status === 401 || err.status === 403));
8
+ }
9
+ export function raiseIfConfigError(err) {
10
+ if (err instanceof SovaraConfigError || err instanceof CompatibilityError) {
11
+ throw err;
12
+ }
13
+ if (err instanceof RuntimeClientError)
14
+ raiseForCompatibilityResponse(err.status, err.body);
15
+ if (isAuthError(err)) {
16
+ const runtimeError = err;
17
+ const status = runtimeError.status;
18
+ if (runtimeError.detail) {
19
+ throw new SovaraConfigError(`Sovara configuration was rejected (HTTP ${status}): ${runtimeError.detail}`);
20
+ }
21
+ throw new SovaraConfigError(`Sovara rejected the agent token (HTTP ${status}). ` +
22
+ "Pass agentToken to new SovaraClient(...) or set SOVARA_AGENT_TOKEN.");
23
+ }
24
+ }
25
+ //# sourceMappingURL=failsafe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failsafe.js","sourceRoot":"","sources":["../src/failsafe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAEvF,MAAM,OAAO,iBAAkB,SAAQ,KAAK;CAAG;AAE/C,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,CACL,GAAG,YAAY,kBAAkB;QACjC,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,IAAI,GAAG,YAAY,iBAAiB,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;QAC1E,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,GAAG,YAAY,kBAAkB;QAAE,6BAA6B,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3F,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,YAAY,GAAG,GAAyB,CAAC;QAC/C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CACzB,2CAA2C,MAAM,MAAM,YAAY,CAAC,MAAM,EAAE,CAC7E,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,iBAAiB,CACzB,yCAAyC,MAAM,KAAK;YAClD,qEAAqE,CACxE,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { SovaraClient } from "./client.js";
2
+ export { CompatibilityError } from "./compatibility.js";
3
+ export type { SovaraClientOptions, SovaraTraceOptions, SovaraSubtraceOptions, SovaraRunOptions, SovaraSubrunOptions, SovaraTurnOptions, } from "./client.js";
4
+ export { trace } from "./trace.js";
5
+ export type { TraceOptions } from "./trace.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ import { installFetchPatch } from "./transport/fetchPatch.js";
2
+ import { installNodeHttpPatch } from "./transport/nodeHttpPatch.js";
3
+ import { installAwsSdkHttp2Patch } from "./transport/awsSdkHttp2Patch.js";
4
+ import { warnOnce } from "./util/logger.js";
5
+ try {
6
+ installFetchPatch();
7
+ installNodeHttpPatch();
8
+ installAwsSdkHttp2Patch();
9
+ }
10
+ catch {
11
+ warnOnce("install-patches", "[sovara] Failed to install transport patches; continuing.");
12
+ }
13
+ export { SovaraClient } from "./client.js";
14
+ export { CompatibilityError } from "./compatibility.js";
15
+ export { trace } from "./trace.js";
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,IAAI,CAAC;IACH,iBAAiB,EAAE,CAAC;IACpB,oBAAoB,EAAE,CAAC;IACvB,uBAAuB,EAAE,CAAC;AAC5B,CAAC;AAAC,MAAM,CAAC;IACP,QAAQ,CACN,iBAAiB,EACjB,2DAA2D,CAC5D,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AASxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function ensureMcpPatchInstalled(): Promise<void>;
2
+ //# sourceMappingURL=mcpPatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpPatch.d.ts","sourceRoot":"","sources":["../src/mcpPatch.ts"],"names":[],"mappings":"AAyMA,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0C7D"}