@bitspark/archon-cli 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/cmd/key.d.ts +1 -0
- package/dist/src/cmd/key.js +138 -0
- package/dist/src/cmd/key.js.map +1 -0
- package/dist/src/cmd/key_store.d.ts +84 -0
- package/dist/src/cmd/key_store.js +482 -0
- package/dist/src/cmd/key_store.js.map +1 -0
- package/dist/src/cmd/keygen.d.ts +1 -0
- package/dist/src/cmd/keygen.js +114 -0
- package/dist/src/cmd/keygen.js.map +1 -0
- package/dist/src/cmd/login.d.ts +148 -0
- package/dist/src/cmd/login.js +777 -0
- package/dist/src/cmd/login.js.map +1 -0
- package/dist/src/cmd/sign.d.ts +1 -0
- package/dist/src/cmd/sign.js +51 -0
- package/dist/src/cmd/sign.js.map +1 -0
- package/dist/src/cmd/verify.d.ts +1 -0
- package/dist/src/cmd/verify.js +68 -0
- package/dist/src/cmd/verify.js.map +1 -0
- package/dist/src/cmd/version.d.ts +2 -0
- package/dist/src/cmd/version.js +16 -0
- package/dist/src/cmd/version.js.map +1 -0
- package/dist/src/io.d.ts +19 -0
- package/dist/src/io.js +65 -0
- package/dist/src/io.js.map +1 -0
- package/dist/src/keystore.d.ts +55 -0
- package/dist/src/keystore.js +204 -0
- package/dist/src/keystore.js.map +1 -0
- package/dist/src/main.d.ts +2 -0
- package/dist/src/main.js +51 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/pubrender.d.ts +5 -0
- package/dist/src/pubrender.js +30 -0
- package/dist/src/pubrender.js.map +1 -0
- package/package.json +34 -0
package/dist/src/main.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// archon — the human-facing CLI for the TS lane. A thin presentation + I/O layer over the
|
|
3
|
+
// public @bitspark/archon API. The shape is fixed: `archon <subcommand> [args]`. Each
|
|
4
|
+
// subcommand lives in its own cmd/*.ts behind a single run(args); this dispatch only
|
|
5
|
+
// routes the name. Results go to stdout; diagnostics, usage, and the keygen secret
|
|
6
|
+
// warning go to stderr; any error exits non-zero. Three native binaries (cli/rs, cli/go,
|
|
7
|
+
// cli/ts) build the SAME `archon` command with byte-identical stdout (cli/smoke.mjs).
|
|
8
|
+
//
|
|
9
|
+
// `key` and `keygen` were carved out of thesmos's CLI on 2026-09-09 (docs/growth-plan.md
|
|
10
|
+
// §8.2). `sign` and `verify` are new: raw bytes, domain-aware.
|
|
11
|
+
import { run as key } from "./cmd/key.js";
|
|
12
|
+
import { run as login } from "./cmd/login.js";
|
|
13
|
+
import { run as keygen } from "./cmd/keygen.js";
|
|
14
|
+
import { run as sign } from "./cmd/sign.js";
|
|
15
|
+
import { run as verify } from "./cmd/verify.js";
|
|
16
|
+
import { run as version, versionLine } from "./cmd/version.js";
|
|
17
|
+
import { Verdict } from "./io.js";
|
|
18
|
+
const USAGE = "usage: archon <keygen|key|login|sign|verify|version> [args]";
|
|
19
|
+
// login is async (it makes HTTP requests), so a handler may return a promise and this
|
|
20
|
+
// dispatch awaits it. Without the await, a rejected promise would escape the try/catch
|
|
21
|
+
// below and Node would report an unhandled rejection instead of `archon login: <reason>`.
|
|
22
|
+
const dispatch = { keygen, key, login, sign, verify, version };
|
|
23
|
+
const [command, ...rest] = process.argv.slice(2);
|
|
24
|
+
if (command === undefined) {
|
|
25
|
+
process.stderr.write(`${USAGE}\n`);
|
|
26
|
+
process.exit(2);
|
|
27
|
+
}
|
|
28
|
+
if (command === "--help" || command === "-h") {
|
|
29
|
+
process.stdout.write(`${USAGE}\n`);
|
|
30
|
+
process.exit(0);
|
|
31
|
+
}
|
|
32
|
+
if (command === "--version") {
|
|
33
|
+
process.stdout.write(`${versionLine()}\n`);
|
|
34
|
+
process.exit(0);
|
|
35
|
+
}
|
|
36
|
+
const handler = dispatch[command];
|
|
37
|
+
if (handler === undefined) {
|
|
38
|
+
process.stderr.write(`archon: unknown subcommand ${JSON.stringify(command)}\n${USAGE}\n`);
|
|
39
|
+
process.exit(2);
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
await handler(rest);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
// A verdict (`invalid`) is already on stdout: exit 1 with nothing on stderr.
|
|
46
|
+
if (!(err instanceof Verdict)) {
|
|
47
|
+
process.stderr.write(`archon ${command}: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
48
|
+
}
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA,0FAA0F;AAC1F,sFAAsF;AACtF,qFAAqF;AACrF,mFAAmF;AACnF,yFAAyF;AACzF,sFAAsF;AACtF,EAAE;AACF,yFAAyF;AACzF,+DAA+D;AAC/D,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,GAAG,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,GAAG,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,KAAK,GAAG,6DAA6D,CAAC;AAE5E,sFAAsF;AACtF,uFAAuF;AACvF,0FAA0F;AAC1F,MAAM,QAAQ,GAA6D,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAEzH,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AACD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;IAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AACD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AACD,IAAI,CAAC;IACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,6EAA6E;IAC7E,IAAI,CAAC,CAAC,GAAG,YAAY,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type PubFormat = "spki" | "text" | "hex";
|
|
2
|
+
/** Parse a `--format` value; the message is byte-identical across the three lanes. */
|
|
3
|
+
export declare function parsePubFormat(s: string): PubFormat;
|
|
4
|
+
/** Render a 32-byte public key; the returned string is the EXACT bytes to write. */
|
|
5
|
+
export declare function renderPub(pub: Uint8Array, fmt: PubFormat): string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Public-key rendering in the shared CLI formats — used by `key pub` and `keygen
|
|
2
|
+
// --pub-out`, so every entry point that emits a public key agrees byte-for-byte across
|
|
3
|
+
// the three lanes (pinned by cli/smoke.mjs):
|
|
4
|
+
// - spki: the keycodec SPKI PEM, VERBATIM (it carries its own single trailing newline)
|
|
5
|
+
// - text: the canonical key text `ed25519:<hex>` + "\n"
|
|
6
|
+
// - hex: the raw 32-byte pubkey as lowercase hex + "\n"
|
|
7
|
+
import { encodeKey, pubkeyToSpkiPem, toHex } from "@bitspark/archon";
|
|
8
|
+
/** Parse a `--format` value; the message is byte-identical across the three lanes. */
|
|
9
|
+
export function parsePubFormat(s) {
|
|
10
|
+
switch (s) {
|
|
11
|
+
case "spki":
|
|
12
|
+
case "text":
|
|
13
|
+
case "hex":
|
|
14
|
+
return s;
|
|
15
|
+
default:
|
|
16
|
+
throw new Error(`unknown --format ${JSON.stringify(s)} (want spki|text|hex)`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** Render a 32-byte public key; the returned string is the EXACT bytes to write. */
|
|
20
|
+
export function renderPub(pub, fmt) {
|
|
21
|
+
switch (fmt) {
|
|
22
|
+
case "spki":
|
|
23
|
+
return pubkeyToSpkiPem(pub);
|
|
24
|
+
case "text":
|
|
25
|
+
return `${encodeKey(pub)}\n`;
|
|
26
|
+
case "hex":
|
|
27
|
+
return `${toHex(pub)}\n`;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=pubrender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pubrender.js","sourceRoot":"","sources":["../../src/pubrender.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,uFAAuF;AACvF,6CAA6C;AAC7C,yFAAyF;AACzF,0DAA0D;AAC1D,2DAA2D;AAC3D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIrE,sFAAsF;AACtF,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,CAAC,CAAC;QACX;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,SAAS,CAAC,GAAe,EAAE,GAAc;IACvD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAK,MAAM;YACT,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bitspark/archon-cli",
|
|
3
|
+
"version": "0.6.1",
|
|
4
|
+
"description": "archon CLI: key / keygen / sign / verify over the identity floor.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/Bitspark/archon"
|
|
9
|
+
},
|
|
10
|
+
"type": "module",
|
|
11
|
+
"bin": {
|
|
12
|
+
"archon": "dist/src/main.js"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist/src"
|
|
16
|
+
],
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"registry": "https://registry.npmjs.org"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc -p tsconfig.json",
|
|
22
|
+
"test": "tsc -p tsconfig.json && node --test dist/test/*.test.js"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@bitspark/archon": "^0.6.1",
|
|
26
|
+
"@bitspark/archon-sdk": "^0.6.1",
|
|
27
|
+
"@noble/ciphers": "^2.4.0",
|
|
28
|
+
"@noble/hashes": "^2.4.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/node": "^22",
|
|
32
|
+
"typescript": "^5.7"
|
|
33
|
+
}
|
|
34
|
+
}
|