@intent-engine/cli 0.1.41 → 0.1.43

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 (184) hide show
  1. package/dist/src/accounts.d.ts +4 -2
  2. package/dist/src/accounts.js +5 -4
  3. package/dist/src/accounts.js.map +1 -1
  4. package/dist/src/add-to.js +2 -2
  5. package/dist/src/add-to.js.map +1 -1
  6. package/dist/src/admin-commands.d.ts +22 -1
  7. package/dist/src/admin-commands.js +44 -12
  8. package/dist/src/admin-commands.js.map +1 -1
  9. package/dist/src/agent/actions.d.ts +1 -0
  10. package/dist/src/agent/actions.js +15 -1
  11. package/dist/src/agent/actions.js.map +1 -1
  12. package/dist/src/agent/budget.d.ts +5 -5
  13. package/dist/src/agent/budget.js +26 -6
  14. package/dist/src/agent/budget.js.map +1 -1
  15. package/dist/src/agent/claims.d.ts +2 -1
  16. package/dist/src/agent/claims.js +1 -1
  17. package/dist/src/agent/claims.js.map +1 -1
  18. package/dist/src/agent/create.d.ts +16 -7
  19. package/dist/src/agent/create.js +25 -3
  20. package/dist/src/agent/create.js.map +1 -1
  21. package/dist/src/agent/jobs.js +11 -4
  22. package/dist/src/agent/jobs.js.map +1 -1
  23. package/dist/src/agent/mandate-agent.js +3 -2
  24. package/dist/src/agent/mandate-agent.js.map +1 -1
  25. package/dist/src/agent/mandate-revoke.js +1 -1
  26. package/dist/src/agent/mandate-revoke.js.map +1 -1
  27. package/dist/src/agent/owner.js +4 -2
  28. package/dist/src/agent/owner.js.map +1 -1
  29. package/dist/src/agent/prepare.d.ts +1 -1
  30. package/dist/src/agent/prepare.js +9 -2
  31. package/dist/src/agent/prepare.js.map +1 -1
  32. package/dist/src/agent/problems.d.ts +22 -0
  33. package/dist/src/agent/problems.js +33 -5
  34. package/dist/src/agent/problems.js.map +1 -1
  35. package/dist/src/agent/profile.d.ts +1 -0
  36. package/dist/src/agent/profile.js +30 -5
  37. package/dist/src/agent/profile.js.map +1 -1
  38. package/dist/src/agent/read.js +3 -4
  39. package/dist/src/agent/read.js.map +1 -1
  40. package/dist/src/agent/reputation.js +16 -7
  41. package/dist/src/agent/reputation.js.map +1 -1
  42. package/dist/src/agent/sales.js +17 -23
  43. package/dist/src/agent/sales.js.map +1 -1
  44. package/dist/src/agent/settle.js +1 -0
  45. package/dist/src/agent/settle.js.map +1 -1
  46. package/dist/src/agent/signed-prepare.js +3 -2
  47. package/dist/src/agent/signed-prepare.js.map +1 -1
  48. package/dist/src/agent/signed-relay.d.ts +1 -1
  49. package/dist/src/agent/signed-relay.js +2 -1
  50. package/dist/src/agent/signed-relay.js.map +1 -1
  51. package/dist/src/agent/signed-submit.js +7 -5
  52. package/dist/src/agent/signed-submit.js.map +1 -1
  53. package/dist/src/agent/signed-terms.d.ts +1 -5
  54. package/dist/src/agent/spec.js +16 -4
  55. package/dist/src/agent/spec.js.map +1 -1
  56. package/dist/src/agent/wallet/account.js +2 -1
  57. package/dist/src/agent/wallet/account.js.map +1 -1
  58. package/dist/src/agent/wallet/attest.d.ts +2 -0
  59. package/dist/src/agent/wallet/attest.js +46 -24
  60. package/dist/src/agent/wallet/attest.js.map +1 -1
  61. package/dist/src/agent/wallet/committee.js +29 -17
  62. package/dist/src/agent/wallet/committee.js.map +1 -1
  63. package/dist/src/agent/wallet/delivery.d.ts +4 -1
  64. package/dist/src/agent/wallet/delivery.js +80 -23
  65. package/dist/src/agent/wallet/delivery.js.map +1 -1
  66. package/dist/src/agent/wallet/escrow.js +9 -4
  67. package/dist/src/agent/wallet/escrow.js.map +1 -1
  68. package/dist/src/agent/wallet/fills.js +4 -3
  69. package/dist/src/agent/wallet/fills.js.map +1 -1
  70. package/dist/src/agent/wallet/guard.d.ts +32 -0
  71. package/dist/src/agent/wallet/guard.js +131 -9
  72. package/dist/src/agent/wallet/guard.js.map +1 -1
  73. package/dist/src/agent/wallet/history.js +2 -2
  74. package/dist/src/agent/wallet/history.js.map +1 -1
  75. package/dist/src/agent/wallet/offer.d.ts +18 -0
  76. package/dist/src/agent/wallet/offer.js +2 -1
  77. package/dist/src/agent/wallet/offer.js.map +1 -1
  78. package/dist/src/agent/wallet/openings.d.ts +37 -0
  79. package/dist/src/agent/wallet/openings.js +73 -0
  80. package/dist/src/agent/wallet/openings.js.map +1 -0
  81. package/dist/src/agent/wallet/receipt.d.ts +6 -0
  82. package/dist/src/agent/wallet/receipt.js +21 -3
  83. package/dist/src/agent/wallet/receipt.js.map +1 -1
  84. package/dist/src/agent/wallet/record.d.ts +3 -2
  85. package/dist/src/agent/wallet/record.js +16 -10
  86. package/dist/src/agent/wallet/record.js.map +1 -1
  87. package/dist/src/agent/wallet/split.d.ts +1 -0
  88. package/dist/src/agent/wallet/split.js +84 -57
  89. package/dist/src/agent/wallet/split.js.map +1 -1
  90. package/dist/src/agent/wallet/trade.js +2 -1
  91. package/dist/src/agent/wallet/trade.js.map +1 -1
  92. package/dist/src/agent/wallet/unwrap.js +2 -1
  93. package/dist/src/agent/wallet/unwrap.js.map +1 -1
  94. package/dist/src/agent/work-claims.js +16 -6
  95. package/dist/src/agent/work-claims.js.map +1 -1
  96. package/dist/src/arg-admin.d.ts +1 -1
  97. package/dist/src/arg-admin.js +4 -0
  98. package/dist/src/arg-admin.js.map +1 -1
  99. package/dist/src/arg-options.d.ts +70 -2
  100. package/dist/src/arg-options.js +39 -10
  101. package/dist/src/arg-options.js.map +1 -1
  102. package/dist/src/arg-solve.d.ts +6 -0
  103. package/dist/src/arg-solve.js +46 -1
  104. package/dist/src/arg-solve.js.map +1 -1
  105. package/dist/src/arg-usage.d.ts +2 -2
  106. package/dist/src/arg-usage.js +14 -10
  107. package/dist/src/arg-usage.js.map +1 -1
  108. package/dist/src/arg-values.d.ts +20 -1
  109. package/dist/src/arg-values.js +72 -2
  110. package/dist/src/arg-values.js.map +1 -1
  111. package/dist/src/args.d.ts +4 -1
  112. package/dist/src/args.js +39 -9
  113. package/dist/src/args.js.map +1 -1
  114. package/dist/src/claim-commands.d.ts +6 -2
  115. package/dist/src/claim-commands.js +115 -6
  116. package/dist/src/claim-commands.js.map +1 -1
  117. package/dist/src/clusters.d.ts +1 -0
  118. package/dist/src/clusters.js +1 -0
  119. package/dist/src/clusters.js.map +1 -1
  120. package/dist/src/command-types.d.ts +65 -1
  121. package/dist/src/commands.js +40 -8
  122. package/dist/src/commands.js.map +1 -1
  123. package/dist/src/committee-commands.d.ts +13 -2
  124. package/dist/src/committee-commands.js +58 -11
  125. package/dist/src/committee-commands.js.map +1 -1
  126. package/dist/src/crank.d.ts +3 -3
  127. package/dist/src/crank.js +11 -9
  128. package/dist/src/crank.js.map +1 -1
  129. package/dist/src/float-commands.d.ts +17 -0
  130. package/dist/src/float-commands.js +94 -0
  131. package/dist/src/float-commands.js.map +1 -0
  132. package/dist/src/flow-commands.js +2 -2
  133. package/dist/src/flow-commands.js.map +1 -1
  134. package/dist/src/flows.d.ts +2 -2
  135. package/dist/src/flows.js +8 -2
  136. package/dist/src/flows.js.map +1 -1
  137. package/dist/src/job-args.js +16 -3
  138. package/dist/src/job-args.js.map +1 -1
  139. package/dist/src/job-commands.js +40 -10
  140. package/dist/src/job-commands.js.map +1 -1
  141. package/dist/src/job-filters.d.ts +15 -3
  142. package/dist/src/job-filters.js +31 -6
  143. package/dist/src/job-filters.js.map +1 -1
  144. package/dist/src/judge-digest.d.ts +7 -0
  145. package/dist/src/judge-digest.js +27 -0
  146. package/dist/src/judge-digest.js.map +1 -0
  147. package/dist/src/judge-watch.js +16 -6
  148. package/dist/src/judge-watch.js.map +1 -1
  149. package/dist/src/judge.d.ts +18 -1
  150. package/dist/src/judge.js +87 -17
  151. package/dist/src/judge.js.map +1 -1
  152. package/dist/src/ledger-keys.d.ts +4 -1
  153. package/dist/src/ledger-keys.js +21 -5
  154. package/dist/src/ledger-keys.js.map +1 -1
  155. package/dist/src/legacy-commands.d.ts +8 -0
  156. package/dist/src/legacy-commands.js +94 -0
  157. package/dist/src/legacy-commands.js.map +1 -0
  158. package/dist/src/main.d.ts +3 -0
  159. package/dist/src/main.js +5 -0
  160. package/dist/src/main.js.map +1 -1
  161. package/dist/src/migrate-commands.d.ts +10 -0
  162. package/dist/src/migrate-commands.js +127 -0
  163. package/dist/src/migrate-commands.js.map +1 -0
  164. package/dist/src/monitor.d.ts +5 -1
  165. package/dist/src/monitor.js +31 -4
  166. package/dist/src/monitor.js.map +1 -1
  167. package/dist/src/release-simulation.d.ts +3 -2
  168. package/dist/src/release-simulation.js +1 -0
  169. package/dist/src/release-simulation.js.map +1 -1
  170. package/dist/src/sealed-commands.d.ts +6 -0
  171. package/dist/src/sealed-commands.js +19 -1
  172. package/dist/src/sealed-commands.js.map +1 -1
  173. package/dist/src/solve-commands.d.ts +3 -1
  174. package/dist/src/solve-commands.js +31 -4
  175. package/dist/src/solve-commands.js.map +1 -1
  176. package/dist/src/trust-args.d.ts +5 -3
  177. package/dist/src/trust-args.js +48 -9
  178. package/dist/src/trust-args.js.map +1 -1
  179. package/dist/src/version.d.ts +1 -1
  180. package/dist/src/version.js +1 -1
  181. package/dist/src/wallet.d.ts +8 -2
  182. package/dist/src/wallet.js +44 -7
  183. package/dist/src/wallet.js.map +1 -1
  184. package/package.json +5 -4
@@ -1,5 +1,5 @@
1
1
  import type { Address } from "@solana/kit";
2
- import { type Job, type JobClaim, type JobPay, type PayTerms, type Transport } from "@intent-engine/client";
2
+ import { type Job, type JobClaim, type JobPay, type MintView, type PayTerms, type Transport } from "@intent-engine/client";
3
3
  export type JobsWanted = {
4
4
  attestor?: Address | undefined;
5
5
  mint?: Address | undefined;
@@ -8,6 +8,18 @@ export type JobsWanted = {
8
8
  };
9
9
  export declare function leastUnits(tokens: string, decimals: number): bigint;
10
10
  export type DecimalsOf = (mint: Address) => Promise<number>;
11
- export declare function decimalsOnce(transport: Transport): DecimalsOf;
11
+ export type MintsOf = (mint: Address) => Promise<MintView>;
12
+ export declare function mintsOnce(transport: Transport): MintsOf;
13
+ export declare function decimalsOnce(transport: Transport, mintsOf?: MintsOf): DecimalsOf;
14
+ export declare function freezeAuthorityRead(read: Promise<MintView>): Promise<Address | null>;
15
+ export declare const freezeWarning: (authority: Address, owner: Address) => string;
16
+ export type FreezeFields = {
17
+ freeze_authority: Address | null;
18
+ freeze_warning?: string;
19
+ };
20
+ export declare const freezeFields: (authority: Address | null, owner: Address) => FreezeFields;
12
21
  export declare function jobsWanted(transport: Transport, { attestor, mint, minPay, unclaimed }: JobsWanted, decimalsOf?: DecimalsOf): Promise<Job[]>;
13
- export declare function pricedJobs(transport: Transport, wanted: JobsWanted, terms: PayTerms): Promise<(Job & JobPay & JobClaim)[]>;
22
+ export type PricedJob = Job & JobPay & JobClaim & {
23
+ freezeAuthority: Address | null;
24
+ };
25
+ export declare function pricedJobs(transport: Transport, wanted: JobsWanted, terms: PayTerms): Promise<PricedJob[]>;
@@ -5,15 +5,30 @@ export function leastUnits(tokens, decimals) {
5
5
  const finer = /[1-9]/.test(fraction.slice(decimals)) ? 1n : 0n;
6
6
  return BigInt(whole === "" ? "0" : whole) * 10n ** BigInt(decimals) + BigInt(kept === "" ? "0" : kept) + finer;
7
7
  }
8
- const latestFirst = (a, b) => (a.expiresAt === b.expiresAt ? 0 : a.expiresAt > b.expiresAt ? -1 : 1);
9
- export function decimalsOnce(transport) {
8
+ const latestFirst = (a, b) => (a.expiresAt === b.expiresAt ? 0 : Number(b.expiresAt - a.expiresAt));
9
+ export function mintsOnce(transport) {
10
10
  const seen = new Map();
11
11
  return (mint) => {
12
- const known = seen.get(mint) ?? mintOf(transport, mint).then(({ decimals }) => decimals);
12
+ const known = seen.get(mint) ?? mintOf(transport, mint);
13
13
  seen.set(mint, known);
14
14
  return known;
15
15
  };
16
16
  }
17
+ export function decimalsOnce(transport, mintsOf = mintsOnce(transport)) {
18
+ return async (mint) => (await mintsOf(mint)).decimals;
19
+ }
20
+ export async function freezeAuthorityRead(read) {
21
+ try {
22
+ return (await read).freezeAuthority;
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ }
28
+ export const freezeWarning = (authority, owner) => authority === owner
29
+ ? `the escrow's owner ${owner} holds the freeze authority of this job's token and can freeze the payment`
30
+ : `${authority} holds the freeze authority of this job's token and can freeze the payment`;
31
+ export const freezeFields = (authority, owner) => authority === null ? { freeze_authority: null } : { freeze_authority: authority, freeze_warning: freezeWarning(authority, owner) };
17
32
  export async function jobsWanted(transport, { attestor, mint, minPay, unclaimed }, decimalsOf = decimalsOnce(transport)) {
18
33
  if (minPay === undefined) {
19
34
  return jobsOf(transport, { attestor, mint, unclaimed });
@@ -24,9 +39,19 @@ export async function jobsWanted(transport, { attestor, mint, minPay, unclaimed
24
39
  return lists.flat().sort(latestFirst).slice(0, JOBS_LIMIT);
25
40
  }
26
41
  export async function pricedJobs(transport, wanted, terms) {
27
- const decimalsOf = decimalsOnce(transport);
42
+ const mintsOf = mintsOnce(transport);
43
+ const decimalsOf = decimalsOnce(transport, mintsOf);
28
44
  const jobs = await jobsWanted(transport, wanted, decimalsOf);
29
- const [pays, claims] = await Promise.all([jobPays(transport, jobs, terms, decimalsOf), loadClaimsOf(transport, jobs.map(({ intent }) => intent))]);
30
- return jobs.map((job, i) => ({ ...job, ...(pays[i] ?? { netPay: "0", payable: false }), ...jobClaimOf(claims[i] ?? null) }));
45
+ const [pays, claims, freezes] = await Promise.all([
46
+ jobPays(transport, jobs, terms, decimalsOf),
47
+ loadClaimsOf(transport, jobs.map(({ intent }) => intent)),
48
+ Promise.all(jobs.map(({ inputMint }) => freezeAuthorityRead(mintsOf(inputMint)))),
49
+ ]);
50
+ return jobs.map((job, i) => ({
51
+ ...job,
52
+ ...(pays[i] ?? { netPay: "0", payable: false }),
53
+ ...jobClaimOf(claims[i] ?? null),
54
+ freezeAuthority: freezes[i] ?? null,
55
+ }));
31
56
  }
32
57
  //# sourceMappingURL=job-filters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"job-filters.js","sourceRoot":"","sources":["../../src/job-filters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job-filters.js","sourceRoot":"","sources":["../../src/job-filters.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,UAAU,EAEV,OAAO,EACP,UAAU,EACV,MAAM,EACN,YAAY,EACZ,MAAM,EAEN,gBAAgB,GAGjB,MAAM,uBAAuB,CAAC;AAI/B,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,QAAgB;IACzD,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,QAAQ,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,OAAO,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACjH,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAM9G,MAAM,UAAU,SAAS,CAAC,SAAoB;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAA8B,CAAC;IACnD,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAoB,EAAE,OAAO,GAAY,SAAS,CAAC,SAAS,CAAC;IACxF,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAuB;IAC/D,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,eAAe,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAkB,EAAE,KAAc,EAAU,EAAE,CAC1E,SAAS,KAAK,KAAK;IACjB,CAAC,CAAC,sBAAsB,KAAK,4EAA4E;IACzG,CAAC,CAAC,GAAG,SAAS,4EAA4E,CAAC;AAI/F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAyB,EAAE,KAAc,EAAgB,EAAE,CACtF,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;AAErI,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAoB,EACpB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAc,EACjD,UAAU,GAAe,YAAY,CAAC,SAAS,CAAC;IAEhD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC7F,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CACxI,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC7D,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAoB,EAAE,MAAkB,EAAE,KAAe;IACxF,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChD,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;QAC3C,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAClF,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3B,GAAG,GAAG;QACN,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/C,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAChC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI;KACpC,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type Transport } from "@intent-engine/client";
2
+ import type { Command } from "./command-types.js";
3
+ export type JudgeDigestCommand = Extract<Command, {
4
+ name: "judge-digest";
5
+ }>;
6
+ export declare const DIGEST_NEXT = "the Ledger shows this digest when it signs the release; compare the two before pressing approve, and reject on any difference";
7
+ export declare function judgeDigest(command: JudgeDigestCommand, transport: Transport): Promise<object>;
@@ -0,0 +1,27 @@
1
+ import { decodeParams, Kind } from "@intent-engine/core";
2
+ import { createClient, loadIntent } from "@intent-engine/client";
3
+ import { JudgeRefused } from "./judge-errors.js";
4
+ export const DIGEST_NEXT = "the Ledger shows this digest when it signs the release; compare the two before pressing approve, and reject on any difference";
5
+ const hex = (bytes) => Buffer.from(bytes).toString("hex");
6
+ export async function judgeDigest(command, transport) {
7
+ const { address, intent } = await loadIntent(transport, command.owner, command.nonce);
8
+ const params = decodeParams(intent.kind, Uint8Array.from(intent.params));
9
+ if (params.kind !== Kind.AttestedResult || params.specHash.every((b) => b === 0)) {
10
+ throw new JudgeRefused(`intent ${address} is not a proof escrow: an AttestedResult intent that commits a spec hash`);
11
+ }
12
+ const result = command.result ?? params.minResult;
13
+ if (result < params.minResult || result > params.maxResult) {
14
+ throw new JudgeRefused(`--result ${result} lies outside the results intent ${address} accepts, ${params.minResult} to ${params.maxResult}`);
15
+ }
16
+ const ballot = await createClient({ url: command.url, transport }).proofBallot({ owner: command.owner, nonce: command.nonce, payTo: command.payTo, result });
17
+ return {
18
+ intent: ballot.intent,
19
+ judge: ballot.attestor,
20
+ pay_to: command.payTo,
21
+ payee: ballot.payee,
22
+ result,
23
+ digest: hex(ballot.digest),
24
+ next: DIGEST_NEXT,
25
+ };
26
+ }
27
+ //# sourceMappingURL=judge-digest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judge-digest.js","sourceRoot":"","sources":["../../src/judge-digest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,MAAM,CAAC,MAAM,WAAW,GACtB,+HAA+H,CAAC;AAElI,MAAM,GAAG,GAAG,CAAC,KAAiB,EAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAE9E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B,EAAE,SAAoB;IACjF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,YAAY,CAAC,UAAU,OAAO,2EAA2E,CAAC,CAAC;IACvH,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC;IAClD,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3D,MAAM,IAAI,YAAY,CAAC,YAAY,MAAM,oCAAoC,OAAO,aAAa,MAAM,CAAC,SAAS,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9I,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7J,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,QAAQ;QACtB,MAAM,EAAE,OAAO,CAAC,KAAK;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM;QACN,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1B,IAAI,EAAE,WAAW;KAClB,CAAC;AACJ,CAAC"}
@@ -2,14 +2,15 @@ import { createHash } from "node:crypto";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { resolve } from "node:path";
4
4
  import { getIntentDecoder, INTENT_ENGINE_PROGRAM_ADDRESS, IntentStatus } from "@intent-engine/core";
5
- import { chainTime, deliveryRecord } from "@intent-engine/client";
5
+ import { chainTime, deliveryRecord, deviceJudgeReady, isDevice, unopenedOf } from "@intent-engine/client";
6
6
  import { removeCopy } from "./artifact.js";
7
7
  import { holdSignals } from "./check-process.js";
8
8
  import { DeliveryUnfit, fetchDelivery } from "./delivery-fetch.js";
9
9
  import { JudgeInterrupted, JudgeRefused } from "./judge-errors.js";
10
- import { escrowFor, judge, pagesRead } from "./judge.js";
10
+ import { escrowFor, historyRefused, judge, judgeOpeners, pagesRead, unopenedRefusal } from "./judge.js";
11
+ import { messageSigner } from "./ledger-keys.js";
11
12
  export const SEALED_ELSEWHERE = "is sealed to other wallets than this judge, so its url cannot be read";
12
- const earlier = (a, b) => (a.slot < b.slot ? -1 : a.slot > b.slot ? 1 : a.signature < b.signature ? -1 : a.signature > b.signature ? 1 : 0);
13
+ const earlier = (a, b) => (a.slot < b.slot ? -1 : a.slot > b.slot ? 1 : Buffer.compare(Buffer.from(a.signature), Buffer.from(b.signature)));
13
14
  function unjudged(deliveries, seen) {
14
15
  return deliveries.filter(({ signature }) => !seen.has(signature)).sort(earlier);
15
16
  }
@@ -59,9 +60,13 @@ async function judgeDelivery(command, runtime, transport, delivery, interrupted,
59
60
  }
60
61
  }
61
62
  export async function watchJudge(command, interval, runtime, transport, out) {
62
- const signer = await runtime.loadSigner(command.keypair);
63
- const keypair = await runtime.loadKeypair(command.keypair).catch(() => undefined);
64
- const { address, attestor, specHash } = await escrowFor(transport, signer.address, command.owner, command.nonce);
63
+ const signer = await messageSigner(runtime, command.keypair);
64
+ const keypair = await judgeOpeners(runtime, command, isDevice(signer));
65
+ const { address, attestor, committee, specHash } = await escrowFor(transport, signer.address, command.owner, command.nonce);
66
+ const confirm = command.confirmUrl === undefined ? undefined : runtime.transport(command.confirmUrl);
67
+ if (isDevice(signer)) {
68
+ await deviceJudgeReady(transport, signer.address, address).catch(historyRefused);
69
+ }
65
70
  const specSha256 = createHash("sha256").update(await readFile(resolve(command.spec))).digest("hex");
66
71
  if (specSha256 !== specHash) {
67
72
  throw new JudgeRefused(`--spec ${command.spec} has sha256 ${specSha256}, but intent ${address} commits ${specHash}`);
@@ -88,6 +93,11 @@ export async function watchJudge(command, interval, runtime, transport, out) {
88
93
  if (!record.complete) {
89
94
  throw new JudgeRefused(`the delivery record of intent ${address} is incomplete because the judge's history is too long to read in full or the RPC node cannot serve all of it; nothing was run or paid. ${pagesRead(record.pages)}`);
90
95
  }
96
+ const recipients = committee?.members ?? [attestor];
97
+ const { missing } = await unopenedOf(transport, { judge: signer.address, recipients, deliveries: record.deliveries, first: null, openers: keypair, confirm }).catch(historyRefused);
98
+ if (missing !== null) {
99
+ throw new JudgeRefused(unopenedRefusal(missing, command.keypair, isDevice(signer)));
100
+ }
91
101
  const fresh = unjudged(record.deliveries, seen);
92
102
  for (const first of fresh) {
93
103
  if (signals.caught() !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"judge-watch.js","sourceRoot":"","sources":["../../src/judge-watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,SAAS,EAAiB,cAAc,EAAkB,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAgB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAwB,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAqB,SAAS,EAAgB,MAAM,YAAY,CAAC;AAS1F,MAAM,CAAC,MAAM,gBAAgB,GAAG,uEAAuE,CAAC;AAExG,MAAM,OAAO,GAAG,CAAC,CAAW,EAAE,CAAW,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAExK,SAAS,QAAQ,CAAC,UAA+B,EAAE,IAAyB;IAC1E,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7H,KAAK,UAAU,SAAS,CAAC,SAAoB,EAAE,MAAe;IAC5D,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrG,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,OAAO,MAAM,KAAK,YAAY,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,OAAqB,EACrB,OAAgB,EAChB,SAAoB,EACpB,QAAkB,EAClB,WAA8C,EAC9C,IAAiB;IAEjB,MAAM,SAAS,GAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC3G,MAAM,MAAM,GAAG,CAAC,KAAY,EAAW,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACtI,IAAI,QAAQ,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,IAAI,aAAa,CAAC,gBAAgB,QAAQ,CAAC,SAAS,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,IAAI,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;IACxG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAqB,EAAE,QAAgB,EAAE,OAAgB,EAAE,SAAoB,EAAE,GAA2B;IAC3I,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAClF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjH,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpG,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,YAAY,CAAC,UAAU,OAAO,CAAC,IAAI,eAAe,UAAU,gBAAgB,OAAO,YAAY,QAAQ,EAAE,CAAC,CAAC;IACvH,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;IACnC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,CAAC,GAAY,EAAU,EAAE;QACvC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,IAAI,CAAC;QACH,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;gBAC3C,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7F,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,IAAI,YAAY,CACpB,iCAAiC,OAAO,2IAA2I,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7M,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,SAAS,EAAE,CAAC;oBACnC,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;oBAC3C,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC9F,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,CAAC,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnB,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;oBAC/B,OAAO,OAAO,CAAC,WAAW,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC3F,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACpF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACtC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"judge-watch.js","sourceRoot":"","sources":["../../src/judge-watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,SAAS,EAAiB,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAkB,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACzI,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAgB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAwB,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAqB,YAAY,EAAE,SAAS,EAAE,eAAe,EAAgB,MAAM,YAAY,CAAC;AACzI,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,uEAAuE,CAAC;AAExG,MAAM,OAAO,GAAG,CAAC,CAAW,EAAE,CAAW,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAExK,SAAS,QAAQ,CAAC,UAA+B,EAAE,IAAyB;IAC1E,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7H,KAAK,UAAU,SAAS,CAAC,SAAoB,EAAE,MAAe;IAC5D,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrG,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,OAAO,MAAM,KAAK,YAAY,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,OAAqB,EACrB,OAAgB,EAChB,SAAoB,EACpB,QAAkB,EAClB,WAA8C,EAC9C,IAAiB;IAEjB,MAAM,SAAS,GAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC3G,MAAM,MAAM,GAAG,CAAC,KAAY,EAAW,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACtI,IAAI,QAAQ,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,IAAI,aAAa,CAAC,gBAAgB,QAAQ,CAAC,SAAS,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,IAAI,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;IACxG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAqB,EAAE,QAAgB,EAAE,OAAgB,EAAE,SAAoB,EAAE,GAA2B;IAC3I,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5H,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrG,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpG,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,YAAY,CAAC,UAAU,OAAO,CAAC,IAAI,eAAe,UAAU,gBAAgB,OAAO,YAAY,QAAQ,EAAE,CAAC,CAAC;IACvH,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;IACnC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,CAAC,GAAY,EAAU,EAAE;QACvC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,IAAI,CAAC;QACH,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;gBAC3C,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7F,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,IAAI,YAAY,CACpB,iCAAiC,OAAO,2IAA2I,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7M,CAAC;YACJ,CAAC;YACD,MAAM,UAAU,GAAG,SAAS,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACpL,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,YAAY,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,SAAS,EAAE,CAAC;oBACnC,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;oBAC3C,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC9F,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,CAAC,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnB,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;oBAC/B,OAAO,OAAO,CAAC,WAAW,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC3F,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACpF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACtC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { type Address, type Signature } from "@solana/kit";
2
- import { type CommitteeView, type Transport } from "@intent-engine/client";
2
+ import { type DeliveryOpener } from "@intent-engine/core";
3
+ import { type CommitteeView, type Transport, type MissingKey } from "@intent-engine/client";
3
4
  import type { Command } from "./args.js";
4
5
  import { type VoteFile } from "./committee-commands.js";
5
6
  import type { Runtime } from "./commands.js";
@@ -36,12 +37,28 @@ export type Verdict = {
36
37
  payTo: Address;
37
38
  signature: Signature | null;
38
39
  simulated?: SimulatedRelease;
40
+ digest?: string;
41
+ feePayer?: Address;
39
42
  committee?: Address;
40
43
  vote?: VoteFile;
44
+ openings?: {
45
+ memo: string;
46
+ signature: Signature | null;
47
+ error?: string;
48
+ }[];
49
+ skipped?: string[];
41
50
  next?: string;
42
51
  cleanup?: string;
43
52
  };
44
53
  export declare const pagesRead: (pages: number) => string;
54
+ export declare const sealedOnDevice: (path: string, intent: Address) => string;
55
+ export declare const DEVICE_VOTE_PREVIEW = "nothing was signed; with --yes the Ledger signs only this member's vote, one message that lists every member's key and this digest: compare it with committee vote's preview on another machine before pressing approve";
56
+ export declare const historyRefused: (error: unknown) => never;
57
+ export declare const GIVE_KEY_FLAG = "pass the encryption key file of that key with --encryption-keypair";
58
+ export declare const unopenedRefusal: (missing: MissingKey, path: string, device: boolean) => string;
59
+ export declare function judgeOpeners(runtime: Runtime, command: JudgeCommand, device: boolean): Promise<DeliveryOpener[]>;
60
+ export declare const DEVICE_PREVIEW = "nothing was sent; with --yes the Ledger signs only the release message and shows this digest: compare it with judge digest run on another machine before pressing approve, and reject on any difference";
61
+ export declare const FEE_PAYER_IS_JUDGE = "--fee-payer is the judge's own key; name another key file to sign and pay the release";
45
62
  export declare const resultOutside: (result: bigint, intent: Address, min: bigint, max: bigint) => string;
46
63
  export declare function escrowFor(transport: Transport, judge: Address, owner: Address, nonce: bigint): Promise<{
47
64
  address: Address<string>;
package/dist/src/judge.js CHANGED
@@ -2,8 +2,8 @@ import { createHash } from "node:crypto";
2
2
  import { readFile, rm, writeFile } from "node:fs/promises";
3
3
  import { basename, resolve } from "node:path";
4
4
  import { getBase58Decoder } from "@solana/kit";
5
- import { decodeParams, IntentStatus, Kind } from "@intent-engine/core";
6
- import { chainTime, confirmOnBoth, createClient, deliveryRecord, firstDelivery, loadCommittee, loadIntent, SIGNATURE_PAGE, } from "@intent-engine/client";
5
+ import { decodeParams, IntentStatus, Kind, openingMemo, UNOPENED } from "@intent-engine/core";
6
+ import { chainTime, confirmOnBoth, createClient, deliveryRecord, firstDelivery, isDevice, isLedgerPath, earlierSalts, loadCommittee, loadIntent, messageOnly, openingInstructions, openingsOf, SIGNATURE_PAGE, missingKey, deviceJudgeReady, NoKeyAtCreation, ProfileHistoryIncomplete, skippedNote, unopenedOf, } from "@intent-engine/client";
7
7
  import { NOT_SENT } from "./flows.js";
8
8
  import { memberVote } from "./committee-commands.js";
9
9
  import { JudgeInterrupted, JudgeRefused, SIGNAL_EXIT } from "./judge-errors.js";
@@ -14,6 +14,8 @@ import { judgeHost } from "./host-judge.js";
14
14
  import { judgeNode } from "./node-judge.js";
15
15
  import { invitedTo, notInvited } from "./invites.js";
16
16
  import { simulateRelease } from "./release-simulation.js";
17
+ import { messageSigner } from "./ledger-keys.js";
18
+ import { loadEncryptionKeys } from "./sealed-commands.js";
17
19
  import { drawBeacon, judgeDraw } from "./draw.js";
18
20
  import { casesOf, judgeViper, pinnedWasm, runOf, VIPER_ENGINE_COMMIT, VIPER_WASM_SHA256 } from "./viper.js";
19
21
  export { JudgeInterrupted, JudgeRefused, SIGNAL_EXIT } from "./judge-errors.js";
@@ -24,6 +26,20 @@ export const VOTE_NEXT = "the check passed and this member's vote is in the verd
24
26
  const hex = (bytes) => Buffer.from(bytes).toString("hex");
25
27
  const reasonOf = (error) => (error instanceof Error ? error.message : String(error));
26
28
  export const pagesRead = (pages) => `It read ${pages} ${pages === 1 ? "page" : "pages"} of ${SIGNATURE_PAGE} signatures; a higher --max-pages reads further, but does not help when the RPC node's ledger does not reach back to the escrow's creation or the node cannot page signatures or report its first available slot`;
29
+ export const sealedOnDevice = (path, intent) => `a judge on the Ledger ${path} cannot open the salts sealed in the announcements for intent ${intent}, so it cannot know which announcement came first; pass --encryption-keypair with the encryption key file whose public key its profile publishes, or judge with a key file; nothing was run or paid`;
30
+ export const DEVICE_VOTE_PREVIEW = "nothing was signed; with --yes the Ledger signs only this member's vote, one message that lists every member's key and this digest: compare it with committee vote's preview on another machine before pressing approve";
31
+ export const historyRefused = (error) => {
32
+ throw error instanceof ProfileHistoryIncomplete || error instanceof NoKeyAtCreation ? new JudgeRefused(error.message) : error;
33
+ };
34
+ export const GIVE_KEY_FLAG = "pass the encryption key file of that key with --encryption-keypair";
35
+ export const unopenedRefusal = (missing, path, device) => missing.key.kind === "wallet" && device ? sealedOnDevice(path, missing.delivery.intent) : missingKey(missing, GIVE_KEY_FLAG);
36
+ export async function judgeOpeners(runtime, command, device) {
37
+ const own = device ? [] : [await runtime.loadKeypair(command.keypair)];
38
+ const sealed = await loadEncryptionKeys(runtime, command.encryptionKeypairs);
39
+ return [...own, ...sealed];
40
+ }
41
+ export const DEVICE_PREVIEW = "nothing was sent; with --yes the Ledger signs only the release message and shows this digest: compare it with judge digest run on another machine before pressing approve, and reject on any difference";
42
+ export const FEE_PAYER_IS_JUDGE = "--fee-payer is the judge's own key; name another key file to sign and pay the release";
27
43
  export const resultOutside = (result, intent, min, max) => `--result ${result} lies outside the results intent ${intent} accepts, ${min} to ${max}; nothing was run or paid`;
28
44
  export async function escrowFor(transport, judge, owner, nonce) {
29
45
  const { address, intent } = await loadIntent(transport, owner, nonce);
@@ -55,8 +71,16 @@ export async function judge(command, runtime, transport) {
55
71
  await rm(command.verdict, { force: true });
56
72
  }
57
73
  await sandboxReady(command.sandbox, dockerEnv(process.env));
58
- const signer = await runtime.loadSigner(command.keypair);
74
+ const held = await messageSigner(runtime, command.keypair);
75
+ const signer = isDevice(held) ? messageOnly(held) : held;
76
+ const feePayer = command.feePayer === undefined ? undefined : await runtime.loadSigner(command.feePayer);
77
+ if (feePayer?.address === signer.address) {
78
+ throw new JudgeRefused(FEE_PAYER_IS_JUDGE);
79
+ }
59
80
  const { address, attestor, committee, specHash, minResult, maxResult } = await escrowFor(transport, signer.address, command.owner, command.nonce);
81
+ if (isDevice(signer)) {
82
+ await deviceJudgeReady(transport, signer.address, address).catch(historyRefused);
83
+ }
60
84
  const result = command.result ?? minResult;
61
85
  if (result < minResult || result > maxResult) {
62
86
  throw new JudgeRefused(resultOutside(result, address, minResult, maxResult));
@@ -74,11 +98,20 @@ export async function judge(command, runtime, transport) {
74
98
  }
75
99
  const sha256 = read.sha256;
76
100
  const check = command.check === undefined ? undefined : { name: basename(resolve(command.check)), read: await readArtifact(resolve(command.check)) };
77
- const record = await deliveryRecord(transport, attestor, address, command.maxPages);
101
+ const keypair = await judgeOpeners(runtime, command, isDevice(signer));
102
+ const record = await deliveryRecord(transport, attestor, address, command.maxPages, keypair);
78
103
  if (!record.complete) {
79
104
  throw new JudgeRefused(`the delivery record is incomplete because the judge's history is too long to read in full or the RPC node cannot serve all of it, so the earliest announcer of the artifact with sha256 ${sha256} for intent ${address} cannot be known; nothing was run or paid. ${pagesRead(record.pages)}`);
80
105
  }
81
106
  const first = firstDelivery(record.deliveries, sha256);
107
+ const confirm = command.confirmUrl === undefined ? undefined : runtime.transport(command.confirmUrl);
108
+ const recipients = committee?.members ?? [attestor];
109
+ const { missing, skipped } = await unopenedOf(transport, { judge: signer.address, recipients, deliveries: record.deliveries, first, openers: keypair, confirm }).catch(historyRefused);
110
+ if (missing !== null) {
111
+ throw new JudgeRefused(unopenedRefusal(missing, command.keypair, isDevice(signer)));
112
+ }
113
+ const salt = first?.salt;
114
+ const earlier = first === null ? [] : earlierSalts(record.deliveries, first);
82
115
  const payTo = command.payTo ?? first?.worker;
83
116
  if (payTo === undefined) {
84
117
  throw new JudgeRefused(`nobody announced the artifact with sha256 ${sha256} for intent ${address}; pass --pay-to to pay a worker who did not announce it`);
@@ -94,8 +127,8 @@ export async function judge(command, runtime, transport) {
94
127
  const beacon = draw === undefined ? undefined : await drawBeacon(transport, (seconds) => runtime.sleep(seconds), first, draw, address, sha256);
95
128
  const signals = holdSignals();
96
129
  try {
97
- const confirm = command.confirmUrl === undefined ? undefined : runtime.transport(command.confirmUrl);
98
- return await checkAndSettle(command, transport, signer, signals, { address, attestor, committee, specHash, sha256, payTo, result, read, specBytes, check, viper, beacon, confirm });
130
+ const judged = { address, attestor, committee, specHash, sha256, salt, earlier, payTo, result, read, specBytes, check, viper, beacon, confirm, keypair, feePayer, skipped: skipped.map(skippedNote) };
131
+ return await checkAndSettle(command, transport, signer, signals, judged);
99
132
  }
100
133
  finally {
101
134
  signals.release();
@@ -104,6 +137,7 @@ export async function judge(command, runtime, transport) {
104
137
  export const notSent = (signal) => `the check passed, but ${signal} arrived before the release was sent; nothing was paid and no verdict was written`;
105
138
  export const mayHaveLanded = (signal, address, signature) => `the check passed and the release was sent${signature === undefined ? "" : ` in ${signature}`}; a second ${signal} stopped the judge before the send was confirmed, so the release may have landed. Read intent ${address} before judging it again; no verdict was written`;
106
139
  function sendRelease(command, transport, signer, signals, release) {
140
+ const payer = release.feePayer ?? signer;
107
141
  return new Promise((done, failed) => {
108
142
  let sent = false;
109
143
  let signature;
@@ -114,8 +148,8 @@ function sendRelease(command, transport, signer, signals, release) {
114
148
  throw new JudgeInterrupted(caught, notSent(caught));
115
149
  }
116
150
  sent = true;
117
- const signed = await signer.signTransactions(transactions, config);
118
- const own = signed[0]?.[signer.address];
151
+ const signed = await payer.signTransactions(transactions, config);
152
+ const own = signed[0]?.[payer.address];
119
153
  signature = own === undefined ? signature : getBase58Decoder().decode(own);
120
154
  return signed;
121
155
  };
@@ -132,12 +166,17 @@ function sendRelease(command, transport, signer, signals, release) {
132
166
  });
133
167
  createClient({ url: command.url, transport })
134
168
  .settleProof({
135
- judge: Object.freeze({ ...signer, signTransactions }),
136
169
  owner: command.owner,
137
170
  nonce: command.nonce,
138
171
  payTo: release.payTo,
139
172
  result: release.result,
140
- deliveredSha256: release.sha256,
173
+ ...(release.feePayer === undefined
174
+ ? {
175
+ judge: Object.freeze({ ...signer, signTransactions }),
176
+ deliveredSha256: release.sha256,
177
+ ...(release.salt === undefined ? {} : { deliveredSalt: release.salt }),
178
+ }
179
+ : { judge: signer, feePayer: Object.freeze({ ...release.feePayer, signTransactions }) }),
141
180
  })
142
181
  .then((confirmed) => {
143
182
  signals.listen(() => undefined);
@@ -145,7 +184,20 @@ function sendRelease(command, transport, signer, signals, release) {
145
184
  }, failed);
146
185
  });
147
186
  }
148
- async function checkAndSettle(command, transport, signer, signals, { address, attestor, committee, specHash, sha256, payTo, result, read, specBytes, check: checkFiles, viper, beacon, confirm }) {
187
+ async function sendOpenings(transport, signer, attestor, intent, earlier) {
188
+ const sent = [];
189
+ for (const opening of openingsOf(intent, earlier)) {
190
+ const memo = openingMemo(opening);
191
+ try {
192
+ sent.push({ memo, signature: (await transport.send(openingInstructions(signer, attestor, opening), signer)) });
193
+ }
194
+ catch (error) {
195
+ sent.push({ memo, signature: null, error: reasonOf(error) });
196
+ }
197
+ }
198
+ return sent;
199
+ }
200
+ async function checkAndSettle(command, transport, signer, signals, { address, attestor, committee, specHash, sha256, salt, earlier, payTo, result, read, specBytes, check: checkFiles, viper, beacon, confirm, keypair, feePayer, skipped }) {
149
201
  const { sandbox } = command;
150
202
  let check = { exitCode: null, timedOut: false };
151
203
  let cases;
@@ -201,18 +253,28 @@ async function checkAndSettle(command, transport, signer, signals, { address, at
201
253
  const agreed = (judged) => judged !== undefined && judged.total > 0 && judged.passed === judged.total;
202
254
  const passed = cases === undefined ? check.exitCode === 0 : agreed(cases) && agreed(host) && (beacon === undefined || agreed(drawn)) && (plainNode === undefined || agreed(node));
203
255
  if (passed && confirm !== undefined) {
204
- await confirmOnBoth(transport, confirm, { intent: address, attestor, sha256, pages: command.maxPages, payees: [payTo] });
256
+ await confirmOnBoth(transport, confirm, { intent: address, attestor, sha256, pages: command.maxPages, payees: [payTo], keypair });
205
257
  }
206
258
  let signature = null;
207
259
  let vote;
208
260
  let simulated;
261
+ let openingsSent;
262
+ let digest = passed && committee === null && isDevice(signer)
263
+ ? hex((await createClient({ url: command.url, transport }).proofBallot({ owner: command.owner, nonce: command.nonce, payTo, result })).digest)
264
+ : undefined;
209
265
  if (passed && committee !== null) {
210
266
  const target = { owner: command.owner, nonce: command.nonce, payTo, result };
211
- vote = await memberVote(signer, await createClient({ url: command.url, transport }).committeeBallot(target), target);
267
+ const ballot = await createClient({ url: command.url, transport }).committeeBallot(target);
268
+ if (isDevice(signer) && !command.yes) {
269
+ digest = hex(ballot.digest);
270
+ }
271
+ else {
272
+ vote = await memberVote(signer, ballot, target, { salt, earlier: earlier.length === 0 ? undefined : earlier.map((one) => one ?? UNOPENED) });
273
+ }
212
274
  }
213
275
  else if (passed && command.yes) {
214
276
  try {
215
- signature = await sendRelease(command, transport, signer, signals, { address, payTo, result, sha256 });
277
+ signature = await sendRelease(command, transport, signer, signals, { address, payTo, result, sha256, salt, feePayer });
216
278
  }
217
279
  catch (error) {
218
280
  if (error instanceof JudgeInterrupted) {
@@ -225,8 +287,11 @@ async function checkAndSettle(command, transport, signer, signals, { address, at
225
287
  throw error;
226
288
  }
227
289
  }
228
- else if (passed) {
229
- simulated = await simulateRelease(transport, signer, { url: command.url, owner: command.owner, nonce: command.nonce, payTo, result, sha256 });
290
+ else if (passed && !isDevice(signer)) {
291
+ simulated = await simulateRelease(transport, signer, { url: command.url, owner: command.owner, nonce: command.nonce, payTo, result, sha256, salt });
292
+ }
293
+ if (signature !== null && earlier.length > 0) {
294
+ openingsSent = await sendOpenings(transport, feePayer ?? signer, attestor, address, earlier);
230
295
  }
231
296
  const verdict = {
232
297
  intent: address,
@@ -244,10 +309,15 @@ async function checkAndSettle(command, transport, signer, signals, { address, at
244
309
  payTo,
245
310
  signature,
246
311
  ...(simulated === undefined ? {} : { simulated }),
312
+ ...(digest === undefined ? {} : { digest }),
313
+ ...(feePayer === undefined ? {} : { feePayer: feePayer.address }),
247
314
  ...(committee === null ? {} : { committee: committee.address }),
248
315
  ...(vote === undefined ? {} : { vote, next: VOTE_NEXT }),
249
- ...(passed && committee === null && !command.yes ? { next: NOT_SENT } : {}),
316
+ ...(passed && committee !== null && vote === undefined ? { next: DEVICE_VOTE_PREVIEW } : {}),
317
+ ...(openingsSent === undefined ? {} : { openings: openingsSent }),
318
+ ...(passed && committee === null && !command.yes ? { next: digest === undefined ? NOT_SENT : DEVICE_PREVIEW } : {}),
250
319
  ...(cleanup !== undefined ? { cleanup } : {}),
320
+ ...(skipped.length === 0 ? {} : { skipped }),
251
321
  };
252
322
  if (command.verdict !== undefined) {
253
323
  await writeFile(command.verdict, `${JSON.stringify(verdict, null, 2)}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/judge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/judge.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { TransactionPartialSigner } from "@solana/kit";
1
+ import { type KeyPairSigner, type MessagePartialSigner, type TransactionPartialSigner } from "@solana/kit";
2
2
  import type { Command } from "./command-types.js";
3
3
  import type { Runtime } from "./runtime.js";
4
4
  export declare const LEDGER_COMMANDS: string[];
@@ -7,3 +7,6 @@ export declare const needsKeyFile: (name: string, path: string) => string;
7
7
  export declare const signsOnDevice: (command: Command) => boolean;
8
8
  export declare function checkLedgerPaths(command: Command, saved?: string): void;
9
9
  export declare const transactionSigner: (runtime: Runtime, path: string) => Promise<TransactionPartialSigner>;
10
+ export type MessageSigner = TransactionPartialSigner & MessagePartialSigner;
11
+ export declare const messageSigner: (runtime: Runtime, path: string) => Promise<MessageSigner>;
12
+ export declare function keyFileSigner(signer: MessageSigner, name: string, path: string): KeyPairSigner;