@peac/cli 0.10.9 → 0.10.11

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 (60) hide show
  1. package/LICENSE +1 -1
  2. package/dist/index.cjs +2257 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.mjs +2236 -0
  5. package/dist/index.mjs.map +1 -0
  6. package/package.json +21 -16
  7. package/dist/cli.js +0 -90
  8. package/dist/cli.js.map +0 -1
  9. package/dist/commands/bridge/index.js +0 -20
  10. package/dist/commands/bridge/index.js.map +0 -1
  11. package/dist/commands/bridge/install.js +0 -27
  12. package/dist/commands/bridge/install.js.map +0 -1
  13. package/dist/commands/bridge/start.js +0 -123
  14. package/dist/commands/bridge/start.js.map +0 -1
  15. package/dist/commands/bridge/status.js +0 -192
  16. package/dist/commands/bridge/status.js.map +0 -1
  17. package/dist/commands/bridge/stop.js +0 -130
  18. package/dist/commands/bridge/stop.js.map +0 -1
  19. package/dist/commands/bundle.js +0 -363
  20. package/dist/commands/bundle.js.map +0 -1
  21. package/dist/commands/conformance.js +0 -301
  22. package/dist/commands/conformance.js.map +0 -1
  23. package/dist/commands/discover.js +0 -39
  24. package/dist/commands/discover.js.map +0 -1
  25. package/dist/commands/hash.js +0 -106
  26. package/dist/commands/hash.js.map +0 -1
  27. package/dist/commands/policy.js +0 -712
  28. package/dist/commands/policy.js.map +0 -1
  29. package/dist/commands/samples.js +0 -360
  30. package/dist/commands/samples.js.map +0 -1
  31. package/dist/commands/verify.js +0 -50
  32. package/dist/commands/verify.js.map +0 -1
  33. package/dist/commands/workflow.d.ts +0 -11
  34. package/dist/commands/workflow.d.ts.map +0 -1
  35. package/dist/commands/workflow.js +0 -214
  36. package/dist/commands/workflow.js.map +0 -1
  37. package/dist/index.js +0 -240
  38. package/dist/index.js.map +0 -1
  39. package/dist/lib/conformance/digest.js +0 -202
  40. package/dist/lib/conformance/digest.js.map +0 -1
  41. package/dist/lib/conformance/index.js +0 -30
  42. package/dist/lib/conformance/index.js.map +0 -1
  43. package/dist/lib/conformance/manifest.js +0 -66
  44. package/dist/lib/conformance/manifest.js.map +0 -1
  45. package/dist/lib/conformance/profiles.js +0 -138
  46. package/dist/lib/conformance/profiles.js.map +0 -1
  47. package/dist/lib/conformance/types.js +0 -8
  48. package/dist/lib/conformance/types.js.map +0 -1
  49. package/dist/lib/conformance/validators.js +0 -415
  50. package/dist/lib/conformance/validators.js.map +0 -1
  51. package/dist/lib/conformance-runner.js +0 -433
  52. package/dist/lib/conformance-runner.js.map +0 -1
  53. package/dist/lib/samples-loader.js +0 -311
  54. package/dist/lib/samples-loader.js.map +0 -1
  55. package/dist/lib/version.js +0 -61
  56. package/dist/lib/version.js.map +0 -1
  57. package/dist/types.js +0 -6
  58. package/dist/types.js.map +0 -1
  59. package/dist/utils.js +0 -101
  60. package/dist/utils.js.map +0 -1
@@ -1,214 +0,0 @@
1
- "use strict";
2
- /**
3
- * Workflow DAG verification CLI commands
4
- *
5
- * Commands:
6
- * - verify: Verify workflow DAG from receipts or workflow contexts
7
- *
8
- * @since v0.10.1
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.workflowCommand = void 0;
45
- const commander_1 = require("commander");
46
- const fs = __importStar(require("fs"));
47
- const audit_1 = require("@peac/audit");
48
- function getGlobalOptions(cmd) {
49
- const parent = cmd.parent?.parent ?? cmd.parent;
50
- return {
51
- json: parent?.opts?.()?.json,
52
- };
53
- }
54
- function output(data, options, text) {
55
- if (options.json) {
56
- console.log(JSON.stringify(data, null, 2));
57
- }
58
- else if (text) {
59
- console.log(text);
60
- }
61
- }
62
- function outputError(message, details, options) {
63
- if (options.json) {
64
- console.error(JSON.stringify({ error: message, ...details }, null, 2));
65
- }
66
- else {
67
- console.error(`Error: ${message}`);
68
- if (Object.keys(details).length > 0) {
69
- console.error(` Details: ${JSON.stringify(details)}`);
70
- }
71
- }
72
- }
73
- // -----------------------------------------------------------------------------
74
- // Workflow Command
75
- // -----------------------------------------------------------------------------
76
- const workflow = new commander_1.Command('workflow').description('Workflow DAG operations (v0.10.1+)');
77
- /**
78
- * peac workflow verify <file> [--format json|text]
79
- *
80
- * Verifies workflow DAG integrity from a JSON file containing WorkflowContext objects.
81
- */
82
- workflow
83
- .command('verify')
84
- .description('Verify workflow DAG from a JSON file of workflow contexts')
85
- .argument('<file>', 'Path to JSON file with WorkflowContext array')
86
- .option('-f, --format <format>', 'Output format: json or text', 'text')
87
- .action(async (filePath, options, cmd) => {
88
- const globalOpts = getGlobalOptions(cmd);
89
- try {
90
- // Validate file exists
91
- if (!fs.existsSync(filePath)) {
92
- outputError('File not found', { path: filePath }, globalOpts);
93
- process.exit(1);
94
- }
95
- // Read and parse file
96
- const content = fs.readFileSync(filePath, 'utf-8');
97
- let contexts;
98
- try {
99
- const parsed = JSON.parse(content);
100
- // Handle both array and object with 'contexts' field
101
- contexts = Array.isArray(parsed) ? parsed : parsed.contexts ?? [];
102
- }
103
- catch (parseErr) {
104
- outputError('Invalid JSON', { error: parseErr.message }, globalOpts);
105
- process.exit(1);
106
- }
107
- if (contexts.length === 0) {
108
- outputError('No workflow contexts found', { path: filePath }, globalOpts);
109
- process.exit(1);
110
- }
111
- // Verify DAG
112
- const result = (0, audit_1.verifyWorkflowDag)(contexts);
113
- // Format output
114
- if (options.format === 'json' || globalOpts.json) {
115
- console.log(JSON.stringify(result, null, 2));
116
- }
117
- else {
118
- // Text format
119
- if (result.valid) {
120
- console.log('Workflow DAG verification: VALID');
121
- console.log('');
122
- console.log('Statistics:');
123
- console.log(` Steps: ${result.stats.stepCount}`);
124
- console.log(` Root steps: ${result.stats.rootCount}`);
125
- console.log(` Max depth: ${result.stats.maxDepth}`);
126
- console.log(` Total edges: ${result.stats.totalEdges}`);
127
- console.log(` Unique workflow IDs: ${result.stats.uniqueWorkflowIds}`);
128
- }
129
- else {
130
- console.log('Workflow DAG verification: INVALID');
131
- console.log('');
132
- console.log(`Violations (${result.violations.length}):`);
133
- for (const v of result.violations) {
134
- console.log(` - [${v.code}] ${v.message}`);
135
- if (v.details.step_id) {
136
- console.log(` Step: ${v.details.step_id}`);
137
- }
138
- if (v.details.parent_step_id) {
139
- console.log(` Parent: ${v.details.parent_step_id}`);
140
- }
141
- if (v.details.cycle_path) {
142
- console.log(` Cycle: ${v.details.cycle_path.join(' -> ')}`);
143
- }
144
- }
145
- console.log('');
146
- console.log('Statistics:');
147
- console.log(` Steps: ${result.stats.stepCount}`);
148
- console.log(` Root steps: ${result.stats.rootCount}`);
149
- console.log(` Max depth: ${result.stats.maxDepth}`);
150
- console.log(` Total edges: ${result.stats.totalEdges}`);
151
- }
152
- }
153
- // Exit code based on validity
154
- process.exit(result.valid ? 0 : 1);
155
- }
156
- catch (err) {
157
- outputError(err.message, {}, globalOpts);
158
- process.exit(1);
159
- }
160
- });
161
- /**
162
- * peac workflow stats <file>
163
- *
164
- * Show statistics for a workflow DAG without full verification.
165
- */
166
- workflow
167
- .command('stats')
168
- .description('Show workflow DAG statistics')
169
- .argument('<file>', 'Path to JSON file with WorkflowContext array')
170
- .action(async (filePath, options, cmd) => {
171
- const globalOpts = getGlobalOptions(cmd);
172
- try {
173
- // Validate file exists
174
- if (!fs.existsSync(filePath)) {
175
- outputError('File not found', { path: filePath }, globalOpts);
176
- process.exit(1);
177
- }
178
- // Read and parse file
179
- const content = fs.readFileSync(filePath, 'utf-8');
180
- let contexts;
181
- try {
182
- const parsed = JSON.parse(content);
183
- contexts = Array.isArray(parsed) ? parsed : parsed.contexts ?? [];
184
- }
185
- catch (parseErr) {
186
- outputError('Invalid JSON', { error: parseErr.message }, globalOpts);
187
- process.exit(1);
188
- }
189
- if (contexts.length === 0) {
190
- outputError('No workflow contexts found', { path: filePath }, globalOpts);
191
- process.exit(1);
192
- }
193
- // Run verification to get stats
194
- const result = (0, audit_1.verifyWorkflowDag)(contexts);
195
- output({
196
- file: filePath,
197
- valid: result.valid,
198
- stats: result.stats,
199
- violation_count: result.violations.length,
200
- }, globalOpts, `Workflow: ${filePath}
201
- Steps: ${result.stats.stepCount}
202
- Root steps: ${result.stats.rootCount}
203
- Max depth: ${result.stats.maxDepth}
204
- Total edges: ${result.stats.totalEdges}
205
- Unique workflow IDs: ${result.stats.uniqueWorkflowIds}
206
- Valid: ${result.valid}${result.violations.length > 0 ? `\n Violations: ${result.violations.length}` : ''}`);
207
- }
208
- catch (err) {
209
- outputError(err.message, {}, globalOpts);
210
- process.exit(1);
211
- }
212
- });
213
- exports.workflowCommand = workflow;
214
- //# sourceMappingURL=workflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"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"}
package/dist/index.js DELETED
@@ -1,240 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- /**
4
- * PEAC Protocol CLI
5
- * Command-line tools for receipt verification and conformance testing
6
- */
7
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
- if (k2 === undefined) k2 = k;
9
- var desc = Object.getOwnPropertyDescriptor(m, k);
10
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
- desc = { enumerable: true, get: function() { return m[k]; } };
12
- }
13
- Object.defineProperty(o, k2, desc);
14
- }) : (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- o[k2] = m[k];
17
- }));
18
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
- Object.defineProperty(o, "default", { enumerable: true, value: v });
20
- }) : function(o, v) {
21
- o["default"] = v;
22
- });
23
- var __importStar = (this && this.__importStar) || (function () {
24
- var ownKeys = function(o) {
25
- ownKeys = Object.getOwnPropertyNames || function (o) {
26
- var ar = [];
27
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
- return ar;
29
- };
30
- return ownKeys(o);
31
- };
32
- return function (mod) {
33
- if (mod && mod.__esModule) return mod;
34
- var result = {};
35
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
- __setModuleDefault(result, mod);
37
- return result;
38
- };
39
- })();
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- const commander_1 = require("commander");
42
- const protocol_1 = require("@peac/protocol");
43
- const protocol_2 = require("@peac/protocol");
44
- const crypto_1 = require("@peac/crypto");
45
- const fs = __importStar(require("fs"));
46
- const policy_js_1 = require("./commands/policy.js");
47
- const conformance_js_1 = require("./commands/conformance.js");
48
- const samples_js_1 = require("./commands/samples.js");
49
- const version_js_1 = require("./lib/version.js");
50
- const program = new commander_1.Command();
51
- program
52
- .name('peac')
53
- .description('PEAC protocol command-line tools')
54
- .version((0, version_js_1.getVersion)())
55
- .exitOverride(); // Throws CommanderError instead of calling process.exit()
56
- /**
57
- * peac verify <jws>
58
- */
59
- program
60
- .command('verify')
61
- .description('Verify a PEAC receipt JWS')
62
- .argument('<jws>', 'JWS compact serialization or path to file containing JWS')
63
- .option('-v, --verbose', 'Show detailed output')
64
- .action(async (jwsInput, options) => {
65
- try {
66
- // Check if input is a file path
67
- let jws = jwsInput;
68
- if (fs.existsSync(jwsInput)) {
69
- jws = fs.readFileSync(jwsInput, 'utf-8').trim();
70
- }
71
- console.log('Verifying PEAC receipt...\n');
72
- // First, decode to show receipt info
73
- const { header, payload } = (0, crypto_1.decode)(jws);
74
- console.log('Receipt Information:');
75
- console.log(` Receipt ID: ${payload.rid}`);
76
- console.log(` Issuer: ${payload.iss}`);
77
- console.log(` Audience: ${payload.aud}`);
78
- console.log(` Amount: ${payload.amt} ${payload.cur}`);
79
- console.log(` Payment: ${payload.payment.rail} (${payload.payment.reference})`);
80
- console.log(` Issued: ${new Date(payload.iat * 1000).toISOString()}`);
81
- if (payload.exp) {
82
- console.log(` Expires: ${new Date(payload.exp * 1000).toISOString()}`);
83
- }
84
- console.log();
85
- // Verify signature
86
- console.log('Verifying signature...');
87
- const result = await (0, protocol_1.verifyReceipt)(jws);
88
- if (result.ok) {
89
- console.log('Signature valid!');
90
- if (result.perf) {
91
- console.log(` Verification time: ${result.perf.verify_ms.toFixed(2)}ms`);
92
- if (result.perf.jwks_fetch_ms) {
93
- console.log(` JWKS fetch time: ${result.perf.jwks_fetch_ms.toFixed(2)}ms`);
94
- }
95
- }
96
- process.exitCode = 0;
97
- }
98
- else {
99
- console.log(`Verification failed: ${result.reason}`);
100
- if (result.details) {
101
- console.log(` Details: ${result.details}`);
102
- }
103
- process.exitCode = 1;
104
- }
105
- }
106
- catch (err) {
107
- console.error('Error:', err instanceof Error ? err.message : String(err));
108
- process.exitCode = 1;
109
- }
110
- });
111
- /**
112
- * peac validate-issuer <path|url>
113
- *
114
- * Validates a PEAC issuer configuration (/.well-known/peac-issuer.json)
115
- */
116
- program
117
- .command('validate-issuer')
118
- .description('Validate a PEAC issuer configuration')
119
- .argument('<input>', 'Path to peac-issuer.json file or issuer URL')
120
- .action(async (input) => {
121
- try {
122
- console.log('Validating issuer configuration...\n');
123
- let config;
124
- if (input.startsWith('http://') || input.startsWith('https://')) {
125
- // Fetch from URL
126
- console.log(`Fetching from ${input}...`);
127
- config = await (0, protocol_2.fetchIssuerConfig)(input);
128
- }
129
- else {
130
- // Read from file
131
- const text = fs.readFileSync(input, 'utf-8');
132
- config = (0, protocol_2.parseIssuerConfig)(text);
133
- }
134
- console.log('Issuer configuration is valid!\n');
135
- console.log('Issuer Configuration:');
136
- console.log(` Version: ${config.version}`);
137
- console.log(` Issuer: ${config.issuer}`);
138
- console.log(` JWKS URI: ${config.jwks_uri}`);
139
- if (config.verify_endpoint) {
140
- console.log(` Verify: ${config.verify_endpoint}`);
141
- }
142
- if (config.receipt_versions && config.receipt_versions.length > 0) {
143
- console.log(` Receipts: ${config.receipt_versions.join(', ')}`);
144
- }
145
- if (config.algorithms && config.algorithms.length > 0) {
146
- console.log(` Algorithms: ${config.algorithms.join(', ')}`);
147
- }
148
- if (config.payment_rails && config.payment_rails.length > 0) {
149
- console.log(` Rails: ${config.payment_rails.join(', ')}`);
150
- }
151
- if (config.security_contact) {
152
- console.log(` Security: ${config.security_contact}`);
153
- }
154
- process.exitCode = 0;
155
- }
156
- catch (err) {
157
- console.error('Error:', err instanceof Error ? err.message : String(err));
158
- process.exitCode = 1;
159
- }
160
- });
161
- /**
162
- * peac decode <jws>
163
- */
164
- program
165
- .command('decode')
166
- .description('Decode a PEAC receipt JWS (without verification)')
167
- .argument('<jws>', 'JWS compact serialization or path to file containing JWS')
168
- .option('--json', 'Output as JSON')
169
- .action((jwsInput, options) => {
170
- try {
171
- // Check if input is a file path
172
- let jws = jwsInput;
173
- if (fs.existsSync(jwsInput)) {
174
- jws = fs.readFileSync(jwsInput, 'utf-8').trim();
175
- }
176
- const { header, payload } = (0, crypto_1.decode)(jws);
177
- if (options.json) {
178
- console.log(JSON.stringify({ header, payload }, null, 2));
179
- }
180
- else {
181
- console.log('PEAC Receipt (Decoded, Not Verified)\n');
182
- console.log('Header:');
183
- console.log(` typ: ${header.typ}`);
184
- console.log(` alg: ${header.alg}`);
185
- console.log(` kid: ${header.kid}`);
186
- console.log();
187
- console.log('Claims:');
188
- console.log(` iss: ${payload.iss}`);
189
- console.log(` aud: ${payload.aud}`);
190
- console.log(` iat: ${payload.iat} (${new Date(payload.iat * 1000).toISOString()})`);
191
- if (payload.exp) {
192
- console.log(` exp: ${payload.exp} (${new Date(payload.exp * 1000).toISOString()})`);
193
- }
194
- console.log(` rid: ${payload.rid}`);
195
- console.log(` amt: ${payload.amt}`);
196
- console.log(` cur: ${payload.cur}`);
197
- console.log();
198
- console.log('Payment:');
199
- console.log(` rail: ${payload.payment.rail}`);
200
- console.log(` reference: ${payload.payment.reference}`);
201
- console.log(` amount: ${payload.payment.amount}`);
202
- console.log(` currency: ${payload.payment.currency}`);
203
- if (payload.subject) {
204
- console.log();
205
- console.log('Subject:');
206
- console.log(` uri: ${payload.subject.uri}`);
207
- }
208
- if (payload.ext) {
209
- console.log();
210
- console.log('Extensions:');
211
- console.log(JSON.stringify(payload.ext, null, 2));
212
- }
213
- }
214
- process.exitCode = 0;
215
- }
216
- catch (err) {
217
- console.error('Error:', err instanceof Error ? err.message : String(err));
218
- process.exitCode = 1;
219
- }
220
- });
221
- // Policy commands (v0.9.17+)
222
- program.addCommand(policy_js_1.policy);
223
- // Conformance testing commands (v0.10.8+)
224
- program.addCommand(conformance_js_1.conformance);
225
- // Sample receipts commands (v0.10.8+)
226
- program.addCommand(samples_js_1.samples);
227
- // Parse and handle Commander errors (exitOverride causes CommanderError on --help, --version, etc.)
228
- try {
229
- program.parse();
230
- }
231
- catch (err) {
232
- if (err instanceof commander_1.CommanderError) {
233
- // CommanderError from --help, --version, or validation errors
234
- process.exitCode = err.exitCode;
235
- }
236
- else {
237
- throw err;
238
- }
239
- }
240
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}