@reppo/cli 0.9.0 → 0.10.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.
package/dist/bin.js CHANGED
@@ -8,6 +8,7 @@ import { Cli, Builtins } from 'clipanion';
8
8
  import { ApproveCommand } from './commands/approve.js';
9
9
  import { AuthCommand } from './commands/auth.js';
10
10
  import { ClaimEmissionsCommand } from './commands/claim-emissions.js';
11
+ import { ClaimVoterEmissionsCommand } from './commands/claim-voter-emissions.js';
11
12
  import { ExtendLockCommand } from './commands/extend-lock.js';
12
13
  import { GrantAccessCommand } from './commands/grant-access.js';
13
14
  import { ListDatanetsCommand } from './commands/list/datanets.js';
@@ -46,6 +47,7 @@ cli.register(Builtins.VersionCommand);
46
47
  cli.register(ApproveCommand);
47
48
  cli.register(AuthCommand);
48
49
  cli.register(ClaimEmissionsCommand);
50
+ cli.register(ClaimVoterEmissionsCommand);
49
51
  cli.register(ExtendLockCommand);
50
52
  cli.register(GrantAccessCommand);
51
53
  cli.register(ListDatanetsCommand);
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { BaseCommand } from './_base.js';
2
+ export declare class ClaimVoterEmissionsCommand extends BaseCommand {
3
+ static paths: string[][];
4
+ static usage: import("clipanion").Usage;
5
+ pod: string;
6
+ epoch: string;
7
+ idempotencyKey: string | undefined;
8
+ dryRun: boolean;
9
+ execute(): Promise<number>;
10
+ }
11
+ //# sourceMappingURL=claim-voter-emissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-voter-emissions.d.ts","sourceRoot":"","sources":["../../src/commands/claim-voter-emissions.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAWzC,qBAAa,0BAA2B,SAAQ,WAAW;IACzD,OAAgB,KAAK,aAA+B;IAEpD,OAAgB,KAAK,4BAUlB;IAEH,GAAG,SAA8C;IACjD,KAAK,SAAgD;IACrD,cAAc,qBAAsC;IACpD,MAAM,UAAsC;IAEtC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAyJjC"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * `reppo claim-voter-emissions --pod <id> --epoch <n>` — claim the SIGNER's
3
+ * voter emissions for a pod it up/down-voted in a given epoch.
4
+ *
5
+ * Counterpart to `claim-emissions` (which claims the POD OWNER's emissions via
6
+ * claimPodOwnerEmissions). Voters earn a separate share of a pod's epoch pool
7
+ * for curating it; that reward is claimed with claimVoterEmissions(voter, podId,
8
+ * epoch) and was previously unclaimable through the CLI.
9
+ *
10
+ * Pre-flight (V2):
11
+ * 1. INVALID_POD_ID, INVALID_EPOCH (parse)
12
+ * 2. ALREADY_CLAIMED (hasUserClaimedEmissions(epoch, podId, voter) === true)
13
+ *
14
+ * No ownership check — the caller claims AS A VOTER, not the owner. PodManager
15
+ * V2 exposes no per-(voter,pod) "due" view, so there is no NO_EMISSIONS_DUE
16
+ * pre-flight: the contract reverts cleanly when nothing is due and the
17
+ * structured decoder surfaces the code.
18
+ *
19
+ * Two-phase write protocol via peekIdempotent.
20
+ * Args fingerprint: { podId, epoch } — re-using one --idempotency-key across
21
+ * different (podId, epoch) is rejected with IDEMPOTENCY_ARGS_MISMATCH.
22
+ */
23
+ import { Option } from 'clipanion';
24
+ import { BaseCommand } from './_base.js';
25
+ import { cliError, emit } from '../output/format.js';
26
+ import { createClients, nextNonce } from '../chain/clients.js';
27
+ import { podManager } from '../chain/contracts.js';
28
+ import { decodeRevert } from '../chain/errors.js';
29
+ import { handleSubmittedCacheDecision } from './write-cache.js';
30
+ import { waitForWriteReceipt, receiptGasEth } from '../chain/receipt.js';
31
+ import { begin, markSubmitted, markConfirmed, markFailed, peekIdempotent } from '../state/idempotency.js';
32
+ const COMMAND = 'claim-voter-emissions';
33
+ export class ClaimVoterEmissionsCommand extends BaseCommand {
34
+ static paths = [['claim-voter-emissions']];
35
+ static usage = BaseCommand.Usage({
36
+ description: 'Claim your voter emissions for a pod you voted on, for a given epoch.',
37
+ examples: [
38
+ ['Claim voter emissions for pod 34, epoch 3940',
39
+ 'reppo claim-voter-emissions --pod 34 --epoch 3940'],
40
+ ['With idempotency key',
41
+ 'reppo claim-voter-emissions --pod 34 --epoch 3940 --idempotency-key claim-voter-34-3940'],
42
+ ['Dry-run',
43
+ 'reppo claim-voter-emissions --pod 34 --epoch 3940 --dry-run'],
44
+ ],
45
+ });
46
+ pod = Option.String('--pod', { required: true });
47
+ epoch = Option.String('--epoch', { required: true });
48
+ idempotencyKey = Option.String('--idempotency-key');
49
+ dryRun = Option.Boolean('--dry-run', false);
50
+ async execute() {
51
+ try {
52
+ const cfg = this.loadConfig();
53
+ const pk = cfg.privateKey;
54
+ if (!pk) {
55
+ throw cliError('MISSING_PRIVATE_KEY', 'No signing key available.', 'Set REPPO_PRIVATE_KEY in env.');
56
+ }
57
+ let podId;
58
+ try {
59
+ podId = BigInt(this.pod);
60
+ }
61
+ catch {
62
+ throw cliError('INVALID_POD_ID', `Pod id must be a non-negative integer; got "${this.pod}".`);
63
+ }
64
+ let epoch;
65
+ try {
66
+ epoch = BigInt(this.epoch);
67
+ }
68
+ catch {
69
+ throw cliError('INVALID_EPOCH', `Epoch must be a non-negative integer; got "${this.epoch}".`);
70
+ }
71
+ const args = { podId: podId.toString(), epoch: epoch.toString() };
72
+ const decision = await peekIdempotent(this.idempotencyKey, COMMAND, args, this.dryRun);
73
+ if (decision.kind === 'return-confirmed') {
74
+ emit({ ...decision.result, idempotent: true, status: 'confirmed' }, [`(cached, confirmed) tx: ${decision.txHash ?? 'n/a'}`]);
75
+ return 0;
76
+ }
77
+ if (decision.kind === 'return-submitted') {
78
+ const clients = createClients({
79
+ network: cfg.network,
80
+ privateKey: pk,
81
+ ...(cfg.rpcUrl ? { rpcUrl: cfg.rpcUrl } : {}),
82
+ });
83
+ return handleSubmittedCacheDecision(decision, {
84
+ idempotencyKey: this.idempotencyKey,
85
+ command: COMMAND,
86
+ args,
87
+ network: cfg.network,
88
+ publicClient: clients.publicClient,
89
+ buildResult: () => ({
90
+ podId: podId.toString(),
91
+ epoch: epoch.toString(),
92
+ amountClaimed: { unavailable: 'PodManager V2 does not expose a per-voter emissions-due view' },
93
+ }),
94
+ });
95
+ }
96
+ const clients = createClients({
97
+ network: cfg.network,
98
+ privateKey: pk,
99
+ ...(cfg.rpcUrl ? { rpcUrl: cfg.rpcUrl } : {}),
100
+ });
101
+ const pm = podManager(cfg.network);
102
+ const voter = clients.account.address;
103
+ // Pre-flight: already-claimed by THIS voter for (epoch, pod). PodManager V2
104
+ // exposes no per-(voter,pod) "due" view, so NO_EMISSIONS_DUE is not pre-
105
+ // flighted — the contract reverts cleanly and the decoder surfaces the code.
106
+ const alreadyClaimed = await clients.publicClient.readContract({
107
+ address: pm.address, abi: pm.abi, functionName: 'hasUserClaimedEmissions', args: [epoch, podId, voter],
108
+ });
109
+ if (alreadyClaimed) {
110
+ throw cliError('ALREADY_CLAIMED', `Voter emissions for pod ${podId}, epoch ${epoch} have already been claimed by ${voter}.`, 'Nothing to do — pick a different (pod, epoch).');
111
+ }
112
+ if (this.dryRun) {
113
+ const sim = await clients.publicClient.simulateContract({
114
+ address: pm.address, abi: pm.abi, functionName: 'claimVoterEmissions',
115
+ args: [voter, podId, epoch], account: clients.account,
116
+ }).catch((e) => {
117
+ const decoded = decodeRevert(e);
118
+ throw cliError(decoded.code, 'Simulation reverted', decoded.hint);
119
+ });
120
+ emit({
121
+ simulated: true,
122
+ voter,
123
+ podId: podId.toString(),
124
+ epoch: epoch.toString(),
125
+ amountDue: { unavailable: 'PodManager V2 does not expose a per-voter emissions-due view' },
126
+ gas: sim.request.gas?.toString() ?? null,
127
+ });
128
+ return 0;
129
+ }
130
+ if (this.idempotencyKey)
131
+ await begin(this.idempotencyKey, COMMAND, args);
132
+ let tx;
133
+ try {
134
+ const nonce = await nextNonce(clients.publicClient, clients.account.address);
135
+ tx = await clients.walletClient.writeContract({
136
+ address: pm.address, abi: pm.abi, functionName: 'claimVoterEmissions',
137
+ args: [voter, podId, epoch],
138
+ chain: clients.walletClient.chain, account: clients.account, nonce,
139
+ });
140
+ }
141
+ catch (e) {
142
+ const decoded = decodeRevert(e);
143
+ if (this.idempotencyKey)
144
+ await markFailed(this.idempotencyKey, COMMAND, args, decoded.code);
145
+ throw cliError(decoded.code, 'claim-voter-emissions tx failed to submit', decoded.hint);
146
+ }
147
+ // markSubmitted BEFORE waitForReceipt — closes the retry-resend window.
148
+ if (this.idempotencyKey) {
149
+ await markSubmitted(this.idempotencyKey, COMMAND, args, tx, {
150
+ podId: podId.toString(),
151
+ epoch: epoch.toString(),
152
+ amountClaimed: { unavailable: 'PodManager V2 does not expose a per-voter emissions-due view' },
153
+ });
154
+ }
155
+ const receipt = await waitForWriteReceipt(clients.publicClient, tx);
156
+ if (receipt.status === 'reverted') {
157
+ if (this.idempotencyKey)
158
+ await markFailed(this.idempotencyKey, COMMAND, args, 'TX_REVERTED', tx);
159
+ throw cliError('TX_REVERTED', `claim-voter-emissions tx reverted: ${tx}`);
160
+ }
161
+ const result = {
162
+ txHash: tx,
163
+ gasEth: receiptGasEth(receipt),
164
+ voter,
165
+ podId: podId.toString(),
166
+ epoch: epoch.toString(),
167
+ amountClaimed: { unavailable: 'PodManager V2 does not expose a per-voter emissions-due view' },
168
+ block: receipt.blockNumber.toString(),
169
+ basescanUrl: cfg.network === 'mainnet'
170
+ ? `https://basescan.org/tx/${tx}`
171
+ : `https://sepolia.basescan.org/tx/${tx}`,
172
+ };
173
+ if (this.idempotencyKey)
174
+ await markConfirmed(this.idempotencyKey, COMMAND, args, result, tx);
175
+ emit(result, [
176
+ `✓ Claimed voter emissions for pod ${podId}, epoch ${epoch}`,
177
+ ` amount: (unknown — V2 has no per-voter emissions-due view)`,
178
+ ` tx: ${result.basescanUrl}`,
179
+ ` block: ${receipt.blockNumber}`,
180
+ ]);
181
+ return 0;
182
+ }
183
+ catch (err) {
184
+ this.handleError(err);
185
+ }
186
+ }
187
+ }
188
+ //# sourceMappingURL=claim-voter-emissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-voter-emissions.js","sourceRoot":"","sources":["../../src/commands/claim-voter-emissions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reppo/cli",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "Command-line interface for Reppo — mint pods, vote, lock REPPO, manage datanets. Built for AI agents.",
5
5
  "license": "MIT",
6
6
  "author": "Reppo Labs",