@cef-ai/cli 1.12.1 → 2.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.
- package/README.md +1 -2
- package/dist/build/load-config.d.ts +7 -7
- package/dist/cli-program.d.ts.map +1 -1
- package/dist/cli-program.js +5 -49
- package/dist/cli-program.js.map +1 -1
- package/dist/commands/publish.d.ts +14 -20
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +45 -42
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/push.js +2 -2
- package/dist/lib/ddc.d.ts +2 -2
- package/dist/lib/jcs.d.ts +2 -3
- package/dist/lib/jcs.d.ts.map +1 -1
- package/dist/lib/jcs.js +2 -3
- package/dist/lib/jcs.js.map +1 -1
- package/dist/lib.d.ts +0 -4
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +0 -2
- package/dist/lib.js.map +1 -1
- package/package.json +3 -4
- package/templates/hello-world/README.md +14 -4
- package/dist/commands/keypair.d.ts +0 -21
- package/dist/commands/keypair.d.ts.map +0 -1
- package/dist/commands/keypair.js +0 -91
- package/dist/commands/keypair.js.map +0 -1
- package/dist/lib/credentials.d.ts +0 -43
- package/dist/lib/credentials.d.ts.map +0 -1
- package/dist/lib/credentials.js +0 -241
- package/dist/lib/credentials.js.map +0 -1
- package/dist/lib/signing.d.ts +0 -13
- package/dist/lib/signing.d.ts.map +0 -1
- package/dist/lib/signing.js +0 -34
- package/dist/lib/signing.js.map +0 -1
package/README.md
CHANGED
|
@@ -23,9 +23,8 @@ invoke it via `pnpm exec cef <subcommand>`.
|
|
|
23
23
|
| `cef build` | shipped | Lint the agent entry, bundle with esbuild (the bundle imports the SDK runtime shims and installs `globalThis.__handlers`), emit `dist/<agentId>/{bundle.js,manifest.json}`. |
|
|
24
24
|
| `cef typegen` | shipped | Generate `.cef/generated.d.ts` (declaration-merged `KnownEventTypes`) and refresh `cef.lock.json`. |
|
|
25
25
|
| `cef inspect <agentDir>` | shipped | Read a built `manifest.json`, run the bundle in `node:vm`, and report the handler names exposed on `__handlers` plus any routing targets the manifest references but the bundle doesn't expose. |
|
|
26
|
-
| `cef publish` | shipped |
|
|
26
|
+
| `cef publish` | shipped | POST a built agent's card to the marketplace API (`--as-pubkey`, `--access-token`/`$CEF_ACCESS_TOKEN` — the same CLI access token `cef deploy` uses). |
|
|
27
27
|
| `cef push` | shipped | Upload a built agent's `bundle.js` (+ widget dirs) to DDC and stamp the manifest's bundle ref. |
|
|
28
|
-
| `cef keypair generate` | shipped | Materialise a new AS Ed25519 keypair (stdout, `--out` file, or `--profile`). |
|
|
29
28
|
| `cef test` | stub | Placeholder — use `vitest` directly with `@cef-ai/testing` until the integrated runner lands. |
|
|
30
29
|
| `cef dev` | stub | Placeholder — pending the packaged platform image. |
|
|
31
30
|
|
|
@@ -97,13 +97,13 @@ export interface AgentConfigLike {
|
|
|
97
97
|
source?: string;
|
|
98
98
|
card?: AgentCard;
|
|
99
99
|
/**
|
|
100
|
-
* Optional pre-existing topology AS pubkey (
|
|
101
|
-
* set, the build step
|
|
102
|
-
* and `cef publish` uses
|
|
103
|
-
* point at a TSS-DKG'd AS
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
100
|
+
* Optional pre-existing topology AS pubkey (either hex form — `cef
|
|
101
|
+
* publish` normalizes to `0x`-prefixed). When set, the build step
|
|
102
|
+
* stamps it into `manifest.agentServicePubkey` and `cef publish` uses
|
|
103
|
+
* it as the agentId prefix — letting the dev point at a TSS-DKG'd AS
|
|
104
|
+
* that has no holdable private key. When omitted, `cef publish`
|
|
105
|
+
* requires `--as-pubkey` instead and throws if neither is set —
|
|
106
|
+
* there is no other identity to fall back to.
|
|
107
107
|
*/
|
|
108
108
|
agentServicePubkey?: string;
|
|
109
109
|
requiredScopes?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-program.d.ts","sourceRoot":"","sources":["../src/cli-program.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-program.d.ts","sourceRoot":"","sources":["../src/cli-program.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAA+B,CAAC;AACpE,eAAO,MAAM,gBAAgB,QAAgC,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,CAAC;CACnC;AAQD,wBAAgB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAigBpE"}
|
package/dist/cli-program.js
CHANGED
|
@@ -14,7 +14,6 @@ import { cefDeploy } from "./commands/deploy.js";
|
|
|
14
14
|
import { cefDev } from "./commands/dev.js";
|
|
15
15
|
import { cefInit } from "./commands/init.js";
|
|
16
16
|
import { cefInspect } from "./commands/inspect.js";
|
|
17
|
-
import { cefKeypairGenerate } from "./commands/keypair.js";
|
|
18
17
|
import { cefPublish } from "./commands/publish.js";
|
|
19
18
|
import { cefPush } from "./commands/push.js";
|
|
20
19
|
import { cefTypegen } from "./commands/typegen.js";
|
|
@@ -156,12 +155,9 @@ export function buildProgram(opts = {}) {
|
|
|
156
155
|
.option("--env <env>", "Environment: dev | stage | prod (default dev; overrides $CEF_ENV)")
|
|
157
156
|
.option("--marketplace <url>", "Marketplace base URL (overrides --env / $CEF_MARKETPLACE_URL)")
|
|
158
157
|
.option("--agent <id>", "Which dist/<id>/ to publish (defaults to the only built agent)")
|
|
159
|
-
.option("--privkey <hex>", "AS private key (hex, 64 chars). Pair with --pubkey.")
|
|
160
|
-
.option("--pubkey <hex>", "AS public key (hex, 64 chars). Pair with --privkey.")
|
|
161
|
-
.option("--keystore <path>", "Path to a JSON keystore file `{ pubkey, privkey }`")
|
|
162
|
-
.option("--profile <name>", "Profile section in ~/.config/cef/credentials (default: 'default')")
|
|
163
158
|
.option("--out <dir>", "Output directory the build wrote to (defaults to dist)", "dist")
|
|
164
|
-
.option("--as-pubkey <hex>", "On-platform AS pubkey for manifest.agentServicePubkey + agentId prefix (
|
|
159
|
+
.option("--as-pubkey <hex>", "On-platform AS pubkey for manifest.agentServicePubkey + agentId prefix (either hex form). Overrides cef.config.ts.")
|
|
160
|
+
.option("--access-token <token>", "CLI access token proving you're authorized to publish for --as-pubkey, minted in ROC's Access tab or Quickstart guide — the same token cef deploy uses (overrides $CEF_ACCESS_TOKEN)")
|
|
165
161
|
.action(async (subOpts) => {
|
|
166
162
|
try {
|
|
167
163
|
const marketplaceUrl = subOpts.marketplace ??
|
|
@@ -170,14 +166,13 @@ export function buildProgram(opts = {}) {
|
|
|
170
166
|
const publishOpts = {
|
|
171
167
|
marketplaceUrl,
|
|
172
168
|
...(subOpts.agent !== undefined ? { agentId: subOpts.agent } : {}),
|
|
173
|
-
...(subOpts.privkey !== undefined ? { privkey: subOpts.privkey } : {}),
|
|
174
|
-
...(subOpts.pubkey !== undefined ? { pubkey: subOpts.pubkey } : {}),
|
|
175
|
-
...(subOpts.keystore !== undefined ? { keystore: subOpts.keystore } : {}),
|
|
176
|
-
...(subOpts.profile !== undefined ? { profile: subOpts.profile } : {}),
|
|
177
169
|
...(subOpts.out !== undefined ? { distDir: subOpts.out } : {}),
|
|
178
170
|
...(subOpts.asPubkey !== undefined
|
|
179
171
|
? { agentServicePubkey: subOpts.asPubkey }
|
|
180
172
|
: {}),
|
|
173
|
+
...(subOpts.accessToken !== undefined
|
|
174
|
+
? { accessToken: subOpts.accessToken }
|
|
175
|
+
: {}),
|
|
181
176
|
...(opts.fetchImpl !== undefined ? { fetchImpl: opts.fetchImpl } : {}),
|
|
182
177
|
};
|
|
183
178
|
const result = await cefPublish(publishOpts);
|
|
@@ -187,10 +182,6 @@ export function buildProgram(opts = {}) {
|
|
|
187
182
|
console.log(` pubkey: ${result.pubkey}`);
|
|
188
183
|
}
|
|
189
184
|
catch (e) {
|
|
190
|
-
// CredentialsError carries either a single-line typo message or
|
|
191
|
-
// the canonical multi-line "no AS credentials configured" guidance
|
|
192
|
-
// block. Both ship through `onError` unchanged — the default impl
|
|
193
|
-
// writes to stderr, which is what we want.
|
|
194
185
|
onError(e);
|
|
195
186
|
}
|
|
196
187
|
});
|
|
@@ -325,41 +316,6 @@ export function buildProgram(opts = {}) {
|
|
|
325
316
|
onError(e);
|
|
326
317
|
}
|
|
327
318
|
});
|
|
328
|
-
const keypair = program
|
|
329
|
-
.command("keypair")
|
|
330
|
-
.description("Manage AS Ed25519 keypairs (Agent Service identity)");
|
|
331
|
-
keypair
|
|
332
|
-
.command("generate")
|
|
333
|
-
.description("Generate a new AS keypair (stdout, --out file, or --profile)")
|
|
334
|
-
.option("--out <path>", "Write the JSON keypair to <path> (mode 0600); refuses existing unless --force")
|
|
335
|
-
.option("--profile <name>", "Write/merge into ~/.config/cef/credentials under [<name>] (mode 0600)")
|
|
336
|
-
.option("--force", "Overwrite an existing --out file or --profile section")
|
|
337
|
-
.action(async (subOpts) => {
|
|
338
|
-
try {
|
|
339
|
-
const result = await cefKeypairGenerate({
|
|
340
|
-
...(subOpts.out !== undefined ? { out: subOpts.out } : {}),
|
|
341
|
-
...(subOpts.profile !== undefined ? { profile: subOpts.profile } : {}),
|
|
342
|
-
...(subOpts.force !== undefined ? { force: subOpts.force } : {}),
|
|
343
|
-
});
|
|
344
|
-
if (result.path === undefined && result.profile === undefined) {
|
|
345
|
-
// Default sink: print the JSON to stdout.
|
|
346
|
-
process.stdout.write(JSON.stringify({ pubkey: result.pubkey, privkey: result.privkey }) +
|
|
347
|
-
"\n");
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
const profileSuffix = result.profile
|
|
351
|
-
? ` [profile: ${result.profile}]`
|
|
352
|
-
: "";
|
|
353
|
-
console.log(`✓ AS keypair written to ${result.path}${profileSuffix}`);
|
|
354
|
-
console.log(` Pubkey: ${result.pubkey}`);
|
|
355
|
-
console.log(" This keypair is your Agent Service identity. Keep the private key safe.");
|
|
356
|
-
console.log(" To share with your team, hand them the file or sync it through your team's");
|
|
357
|
-
console.log(" secrets manager — do NOT generate a new one for each developer.");
|
|
358
|
-
}
|
|
359
|
-
catch (e) {
|
|
360
|
-
onError(e);
|
|
361
|
-
}
|
|
362
|
-
});
|
|
363
319
|
program
|
|
364
320
|
.command("dev")
|
|
365
321
|
.argument("[widgetId]", "Which widget to serve (defaults to the first declared widget)")
|
package/dist/cli-program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-program.js","sourceRoot":"","sources":["../src/cli-program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-program.js","sourceRoot":"","sources":["../src/cli-program.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +1,42 @@
|
|
|
1
|
-
import { type AsCredentials, type ResolveCredentialsOptions } from "../lib/credentials.js";
|
|
2
1
|
export interface CefPublishOptions {
|
|
3
2
|
/** Resolved marketplace base URL — no trailing slash assumed. */
|
|
4
3
|
marketplaceUrl: string;
|
|
5
4
|
/** Which `dist/<id>/` to publish; auto-detected when undefined. */
|
|
6
5
|
agentId?: string;
|
|
7
|
-
/** Hex private seed (pairs with `pubkey`); highest-priority credential source. */
|
|
8
|
-
privkey?: string;
|
|
9
|
-
/** Hex public key paired with `privkey`. */
|
|
10
|
-
pubkey?: string;
|
|
11
|
-
/** Path to a JSON keystore file `{ pubkey, privkey }`. */
|
|
12
|
-
keystore?: string;
|
|
13
|
-
/** Profile name within the shared `~/.config/cef/credentials` file. */
|
|
14
|
-
profile?: string;
|
|
15
6
|
/** Defaults to `<cwd>/dist`. */
|
|
16
7
|
distDir?: string;
|
|
17
8
|
/** Defaults to `process.cwd()`. */
|
|
18
9
|
cwd?: string;
|
|
19
10
|
/**
|
|
20
11
|
* Override the on-platform AS pubkey stamped into `manifest.agentId`
|
|
21
|
-
* + `manifest.agentServicePubkey`.
|
|
12
|
+
* + `manifest.agentServicePubkey`. Either form — a bare hex key is
|
|
13
|
+
* normalized to the `0x`-prefixed form the platform stores. Highest
|
|
22
14
|
* precedence — overrides whatever `cef build` left in the manifest.
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* prefers `manifest.agentServicePubkey` from `cef.config.ts`, then
|
|
26
|
-
* falls back to the publisher's signing pubkey.
|
|
15
|
+
* When omitted, falls back to `manifest.agentServicePubkey` from
|
|
16
|
+
* `cef.config.ts`.
|
|
27
17
|
*/
|
|
28
18
|
agentServicePubkey?: string;
|
|
19
|
+
/**
|
|
20
|
+
* CLI access token (a wallet-api delegation minted in ROC's Access tab or
|
|
21
|
+
* Quickstart guide — the same one `cef deploy` uses), sent as
|
|
22
|
+
* `Authorization: Bearer <token>`. The marketplace verifies its delegator
|
|
23
|
+
* is authorized to publish for `agentServicePubkey` (its on-chain owner,
|
|
24
|
+
* or a member of that AS's roster) — this IS the publish credential;
|
|
25
|
+
* there is no other. Falls back to $CEF_ACCESS_TOKEN.
|
|
26
|
+
*/
|
|
27
|
+
accessToken?: string;
|
|
29
28
|
/**
|
|
30
29
|
* `fetch` override — defaults to `globalThis.fetch`. Tests pass a stub so
|
|
31
30
|
* the integration spec can assert on the wire shape without touching the
|
|
32
31
|
* network.
|
|
33
32
|
*/
|
|
34
33
|
fetchImpl?: typeof fetch;
|
|
35
|
-
/**
|
|
36
|
-
* Override the credential resolver. Tests inject a fixed keypair this way
|
|
37
|
-
* so they don't have to set up flags/env/files.
|
|
38
|
-
*/
|
|
39
|
-
resolveCredentialsImpl?: (opts: ResolveCredentialsOptions) => Promise<AsCredentials>;
|
|
40
34
|
}
|
|
41
35
|
export interface CefPublishResult {
|
|
42
36
|
/** Whatever `agentId` the marketplace returned (plain alias today). */
|
|
43
37
|
agentId: string;
|
|
44
38
|
version: string;
|
|
45
|
-
/**
|
|
39
|
+
/** The on-platform AS pubkey this card was published under (hex). */
|
|
46
40
|
pubkey: string;
|
|
47
41
|
}
|
|
48
42
|
export declare function cefPublish(opts: CefPublishOptions): Promise<CefPublishResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AA2CA,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;CAChB;AAgCD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CA6I3B"}
|
package/dist/commands/publish.js
CHANGED
|
@@ -9,10 +9,12 @@
|
|
|
9
9
|
*
|
|
10
10
|
* POST <marketplaceUrl>/api/v1/marketplace/agents
|
|
11
11
|
* Headers:
|
|
12
|
-
* Content-Type:
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* Content-Type: application/json
|
|
13
|
+
* Authorization: Bearer <CLI access token> (a wallet-api delegation,
|
|
14
|
+
* same one cef deploy uses — proves the caller is
|
|
15
|
+
* authorized to publish for agentServicePubkey; see
|
|
16
|
+
* --access-token below)
|
|
17
|
+
* Body:
|
|
16
18
|
* {
|
|
17
19
|
* agentId: <composite "<asPubKey>:<alias>">,
|
|
18
20
|
* version: <semver>,
|
|
@@ -25,19 +27,19 @@
|
|
|
25
27
|
*
|
|
26
28
|
* Response 201 JSON: { agentId, version } (nothing manifest-derived).
|
|
27
29
|
*
|
|
30
|
+
* The CLI access token IS the authorization — its delegator must be the AS
|
|
31
|
+
* bucket's on-chain owner or a publish-capable member of its members.json.
|
|
32
|
+
* There is no separate signing keypair; `cef keypair` doesn't exist.
|
|
33
|
+
*
|
|
28
34
|
* `cef build` emits the manifest with `agentId` / `agentServicePubkey` left
|
|
29
35
|
* as empty strings; this command resolves them (composite `<asPubKey>:<alias>`
|
|
30
|
-
* for `agentId
|
|
31
|
-
* `manifest.card` for the body before signing the envelope. Vault enforces
|
|
36
|
+
* for `agentId`) and extracts `manifest.card` for the body. Vault enforces
|
|
32
37
|
* the `<asPubKey>:` prefix on connect, so the canonical form is composite —
|
|
33
38
|
* the plain alias is recorded only in the manifest (in the DDC registry).
|
|
34
39
|
*/
|
|
35
40
|
import crypto from "node:crypto";
|
|
36
41
|
import fs from "node:fs/promises";
|
|
37
42
|
import path from "node:path";
|
|
38
|
-
import { resolveCredentials, } from "../lib/credentials.js";
|
|
39
|
-
import { canonicalize } from "../lib/jcs.js";
|
|
40
|
-
import { signBody } from "../lib/signing.js";
|
|
41
43
|
const DEFAULT_DIST = "dist";
|
|
42
44
|
export async function cefPublish(opts) {
|
|
43
45
|
const cwd = opts.cwd ? path.resolve(opts.cwd) : process.cwd();
|
|
@@ -48,6 +50,13 @@ export async function cefPublish(opts) {
|
|
|
48
50
|
if (!fetchImpl) {
|
|
49
51
|
throw new Error("[cef publish] no fetch implementation available (pass opts.fetchImpl or run on Node ≥18)");
|
|
50
52
|
}
|
|
53
|
+
const rawAccessToken = opts.accessToken ?? process.env.CEF_ACCESS_TOKEN;
|
|
54
|
+
const accessToken = rawAccessToken && rawAccessToken.trim().length > 0 ? rawAccessToken : undefined;
|
|
55
|
+
if (!accessToken) {
|
|
56
|
+
throw new Error("[cef publish] no CLI access token.\n\n" +
|
|
57
|
+
"Pass --access-token <token> or set $CEF_ACCESS_TOKEN.\n" +
|
|
58
|
+
"Generate one in ROC → Quickstart step 6 (or the Access tab).");
|
|
59
|
+
}
|
|
51
60
|
const agentId = opts.agentId ?? (await autodetectAgentId(distDir));
|
|
52
61
|
const agentDir = path.join(distDir, agentId);
|
|
53
62
|
const manifestPath = path.join(agentDir, "manifest.json");
|
|
@@ -77,43 +86,35 @@ export async function cefPublish(opts) {
|
|
|
77
86
|
// (`<asPubkey>:<alias>`) is present, take the tail so re-composing the
|
|
78
87
|
// agentId below doesn't double the pubkey.
|
|
79
88
|
const alias = (manifest.alias ?? manifest.agentId?.split(":").pop());
|
|
80
|
-
const resolver = opts.resolveCredentialsImpl ?? resolveCredentials;
|
|
81
|
-
const credResolveOpts = {
|
|
82
|
-
...(opts.privkey !== undefined ? { privkeyFlag: opts.privkey } : {}),
|
|
83
|
-
...(opts.pubkey !== undefined ? { pubkeyFlag: opts.pubkey } : {}),
|
|
84
|
-
...(opts.keystore !== undefined ? { keystoreFlag: opts.keystore } : {}),
|
|
85
|
-
...(opts.profile !== undefined ? { profileFlag: opts.profile } : {}),
|
|
86
|
-
};
|
|
87
|
-
const { pubkey, privkeyBytes } = await resolver(credResolveOpts);
|
|
88
89
|
// Resolve the on-platform AS pubkey for the agentId prefix +
|
|
89
90
|
// manifest.agentServicePubkey. Precedence:
|
|
90
91
|
// 1. Explicit --as-pubkey flag (opts.agentServicePubkey).
|
|
91
92
|
// 2. manifest.agentServicePubkey already set by `cef build` (i.e.
|
|
92
93
|
// cef.config.ts carried a topology AS pubkey).
|
|
93
|
-
//
|
|
94
|
-
// keypair, fine when topology has no entry for this agent yet).
|
|
95
|
-
//
|
|
96
|
-
// The signing pubkey (X-AS-Pubkey header + envelope signature) stays
|
|
97
|
-
// independent. Marketplace verifies the signature against X-AS-Pubkey
|
|
98
|
-
// but no longer ties X-AS-Pubkey to the agentId prefix — see
|
|
99
|
-
// marketplace PR "drop agentId-prefix-equals-X-AS-Pubkey check".
|
|
100
|
-
// Vault-api's connect saga still enforces
|
|
94
|
+
// Vault-api's connect saga enforces
|
|
101
95
|
// `manifest.agentId.startsWith(manifest.agentServicePubKey + ':')`,
|
|
102
|
-
// so
|
|
103
|
-
const cleanPubkey = pubkey.startsWith("0x") ? pubkey.slice(2) : pubkey;
|
|
96
|
+
// so the same value is used for both.
|
|
104
97
|
const explicitAsPubkey = opts.agentServicePubkey ??
|
|
105
98
|
(typeof manifest.agentServicePubkey === "string" &&
|
|
106
99
|
manifest.agentServicePubkey.length > 0
|
|
107
100
|
? manifest.agentServicePubkey
|
|
108
101
|
: undefined);
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
102
|
+
if (!explicitAsPubkey) {
|
|
103
|
+
throw new Error("[cef publish] no AS pubkey to publish under — pass --as-pubkey or set agentServicePubkey in cef.config.ts");
|
|
104
|
+
}
|
|
105
|
+
// The orchestrator's agent_services row is keyed by an EXACT string match on
|
|
106
|
+
// `as_pubkey`, always "0x"-prefixed (how ROC displays and copies it) — see
|
|
107
|
+
// deploy.ts's identical normalization for why stripping it breaks lookups.
|
|
108
|
+
// publish doesn't call the orchestrator directly, but this same value is
|
|
109
|
+
// what vault-api's connect saga compares against `manifest.agentId`'s
|
|
110
|
+
// prefix, so it must match what deploy registered under the same flag.
|
|
111
|
+
const asPubkey = explicitAsPubkey.startsWith("0x")
|
|
112
|
+
? explicitAsPubkey
|
|
113
|
+
: `0x${explicitAsPubkey}`;
|
|
112
114
|
const compositeAgentId = `${asPubkey}:${alias}`;
|
|
113
115
|
// Card-only wire body. The full manifest stays in the DDC bucket registry
|
|
114
116
|
// (written by `cef push`); the marketplace only stores the card for
|
|
115
|
-
// discovery.
|
|
116
|
-
// body shape changed from `manifest` to `card`.
|
|
117
|
+
// discovery.
|
|
117
118
|
const body = {
|
|
118
119
|
agentId: compositeAgentId,
|
|
119
120
|
version: manifest.version,
|
|
@@ -122,17 +123,14 @@ export async function cefPublish(opts) {
|
|
|
122
123
|
issuedAt: new Date().toISOString(),
|
|
123
124
|
nonce: randomBase64UrlNonce(16),
|
|
124
125
|
};
|
|
125
|
-
const canonical = canonicalize(body);
|
|
126
|
-
const signature = await signBody(canonical, privkeyBytes);
|
|
127
126
|
const url = `${opts.marketplaceUrl.replace(/\/+$/, "")}/api/v1/marketplace/agents`;
|
|
128
127
|
const res = await fetchImpl(url, {
|
|
129
128
|
method: "POST",
|
|
130
129
|
headers: {
|
|
131
130
|
"content-type": "application/json",
|
|
132
|
-
|
|
133
|
-
"X-AS-Signature": signature,
|
|
131
|
+
Authorization: `Bearer ${accessToken}`,
|
|
134
132
|
},
|
|
135
|
-
body:
|
|
133
|
+
body: JSON.stringify(body),
|
|
136
134
|
});
|
|
137
135
|
if (res.status === 201) {
|
|
138
136
|
const json = (await res.json());
|
|
@@ -142,14 +140,19 @@ export async function cefPublish(opts) {
|
|
|
142
140
|
return {
|
|
143
141
|
agentId: json.agentId,
|
|
144
142
|
version: json.version,
|
|
145
|
-
pubkey,
|
|
143
|
+
pubkey: asPubkey,
|
|
146
144
|
};
|
|
147
145
|
}
|
|
148
|
-
// Friendly error path for replays. The marketplace returns
|
|
149
|
-
// `{ error: "REPLAY", ... }` on 409 (see `recordNonce`).
|
|
150
146
|
const text = await res.text();
|
|
151
|
-
|
|
152
|
-
|
|
147
|
+
let errBody;
|
|
148
|
+
try {
|
|
149
|
+
errBody = JSON.parse(text);
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
// Not JSON — fall through to the raw-text error below.
|
|
153
|
+
}
|
|
154
|
+
if (errBody?.error) {
|
|
155
|
+
throw new Error(`[cef publish] HTTP ${res.status} ${errBody.error}${errBody.message ? `: ${errBody.message}` : ""}`);
|
|
153
156
|
}
|
|
154
157
|
throw new Error(`[cef publish] marketplace returned HTTP ${res.status}: ${text}`);
|
|
155
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/push.js
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Signing identity: `cef push` uses a SEPARATE substrate (Sr25519) signer
|
|
12
12
|
* (`--secret-phrase` / `$CEF_DDC_SECRET_PHRASE`) — the DDC bucket owner —
|
|
13
|
-
* distinct from the
|
|
14
|
-
*
|
|
13
|
+
* distinct from the CLI access token (`--access-token` /
|
|
14
|
+
* `$CEF_ACCESS_TOKEN`) `cef publish` authorizes with.
|
|
15
15
|
*/
|
|
16
16
|
import fs from "node:fs/promises";
|
|
17
17
|
import path from "node:path";
|
package/dist/lib/ddc.d.ts
CHANGED
|
@@ -88,8 +88,8 @@ export interface PushAgentVersionInput {
|
|
|
88
88
|
buildManifestBytes: (refs: ManifestRefs) => Uint8Array | Promise<Uint8Array>;
|
|
89
89
|
/**
|
|
90
90
|
* Substrate secret phrase (Sr25519) — the DDC bucket owner. Distinct from
|
|
91
|
-
* the
|
|
92
|
-
*
|
|
91
|
+
* the CLI access token `cef publish` authorizes with. Exactly one of
|
|
92
|
+
* `secretPhrase` or `accessToken` must be provided.
|
|
93
93
|
*/
|
|
94
94
|
secretPhrase?: string;
|
|
95
95
|
/**
|
package/dist/lib/jcs.d.ts
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Re-exported from `@cef-ai/transport`, which wraps the same `canonicalize` npm
|
|
5
5
|
* package the marketplace API uses and is byte-compatible with the wallet-api
|
|
6
|
-
* Go `canonjson` oracle.
|
|
7
|
-
*
|
|
8
|
-
* existing `cef publish` call sites import `lib/jcs.js` unchanged.
|
|
6
|
+
* Go `canonjson` oracle. Used by `lib/cid.ts` to compute a manifest's content
|
|
7
|
+
* ID — `cef publish` no longer imports this (it stopped signing an envelope).
|
|
9
8
|
*/
|
|
10
9
|
export { canonicalize, canonicalizeBytes } from "@cef-ai/transport";
|
|
11
10
|
//# sourceMappingURL=jcs.d.ts.map
|
package/dist/lib/jcs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jcs.d.ts","sourceRoot":"","sources":["../../src/lib/jcs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"jcs.d.ts","sourceRoot":"","sources":["../../src/lib/jcs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/lib/jcs.js
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Re-exported from `@cef-ai/transport`, which wraps the same `canonicalize` npm
|
|
5
5
|
* package the marketplace API uses and is byte-compatible with the wallet-api
|
|
6
|
-
* Go `canonjson` oracle.
|
|
7
|
-
*
|
|
8
|
-
* existing `cef publish` call sites import `lib/jcs.js` unchanged.
|
|
6
|
+
* Go `canonjson` oracle. Used by `lib/cid.ts` to compute a manifest's content
|
|
7
|
+
* ID — `cef publish` no longer imports this (it stopped signing an envelope).
|
|
9
8
|
*/
|
|
10
9
|
export { canonicalize, canonicalizeBytes } from "@cef-ai/transport";
|
|
11
10
|
//# sourceMappingURL=jcs.js.map
|
package/dist/lib/jcs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jcs.js","sourceRoot":"","sources":["../../src/lib/jcs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"jcs.js","sourceRoot":"","sources":["../../src/lib/jcs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/lib.d.ts
CHANGED
|
@@ -21,8 +21,4 @@ export { cefPush } from "./commands/push.js";
|
|
|
21
21
|
export type { CefPushOptions, CefPushResult } from "./commands/push.js";
|
|
22
22
|
export { cefDeploy } from "./commands/deploy.js";
|
|
23
23
|
export type { CefDeployOptions, CefDeployResult } from "./commands/deploy.js";
|
|
24
|
-
export { cefKeypairGenerate } from "./commands/keypair.js";
|
|
25
|
-
export type { CefKeypairGenerateOptions, CefKeypairGenerateResult, } from "./commands/keypair.js";
|
|
26
|
-
export { resolveCredentials, CredentialsError, defaultCredentialsFilePath, } from "./lib/credentials.js";
|
|
27
|
-
export type { AsCredentials, CredentialSource, ResolveCredentialsOptions, } from "./lib/credentials.js";
|
|
28
24
|
//# sourceMappingURL=lib.d.ts.map
|
package/dist/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnE,YAAY,EACV,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,YAAY,EACV,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnE,YAAY,EACV,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,YAAY,EACV,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/lib.js
CHANGED
|
@@ -12,6 +12,4 @@ export { cefInspect } from "./commands/inspect.js";
|
|
|
12
12
|
export { cefPublish } from "./commands/publish.js";
|
|
13
13
|
export { cefPush } from "./commands/push.js";
|
|
14
14
|
export { cefDeploy } from "./commands/deploy.js";
|
|
15
|
-
export { cefKeypairGenerate } from "./commands/keypair.js";
|
|
16
|
-
export { resolveCredentials, CredentialsError, defaultCredentialsFilePath, } from "./lib/credentials.js";
|
|
17
15
|
//# sourceMappingURL=lib.js.map
|
package/dist/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAOnE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAMtE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAOnE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAMtE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cef-ai/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -15,15 +15,14 @@
|
|
|
15
15
|
"access": "public"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@noble/ed25519": "^2.1.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",
|
|
23
|
+
"@cef-ai/widget-runtime": "1.0.0",
|
|
24
24
|
"@cef-ai/agent-sdk": "3.0.0",
|
|
25
|
-
"@cef-ai/transport": "1.1.0"
|
|
26
|
-
"@cef-ai/widget-runtime": "1.0.0"
|
|
25
|
+
"@cef-ai/transport": "1.1.0"
|
|
27
26
|
},
|
|
28
27
|
"optionalDependencies": {
|
|
29
28
|
"@cere-ddc-sdk/ddc-client": "^2.16.1"
|
|
@@ -34,11 +34,21 @@ Each step and the external inputs it needs:
|
|
|
34
34
|
3. `pnpm run deploy` — **makes a version live so you can run and test the agent**
|
|
35
35
|
(including in a sandbox). Applies the `deployments/` folder; edit those files
|
|
36
36
|
to target audiences or run A/B splits. Needs the platform `--endpoint`
|
|
37
|
-
(defaults to dev; `$CEF_ENDPOINT` to override)
|
|
37
|
+
(defaults to dev; `$CEF_ENDPOINT` to override), your **AS pubkey**, and a
|
|
38
|
+
**CLI access token you mint in the ROC UI** (ROC → your Agent Service →
|
|
39
|
+
**Access** → generate CLI access token — a different token from the DDC
|
|
40
|
+
one step 2 uses):
|
|
41
|
+
`cef deploy --as-pubkey <hex> --access-token <token>`
|
|
42
|
+
(or set `$CEF_ACCESS_TOKEN`; see `cef deploy --help`).
|
|
38
43
|
4. `pnpm run publish` — **optional, and last.** Lists the agent's card in the
|
|
39
|
-
marketplace for discovery
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
marketplace for discovery. Needs your **AS pubkey** and the **same CLI
|
|
45
|
+
access token from step 3** — the marketplace checks its delegator owns
|
|
46
|
+
or is a publish-capable member of the AS. There's no separate signing
|
|
47
|
+
key to generate; these are the only two things this command needs:
|
|
48
|
+
`cef publish --as-pubkey <hex> --access-token <token>`
|
|
49
|
+
(or set `$CEF_ACCESS_TOKEN`; see `cef publish --help`). Skip it for
|
|
50
|
+
debug/test/sandbox; an agent runs because it's *deployed*, not because
|
|
51
|
+
it's published.
|
|
42
52
|
|
|
43
53
|
## AI-assisted development (Claude Code)
|
|
44
54
|
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export interface CefKeypairGenerateOptions {
|
|
2
|
-
/** Write the JSON keypair to this path. Mutually exclusive with `profile`. */
|
|
3
|
-
out?: string;
|
|
4
|
-
/** Write/merge into the shared credentials file under this section. */
|
|
5
|
-
profile?: string;
|
|
6
|
-
/** Allow overwriting an existing file or profile. */
|
|
7
|
-
force?: boolean;
|
|
8
|
-
/** Override the credentials file path (tests). */
|
|
9
|
-
configFilePath?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface CefKeypairGenerateResult {
|
|
12
|
-
pubkey: string;
|
|
13
|
-
/** Hex-encoded private seed. */
|
|
14
|
-
privkey: string;
|
|
15
|
-
/** File path written, when `out` or `profile` was set. */
|
|
16
|
-
path?: string;
|
|
17
|
-
/** Profile name written, when `profile` was set. */
|
|
18
|
-
profile?: string;
|
|
19
|
-
}
|
|
20
|
-
export declare function cefKeypairGenerate(opts?: CefKeypairGenerateOptions): Promise<CefKeypairGenerateResult>;
|
|
21
|
-
//# sourceMappingURL=keypair.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keypair.d.ts","sourceRoot":"","sources":["../../src/commands/keypair.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,yBAAyB;IACxC,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiCD,wBAAsB,kBAAkB,CACtC,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CA8CnC"}
|
package/dist/commands/keypair.js
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `cef keypair generate` — explicit AS Ed25519 keypair provisioning.
|
|
3
|
-
*
|
|
4
|
-
* The AS keypair represents an Agent Service identity, potentially shared
|
|
5
|
-
* across a team. This command is the *only* place a keypair is materialised;
|
|
6
|
-
* `cef publish` never auto-generates. Output sinks:
|
|
7
|
-
*
|
|
8
|
-
* - stdout (default): JSON `{ pubkey, privkey }`. Useful for `| pbcopy` or
|
|
9
|
-
* piping into a secrets manager.
|
|
10
|
-
* - `--out <path>`: writes the JSON to a file with mode 0600. Refuses
|
|
11
|
-
* existing files unless `--force`.
|
|
12
|
-
* - `--profile <name>`: writes/merges into the shared
|
|
13
|
-
* `~/.config/cef/credentials` INI file, mode 0600. Refuses to overwrite
|
|
14
|
-
* an existing profile unless `--force`. Atomic via temp + rename.
|
|
15
|
-
*
|
|
16
|
-
* The post-write banner reminds the developer this is identity material
|
|
17
|
-
* meant to be shared with their team, not generated per-developer.
|
|
18
|
-
*/
|
|
19
|
-
import fs from "node:fs/promises";
|
|
20
|
-
import path from "node:path";
|
|
21
|
-
import { defaultCredentialsFilePath, parseConfigFile, serializeConfigFile, } from "../lib/credentials.js";
|
|
22
|
-
import { generateKeypair } from "../lib/signing.js";
|
|
23
|
-
function bytesToHex(b) {
|
|
24
|
-
let s = "";
|
|
25
|
-
for (let i = 0; i < b.length; i++)
|
|
26
|
-
s += b[i].toString(16).padStart(2, "0");
|
|
27
|
-
return s;
|
|
28
|
-
}
|
|
29
|
-
async function exists(p) {
|
|
30
|
-
try {
|
|
31
|
-
await fs.stat(p);
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
catch (e) {
|
|
35
|
-
if (e.code === "ENOENT")
|
|
36
|
-
return false;
|
|
37
|
-
throw e;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
async function atomicWrite(filePath, content) {
|
|
41
|
-
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
42
|
-
// Temp in the same dir so rename stays atomic across the same fs.
|
|
43
|
-
const tmp = `${filePath}.tmp.${process.pid}.${Date.now()}`;
|
|
44
|
-
await fs.writeFile(tmp, content, { encoding: "utf8", mode: 0o600 });
|
|
45
|
-
try {
|
|
46
|
-
await fs.rename(tmp, filePath);
|
|
47
|
-
}
|
|
48
|
-
catch (e) {
|
|
49
|
-
await fs.rm(tmp, { force: true });
|
|
50
|
-
throw e;
|
|
51
|
-
}
|
|
52
|
-
// chmod after rename in case the file pre-existed with looser perms.
|
|
53
|
-
await fs.chmod(filePath, 0o600).catch(() => { });
|
|
54
|
-
}
|
|
55
|
-
export async function cefKeypairGenerate(opts = {}) {
|
|
56
|
-
if (opts.out !== undefined && opts.profile !== undefined) {
|
|
57
|
-
throw new Error("cef keypair generate: --out and --profile are mutually exclusive");
|
|
58
|
-
}
|
|
59
|
-
const { pubkey, privkeyBytes } = await generateKeypair();
|
|
60
|
-
const privkey = bytesToHex(privkeyBytes);
|
|
61
|
-
// Profile sink: merge into the shared credentials file.
|
|
62
|
-
if (opts.profile !== undefined) {
|
|
63
|
-
const filePath = opts.configFilePath ?? defaultCredentialsFilePath();
|
|
64
|
-
let parsed = {};
|
|
65
|
-
try {
|
|
66
|
-
const existing = await fs.readFile(filePath, "utf8");
|
|
67
|
-
parsed = parseConfigFile(existing);
|
|
68
|
-
}
|
|
69
|
-
catch (e) {
|
|
70
|
-
if (e.code !== "ENOENT")
|
|
71
|
-
throw e;
|
|
72
|
-
}
|
|
73
|
-
if (parsed[opts.profile] && !opts.force) {
|
|
74
|
-
throw new Error(`cef keypair generate: profile [${opts.profile}] already exists in ${filePath} (pass --force to overwrite)`);
|
|
75
|
-
}
|
|
76
|
-
parsed[opts.profile] = { pubkey, privkey };
|
|
77
|
-
await atomicWrite(filePath, serializeConfigFile(parsed));
|
|
78
|
-
return { pubkey, privkey, path: filePath, profile: opts.profile };
|
|
79
|
-
}
|
|
80
|
-
// File sink: write the JSON keystore to `out`.
|
|
81
|
-
if (opts.out !== undefined) {
|
|
82
|
-
if ((await exists(opts.out)) && !opts.force) {
|
|
83
|
-
throw new Error(`cef keypair generate: ${opts.out} already exists (pass --force to overwrite)`);
|
|
84
|
-
}
|
|
85
|
-
await atomicWrite(opts.out, JSON.stringify({ pubkey, privkey }, null, 2) + "\n");
|
|
86
|
-
return { pubkey, privkey, path: opts.out };
|
|
87
|
-
}
|
|
88
|
-
// Default sink: stdout. Caller (CLI wrapper) prints the JSON.
|
|
89
|
-
return { pubkey, privkey };
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=keypair.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keypair.js","sourceRoot":"","sources":["../../src/commands/keypair.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
export type CredentialSource = "flags" | "env" | "keystore-flag" | "keystore-env" | "config-profile";
|
|
2
|
-
export interface AsCredentials {
|
|
3
|
-
/** 64-char lowercase hex (32 bytes), matches the wire format. */
|
|
4
|
-
pubkey: string;
|
|
5
|
-
/** Raw 32-byte Ed25519 seed. */
|
|
6
|
-
privkeyBytes: Uint8Array;
|
|
7
|
-
source: CredentialSource;
|
|
8
|
-
/** Set only when `source === 'config-profile'`. */
|
|
9
|
-
profileName?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface ResolveCredentialsOptions {
|
|
12
|
-
privkeyFlag?: string;
|
|
13
|
-
pubkeyFlag?: string;
|
|
14
|
-
keystoreFlag?: string;
|
|
15
|
-
profileFlag?: string;
|
|
16
|
-
/** Defaults to `process.env`. Tests pass an isolated map. */
|
|
17
|
-
env?: NodeJS.ProcessEnv;
|
|
18
|
-
/** Defaults to `<XDG_CONFIG_HOME|~/.config>/cef/credentials`. */
|
|
19
|
-
configFilePath?: string;
|
|
20
|
-
}
|
|
21
|
-
export declare class CredentialsError extends Error {
|
|
22
|
-
constructor(message: string);
|
|
23
|
-
}
|
|
24
|
-
export declare function defaultCredentialsFilePath(): string;
|
|
25
|
-
/**
|
|
26
|
-
* Parse a minimal INI file: section headers `[name]`, `key = value` pairs,
|
|
27
|
-
* `;` and `#` line comments. No nested sections, no quoting, no escapes —
|
|
28
|
-
* the credentials file shape is trivial and that's all we need.
|
|
29
|
-
*
|
|
30
|
-
* Returns a map of `{ section: { key: value } }`. Keys/values are trimmed.
|
|
31
|
-
* Pre-section keys live under the empty-string section; the credentials
|
|
32
|
-
* loader only reads named sections so those are ignored.
|
|
33
|
-
*/
|
|
34
|
-
export declare function parseConfigFile(content: string): Record<string, Record<string, string>>;
|
|
35
|
-
/**
|
|
36
|
-
* Render a parsed INI map back to text. Sections are emitted in insertion
|
|
37
|
-
* order; the empty-string section (if any) is dropped — this writer only
|
|
38
|
-
* supports section-scoped credentials. Used by `cef keypair generate
|
|
39
|
-
* --profile` when merging into the shared credentials file.
|
|
40
|
-
*/
|
|
41
|
-
export declare function serializeConfigFile(data: Record<string, Record<string, string>>): string;
|
|
42
|
-
export declare function resolveCredentials(opts: ResolveCredentialsOptions): Promise<AsCredentials>;
|
|
43
|
-
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,KAAK,GACL,eAAe,GACf,cAAc,GACd,gBAAgB,CAAC;AAErB,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,YAAY,EAAE,UAAU,CAAC;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAgBD,wBAAgB,0BAA0B,IAAI,MAAM,CAInD;AAgED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA+BvF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC3C,MAAM,CAYR;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,aAAa,CAAC,CAqHxB"}
|
package/dist/lib/credentials.js
DELETED
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolves the AS Ed25519 keypair `cef publish` (and any future signing
|
|
3
|
-
* subcommand) needs to sign the publish envelope. The AS keypair represents
|
|
4
|
-
* the Agent Service identity — potentially shared across a team — so it is
|
|
5
|
-
* never silently auto-generated. Callers must explicitly provision it.
|
|
6
|
-
*
|
|
7
|
-
* Resolution follows AWS-CLI conventions and walks these sources in priority
|
|
8
|
-
* order, returning the first one that produces a complete keypair:
|
|
9
|
-
*
|
|
10
|
-
* 1. CLI flags (`--privkey` + `--pubkey`)
|
|
11
|
-
* 2. Env vars (`CEF_AS_PRIVATE_KEY` + `CEF_AS_PUBLIC_KEY`)
|
|
12
|
-
* 3. Keystore file via flag(`--keystore <path>`)
|
|
13
|
-
* 4. Keystore file via env (`CEF_AS_KEYSTORE`)
|
|
14
|
-
* 5. Profile in shared config (`~/.config/cef/credentials`, INI, profile
|
|
15
|
-
* selected by `--profile` / `CEF_PROFILE`, default `default`).
|
|
16
|
-
*
|
|
17
|
-
* If none produces credentials, a `CredentialsError` is thrown carrying the
|
|
18
|
-
* canonical multi-line guidance message — the CLI surfaces that verbatim on
|
|
19
|
-
* stderr before exiting non-zero.
|
|
20
|
-
*/
|
|
21
|
-
import fs from "node:fs/promises";
|
|
22
|
-
import os from "node:os";
|
|
23
|
-
import path from "node:path";
|
|
24
|
-
export class CredentialsError extends Error {
|
|
25
|
-
constructor(message) {
|
|
26
|
-
super(message);
|
|
27
|
-
this.name = "CredentialsError";
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
const NO_CREDENTIALS_MESSAGE = `Error: no AS credentials configured.
|
|
31
|
-
|
|
32
|
-
Provide credentials via one of:
|
|
33
|
-
- flags: --privkey <hex> --pubkey <hex>
|
|
34
|
-
- env: CEF_AS_PRIVATE_KEY=<hex> CEF_AS_PUBLIC_KEY=<hex>
|
|
35
|
-
- file: --keystore <path> (or CEF_AS_KEYSTORE env)
|
|
36
|
-
- file: ~/.config/cef/credentials (with [default] or another profile via --profile)
|
|
37
|
-
|
|
38
|
-
Generate a new keypair with:
|
|
39
|
-
cef keypair generate
|
|
40
|
-
|
|
41
|
-
Note: the AS keypair represents your Agent Service identity. If you're publishing for an
|
|
42
|
-
existing team, ask your team for the existing keypair — don't generate a new one.`;
|
|
43
|
-
export function defaultCredentialsFilePath() {
|
|
44
|
-
const xdg = process.env.XDG_CONFIG_HOME;
|
|
45
|
-
const base = xdg && xdg.length > 0 ? xdg : path.join(os.homedir(), ".config");
|
|
46
|
-
return path.join(base, "cef", "credentials");
|
|
47
|
-
}
|
|
48
|
-
const HEX_RE = /^[0-9a-fA-F]{64}$/;
|
|
49
|
-
function normalizePubkey(hex, ctx) {
|
|
50
|
-
if (!HEX_RE.test(hex)) {
|
|
51
|
-
throw new CredentialsError(`${ctx}: pubkey must be 64 hex chars (32 bytes), got ${hex.length} chars`);
|
|
52
|
-
}
|
|
53
|
-
return hex.toLowerCase();
|
|
54
|
-
}
|
|
55
|
-
function hexToBytes(hex, ctx) {
|
|
56
|
-
if (!HEX_RE.test(hex)) {
|
|
57
|
-
throw new CredentialsError(`${ctx}: privkey must be 64 hex chars (32 bytes Ed25519 seed), got ${hex.length} chars`);
|
|
58
|
-
}
|
|
59
|
-
const out = new Uint8Array(32);
|
|
60
|
-
for (let i = 0; i < 32; i++) {
|
|
61
|
-
out[i] = Number.parseInt(hex.slice(i * 2, i * 2 + 2), 16);
|
|
62
|
-
}
|
|
63
|
-
return out;
|
|
64
|
-
}
|
|
65
|
-
async function readKeystoreFile(filePath, ctx) {
|
|
66
|
-
let raw;
|
|
67
|
-
try {
|
|
68
|
-
raw = await fs.readFile(filePath, "utf8");
|
|
69
|
-
}
|
|
70
|
-
catch (e) {
|
|
71
|
-
const code = e.code;
|
|
72
|
-
if (code === "ENOENT")
|
|
73
|
-
return null;
|
|
74
|
-
throw e;
|
|
75
|
-
}
|
|
76
|
-
let parsed;
|
|
77
|
-
try {
|
|
78
|
-
parsed = JSON.parse(raw);
|
|
79
|
-
}
|
|
80
|
-
catch (e) {
|
|
81
|
-
throw new CredentialsError(`${ctx}: ${filePath} is not valid JSON: ${e.message}`);
|
|
82
|
-
}
|
|
83
|
-
if (!parsed ||
|
|
84
|
-
typeof parsed !== "object" ||
|
|
85
|
-
typeof parsed.pubkey !== "string" ||
|
|
86
|
-
typeof parsed.privkey !== "string") {
|
|
87
|
-
throw new CredentialsError(`${ctx}: ${filePath} is missing pubkey/privkey hex fields`);
|
|
88
|
-
}
|
|
89
|
-
return parsed;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Parse a minimal INI file: section headers `[name]`, `key = value` pairs,
|
|
93
|
-
* `;` and `#` line comments. No nested sections, no quoting, no escapes —
|
|
94
|
-
* the credentials file shape is trivial and that's all we need.
|
|
95
|
-
*
|
|
96
|
-
* Returns a map of `{ section: { key: value } }`. Keys/values are trimmed.
|
|
97
|
-
* Pre-section keys live under the empty-string section; the credentials
|
|
98
|
-
* loader only reads named sections so those are ignored.
|
|
99
|
-
*/
|
|
100
|
-
export function parseConfigFile(content) {
|
|
101
|
-
const out = {};
|
|
102
|
-
let current = "";
|
|
103
|
-
out[current] = {};
|
|
104
|
-
const lines = content.split(/\r?\n/);
|
|
105
|
-
for (let i = 0; i < lines.length; i++) {
|
|
106
|
-
const raw = lines[i] ?? "";
|
|
107
|
-
const line = raw.trim();
|
|
108
|
-
if (line.length === 0)
|
|
109
|
-
continue;
|
|
110
|
-
if (line.startsWith(";") || line.startsWith("#"))
|
|
111
|
-
continue;
|
|
112
|
-
if (line.startsWith("[") && line.endsWith("]")) {
|
|
113
|
-
current = line.slice(1, -1).trim();
|
|
114
|
-
if (!out[current])
|
|
115
|
-
out[current] = {};
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
const eq = line.indexOf("=");
|
|
119
|
-
if (eq < 0) {
|
|
120
|
-
throw new CredentialsError(`credentials file: malformed line ${i + 1}: ${raw}`);
|
|
121
|
-
}
|
|
122
|
-
const key = line.slice(0, eq).trim();
|
|
123
|
-
const value = line.slice(eq + 1).trim();
|
|
124
|
-
if (key.length === 0) {
|
|
125
|
-
throw new CredentialsError(`credentials file: empty key on line ${i + 1}`);
|
|
126
|
-
}
|
|
127
|
-
(out[current] ??= {})[key] = value;
|
|
128
|
-
}
|
|
129
|
-
return out;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Render a parsed INI map back to text. Sections are emitted in insertion
|
|
133
|
-
* order; the empty-string section (if any) is dropped — this writer only
|
|
134
|
-
* supports section-scoped credentials. Used by `cef keypair generate
|
|
135
|
-
* --profile` when merging into the shared credentials file.
|
|
136
|
-
*/
|
|
137
|
-
export function serializeConfigFile(data) {
|
|
138
|
-
const parts = [];
|
|
139
|
-
for (const section of Object.keys(data)) {
|
|
140
|
-
if (section.length === 0)
|
|
141
|
-
continue;
|
|
142
|
-
parts.push(`[${section}]`);
|
|
143
|
-
const kv = data[section] ?? {};
|
|
144
|
-
for (const key of Object.keys(kv)) {
|
|
145
|
-
parts.push(`${key} = ${kv[key]}`);
|
|
146
|
-
}
|
|
147
|
-
parts.push("");
|
|
148
|
-
}
|
|
149
|
-
return parts.join("\n");
|
|
150
|
-
}
|
|
151
|
-
export async function resolveCredentials(opts) {
|
|
152
|
-
const env = opts.env ?? process.env;
|
|
153
|
-
// (1) Flags. If either privkey or pubkey is set, both must be set.
|
|
154
|
-
if (opts.privkeyFlag !== undefined || opts.pubkeyFlag !== undefined) {
|
|
155
|
-
if (opts.privkeyFlag === undefined || opts.pubkeyFlag === undefined) {
|
|
156
|
-
throw new CredentialsError("credentials: --privkey and --pubkey must be provided together");
|
|
157
|
-
}
|
|
158
|
-
return {
|
|
159
|
-
pubkey: normalizePubkey(opts.pubkeyFlag, "--pubkey"),
|
|
160
|
-
privkeyBytes: hexToBytes(opts.privkeyFlag, "--privkey"),
|
|
161
|
-
source: "flags",
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
// (2) Env vars. Same pairing rule — if one is set, both must be.
|
|
165
|
-
const envPriv = env.CEF_AS_PRIVATE_KEY;
|
|
166
|
-
const envPub = env.CEF_AS_PUBLIC_KEY;
|
|
167
|
-
if (envPriv !== undefined || envPub !== undefined) {
|
|
168
|
-
if (envPriv === undefined || envPub === undefined) {
|
|
169
|
-
throw new CredentialsError("credentials: CEF_AS_PRIVATE_KEY and CEF_AS_PUBLIC_KEY must both be set");
|
|
170
|
-
}
|
|
171
|
-
return {
|
|
172
|
-
pubkey: normalizePubkey(envPub, "CEF_AS_PUBLIC_KEY"),
|
|
173
|
-
privkeyBytes: hexToBytes(envPriv, "CEF_AS_PRIVATE_KEY"),
|
|
174
|
-
source: "env",
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
// (3) --keystore <path>. Missing file is a hard error here — the user
|
|
178
|
-
// explicitly named a path, so silently falling through to the next source
|
|
179
|
-
// would mask a typo.
|
|
180
|
-
if (opts.keystoreFlag !== undefined) {
|
|
181
|
-
const file = await readKeystoreFile(opts.keystoreFlag, "--keystore");
|
|
182
|
-
if (file === null) {
|
|
183
|
-
throw new CredentialsError(`--keystore: ${opts.keystoreFlag} does not exist`);
|
|
184
|
-
}
|
|
185
|
-
return {
|
|
186
|
-
pubkey: normalizePubkey(file.pubkey, opts.keystoreFlag),
|
|
187
|
-
privkeyBytes: hexToBytes(file.privkey, opts.keystoreFlag),
|
|
188
|
-
source: "keystore-flag",
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
// (4) CEF_AS_KEYSTORE env. Same: if set, the file must exist.
|
|
192
|
-
const envKeystore = env.CEF_AS_KEYSTORE;
|
|
193
|
-
if (envKeystore !== undefined && envKeystore.length > 0) {
|
|
194
|
-
const file = await readKeystoreFile(envKeystore, "CEF_AS_KEYSTORE");
|
|
195
|
-
if (file === null) {
|
|
196
|
-
throw new CredentialsError(`CEF_AS_KEYSTORE: ${envKeystore} does not exist`);
|
|
197
|
-
}
|
|
198
|
-
return {
|
|
199
|
-
pubkey: normalizePubkey(file.pubkey, envKeystore),
|
|
200
|
-
privkeyBytes: hexToBytes(file.privkey, envKeystore),
|
|
201
|
-
source: "keystore-env",
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
// (5) Shared credentials file → profile section. A missing file with no
|
|
205
|
-
// explicit `--profile` flag is "no credentials", not an error. With
|
|
206
|
-
// `--profile <name>` set we always require either the file or the
|
|
207
|
-
// section to exist — silent fallthrough would mask the typo.
|
|
208
|
-
const configFilePath = opts.configFilePath ?? defaultCredentialsFilePath();
|
|
209
|
-
const profileName = opts.profileFlag ?? env.CEF_PROFILE ?? "default";
|
|
210
|
-
const profileExplicit = opts.profileFlag !== undefined ||
|
|
211
|
-
(env.CEF_PROFILE !== undefined && env.CEF_PROFILE.length > 0);
|
|
212
|
-
let configText = null;
|
|
213
|
-
try {
|
|
214
|
-
configText = await fs.readFile(configFilePath, "utf8");
|
|
215
|
-
}
|
|
216
|
-
catch (e) {
|
|
217
|
-
const code = e.code;
|
|
218
|
-
if (code !== "ENOENT")
|
|
219
|
-
throw e;
|
|
220
|
-
}
|
|
221
|
-
if (configText !== null) {
|
|
222
|
-
const parsed = parseConfigFile(configText);
|
|
223
|
-
const section = parsed[profileName];
|
|
224
|
-
if (section && section.pubkey && section.privkey) {
|
|
225
|
-
return {
|
|
226
|
-
pubkey: normalizePubkey(section.pubkey, `${configFilePath} [${profileName}]`),
|
|
227
|
-
privkeyBytes: hexToBytes(section.privkey, `${configFilePath} [${profileName}]`),
|
|
228
|
-
source: "config-profile",
|
|
229
|
-
profileName,
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
if (profileExplicit) {
|
|
233
|
-
throw new CredentialsError(`--profile: ${profileName} not found in ${configFilePath}`);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
else if (profileExplicit) {
|
|
237
|
-
throw new CredentialsError(`--profile: credentials file ${configFilePath} does not exist`);
|
|
238
|
-
}
|
|
239
|
-
throw new CredentialsError(NO_CREDENTIALS_MESSAGE);
|
|
240
|
-
}
|
|
241
|
-
//# sourceMappingURL=credentials.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/signing.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface Ed25519Keypair {
|
|
2
|
-
/** Hex-encoded public key (32-byte Ed25519 pubkey, lowercase, no prefix). */
|
|
3
|
-
pubkey: string;
|
|
4
|
-
/** Raw 32-byte private seed. */
|
|
5
|
-
privkeyBytes: Uint8Array;
|
|
6
|
-
}
|
|
7
|
-
export declare function generateKeypair(): Promise<Ed25519Keypair>;
|
|
8
|
-
/**
|
|
9
|
-
* Sign the UTF-8 bytes of `canonicalJson` with `privkeyBytes`. Returns
|
|
10
|
-
* lowercase-hex signature (64 bytes → 128 hex chars).
|
|
11
|
-
*/
|
|
12
|
-
export declare function signBody(canonicalJson: string, privkeyBytes: Uint8Array): Promise<string>;
|
|
13
|
-
//# sourceMappingURL=signing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../../src/lib/signing.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,YAAY,EAAE,UAAU,CAAC;CAC1B;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,cAAc,CAAC,CAI/D;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,UAAU,GACvB,OAAO,CAAC,MAAM,CAAC,CAIjB"}
|
package/dist/lib/signing.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ed25519 keypair generation + body signing for `cef publish`. Produces the
|
|
3
|
-
* lowercase-hex pubkey + signature pair that the marketplace's
|
|
4
|
-
* `X-AS-Pubkey` / `X-AS-Signature` headers expect (raw hex, no `0x` prefix,
|
|
5
|
-
* no encoding wrapper).
|
|
6
|
-
*
|
|
7
|
-
* Mirrors the marketplace's `lib/signing/sign.ts`. Signing input is the
|
|
8
|
-
* UTF-8 bytes of the JCS-canonical body — callers are expected to pass the
|
|
9
|
-
* exact string they place in the HTTP request body, so the signature
|
|
10
|
-
* covers byte-for-byte what the server will re-canonicalize and verify.
|
|
11
|
-
*/
|
|
12
|
-
import * as ed25519 from "@noble/ed25519";
|
|
13
|
-
function bytesToHex(b) {
|
|
14
|
-
let s = "";
|
|
15
|
-
for (let i = 0; i < b.length; i++) {
|
|
16
|
-
s += b[i].toString(16).padStart(2, "0");
|
|
17
|
-
}
|
|
18
|
-
return s;
|
|
19
|
-
}
|
|
20
|
-
export async function generateKeypair() {
|
|
21
|
-
const privkeyBytes = ed25519.utils.randomPrivateKey();
|
|
22
|
-
const pubkeyBytes = await ed25519.getPublicKeyAsync(privkeyBytes);
|
|
23
|
-
return { pubkey: bytesToHex(pubkeyBytes), privkeyBytes };
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Sign the UTF-8 bytes of `canonicalJson` with `privkeyBytes`. Returns
|
|
27
|
-
* lowercase-hex signature (64 bytes → 128 hex chars).
|
|
28
|
-
*/
|
|
29
|
-
export async function signBody(canonicalJson, privkeyBytes) {
|
|
30
|
-
const message = new TextEncoder().encode(canonicalJson);
|
|
31
|
-
const sig = await ed25519.signAsync(message, privkeyBytes);
|
|
32
|
-
return bytesToHex(sig);
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=signing.js.map
|
package/dist/lib/signing.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signing.js","sourceRoot":"","sources":["../../src/lib/signing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,SAAS,UAAU,CAAC,CAAa;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,aAAqB,EACrB,YAAwB;IAExB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC3D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
|