@sovara/runner 0.1.1 → 0.3.3
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 +64 -18
- package/dist/annotation.d.ts +3 -0
- package/dist/annotation.d.ts.map +1 -0
- package/dist/annotation.js +27 -0
- package/dist/annotation.js.map +1 -0
- package/dist/codeVersion.d.ts +19 -0
- package/dist/codeVersion.d.ts.map +1 -0
- package/dist/codeVersion.js +125 -0
- package/dist/codeVersion.js.map +1 -0
- package/dist/context.d.ts +4 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +8 -1
- package/dist/context.js.map +1 -1
- package/dist/env.d.ts +1 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +75 -1
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/payload/editIoExcludePatterns.json +3 -0
- package/dist/payload/wrap.d.ts +5 -1
- package/dist/payload/wrap.d.ts.map +1 -1
- package/dist/payload/wrap.js +75 -3
- package/dist/payload/wrap.js.map +1 -1
- package/dist/projectContext.d.ts +3 -1
- package/dist/projectContext.d.ts.map +1 -1
- package/dist/projectContext.js +23 -17
- package/dist/projectContext.js.map +1 -1
- package/dist/runtimeClient.d.ts +6 -0
- package/dist/runtimeClient.d.ts.map +1 -1
- package/dist/runtimeClient.js +16 -0
- package/dist/runtimeClient.js.map +1 -1
- package/dist/serverLifecycle.d.ts.map +1 -1
- package/dist/serverLifecycle.js +1 -33
- package/dist/serverLifecycle.js.map +1 -1
- package/dist/toolTraceUtils.d.ts +37 -0
- package/dist/toolTraceUtils.d.ts.map +1 -0
- package/dist/toolTraceUtils.js +184 -0
- package/dist/toolTraceUtils.js.map +1 -0
- package/dist/trace.d.ts +13 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +133 -0
- package/dist/trace.js.map +1 -0
- package/dist/user.js +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -11,9 +11,9 @@ with Python runs in the same project.
|
|
|
11
11
|
## Requirements
|
|
12
12
|
|
|
13
13
|
- Node 18 or newer (built-in `fetch`).
|
|
14
|
-
- A
|
|
15
|
-
|
|
16
|
-
- A Sovara user and project, configured once with `
|
|
14
|
+
- A reachable Sovara backend. For local use, open the Sovara desktop app;
|
|
15
|
+
for enterprise use, point `SOVARA_SERVER_URL` at the remote endpoint.
|
|
16
|
+
- A Sovara user and project, configured once with `sovara init`.
|
|
17
17
|
|
|
18
18
|
## Install
|
|
19
19
|
|
|
@@ -110,11 +110,10 @@ whatever `fn` returns.
|
|
|
110
110
|
|
|
111
111
|
**Top-level call** (no parent run on the stack):
|
|
112
112
|
|
|
113
|
-
1. Health-checks the server
|
|
114
|
-
|
|
115
|
-
2. Resolves the active user. Fails hard with a `so-cli init` hint if
|
|
113
|
+
1. Health-checks the configured server and fails fast if it is unreachable.
|
|
114
|
+
2. Resolves the active user. Fails hard with a `sovara init` hint if
|
|
116
115
|
user setup is missing.
|
|
117
|
-
3. Resolves the project for `process.cwd()`. Fails hard with a `
|
|
116
|
+
3. Resolves the project for `process.cwd()`. Fails hard with a `sovara init`
|
|
118
117
|
hint if the cwd isn't part of a known Sovara project.
|
|
119
118
|
4. Registers the run, opens an SSE shutdown listener, runs `fn` inside
|
|
120
119
|
an `AsyncLocalStorage` scope, and deregisters in `finally`.
|
|
@@ -167,7 +166,54 @@ await withSovaraRun(
|
|
|
167
166
|
```
|
|
168
167
|
|
|
169
168
|
Overrides are only applied if user/project are present. They don't bypass
|
|
170
|
-
the `
|
|
169
|
+
the `sovara init` requirement — they just refine the values.
|
|
170
|
+
|
|
171
|
+
### `trace(fn, options?)`
|
|
172
|
+
|
|
173
|
+
Use `trace` when an important custom function or tool does not make an LLM
|
|
174
|
+
HTTP call on its own, but should still appear as a tool node in the Sovara
|
|
175
|
+
run graph.
|
|
176
|
+
|
|
177
|
+
```ts
|
|
178
|
+
import { trace, withSovaraRun } from "@sovara/runner";
|
|
179
|
+
|
|
180
|
+
const lookupCustomer = trace(
|
|
181
|
+
async function lookupCustomer(customerId: string) {
|
|
182
|
+
return { customerId, tier: "enterprise" };
|
|
183
|
+
},
|
|
184
|
+
{ meta: { system: "crm" } },
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
await withSovaraRun("support-agent", async () => {
|
|
188
|
+
const customer = await lookupCustomer("cust_123");
|
|
189
|
+
// Continue your agent flow with customer.
|
|
190
|
+
});
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
`trace` records function arguments as the node input and the return value as
|
|
194
|
+
the node output. If the wrapped function throws, the error type and message
|
|
195
|
+
are recorded and the original exception is re-thrown. Outside an active
|
|
196
|
+
`withSovaraRun(...)` scope, the wrapper calls the function normally without
|
|
197
|
+
recording anything.
|
|
198
|
+
|
|
199
|
+
```ts
|
|
200
|
+
export type TraceOptions = {
|
|
201
|
+
name?: string; // display name for the tool node, default: function/method name
|
|
202
|
+
meta?: Record<string, unknown>; // optional metadata stored with input/output
|
|
203
|
+
};
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
The same helper can be used as a standard Stage 3 method decorator when your
|
|
207
|
+
TypeScript configuration supports decorators:
|
|
208
|
+
|
|
209
|
+
```ts
|
|
210
|
+
class WeatherService {
|
|
211
|
+
@trace({ name: "weather_lookup" })
|
|
212
|
+
async lookup(city: string) {
|
|
213
|
+
return { city, forecast: "sunny" };
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
```
|
|
171
217
|
|
|
172
218
|
## Claude Agent SDK integration
|
|
173
219
|
|
|
@@ -257,14 +303,14 @@ Or set `SOVARA_SERVER_URL` once for the process.
|
|
|
257
303
|
|
|
258
304
|
The runner fails fast for misconfiguration. Common ones:
|
|
259
305
|
|
|
260
|
-
- **`Sovara
|
|
261
|
-
|
|
306
|
+
- **`Sovara backend is not reachable at <url>. Open the Sovara desktop app or configure SOVARA_SERVER_URL to a reachable enterprise Sovara backend endpoint.`**
|
|
307
|
+
Open the desktop app for local runs, or point `SOVARA_SERVER_URL` at the enterprise backend.
|
|
262
308
|
|
|
263
|
-
- **``Sovara user setup is missing. Run `
|
|
264
|
-
Run the suggested `
|
|
309
|
+
- **``Sovara user setup is missing. Run `sovara init --user-name <full-name> --user-email <email>` and retry.``**
|
|
310
|
+
Run the suggested `sovara init` command.
|
|
265
311
|
|
|
266
|
-
- **``Sovara project setup is missing for <cwd>. Run `
|
|
267
|
-
Run the suggested `
|
|
312
|
+
- **``Sovara project setup is missing for <cwd>. Run `sovara init --project-root "<cwd>" --project-name <project-name>` and retry.``**
|
|
313
|
+
Run the suggested `sovara init` command.
|
|
268
314
|
|
|
269
315
|
- **`Custom Claude Agent SDK transports are not supported yet under sovara.`**
|
|
270
316
|
Remove `options.transport` from your `query()` / `startup()` call.
|
|
@@ -296,9 +342,9 @@ npm run build # emit dist/ via tsc -p tsconfig.build.json
|
|
|
296
342
|
|
|
297
343
|
## Releasing
|
|
298
344
|
|
|
299
|
-
Publishing is automated via GitHub Actions using npm trusted publishing (OIDC)
|
|
300
|
-
|
|
301
|
-
|
|
345
|
+
Publishing is automated via GitHub Actions using npm trusted publishing (OIDC).
|
|
346
|
+
There is no `NPM_TOKEN` secret — the `runner-ts-release.yaml` workflow
|
|
347
|
+
authenticates to npm via OIDC.
|
|
302
348
|
|
|
303
349
|
To cut a release:
|
|
304
350
|
|
|
@@ -311,6 +357,6 @@ To cut a release:
|
|
|
311
357
|
```
|
|
312
358
|
3. The `Runner (TypeScript) — Release` workflow verifies the tag matches
|
|
313
359
|
`package.json`, runs typecheck + tests + build, then publishes with
|
|
314
|
-
`npm publish --
|
|
360
|
+
`npm publish --access public`.
|
|
315
361
|
|
|
316
362
|
The tag must match the package version exactly; mismatches fail the workflow.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotation.d.ts","sourceRoot":"","sources":["../src/annotation.ts"],"names":[],"mappings":"AAYA,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAW7D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { getCurrentRunScope } from "./context.js";
|
|
2
|
+
import { warnOnce } from "./util/logger.js";
|
|
3
|
+
function warnAnnotationRequestFailed(error) {
|
|
4
|
+
warnOnce("evaluateAnnotation:request-failed", `[sovara] evaluateAnnotation() failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
5
|
+
}
|
|
6
|
+
export function evaluateAnnotation() {
|
|
7
|
+
const scope = getCurrentRunScope();
|
|
8
|
+
if (!scope?.client.requestAnnotationEvaluation) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
void scope.client
|
|
12
|
+
.requestAnnotationEvaluation({ runId: scope.runId })
|
|
13
|
+
.catch(warnAnnotationRequestFailed);
|
|
14
|
+
}
|
|
15
|
+
export async function evaluateAnnotationAsync() {
|
|
16
|
+
const scope = getCurrentRunScope();
|
|
17
|
+
if (!scope?.client.requestAnnotationEvaluation) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
await scope.client.requestAnnotationEvaluation({ runId: scope.runId });
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
warnAnnotationRequestFailed(error);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=annotation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotation.js","sourceRoot":"","sources":["../src/annotation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,SAAS,2BAA2B,CAAC,KAAc;IACjD,QAAQ,CACN,mCAAmC,EACnC,yCACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,2BAA2B,EAAE,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,KAAK,KAAK,CAAC,MAAM;SACd,2BAA2B,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;SACnD,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,2BAA2B,EAAE,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type CodeVersion = {
|
|
2
|
+
type: "git";
|
|
3
|
+
available: boolean;
|
|
4
|
+
status: "clean" | "dirty" | "missing_project_root" | "missing_project_config" | "git_unavailable" | "not_git_repo" | "no_commit";
|
|
5
|
+
repo_root: string | null;
|
|
6
|
+
commit_sha: string | null;
|
|
7
|
+
short_commit_sha: string | null;
|
|
8
|
+
branch: string | null;
|
|
9
|
+
dirty: boolean | null;
|
|
10
|
+
remote_url: string | null;
|
|
11
|
+
web_url: string | null;
|
|
12
|
+
commit_url: string | null;
|
|
13
|
+
};
|
|
14
|
+
export declare function normalizeGitRemoteURL(remoteURL: string | null | undefined): string | null;
|
|
15
|
+
export declare function buildCommitURL(webURL: string | null, commitSHA: string | null): string | null;
|
|
16
|
+
export declare function collectCodeVersion(projectRoot: string | null | undefined): CodeVersion;
|
|
17
|
+
export declare function findProjectRoot(startPath: string): string | null;
|
|
18
|
+
export declare function readProjectId(projectRoot: string): string;
|
|
19
|
+
//# sourceMappingURL=codeVersion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeVersion.d.ts","sourceRoot":"","sources":["../src/codeVersion.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EACF,OAAO,GACP,OAAO,GACP,sBAAsB,GACtB,wBAAwB,GACxB,iBAAiB,GACjB,cAAc,GACd,WAAW,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AA4BF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CA6BzF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAiB7F;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CAqCtF;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYhE;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
const GIT_TIMEOUT_MS = 2000;
|
|
5
|
+
const emptyCodeVersion = (status) => ({
|
|
6
|
+
type: "git",
|
|
7
|
+
available: false,
|
|
8
|
+
status,
|
|
9
|
+
repo_root: null,
|
|
10
|
+
commit_sha: null,
|
|
11
|
+
short_commit_sha: null,
|
|
12
|
+
branch: null,
|
|
13
|
+
dirty: null,
|
|
14
|
+
remote_url: null,
|
|
15
|
+
web_url: null,
|
|
16
|
+
commit_url: null,
|
|
17
|
+
});
|
|
18
|
+
function runGit(cwd, args) {
|
|
19
|
+
const result = spawnSync("git", ["-C", cwd, ...args], {
|
|
20
|
+
encoding: "utf8",
|
|
21
|
+
timeout: GIT_TIMEOUT_MS,
|
|
22
|
+
});
|
|
23
|
+
if (result.error || result.status !== 0) {
|
|
24
|
+
return { ok: false, stdout: "" };
|
|
25
|
+
}
|
|
26
|
+
return { ok: true, stdout: result.stdout.trim() };
|
|
27
|
+
}
|
|
28
|
+
export function normalizeGitRemoteURL(remoteURL) {
|
|
29
|
+
const remote = remoteURL?.trim();
|
|
30
|
+
if (!remote) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const ssh = /^(?:ssh:\/\/)?git@([^/:]+)(?::|\/)(.+)$/.exec(remote);
|
|
34
|
+
if (ssh) {
|
|
35
|
+
const host = ssh[1];
|
|
36
|
+
const path = ssh[2].replace(/\/+$/, "").replace(/\.git$/, "");
|
|
37
|
+
return path ? `https://${host}/${path}` : null;
|
|
38
|
+
}
|
|
39
|
+
let parsed;
|
|
40
|
+
try {
|
|
41
|
+
parsed = new URL(remote);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const path = parsed.pathname.replace(/\/+$/, "").replace(/\.git$/, "");
|
|
50
|
+
if (!parsed.hostname || !path || path === "/") {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const port = parsed.port ? `:${parsed.port}` : "";
|
|
54
|
+
return `https://${parsed.hostname}${port}${path}`;
|
|
55
|
+
}
|
|
56
|
+
export function buildCommitURL(webURL, commitSHA) {
|
|
57
|
+
if (!webURL || !commitSHA) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
let hostname = "";
|
|
61
|
+
try {
|
|
62
|
+
hostname = new URL(webURL).hostname;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
if (hostname === "github.com" || hostname.endsWith(".github.com")) {
|
|
68
|
+
return `${webURL}/commit/${commitSHA}`;
|
|
69
|
+
}
|
|
70
|
+
if (hostname === "gitlab.com" || hostname.endsWith(".gitlab.com")) {
|
|
71
|
+
return `${webURL}/-/commit/${commitSHA}`;
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
export function collectCodeVersion(projectRoot) {
|
|
76
|
+
if (!projectRoot) {
|
|
77
|
+
return emptyCodeVersion("missing_project_root");
|
|
78
|
+
}
|
|
79
|
+
const repo = runGit(projectRoot, ["rev-parse", "--show-toplevel"]);
|
|
80
|
+
if (!repo.ok || !repo.stdout) {
|
|
81
|
+
return emptyCodeVersion("not_git_repo");
|
|
82
|
+
}
|
|
83
|
+
const commit = runGit(repo.stdout, ["rev-parse", "HEAD"]);
|
|
84
|
+
if (!commit.ok || !commit.stdout) {
|
|
85
|
+
return {
|
|
86
|
+
...emptyCodeVersion("no_commit"),
|
|
87
|
+
repo_root: repo.stdout,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const branch = runGit(repo.stdout, ["branch", "--show-current"]);
|
|
91
|
+
const status = runGit(repo.stdout, ["status", "--porcelain", "--untracked-files=all"]);
|
|
92
|
+
const remote = runGit(repo.stdout, ["remote", "get-url", "origin"]);
|
|
93
|
+
const dirty = status.ok ? status.stdout.length > 0 : null;
|
|
94
|
+
const webURL = normalizeGitRemoteURL(remote.ok ? remote.stdout : null);
|
|
95
|
+
return {
|
|
96
|
+
type: "git",
|
|
97
|
+
available: true,
|
|
98
|
+
status: dirty ? "dirty" : "clean",
|
|
99
|
+
repo_root: repo.stdout,
|
|
100
|
+
commit_sha: commit.stdout,
|
|
101
|
+
short_commit_sha: commit.stdout.slice(0, 7),
|
|
102
|
+
branch: branch.ok && branch.stdout ? branch.stdout : null,
|
|
103
|
+
dirty,
|
|
104
|
+
remote_url: webURL,
|
|
105
|
+
web_url: webURL,
|
|
106
|
+
commit_url: buildCommitURL(webURL, commit.stdout),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export function findProjectRoot(startPath) {
|
|
110
|
+
let current = resolve(startPath);
|
|
111
|
+
while (true) {
|
|
112
|
+
if (existsSync(join(current, ".sovara", ".project_id"))) {
|
|
113
|
+
return current;
|
|
114
|
+
}
|
|
115
|
+
const parent = dirname(current);
|
|
116
|
+
if (parent === current) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
current = parent;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export function readProjectId(projectRoot) {
|
|
123
|
+
return readFileSync(join(projectRoot, ".sovara", ".project_id"), "utf8").trim();
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=codeVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeVersion.js","sourceRoot":"","sources":["../src/codeVersion.ts"],"names":[],"mappings":"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"}
|
package/dist/context.d.ts
CHANGED
|
@@ -14,12 +14,14 @@ export type WithSovaraRunOptions = {
|
|
|
14
14
|
__testing?: {
|
|
15
15
|
client?: RunScopeClient;
|
|
16
16
|
skipLifecycle?: boolean;
|
|
17
|
+
requireProjectConfig?: boolean;
|
|
17
18
|
};
|
|
18
19
|
};
|
|
19
|
-
type CoreRunScopeClientMethods = "registerSubrun" | "deregisterRun" | "updateRunLog" | "getActiveUser" | "
|
|
20
|
+
type CoreRunScopeClientMethods = "registerSubrun" | "deregisterRun" | "updateRunLog" | "getActiveUser" | "getProject" | "registerRun" | "prepareCall" | "recordOutput" | "recordException";
|
|
20
21
|
type ClaudeRunScopeClientMethods = "registerClaudeProxyClient" | "registerClaudeSdkToolUse" | "finalizeClaudeSdkToolResult";
|
|
21
22
|
type PriorsRunScopeClientMethods = "queryPriors" | "retrievePriors";
|
|
22
|
-
|
|
23
|
+
type AnnotationRunScopeClientMethods = "requestAnnotationEvaluation";
|
|
24
|
+
export type RunScopeClient = Pick<RuntimeClient, CoreRunScopeClientMethods> & Partial<Pick<RuntimeClient, ClaudeRunScopeClientMethods | PriorsRunScopeClientMethods | AnnotationRunScopeClientMethods>>;
|
|
23
25
|
export type RunScope = {
|
|
24
26
|
runId: string;
|
|
25
27
|
name: string;
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnD,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,cAAc,CAAC;QACxB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;CACH,CAAC;AAEF,KAAK,yBAAyB,GAC1B,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,eAAe,GACf,YAAY,GACZ,aAAa,GACb,aAAa,GACb,cAAc,GACd,iBAAiB,CAAC;AAEtB,KAAK,2BAA2B,GAC5B,2BAA2B,GAC3B,0BAA0B,GAC1B,6BAA6B,CAAC;AAElC,KAAK,2BAA2B,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAEpE,KAAK,+BAA+B,GAAG,6BAA6B,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,yBAAyB,CAAC,GACzE,OAAO,CACL,IAAI,CACF,aAAa,EACb,2BAA2B,GAAG,2BAA2B,GAAG,+BAA+B,CAC5F,CACF,CAAC;AAEJ,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAWF,wBAAgB,kBAAkB,IAAI,QAAQ,GAAG,SAAS,CAEzD;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,KAAK,EAAE,MAAM,GAAG,oBAAoB,EACpC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CAkGZ"}
|
package/dist/context.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
import { collectCodeVersion } from "./codeVersion.js";
|
|
2
3
|
import { readRunnerConfig } from "./env.js";
|
|
3
4
|
import { resolveProjectContext } from "./projectContext.js";
|
|
4
5
|
import { installRunLogCapture } from "./runLogCapture.js";
|
|
@@ -47,7 +48,12 @@ export async function withSovaraRun(input, fn) {
|
|
|
47
48
|
}
|
|
48
49
|
const client = options.__testing?.client ?? new RuntimeClient(url);
|
|
49
50
|
const user = await resolveActiveUser(client, options.user);
|
|
50
|
-
const project = await resolveProjectContext(client, config.cwd, options.project
|
|
51
|
+
const project = await resolveProjectContext(client, config.cwd, options.project, {
|
|
52
|
+
allowMissingProjectConfig: Boolean(options.__testing?.client
|
|
53
|
+
&& skipLifecycle
|
|
54
|
+
&& !options.__testing.requireProjectConfig),
|
|
55
|
+
});
|
|
56
|
+
const codeVersion = collectCodeVersion(project.projectRoot);
|
|
51
57
|
const registration = await client.registerRun({
|
|
52
58
|
name: options.name,
|
|
53
59
|
cwd: config.cwd,
|
|
@@ -60,6 +66,7 @@ export async function withSovaraRun(input, fn) {
|
|
|
60
66
|
userId: user.userId,
|
|
61
67
|
userFullName: user.fullName,
|
|
62
68
|
userEmail: user.email,
|
|
69
|
+
codeVersion,
|
|
63
70
|
});
|
|
64
71
|
const scope = {
|
|
65
72
|
runId: registration.runId,
|
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,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/env.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ export type RunnerConfig = {
|
|
|
3
3
|
environment: Record<string, string>;
|
|
4
4
|
url: string;
|
|
5
5
|
};
|
|
6
|
+
export declare function resolveServerURL(environment: Record<string, string>): string;
|
|
6
7
|
export declare function readRunnerConfig(): RunnerConfig;
|
|
7
8
|
//# sourceMappingURL=env.d.ts.map
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAY5E;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CAU/C"}
|
package/dist/env.js
CHANGED
|
@@ -1,10 +1,84 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
1
4
|
import { DEFAULT_SERVER_URL } from "./constants.js";
|
|
5
|
+
export function resolveServerURL(environment) {
|
|
6
|
+
const envURL = normalizeServerURL(environment.SOVARA_SERVER_URL);
|
|
7
|
+
if (envURL) {
|
|
8
|
+
return envURL;
|
|
9
|
+
}
|
|
10
|
+
const configuredURL = readConfiguredServerURL(environment);
|
|
11
|
+
if (configuredURL) {
|
|
12
|
+
return configuredURL;
|
|
13
|
+
}
|
|
14
|
+
return DEFAULT_SERVER_URL;
|
|
15
|
+
}
|
|
2
16
|
export function readRunnerConfig() {
|
|
3
17
|
const environment = Object.fromEntries(Object.entries(process.env).filter(([, value]) => typeof value === "string"));
|
|
4
18
|
return {
|
|
5
19
|
cwd: process.cwd(),
|
|
6
20
|
environment,
|
|
7
|
-
url:
|
|
21
|
+
url: resolveServerURL(environment),
|
|
8
22
|
};
|
|
9
23
|
}
|
|
24
|
+
function readConfiguredServerURL(environment) {
|
|
25
|
+
const home = environment.HOME || homedir();
|
|
26
|
+
if (!home) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const configPath = join(home, ".sovara", "config.yaml");
|
|
30
|
+
if (!existsSync(configPath)) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const content = readFileSync(configPath, "utf8");
|
|
34
|
+
for (const rawLine of content.split(/\r?\n/)) {
|
|
35
|
+
const parsed = parseConfigLine(rawLine);
|
|
36
|
+
if (!parsed) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const [key, value] = parsed;
|
|
40
|
+
if (key !== "server_url" && key !== "sovara_server_url") {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
return normalizeServerURL(value);
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
function parseConfigLine(line) {
|
|
48
|
+
const trimmed = line.trim();
|
|
49
|
+
if (!trimmed || trimmed.startsWith("#")) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const separator = trimmed.indexOf(":");
|
|
53
|
+
if (separator === -1) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const key = trimmed.slice(0, separator).trim();
|
|
57
|
+
const value = stripInlineComment(trimmed.slice(separator + 1)).trim().replace(/^['"]|['"]$/g, "");
|
|
58
|
+
if (!key || !value) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return [key, value];
|
|
62
|
+
}
|
|
63
|
+
function stripInlineComment(value) {
|
|
64
|
+
let inSingle = false;
|
|
65
|
+
let inDouble = false;
|
|
66
|
+
for (let i = 0; i < value.length; i += 1) {
|
|
67
|
+
const char = value[i];
|
|
68
|
+
if (char === "'" && !inDouble) {
|
|
69
|
+
inSingle = !inSingle;
|
|
70
|
+
}
|
|
71
|
+
else if (char === '"' && !inSingle) {
|
|
72
|
+
inDouble = !inDouble;
|
|
73
|
+
}
|
|
74
|
+
else if (char === "#" && !inSingle && !inDouble) {
|
|
75
|
+
return value.slice(0, i);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
80
|
+
function normalizeServerURL(value) {
|
|
81
|
+
const trimmed = value?.trim().replace(/\/+$/, "");
|
|
82
|
+
return trimmed || null;
|
|
83
|
+
}
|
|
10
84
|
//# sourceMappingURL=env.js.map
|
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;AAQpD,MAAM,UAAU,gBAAgB;IAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CACpC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CACnD,CAAC;IAE5B,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,WAAW;QACX,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export { withSovaraRun } from "./context.js";
|
|
2
2
|
export type { WithSovaraRunOptions } from "./context.js";
|
|
3
|
+
export { evaluateAnnotation, evaluateAnnotationAsync } from "./annotation.js";
|
|
3
4
|
export { injectPriors, renderPriorsBlock } from "./priors.js";
|
|
4
5
|
export type { InjectPriorsMethod } from "./priors.js";
|
|
6
|
+
export { trace } from "./trace.js";
|
|
7
|
+
export type { TraceOptions } from "./trace.js";
|
|
5
8
|
//# 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":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,5 +5,7 @@ installFetchPatch();
|
|
|
5
5
|
installNodeHttpPatch();
|
|
6
6
|
installAwsSdkHttp2Patch();
|
|
7
7
|
export { withSovaraRun } from "./context.js";
|
|
8
|
+
export { evaluateAnnotation, evaluateAnnotationAsync } from "./annotation.js";
|
|
8
9
|
export { injectPriors, renderPriorsBlock } from "./priors.js";
|
|
10
|
+
export { trace } from "./trace.js";
|
|
9
11
|
//# 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;AAE1E,iBAAiB,EAAE,CAAC;AACpB,oBAAoB,EAAE,CAAC;AACvB,uBAAuB,EAAE,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,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;AAE1E,iBAAiB,EAAE,CAAC;AACpB,oBAAoB,EAAE,CAAC;AACvB,uBAAuB,EAAE,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/payload/wrap.d.ts
CHANGED
|
@@ -2,5 +2,9 @@ export type StorageEnvelope<T = unknown> = {
|
|
|
2
2
|
raw: T;
|
|
3
3
|
to_show: Record<string, unknown>;
|
|
4
4
|
};
|
|
5
|
-
export
|
|
5
|
+
export type StorageEnvelopeOptions = {
|
|
6
|
+
apiType?: string;
|
|
7
|
+
direction?: "input" | "output";
|
|
8
|
+
};
|
|
9
|
+
export declare function wrapForStorage<T>(raw: T, options?: StorageEnvelopeOptions): StorageEnvelope<T>;
|
|
6
10
|
//# sourceMappingURL=wrap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/payload/wrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/payload/wrap.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,OAAO,IAAI;IACzC,GAAG,EAAE,CAAC,CAAC;IACP,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAChC,CAAC;AA+FF,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAAC,CAAC,CAAC,CAK9F"}
|