@zanii/cli 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -75,6 +75,8 @@ Also exported as a library: `import { run } from '@zanii/cli'`.
75
75
 
76
76
  ## Changelog
77
77
 
78
+ - **0.2.3** — New commands: `init` (owner + agent identities and a delegation; sealed when ZANII_PASSPHRASE is set), `doctor`, `tail`, `diff` (exports may only append), `conform` (protocol vectors against this build), `policy test`, `rotate` (signed key succession), `report` and `offline-verify` (prints the verifier's own hash).
79
+ - **0.2.2** — now on `@zanii/core` and `@zanii/sdk` 0.5 (protocol 1.2): audit bundles with swarm receipts and session closes verify. No API change.
78
80
  - **0.2.0**: `audit`: live + offline (zero-network) data-subject audits over evidence bundles, via `@zanii/subject` + `@zanii/custody-verdicts`.
79
81
  - **0.1.0**: initial release: `keygen`, `did`, `delegate`, `revoke`, `verify`, `bundle`, `export`, `stats`, `agent`.
80
82
 
@@ -0,0 +1,12 @@
1
+ type FetchLike = (input: string, init?: RequestInit) => Promise<Response>;
2
+ interface Ctx {
3
+ log: (s: string) => void;
4
+ fetchImpl: FetchLike;
5
+ server: string;
6
+ json: boolean;
7
+ out?: string;
8
+ }
9
+ export declare const EXTENDED_HELP = "\n zanii init [--dir .zanii] [--scopes '*'] [--exp 2027-01-01] owner + agent identities and a delegation (sealed if ZANII_PASSPHRASE is set)\n zanii doctor --identity <id> [--delegation <cert>] check keys, delegation, server, clock\n zanii tail <did> [--once] [--interval 5000] stream an agent's new receipts\n zanii diff <bundleA> <bundleB> did the later export only append?\n zanii conform run the protocol conformance vectors against this build\n zanii policy test <policy.json> <actions.json> what a policy would have allowed, denied or held\n zanii rotate --owner <id> --from <id> [--reason rotation] new agent key with signed continuity\n zanii report <bundle.json> compliance report (Markdown)\n zanii offline-verify <bundle.json> verify with no network; prints this verifier's hash";
10
+ export declare function runExtended(cmd: string | undefined, positional: string[], flags: Record<string, string | boolean>, ctx: Ctx): Promise<number | undefined>;
11
+ export {};
12
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAoBA,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1E,UAAU,GAAG;IACX,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAKD,eAAO,MAAM,aAAa,k+BAS0F,CAAC;AAErH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgJ/J"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * The newer CLI commands: init, doctor, tail, diff, conform, policy test, rotate, report and
3
+ * offline-verify. Each returns an exit code, or undefined when the command is not one of these.
4
+ */
5
+ import { createHash } from 'node:crypto';
6
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
7
+ import { join } from 'node:path';
8
+ import { fileURLToPath } from 'node:url';
9
+ import { ed25519 } from '@noble/curves/ed25519';
10
+ import { bytesToHex, hexToBytes } from '@noble/hashes/utils';
11
+ import { canonicalBytes, createCert, didFromPublicKey, generateKeypair, merkleRoot, payloadBytes, verifyAuditBundle, verifyCertSignature, verifyChain, verifyConsistency, verifyInclusion, verifyReceipt, verifySTH, } from '@zanii/core';
12
+ import { runConformance } from '@zanii/conformance';
13
+ import { buildComplianceReport, renderComplianceMarkdown } from '@zanii/compliance';
14
+ import { sealIdentity } from '@zanii/kms';
15
+ import { createPolicyEngine } from '@zanii/policy';
16
+ import { assembleSuccession, buildSuccessionBody, signSuccession, verifySuccession } from '@zanii/succession';
17
+ const readJson = (p) => JSON.parse(readFileSync(p, 'utf8'));
18
+ const hex = (b) => bytesToHex(b);
19
+ export const EXTENDED_HELP = `
20
+ zanii init [--dir .zanii] [--scopes '*'] [--exp 2027-01-01] owner + agent identities and a delegation (sealed if ZANII_PASSPHRASE is set)
21
+ zanii doctor --identity <id> [--delegation <cert>] check keys, delegation, server, clock
22
+ zanii tail <did> [--once] [--interval 5000] stream an agent's new receipts
23
+ zanii diff <bundleA> <bundleB> did the later export only append?
24
+ zanii conform run the protocol conformance vectors against this build
25
+ zanii policy test <policy.json> <actions.json> what a policy would have allowed, denied or held
26
+ zanii rotate --owner <id> --from <id> [--reason rotation] new agent key with signed continuity
27
+ zanii report <bundle.json> compliance report (Markdown)
28
+ zanii offline-verify <bundle.json> verify with no network; prints this verifier's hash`;
29
+ export async function runExtended(cmd, positional, flags, ctx) {
30
+ const emit = (obj, human) => ctx.log(ctx.json ? JSON.stringify(obj, null, 2) : human);
31
+ switch (cmd) {
32
+ case 'init': {
33
+ const dir = String(flags.dir ?? '.zanii');
34
+ if (existsSync(join(dir, 'agent.json')) || existsSync(join(dir, 'agent.sealed.json'))) {
35
+ ctx.log(`error: ${dir} already holds an agent identity; refusing to overwrite`);
36
+ return 1;
37
+ }
38
+ mkdirSync(dir, { recursive: true });
39
+ const owner = generateKeypair();
40
+ const agent = generateKeypair();
41
+ const scopes = String(flags.scopes ?? '*').split(',').map((s) => s.trim()).filter(Boolean);
42
+ const cert = createCert({ issuer: owner.did, subject: agent.did, scopes, exp: String(flags.exp ?? new Date(Date.now() + 365 * 86_400_000).toISOString()) }, owner.privateKey);
43
+ writeFileSync(join(dir, 'owner.json'), JSON.stringify({ did: owner.did, privateKey: hex(owner.privateKey) }, null, 2), { mode: 0o600 });
44
+ const pass = process.env.ZANII_PASSPHRASE;
45
+ if (pass)
46
+ writeFileSync(join(dir, 'agent.sealed.json'), JSON.stringify(sealIdentity({ did: agent.did, privateKey: agent.privateKey }, pass), null, 2), { mode: 0o600 });
47
+ else
48
+ writeFileSync(join(dir, 'agent.json'), JSON.stringify({ did: agent.did, privateKey: hex(agent.privateKey) }, null, 2), { mode: 0o600 });
49
+ writeFileSync(join(dir, 'delegation.json'), JSON.stringify(cert, null, 2));
50
+ emit({ owner: owner.did, agent: agent.did, dir, sealed: !!pass }, [
51
+ `owner ${owner.did}`,
52
+ `agent ${agent.did}${pass ? ' (sealed with ZANII_PASSPHRASE)' : ' (plaintext: set ZANII_PASSPHRASE to seal it)'}`,
53
+ `files ${dir}/owner.json, ${dir}/${pass ? 'agent.sealed.json' : 'agent.json'}, ${dir}/delegation.json`,
54
+ 'next move owner.json off this machine; add `zanii doctor --identity ... --delegation ...` to CI',
55
+ ].join('\n'));
56
+ return 0;
57
+ }
58
+ case 'doctor': {
59
+ const checks = [];
60
+ let did;
61
+ try {
62
+ const id = readJson(String(flags.identity));
63
+ did = id.did;
64
+ const derived = id.privateKey ? didFromPublicKey(ed25519.getPublicKey(hexToBytes(id.privateKey))) : id.did;
65
+ checks.push({ check: 'identity', ok: derived === id.did, detail: id.privateKey ? 'plaintext key on disk: consider kms sealing or signerd' : 'sealed or public identity' });
66
+ }
67
+ catch (e) {
68
+ checks.push({ check: 'identity', ok: false, detail: `cannot read --identity: ${e.message}` });
69
+ }
70
+ if (typeof flags.delegation === 'string' && did) {
71
+ try {
72
+ const raw = readJson(flags.delegation);
73
+ const chain = (Array.isArray(raw) ? raw : [raw]);
74
+ const r = verifyChain(chain, { agentId: did, at: new Date() });
75
+ checks.push({ check: 'delegation', ok: r.ok, detail: r.ok ? `scopes ${r.effectiveScopes?.join(', ')}; expires ${chain.at(-1)?.exp}` : r.error ?? 'invalid' });
76
+ }
77
+ catch (e) {
78
+ checks.push({ check: 'delegation', ok: false, detail: e.message });
79
+ }
80
+ }
81
+ try {
82
+ const res = await ctx.fetchImpl(`${ctx.server}/v1/sth`);
83
+ const sth = (await res.json());
84
+ const skew = Math.abs(Date.now() - Date.parse(sth.ts));
85
+ checks.push({ check: 'server', ok: res.ok && verifySTH(sth), detail: `${ctx.server}: tree size ${sth.size}, signed tree head ${verifySTH(sth) ? 'valid' : 'INVALID'}` });
86
+ checks.push({ check: 'clock', ok: skew < 15 * 60_000, detail: `latest tree head is ${Math.round(skew / 1000)} s old` });
87
+ }
88
+ catch (e) {
89
+ checks.push({ check: 'server', ok: false, detail: `${ctx.server} unreachable: ${e.message}` });
90
+ }
91
+ emit(checks, checks.map((c) => `${c.ok ? '✓' : '✘'} ${c.check.padEnd(10)} ${c.detail}`).join('\n'));
92
+ return checks.every((c) => c.ok) ? 0 : 1;
93
+ }
94
+ case 'tail': {
95
+ const did = positional[0];
96
+ if (!did)
97
+ return usage(ctx, 'tail <did>');
98
+ const seen = new Set();
99
+ const poll = async () => {
100
+ const res = await ctx.fetchImpl(`${ctx.server}/v1/recent?limit=100`);
101
+ const { receipts } = (await res.json());
102
+ for (const r of [...receipts].reverse()) {
103
+ const mine = r.receipt.agent_id === did || r.receipt.body?.participants?.includes?.(did);
104
+ const h = r.hash ?? JSON.stringify(r.receipt).slice(0, 64);
105
+ if (!mine || seen.has(h))
106
+ continue;
107
+ seen.add(h);
108
+ ctx.log(`${verifyReceipt(r.receipt).ok ? '✓' : '·'} ${r.receipt.ts ?? r.receipt.body?.ts ?? ''} ${r.receipt.target ?? r.receipt.body?.target ?? r.receipt.type}`);
109
+ }
110
+ };
111
+ await poll();
112
+ if (flags.once)
113
+ return 0;
114
+ const ms = Number(flags.interval ?? 5000);
115
+ for (;;) {
116
+ await new Promise((r) => setTimeout(r, ms));
117
+ await poll().catch((e) => ctx.log(`(poll failed: ${e.message})`));
118
+ }
119
+ }
120
+ case 'diff': {
121
+ if (positional.length < 2)
122
+ return usage(ctx, 'diff <bundleA> <bundleB>');
123
+ const a = readJson(positional[0]);
124
+ const b = readJson(positional[1]);
125
+ const inB = new Set(b.receipts.map((r) => r.hash));
126
+ const removed = a.receipts.filter((r) => !inB.has(r.hash)).map((r) => r.hash);
127
+ const reordered = !removed.length && a.receipts.some((r, i) => b.receipts[i]?.hash !== r.hash);
128
+ const result = { appendOnly: !removed.length && !reordered, added: b.receipts.length - (a.receipts.length - removed.length), removed, reordered };
129
+ emit(result, result.appendOnly ? `✓ append-only: ${result.added} new receipt(s)` : `✘ NOT append-only: ${removed.length} removed${reordered ? ', reordered' : ''}`);
130
+ return result.appendOnly ? 0 : 1;
131
+ }
132
+ case 'conform': {
133
+ const report = runConformance(coreImplementation);
134
+ emit(report, report.failures.length ? `✘ ${report.failures.length} of ${report.total} vectors failed` : `✓ all ${report.total} conformance vectors pass`);
135
+ return report.failures.length ? 1 : 0;
136
+ }
137
+ case 'policy': {
138
+ if (positional[0] !== 'test' || positional.length < 3)
139
+ return usage(ctx, 'policy test <policy.json> <actions.json>');
140
+ const engine = createPolicyEngine(readJson(positional[1]));
141
+ const actions = readJson(positional[2]);
142
+ const results = actions.map((a) => ({ target: a.target, ...engine.evaluate(a) }));
143
+ const count = (d) => results.filter((r) => r.decision === d).length;
144
+ emit(results, `${count('allow')} allowed · ${count('deny')} denied · ${count('require_approval')} held for approval\n` +
145
+ results.filter((r) => r.decision !== 'allow').map((r) => ` ${r.decision.padEnd(16)} ${r.target} (${r.rule ?? 'default'}: ${r.reason})`).join('\n'));
146
+ return 0;
147
+ }
148
+ case 'rotate': {
149
+ if (typeof flags.owner !== 'string' || typeof flags.from !== 'string')
150
+ return usage(ctx, 'rotate --owner <id> --from <id>');
151
+ const owner = readJson(flags.owner);
152
+ const prev = readJson(flags.from);
153
+ const reason = (flags.reason ?? 'rotation');
154
+ const next = generateKeypair();
155
+ const body = buildSuccessionBody({ predecessor: prev.did, successor: next.did, owner: owner.did, reason, ts: new Date().toISOString(),
156
+ ...(reason === 'compromise' ? { compromisedAt: String(flags['compromised-at'] ?? new Date().toISOString()) } : {}) });
157
+ const sigs = [signSuccession(body, owner.did, hexToBytes(owner.privateKey))];
158
+ if (reason !== 'compromise' && prev.privateKey)
159
+ sigs.push(signSuccession(body, prev.did, hexToBytes(prev.privateKey)));
160
+ const succession = assembleSuccession(body, sigs);
161
+ const check = verifySuccession(succession);
162
+ const outDir = ctx.out ?? '.';
163
+ writeFileSync(join(outDir, 'agent.next.json'), JSON.stringify({ did: next.did, privateKey: hex(next.privateKey) }, null, 2), { mode: 0o600 });
164
+ writeFileSync(join(outDir, 'succession.json'), JSON.stringify(succession, null, 2));
165
+ emit({ successor: next.did, check }, `${check.ok ? '✓' : '✘'} ${prev.did.slice(0, 24)}… → ${next.did.slice(0, 24)}… (${reason}${check.cosigned ? ', co-signed by the old key' : ''})\n wrote agent.next.json and succession.json; issue the new agent a delegation, then record the succession`);
166
+ return check.ok ? 0 : 1;
167
+ }
168
+ case 'report': {
169
+ if (!positional[0])
170
+ return usage(ctx, 'report <bundle.json>');
171
+ const md = renderComplianceMarkdown(buildComplianceReport(readJson(positional[0])));
172
+ if (ctx.out)
173
+ writeFileSync(ctx.out, md);
174
+ ctx.log(ctx.out ? `report written to ${ctx.out}` : md);
175
+ return 0;
176
+ }
177
+ case 'offline-verify': {
178
+ if (!positional[0])
179
+ return usage(ctx, 'offline-verify <bundle.json>');
180
+ const report = verifyAuditBundle(readJson(positional[0]));
181
+ const self = createHash('sha256').update(readFileSync(fileURLToPath(import.meta.url))).digest('hex');
182
+ emit({ ok: report.ok, verifier: `sha256:${self}`, report }, `${report.ok ? '✓ PROVEN' : '✘ FAILED'} (${report.stats.receipts} receipts, no network used)\n verifier build sha256:${self}`);
183
+ return report.ok ? 0 : 1;
184
+ }
185
+ default:
186
+ return undefined;
187
+ }
188
+ }
189
+ function usage(ctx, u) {
190
+ ctx.log(`usage: zanii ${u}`);
191
+ return 2;
192
+ }
193
+ /** @zanii/core behind the conformance runner's interface. */
194
+ const coreImplementation = {
195
+ canonicalBytes: (v) => canonicalBytes(v),
196
+ payloadBytes: (v) => payloadBytes(v),
197
+ didFromPrivateKey: (h) => didFromPublicKey(ed25519.getPublicKey(hexToBytes(h))),
198
+ verifyCertSignature: (c) => verifyCertSignature(c),
199
+ verifyChain: (chain, agentId, at) => {
200
+ const r = verifyChain(chain, { agentId, at: new Date(at) });
201
+ return { ok: r.ok, effectiveScopes: r.effectiveScopes };
202
+ },
203
+ verifyReceipt: (r) => verifyReceipt(r).ok,
204
+ merkleRoot: (leaves) => bytesToHex(merkleRoot(leaves.map(hexToBytes))),
205
+ verifyInclusion: (leaf, i, n, proof, root) => verifyInclusion(hexToBytes(leaf), i, n, proof.map(hexToBytes), hexToBytes(root)),
206
+ verifyConsistency: (m, n, a, b, proof) => verifyConsistency(m, n, hexToBytes(a), hexToBytes(b), proof.map(hexToBytes)),
207
+ verifySTH: (s) => verifySTH(s),
208
+ verifyAuditBundle: (b) => verifyAuditBundle(b).ok,
209
+ };
210
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AA2IjF,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAwJ1H"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AA2IjF,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2J1H"}
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ import { computeVerdicts } from '@zanii/custody-verdicts';
10
10
  import { fetchAndVerifyProof } from '@zanii/sdk';
11
11
  import { fetchSubjectHistory } from '@zanii/subject';
12
12
  import { proveAbsence } from '@zanii/train';
13
+ import { EXTENDED_HELP, runExtended } from './commands.js';
13
14
  const hex = (b) => Buffer.from(b).toString('hex');
14
15
  const unhex = (s) => new Uint8Array(Buffer.from(s, 'hex'));
15
16
  function asPayload(p) {
@@ -111,7 +112,7 @@ const HELP = `zanii: verifiable identity & proof-of-action for AI agents
111
112
  (8 custody verdict rows; pass --jurisdiction, --declared-subprocessors, --trusted-signers)
112
113
  zanii audit <tag> --bundle <file> offline audit of a bundle: zero network calls
113
114
  zanii stats [--server <url>] ledger counters
114
- zanii agent <did> [--server <url>] an agent's trust summary
115
+ zanii agent <did> [--server <url>] an agent's trust summary${EXTENDED_HELP}
115
116
 
116
117
  Global: --server (or ZANII_SERVER); default https://ledger.zanii.agency. --json for raw output.`;
117
118
  export async function run(argv, opts = {}) {
@@ -291,9 +292,13 @@ export async function run(argv, opts = {}) {
291
292
  case undefined:
292
293
  ctx.log(HELP);
293
294
  return 0;
294
- default:
295
+ default: {
296
+ const code = await runExtended(cmd, positional, flags, { ...ctx, server, json, out });
297
+ if (code !== undefined)
298
+ return code;
295
299
  ctx.log(`unknown command '${cmd}'\n\n${HELP}`);
296
300
  return 2;
301
+ }
297
302
  }
298
303
  }
299
304
  catch (e) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAgB,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAwG,MAAM,yBAAyB,CAAC;AAChK,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAuB,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAyB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAS3D,MAAM,GAAG,GAAG,CAAC,CAAa,EAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtE,MAAM,KAAK,GAAG,CAAC,CAAS,EAAc,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AA2B/E,SAAS,SAAS,CAAC,CAAU;IAC3B,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAE,CAA6B;QAChC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CACzB,eAA+B,EAC/B,GAAW,EACX,MAAgG;IAEhG,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,IAAI,MAAM,CAAC,YAAY;QAAE,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAClE,IAAI,MAAM,CAAC,qBAAqB;QAAE,KAAK,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAC7F,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,+EAA+E;QAC/E,4EAA4E;QAC5E,KAAK,CAAC,QAAQ,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAsB,CAAC;IACjF,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ;SAC1C,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAE,EAAE,CAAC,OAA8B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SACrF,MAAM,CAAC,CAAC,CAAC,EAAqF,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,+BAA+B,CAAC,CAAC;IAEzJ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5C,MAAM,MAAM,GAAG,YAAY;SACxB,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAiC,CAAC;IAC7E,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,mBAAmB;QAAE,OAAO,KAAK,CAAC;IAEzF,MAAM,IAAI,GAAyB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QAC5D,CAAC,CAAE,OAAO,CAAC,IAAiB;QAC5B,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;YACnB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAqB;YACjC,QAAQ;YACR,UAAU;YACV,aAAa,EAAE,UAAU;YACzB,YAAY;SACb,CAAC;QACF,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;IAC5D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,GAAiC;IAC/C,MAAM,EAAE,UAAU;IAClB,aAAa,EAAE,eAAe;IAC9B,MAAM,EAAE,UAAU;IAClB,kBAAkB,EAAE,oBAAoB;CACzC,CAAC;AAEF,SAAS,KAAK,CAAC,IAAc;IAC3B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBAAC,CAAC,EAAE,CAAC;YAAC,CAAC;;gBAAM,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACrH,CAAC;;YAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,SAAS,CAAC,IAAa;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC;AAED,MAAM,IAAI,GAAG;;;;;;;;;;;;;;yEAc4D,aAAa;;kGAEY,CAAC;AAEnG,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc,EAAE,OAA6D,EAAE;IACvG,MAAM,GAAG,GAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpH,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,6BAA6B,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;IACjC,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,GAAY,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnG,MAAM,GAAG,GAAG,KAAK,EAAE,IAAY,EAAgB,EAAE;QAC/C,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;gBAC7B,MAAM,EAAE,GAAiB,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvG,IAAI,GAAG,EAAE,CAAC;oBAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;oBAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,GAAG,+BAA+B,CAAC,CAAC;gBAAC,CAAC;;oBAC5H,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,UAAU,4BAA4B,CAAC,CAAC;gBACxF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,CAAiB,CAAC;gBAC5E,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBAChB,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAiB,CAAC;gBACpF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACpF,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;gBACnI,IAAI,GAAG,EAAE,CAAC;oBAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;oBAAC,GAAG,CAAC,GAAG,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;gBAAC,CAAC;;oBACnG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAiB,CAAC;gBACpF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;gBAClE,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;gBACtF,IAAI,GAAG,EAAE,CAAC;oBAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;oBAAC,GAAG,CAAC,GAAG,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;gBAAC,CAAC;;oBAClG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;gBAChF,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjI,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChE,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,QAAQ,YAAY,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnL,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,cAAc,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC;gBAC7E,IAAI,GAAG,EAAE,CAAC;oBAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;oBAAC,GAAG,CAAC,GAAG,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;gBAAC,CAAC;;oBACvG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;gBACjH,+EAA+E;gBAC/E,4EAA4E;gBAC5E,+EAA+E;gBAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC3D,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACnF,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;gBAClI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;gBAC/I,MAAM,UAAU,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC;gBAC3F,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACnD,MAAM,qBAAqB,GAAG,SAAS,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBACzE,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC3D,IAAI,IAAkB,CAAC;gBACvB,IAAI,IAAY,CAAC;gBACjB,IAAI,OAAgC,CAAC;gBACrC,IAAI,UAAU,EAAE,CAAC;oBACf,6EAA6E;oBAC7E,6EAA6E;oBAC7E,wEAAwE;oBACxE,iEAAiE;oBACjE,IAAI,GAAG;wBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;oBACnE,IAAI,CAAiB,CAAC;oBACtB,IAAI,CAAC;wBACH,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAmB,CAAC;oBACrE,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC9G,CAAC;oBACD,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,EAAE,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,8BAA8B,CAAC,CAAC;oBAC1I,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG;wBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;oBAC7E,MAAM,MAAM,GAAG,kBAAkB,CAAC;oBAClC,IAAI,YAAY,GAAG,CAAC,CAAC;oBACrB,MAAM,YAAY,GAAc,KAAK,EAAE,KAAK,EAAE,EAAE;wBAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;4BAClC,YAAY,EAAE,CAAC;4BACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,EAAE,CAAC,CAAC;wBACpE,CAAC;wBACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC1G,CAAC,CAAC;oBACF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;2BACtF,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;oBACzD,IAAI,YAAY,KAAK,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,YAAY,kBAAkB,CAAC,CAAC;oBAC9F,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC5B,IAAI,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC7C,IAAI,GAAG,8CAA8C,UAAU,sBAAsB,CAAC,CAAC,UAAU,SAAS,CAAC,CAAC,MAAM,iDAAiD,CAAC;oBACpK,OAAO,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBACpF,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;2BAC/E,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;oBACzD,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;2BAC9G,EAAE,GAAG,EAAE,0BAA0B,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;oBACrF,MAAM,KAAK,GAAG,kBAAkB,CAAC,eAAe,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,CAAC,CAAC;oBAChH,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;wBAAE,GAAG,CAAC,GAAG,CAAC,kBAAkB,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC;oBACtF,MAAM,MAAM,GAAmB;wBAC7B,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACvD,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;wBACxF,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI;wBACxB,KAAK;qBACN,CAAC;oBACF,IAAI,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC7C,IAAI,GAAG,EAAE,CAAC;wBAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;wBAAC,IAAI,GAAG,8BAA8B,GAAG,8CAA8C,GAAG,aAAa,GAAG,EAAE,CAAC;oBAAC,CAAC;;wBACzK,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBACnC,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAChD,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;gBAC7G,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACrB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC;gBACjC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,aAAa,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC;gBAC5E,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,kBAAkB,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC;gBAC5E,IAAI,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,eAAe,CAAC,CAAC,OAAO,gBAAgB,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;gBAC/G,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,MAAM,CAAC;YAAC,KAAK,QAAQ,CAAC;YAAC,KAAK,IAAI,CAAC;YAAC,KAAK,SAAS;gBACnD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO,CAAC,CAAC;YACX,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBACtF,IAAI,IAAI,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;gBACpC,GAAG,CAAC,GAAG,CAAC,oBAAoB,GAAG,QAAQ,IAAI,EAAE,CAAC,CAAC;gBAC/C,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zanii/cli",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "The Zanii command line: generate identities, sign delegations, record + verify proofs, and export audit bundles, no code required.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://ledger.zanii.agency",
@@ -29,23 +29,28 @@
29
29
  "node": ">=18"
30
30
  },
31
31
  "dependencies": {
32
- "@zanii/core": "^0.4.0",
33
- "@zanii/sdk": "^0.4.0",
34
- "@zanii/custody-verdicts": "^0.2.0",
35
- "@zanii/subprocessor": "^0.2.0",
36
- "@zanii/subject": "^0.1.1",
37
- "@zanii/minimization": "^0.1.1",
38
- "@zanii/residency": "^0.2.0",
39
- "@zanii/train": "^0.2.0"
40
- },
41
- "devDependencies": {
42
32
  "@noble/curves": "^1.8.1",
43
33
  "@noble/hashes": "^1.7.1",
34
+ "@zanii/core": "^0.5.4",
35
+ "@zanii/custody-verdicts": "^0.2.1",
36
+ "@zanii/sdk": "^0.5.3",
37
+ "@zanii/subject": "^0.1.2",
38
+ "@zanii/train": "^0.2.1",
39
+ "@zanii/minimization": "^0.1.2",
40
+ "@zanii/compliance": "^0.2.3",
41
+ "@zanii/residency": "^0.2.1",
42
+ "@zanii/subprocessor": "^0.2.1",
43
+ "@zanii/conformance": "^0.2.0",
44
+ "@zanii/kms": "^0.1.0",
45
+ "@zanii/policy": "^0.1.2",
46
+ "@zanii/succession": "^0.1.1"
47
+ },
48
+ "devDependencies": {
44
49
  "@types/node": "^26.1.0",
45
50
  "@zanii/data-custody": "^0.1.0",
46
51
  "typescript": "^5.8.2",
47
52
  "vitest": "^3.0.9",
48
- "@zanii/testing": "0.1.1"
53
+ "@zanii/testing": "0.1.2"
49
54
  },
50
55
  "scripts": {
51
56
  "build": "tsc -p tsconfig.build.json",
@@ -0,0 +1,211 @@
1
+ /**
2
+ * The newer CLI commands: init, doctor, tail, diff, conform, policy test, rotate, report and
3
+ * offline-verify. Each returns an exit code, or undefined when the command is not one of these.
4
+ */
5
+ import { createHash } from 'node:crypto';
6
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
7
+ import { join } from 'node:path';
8
+ import { fileURLToPath } from 'node:url';
9
+ import { ed25519 } from '@noble/curves/ed25519';
10
+ import { bytesToHex, hexToBytes } from '@noble/hashes/utils';
11
+ import {
12
+ canonicalBytes, createCert, didFromPublicKey, generateKeypair, merkleRoot, payloadBytes, verifyAuditBundle, verifyCertSignature, verifyChain,
13
+ verifyConsistency, verifyInclusion, verifyReceipt, verifySTH, type AuditBundle, type DelegationCert, type Receipt, type SignedTreeHead,
14
+ } from '@zanii/core';
15
+ import { runConformance, type Implementation } from '@zanii/conformance';
16
+ import { buildComplianceReport, renderComplianceMarkdown } from '@zanii/compliance';
17
+ import { sealIdentity } from '@zanii/kms';
18
+ import { createPolicyEngine, type Policy } from '@zanii/policy';
19
+ import { assembleSuccession, buildSuccessionBody, signSuccession, verifySuccession } from '@zanii/succession';
20
+
21
+ type FetchLike = (input: string, init?: RequestInit) => Promise<Response>;
22
+ interface Ctx {
23
+ log: (s: string) => void;
24
+ fetchImpl: FetchLike;
25
+ server: string;
26
+ json: boolean;
27
+ out?: string;
28
+ }
29
+
30
+ const readJson = (p: string) => JSON.parse(readFileSync(p, 'utf8'));
31
+ const hex = (b: Uint8Array) => bytesToHex(b);
32
+
33
+ export const EXTENDED_HELP = `
34
+ zanii init [--dir .zanii] [--scopes '*'] [--exp 2027-01-01] owner + agent identities and a delegation (sealed if ZANII_PASSPHRASE is set)
35
+ zanii doctor --identity <id> [--delegation <cert>] check keys, delegation, server, clock
36
+ zanii tail <did> [--once] [--interval 5000] stream an agent's new receipts
37
+ zanii diff <bundleA> <bundleB> did the later export only append?
38
+ zanii conform run the protocol conformance vectors against this build
39
+ zanii policy test <policy.json> <actions.json> what a policy would have allowed, denied or held
40
+ zanii rotate --owner <id> --from <id> [--reason rotation] new agent key with signed continuity
41
+ zanii report <bundle.json> compliance report (Markdown)
42
+ zanii offline-verify <bundle.json> verify with no network; prints this verifier's hash`;
43
+
44
+ export async function runExtended(cmd: string | undefined, positional: string[], flags: Record<string, string | boolean>, ctx: Ctx): Promise<number | undefined> {
45
+ const emit = (obj: unknown, human: string) => ctx.log(ctx.json ? JSON.stringify(obj, null, 2) : human);
46
+ switch (cmd) {
47
+ case 'init': {
48
+ const dir = String(flags.dir ?? '.zanii');
49
+ if (existsSync(join(dir, 'agent.json')) || existsSync(join(dir, 'agent.sealed.json'))) {
50
+ ctx.log(`error: ${dir} already holds an agent identity; refusing to overwrite`);
51
+ return 1;
52
+ }
53
+ mkdirSync(dir, { recursive: true });
54
+ const owner = generateKeypair();
55
+ const agent = generateKeypair();
56
+ const scopes = String(flags.scopes ?? '*').split(',').map((s) => s.trim()).filter(Boolean);
57
+ const cert = createCert({ issuer: owner.did, subject: agent.did, scopes, exp: String(flags.exp ?? new Date(Date.now() + 365 * 86_400_000).toISOString()) }, owner.privateKey);
58
+ writeFileSync(join(dir, 'owner.json'), JSON.stringify({ did: owner.did, privateKey: hex(owner.privateKey) }, null, 2), { mode: 0o600 });
59
+ const pass = process.env.ZANII_PASSPHRASE;
60
+ if (pass) writeFileSync(join(dir, 'agent.sealed.json'), JSON.stringify(sealIdentity({ did: agent.did, privateKey: agent.privateKey }, pass), null, 2), { mode: 0o600 });
61
+ else writeFileSync(join(dir, 'agent.json'), JSON.stringify({ did: agent.did, privateKey: hex(agent.privateKey) }, null, 2), { mode: 0o600 });
62
+ writeFileSync(join(dir, 'delegation.json'), JSON.stringify(cert, null, 2));
63
+ emit({ owner: owner.did, agent: agent.did, dir, sealed: !!pass }, [
64
+ `owner ${owner.did}`,
65
+ `agent ${agent.did}${pass ? ' (sealed with ZANII_PASSPHRASE)' : ' (plaintext: set ZANII_PASSPHRASE to seal it)'}`,
66
+ `files ${dir}/owner.json, ${dir}/${pass ? 'agent.sealed.json' : 'agent.json'}, ${dir}/delegation.json`,
67
+ 'next move owner.json off this machine; add `zanii doctor --identity ... --delegation ...` to CI',
68
+ ].join('\n'));
69
+ return 0;
70
+ }
71
+ case 'doctor': {
72
+ const checks: Array<{ check: string; ok: boolean; detail: string }> = [];
73
+ let did: string | undefined;
74
+ try {
75
+ const id = readJson(String(flags.identity));
76
+ did = id.did;
77
+ const derived = id.privateKey ? didFromPublicKey(ed25519.getPublicKey(hexToBytes(id.privateKey))) : id.did;
78
+ checks.push({ check: 'identity', ok: derived === id.did, detail: id.privateKey ? 'plaintext key on disk: consider kms sealing or signerd' : 'sealed or public identity' });
79
+ } catch (e) {
80
+ checks.push({ check: 'identity', ok: false, detail: `cannot read --identity: ${(e as Error).message}` });
81
+ }
82
+ if (typeof flags.delegation === 'string' && did) {
83
+ try {
84
+ const raw = readJson(flags.delegation);
85
+ const chain = (Array.isArray(raw) ? raw : [raw]) as DelegationCert[];
86
+ const r = verifyChain(chain, { agentId: did, at: new Date() });
87
+ checks.push({ check: 'delegation', ok: r.ok, detail: r.ok ? `scopes ${r.effectiveScopes?.join(', ')}; expires ${chain.at(-1)?.exp}` : r.error ?? 'invalid' });
88
+ } catch (e) {
89
+ checks.push({ check: 'delegation', ok: false, detail: (e as Error).message });
90
+ }
91
+ }
92
+ try {
93
+ const res = await ctx.fetchImpl(`${ctx.server}/v1/sth`);
94
+ const sth = (await res.json()) as SignedTreeHead;
95
+ const skew = Math.abs(Date.now() - Date.parse(sth.ts));
96
+ checks.push({ check: 'server', ok: res.ok && verifySTH(sth), detail: `${ctx.server}: tree size ${sth.size}, signed tree head ${verifySTH(sth) ? 'valid' : 'INVALID'}` });
97
+ checks.push({ check: 'clock', ok: skew < 15 * 60_000, detail: `latest tree head is ${Math.round(skew / 1000)} s old` });
98
+ } catch (e) {
99
+ checks.push({ check: 'server', ok: false, detail: `${ctx.server} unreachable: ${(e as Error).message}` });
100
+ }
101
+ emit(checks, checks.map((c) => `${c.ok ? '✓' : '✘'} ${c.check.padEnd(10)} ${c.detail}`).join('\n'));
102
+ return checks.every((c) => c.ok) ? 0 : 1;
103
+ }
104
+ case 'tail': {
105
+ const did = positional[0];
106
+ if (!did) return usage(ctx, 'tail <did>');
107
+ const seen = new Set<string>();
108
+ const poll = async () => {
109
+ const res = await ctx.fetchImpl(`${ctx.server}/v1/recent?limit=100`);
110
+ const { receipts } = (await res.json()) as { receipts: Array<{ receipt: Receipt & { body?: any }; hash?: string }> };
111
+ for (const r of [...receipts].reverse()) {
112
+ const mine = r.receipt.agent_id === did || r.receipt.body?.participants?.includes?.(did);
113
+ const h = r.hash ?? JSON.stringify(r.receipt).slice(0, 64);
114
+ if (!mine || seen.has(h)) continue;
115
+ seen.add(h);
116
+ ctx.log(`${verifyReceipt(r.receipt).ok ? '✓' : '·'} ${r.receipt.ts ?? r.receipt.body?.ts ?? ''} ${r.receipt.target ?? r.receipt.body?.target ?? (r.receipt as { type?: string }).type}`);
117
+ }
118
+ };
119
+ await poll();
120
+ if (flags.once) return 0;
121
+ const ms = Number(flags.interval ?? 5000);
122
+ for (;;) {
123
+ await new Promise((r) => setTimeout(r, ms));
124
+ await poll().catch((e) => ctx.log(`(poll failed: ${(e as Error).message})`));
125
+ }
126
+ }
127
+ case 'diff': {
128
+ if (positional.length < 2) return usage(ctx, 'diff <bundleA> <bundleB>');
129
+ const a = readJson(positional[0]!) as AuditBundle;
130
+ const b = readJson(positional[1]!) as AuditBundle;
131
+ const inB = new Set(b.receipts.map((r) => r.hash));
132
+ const removed = a.receipts.filter((r) => !inB.has(r.hash)).map((r) => r.hash);
133
+ const reordered = !removed.length && a.receipts.some((r, i) => b.receipts[i]?.hash !== r.hash);
134
+ const result = { appendOnly: !removed.length && !reordered, added: b.receipts.length - (a.receipts.length - removed.length), removed, reordered };
135
+ emit(result, result.appendOnly ? `✓ append-only: ${result.added} new receipt(s)` : `✘ NOT append-only: ${removed.length} removed${reordered ? ', reordered' : ''}`);
136
+ return result.appendOnly ? 0 : 1;
137
+ }
138
+ case 'conform': {
139
+ const report = runConformance(coreImplementation);
140
+ emit(report, report.failures.length ? `✘ ${report.failures.length} of ${report.total} vectors failed` : `✓ all ${report.total} conformance vectors pass`);
141
+ return report.failures.length ? 1 : 0;
142
+ }
143
+ case 'policy': {
144
+ if (positional[0] !== 'test' || positional.length < 3) return usage(ctx, 'policy test <policy.json> <actions.json>');
145
+ const engine = createPolicyEngine(readJson(positional[1]!) as Policy);
146
+ const actions = readJson(positional[2]!) as Array<{ target: string; payload?: Record<string, unknown>; risk?: any; key?: string; now?: number }>;
147
+ const results = actions.map((a) => ({ target: a.target, ...engine.evaluate(a) }));
148
+ const count = (d: string) => results.filter((r) => r.decision === d).length;
149
+ emit(results, `${count('allow')} allowed · ${count('deny')} denied · ${count('require_approval')} held for approval\n` +
150
+ results.filter((r) => r.decision !== 'allow').map((r) => ` ${r.decision.padEnd(16)} ${r.target} (${r.rule ?? 'default'}: ${r.reason})`).join('\n'));
151
+ return 0;
152
+ }
153
+ case 'rotate': {
154
+ if (typeof flags.owner !== 'string' || typeof flags.from !== 'string') return usage(ctx, 'rotate --owner <id> --from <id>');
155
+ const owner = readJson(flags.owner);
156
+ const prev = readJson(flags.from);
157
+ const reason = (flags.reason ?? 'rotation') as 'rotation' | 'compromise' | 'retirement';
158
+ const next = generateKeypair();
159
+ const body = buildSuccessionBody({ predecessor: prev.did, successor: next.did, owner: owner.did, reason, ts: new Date().toISOString(),
160
+ ...(reason === 'compromise' ? { compromisedAt: String(flags['compromised-at'] ?? new Date().toISOString()) } : {}) });
161
+ const sigs = [signSuccession(body, owner.did, hexToBytes(owner.privateKey))];
162
+ if (reason !== 'compromise' && prev.privateKey) sigs.push(signSuccession(body, prev.did, hexToBytes(prev.privateKey)));
163
+ const succession = assembleSuccession(body, sigs);
164
+ const check = verifySuccession(succession);
165
+ const outDir = ctx.out ?? '.';
166
+ writeFileSync(join(outDir, 'agent.next.json'), JSON.stringify({ did: next.did, privateKey: hex(next.privateKey) }, null, 2), { mode: 0o600 });
167
+ writeFileSync(join(outDir, 'succession.json'), JSON.stringify(succession, null, 2));
168
+ emit({ successor: next.did, check }, `${check.ok ? '✓' : '✘'} ${prev.did.slice(0, 24)}… → ${next.did.slice(0, 24)}… (${reason}${check.cosigned ? ', co-signed by the old key' : ''})\n wrote agent.next.json and succession.json; issue the new agent a delegation, then record the succession`);
169
+ return check.ok ? 0 : 1;
170
+ }
171
+ case 'report': {
172
+ if (!positional[0]) return usage(ctx, 'report <bundle.json>');
173
+ const md = renderComplianceMarkdown(buildComplianceReport(readJson(positional[0]) as AuditBundle));
174
+ if (ctx.out) writeFileSync(ctx.out, md);
175
+ ctx.log(ctx.out ? `report written to ${ctx.out}` : md);
176
+ return 0;
177
+ }
178
+ case 'offline-verify': {
179
+ if (!positional[0]) return usage(ctx, 'offline-verify <bundle.json>');
180
+ const report = verifyAuditBundle(readJson(positional[0]) as AuditBundle);
181
+ const self = createHash('sha256').update(readFileSync(fileURLToPath(import.meta.url))).digest('hex');
182
+ emit({ ok: report.ok, verifier: `sha256:${self}`, report }, `${report.ok ? '✓ PROVEN' : '✘ FAILED'} (${report.stats.receipts} receipts, no network used)\n verifier build sha256:${self}`);
183
+ return report.ok ? 0 : 1;
184
+ }
185
+ default:
186
+ return undefined;
187
+ }
188
+ }
189
+
190
+ function usage(ctx: Ctx, u: string): number {
191
+ ctx.log(`usage: zanii ${u}`);
192
+ return 2;
193
+ }
194
+
195
+ /** @zanii/core behind the conformance runner's interface. */
196
+ const coreImplementation: Implementation = {
197
+ canonicalBytes: (v) => canonicalBytes(v),
198
+ payloadBytes: (v) => payloadBytes(v),
199
+ didFromPrivateKey: (h) => didFromPublicKey(ed25519.getPublicKey(hexToBytes(h))),
200
+ verifyCertSignature: (c) => verifyCertSignature(c as DelegationCert),
201
+ verifyChain: (chain, agentId, at) => {
202
+ const r = verifyChain(chain as DelegationCert[], { agentId, at: new Date(at) });
203
+ return { ok: r.ok, effectiveScopes: r.effectiveScopes };
204
+ },
205
+ verifyReceipt: (r) => verifyReceipt(r as Receipt).ok,
206
+ merkleRoot: (leaves) => bytesToHex(merkleRoot(leaves.map(hexToBytes))),
207
+ verifyInclusion: (leaf, i, n, proof, root) => verifyInclusion(hexToBytes(leaf), i, n, proof.map(hexToBytes), hexToBytes(root)),
208
+ verifyConsistency: (m, n, a, b, proof) => verifyConsistency(m, n, hexToBytes(a), hexToBytes(b), proof.map(hexToBytes)),
209
+ verifySTH: (s) => verifySTH(s as SignedTreeHead),
210
+ verifyAuditBundle: (b) => verifyAuditBundle(b as AuditBundle).ok,
211
+ };
package/src/index.ts CHANGED
@@ -10,6 +10,7 @@ import { computeVerdicts, type ExtraEvidence, type TrainingEvidence, type Covera
10
10
  import { fetchAndVerifyProof } from '@zanii/sdk';
11
11
  import { fetchSubjectHistory, type SubjectHistory } from '@zanii/subject';
12
12
  import { proveAbsence, type TrainingManifest } from '@zanii/train';
13
+ import { EXTENDED_HELP, runExtended } from './commands.js';
13
14
 
14
15
  export type FetchLike = (input: string, init?: RequestInit) => Promise<Response>;
15
16
 
@@ -146,7 +147,7 @@ const HELP = `zanii: verifiable identity & proof-of-action for AI agents
146
147
  (8 custody verdict rows; pass --jurisdiction, --declared-subprocessors, --trusted-signers)
147
148
  zanii audit <tag> --bundle <file> offline audit of a bundle: zero network calls
148
149
  zanii stats [--server <url>] ledger counters
149
- zanii agent <did> [--server <url>] an agent's trust summary
150
+ zanii agent <did> [--server <url>] an agent's trust summary${EXTENDED_HELP}
150
151
 
151
152
  Global: --server (or ZANII_SERVER); default https://ledger.zanii.agency. --json for raw output.`;
152
153
 
@@ -294,9 +295,12 @@ export async function run(argv: string[], opts: { log?: (s: string) => void; fet
294
295
  case 'help': case '--help': case '-h': case undefined:
295
296
  ctx.log(HELP);
296
297
  return 0;
297
- default:
298
+ default: {
299
+ const code = await runExtended(cmd, positional, flags, { ...ctx, server, json, out });
300
+ if (code !== undefined) return code;
298
301
  ctx.log(`unknown command '${cmd}'\n\n${HELP}`);
299
302
  return 2;
303
+ }
300
304
  }
301
305
  } catch (e) {
302
306
  ctx.log(`error: ${String(e instanceof Error ? e.message : e)}`);