@obolos_tech/cli 0.3.3 → 0.5.0

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 (72) hide show
  1. package/README.md +35 -1
  2. package/dist/commands/anp.d.ts +277 -0
  3. package/dist/commands/anp.js +440 -0
  4. package/dist/commands/anp.js.map +1 -0
  5. package/dist/commands/index.d.ts +3 -0
  6. package/dist/commands/index.js +34 -0
  7. package/dist/commands/index.js.map +1 -0
  8. package/dist/commands/jobs.d.ts +111 -0
  9. package/dist/commands/jobs.js +294 -0
  10. package/dist/commands/jobs.js.map +1 -0
  11. package/dist/commands/listings.d.ts +128 -0
  12. package/dist/commands/listings.js +246 -0
  13. package/dist/commands/listings.js.map +1 -0
  14. package/dist/commands/marketplace.d.ts +87 -0
  15. package/dist/commands/marketplace.js +133 -0
  16. package/dist/commands/marketplace.js.map +1 -0
  17. package/dist/commands/reputation.d.ts +27 -0
  18. package/dist/commands/reputation.js +114 -0
  19. package/dist/commands/reputation.js.map +1 -0
  20. package/dist/commands/setup.d.ts +78 -0
  21. package/dist/commands/setup.js +133 -0
  22. package/dist/commands/setup.js.map +1 -0
  23. package/dist/commands/wallet.d.ts +30 -0
  24. package/dist/commands/wallet.js +66 -0
  25. package/dist/commands/wallet.js.map +1 -0
  26. package/dist/index.d.ts +4 -24
  27. package/dist/index.js +61 -2516
  28. package/dist/index.js.map +1 -1
  29. package/dist/registry.d.ts +53 -0
  30. package/dist/registry.js +39 -0
  31. package/dist/registry.js.map +1 -0
  32. package/dist/runtime/acp.d.ts +162 -0
  33. package/dist/runtime/acp.js +132 -0
  34. package/dist/runtime/acp.js.map +1 -0
  35. package/dist/runtime/anp.d.ts +214 -0
  36. package/dist/runtime/anp.js +255 -0
  37. package/dist/runtime/anp.js.map +1 -0
  38. package/dist/runtime/argv.d.ts +18 -0
  39. package/dist/runtime/argv.js +114 -0
  40. package/dist/runtime/argv.js.map +1 -0
  41. package/dist/runtime/config.d.ts +14 -0
  42. package/dist/runtime/config.js +34 -0
  43. package/dist/runtime/config.js.map +1 -0
  44. package/dist/runtime/dispatch.d.ts +13 -0
  45. package/dist/runtime/dispatch.js +123 -0
  46. package/dist/runtime/dispatch.js.map +1 -0
  47. package/dist/runtime/display.d.ts +21 -0
  48. package/dist/runtime/display.js +68 -0
  49. package/dist/runtime/display.js.map +1 -0
  50. package/dist/runtime/errors.d.ts +19 -0
  51. package/dist/runtime/errors.js +23 -0
  52. package/dist/runtime/errors.js.map +1 -0
  53. package/dist/runtime/http.d.ts +9 -0
  54. package/dist/runtime/http.js +36 -0
  55. package/dist/runtime/http.js.map +1 -0
  56. package/dist/runtime/output.d.ts +19 -0
  57. package/dist/runtime/output.js +12 -0
  58. package/dist/runtime/output.js.map +1 -0
  59. package/dist/runtime/payment.d.ts +21 -0
  60. package/dist/runtime/payment.js +91 -0
  61. package/dist/runtime/payment.js.map +1 -0
  62. package/dist/runtime/wallet.d.ts +32 -0
  63. package/dist/runtime/wallet.js +44 -0
  64. package/dist/runtime/wallet.js.map +1 -0
  65. package/dist/schema/json-schema.d.ts +10 -0
  66. package/dist/schema/json-schema.js +34 -0
  67. package/dist/schema/json-schema.js.map +1 -0
  68. package/dist/schema/zod-shape.d.ts +9 -0
  69. package/dist/schema/zod-shape.js +36 -0
  70. package/dist/schema/zod-shape.js.map +1 -0
  71. package/package.json +46 -4
  72. package/scripts/lint-stdout-purity.mjs +62 -0
@@ -0,0 +1,132 @@
1
+ /**
2
+ * ACP (ERC-8183) on-chain operations: createJob, fund, submit, complete, reject.
3
+ * Callers provide a pre-fetched `chainJobId` (from the backend record) so this
4
+ * module stays stateless.
5
+ */
6
+ import { getClients, USDC_BASE } from './wallet.js';
7
+ export const ACP_ADDRESS = '0xaF3148696242F7Fb74893DC47690e37950807362';
8
+ export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
9
+ export const ZERO_BYTES32 = '0x0000000000000000000000000000000000000000000000000000000000000000';
10
+ export const ACP_ABI = [
11
+ { type: 'function', name: 'createJob', stateMutability: 'nonpayable',
12
+ inputs: [
13
+ { name: 'provider', type: 'address' }, { name: 'evaluator', type: 'address' },
14
+ { name: 'expiredAt', type: 'uint256' }, { name: 'description', type: 'string' },
15
+ { name: 'hook', type: 'address' },
16
+ ],
17
+ outputs: [{ name: 'jobId', type: 'uint256' }] },
18
+ { type: 'function', name: 'fund', stateMutability: 'nonpayable',
19
+ inputs: [
20
+ { name: 'jobId', type: 'uint256' }, { name: 'expectedBudget', type: 'uint256' },
21
+ { name: 'optParams', type: 'bytes' },
22
+ ], outputs: [] },
23
+ { type: 'function', name: 'submit', stateMutability: 'nonpayable',
24
+ inputs: [
25
+ { name: 'jobId', type: 'uint256' }, { name: 'deliverable', type: 'bytes32' },
26
+ { name: 'optParams', type: 'bytes' },
27
+ ], outputs: [] },
28
+ { type: 'function', name: 'complete', stateMutability: 'nonpayable',
29
+ inputs: [
30
+ { name: 'jobId', type: 'uint256' }, { name: 'reason', type: 'bytes32' },
31
+ { name: 'optParams', type: 'bytes' },
32
+ ], outputs: [] },
33
+ { type: 'function', name: 'reject', stateMutability: 'nonpayable',
34
+ inputs: [
35
+ { name: 'jobId', type: 'uint256' }, { name: 'reason', type: 'bytes32' },
36
+ { name: 'optParams', type: 'bytes' },
37
+ ], outputs: [] },
38
+ { type: 'event', name: 'JobCreated', inputs: [
39
+ { name: 'jobId', type: 'uint256', indexed: true },
40
+ { name: 'client', type: 'address', indexed: true },
41
+ { name: 'provider', type: 'address', indexed: false },
42
+ { name: 'evaluator', type: 'address', indexed: false },
43
+ { name: 'expiredAt', type: 'uint256', indexed: false },
44
+ ] },
45
+ ];
46
+ export const ERC20_ABI = [
47
+ { type: 'function', name: 'approve', stateMutability: 'nonpayable',
48
+ inputs: [{ name: 'spender', type: 'address' }, { name: 'amount', type: 'uint256' }],
49
+ outputs: [{ name: '', type: 'bool' }] },
50
+ { type: 'function', name: 'allowance', stateMutability: 'view',
51
+ inputs: [{ name: 'owner', type: 'address' }, { name: 'spender', type: 'address' }],
52
+ outputs: [{ name: '', type: 'uint256' }] },
53
+ ];
54
+ async function chain() { return (await import('viem/chains')).base; }
55
+ export async function createJobOnChain(config, params) {
56
+ const { decodeEventLog } = await import('viem');
57
+ const { account, publicClient, walletClient } = await getClients(config);
58
+ const txHash = await walletClient.writeContract({
59
+ address: ACP_ADDRESS, abi: ACP_ABI, functionName: 'createJob',
60
+ args: [
61
+ (params.provider || ZERO_ADDRESS),
62
+ params.evaluator,
63
+ BigInt(params.expiredAt),
64
+ params.description,
65
+ ZERO_ADDRESS,
66
+ ],
67
+ account, chain: await chain(),
68
+ });
69
+ const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
70
+ let chainJobId = null;
71
+ for (const log of receipt.logs) {
72
+ try {
73
+ const decoded = decodeEventLog({ abi: ACP_ABI, data: log.data, topics: log.topics });
74
+ if (decoded.eventName === 'JobCreated') {
75
+ chainJobId = (decoded.args.jobId).toString();
76
+ break;
77
+ }
78
+ }
79
+ catch { }
80
+ }
81
+ return { txHash, chainJobId };
82
+ }
83
+ export async function fundOnChain(config, chainJobId, budgetUsd) {
84
+ const { parseUnits } = await import('viem');
85
+ const { account, publicClient, walletClient } = await getClients(config);
86
+ const amount = parseUnits(budgetUsd, 6);
87
+ const allowance = (await publicClient.readContract({
88
+ address: USDC_BASE, abi: ERC20_ABI, functionName: 'allowance',
89
+ args: [account.address, ACP_ADDRESS],
90
+ }));
91
+ if (allowance < amount) {
92
+ const approveTx = await walletClient.writeContract({
93
+ address: USDC_BASE, abi: ERC20_ABI, functionName: 'approve',
94
+ args: [ACP_ADDRESS, amount], account, chain: await chain(),
95
+ });
96
+ await publicClient.waitForTransactionReceipt({ hash: approveTx });
97
+ }
98
+ const fundTx = await walletClient.writeContract({
99
+ address: ACP_ADDRESS, abi: ACP_ABI, functionName: 'fund',
100
+ args: [BigInt(chainJobId), amount, '0x'],
101
+ account, chain: await chain(),
102
+ });
103
+ await publicClient.waitForTransactionReceipt({ hash: fundTx });
104
+ return fundTx;
105
+ }
106
+ async function terminalTx(config, chainJobId, reason, fn) {
107
+ const { keccak256, toHex } = await import('viem');
108
+ const { account, publicClient, walletClient } = await getClients(config);
109
+ const reasonHash = reason ? keccak256(toHex(reason)) : ZERO_BYTES32;
110
+ const tx = await walletClient.writeContract({
111
+ address: ACP_ADDRESS, abi: ACP_ABI, functionName: fn,
112
+ args: [BigInt(chainJobId), reasonHash, '0x'],
113
+ account, chain: await chain(),
114
+ });
115
+ await publicClient.waitForTransactionReceipt({ hash: tx });
116
+ return tx;
117
+ }
118
+ export async function submitOnChain(config, chainJobId, deliverable) {
119
+ const { keccak256, toHex } = await import('viem');
120
+ const { account, publicClient, walletClient } = await getClients(config);
121
+ const deliverableHash = keccak256(toHex(deliverable));
122
+ const tx = await walletClient.writeContract({
123
+ address: ACP_ADDRESS, abi: ACP_ABI, functionName: 'submit',
124
+ args: [BigInt(chainJobId), deliverableHash, '0x'],
125
+ account, chain: await chain(),
126
+ });
127
+ await publicClient.waitForTransactionReceipt({ hash: tx });
128
+ return tx;
129
+ }
130
+ export const completeOnChain = (c, id, reason) => terminalTx(c, id, reason, 'complete');
131
+ export const rejectOnChain = (c, id, reason) => terminalTx(c, id, reason, 'reject');
132
+ //# sourceMappingURL=acp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/runtime/acp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * ANP (Agent Negotiation Protocol) runtime: EIP-712 signing helpers for
3
+ * listings, bids, and acceptances. Delegates hashing to @obolos_tech/anp-sdk.
4
+ *
5
+ * Advanced primitives (messages, amendments, checkpoints) stay in the
6
+ * legacy switch for now — port them here as they're ported to the registry.
7
+ */
8
+ import type { ObolosConfig } from './config.js';
9
+ import { computeContentHash as sdkContentHash, hashListingIntent, hashBidIntent, hashAmendmentIntent, hashCheckpointIntent } from '@obolos_tech/anp-sdk';
10
+ export declare const ZERO_ADDRESS: "0x0000000000000000000000000000000000000000";
11
+ export declare const ANP_DOMAIN: {
12
+ name: "ANP";
13
+ version: "1";
14
+ chainId: number;
15
+ verifyingContract: `0x${string}`;
16
+ };
17
+ export declare function generateNonce(): bigint;
18
+ export declare const computeContentHash: typeof sdkContentHash;
19
+ export declare const hashListingStruct: typeof hashListingIntent;
20
+ export declare const hashBidStruct: typeof hashBidIntent;
21
+ export declare const hashAmendmentStruct: typeof hashAmendmentIntent;
22
+ export declare const hashCheckpointStruct: typeof hashCheckpointIntent;
23
+ export declare function computeJobHash(jobId: string): Promise<`0x${string}`>;
24
+ export declare const ROLE_CLIENT: 0;
25
+ export declare const ROLE_PROVIDER: 1;
26
+ export declare const ROLE_EVALUATOR: 2;
27
+ export declare function signMessage(config: ObolosConfig, params: {
28
+ jobId: string;
29
+ body: string;
30
+ role: 'client' | 'provider' | 'evaluator';
31
+ }): Promise<{
32
+ signature: any;
33
+ signer: any;
34
+ document: {
35
+ protocol: "anp/v1";
36
+ type: "message";
37
+ data: {
38
+ jobId: string;
39
+ jobHash: `0x${string}`;
40
+ body: string;
41
+ role: 0 | 1 | 2;
42
+ nonce: number;
43
+ };
44
+ signer: any;
45
+ signature: any;
46
+ timestamp: number;
47
+ };
48
+ }>;
49
+ export declare function signAmendment(config: ObolosConfig, params: {
50
+ jobId: string;
51
+ originalBidHash: string;
52
+ reason: string;
53
+ newPriceUsd?: number;
54
+ newDeliverySeconds?: number;
55
+ scopeDelta?: string;
56
+ }): Promise<{
57
+ signature: any;
58
+ signer: any;
59
+ document: {
60
+ protocol: "anp/v1";
61
+ type: "amendment";
62
+ data: {
63
+ jobId: string;
64
+ jobHash: `0x${string}`;
65
+ originalBidHash: string;
66
+ newPrice: string;
67
+ newDeliveryTime: number;
68
+ reason: string;
69
+ scopeDelta: string;
70
+ nonce: number;
71
+ };
72
+ signer: any;
73
+ signature: any;
74
+ timestamp: number;
75
+ };
76
+ }>;
77
+ export declare function signAmendmentAcceptance(config: ObolosConfig, jobId: string, amendmentCid: string, amendmentDoc: any): Promise<{
78
+ signature: any;
79
+ signer: any;
80
+ document: {
81
+ protocol: "anp/v1";
82
+ type: "amendment_acceptance";
83
+ data: {
84
+ jobId: string;
85
+ amendmentCid: string;
86
+ amendmentHash: `0x${string}`;
87
+ nonce: number;
88
+ };
89
+ signer: any;
90
+ signature: any;
91
+ timestamp: number;
92
+ };
93
+ }>;
94
+ export declare function signCheckpoint(config: ObolosConfig, params: {
95
+ jobId: string;
96
+ milestoneIndex: number;
97
+ deliverable: string;
98
+ notes?: string;
99
+ }): Promise<{
100
+ signature: any;
101
+ signer: any;
102
+ document: {
103
+ protocol: "anp/v1";
104
+ type: "checkpoint";
105
+ data: {
106
+ jobId: string;
107
+ jobHash: `0x${string}`;
108
+ milestoneIndex: number;
109
+ deliverable: string;
110
+ notes: string;
111
+ nonce: number;
112
+ };
113
+ signer: any;
114
+ signature: any;
115
+ timestamp: number;
116
+ };
117
+ }>;
118
+ export declare function signCheckpointApproval(config: ObolosConfig, jobId: string, checkpointCid: string, checkpointDoc: any): Promise<{
119
+ signature: any;
120
+ signer: any;
121
+ document: {
122
+ protocol: "anp/v1";
123
+ type: "checkpoint_approval";
124
+ data: {
125
+ jobId: string;
126
+ checkpointCid: string;
127
+ checkpointHash: `0x${string}`;
128
+ nonce: number;
129
+ };
130
+ signer: any;
131
+ signature: any;
132
+ timestamp: number;
133
+ };
134
+ }>;
135
+ export declare function signListing(config: ObolosConfig, params: {
136
+ title: string;
137
+ description: string;
138
+ minBudgetUsd: number;
139
+ maxBudgetUsd: number;
140
+ deadlineSeconds: number;
141
+ jobDurationSeconds: number;
142
+ preferredEvaluator?: string;
143
+ }): Promise<{
144
+ signature: any;
145
+ signer: any;
146
+ message: {
147
+ contentHash: `0x${string}`;
148
+ minBudget: bigint;
149
+ maxBudget: bigint;
150
+ deadline: bigint;
151
+ jobDuration: bigint;
152
+ preferredEvaluator: `0x${string}`;
153
+ nonce: bigint;
154
+ };
155
+ document: {
156
+ protocol: "anp/v1";
157
+ type: "listing";
158
+ data: {
159
+ title: string;
160
+ description: string;
161
+ minBudget: string;
162
+ maxBudget: string;
163
+ deadline: number;
164
+ jobDuration: number;
165
+ preferredEvaluator: `0x${string}`;
166
+ nonce: number;
167
+ };
168
+ signer: any;
169
+ signature: any;
170
+ timestamp: number;
171
+ };
172
+ }>;
173
+ export declare function signBid(config: ObolosConfig, listingDoc: any, params: {
174
+ listingCid: string;
175
+ priceUsd: number;
176
+ deliverySeconds: number;
177
+ message?: string;
178
+ }): Promise<{
179
+ signature: any;
180
+ signer: any;
181
+ document: {
182
+ protocol: "anp/v1";
183
+ type: "bid";
184
+ data: {
185
+ listingCid: string;
186
+ listingHash: `0x${string}`;
187
+ price: string;
188
+ deliveryTime: number;
189
+ message: string;
190
+ nonce: number;
191
+ };
192
+ signer: any;
193
+ signature: any;
194
+ timestamp: number;
195
+ };
196
+ }>;
197
+ export declare function signAccept(config: ObolosConfig, listingCid: string, bidCid: string, listingDoc: any, bidDoc: any): Promise<{
198
+ signature: any;
199
+ signer: any;
200
+ document: {
201
+ protocol: "anp/v1";
202
+ type: "acceptance";
203
+ data: {
204
+ listingCid: string;
205
+ bidCid: string;
206
+ listingHash: `0x${string}`;
207
+ bidHash: `0x${string}`;
208
+ nonce: number;
209
+ };
210
+ signer: any;
211
+ signature: any;
212
+ timestamp: number;
213
+ };
214
+ }>;
@@ -0,0 +1,255 @@
1
+ /**
2
+ * ANP (Agent Negotiation Protocol) runtime: EIP-712 signing helpers for
3
+ * listings, bids, and acceptances. Delegates hashing to @obolos_tech/anp-sdk.
4
+ *
5
+ * Advanced primitives (messages, amendments, checkpoints) stay in the
6
+ * legacy switch for now — port them here as they're ported to the registry.
7
+ */
8
+ import { getClients } from './wallet.js';
9
+ import { ANP_TYPES, getANPDomain, computeContentHash as sdkContentHash, hashListingIntent, hashBidIntent, hashAmendmentIntent, hashCheckpointIntent, } from '@obolos_tech/anp-sdk';
10
+ const ANP_SETTLEMENT = '0xfEa362Bf569e97B20681289fB4D4a64CEBDFa792';
11
+ export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
12
+ export const ANP_DOMAIN = getANPDomain(8453, ANP_SETTLEMENT);
13
+ export function generateNonce() {
14
+ return BigInt(Math.floor(Math.random() * 2 ** 32));
15
+ }
16
+ export const computeContentHash = sdkContentHash;
17
+ export const hashListingStruct = hashListingIntent;
18
+ export const hashBidStruct = hashBidIntent;
19
+ export const hashAmendmentStruct = hashAmendmentIntent;
20
+ export const hashCheckpointStruct = hashCheckpointIntent;
21
+ export async function computeJobHash(jobId) {
22
+ return computeContentHash({ jobId });
23
+ }
24
+ export const ROLE_CLIENT = 0;
25
+ export const ROLE_PROVIDER = 1;
26
+ export const ROLE_EVALUATOR = 2;
27
+ export async function signMessage(config, params) {
28
+ const { account, walletClient } = await getClients(config);
29
+ const roleMap = { client: ROLE_CLIENT, provider: ROLE_PROVIDER, evaluator: ROLE_EVALUATOR };
30
+ const role = roleMap[params.role];
31
+ const jobHash = await computeJobHash(params.jobId);
32
+ const contentHash = await computeContentHash({ body: params.body, attachments: [] });
33
+ const nonce = generateNonce();
34
+ const signature = await walletClient.signTypedData({
35
+ account, domain: ANP_DOMAIN, types: { MessageIntent: ANP_TYPES.MessageIntent },
36
+ primaryType: 'MessageIntent', message: { jobHash, contentHash, role, nonce },
37
+ });
38
+ return {
39
+ signature, signer: account.address.toLowerCase(),
40
+ document: {
41
+ protocol: 'anp/v1', type: 'message',
42
+ data: { jobId: params.jobId, jobHash, body: params.body, role, nonce: Number(nonce) },
43
+ signer: account.address.toLowerCase(), signature, timestamp: Date.now(),
44
+ },
45
+ };
46
+ }
47
+ export async function signAmendment(config, params) {
48
+ const { account, walletClient } = await getClients(config);
49
+ const jobHash = await computeJobHash(params.jobId);
50
+ const newPrice = BigInt(Math.floor((params.newPriceUsd || 0) * 1e6));
51
+ const newDeliveryTime = BigInt(params.newDeliverySeconds || 0);
52
+ const contentHash = await computeContentHash({ reason: params.reason, scopeDelta: params.scopeDelta || '' });
53
+ const nonce = generateNonce();
54
+ const signature = await walletClient.signTypedData({
55
+ account, domain: ANP_DOMAIN, types: { AmendmentIntent: ANP_TYPES.AmendmentIntent },
56
+ primaryType: 'AmendmentIntent',
57
+ message: {
58
+ jobHash, originalBidHash: params.originalBidHash,
59
+ newPrice, newDeliveryTime, contentHash, nonce,
60
+ },
61
+ });
62
+ return {
63
+ signature, signer: account.address.toLowerCase(),
64
+ document: {
65
+ protocol: 'anp/v1', type: 'amendment',
66
+ data: {
67
+ jobId: params.jobId, jobHash, originalBidHash: params.originalBidHash,
68
+ newPrice: newPrice.toString(), newDeliveryTime: Number(newDeliveryTime),
69
+ reason: params.reason, scopeDelta: params.scopeDelta || '', nonce: Number(nonce),
70
+ },
71
+ signer: account.address.toLowerCase(), signature, timestamp: Date.now(),
72
+ },
73
+ };
74
+ }
75
+ export async function signAmendmentAcceptance(config, jobId, amendmentCid, amendmentDoc) {
76
+ const { account, walletClient } = await getClients(config);
77
+ const ad = amendmentDoc.data || amendmentDoc;
78
+ const contentHash = await computeContentHash({ reason: ad.reason, scopeDelta: ad.scopeDelta || '' });
79
+ const amendmentHash = hashAmendmentStruct({
80
+ jobHash: ad.jobHash,
81
+ originalBidHash: ad.originalBidHash,
82
+ newPrice: BigInt(ad.newPrice),
83
+ newDeliveryTime: BigInt(ad.newDeliveryTime),
84
+ contentHash,
85
+ nonce: BigInt(ad.nonce),
86
+ });
87
+ const nonce = generateNonce();
88
+ const signature = await walletClient.signTypedData({
89
+ account, domain: ANP_DOMAIN, types: { AmendmentAcceptance: ANP_TYPES.AmendmentAcceptance },
90
+ primaryType: 'AmendmentAcceptance', message: { amendmentHash, nonce },
91
+ });
92
+ return {
93
+ signature, signer: account.address.toLowerCase(),
94
+ document: {
95
+ protocol: 'anp/v1', type: 'amendment_acceptance',
96
+ data: { jobId, amendmentCid, amendmentHash, nonce: Number(nonce) },
97
+ signer: account.address.toLowerCase(), signature, timestamp: Date.now(),
98
+ },
99
+ };
100
+ }
101
+ export async function signCheckpoint(config, params) {
102
+ const { account, walletClient } = await getClients(config);
103
+ const jobHash = await computeJobHash(params.jobId);
104
+ const contentHash = await computeContentHash({ deliverable: params.deliverable, notes: params.notes || '' });
105
+ const nonce = generateNonce();
106
+ const signature = await walletClient.signTypedData({
107
+ account, domain: ANP_DOMAIN, types: { CheckpointIntent: ANP_TYPES.CheckpointIntent },
108
+ primaryType: 'CheckpointIntent',
109
+ message: { jobHash, milestoneIndex: params.milestoneIndex, contentHash, nonce },
110
+ });
111
+ return {
112
+ signature, signer: account.address.toLowerCase(),
113
+ document: {
114
+ protocol: 'anp/v1', type: 'checkpoint',
115
+ data: {
116
+ jobId: params.jobId, jobHash, milestoneIndex: params.milestoneIndex,
117
+ deliverable: params.deliverable, notes: params.notes || '', nonce: Number(nonce),
118
+ },
119
+ signer: account.address.toLowerCase(), signature, timestamp: Date.now(),
120
+ },
121
+ };
122
+ }
123
+ export async function signCheckpointApproval(config, jobId, checkpointCid, checkpointDoc) {
124
+ const { account, walletClient } = await getClients(config);
125
+ const cd = checkpointDoc.data || checkpointDoc;
126
+ const contentHash = await computeContentHash({ deliverable: cd.deliverable, notes: cd.notes || '' });
127
+ const checkpointHash = hashCheckpointStruct({
128
+ jobHash: cd.jobHash,
129
+ milestoneIndex: cd.milestoneIndex,
130
+ contentHash,
131
+ nonce: BigInt(cd.nonce),
132
+ });
133
+ const nonce = generateNonce();
134
+ const signature = await walletClient.signTypedData({
135
+ account, domain: ANP_DOMAIN, types: { CheckpointApproval: ANP_TYPES.CheckpointApproval },
136
+ primaryType: 'CheckpointApproval', message: { checkpointHash, nonce },
137
+ });
138
+ return {
139
+ signature, signer: account.address.toLowerCase(),
140
+ document: {
141
+ protocol: 'anp/v1', type: 'checkpoint_approval',
142
+ data: { jobId, checkpointCid, checkpointHash, nonce: Number(nonce) },
143
+ signer: account.address.toLowerCase(), signature, timestamp: Date.now(),
144
+ },
145
+ };
146
+ }
147
+ export async function signListing(config, params) {
148
+ const { account, walletClient } = await getClients(config);
149
+ const contentHash = await computeContentHash({ title: params.title, description: params.description });
150
+ const nonce = generateNonce();
151
+ const now = Math.floor(Date.now() / 1000);
152
+ const msg = {
153
+ contentHash,
154
+ minBudget: BigInt(Math.floor(params.minBudgetUsd * 1e6)),
155
+ maxBudget: BigInt(Math.floor(params.maxBudgetUsd * 1e6)),
156
+ deadline: BigInt(now + params.deadlineSeconds),
157
+ jobDuration: BigInt(params.jobDurationSeconds),
158
+ preferredEvaluator: (params.preferredEvaluator || ZERO_ADDRESS),
159
+ nonce,
160
+ };
161
+ const signature = await walletClient.signTypedData({
162
+ account, domain: ANP_DOMAIN, types: { ListingIntent: ANP_TYPES.ListingIntent },
163
+ primaryType: 'ListingIntent', message: msg,
164
+ });
165
+ return {
166
+ signature, signer: account.address.toLowerCase(),
167
+ message: msg,
168
+ document: {
169
+ protocol: 'anp/v1', type: 'listing',
170
+ data: {
171
+ title: params.title, description: params.description,
172
+ minBudget: msg.minBudget.toString(), maxBudget: msg.maxBudget.toString(),
173
+ deadline: Number(msg.deadline), jobDuration: Number(msg.jobDuration),
174
+ preferredEvaluator: msg.preferredEvaluator, nonce: Number(nonce),
175
+ },
176
+ signer: account.address.toLowerCase(), signature, timestamp: Date.now(),
177
+ },
178
+ };
179
+ }
180
+ export async function signBid(config, listingDoc, params) {
181
+ const { account, walletClient } = await getClients(config);
182
+ const ld = listingDoc.data || listingDoc;
183
+ const listingContentHash = await computeContentHash({ title: ld.title, description: ld.description });
184
+ const listingHash = hashListingStruct({
185
+ contentHash: listingContentHash,
186
+ minBudget: BigInt(ld.minBudget || '0'),
187
+ maxBudget: BigInt(ld.maxBudget || '0'),
188
+ deadline: BigInt(ld.deadline || '0'),
189
+ jobDuration: BigInt(ld.jobDuration || '0'),
190
+ preferredEvaluator: (ld.preferredEvaluator || ZERO_ADDRESS),
191
+ nonce: BigInt(ld.nonce || '0'),
192
+ });
193
+ const contentHash = await computeContentHash({ message: params.message || '', proposalCid: '' });
194
+ const nonce = generateNonce();
195
+ const msg = {
196
+ listingHash,
197
+ contentHash,
198
+ price: BigInt(Math.floor(params.priceUsd * 1e6)),
199
+ deliveryTime: BigInt(params.deliverySeconds),
200
+ nonce,
201
+ };
202
+ const signature = await walletClient.signTypedData({
203
+ account, domain: ANP_DOMAIN, types: { BidIntent: ANP_TYPES.BidIntent },
204
+ primaryType: 'BidIntent', message: msg,
205
+ });
206
+ return {
207
+ signature, signer: account.address.toLowerCase(),
208
+ document: {
209
+ protocol: 'anp/v1', type: 'bid',
210
+ data: {
211
+ listingCid: params.listingCid, listingHash,
212
+ price: msg.price.toString(), deliveryTime: Number(msg.deliveryTime),
213
+ message: params.message || '', nonce: Number(nonce),
214
+ },
215
+ signer: account.address.toLowerCase(), signature, timestamp: Date.now(),
216
+ },
217
+ };
218
+ }
219
+ export async function signAccept(config, listingCid, bidCid, listingDoc, bidDoc) {
220
+ const { account, walletClient } = await getClients(config);
221
+ const ld = listingDoc.data || listingDoc;
222
+ const bd = bidDoc.data || bidDoc;
223
+ const listingContentHash = await computeContentHash({ title: ld.title, description: ld.description });
224
+ const listingHash = hashListingStruct({
225
+ contentHash: listingContentHash,
226
+ minBudget: BigInt(ld.minBudget || '0'),
227
+ maxBudget: BigInt(ld.maxBudget || '0'),
228
+ deadline: BigInt(ld.deadline || '0'),
229
+ jobDuration: BigInt(ld.jobDuration || '0'),
230
+ preferredEvaluator: (ld.preferredEvaluator || ZERO_ADDRESS),
231
+ nonce: BigInt(ld.nonce || '0'),
232
+ });
233
+ const bidContentHash = await computeContentHash({ message: bd.message || '', proposalCid: bd.proposalCid || '' });
234
+ const bidHash = hashBidStruct({
235
+ listingHash: (bd.listingHash || listingHash),
236
+ contentHash: bidContentHash,
237
+ price: BigInt(bd.price || '0'),
238
+ deliveryTime: BigInt(bd.deliveryTime || '0'),
239
+ nonce: BigInt(bd.nonce || '0'),
240
+ });
241
+ const nonce = generateNonce();
242
+ const signature = await walletClient.signTypedData({
243
+ account, domain: ANP_DOMAIN, types: { AcceptIntent: ANP_TYPES.AcceptIntent },
244
+ primaryType: 'AcceptIntent', message: { listingHash, bidHash, nonce },
245
+ });
246
+ return {
247
+ signature, signer: account.address.toLowerCase(),
248
+ document: {
249
+ protocol: 'anp/v1', type: 'acceptance',
250
+ data: { listingCid, bidCid, listingHash, bidHash, nonce: Number(nonce) },
251
+ signer: account.address.toLowerCase(), signature, timestamp: Date.now(),
252
+ },
253
+ };
254
+ }
255
+ //# sourceMappingURL=anp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anp.js","sourceRoot":"","sources":["../../src/runtime/anp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,SAAS,EAAE,YAAY,EAAE,kBAAkB,IAAI,cAAc,EAC7D,iBAAiB,EAAE,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,GAC5E,MAAM,sBAAsB,CAAC;AAE9B,MAAM,cAAc,GAAG,4CAAqD,CAAC;AAC7E,MAAM,CAAC,MAAM,YAAY,GAAG,4CAAqD,CAAC;AAClF,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAE7D,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AACjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AACnD,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa;IAChD,OAAO,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAU,CAAC;AACtC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAU,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAU,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAoB,EACpB,MAAkF;IAElF,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5F,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE;QAC9E,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE;KAC7E,CAAC,CAAC;IACH,OAAO;QACL,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;QAChD,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAiB,EAAE,IAAI,EAAE,SAAkB;YACrD,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;YACrF,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAoB,EACpB,MAGC;IAED,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7G,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,SAAS,CAAC,eAAe,EAAE;QAClF,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE;YACP,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,eAAgC;YACjE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK;SAC9C;KACF,CAAC,CAAC;IACH,OAAO;QACL,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;QAChD,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAiB,EAAE,IAAI,EAAE,WAAoB;YACvD,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe;gBACrE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC;gBACvE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;aACjF;YACD,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAoB,EAAE,KAAa,EAAE,YAAoB,EAAE,YAAiB;IAE5E,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC;IAC7C,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC;IACrG,MAAM,aAAa,GAAG,mBAAmB,CAAC;QACxC,OAAO,EAAE,EAAE,CAAC,OAAwB;QACpC,eAAe,EAAE,EAAE,CAAC,eAAgC;QACpD,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC;QAC3C,WAAW;QACX,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;KACxB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,mBAAmB,EAAE,SAAS,CAAC,mBAAmB,EAAE;QAC1F,WAAW,EAAE,qBAAqB,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;KACtE,CAAC,CAAC;IACH,OAAO;QACL,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;QAChD,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAiB,EAAE,IAAI,EAAE,sBAA+B;YAClE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;YAClE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAoB,EACpB,MAAsF;IAEtF,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7G,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,EAAE;QACpF,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE;KAChF,CAAC,CAAC;IACH,OAAO;QACL,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;QAChD,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAiB,EAAE,IAAI,EAAE,YAAqB;YACxD,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc;gBACnE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;aACjF;YACD,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAoB,EAAE,KAAa,EAAE,aAAqB,EAAE,aAAkB;IAE9E,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC;IAC/C,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;IACrG,MAAM,cAAc,GAAG,oBAAoB,CAAC;QAC1C,OAAO,EAAE,EAAE,CAAC,OAAwB;QACpC,cAAc,EAAE,EAAE,CAAC,cAAc;QACjC,WAAW;QACX,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;KACxB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,SAAS,CAAC,kBAAkB,EAAE;QACxF,WAAW,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE;KACtE,CAAC,CAAC;IACH,OAAO;QACL,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;QAChD,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAiB,EAAE,IAAI,EAAE,qBAA8B;YACjE,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;YACpE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAoB,EACpB,MAKC;IAED,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACvG,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG;QACV,WAAW;QACX,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;QACxD,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;QACxD,QAAQ,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC;QAC9C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC9C,kBAAkB,EAAE,CAAC,MAAM,CAAC,kBAAkB,IAAI,YAAY,CAAkB;QAChF,KAAK;KACN,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE;QAC9E,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG;KAC3C,CAAC,CAAC;IACH,OAAO;QACL,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;QAChD,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAiB,EAAE,IAAI,EAAE,SAAkB;YACrD,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW;gBACpD,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE;gBACxE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;gBACpE,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;aACjE;YACD,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAoB,EACpB,UAAe,EACf,MAA2F;IAE3F,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC;IACzC,MAAM,kBAAkB,GAAG,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACtG,MAAM,WAAW,GAAG,iBAAiB,CAAC;QACpC,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,GAAG,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,GAAG,CAAC;QACtC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,IAAI,GAAG,CAAC;QACpC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,WAAW,IAAI,GAAG,CAAC;QAC1C,kBAAkB,EAAE,CAAC,EAAE,CAAC,kBAAkB,IAAI,YAAY,CAAkB;QAC5E,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC;KAC/B,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IACjG,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG;QACV,WAAW;QACX,WAAW;QACX,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;QAChD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QAC5C,KAAK;KACN,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE;QACtE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG;KACvC,CAAC,CAAC;IACH,OAAO;QACL,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;QAChD,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAiB,EAAE,IAAI,EAAE,KAAc;YACjD,IAAI,EAAE;gBACJ,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW;gBAC1C,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;gBACnE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;aACpD;YACD,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAoB,EAAE,UAAkB,EAAE,MAAc,EAAE,UAAe,EAAE,MAAW;IAEtF,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;IACjC,MAAM,kBAAkB,GAAG,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACtG,MAAM,WAAW,GAAG,iBAAiB,CAAC;QACpC,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,GAAG,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,GAAG,CAAC;QACtC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,IAAI,GAAG,CAAC;QACpC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,WAAW,IAAI,GAAG,CAAC;QAC1C,kBAAkB,EAAE,CAAC,EAAE,CAAC,kBAAkB,IAAI,YAAY,CAAkB;QAC5E,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC;KAC/B,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC;IAClH,MAAM,OAAO,GAAG,aAAa,CAAC;QAC5B,WAAW,EAAE,CAAC,EAAE,CAAC,WAAW,IAAI,WAAW,CAAkB;QAC7D,WAAW,EAAE,cAAc;QAC3B,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC;QAC9B,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,YAAY,IAAI,GAAG,CAAC;QAC5C,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC;KAC/B,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE;QAC5E,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;KACtE,CAAC,CAAC;IACH,OAAO;QACL,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;QAChD,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAiB,EAAE,IAAI,EAAE,YAAqB;YACxD,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;YACxE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxE;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Parse argv against an InputSchema. Supports:
3
+ * --flag value
4
+ * --flag=value
5
+ * -a value (via field.alias)
6
+ * positional args (via field.positional index)
7
+ * --flag (boolean)
8
+ *
9
+ * Returns a typed input object + leftover tokens (e.g. the trailing `--` bag).
10
+ */
11
+ import type { InputSchema } from '../registry.js';
12
+ export interface ParsedArgs {
13
+ input: Record<string, unknown>;
14
+ json: boolean;
15
+ help: boolean;
16
+ dryRun: boolean;
17
+ }
18
+ export declare function parseArgs(schema: InputSchema, argv: string[]): ParsedArgs;