@cef-ai/cli 2.9.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,47 +1,22 @@
1
1
  /**
2
- * Credentials for `cef eval`.
2
+ * The wallet `cef eval` signs vault-api requests with: the evaluations live in
3
+ * the vault (`eval-vault.ts`), and the same key publishes `workflow.start` and
4
+ * reads the run's events.
3
5
  *
4
- * THE STORE is the agent service's bucket on the DDC S3 gateway
5
- * (`as-<first 60 hex of the AS pubkey>`, the bucket ROC uses), reached with a
6
- * short-lived S3 credential minted for the owner's wallet: a DDC delegation
7
- * token naming the gateway as subject, signed by the wallet, registered at
8
- * `POST /auth/credentials`. The same mint ROC does in the browser. Explicit
9
- * credentials (`--access-key` / `--secret` / `--bucket`) skip it.
10
- *
11
- * THE WALLET comes from a keystore JSON (`--keystore` + `--password`, the
12
- * export of a Cere wallet) or a secret phrase (`--secret-phrase`). Both are
13
- * ed25519; the same key signs vault-api requests (publishing `workflow.start`,
14
- * reading the run's events).
15
- *
16
- * THE DDC ACCESS TOKEN `cef push` uses (`$CEF_DDC_ACCESS_TOKEN`, minted in
17
- * ROC's Access tab) CANNOT OPEN THE STORE, and no CLI-side delegation fixes
18
- * that — see {@link ddcTokenCannotOpenStore} for the three reasons. A person
19
- * who has only that token is told so, and what to use instead, rather than
20
- * being asked for a wallet they may not have.
21
- *
22
- * THE ORCHESTRATOR (deployments, jobs) takes the CLI access token
23
- * (`--access-token` / `$CEF_ACCESS_TOKEN`), as `cef deploy` does.
24
- *
25
- * A MINTED CREDENTIAL LIVES ONE HOUR, and a run can take longer. It is served
26
- * through a {@link CredentialSource}: re-minted before it expires (the S3
27
- * client asks again inside its own refresh window), re-minted once when the
28
- * gateway refuses it anyway (403), and kept in a 0600 file cache so the next
29
- * command reuses it instead of minting another — the gateway caps live
30
- * credentials per wallet, and one per command reaches that cap quickly.
6
+ * It comes from a keystore JSON (`--keystore` + `--password`, the export of a
7
+ * Cere wallet) or a secret phrase (`--secret-phrase`). Both are ed25519.
8
+ * Without one, `--access-token` carries vault-api requests instead.
31
9
  */
32
- import { chmod, mkdir, open, readFile, rename, rm, stat, writeFile } from "node:fs/promises";
10
+ import { readFile } from "node:fs/promises";
33
11
  import os from "node:os";
34
12
  import path from "node:path";
35
- import { CredentialLimitError, registerCredential } from "@cef-ai/account";
36
- import { inspectAccessTokenScope, ss58Address } from "./access-token.js";
37
- import { envConfig } from "./env.js";
38
13
  async function ddcSdk() {
39
14
  try {
40
15
  return (await import("@cere-ddc-sdk/ddc-client"));
41
16
  }
42
17
  catch {
43
18
  throw new Error("[cef eval] signing with a wallet needs the optional dependency @cere-ddc-sdk/ddc-client; install it, "
44
- + "or pass explicit gateway credentials (--access-key/--secret/--bucket)");
19
+ + "or pass --access-token instead");
45
20
  }
46
21
  }
47
22
  /** The wallet from options, then `$CEF_KEYSTORE`/`$CEF_KEYSTORE_PASSWORD`, then `$CEF_SECRET_PHRASE`; undefined when none. */
@@ -72,314 +47,4 @@ export async function loadWallet(opts) {
72
47
  }
73
48
  return undefined;
74
49
  }
75
- /** The AS bucket on the S3 gateway, as ROC derives it. */
76
- export function deriveAsBucketName(asPubKey) {
77
- const hex = asPubKey.replace(/^0x/i, "").toLowerCase().replace(/[^0-9a-f]/g, "");
78
- return `as-${hex.slice(0, 60)}`;
79
- }
80
- /** The gateway base URL: the env's auth-info URL minus `/auth/info`. */
81
- export function gatewayBaseUrl(env) {
82
- return envConfig(env).s3GatewayAuthInfo.replace(/\/auth\/info\/?$/, "");
83
- }
84
- export const CREDENTIAL_TTL_SECONDS = 3600;
85
- /** A credential with less than this left is replaced before use. More than the S3 client's own 5 min refresh window. */
86
- export const CREDENTIAL_REFRESH_MARGIN_MS = 10 * 60_000;
87
- /** Explicit keys: served as given, never replaced. */
88
- export function staticCredentials(c) {
89
- return { get: async () => c, invalidate: async () => false };
90
- }
91
- /**
92
- * Minted on demand: reused while it has more than `refreshMarginMs` left,
93
- * replaced (from the cache if another command already minted a fresh one,
94
- * else by minting) once it does not. Concurrent callers share one mint.
95
- */
96
- export function mintedCredentials(opts) {
97
- const now = opts.now ?? Date.now;
98
- const margin = opts.refreshMarginMs ?? CREDENTIAL_REFRESH_MARGIN_MS;
99
- const fresh = (c) => !!c && (c.expiresAt === undefined || c.expiresAt - now() > margin);
100
- let current;
101
- let pending;
102
- const replace = async () => {
103
- const cached = await opts.cache?.read().catch(() => undefined);
104
- if (fresh(cached))
105
- return cached;
106
- const minted = await opts.mint();
107
- await opts.cache?.write(minted).catch(() => { });
108
- return minted;
109
- };
110
- return {
111
- async get() {
112
- if (fresh(current))
113
- return current;
114
- pending ??= replace().then((c) => {
115
- current = c;
116
- pending = undefined;
117
- return c;
118
- }, (e) => {
119
- pending = undefined;
120
- throw e;
121
- });
122
- return pending;
123
- },
124
- async invalidate() {
125
- const dropped = current;
126
- current = undefined;
127
- if (dropped)
128
- await opts.cache?.clear(dropped.accessKeyId).catch(() => { });
129
- return true;
130
- },
131
- };
132
- }
133
- /** The default cache file: `$CEF_EVAL_CREDENTIAL_CACHE`, else `~/.cef/eval-credentials.json`; `off` disables. */
134
- export function defaultCredentialCacheFile() {
135
- const env = process.env.CEF_EVAL_CREDENTIAL_CACHE;
136
- if (env === "off" || env === "0" || env === "false")
137
- return undefined;
138
- return env || path.join(os.homedir(), ".cef", "eval-credentials.json");
139
- }
140
- /** How long a cache update waits for another process's lock before going ahead without it. */
141
- export const CREDENTIAL_CACHE_LOCK_WAIT_MS = 2000;
142
- /** A lock older than this was left by a process that died holding it. */
143
- const CREDENTIAL_CACHE_LOCK_STALE_MS = 10_000;
144
- /**
145
- * Hold `<file>.lock` (created exclusively) while `fn` runs. A lock older than
146
- * the stale limit is taken over; one still held after the wait is ignored —
147
- * the cache only saves mints, so a rare lost entry beats a stuck command.
148
- */
149
- async function withFileLock(file, fn) {
150
- const lock = `${file}.lock`;
151
- const deadline = Date.now() + CREDENTIAL_CACHE_LOCK_WAIT_MS;
152
- let held = false;
153
- while (!held) {
154
- try {
155
- await (await open(lock, "wx", 0o600)).close();
156
- held = true;
157
- }
158
- catch (e) {
159
- if (e.code !== "EEXIST")
160
- break;
161
- const age = await stat(lock).then((st) => Date.now() - st.mtimeMs, () => 0);
162
- if (age > CREDENTIAL_CACHE_LOCK_STALE_MS)
163
- await rm(lock, { force: true });
164
- else if (Date.now() >= deadline)
165
- break;
166
- else
167
- await new Promise((r) => setTimeout(r, 5 + Math.random() * 20));
168
- }
169
- }
170
- try {
171
- return await fn();
172
- }
173
- finally {
174
- if (held)
175
- await rm(lock, { force: true });
176
- }
177
- }
178
- /**
179
- * A JSON file of credentials keyed by `key` (gateway + wallet), readable by
180
- * its owner only. Each entry holds a secret that expires within the hour.
181
- *
182
- * SHARED BY CONCURRENT COMMANDS. Every change is a read-modify-write of the
183
- * whole file, so two `cef eval` processes writing at once would each drop the
184
- * other's entry — and a dropped entry means another mint, against a gateway
185
- * that caps live credentials per wallet. Each change therefore re-reads and
186
- * merges under an exclusive `<file>.lock`, and replaces the file by renaming a
187
- * fully written temp file, so a reader never sees half a file.
188
- */
189
- export function fileCredentialCache(file, key) {
190
- const readAll = async () => {
191
- try {
192
- const raw = JSON.parse(await readFile(file, "utf8"));
193
- return raw && typeof raw === "object" && !Array.isArray(raw) ? raw : {};
194
- }
195
- catch {
196
- return {};
197
- }
198
- };
199
- const update = async (change) => {
200
- await mkdir(path.dirname(file), { recursive: true, mode: 0o700 });
201
- await withFileLock(file, async () => {
202
- const all = await readAll();
203
- if (!change(all))
204
- return;
205
- const tmp = `${file}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;
206
- await writeFile(tmp, JSON.stringify(all, null, 2) + "\n", { mode: 0o600 });
207
- await chmod(tmp, 0o600);
208
- await rename(tmp, file);
209
- });
210
- };
211
- return {
212
- async read() {
213
- const c = (await readAll())[key];
214
- return c && typeof c.accessKeyId === "string" && typeof c.secretAccessKey === "string" ? c : undefined;
215
- },
216
- async write(c) {
217
- await update((all) => {
218
- const t = Date.now();
219
- // Drop expired entries while here, so the file does not collect dead secrets.
220
- for (const [k, v] of Object.entries(all))
221
- if (typeof v.expiresAt === "number" && v.expiresAt <= t)
222
- delete all[k];
223
- all[key] = c;
224
- return true;
225
- });
226
- },
227
- async clear(accessKeyId) {
228
- await update((all) => {
229
- if (all[key]?.accessKeyId !== accessKeyId)
230
- return false;
231
- delete all[key];
232
- return true;
233
- });
234
- },
235
- };
236
- }
237
- /** Mint a short-lived S3 credential for the wallet, as ROC does in the browser. */
238
- export async function mintGatewayCredentials(opts) {
239
- const fetchImpl = opts.fetchImpl ?? fetch;
240
- const endpoint = (opts.endpoint ?? gatewayBaseUrl(opts.env)).replace(/\/+$/, "");
241
- const res = await fetchImpl(`${endpoint}/auth/info`);
242
- if (!res.ok)
243
- throw new Error(`[cef eval] ${endpoint}/auth/info answered ${res.status}`);
244
- const info = (await res.json());
245
- if (!info.gateway_public_key)
246
- throw new Error(`[cef eval] ${endpoint}/auth/info named no gateway_public_key`);
247
- const gatewayKey = info.gateway_public_key.replace(/^0x/i, "");
248
- const subject = ss58Address(Uint8Array.from(gatewayKey.match(/../g).map((h) => Number.parseInt(h, 16))));
249
- const { AuthToken } = await ddcSdk();
250
- const token = AuthToken.fullAccess({ subject, canDelegate: true });
251
- await token.sign(opts.signer);
252
- const mintedAt = Date.now();
253
- let cred;
254
- try {
255
- cred = await registerCredential({
256
- gatewayUrl: endpoint,
257
- signer: opts.signer,
258
- delegationToken: token.toString(),
259
- label: "cef-eval",
260
- expiresInSeconds: CREDENTIAL_TTL_SECONDS,
261
- fetchFn: fetchImpl,
262
- });
263
- }
264
- catch (e) {
265
- if (e instanceof CredentialLimitError) {
266
- throw new Error(`[cef eval] the wallet ${opts.signer.address} already holds as many live S3 credentials as the gateway allows `
267
- + `(${endpoint}). \`cef eval\` reuses its own for an hour (~/.cef/eval-credentials.json), but ROC and other `
268
- + "tools mint theirs. Wait for older ones to expire, revoke unused ones, or pass explicit --access-key/--secret.", { cause: e });
269
- }
270
- throw e;
271
- }
272
- const expiresAt = cred.expiresAt ? Date.parse(cred.expiresAt) : NaN;
273
- return {
274
- endpoint,
275
- bucket: deriveAsBucketName(opts.asPubKey),
276
- accessKeyId: cred.accessKeyId,
277
- secretAccessKey: cred.secretAccessKey,
278
- ...(cred.region || info.region ? { region: cred.region || info.region } : {}),
279
- expiresAt: Number.isFinite(expiresAt) ? expiresAt : mintedAt + CREDENTIAL_TTL_SECONDS * 1000,
280
- };
281
- }
282
- /**
283
- * Why `cef push`'s DDC access token cannot be turned into an S3 credential,
284
- * as an error that says what to use instead.
285
- *
286
- * The gateway serves an object by minting a DDC token whose `prev` is the
287
- * delegation token the credential was registered with, scoped to the S3
288
- * bucket's own DDC bucket. For a ROC-minted registry token that chain cannot
289
- * verify, for three independent reasons:
290
- *
291
- * 1. BUCKET. The token is limited to the agent service's registry bucket
292
- * (`CEF_BUCKET`); datasets live in the gateway bucket `as-<pubkey>`, which
293
- * the gateway created as a separate DDC bucket. A chain whose hops name
294
- * different buckets is refused (the gateway's own 403 says "re-register
295
- * with a wallet-wide token").
296
- * 2. NO SUBJECT, NO DELEGATION. It is a bearer token (`canDelegate` false,
297
- * no subject); the gateway's hop must be signed by the previous hop's
298
- * subject, and the gateway's key is not it.
299
- * 3. WHO REGISTERS. `POST /auth/credentials` files the credential under the
300
- * key that signs the request; only the owner's key yields an owner
301
- * credential, and `/auth/credentials/delegated` takes only an on-chain
302
- * proxy of the owner.
303
- */
304
- export function ddcTokenCannotOpenStore(token, bucket) {
305
- let scope = "";
306
- try {
307
- const s = inspectAccessTokenScope(token);
308
- const parts = [
309
- s.bucketId !== undefined ? `limited to DDC bucket ${s.bucketId}` : "",
310
- s.subject ? "" : "names no subject",
311
- s.canDelegate ? "" : "cannot be delegated",
312
- ].filter(Boolean);
313
- if (parts.length > 0)
314
- scope = ` (this one is ${parts.join(", ")})`;
315
- }
316
- catch {
317
- // Not a readable token: the generic explanation still holds.
318
- }
319
- return new Error("[cef eval] $CEF_DDC_ACCESS_TOKEN authorizes `cef push` to the agent service's registry bucket, but it cannot "
320
- + `open dataset storage${scope}: datasets live in the S3 gateway bucket ${bucket}, a different DDC bucket, `
321
- + "and the gateway issues S3 credentials only for a key that signs the request and roots the delegation. "
322
- + "Use an S3 access key/secret issued for the owner's wallet (--access-key/--secret, or "
323
- + "$CEF_EVAL_KEY/$CEF_EVAL_SECRET), or the owner's wallet itself (--keystore/--password or --secret-phrase).");
324
- }
325
- /**
326
- * Gateway access, in this order:
327
- *
328
- * 1. explicit keys (`--access-key`/`--secret`, `$CEF_EVAL_KEY`/`$CEF_EVAL_SECRET`);
329
- * 2. a wallet (`--keystore`/`--secret-phrase` or their env vars): credentials
330
- * minted on demand, cached across commands, refreshed before they expire;
331
- * 3. `$CEF_DDC_ACCESS_TOKEN` alone: refused, saying why and what to use —
332
- * it cannot mint (see {@link ddcTokenCannotOpenStore}), so it is checked
333
- * only when nothing that can is present.
334
- */
335
- export async function resolveGatewayAccess(opts, wallet, deps = {}) {
336
- const accessKeyId = opts.accessKey ?? process.env.CEF_EVAL_KEY;
337
- const secretAccessKey = opts.secret ?? process.env.CEF_EVAL_SECRET;
338
- const endpoint = (opts.endpoint ?? process.env.CEF_EVAL_ENDPOINT ?? gatewayBaseUrl(opts.env)).replace(/\/+$/, "");
339
- const asPubKey = opts.asPubkey ?? process.env.CEF_AS_PUBKEY;
340
- const bucket = opts.bucket ?? process.env.CEF_EVAL_BUCKET ?? (asPubKey ? deriveAsBucketName(asPubKey) : undefined);
341
- // Half a pair is a mistake, not a request for the wallet path: say which half is missing.
342
- if (!!accessKeyId !== !!secretAccessKey) {
343
- const given = accessKeyId
344
- ? (opts.accessKey !== undefined ? "--access-key" : "$CEF_EVAL_KEY")
345
- : (opts.secret !== undefined ? "--secret" : "$CEF_EVAL_SECRET");
346
- const missing = accessKeyId ? "--secret (or $CEF_EVAL_SECRET)" : "--access-key (or $CEF_EVAL_KEY)";
347
- throw new Error(`[cef eval] ${given} is set but ${missing} is not — explicit gateway credentials need both`);
348
- }
349
- if (accessKeyId && secretAccessKey) {
350
- if (!bucket)
351
- throw new Error("[cef eval] explicit gateway credentials need --bucket or --as-pubkey");
352
- return {
353
- endpoint,
354
- bucket,
355
- ...(opts.region ? { region: opts.region } : {}),
356
- credentials: staticCredentials({ accessKeyId, secretAccessKey, ...(opts.region ? { region: opts.region } : {}) }),
357
- };
358
- }
359
- if (!asPubKey || !bucket)
360
- throw new Error("[cef eval] --as-pubkey (or $CEF_AS_PUBKEY) is required — it names the bucket");
361
- const signer = wallet ?? (await loadWallet(opts));
362
- if (!signer) {
363
- const ddcToken = (process.env.CEF_DDC_ACCESS_TOKEN ?? "").trim();
364
- if (ddcToken)
365
- throw ddcTokenCannotOpenStore(ddcToken, bucket);
366
- throw new Error("[cef eval] no credential for the S3 gateway — pass --keystore/--password or --secret-phrase "
367
- + "(the agent service owner's wallet), or explicit --access-key/--secret");
368
- }
369
- const mint = deps.mint ?? mintGatewayCredentials;
370
- const cacheFile = deps.cacheFile === undefined ? defaultCredentialCacheFile() : deps.cacheFile ?? undefined;
371
- const credentials = mintedCredentials({
372
- mint: async () => {
373
- const m = await mint({ env: opts.env, endpoint, asPubKey, signer });
374
- return {
375
- accessKeyId: m.accessKeyId, secretAccessKey: m.secretAccessKey,
376
- ...(m.region ? { region: m.region } : {}), ...(m.expiresAt !== undefined ? { expiresAt: m.expiresAt } : {}),
377
- };
378
- },
379
- ...(cacheFile ? { cache: fileCredentialCache(cacheFile, `${endpoint}|${signer.address}`) } : {}),
380
- });
381
- // Mint (or load) now, so a missing wallet permission fails before any work starts.
382
- const first = await credentials.get();
383
- return { endpoint, bucket, ...(first.region ? { region: first.region } : {}), credentials };
384
- }
385
50
  //# sourceMappingURL=eval-auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eval-auth.js","sourceRoot":"","sources":["../../src/lib/eval-auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eval-auth.js","sourceRoot":"","sources":["../../src/lib/eval-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAiB7B,KAAK,UAAU,MAAM;IACnB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAsB,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,uGAAuG;cACnG,gCAAgC,CACrC,CAAC;IACJ,CAAC;AACH,CAAC;AAQD,8HAA8H;AAC9H,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAmB;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjF,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;QAC1E,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5G,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAA0C,CAAC;QAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,cAAc,QAAQ,kDAAkD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,GAAG,CAC3G,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Where `cef eval` keeps evaluations: the vault the workflow runs in, in the
3
+ * workflow's scope, through vault-api's object API (`…/scopes/<scope>/objects/
4
+ * evals/…`). The vault decides who may read and write them — a read grant on
5
+ * the scope reads, a write grant manages datasets and runs experiments — which
6
+ * is the same grant running the workflow needs.
7
+ *
8
+ * One connection serves both halves of a `run`: the store, and the target that
9
+ * publishes `workflow.start` and reads the run's events.
10
+ */
11
+ import { type EvalStore, type VaultObjects } from "@cef-ai/eval";
12
+ import { VaultHttpClient } from "@cef-ai/vault-sdk/internal";
13
+ import { type EvalSigner, type WalletOptions } from "./eval-auth.js";
14
+ export interface VaultAccessOptions extends WalletOptions {
15
+ env?: string;
16
+ /** Spelled as commander spells `--vault`. */
17
+ vault?: string;
18
+ vaultApi?: string;
19
+ accessToken?: string;
20
+ }
21
+ export interface VaultAccess {
22
+ http: VaultHttpClient;
23
+ vaultId: string;
24
+ }
25
+ /**
26
+ * vault-api, signed by the wallet when there is one, else carried by the CLI
27
+ * access token (a wallet-api delegation; it needs `ddc-read`/`ddc-write`). The
28
+ * vault is `--vault`, then `$CEF_VAULT_ID`, then the signer's own.
29
+ */
30
+ export declare function openVault(o: VaultAccessOptions, wallet?: EvalSigner, fetchImpl?: typeof fetch): Promise<VaultAccess>;
31
+ /** One scope's objects, addressed by path the way `vaultObjectStore` wants them. */
32
+ export declare function scopeObjects(access: VaultAccess, scope: string): VaultObjects;
33
+ /** The workflow's evaluations, in `scope` of the vault. */
34
+ export declare function vaultEvalStore(access: VaultAccess, scope: string): EvalStore;
35
+ //# sourceMappingURL=eval-vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-vault.d.ts","sourceRoot":"","sources":["../../src/lib/eval-vault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEnF,OAAO,EAAW,eAAe,EAAU,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAc,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGjF,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,CAAC,EAAE,kBAAkB,EACrB,MAAM,CAAC,EAAE,UAAU,EACnB,SAAS,CAAC,EAAE,OAAO,KAAK,GACvB,OAAO,CAAC,WAAW,CAAC,CAqBtB;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAO7E;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAE5E"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Where `cef eval` keeps evaluations: the vault the workflow runs in, in the
3
+ * workflow's scope, through vault-api's object API (`…/scopes/<scope>/objects/
4
+ * evals/…`). The vault decides who may read and write them — a read grant on
5
+ * the scope reads, a write grant manages datasets and runs experiments — which
6
+ * is the same grant running the workflow needs.
7
+ *
8
+ * One connection serves both halves of a `run`: the store, and the target that
9
+ * publishes `workflow.start` and reads the run's events.
10
+ */
11
+ import { vaultObjectStore } from "@cef-ai/eval";
12
+ import { DelegationAuthProvider, WalletAuthProvider } from "@cef-ai/vault-sdk";
13
+ import { Objects, VaultHttpClient, Vaults } from "@cef-ai/vault-sdk/internal";
14
+ import { loadWallet } from "./eval-auth.js";
15
+ import { envConfig } from "./env.js";
16
+ /**
17
+ * vault-api, signed by the wallet when there is one, else carried by the CLI
18
+ * access token (a wallet-api delegation; it needs `ddc-read`/`ddc-write`). The
19
+ * vault is `--vault`, then `$CEF_VAULT_ID`, then the signer's own.
20
+ */
21
+ export async function openVault(o, wallet, fetchImpl) {
22
+ const signer = wallet ?? (await loadWallet(o));
23
+ const accessToken = o.accessToken ?? process.env.CEF_ACCESS_TOKEN;
24
+ const auth = signer
25
+ ? new WalletAuthProvider(signer)
26
+ : accessToken
27
+ ? new DelegationAuthProvider(accessToken)
28
+ : undefined;
29
+ if (!auth) {
30
+ throw new Error("[cef eval] evaluations live in the vault: pass a wallet (--keystore/--password or --secret-phrase) "
31
+ + "or a CLI access token (--access-token or $CEF_ACCESS_TOKEN)");
32
+ }
33
+ const http = new VaultHttpClient({
34
+ url: o.vaultApi ?? envConfig(o.env).vault,
35
+ auth,
36
+ ...(fetchImpl ? { fetch: fetchImpl } : {}),
37
+ });
38
+ const vaultId = o.vault ?? process.env.CEF_VAULT_ID ?? (await new Vaults(http).current()).vaultId;
39
+ return { http, vaultId };
40
+ }
41
+ /** One scope's objects, addressed by path the way `vaultObjectStore` wants them. */
42
+ export function scopeObjects(access, scope) {
43
+ const objects = new Objects(access.http);
44
+ return {
45
+ upload: (path, data, opts) => objects.upload(access.vaultId, scope, path, data, opts),
46
+ get: (path) => objects.get(access.vaultId, scope, path),
47
+ list: (opts) => objects.list(access.vaultId, scope, opts),
48
+ };
49
+ }
50
+ /** The workflow's evaluations, in `scope` of the vault. */
51
+ export function vaultEvalStore(access, scope) {
52
+ return vaultObjectStore(scopeObjects(access, scope));
53
+ }
54
+ //# sourceMappingURL=eval-vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-vault.js","sourceRoot":"","sources":["../../src/lib/eval-vault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,gBAAgB,EAAqC,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAe,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAuC,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAerC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,CAAqB,EACrB,MAAmB,EACnB,SAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM;QACjB,CAAC,CAAC,IAAI,kBAAkB,CAAC,MAAgB,CAAC;QAC1C,CAAC,CAAC,WAAW;YACX,CAAC,CAAC,IAAI,sBAAsB,CAAC,WAAW,CAAC;YACzC,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,qGAAqG;cACjG,6DAA6D,CAClE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;QAC/B,GAAG,EAAE,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK;QACzC,IAAI;QACJ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3C,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC;IAClG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,KAAa;IAC7D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO;QACL,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACrF,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;QACvD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;KAC1D,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,KAAa;IAC/D,OAAO,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC"}
@@ -6,6 +6,8 @@ export interface LocalWorkflow {
6
6
  graph: unknown;
7
7
  /** Where it was read from, for messages. */
8
8
  from: string;
9
+ /** The first non-blank `requiredScopes` entry: the vault scope it runs in. */
10
+ scope?: string;
9
11
  }
10
12
  export interface LocalWorkflowOptions {
11
13
  cwd: string;
@@ -21,4 +23,13 @@ export declare function localWorkflows(opts: LocalWorkflowOptions): Promise<Loca
21
23
  export declare function resolveWorkflowId(explicit: string | undefined, opts: LocalWorkflowOptions): Promise<string>;
22
24
  /** The local graph of `workflowId` at `version`, when the project has that exact version. */
23
25
  export declare function localGraph(workflowId: string, version: string, opts: LocalWorkflowOptions): Promise<LocalWorkflow | undefined>;
26
+ /** The default vault scope a workflow runs in. */
27
+ export declare const DEFAULT_WORKFLOW_SCOPE = "default";
28
+ /**
29
+ * The vault scope `workflowId` declares, as ROC reads it: the first
30
+ * `requiredScopes` entry the project declares for it (config first, then build
31
+ * output). Undefined when this project declares none for it — the caller
32
+ * decides what that means, and says so. Its evaluations live in that scope.
33
+ */
34
+ export declare function localWorkflowScope(workflowId: string, opts: LocalWorkflowOptions): Promise<string | undefined>;
24
35
  //# sourceMappingURL=eval-workflow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eval-workflow.d.ts","sourceRoot":"","sources":["../../src/lib/eval-workflow.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1F,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,KAAK,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CACtF;AAiDD,+EAA+E;AAC/E,wBAAsB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAEzF;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAWjH;AAED,6FAA6F;AAC7F,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEpI"}
1
+ {"version":3,"file":"eval-workflow.d.ts","sourceRoot":"","sources":["../../src/lib/eval-workflow.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1F,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,KAAK,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CACtF;AA2DD,+EAA+E;AAC/E,wBAAsB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAEzF;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAWjH;AAED,6FAA6F;AAC7F,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEpI;AAED,kDAAkD;AAClD,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEpH"}
@@ -19,7 +19,14 @@ function fromAgent(a, from) {
19
19
  const id = typeof a.alias === "string" && a.alias ? a.alias : typeof a.id === "string" ? a.id : undefined;
20
20
  if (!graph || !id)
21
21
  return undefined;
22
- return { id, graph, from, ...(typeof a.version === "string" ? { version: a.version } : {}) };
22
+ const scope = Array.isArray(a.requiredScopes)
23
+ ? a.requiredScopes.find((s) => typeof s === "string" && s.trim() !== "")?.trim()
24
+ : undefined;
25
+ return {
26
+ id, graph, from,
27
+ ...(typeof a.version === "string" ? { version: a.version } : {}),
28
+ ...(scope ? { scope } : {}),
29
+ };
23
30
  }
24
31
  /** The workflows `cef.config.ts` declares; [] when there is none or it cannot be loaded. */
25
32
  async function fromConfig(opts) {
@@ -88,4 +95,15 @@ export async function resolveWorkflowId(explicit, opts) {
88
95
  export async function localGraph(workflowId, version, opts) {
89
96
  return (await localWorkflows(opts)).find((w) => w.id === workflowId && w.version === version);
90
97
  }
98
+ /** The default vault scope a workflow runs in. */
99
+ export const DEFAULT_WORKFLOW_SCOPE = "default";
100
+ /**
101
+ * The vault scope `workflowId` declares, as ROC reads it: the first
102
+ * `requiredScopes` entry the project declares for it (config first, then build
103
+ * output). Undefined when this project declares none for it — the caller
104
+ * decides what that means, and says so. Its evaluations live in that scope.
105
+ */
106
+ export async function localWorkflowScope(workflowId, opts) {
107
+ return (await localWorkflows(opts)).find((w) => w.id === workflowId && w.scope)?.scope;
108
+ }
91
109
  //# sourceMappingURL=eval-workflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eval-workflow.js","sourceRoot":"","sources":["../../src/lib/eval-workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eval-workflow.js","sourceRoot":"","sources":["../../src/lib/eval-workflow.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cef-ai/cli",
3
- "version": "2.9.0",
3
+ "version": "3.0.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -15,18 +15,16 @@
15
15
  "access": "public"
16
16
  },
17
17
  "dependencies": {
18
- "@aws-sdk/client-s3": "^3.700.0",
19
18
  "@noble/hashes": "^2.2.0",
20
19
  "commander": "^12.0.0",
21
20
  "esbuild": "^0.21.0",
22
21
  "json-schema-to-typescript": "^14.0.0",
23
22
  "typescript": "^5.4.0",
24
- "@cef-ai/account": "2.0.0",
25
- "@cef-ai/eval": "0.1.0",
26
- "@cef-ai/widget-runtime": "2.4.3",
23
+ "@cef-ai/agent-sdk": "5.11.0",
24
+ "@cef-ai/eval": "0.2.0",
27
25
  "@cef-ai/transport": "1.1.0",
28
- "@cef-ai/vault-sdk": "5.7.0",
29
- "@cef-ai/agent-sdk": "5.9.0"
26
+ "@cef-ai/vault-sdk": "5.8.0",
27
+ "@cef-ai/widget-runtime": "2.4.4"
30
28
  },
31
29
  "optionalDependencies": {
32
30
  "@cere-ddc-sdk/ddc-client": "^2.16.1"
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=eval-auth.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eval-auth.test.d.ts","sourceRoot":"","sources":["../../src/lib/eval-auth.test.ts"],"names":[],"mappings":""}