@peac/cli 0.9.18

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 (54) hide show
  1. package/README.md +23 -0
  2. package/dist/cli.d.ts +7 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +87 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/bridge/index.d.ts +6 -0
  7. package/dist/commands/bridge/index.d.ts.map +1 -0
  8. package/dist/commands/bridge/index.js +20 -0
  9. package/dist/commands/bridge/index.js.map +1 -0
  10. package/dist/commands/bridge/install.d.ts +6 -0
  11. package/dist/commands/bridge/install.d.ts.map +1 -0
  12. package/dist/commands/bridge/install.js +27 -0
  13. package/dist/commands/bridge/install.js.map +1 -0
  14. package/dist/commands/bridge/start.d.ts +6 -0
  15. package/dist/commands/bridge/start.d.ts.map +1 -0
  16. package/dist/commands/bridge/start.js +123 -0
  17. package/dist/commands/bridge/start.js.map +1 -0
  18. package/dist/commands/bridge/status.d.ts +6 -0
  19. package/dist/commands/bridge/status.d.ts.map +1 -0
  20. package/dist/commands/bridge/status.js +192 -0
  21. package/dist/commands/bridge/status.js.map +1 -0
  22. package/dist/commands/bridge/stop.d.ts +6 -0
  23. package/dist/commands/bridge/stop.d.ts.map +1 -0
  24. package/dist/commands/bridge/stop.js +130 -0
  25. package/dist/commands/bridge/stop.js.map +1 -0
  26. package/dist/commands/discover.d.ts +9 -0
  27. package/dist/commands/discover.d.ts.map +1 -0
  28. package/dist/commands/discover.js +39 -0
  29. package/dist/commands/discover.js.map +1 -0
  30. package/dist/commands/hash.d.ts +10 -0
  31. package/dist/commands/hash.d.ts.map +1 -0
  32. package/dist/commands/hash.js +106 -0
  33. package/dist/commands/hash.js.map +1 -0
  34. package/dist/commands/policy.d.ts +13 -0
  35. package/dist/commands/policy.d.ts.map +1 -0
  36. package/dist/commands/policy.js +364 -0
  37. package/dist/commands/policy.js.map +1 -0
  38. package/dist/commands/verify.d.ts +13 -0
  39. package/dist/commands/verify.d.ts.map +1 -0
  40. package/dist/commands/verify.js +50 -0
  41. package/dist/commands/verify.js.map +1 -0
  42. package/dist/index.d.ts +7 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +213 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/types.d.ts +49 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +6 -0
  49. package/dist/types.js.map +1 -0
  50. package/dist/utils.d.ts +16 -0
  51. package/dist/utils.d.ts.map +1 -0
  52. package/dist/utils.js +101 -0
  53. package/dist/utils.js.map +1 -0
  54. package/package.json +48 -0
@@ -0,0 +1,364 @@
1
+ "use strict";
2
+ /**
3
+ * PEAC Policy CLI Commands
4
+ *
5
+ * Commands for managing policy files:
6
+ * - init: Create a new policy file
7
+ * - validate: Validate policy syntax and schema
8
+ * - explain: Debug rule matching
9
+ * - generate: Compile policy to deployment artifacts
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.policy = void 0;
46
+ const commander_1 = require("commander");
47
+ const fs = __importStar(require("fs"));
48
+ const path = __importStar(require("path"));
49
+ const policy_kit_1 = require("@peac/policy-kit");
50
+ const policy = new commander_1.Command('policy').description('Policy file operations');
51
+ exports.policy = policy;
52
+ /**
53
+ * peac policy init
54
+ *
55
+ * Create a new peac-policy.yaml file in the current directory.
56
+ */
57
+ policy
58
+ .command('init')
59
+ .description('Create a new PEAC policy file')
60
+ .option('-f, --format <format>', 'Output format (yaml or json)', 'yaml')
61
+ .option('-o, --output <file>', 'Output file path', 'peac-policy.yaml')
62
+ .option('--force', 'Overwrite existing file')
63
+ .action((options) => {
64
+ try {
65
+ const format = options.format?.toLowerCase() || 'yaml';
66
+ const outputPath = options.output || (format === 'json' ? 'peac-policy.json' : 'peac-policy.yaml');
67
+ // Check if file exists and --force not set
68
+ if (fs.existsSync(outputPath) && !options.force) {
69
+ console.error(`Error: File already exists: ${outputPath}`);
70
+ console.error('Use --force to overwrite.');
71
+ process.exit(1);
72
+ }
73
+ const example = (0, policy_kit_1.createExamplePolicy)();
74
+ const content = format === 'json' ? (0, policy_kit_1.serializePolicyJson)(example) : (0, policy_kit_1.serializePolicyYaml)(example);
75
+ fs.writeFileSync(outputPath, content, 'utf-8');
76
+ console.log(`Created policy file: ${outputPath}`);
77
+ console.log('');
78
+ console.log('Next steps:');
79
+ console.log(' 1. Edit the policy file to define your access rules');
80
+ console.log(' 2. Validate with: peac policy validate ' + outputPath);
81
+ console.log(' 3. Generate artifacts with: peac policy generate ' + outputPath);
82
+ process.exit(0);
83
+ }
84
+ catch (err) {
85
+ console.error('Error:', err instanceof Error ? err.message : String(err));
86
+ process.exit(1);
87
+ }
88
+ });
89
+ /**
90
+ * peac policy validate <file>
91
+ */
92
+ policy
93
+ .command('validate')
94
+ .description('Validate a PEAC policy file (YAML or JSON)')
95
+ .argument('<file>', 'Path to policy file')
96
+ .option('-v, --verbose', 'Show detailed validation output')
97
+ .action((file, options) => {
98
+ try {
99
+ console.log(`Validating policy file: ${file}\n`);
100
+ const policyDoc = (0, policy_kit_1.loadPolicy)(file);
101
+ console.log('Policy is valid!\n');
102
+ console.log('Policy Information:');
103
+ console.log(` Version: ${policyDoc.version}`);
104
+ if (policyDoc.name) {
105
+ console.log(` Name: ${policyDoc.name}`);
106
+ }
107
+ console.log(` Default: ${policyDoc.defaults.decision}`);
108
+ console.log(` Rules: ${policyDoc.rules.length}`);
109
+ if (options.verbose && policyDoc.rules.length > 0) {
110
+ console.log('\nRules:');
111
+ for (const rule of policyDoc.rules) {
112
+ console.log(` - ${rule.name}: ${rule.decision}`);
113
+ if (rule.subject) {
114
+ const parts = [];
115
+ if (rule.subject.type) {
116
+ const types = Array.isArray(rule.subject.type)
117
+ ? rule.subject.type.join('|')
118
+ : rule.subject.type;
119
+ parts.push(`type=${types}`);
120
+ }
121
+ if (rule.subject.labels) {
122
+ parts.push(`labels=[${rule.subject.labels.join(',')}]`);
123
+ }
124
+ if (rule.subject.id) {
125
+ parts.push(`id=${rule.subject.id}`);
126
+ }
127
+ if (parts.length > 0) {
128
+ console.log(` subject: ${parts.join(', ')}`);
129
+ }
130
+ }
131
+ if (rule.purpose) {
132
+ const purposes = Array.isArray(rule.purpose) ? rule.purpose.join('|') : rule.purpose;
133
+ console.log(` purpose: ${purposes}`);
134
+ }
135
+ if (rule.licensing_mode) {
136
+ const modes = Array.isArray(rule.licensing_mode)
137
+ ? rule.licensing_mode.join('|')
138
+ : rule.licensing_mode;
139
+ console.log(` licensing_mode: ${modes}`);
140
+ }
141
+ }
142
+ }
143
+ process.exit(0);
144
+ }
145
+ catch (err) {
146
+ if (err instanceof policy_kit_1.PolicyValidationError) {
147
+ console.error('Policy validation failed:\n');
148
+ for (const issue of err.issues) {
149
+ console.error(` - ${issue.path.join('.')}: ${issue.message}`);
150
+ }
151
+ process.exit(1);
152
+ }
153
+ else if (err instanceof policy_kit_1.PolicyLoadError) {
154
+ console.error(`Failed to load policy: ${err.message}`);
155
+ process.exit(1);
156
+ }
157
+ else {
158
+ console.error('Error:', err instanceof Error ? err.message : String(err));
159
+ process.exit(1);
160
+ }
161
+ }
162
+ });
163
+ /**
164
+ * peac policy generate <file>
165
+ *
166
+ * Generate deployment artifacts from a policy file:
167
+ * - peac.txt (PEAC discovery file)
168
+ * - robots.txt snippet
169
+ * - AIPREF header templates
170
+ * - ai-policy.md (human-readable summary)
171
+ */
172
+ policy
173
+ .command('generate')
174
+ .description('Generate deployment artifacts from a policy file')
175
+ .argument('<file>', 'Path to policy file')
176
+ .option('-o, --out <dir>', 'Output directory', 'dist')
177
+ .option('--well-known', 'Output peac.txt to .well-known/ subdirectory')
178
+ .option('--dry-run', 'Show what would be generated without writing files')
179
+ .option('--peac-version <version>', 'PEAC protocol version (default: 0.9)')
180
+ .option('--site-url <url>', 'Site URL for peac.txt')
181
+ .option('--contact <email>', 'Contact email for policy questions')
182
+ .option('--attribution <mode>', 'Attribution requirement (required, optional, none)')
183
+ .option('--receipts <mode>', 'Receipts requirement (required, optional, omit)')
184
+ .option('--rate-limit <limit>', 'Rate limit string (e.g., "100/hour", "unlimited")')
185
+ .option('--negotiate <url>', 'Negotiate endpoint URL')
186
+ .option('--no-comments', 'Omit comments from generated files')
187
+ .action((file, options) => {
188
+ try {
189
+ console.log(`Loading policy: ${file}\n`);
190
+ const policyDoc = (0, policy_kit_1.loadPolicy)(file);
191
+ const compileOptions = {
192
+ peacVersion: options.peacVersion,
193
+ siteUrl: options.siteUrl,
194
+ contact: options.contact,
195
+ attribution: options.attribution,
196
+ receipts: options.receipts,
197
+ rateLimit: options.rateLimit,
198
+ negotiateUrl: options.negotiate,
199
+ includeComments: options.comments !== false,
200
+ };
201
+ // Determine output paths
202
+ const outDir = options.out;
203
+ let peacTxtPath;
204
+ if (options.wellKnown) {
205
+ peacTxtPath = path.join(outDir, '.well-known', 'peac.txt');
206
+ }
207
+ else {
208
+ peacTxtPath = path.join(outDir, 'peac.txt');
209
+ }
210
+ const robotsPath = path.join(outDir, 'robots-ai-snippet.txt');
211
+ const aiprefPath = path.join(outDir, 'aipref-headers.json');
212
+ const mdPath = path.join(outDir, 'ai-policy.md');
213
+ // Generate content
214
+ const peacTxt = (0, policy_kit_1.compilePeacTxt)(policyDoc, compileOptions);
215
+ const robotsTxt = (0, policy_kit_1.compileRobotsSnippet)(policyDoc, compileOptions);
216
+ const aiprefTemplates = (0, policy_kit_1.compileAiprefTemplates)(policyDoc, compileOptions);
217
+ const markdown = (0, policy_kit_1.renderPolicyMarkdown)(policyDoc, compileOptions);
218
+ if (options.dryRun) {
219
+ // Dry run: show what would be generated
220
+ console.log('Dry run - files that would be generated:\n');
221
+ console.log(`--- ${peacTxtPath} ---`);
222
+ console.log(peacTxt);
223
+ console.log(`--- ${robotsPath} ---`);
224
+ console.log(robotsTxt);
225
+ console.log(`--- ${aiprefPath} ---`);
226
+ console.log(JSON.stringify(aiprefTemplates, null, 2));
227
+ console.log(`\n--- ${mdPath} ---`);
228
+ console.log(markdown);
229
+ process.exit(0);
230
+ }
231
+ // Create output directories
232
+ if (!fs.existsSync(outDir)) {
233
+ fs.mkdirSync(outDir, { recursive: true });
234
+ }
235
+ if (options.wellKnown) {
236
+ const wellKnownDir = path.join(outDir, '.well-known');
237
+ if (!fs.existsSync(wellKnownDir)) {
238
+ fs.mkdirSync(wellKnownDir, { recursive: true });
239
+ }
240
+ }
241
+ // Write files
242
+ fs.writeFileSync(peacTxtPath, peacTxt, 'utf-8');
243
+ console.log(`Generated: ${peacTxtPath}`);
244
+ fs.writeFileSync(robotsPath, robotsTxt, 'utf-8');
245
+ console.log(`Generated: ${robotsPath}`);
246
+ fs.writeFileSync(aiprefPath, JSON.stringify(aiprefTemplates, null, 2), 'utf-8');
247
+ console.log(`Generated: ${aiprefPath}`);
248
+ fs.writeFileSync(mdPath, markdown, 'utf-8');
249
+ console.log(`Generated: ${mdPath}`);
250
+ console.log('');
251
+ console.log('Deployment instructions:');
252
+ if (options.wellKnown) {
253
+ console.log(` 1. Deploy ${peacTxtPath} to serve at /.well-known/peac.txt`);
254
+ }
255
+ else {
256
+ console.log(` 1. Copy ${peacTxtPath} to /.well-known/peac.txt`);
257
+ }
258
+ console.log(` 2. Append ${robotsPath} to your robots.txt`);
259
+ console.log(` 3. Add headers from ${aiprefPath} to your server config`);
260
+ console.log(` 4. Publish ${mdPath} for human reference`);
261
+ process.exit(0);
262
+ }
263
+ catch (err) {
264
+ if (err instanceof policy_kit_1.PolicyLoadError) {
265
+ console.error(`Failed to load policy: ${err.message}`);
266
+ process.exit(1);
267
+ }
268
+ else {
269
+ console.error('Error:', err instanceof Error ? err.message : String(err));
270
+ process.exit(1);
271
+ }
272
+ }
273
+ });
274
+ /**
275
+ * peac policy explain <file>
276
+ *
277
+ * Debug tool: explain which rule would apply for a given context.
278
+ */
279
+ policy
280
+ .command('explain')
281
+ .description('Explain which rule would apply for a given context')
282
+ .argument('<file>', 'Path to policy file')
283
+ .option('-t, --type <type>', 'Subject type (human, org, agent)')
284
+ .option('-l, --labels <labels>', 'Subject labels (comma-separated)')
285
+ .option('-i, --id <id>', 'Subject ID')
286
+ .option('-p, --purpose <purpose>', 'Access purpose (crawl, index, train, inference, ai_input, ai_index, search)')
287
+ .option('-m, --licensing-mode <mode>', 'Licensing mode (subscription, pay_per_crawl, pay_per_inference)')
288
+ .option('--all-matches', 'Show all matching rules, not just the first')
289
+ .action((file, options) => {
290
+ try {
291
+ const policyDoc = (0, policy_kit_1.loadPolicy)(file);
292
+ // Build evaluation context from options
293
+ const context = {};
294
+ if (options.type || options.labels || options.id) {
295
+ context.subject = {};
296
+ if (options.type) {
297
+ context.subject.type = options.type;
298
+ }
299
+ if (options.labels) {
300
+ context.subject.labels = options.labels.split(',').map((l) => l.trim());
301
+ }
302
+ if (options.id) {
303
+ context.subject.id = options.id;
304
+ }
305
+ }
306
+ if (options.purpose) {
307
+ context.purpose = options.purpose;
308
+ }
309
+ if (options.licensingMode) {
310
+ context.licensing_mode = options.licensingMode;
311
+ }
312
+ console.log('Evaluation Context:');
313
+ if (context.subject) {
314
+ console.log(` Subject: ${JSON.stringify(context.subject)}`);
315
+ }
316
+ else {
317
+ console.log(' Subject: (any)');
318
+ }
319
+ console.log(` Purpose: ${context.purpose || '(any)'}`);
320
+ console.log(` Licensing Mode: ${context.licensing_mode || '(any)'}`);
321
+ console.log();
322
+ if (options.allMatches) {
323
+ const matches = (0, policy_kit_1.explainMatches)(policyDoc, context);
324
+ console.log(`Matching Rules (${matches.length}):`);
325
+ for (const match of matches) {
326
+ if (match === '[default]') {
327
+ console.log(` - [default] -> ${policyDoc.defaults.decision}`);
328
+ }
329
+ else {
330
+ const rule = policyDoc.rules.find((r) => r.name === match);
331
+ if (rule) {
332
+ console.log(` - ${rule.name} -> ${rule.decision}`);
333
+ }
334
+ }
335
+ }
336
+ }
337
+ else {
338
+ const result = (0, policy_kit_1.evaluate)(policyDoc, context);
339
+ console.log('Result:');
340
+ console.log(` Decision: ${result.decision}`);
341
+ if (result.matched_rule) {
342
+ console.log(` Matched Rule: ${result.matched_rule}`);
343
+ }
344
+ else {
345
+ console.log(' Matched Rule: (default)');
346
+ }
347
+ if (result.reason) {
348
+ console.log(` Reason: ${result.reason}`);
349
+ }
350
+ }
351
+ process.exit(0);
352
+ }
353
+ catch (err) {
354
+ if (err instanceof policy_kit_1.PolicyLoadError) {
355
+ console.error(`Failed to load policy: ${err.message}`);
356
+ process.exit(1);
357
+ }
358
+ else {
359
+ console.error('Error:', err instanceof Error ? err.message : String(err));
360
+ process.exit(1);
361
+ }
362
+ }
363
+ });
364
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/commands/policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * peac verify <receipt.jws> --resource <url> command
3
+ * Receipt verification via API bridge
4
+ */
5
+ import type { CLIOptions, CommandResult } from '../types.js';
6
+ export interface VerifyOptions extends CLIOptions {
7
+ resource?: string;
8
+ keys?: string;
9
+ }
10
+ export declare class VerifyCommand {
11
+ execute(receiptPath: string, options?: VerifyOptions): Promise<CommandResult>;
12
+ }
13
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAC;AAG3E,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,aAAa;IAClB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;CAkDxF"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * peac verify <receipt.jws> --resource <url> command
4
+ * Receipt verification via API bridge
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.VerifyCommand = void 0;
8
+ const promises_1 = require("fs/promises");
9
+ const utils_js_1 = require("../utils.js");
10
+ class VerifyCommand {
11
+ async execute(receiptPath, options = {}) {
12
+ const timer = (0, utils_js_1.timing)();
13
+ try {
14
+ const receiptContent = await (0, promises_1.readFile)(receiptPath, 'utf-8');
15
+ const receiptJws = receiptContent.trim();
16
+ const base = process.env.PEAC_BRIDGE_URL?.trim() || 'http://127.0.0.1:3000';
17
+ const url = new URL('/verify', base).toString();
18
+ const res = await fetch(url, {
19
+ method: 'POST',
20
+ headers: { 'content-type': 'application/json' },
21
+ body: JSON.stringify({ receipt: receiptJws, resource: options.resource }),
22
+ });
23
+ const body = (await res.json().catch(() => ({})));
24
+ const ok = res.ok && body?.valid === true;
25
+ const result = {
26
+ valid: ok,
27
+ receipt: body?.claims ? { header: undefined, payload: body.claims } : undefined,
28
+ resource: options.resource,
29
+ policy_hash: body?.policyHash,
30
+ reconstructed: body?.reconstructed,
31
+ };
32
+ if (!ok) {
33
+ result.error = body?.detail || body?.title || 'Receipt verification failed';
34
+ }
35
+ return {
36
+ success: true,
37
+ data: result,
38
+ timing: timer.end(),
39
+ };
40
+ }
41
+ catch (error) {
42
+ return {
43
+ ...(0, utils_js_1.handleError)(error),
44
+ timing: timer.end(),
45
+ };
46
+ }
47
+ }
48
+ }
49
+ exports.VerifyCommand = VerifyCommand;
50
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,0CAAuC;AAEvC,0CAAkD;AAOlD,MAAa,aAAa;IACxB,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,UAAyB,EAAE;QAC5D,MAAM,KAAK,GAAG,IAAA,iBAAM,GAAE,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,IAAA,mBAAQ,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;YAEzC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,uBAAuB,CAAC;YAC5E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEhD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;aAC1E,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAO/C,CAAC;YACF,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;YAE1C,MAAM,MAAM,GAAiB;gBAC3B,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC/E,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,WAAW,EAAE,IAAI,EAAE,UAAU;gBAC7B,aAAa,EAAE,IAAI,EAAE,aAAa;aACnC,CAAC;YAEF,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,IAAI,6BAA6B,CAAC;YAC9E,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE;aACpB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,GAAG,IAAA,sBAAW,EAAC,KAAc,CAAC;gBAC9B,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE;aACpB,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAnDD,sCAmDC"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PEAC Protocol CLI
4
+ * Command-line tools for receipt verification and conformance testing
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG"}