@sovara/runner 0.3.4 → 0.4.4
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.
- package/README.md +24 -24
- package/dist/agentCredentials.d.ts +13 -0
- package/dist/agentCredentials.d.ts.map +1 -0
- package/dist/agentCredentials.js +90 -0
- package/dist/agentCredentials.js.map +1 -0
- package/dist/capture/responseEnvelope.d.ts +6 -1
- package/dist/capture/responseEnvelope.d.ts.map +1 -1
- package/dist/capture/responseEnvelope.js +24 -3
- package/dist/capture/responseEnvelope.js.map +1 -1
- package/dist/capture/sensitiveHeaders.d.ts +7 -0
- package/dist/capture/sensitiveHeaders.d.ts.map +1 -0
- package/dist/capture/sensitiveHeaders.js +41 -0
- package/dist/capture/sensitiveHeaders.js.map +1 -0
- package/dist/capture/streamNormalizers.d.ts +6 -0
- package/dist/capture/streamNormalizers.d.ts.map +1 -0
- package/dist/capture/streamNormalizers.js +301 -0
- package/dist/capture/streamNormalizers.js.map +1 -0
- package/dist/codeVersion.d.ts +0 -2
- package/dist/codeVersion.d.ts.map +1 -1
- package/dist/codeVersion.js +0 -18
- package/dist/codeVersion.js.map +1 -1
- package/dist/constants.d.ts +0 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -4
- package/dist/constants.js.map +1 -1
- package/dist/context.d.ts +23 -10
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +230 -56
- package/dist/context.js.map +1 -1
- package/dist/env.d.ts +0 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +0 -2
- package/dist/env.js.map +1 -1
- package/dist/failsafe.d.ts +8 -0
- package/dist/failsafe.d.ts.map +1 -0
- package/dist/failsafe.js +28 -0
- package/dist/failsafe.js.map +1 -0
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -6
- package/dist/index.js.map +1 -1
- package/dist/lessons.d.ts +6 -0
- package/dist/lessons.d.ts.map +1 -0
- package/dist/lessons.js +68 -0
- package/dist/lessons.js.map +1 -0
- package/dist/lessonsBlockGuidance.json +3 -0
- package/dist/mcpPatch.d.ts.map +1 -1
- package/dist/mcpPatch.js +17 -13
- package/dist/mcpPatch.js.map +1 -1
- package/dist/payload/editIoExcludePatterns.json +3 -0
- package/dist/platformSession.d.ts +3 -0
- package/dist/platformSession.d.ts.map +1 -0
- package/dist/platformSession.js +15 -0
- package/dist/platformSession.js.map +1 -0
- package/dist/runtimeClient.d.ts +46 -30
- package/dist/runtimeClient.d.ts.map +1 -1
- package/dist/runtimeClient.js +105 -68
- package/dist/runtimeClient.js.map +1 -1
- package/dist/serverLifecycle.d.ts +11 -1
- package/dist/serverLifecycle.d.ts.map +1 -1
- package/dist/serverLifecycle.js +54 -14
- package/dist/serverLifecycle.js.map +1 -1
- package/dist/toolTraceUtils.d.ts.map +1 -1
- package/dist/toolTraceUtils.js +6 -4
- package/dist/toolTraceUtils.js.map +1 -1
- package/dist/transport/awsSdkHttp2Patch.d.ts.map +1 -1
- package/dist/transport/awsSdkHttp2Patch.js +34 -25
- package/dist/transport/awsSdkHttp2Patch.js.map +1 -1
- package/dist/transport/fetchPatch.d.ts.map +1 -1
- package/dist/transport/fetchPatch.js +33 -17
- package/dist/transport/fetchPatch.js.map +1 -1
- package/dist/transport/nodeHttpPatch.d.ts.map +1 -1
- package/dist/transport/nodeHttpPatch.js +19 -12
- package/dist/transport/nodeHttpPatch.js.map +1 -1
- package/package.json +2 -2
- package/dist/annotation.d.ts +0 -3
- package/dist/annotation.d.ts.map +0 -1
- package/dist/annotation.js +0 -27
- package/dist/annotation.js.map +0 -1
- package/dist/priors.d.ts +0 -7
- package/dist/priors.d.ts.map +0 -1
- package/dist/priors.js +0 -87
- package/dist/priors.js.map +0 -1
- package/dist/priorsBlockGuidance.json +0 -3
- package/dist/projectContext.d.ts +0 -14
- package/dist/projectContext.d.ts.map +0 -1
- package/dist/projectContext.js +0 -32
- package/dist/projectContext.js.map +0 -1
- package/dist/sseListener.d.ts +0 -9
- package/dist/sseListener.d.ts.map +0 -1
- package/dist/sseListener.js +0 -56
- package/dist/sseListener.js.map +0 -1
package/dist/context.js
CHANGED
|
@@ -1,73 +1,210 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
import { loadAgentConnection, resolveProjectConfig } from "./agentCredentials.js";
|
|
2
3
|
import { collectCodeVersion } from "./codeVersion.js";
|
|
3
4
|
import { readRunnerConfig } from "./env.js";
|
|
4
|
-
import { resolveProjectContext } from "./projectContext.js";
|
|
5
5
|
import { installRunLogCapture } from "./runLogCapture.js";
|
|
6
|
-
import { RuntimeClient } from "./runtimeClient.js";
|
|
6
|
+
import { RuntimeClient, RuntimeClientError } from "./runtimeClient.js";
|
|
7
7
|
import { ensureServerRunning } from "./serverLifecycle.js";
|
|
8
|
-
import {
|
|
8
|
+
import { isDegraded, markDegraded, raiseIfConfigError, SovaraConfigError } from "./failsafe.js";
|
|
9
9
|
import { ensureMcpPatchInstalled } from "./mcpPatch.js";
|
|
10
|
+
import { warnOnce } from "./util/logger.js";
|
|
10
11
|
const scopeStorage = new AsyncLocalStorage();
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
const lessonScopeStorage = new AsyncLocalStorage();
|
|
13
|
+
export const client = new RuntimeClient(readRunnerConfig().url);
|
|
14
|
+
const ROOT_SCOPE_MARKERS = new Set(["", ".", "/"]);
|
|
15
|
+
function normalizeRunOptions(input) {
|
|
16
|
+
const options = typeof input === "string" ? { name: input } : input;
|
|
17
|
+
const name = options.name.trim();
|
|
18
|
+
if (!name) {
|
|
19
|
+
throw new Error("withSovaraRun() name must be a non-empty string.");
|
|
20
|
+
}
|
|
21
|
+
return { ...options, name };
|
|
22
|
+
}
|
|
23
|
+
function normalizeSubrunOptions(input) {
|
|
24
|
+
const options = typeof input === "string" ? { name: input } : input;
|
|
25
|
+
const name = options.name.trim();
|
|
26
|
+
if (!name) {
|
|
27
|
+
throw new Error("withSovaraSubrun() name must be a non-empty string.");
|
|
28
|
+
}
|
|
29
|
+
return { ...options, name };
|
|
30
|
+
}
|
|
31
|
+
function normalizeLessonScopePath(path) {
|
|
32
|
+
if (typeof path !== "string") {
|
|
33
|
+
throw new Error("lessonScope paths must be strings.");
|
|
34
|
+
}
|
|
35
|
+
const raw = path.trim();
|
|
36
|
+
if (ROOT_SCOPE_MARKERS.has(raw))
|
|
37
|
+
return "";
|
|
38
|
+
if (raw.includes("//")) {
|
|
39
|
+
throw new Error("lessonScope paths must not contain '//'.");
|
|
40
|
+
}
|
|
41
|
+
const cleaned = raw.replace(/^\/+|\/+$/g, "");
|
|
42
|
+
if (!cleaned)
|
|
43
|
+
return "";
|
|
44
|
+
for (const segment of cleaned.split("/")) {
|
|
45
|
+
if (!segment || segment === "." || segment === ".." || segment.startsWith(".")) {
|
|
46
|
+
throw new Error(`Invalid lessonScope path segment: ${segment}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return `${cleaned}/`;
|
|
50
|
+
}
|
|
51
|
+
export function normalizeLessonScope(scope) {
|
|
52
|
+
if (scope === null || scope === undefined)
|
|
53
|
+
return null;
|
|
54
|
+
if (typeof scope === "string") {
|
|
55
|
+
const normalized = normalizeLessonScopePath(scope);
|
|
56
|
+
return normalized ? [normalized] : null;
|
|
57
|
+
}
|
|
58
|
+
if (!Array.isArray(scope)) {
|
|
59
|
+
throw new Error("lessonScope must be a string, string array, null, or undefined.");
|
|
60
|
+
}
|
|
61
|
+
const paths = [];
|
|
62
|
+
for (const item of scope) {
|
|
63
|
+
const normalized = normalizeLessonScopePath(item);
|
|
64
|
+
if (!normalized)
|
|
65
|
+
return null;
|
|
66
|
+
if (!paths.includes(normalized))
|
|
67
|
+
paths.push(normalized);
|
|
68
|
+
}
|
|
69
|
+
return paths;
|
|
70
|
+
}
|
|
71
|
+
function cloneLessonScopePaths(scopePaths) {
|
|
72
|
+
return scopePaths === null ? null : [...scopePaths];
|
|
73
|
+
}
|
|
74
|
+
function ambientLessonScopePaths() {
|
|
75
|
+
const scopePaths = lessonScopeStorage.getStore();
|
|
76
|
+
return scopePaths === undefined ? undefined : cloneLessonScopePaths(scopePaths);
|
|
77
|
+
}
|
|
78
|
+
function resolveLessonScope(lessonScope, fallback) {
|
|
79
|
+
return lessonScope === undefined
|
|
80
|
+
? cloneLessonScopePaths(fallback)
|
|
81
|
+
: normalizeLessonScope(lessonScope);
|
|
82
|
+
}
|
|
83
|
+
function scopeWithLessonScope(parent, lessonScopePaths) {
|
|
84
|
+
return {
|
|
85
|
+
...parent,
|
|
86
|
+
lessonScopePaths: cloneLessonScopePaths(lessonScopePaths),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function resolveRunProjectConfig(cwd, options) {
|
|
90
|
+
try {
|
|
91
|
+
return resolveProjectConfig(cwd, options.projectName);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (options.__testing?.client && options.__testing.skipLifecycle) {
|
|
95
|
+
return { projectName: "Project", projectRoot: cwd };
|
|
96
|
+
}
|
|
97
|
+
throw new SovaraConfigError(error instanceof Error ? error.message : String(error));
|
|
14
98
|
}
|
|
15
|
-
return input;
|
|
16
99
|
}
|
|
17
100
|
export function getCurrentRunScope() {
|
|
18
101
|
return scopeStorage.getStore();
|
|
19
102
|
}
|
|
103
|
+
function currentScopeFor(apiName) {
|
|
104
|
+
const scope = getCurrentRunScope();
|
|
105
|
+
if (!scope) {
|
|
106
|
+
warnOnce(apiName, `[sovara] ${apiName}() only works inside an active Sovara run.`);
|
|
107
|
+
}
|
|
108
|
+
return scope;
|
|
109
|
+
}
|
|
110
|
+
export function getRunId() {
|
|
111
|
+
return getCurrentRunScope()?.runId;
|
|
112
|
+
}
|
|
113
|
+
export async function logMetrics(metrics) {
|
|
114
|
+
const scope = currentScopeFor("logMetrics");
|
|
115
|
+
if (!scope)
|
|
116
|
+
return;
|
|
117
|
+
if (!scope.client.logMetrics)
|
|
118
|
+
return;
|
|
119
|
+
await scope.client.logMetrics({ runId: scope.runId, metrics });
|
|
120
|
+
}
|
|
121
|
+
export async function logInput(input) {
|
|
122
|
+
const scope = currentScopeFor("logInput");
|
|
123
|
+
if (!scope)
|
|
124
|
+
return;
|
|
125
|
+
if (!scope.client.logInput)
|
|
126
|
+
return;
|
|
127
|
+
await scope.client.logInput({ runId: scope.runId, value: input });
|
|
128
|
+
}
|
|
129
|
+
export async function logOutput(output) {
|
|
130
|
+
const scope = currentScopeFor("logOutput");
|
|
131
|
+
if (!scope)
|
|
132
|
+
return;
|
|
133
|
+
if (!scope.client.logOutput)
|
|
134
|
+
return;
|
|
135
|
+
await scope.client.logOutput({ runId: scope.runId, value: output });
|
|
136
|
+
}
|
|
137
|
+
export async function queueForAnnotation() {
|
|
138
|
+
const scope = currentScopeFor("queueForAnnotation");
|
|
139
|
+
if (!scope)
|
|
140
|
+
return;
|
|
141
|
+
if (!scope.client.requestAnnotationEvaluation)
|
|
142
|
+
return;
|
|
143
|
+
await scope.client.requestAnnotationEvaluation({ runId: scope.runId });
|
|
144
|
+
}
|
|
20
145
|
export async function withSovaraRun(input, fn) {
|
|
21
146
|
await ensureMcpPatchInstalled();
|
|
22
|
-
const options =
|
|
147
|
+
const options = normalizeRunOptions(input);
|
|
23
148
|
const parent = getCurrentRunScope();
|
|
149
|
+
if (!parent && isDegraded()) {
|
|
150
|
+
return await fn();
|
|
151
|
+
}
|
|
24
152
|
if (parent) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
parentRunId: parent.runId,
|
|
28
|
-
});
|
|
29
|
-
const scope = {
|
|
30
|
-
runId: subrun.runId,
|
|
31
|
-
name: options.name,
|
|
32
|
-
url: parent.url,
|
|
33
|
-
client: parent.client,
|
|
34
|
-
};
|
|
35
|
-
try {
|
|
36
|
-
return await scopeStorage.run(scope, fn);
|
|
37
|
-
}
|
|
38
|
-
finally {
|
|
39
|
-
await parent.client.deregisterRun({ runId: scope.runId });
|
|
40
|
-
}
|
|
153
|
+
console.warn("withSovaraRun() was called inside an active run; ignoring nested run. Use withSovaraSubrun() for child agent execution.");
|
|
154
|
+
return await fn();
|
|
41
155
|
}
|
|
42
156
|
const config = readRunnerConfig();
|
|
43
|
-
const
|
|
157
|
+
const project = resolveRunProjectConfig(config.cwd, options);
|
|
158
|
+
const connection = loadAgentConnection(project.projectName);
|
|
159
|
+
const url = options.url ?? connection?.serverUrl ?? config.url;
|
|
44
160
|
const skipLifecycle = options.__testing?.skipLifecycle ?? false;
|
|
45
161
|
if (!skipLifecycle) {
|
|
46
|
-
await ensureServerRunning(url);
|
|
162
|
+
const reachable = await ensureServerRunning(url);
|
|
163
|
+
if (!reachable) {
|
|
164
|
+
return await fn(); // no-op: run user code without a scope
|
|
165
|
+
}
|
|
47
166
|
}
|
|
48
|
-
const client = options.__testing?.client ?? new RuntimeClient(url);
|
|
49
|
-
const project = await resolveProjectContext(client, config.cwd, options.project, {
|
|
50
|
-
allowMissingProjectConfig: Boolean(options.__testing?.client
|
|
51
|
-
&& skipLifecycle
|
|
52
|
-
&& !options.__testing.requireProjectConfig),
|
|
53
|
-
});
|
|
167
|
+
const client = options.__testing?.client ?? new RuntimeClient(url, undefined, connection?.agentToken);
|
|
54
168
|
const codeVersion = collectCodeVersion(project.projectRoot);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
169
|
+
let registration;
|
|
170
|
+
try {
|
|
171
|
+
registration = await client.registerRun({
|
|
172
|
+
name: options.name,
|
|
173
|
+
clientRunId: options.clientRunId,
|
|
174
|
+
projectId: connection?.projectId,
|
|
175
|
+
projectName: project.projectName,
|
|
176
|
+
projectRoot: project.projectRoot,
|
|
177
|
+
codeVersion,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
raiseIfConfigError(error); // auth -> throw SovaraConfigError
|
|
182
|
+
warnOnce("register", "[sovara] Run registration failed; continuing without recording.");
|
|
183
|
+
markDegraded();
|
|
184
|
+
return await fn();
|
|
185
|
+
}
|
|
66
186
|
const scope = {
|
|
67
187
|
runId: registration.runId,
|
|
68
188
|
name: options.name,
|
|
69
189
|
url,
|
|
70
190
|
client,
|
|
191
|
+
lessonScopePaths: resolveLessonScope(options.lessonScope, ambientLessonScopePaths() ?? null),
|
|
192
|
+
};
|
|
193
|
+
const pendingLogUpdates = new Set();
|
|
194
|
+
const trackLogUpdate = (update) => {
|
|
195
|
+
const tracked = update.catch((error) => {
|
|
196
|
+
// A buffered log chunk can reach the server after the run has been
|
|
197
|
+
// deregistered, which answers 409 "Run is not active". That race is
|
|
198
|
+
// benign — swallow it. Anything else is worth a one-time warning.
|
|
199
|
+
if (error instanceof RuntimeClientError && error.status === 409) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
warnOnce("update-run-log-failed", "[sovara] Failed to update run log.");
|
|
203
|
+
});
|
|
204
|
+
pendingLogUpdates.add(tracked);
|
|
205
|
+
void tracked.finally(() => {
|
|
206
|
+
pendingLogUpdates.delete(tracked);
|
|
207
|
+
});
|
|
71
208
|
};
|
|
72
209
|
const stopLogCapture = options.captureLogs === false
|
|
73
210
|
? () => { }
|
|
@@ -75,27 +212,64 @@ export async function withSovaraRun(input, fn) {
|
|
|
75
212
|
runId: registration.runId,
|
|
76
213
|
resolveRunId: () => getCurrentRunScope()?.runId,
|
|
77
214
|
onAppend: (runId, chunk) => {
|
|
78
|
-
|
|
215
|
+
trackLogUpdate(client.updateRunLog({ runId, logText: chunk, replace: false }));
|
|
79
216
|
},
|
|
80
217
|
});
|
|
81
|
-
let shutdownRequested = false;
|
|
82
|
-
const sse = startRunSseListener({
|
|
83
|
-
url,
|
|
84
|
-
runId: registration.runId,
|
|
85
|
-
onShutdown: () => {
|
|
86
|
-
shutdownRequested = true;
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
218
|
try {
|
|
90
219
|
return await scopeStorage.run(scope, fn);
|
|
91
220
|
}
|
|
92
221
|
finally {
|
|
93
222
|
stopLogCapture();
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
223
|
+
// Flush in-flight log updates before finalizing the run, otherwise a late
|
|
224
|
+
// update lands after deregister and the server rejects it with 409.
|
|
225
|
+
await Promise.allSettled(pendingLogUpdates);
|
|
226
|
+
try {
|
|
227
|
+
await client.deregisterRun({ runId: registration.runId });
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
// If the run was already finalized server-side (e.g. the connection
|
|
231
|
+
// dropped early and the server's disconnect handler finished it), the
|
|
232
|
+
// deregister answers 409 "Run is not active". That is benign.
|
|
233
|
+
if (!(error instanceof RuntimeClientError && error.status === 409)) {
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
98
236
|
}
|
|
99
237
|
}
|
|
100
238
|
}
|
|
239
|
+
export async function withSovaraSubrun(input, fn) {
|
|
240
|
+
const options = normalizeSubrunOptions(input);
|
|
241
|
+
const parent = getCurrentRunScope();
|
|
242
|
+
if (!parent) {
|
|
243
|
+
throw new Error("withSovaraSubrun() requires an active Sovara run.");
|
|
244
|
+
}
|
|
245
|
+
const lessonScopePaths = resolveLessonScope(options.lessonScope, parent.lessonScopePaths);
|
|
246
|
+
const subrun = await parent.client.registerSubrun({
|
|
247
|
+
name: options.name,
|
|
248
|
+
parentRunId: parent.runId,
|
|
249
|
+
lessonScopePaths,
|
|
250
|
+
});
|
|
251
|
+
const scope = {
|
|
252
|
+
runId: subrun.runId,
|
|
253
|
+
name: options.name,
|
|
254
|
+
url: parent.url,
|
|
255
|
+
client: parent.client,
|
|
256
|
+
lessonScopePaths,
|
|
257
|
+
};
|
|
258
|
+
try {
|
|
259
|
+
return await scopeStorage.run(scope, fn);
|
|
260
|
+
}
|
|
261
|
+
finally {
|
|
262
|
+
await parent.client.deregisterRun({ runId: scope.runId });
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
export async function withLessonScope(lessonScope, fn) {
|
|
266
|
+
const lessonScopePaths = normalizeLessonScope(lessonScope);
|
|
267
|
+
const parent = getCurrentRunScope();
|
|
268
|
+
return await lessonScopeStorage.run(lessonScopePaths, async () => {
|
|
269
|
+
if (!parent) {
|
|
270
|
+
return await fn();
|
|
271
|
+
}
|
|
272
|
+
return await scopeStorage.run(scopeWithLessonScope(parent, lessonScopePaths), fn);
|
|
273
|
+
});
|
|
274
|
+
}
|
|
101
275
|
//# sourceMappingURL=context.js.map
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/env.d.ts
CHANGED
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +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,
|
|
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
CHANGED
|
@@ -3,10 +3,8 @@ export function resolveServerURL() {
|
|
|
3
3
|
return DEFAULT_SERVER_URL;
|
|
4
4
|
}
|
|
5
5
|
export function readRunnerConfig() {
|
|
6
|
-
const environment = Object.fromEntries(Object.entries(process.env).filter(([, value]) => typeof value === "string"));
|
|
7
6
|
return {
|
|
8
7
|
cwd: process.cwd(),
|
|
9
|
-
environment,
|
|
10
8
|
url: resolveServerURL(),
|
|
11
9
|
};
|
|
12
10
|
}
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
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,8 @@
|
|
|
1
|
+
export declare class SovaraConfigError extends Error {
|
|
2
|
+
}
|
|
3
|
+
export declare function markDegraded(): void;
|
|
4
|
+
export declare function isDegraded(): boolean;
|
|
5
|
+
export declare function resetDegraded(): void;
|
|
6
|
+
export declare function isAuthError(err: unknown): boolean;
|
|
7
|
+
export declare function raiseIfConfigError(err: unknown): void;
|
|
8
|
+
//# sourceMappingURL=failsafe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failsafe.d.ts","sourceRoot":"","sources":["../src/failsafe.ts"],"names":[],"mappings":"AAEA,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAI/C,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKjD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAWrD"}
|
package/dist/failsafe.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { RuntimeClientError } from "./runtimeClient.js";
|
|
2
|
+
export class SovaraConfigError extends Error {
|
|
3
|
+
}
|
|
4
|
+
let degraded = false;
|
|
5
|
+
export function markDegraded() {
|
|
6
|
+
degraded = true;
|
|
7
|
+
}
|
|
8
|
+
export function isDegraded() {
|
|
9
|
+
return degraded;
|
|
10
|
+
}
|
|
11
|
+
export function resetDegraded() {
|
|
12
|
+
degraded = false;
|
|
13
|
+
}
|
|
14
|
+
export function isAuthError(err) {
|
|
15
|
+
return (err instanceof RuntimeClientError &&
|
|
16
|
+
(err.status === 401 || err.status === 403));
|
|
17
|
+
}
|
|
18
|
+
export function raiseIfConfigError(err) {
|
|
19
|
+
if (err instanceof SovaraConfigError) {
|
|
20
|
+
throw err;
|
|
21
|
+
}
|
|
22
|
+
if (isAuthError(err)) {
|
|
23
|
+
const status = err.status;
|
|
24
|
+
throw new SovaraConfigError(`Sovara rejected the agent token (HTTP ${status}). ` +
|
|
25
|
+
"Reconnect this project with `sovara connect-agent` or set SOVARA_AGENT_TOKEN.");
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# 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;AAExD,MAAM,OAAO,iBAAkB,SAAQ,KAAK;CAAG;AAE/C,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,MAAM,UAAU,YAAY;IAC1B,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,QAAQ,GAAG,KAAK,CAAC;AACnB,CAAC;AAED,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,EAAE,CAAC;QACrC,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,MAAM,GAAI,GAA0B,CAAC,MAAM,CAAC;QAClD,MAAM,IAAI,iBAAiB,CACzB,yCAAyC,MAAM,KAAK;YAClD,+EAA+E,CAClF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
export { withSovaraRun } from "./context.js";
|
|
2
|
-
export type { WithSovaraRunOptions } from "./context.js";
|
|
3
|
-
export {
|
|
4
|
-
export { injectPriors, renderPriorsBlock } from "./priors.js";
|
|
5
|
-
export type { InjectPriorsMethod } from "./priors.js";
|
|
1
|
+
export { client, getRunId, logInput, logMetrics, logOutput, queueForAnnotation, withLessonScope, withSovaraRun, withSovaraSubrun, } from "./context.js";
|
|
2
|
+
export type { LessonScopeInput, WithSovaraRunOptions, WithSovaraSubrunOptions } from "./context.js";
|
|
3
|
+
export { injectLessons, renderLessonsBlock } from "./lessons.js";
|
|
6
4
|
export { trace } from "./trace.js";
|
|
7
5
|
export type { TraceOptions } from "./trace.js";
|
|
8
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { installFetchPatch } from "./transport/fetchPatch.js";
|
|
2
2
|
import { installNodeHttpPatch } from "./transport/nodeHttpPatch.js";
|
|
3
3
|
import { installAwsSdkHttp2Patch } from "./transport/awsSdkHttp2Patch.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 { client, getRunId, logInput, logMetrics, logOutput, queueForAnnotation, withLessonScope, withSovaraRun, withSovaraSubrun, } from "./context.js";
|
|
14
|
+
export { injectLessons, renderLessonsBlock } from "./lessons.js";
|
|
10
15
|
export { trace } from "./trace.js";
|
|
11
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +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;
|
|
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,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LessonRecord } from "./runtimeClient.js";
|
|
2
|
+
export declare function renderLessonsBlock(lessons: LessonRecord[], options?: {
|
|
3
|
+
manual?: boolean;
|
|
4
|
+
}): string;
|
|
5
|
+
export declare function injectLessons(context: unknown): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=lessons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lessons.d.ts","sourceRoot":"","sources":["../src/lessons.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUvD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,MAAM,CA6BR;AAaD,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCrE"}
|
package/dist/lessons.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { getCurrentRunScope } from "./context.js";
|
|
4
|
+
import { warnOnce } from "./util/logger.js";
|
|
5
|
+
const LESSONS_BLOCK_GUIDANCE = JSON.parse(readFileSync(fileURLToPath(new URL("./lessonsBlockGuidance.json", import.meta.url)), "utf8")).guidance;
|
|
6
|
+
export function renderLessonsBlock(lessons, options = {}) {
|
|
7
|
+
if (lessons.length === 0) {
|
|
8
|
+
return "";
|
|
9
|
+
}
|
|
10
|
+
const manifest = {
|
|
11
|
+
lessons: lessons
|
|
12
|
+
.filter((lesson) => typeof lesson.lesson_id === "string" && lesson.lesson_id.length > 0)
|
|
13
|
+
.map((lesson) => ({ lesson_id: lesson.lesson_id })),
|
|
14
|
+
};
|
|
15
|
+
if (options.manual) {
|
|
16
|
+
manifest.manual = true;
|
|
17
|
+
}
|
|
18
|
+
const blocks = lessons
|
|
19
|
+
.map((lesson) => {
|
|
20
|
+
const heading = lesson.title ?? lesson.name ?? lesson.lesson_id ?? "Untitled";
|
|
21
|
+
const body = lesson.content ?? "";
|
|
22
|
+
return `## ${heading}\n${body}`;
|
|
23
|
+
})
|
|
24
|
+
.join("\n\n");
|
|
25
|
+
return ("<sovara-lessons>\n" +
|
|
26
|
+
`<!-- ${JSON.stringify(manifest)} -->\n` +
|
|
27
|
+
`${LESSONS_BLOCK_GUIDANCE}\n\n` +
|
|
28
|
+
`${blocks}\n` +
|
|
29
|
+
"</sovara-lessons>");
|
|
30
|
+
}
|
|
31
|
+
function stringifyContext(context) {
|
|
32
|
+
if (typeof context === "string") {
|
|
33
|
+
return context;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
return JSON.stringify(context, null, 2);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return String(context);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export async function injectLessons(context) {
|
|
43
|
+
if (context === null || context === undefined) {
|
|
44
|
+
throw new Error("context is required for injectLessons()");
|
|
45
|
+
}
|
|
46
|
+
const scope = getCurrentRunScope();
|
|
47
|
+
if (!scope) {
|
|
48
|
+
warnOnce("injectLessons:no-active-run", "[sovara] injectLessons() called outside of withSovaraRun(); returning empty context.");
|
|
49
|
+
return "";
|
|
50
|
+
}
|
|
51
|
+
const { client } = scope;
|
|
52
|
+
try {
|
|
53
|
+
if (!client.retrieveLessons) {
|
|
54
|
+
return "";
|
|
55
|
+
}
|
|
56
|
+
const { lessons } = await client.retrieveLessons({
|
|
57
|
+
runId: scope.runId,
|
|
58
|
+
scopePaths: scope.lessonScopePaths,
|
|
59
|
+
context: stringifyContext(context),
|
|
60
|
+
});
|
|
61
|
+
return renderLessonsBlock(lessons, { manual: true });
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
warnOnce("injectLessons:fetch-failed", `[sovara] injectLessons() failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
65
|
+
return "";
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=lessons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lessons.js","sourceRoot":"","sources":["../src/lessons.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
{
|
|
2
|
+
"guidance": "These retrieved lessons are mandatory operating constraints for the current task when relevant. Because they were retrieved for this prompt, assume they are relevant unless there is a clear reason they do not apply. Before answering, identify internally which lessons apply and use them to shape the response. If a relevant lesson conflicts with your default reasoning, source phrasing, or broader habits, follow the lesson unless the user explicitly asks otherwise. Do not add content or framing that weakens, bypasses, or contradicts a relevant lesson."
|
|
3
|
+
}
|
package/dist/mcpPatch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpPatch.d.ts","sourceRoot":"","sources":["../src/mcpPatch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcpPatch.d.ts","sourceRoot":"","sources":["../src/mcpPatch.ts"],"names":[],"mappings":"AAsMA,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0C7D"}
|