@agentguard-run/spend 0.15.6 → 0.15.8

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.
Files changed (69) hide show
  1. package/README.md +61 -1
  2. package/dist/anchor/index.d.ts +35 -0
  3. package/dist/anchor/index.d.ts.map +1 -0
  4. package/dist/anchor/index.js +80 -0
  5. package/dist/anchor/index.js.map +1 -0
  6. package/dist/anchor/opentimestamps.d.ts +55 -0
  7. package/dist/anchor/opentimestamps.d.ts.map +1 -0
  8. package/dist/anchor/opentimestamps.js +179 -0
  9. package/dist/anchor/opentimestamps.js.map +1 -0
  10. package/dist/anchor/store.d.ts +25 -0
  11. package/dist/anchor/store.d.ts.map +1 -0
  12. package/dist/anchor/store.js +112 -0
  13. package/dist/anchor/store.js.map +1 -0
  14. package/dist/anchor/types.d.ts +84 -0
  15. package/dist/anchor/types.d.ts.map +1 -0
  16. package/dist/anchor/types.js +28 -0
  17. package/dist/anchor/types.js.map +1 -0
  18. package/dist/cli/anchor.d.ts +10 -0
  19. package/dist/cli/anchor.d.ts.map +1 -0
  20. package/dist/cli/anchor.js +126 -0
  21. package/dist/cli/anchor.js.map +1 -0
  22. package/dist/cli/colors.d.ts +1 -0
  23. package/dist/cli/colors.d.ts.map +1 -1
  24. package/dist/cli/colors.js +4 -0
  25. package/dist/cli/colors.js.map +1 -1
  26. package/dist/cli/main.d.ts.map +1 -1
  27. package/dist/cli/main.js +15 -0
  28. package/dist/cli/main.js.map +1 -1
  29. package/dist/cli/sample.d.ts +43 -0
  30. package/dist/cli/sample.d.ts.map +1 -0
  31. package/dist/cli/sample.js +154 -0
  32. package/dist/cli/sample.js.map +1 -0
  33. package/dist/cli/serve.d.ts +1 -1
  34. package/dist/cli/serve.d.ts.map +1 -1
  35. package/dist/cli/serve.js +80 -5
  36. package/dist/cli/serve.js.map +1 -1
  37. package/dist/cli/usage.d.ts +13 -0
  38. package/dist/cli/usage.d.ts.map +1 -0
  39. package/dist/cli/usage.js +122 -0
  40. package/dist/cli/usage.js.map +1 -0
  41. package/dist/cli/verify.d.ts.map +1 -1
  42. package/dist/cli/verify.js +57 -0
  43. package/dist/cli/verify.js.map +1 -1
  44. package/dist/dashboard/aggregate.d.ts +2 -0
  45. package/dist/dashboard/aggregate.d.ts.map +1 -1
  46. package/dist/dashboard/aggregate.js.map +1 -1
  47. package/dist/decision-log.d.ts +28 -0
  48. package/dist/decision-log.d.ts.map +1 -1
  49. package/dist/decision-log.js +34 -0
  50. package/dist/decision-log.js.map +1 -1
  51. package/dist/free-tier/usage.d.ts +104 -0
  52. package/dist/free-tier/usage.d.ts.map +1 -0
  53. package/dist/free-tier/usage.js +250 -0
  54. package/dist/free-tier/usage.js.map +1 -0
  55. package/dist/index.d.ts +6 -2
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +35 -4
  58. package/dist/index.js.map +1 -1
  59. package/dist/samples/flows.d.ts +28 -0
  60. package/dist/samples/flows.d.ts.map +1 -0
  61. package/dist/samples/flows.js +151 -0
  62. package/dist/samples/flows.js.map +1 -0
  63. package/dist/samples/verifier-html.d.ts +29 -0
  64. package/dist/samples/verifier-html.d.ts.map +1 -0
  65. package/dist/samples/verifier-html.js +188 -0
  66. package/dist/samples/verifier-html.js.map +1 -0
  67. package/package.json +1 -1
  68. package/src/bindings/bindings-enforce.test.ts +97 -0
  69. package/src/dashboard/aggregate.ts +8 -1
@@ -0,0 +1,84 @@
1
+ /**
2
+ * AgentGuard(TM) Spend: External timestamp anchoring.
3
+ *
4
+ * The signed decision log proves *internal* order and integrity: each entry
5
+ * binds the previous entry's hash and is Ed25519-signed. But those signatures
6
+ * are produced inside the operator's own environment, so on their own they
7
+ * cannot prove the chain was not re-generated (backdated / reordered) later.
8
+ *
9
+ * A `TimestampAnchor` closes that gap by binding the chain head's SHA-256 to an
10
+ * EXTERNAL clock: a public timestamp calendar (e.g. OpenTimestamps -> Bitcoin).
11
+ * After anchoring, "this hash existed no later than <time>" is provable to a
12
+ * third party who trusts the external calendar, not the operator.
13
+ *
14
+ * ZERO DATA PLANE: an anchor submits ONLY the 32-byte SHA-256 digest of the
15
+ * chain head (or a Merkle root over the ndjson chain). A hash reveals nothing
16
+ * about prompts, completions, keys, amounts, or model identity. No decision
17
+ * content, no policy, no scope, and no key material ever leaves the process.
18
+ *
19
+ * This is a design point of Patent D (external timestamp anchoring of the
20
+ * signed receipt chain).
21
+ *
22
+ * Patent notice: Protected by U.S. patent-pending technology
23
+ * (App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626;
24
+ * 64/071,781; 64/071,789).
25
+ */
26
+ /** Anchor lifecycle. `pending` = submitted to a calendar but the external
27
+ * (e.g. Bitcoin) attestation is not yet confirmed/upgraded. `complete` = an
28
+ * external attested time is available. `invalid` = the proof does not bind the
29
+ * supplied head hash, or is malformed. */
30
+ export type AnchorStatus = 'pending' | 'complete' | 'invalid';
31
+ /**
32
+ * A stored anchor proof. Opaque `proof` bytes (base64) are the calendar's
33
+ * response — the shape is anchor-implementation-specific (for OpenTimestamps it
34
+ * is the serialized .ots timestamp). Everything here is metadata about a HASH;
35
+ * it carries no decision content.
36
+ */
37
+ export interface AnchorProof {
38
+ version: 1;
39
+ /** Anchor implementation that produced this proof, e.g. "opentimestamps". */
40
+ anchorType: string;
41
+ /** The lowercase-hex SHA-256 that was anchored (chain head or Merkle root). */
42
+ headHashHex: string;
43
+ /** ISO 8601 time the digest was submitted (operator-local; NOT the attested time). */
44
+ submittedAt: string;
45
+ /** Base64 of the opaque proof bytes returned by the calendar. Empty when stubbed. */
46
+ proof: string;
47
+ status: AnchorStatus;
48
+ /** Calendar endpoints the digest was submitted to. */
49
+ calendars?: string[];
50
+ /**
51
+ * Attested time, once known. Only set by a REAL upgrade of the proof against
52
+ * the external clock (never fabricated). `null` while pending.
53
+ */
54
+ attestedAt?: string | null;
55
+ /** Free-text note, e.g. that the OTS wire protocol is stubbed pending the dep. */
56
+ note?: string;
57
+ }
58
+ export interface AnchorVerification {
59
+ /** True iff the proof binds `headHashHex` AND a calendar receipt/attestation is present. */
60
+ ok: boolean;
61
+ status: AnchorStatus;
62
+ /**
63
+ * The externally attested time when `status === 'complete'`, otherwise the
64
+ * submission time for a pending proof, otherwise null. Callers should treat a
65
+ * non-null `when` as authoritative ONLY when `status === 'complete'`.
66
+ */
67
+ when: string | null;
68
+ /** Whether `when` is backed by the external clock (true) or just submission (false). */
69
+ attested: boolean;
70
+ detail?: string;
71
+ }
72
+ /**
73
+ * Pluggable external timestamp anchor.
74
+ *
75
+ * `anchor(headHashHex)` submits the digest and returns a storable proof.
76
+ * `verify(headHashHex, proof)` re-checks that the proof binds the head hash and
77
+ * reports the attested time (or pending status).
78
+ */
79
+ export interface TimestampAnchor {
80
+ readonly type: string;
81
+ anchor(headHashHex: string): Promise<AnchorProof>;
82
+ verify(headHashHex: string, proof: AnchorProof): Promise<AnchorVerification>;
83
+ }
84
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/anchor/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;2CAG2C;AAC3C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,WAAW,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,4FAA4F;IAC5F,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,wFAAwF;IACxF,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC9E"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * AgentGuard(TM) Spend: External timestamp anchoring.
4
+ *
5
+ * The signed decision log proves *internal* order and integrity: each entry
6
+ * binds the previous entry's hash and is Ed25519-signed. But those signatures
7
+ * are produced inside the operator's own environment, so on their own they
8
+ * cannot prove the chain was not re-generated (backdated / reordered) later.
9
+ *
10
+ * A `TimestampAnchor` closes that gap by binding the chain head's SHA-256 to an
11
+ * EXTERNAL clock: a public timestamp calendar (e.g. OpenTimestamps -> Bitcoin).
12
+ * After anchoring, "this hash existed no later than <time>" is provable to a
13
+ * third party who trusts the external calendar, not the operator.
14
+ *
15
+ * ZERO DATA PLANE: an anchor submits ONLY the 32-byte SHA-256 digest of the
16
+ * chain head (or a Merkle root over the ndjson chain). A hash reveals nothing
17
+ * about prompts, completions, keys, amounts, or model identity. No decision
18
+ * content, no policy, no scope, and no key material ever leaves the process.
19
+ *
20
+ * This is a design point of Patent D (external timestamp anchoring of the
21
+ * signed receipt chain).
22
+ *
23
+ * Patent notice: Protected by U.S. patent-pending technology
24
+ * (App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626;
25
+ * 64/071,781; 64/071,789).
26
+ */
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/anchor/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `agentguard anchor`: externally timestamp the head of a tenant's signed
3
+ * decision chain via a public timestamp calendar (OpenTimestamps).
4
+ *
5
+ * Zero data plane: ONLY the 32-byte SHA-256 of the chain head is submitted.
6
+ * Opt-in: does nothing unless an anchor is selected via --type or
7
+ * AGENTGUARD_ANCHOR. OFF by default so existing users are unaffected.
8
+ */
9
+ export declare function runAnchor(argv: string[]): Promise<number>;
10
+ //# sourceMappingURL=anchor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../src/cli/anchor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4D/D"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ /**
3
+ * `agentguard anchor`: externally timestamp the head of a tenant's signed
4
+ * decision chain via a public timestamp calendar (OpenTimestamps).
5
+ *
6
+ * Zero data plane: ONLY the 32-byte SHA-256 of the chain head is submitted.
7
+ * Opt-in: does nothing unless an anchor is selected via --type or
8
+ * AGENTGUARD_ANCHOR. OFF by default so existing users are unaffected.
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.runAnchor = runAnchor;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const ndjson_store_1 = require("../adapters/ndjson-store");
48
+ const anchor_1 = require("../anchor");
49
+ const index_1 = require("../index");
50
+ const colors_1 = require("./colors");
51
+ async function runAnchor(argv) {
52
+ let tenant = 'demo';
53
+ let type;
54
+ for (let i = 0; i < argv.length; i++) {
55
+ const a = argv[i];
56
+ if (a === '--tenant')
57
+ tenant = argv[++i] ?? 'demo';
58
+ else if (a === '--type')
59
+ type = argv[++i];
60
+ else if (a === '--help' || a === '-h') {
61
+ console.log('agentguard anchor [--tenant demo] [--type opentimestamps]');
62
+ console.log('');
63
+ console.log('Submit ONLY the SHA-256 of the current chain head to a public timestamp');
64
+ console.log('calendar and store the proof at ~/.agentguard/<tenant>/anchor.json.');
65
+ console.log('Selects the anchor from --type or the AGENTGUARD_ANCHOR env var.');
66
+ return 0;
67
+ }
68
+ }
69
+ const anchor = type ? (0, anchor_1.createAnchor)(type) : (0, anchor_1.createAnchorFromEnv)();
70
+ if (!anchor) {
71
+ console.log((0, colors_1.redBold)('error: ') + 'no anchor selected.');
72
+ console.log((0, colors_1.dim)(' set --type opentimestamps or AGENTGUARD_ANCHOR=opentimestamps'));
73
+ return 2;
74
+ }
75
+ const store = new ndjson_store_1.NdjsonDecisionLogStore(tenant, { home: (0, colors_1.agentguardHome)() });
76
+ const entries = await readAll(store);
77
+ const digest = (0, anchor_1.chainHeadDigestHex)(entries);
78
+ console.log('');
79
+ console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
80
+ console.log('');
81
+ console.log(' ' + (0, colors_1.cyanBold)(`agentguard anchor --tenant ${tenant} --type ${anchor.type}`));
82
+ console.log('');
83
+ if (!digest) {
84
+ console.log(' ' + (0, colors_1.dim)(`no decisions found for tenant '${tenant}'. run 'agentguard demo' first.`));
85
+ console.log('');
86
+ return 2;
87
+ }
88
+ console.log(' ' + (0, colors_1.dim)('head digest ') + digest.slice(0, 32) + (0, colors_1.dim)('...'));
89
+ console.log(' ' + (0, colors_1.dim)('submitting ') + '32-byte SHA-256 only (zero data plane)');
90
+ try {
91
+ const proof = await anchor.anchor(digest);
92
+ (0, anchor_1.writeAnchorProof)(tenant, proof, (0, colors_1.agentguardHome)());
93
+ console.log('');
94
+ console.log(' ' + (0, colors_1.greenBold)('✓ submitted to ' + (proof.calendars?.length ?? 0) + ' calendar(s)'));
95
+ console.log(' ' + (0, colors_1.green)('✓ proof saved ') + path.join((0, colors_1.agentguardHome)(), tenant, 'anchor.json'));
96
+ if (proof.status === 'pending') {
97
+ console.log(' ' + (0, colors_1.amberBold)('⧗ status: pending') + (0, colors_1.dim)(' (Bitcoin attestation upgrade requires the opentimestamps dep)'));
98
+ }
99
+ console.log('');
100
+ return 0;
101
+ }
102
+ catch (err) {
103
+ console.log('');
104
+ console.log(' ' + (0, colors_1.redBold)('✗ anchoring failed: ') + (err instanceof Error ? err.message : String(err)));
105
+ console.log('');
106
+ return 1;
107
+ }
108
+ }
109
+ async function readAll(store) {
110
+ if (!fs.existsSync(store.filePath))
111
+ return [];
112
+ const out = [];
113
+ let from = 0;
114
+ // read in pages of 1000 until exhausted
115
+ for (;;) {
116
+ const page = await store.read(from, 1000);
117
+ if (page.length === 0)
118
+ break;
119
+ out.push(...page);
120
+ from = page[page.length - 1].sequence + 1;
121
+ if (page.length < 1000)
122
+ break;
123
+ }
124
+ return out;
125
+ }
126
+ //# sourceMappingURL=anchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor.js","sourceRoot":"","sources":["../../src/cli/anchor.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ export declare const dim: (text: string) => string;
18
18
  export declare function cyanBold(text: string): string;
19
19
  export declare function redBold(text: string): string;
20
20
  export declare function greenBold(text: string): string;
21
+ export declare function amberBold(text: string): string;
21
22
  export declare function agentguardHome(): string;
22
23
  export declare function currentPolicyPath(): string | null;
23
24
  export declare function currentPolicyId(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/cli/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,eAAO,MAAM,GAAG,SAJoB,MAAM,KAAK,MAIlB,CAAC;AAC9B,eAAO,MAAM,KAAK,SALkB,MAAM,KAAK,MAKhB,CAAC;AAChC,eAAO,MAAM,MAAM,SANiB,MAAM,KAAK,MAMf,CAAC;AACjC,eAAO,MAAM,IAAI,SAPmB,MAAM,KAAK,MAOjB,CAAC;AAC/B,eAAO,MAAM,SAAS,SARc,MAAM,KAAK,MAQZ,CAAC;AACpC,eAAO,MAAM,WAAW,SATY,MAAM,KAAK,MASV,CAAC;AACtC,eAAO,MAAM,UAAU,SAVa,MAAM,KAAK,MAUX,CAAC;AACrC,eAAO,MAAM,IAAI,SAXmB,MAAM,KAAK,MAWlB,CAAC;AAC9B,eAAO,MAAM,GAAG,SAZoB,MAAM,KAAK,MAYnB,CAAC;AAE7B,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAcjD;AAED,wBAAgB,eAAe,IAAI,MAAM,CASxC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAY9C;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/cli/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,eAAO,MAAM,GAAG,SAJoB,MAAM,KAAK,MAIlB,CAAC;AAC9B,eAAO,MAAM,KAAK,SALkB,MAAM,KAAK,MAKhB,CAAC;AAChC,eAAO,MAAM,MAAM,SANiB,MAAM,KAAK,MAMf,CAAC;AACjC,eAAO,MAAM,IAAI,SAPmB,MAAM,KAAK,MAOjB,CAAC;AAC/B,eAAO,MAAM,SAAS,SARc,MAAM,KAAK,MAQZ,CAAC;AACpC,eAAO,MAAM,WAAW,SATY,MAAM,KAAK,MASV,CAAC;AACtC,eAAO,MAAM,UAAU,SAVa,MAAM,KAAK,MAUX,CAAC;AACrC,eAAO,MAAM,IAAI,SAXmB,MAAM,KAAK,MAWlB,CAAC;AAC9B,eAAO,MAAM,GAAG,SAZoB,MAAM,KAAK,MAYnB,CAAC;AAE7B,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAcjD;AAED,wBAAgB,eAAe,IAAI,MAAM,CASxC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAY9C;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
@@ -45,6 +45,7 @@ exports.dim = exports.bold = exports.brightCyan = exports.brightGreen = exports.
45
45
  exports.cyanBold = cyanBold;
46
46
  exports.redBold = redBold;
47
47
  exports.greenBold = greenBold;
48
+ exports.amberBold = amberBold;
48
49
  exports.agentguardHome = agentguardHome;
49
50
  exports.currentPolicyPath = currentPolicyPath;
50
51
  exports.currentPolicyId = currentPolicyId;
@@ -87,6 +88,9 @@ function redBold(text) {
87
88
  function greenBold(text) {
88
89
  return colorEnabled() ? `\x1b[1;32m${text}\x1b[0m` : text;
89
90
  }
91
+ function amberBold(text) {
92
+ return colorEnabled() ? `\x1b[1;33m${text}\x1b[0m` : text;
93
+ }
90
94
  function agentguardHome() {
91
95
  return process.env.AGENTGUARD_HOME || path.join(os.homedir(), '.agentguard');
92
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/cli/colors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/cli/colors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwDH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAiGlF"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2DH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CA6GlF"}
package/dist/cli/main.js CHANGED
@@ -59,6 +59,8 @@ commands:
59
59
  config Configure local CLI preferences.
60
60
  tips Show AgentGuard usage tips.
61
61
  demo Run a deterministic simulation with a real cryptographic receipt.
62
+ sample Generate a signed sample receipt + self-verifying HTML for a named flow.
63
+ anchor Externally timestamp the chain head via a public calendar (opt-in).
62
64
  verify Verify a signed AgentGuard receipt.
63
65
  init Scaffold a project or BYO outcome template.
64
66
  run Run a BYO outcome plan from local YAML.
@@ -66,6 +68,7 @@ commands:
66
68
  doctor Check installation health and configuration.
67
69
  explain Decode a signed receipt with cap math + signature breakdown.
68
70
  serve Open a local dashboard at http://localhost:8787.
71
+ usage Show free-tier call-quota usage this month (local-only).
69
72
  telemetry Manage opt-in anonymous SDK activation metrics.
70
73
  hermes-kanban Govern Hermes Kanban tasks and emit signed DAG receipts.
71
74
  --version Show the installed SDK version.
@@ -142,6 +145,14 @@ async function main(argv = process.argv.slice(2)) {
142
145
  const { runDemo } = await Promise.resolve().then(() => __importStar(require('./demo')));
143
146
  return runDemo(rest);
144
147
  }
148
+ if (command === 'sample') {
149
+ const { runSample } = await Promise.resolve().then(() => __importStar(require('./sample')));
150
+ return runSample(rest);
151
+ }
152
+ if (command === 'anchor') {
153
+ const { runAnchor } = await Promise.resolve().then(() => __importStar(require('./anchor')));
154
+ return runAnchor(rest);
155
+ }
145
156
  if (command === 'verify') {
146
157
  const { runVerify } = await Promise.resolve().then(() => __importStar(require('./verify')));
147
158
  return runVerify(rest);
@@ -170,6 +181,10 @@ async function main(argv = process.argv.slice(2)) {
170
181
  const { runServe } = await Promise.resolve().then(() => __importStar(require('./serve')));
171
182
  return runServe(rest);
172
183
  }
184
+ if (command === 'usage') {
185
+ const { runUsage } = await Promise.resolve().then(() => __importStar(require('./usage')));
186
+ return runUsage(rest);
187
+ }
173
188
  if (command === 'telemetry') {
174
189
  const { runTelemetry } = await Promise.resolve().then(() => __importStar(require('./telemetry')));
175
190
  return runTelemetry(rest);
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDH,oBAiGC;AAvJD,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,oCAAoD;AACpD,qCAAkC;AAElC,MAAM,8BAA8B,GAAG,8JAA8J,CAAC;AAEtM,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CZ,CAAC;AAEK,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,6BAA6B,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,IAAA,eAAM,EAAC,gCAAwB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,cAAc,gCAAwB,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC;IAE7D,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,oBAAoB,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QACxD,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;QACjD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;QACjD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,SAAS,GAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,OAAO,GAAC,CAAC;QAC7C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,OAAO,GAAC,CAAC;QAC5C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;QACjD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,SAAS,GAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;QACrD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;QAChC,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,iBAAiB,GAAC,CAAC;QAC5D,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,OAAO,OAAO,CAAC,CAAC;IACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,6BAA6B;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,gCAAwB,EAAE,CAAC,CAAC;QAC7E,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO;QAChC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,IAAI,CACT,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5B,CAAC,GAAG,EAAE,EAAE;QACN,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * `agentguard sample --flow <x402-payment|refund|agent-purchase>`
3
+ *
4
+ * Generates a realistic, REAL-signed sample receipt for the named flow and
5
+ * writes a self-contained, self-verifying artifact:
6
+ * - receipt.json the signed entry + public key + flow context
7
+ * - verify.html a standalone page that re-checks the hash chain and (where
8
+ * the browser supports WebCrypto Ed25519) the signature, fully
9
+ * in-browser with NO network calls; otherwise it links to
10
+ * agentguard.run/verify with the receipt prefilled.
11
+ *
12
+ * Purpose: hand a prospect "exactly what your counterparty would get."
13
+ * Additive only — no existing behavior changes.
14
+ */
15
+ import { type SampleFlow } from '../samples/flows';
16
+ export declare function runSample(argv: string[]): Promise<number>;
17
+ export interface SampleArtifact {
18
+ receiptJson: {
19
+ kind: 'agentguard-sample-receipt';
20
+ flow: SampleFlow;
21
+ version: string;
22
+ entry: {
23
+ sequence: number;
24
+ decision: unknown;
25
+ previousHash: string;
26
+ entryHash: string;
27
+ signature: string;
28
+ signerFingerprint: string;
29
+ };
30
+ publicKeyHex: string;
31
+ context: Record<string, unknown>;
32
+ };
33
+ html: string;
34
+ }
35
+ /**
36
+ * Build the signed sample artifact for a flow. When `deterministic`, a fixed
37
+ * seed is used so the entry is byte-reproducible (handy for tests). Otherwise a
38
+ * fresh random keypair produces a genuinely unique signature per run.
39
+ */
40
+ export declare function generateSampleArtifact(flow: SampleFlow, options?: {
41
+ deterministic?: boolean;
42
+ }): Promise<SampleArtifact>;
43
+ //# sourceMappingURL=sample.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.d.ts","sourceRoot":"","sources":["../../src/cli/sample.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,EAAkD,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnG,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4C/D;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE;QACX,IAAI,EAAE,2BAA2B,CAAC;QAClC,IAAI,EAAE,UAAU,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE;YACL,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,OAAO,CAAC;YAClB,YAAY,EAAE,MAAM,CAAC;YACrB,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;YAClB,iBAAiB,EAAE,MAAM,CAAC;SAC3B,CAAC;QACF,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAAC,cAAc,CAAC,CA6CzB"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ /**
3
+ * `agentguard sample --flow <x402-payment|refund|agent-purchase>`
4
+ *
5
+ * Generates a realistic, REAL-signed sample receipt for the named flow and
6
+ * writes a self-contained, self-verifying artifact:
7
+ * - receipt.json the signed entry + public key + flow context
8
+ * - verify.html a standalone page that re-checks the hash chain and (where
9
+ * the browser supports WebCrypto Ed25519) the signature, fully
10
+ * in-browser with NO network calls; otherwise it links to
11
+ * agentguard.run/verify with the receipt prefilled.
12
+ *
13
+ * Purpose: hand a prospect "exactly what your counterparty would get."
14
+ * Additive only — no existing behavior changes.
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.runSample = runSample;
51
+ exports.generateSampleArtifact = generateSampleArtifact;
52
+ const fs = __importStar(require("fs"));
53
+ const path = __importStar(require("path"));
54
+ const ed = __importStar(require("@noble/ed25519"));
55
+ const decision_log_1 = require("../decision-log");
56
+ const flows_1 = require("../samples/flows");
57
+ const verifier_html_1 = require("../samples/verifier-html");
58
+ const index_1 = require("../index");
59
+ const colors_1 = require("./colors");
60
+ async function runSample(argv) {
61
+ let flow;
62
+ let outDir;
63
+ let deterministic = false;
64
+ for (let i = 0; i < argv.length; i++) {
65
+ const a = argv[i];
66
+ if (a === '--flow')
67
+ flow = argv[++i];
68
+ else if (a === '--out')
69
+ outDir = argv[++i];
70
+ else if (a === '--deterministic')
71
+ deterministic = true;
72
+ else if (a === '--help' || a === '-h') {
73
+ console.log('agentguard sample --flow <' + flows_1.SAMPLE_FLOWS.join('|') + '> [--out <dir>] [--deterministic]');
74
+ console.log('');
75
+ console.log('Generate a signed sample receipt + a self-verifying verify.html for a named flow.');
76
+ return 0;
77
+ }
78
+ }
79
+ if (!flow || !(0, flows_1.isSampleFlow)(flow)) {
80
+ console.log((0, colors_1.redBold)('error: ') + `--flow must be one of: ${flows_1.SAMPLE_FLOWS.join(', ')}`);
81
+ return 2;
82
+ }
83
+ const artifact = await generateSampleArtifact(flow, { deterministic });
84
+ const dir = path.resolve(outDir ?? `agentguard-sample-${flow}`);
85
+ fs.mkdirSync(dir, { recursive: true });
86
+ const jsonPath = path.join(dir, 'receipt.json');
87
+ const htmlPath = path.join(dir, 'verify.html');
88
+ fs.writeFileSync(jsonPath, JSON.stringify(artifact.receiptJson, null, 2) + '\n');
89
+ fs.writeFileSync(htmlPath, artifact.html);
90
+ console.log('');
91
+ console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
92
+ console.log('');
93
+ console.log(' ' + (0, colors_1.cyanBold)(`agentguard sample --flow ${flow}`) + (0, colors_1.dim)(' · [sample params · real signature]'));
94
+ console.log('');
95
+ console.log(' ' + (0, colors_1.dim)('receipt ') + jsonPath);
96
+ console.log(' ' + (0, colors_1.dim)('verifier ') + htmlPath);
97
+ console.log(' ' + (0, colors_1.dim)('signer ') + artifact.receiptJson.entry.signerFingerprint.slice(0, 16) + (0, colors_1.dim)('...'));
98
+ console.log(' ' + (0, colors_1.dim)('entryHash ') + artifact.receiptJson.entry.entryHash.slice(0, 16) + (0, colors_1.dim)('...'));
99
+ console.log('');
100
+ console.log(' ' + (0, colors_1.green)('→') + ' ' + (0, colors_1.dim)('open the verifier:') + ' ' + (0, colors_1.greenBold)(`open "${htmlPath}"`));
101
+ console.log(' ' + (0, colors_1.green)('→') + ' ' + (0, colors_1.dim)('or verify via CLI:') + ' ' + (0, colors_1.greenBold)(`agentguard verify --trace "${jsonPath}"`));
102
+ console.log('');
103
+ return 0;
104
+ }
105
+ /**
106
+ * Build the signed sample artifact for a flow. When `deterministic`, a fixed
107
+ * seed is used so the entry is byte-reproducible (handy for tests). Otherwise a
108
+ * fresh random keypair produces a genuinely unique signature per run.
109
+ */
110
+ async function generateSampleArtifact(flow, options = {}) {
111
+ const spec = (0, flows_1.buildSampleReceipt)(flow);
112
+ let seed;
113
+ if (options.deterministic) {
114
+ seed = new Uint8Array(32);
115
+ for (let i = 0; i < 32; i++)
116
+ seed[i] = (i * 7 + flow.length) % 256;
117
+ }
118
+ else {
119
+ seed = ed.utils.randomSecretKey();
120
+ }
121
+ const publicKey = await ed.getPublicKeyAsync(seed);
122
+ const signed = await (0, decision_log_1.signDecision)({
123
+ sequence: 0,
124
+ decision: spec.decision,
125
+ previousHash: decision_log_1.GENESIS_PREVIOUS_HASH,
126
+ privateKey: seed,
127
+ publicKey,
128
+ });
129
+ const publicKeyHex = Buffer.from(publicKey).toString('hex');
130
+ const receiptJson = {
131
+ kind: 'agentguard-sample-receipt',
132
+ flow,
133
+ version: index_1.AGENTGUARD_SPEND_VERSION,
134
+ entry: {
135
+ sequence: signed.sequence,
136
+ decision: signed.decision,
137
+ previousHash: signed.previousHash,
138
+ entryHash: signed.entryHash,
139
+ signature: signed.signature,
140
+ signerFingerprint: signed.signerFingerprint,
141
+ },
142
+ publicKeyHex,
143
+ context: spec.context,
144
+ };
145
+ const html = (0, verifier_html_1.buildSampleVerifierHtml)({
146
+ flow,
147
+ version: index_1.AGENTGUARD_SPEND_VERSION,
148
+ entry: receiptJson.entry,
149
+ publicKeyHex,
150
+ context: spec.context,
151
+ });
152
+ return { receiptJson, html };
153
+ }
154
+ //# sourceMappingURL=sample.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.js","sourceRoot":"","sources":["../../src/cli/sample.ts"],"names":[],"mappings":"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"}