@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
@@ -27,6 +27,9 @@ export declare function escrowReceipt(transport: Transport, owner: Address, nonc
27
27
  signature: string;
28
28
  delivered_sha256?: string;
29
29
  matches?: boolean;
30
+ delivered_salt?: string;
31
+ valid?: boolean;
32
+ refuted_by?: import("@solana/kit").Signature;
30
33
  paid: string;
31
34
  mint?: Address;
32
35
  recipients: bigint;
@@ -40,6 +43,9 @@ export declare function escrowReceipt(transport: Transport, owner: Address, nonc
40
43
  signature: string;
41
44
  delivered_sha256?: string;
42
45
  matches?: boolean;
46
+ delivered_salt?: string;
47
+ valid?: boolean;
48
+ refuted_by?: import("@solana/kit").Signature;
43
49
  paid_to?: Address;
44
50
  payee: Address;
45
51
  paid: string;
@@ -1,6 +1,6 @@
1
1
  import { getAddressDecoder } from "@solana/kit";
2
2
  import { findIntentPda, formatAmount, NATIVE_MINT } from "@intent-engine/core";
3
- import { intentAt, memoized, mintOf, recordedDelivery, unmemoized } from "@intent-engine/client";
3
+ import { intentAt, memoized, mintOf, paidWalletsOf, recordedRelease, releaseStandingOf, unmemoized } from "@intent-engine/client";
4
4
  import { define } from "../actions.js";
5
5
  import { tool } from "../names.js";
6
6
  import { AgentRefusal } from "../problems.js";
@@ -46,6 +46,9 @@ const receiptOutput = object({
46
46
  signature: optional(text("the release's transaction")),
47
47
  delivered_sha256: optional(text("the sha256 the release recorded, if any, in its own memo or in a follow-up transaction its attestor signed")),
48
48
  matches: optional(flag("whether sha256 equals the recorded one")),
49
+ delivered_salt: optional(text("the payee's salt the release recorded, which opens the payee's announcement")),
50
+ valid: optional(flag("given with delivered_salt: whether that salt opens an announcement by the payee to the recorded sha256")),
51
+ refuted_by: optional(text("an earlier announcement of the same work that a published opening shows, so the release paid a later announcer")),
49
52
  next: optional(text()),
50
53
  });
51
54
  export const walletReceipt = define({
@@ -68,7 +71,8 @@ export const walletReceipt = define({
68
71
  if (!wrapped) {
69
72
  return receipt;
70
73
  }
71
- const next = "next" in receipt && typeof receipt.next === "string" ? `${receipt.next}; ${PAID_WRAPPED}` : PAID_WRAPPED;
74
+ const prior = "next" in receipt ? receipt.next : undefined;
75
+ const next = typeof prior === "string" ? `${prior}; ${PAID_WRAPPED}` : PAID_WRAPPED;
72
76
  return { ...receipt, next };
73
77
  },
74
78
  });
@@ -105,7 +109,19 @@ export async function escrowReceipt(transport, owner, nonce, sha256, releaseSign
105
109
  }
106
110
  const fields = release.event.fields;
107
111
  let mint = createdMint([...transactions, ...(creation === null || creation === undefined ? [] : [creation])], intent) ?? releasedMint(tx, intent, fields["payee"]);
108
- const recorded = recordedDelivery(transactions, tx, fields["attestor"]) ?? undefined;
112
+ const recordedWork = recordedRelease(transactions, tx, fields["attestor"]);
113
+ const recorded = recordedWork?.sha256;
114
+ const standing = recordedWork?.salt === undefined
115
+ ? undefined
116
+ : await releaseStandingOf(transport, {
117
+ intent,
118
+ attestor: fields["attestor"],
119
+ release: tx,
120
+ recorded: { sha256: recordedWork.sha256, salt: recordedWork.salt },
121
+ payees: await paidWalletsOf(transport, { event: release.event, transaction: tx }, intent),
122
+ createdAt: creation?.blockTime ?? null,
123
+ from: creation?.slot ?? null,
124
+ });
109
125
  const common = {
110
126
  intent,
111
127
  released: true,
@@ -115,6 +131,8 @@ export async function escrowReceipt(transport, owner, nonce, sha256, releaseSign
115
131
  signature: tx.signature,
116
132
  ...(recorded === undefined ? {} : { delivered_sha256: recorded }),
117
133
  ...(wanted === undefined ? {} : { matches: wanted === recorded }),
134
+ ...(recordedWork?.salt === undefined ? {} : { delivered_salt: recordedWork.salt }),
135
+ ...(standing === undefined ? {} : { valid: standing.valid, ...(standing.refutedBy === null ? {} : { refuted_by: standing.refutedBy }) }),
118
136
  };
119
137
  if (release.event.name === "IntentSplit") {
120
138
  mint ??= await heldMint(transport, intent);
@@ -1 +1 @@
1
- {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../../../src/agent/wallet/receipt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../../../src/agent/wallet/receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAoB,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAkB,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClJ,OAAO,EAAqB,MAAM,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE5H,MAAM,CAAC,MAAM,YAAY,GAAG,oEAAoE,CAAC;AAEjG,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC;AAEpG,MAAM,CAAC,MAAM,eAAe,GAC1B,+XAA+X,CAAC;AAElY,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,4CAA4C,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC;AAE1I,MAAM,CAAC,MAAM,QAAQ,GAAG,gEAAgE,CAAC;AAEzF,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,uEAAuE,CAAC,CAAC,CAAC;AAI1H,KAAK,UAAU,aAAa,CAAC,GAAiB,EAAE,IAAY,EAAE,IAAwB,EAAE,IAAgD;IACtI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,OAA4B,CAAC;IACjC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;QACjC,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,OAAkB,CAAC;IAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,aAAa,GAAG,MAAM,CAAC;IAC3B,MAAM,EAAE,OAAO,EAAE;IACjB,QAAQ,EAAE,IAAI,EAAE;IAChB,QAAQ,EAAE,QAAQ,CAChB,IAAI,CACF,yQAAyQ,CAC1Q,CACF;IACD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACzD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;IAC9D,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACvD,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACrD,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;IACxE,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACtD,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,4GAA4G,CAAC,CAAC;IAC9I,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACjE,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;IAC7G,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,wGAAwG,CAAC,CAAC;IAC/H,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,gHAAgH,CAAC,CAAC;IAC5I,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;IAClC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAC5B,KAAK,EAAE,yBAAyB;IAChC,WAAW,EAAE,qMAAqM,IAAI,CAAC,gBAAgB,CAAC,sHAAsH;IAC9V,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC;QACzF,KAAK,EAAE,MAAM,CAAC,2BAA2B,CAAC;QAC1C,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;QACjH,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtC,IAAI,EAAE,SAAS;KAChB,CAAC;IACF,MAAM,EAAE,aAAa;IACrB,GAAG,EAAE,KAAK,EAAE,GAAiB,EAAE,KAAK,EAAE,EAAE;QACtC,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/K,MAAM,OAAO,GAAG,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;QACjG,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,KAAK,GAAY,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QACpF,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;IAC/B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC;IACzB,KAAK,EAAE,kCAAkC;IACzC,WAAW,EAAE,+dAA+d;IAC5e,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,OAAO,CAAC,iCAAiC,CAAC;QACjD,KAAK,EAAE,MAAM,CAAC,2BAA2B,CAAC;QAC1C,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC;QAC9H,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtC,IAAI,EAAE,SAAS;KAChB,CAAC;IACF,MAAM,EAAE,aAAa;IACrB,GAAG,EAAE,KAAK,EAAE,GAAiB,EAAE,KAAK,EAAE,EAAE,CACtC,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CAChJ,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAoB,EAAE,KAAc,EAAE,KAAa,EAAE,MAA0B,EAAE,gBAAyB;IAC5I,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC1C,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3H,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACpE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC;IACjK,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IACvB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAiC,CAAC;IAC/D,IAAI,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAwB,CAAC,CAAC;IAC1L,MAAM,YAAY,GAAG,eAAe,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAY,CAAC,CAAC;IACtF,MAAM,QAAQ,GAAG,YAAY,EAAE,MAAM,CAAC;IACtC,MAAM,QAAQ,GACZ,YAAY,EAAE,IAAI,KAAK,SAAS;QAC9B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,iBAAiB,CAAC,SAAS,EAAE;YACjC,MAAM;YACN,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAY;YACvC,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YAClE,MAAM,EAAE,MAAM,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAoB,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC;YACxG,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI;YACtC,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI;SAC7B,CAAC,CAAC;IACT,MAAM,MAAM,GAAG;QACb,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QACxE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAY;QACvC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAW;QAClC,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;QACjE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjE,GAAG,CAAC,YAAY,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;QAClF,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;KACzI,CAAC;IACF,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACzC,IAAI,KAAK,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3F,OAAO;YACL,GAAG,MAAM;YACT,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAW,EAAE,QAAQ,CAAC;YACrD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAW,CAAC;SACnD,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAY,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5I,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3F,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3L,OAAO;QACL,GAAG,MAAM;QACT,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACpD,KAAK;QACL,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAW,EAAE,QAAQ,CAAC;QACrD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { type Address, type Instruction, type TransactionSigner } from "@solana/kit";
2
- import { type Transport } from "@intent-engine/client";
2
+ import { type DeliveryOpeners, type Transport } from "@intent-engine/client";
3
3
  export declare const RELEASE_INPUT = "the release's transaction signature, as the attestor's release returned it; with it the release is read from that one transaction, with no search of the escrow's history";
4
4
  export declare const RELEASE_SIGNATURE = "must be a base58 transaction signature";
5
5
  export declare function releaseOf(signature: string | undefined): string | undefined;
@@ -16,6 +16,7 @@ export declare const recipientsUnread: (release: string) => string;
16
16
  export declare const followUpsUnknown: (release: string) => string;
17
17
  export declare const historyLagging: (release: string, intent: string) => string;
18
18
  export declare const otherLifecycle: (release: string, intent: string) => string;
19
+ export declare const SALTS_SEALED = "the announcements for this escrow seal their salts to the attestor's key, and this wallet's key file cannot be read to open them, so the earliest announcer of the work cannot be known and nothing is recorded; start the server with mcp --encryption-keypair naming the encryption key file whose public key the attestor's profile publishes, or sign with the attestor's key file";
19
20
  export declare const COVERAGE_UNPROVABLE = "this transport cannot report the first slot its RPC node keeps, so it cannot prove that the history read reaches back to the escrow's creation and an escrow without a release found reads as unknown rather than not released";
20
21
  export type Recording = {
21
22
  intent: Address;
@@ -27,5 +28,5 @@ export type Recording = {
27
28
  summary: string[];
28
29
  };
29
30
  export declare const coverageOf: (transport: Transport, text: string) => string;
30
- export declare function recordingOf(transport: Transport, judge: TransactionSigner, owner: Address, nonce: bigint, sha256: string, releaseSignature?: string): Promise<Recording>;
31
+ export declare function recordingOf(transport: Transport, judge: TransactionSigner, owner: Address, nonce: bigint, sha256: string, releaseSignature?: string, keypair?: DeliveryOpeners): Promise<Recording>;
31
32
  export declare const walletRecordDelivery: import("../actions.js").AnyAction;
@@ -1,13 +1,13 @@
1
1
  import { getAddressDecoder } from "@solana/kit";
2
2
  import { decodeParams, findAssociatedTokenAddress, findIntentPda, Kind } from "@intent-engine/core";
3
- import { creationProof, firstDelivery, followUpInstructions, followUpMemo, intentAt, lifecycleDeliveries, mintOf, recordedDelivery, } from "@intent-engine/client";
3
+ import { creationProof, firstDelivery, followUpInstructions, followUpMemo, intentAt, lifecycleDeliveries, mintOf, openersOf, recordedDelivery, } from "@intent-engine/client";
4
4
  import { define } from "../actions.js";
5
5
  import { tool } from "../names.js";
6
6
  import { AgentRefusal } from "../problems.js";
7
7
  import { InvalidInput, account, amount, flag, list, object, optional, text } from "../schema.js";
8
8
  import { preparedView } from "../shapes.js";
9
9
  import { prepare } from "../prepare.js";
10
- import { PREVIEW_FIRST, signerOf, sent, sha256Of } from "./guard.js";
10
+ import { deviceOutput, PREVIEW_FIRST, signerOf, sent, sha256Of, walletOpeners } from "./guard.js";
11
11
  import { HISTORY_TOO_LONG } from "./delivery.js";
12
12
  import { RELEASE_UNKNOWN, outlives, releaseLookup, aroundRelease, namedRelease, releasedMint, heldMint, splitRecipients } from "./releases.js";
13
13
  export const RELEASE_INPUT = "the release's transaction signature, as the attestor's release returned it; with it the release is read from that one transaction, with no search of the escrow's history";
@@ -32,13 +32,14 @@ export const recipientsUnread = (release) => `the recipients of the split ${rele
32
32
  export const followUpsUnknown = (release) => `the history after the release ${release} could not be read in full: it is longer than the pages read, the RPC node could not return some of its transactions yet, or it is too long to show that the escrow address was not made again since, so whether a follow-up already records a delivered sha256 for it is unknown and nothing more is recorded; when the node lagged, call again in a few seconds`;
33
33
  export const historyLagging = (release, intent) => `the node has not returned every transaction yet; call again in a few seconds: the history of the escrow ${intent} before the release ${release} holds a transaction the RPC node could not return, so where the escrow was made is not known yet and nothing is recorded`;
34
34
  export const otherLifecycle = (release, intent) => `the release ${release} belongs to an earlier lifecycle of the escrow address ${intent}, which was closed and made again at the same nonce since, so it is not a release of the escrow there now; leave release out to read the current one`;
35
+ export const SALTS_SEALED = "the announcements for this escrow seal their salts to the attestor's key, and this wallet's key file cannot be read to open them, so the earliest announcer of the work cannot be known and nothing is recorded; start the server with mcp --encryption-keypair naming the encryption key file whose public key the attestor's profile publishes, or sign with the attestor's key file";
35
36
  export const COVERAGE_UNPROVABLE = "this transport cannot report the first slot its RPC node keeps, so it cannot prove that the history read reaches back to the escrow's creation and an escrow without a release found reads as unknown rather than not released";
36
37
  const ZERO_HASH = /^0+$/;
37
38
  function heldProof(held) {
38
39
  const params = decodeParams(held.kind, Uint8Array.from(held.params));
39
40
  return params.kind === Kind.AttestedResult ? { attestor: params.attestor, specHash: Buffer.from(params.specHash).toString("hex") } : null;
40
41
  }
41
- async function announcedFor(transport, judge, intent, held, creation, release) {
42
+ async function announcedFor(transport, judge, intent, held, creation, release, keypair) {
42
43
  const proof = (creation === null ? null : creationProof(creation, intent)) ?? (held === null ? null : heldProof(held));
43
44
  if (proof === null) {
44
45
  if (held !== null) {
@@ -52,10 +53,11 @@ async function announcedFor(transport, judge, intent, held, creation, release) {
52
53
  if (proof.attestor !== judge) {
53
54
  throw new AgentRefusal("Unauthorized", releasedBy(proof.attestor, judge));
54
55
  }
55
- return lifecycleDeliveries(transport, judge, { intent, createdAt: creation?.blockTime ?? held?.createdAt ?? null, from: creation?.slot ?? null, to: release.slot });
56
+ const lifecycle = { intent, createdAt: creation?.blockTime ?? held?.createdAt ?? null, from: creation?.slot ?? null, to: release.slot };
57
+ return lifecycleDeliveries(transport, judge, lifecycle, undefined, keypair);
56
58
  }
57
59
  export const coverageOf = (transport, text) => (transport.firstAvailableSlot === undefined ? `${text}; ${COVERAGE_UNPROVABLE}` : text);
58
- export async function recordingOf(transport, judge, owner, nonce, sha256, releaseSignature) {
60
+ export async function recordingOf(transport, judge, owner, nonce, sha256, releaseSignature, keypair) {
59
61
  const [intent] = await findIntentPda({ owner, nonce });
60
62
  const lookup = releaseSignature === undefined ? await releaseLookup(transport, intent) : await namedRelease(transport, intent, releaseSignature);
61
63
  const { release, transactions, complete } = lookup;
@@ -84,10 +86,13 @@ export async function recordingOf(transport, judge, owner, nonce, sha256, releas
84
86
  }
85
87
  const creation = around === null ? (lookup.creation ?? null) : around.creation;
86
88
  const held = await intentAt(transport, intent);
87
- const record = await announcedFor(transport, judge.address, intent, held !== null && !outlives(held, tx, creation) ? held : null, creation, tx);
89
+ const record = await announcedFor(transport, judge.address, intent, held !== null && !outlives(held, tx, creation) ? held : null, creation, tx, keypair);
88
90
  if (!record.complete) {
89
91
  throw new AgentRefusal("HistoryTooLong", HISTORY_TOO_LONG);
90
92
  }
93
+ if (openersOf(keypair).length === 0 && record.deliveries.length > 0) {
94
+ throw new AgentRefusal("SealedSalts", SALTS_SEALED);
95
+ }
91
96
  const first = firstDelivery(record.deliveries, sha256);
92
97
  if (first === null) {
93
98
  throw new AgentRefusal("NotAnnounced", neverAnnounced(sha256, intent));
@@ -109,10 +114,10 @@ export async function recordingOf(transport, judge, owner, nonce, sha256, releas
109
114
  release: tx.signature,
110
115
  attestor,
111
116
  sha256,
112
- memo: followUpMemo(sha256, tx.signature),
113
- instructions: followUpInstructions(judge, intent, sha256, tx.signature),
117
+ memo: followUpMemo(sha256, tx.signature, first.salt),
118
+ instructions: followUpInstructions(judge, intent, sha256, tx.signature, first.salt),
114
119
  summary: [
115
- `Records: the delivered work's sha256 ${sha256} for the release ${tx.signature} of the escrow ${intent}, in a memo ${attestor} signs`,
120
+ `Records: the delivered work's sha256 ${sha256} and its announcer's salt for the release ${tx.signature} of the escrow ${intent}, in a memo ${attestor} signs`,
116
121
  `Notifies: the escrow ${intent}, with a transfer of 0 lamports, so the memo shows in its history`,
117
122
  "Costs: the transaction fee; no tokens move",
118
123
  ],
@@ -155,6 +160,7 @@ export const walletRecordDelivery = define({
155
160
  memo: text("the memo the transaction records"),
156
161
  summary: list(text(), 8),
157
162
  warnings: list(text(), 8),
163
+ ...deviceOutput,
158
164
  sent: flag(),
159
165
  signature: optional(text()),
160
166
  next: optional(text()),
@@ -162,7 +168,7 @@ export const walletRecordDelivery = define({
162
168
  run: async (ctx, input, call) => {
163
169
  const signer = await signerOf(ctx);
164
170
  const sha256 = sha256Of(input.sha256, "sha256");
165
- const recording = await recordingOf(ctx.transport, signer, input.owner, input.nonce, sha256, releaseOf(input.release));
171
+ const recording = await recordingOf(ctx.transport, signer, input.owner, input.nonce, sha256, releaseOf(input.release), await walletOpeners(ctx));
166
172
  const view = {
167
173
  intent: recording.intent,
168
174
  release: recording.release,
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../../../src/agent/wallet/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAA4C,MAAM,aAAa,CAAC;AACxG,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,aAAa,EAAe,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACjH,OAAO,EACL,aAAa,EAIb,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,QAAQ,EACR,mBAAmB,EACnB,MAAM,EACN,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAqB,MAAM,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE/I,MAAM,CAAC,MAAM,aAAa,GAAG,2KAA2K,CAAC;AAEzM,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AAEzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,wCAAwC,CAAC;AAE1E,MAAM,UAAU,SAAS,CAAC,SAA6B;IACrD,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE,CAC/C,4BAA4B,MAAM,2DAA2D,CAAC;AAEhG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,EAAE,CAChD,4DAA4D,MAAM,mDAAmD,CAAC;AAExH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAE,EAAE,CAC7D,4CAA4C,QAAQ,YAAY,MAAM,+DAA+D,CAAC;AAExI,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAC3C,cAAc,MAAM,4PAA4P,CAAC;AAEnR,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,EAAE,CACjE,cAAc,MAAM,+BAA+B,QAAQ,2JAA2J,CAAC;AAEzN,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,EAAE,CAChD,cAAc,MAAM,uGAAuG,CAAC;AAE9H,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE,CAC/D,uBAAuB,MAAM,iCAAiC,MAAM,iFAAiF,CAAC;AAExJ,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,KAAa,EAAE,EAAE,CACzE,GAAG,MAAM,mCAAmC,MAAM,kDAAkD,KAAK,kBAAkB,MAAM,2DAA2D,CAAC;AAE/L,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE,CAChE,GAAG,MAAM,mCAAmC,MAAM,yHAAyH,CAAC;AAE9K,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,EAAE,CAClD,+BAA+B,OAAO,8QAA8Q,CAAC;AAEvT,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,EAAE,CAClD,iCAAiC,OAAO,mWAAmW,CAAC;AAE9Y,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,MAAc,EAAE,EAAE,CAChE,2GAA2G,MAAM,uBAAuB,OAAO,2HAA2H,CAAC;AAE7Q,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,MAAc,EAAE,EAAE,CAChE,eAAe,OAAO,0DAA0D,MAAM,sJAAsJ,CAAC;AAE/O,MAAM,CAAC,MAAM,mBAAmB,GAC9B,gOAAgO,CAAC;AAInO,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5I,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,SAAoB,EACpB,KAAc,EACd,MAAe,EACf,IAAmB,EACnB,QAAkC,EAClC,OAA0B;IAE1B,MAAM,KAAK,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACvH,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAChI,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,mBAAmB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACtK,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAoB,EAAE,IAAY,EAAU,EAAE,CAAC,CAAC,SAAS,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,mBAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAElK,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAoB,EACpB,KAAwB,EACxB,KAAc,EACd,KAAa,EACb,MAAc,EACd,gBAAyB;IAEzB,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjJ,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACnD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;IACxJ,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAiC,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAY,CAAC;IAC/C,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC9D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACjG,IAAI,MAAM,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC/E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAChJ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,YAAY,CAAC,sBAAsB,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAY,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAChG,MAAM,IAAI,YAAY,CAAC,sBAAsB,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAY,CAAC,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO;QACL,MAAM;QACN,OAAO,EAAE,EAAE,CAAC,SAAS;QACrB,QAAQ;QACR,MAAM;QACN,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;QACxC,YAAY,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;QACvE,OAAO,EAAE;YACP,wCAAwC,MAAM,oBAAoB,EAAE,CAAC,SAAS,kBAAkB,MAAM,eAAe,QAAQ,QAAQ;YACrI,wBAAwB,MAAM,mEAAmE;YACjG,4CAA4C;SAC7C;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,SAAoB,EAAE,OAA0B,EAAE,KAAc,EAAE,MAAe,EAAE,MAAe;IAC1H,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC;IACjF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,QAAQ,KAAK,MAAM,CAAC;IAC7B,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC5C,OAAO,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;IAC3E,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,0BAA0B,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC;AAC7F,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;IACzC,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC;IACpC,KAAK,EAAE,sCAAsC;IAC7C,WAAW,EAAE,6EAA6E,IAAI,CAAC,qBAAqB,CAAC,iCAAiC,IAAI,CAAC,gBAAgB,CAAC,iKAAiK,aAAa,EAAE;IAC5V,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,KAAK;IAClB,KAAK,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,OAAO,CAAC,iCAAiC,CAAC;QACjD,KAAK,EAAE,MAAM,CAAC,2BAA2B,CAAC;QAC1C,MAAM,EAAE,IAAI,CAAC,uGAAuG,CAAC;QACrH,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;KACnE,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,EAAE;QACjB,OAAO,EAAE,IAAI,CAAC,2BAA2B,CAAC;QAC1C,MAAM,EAAE,IAAI,EAAE;QACd,IAAI,EAAE,IAAI,CAAC,kCAAkC,CAAC;QAC9C,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxB,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,IAAI,EAAE;QACZ,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;KACvB,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,GAAiB,EAAE,KAAK,EAAE,IAAU,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACvH,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,MAAM;YACN,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,YAAY,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;SAC7F,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../../../src/agent/wallet/record.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ export declare const SPLIT_FITS = 2;
2
2
  export declare const SPLIT_FITS_WITH_TABLE = 4;
3
3
  export declare const splitTooLarge: (size: number, recipients: number, withTable: boolean) => string;
4
4
  export declare const RECORDS_SPLIT: (delivered: string) => string;
5
+ export declare const unrecordedOnDevice: () => string;
5
6
  export declare const followUpFailed: (reason: string) => string;
6
7
  export declare const SPLIT_WEIGHTS_WRONG = "the weights must be whole basis points that add up to 10000";
7
8
  export declare const SPLIT_SIG_NEEDED = "every co-author must sign the split before send: true; preview returns the envelope each one signs";
@@ -1,6 +1,5 @@
1
- import { createHash } from "node:crypto";
2
1
  import { AccountRole, getBase16Decoder, getBase16Encoder } from "@solana/kit";
3
- import { attestedSplitMessage, attestedSplitPreimage, buildEd25519BatchInstruction, buildFillAttestedSplit, decodeParams, feeBpsFor, findIntentPda, formatAmount, getIntentDecoder, INTENT_ENGINE_PROGRAM_ADDRESS, IntentStatus, Kind, MAX_SPLIT_RECIPIENTS, NATIVE_MINT, releaseMemo, splitCommit, splitFees, splitPayout, settlementWarnings, } from "@intent-engine/core";
2
+ import { attestedSplitDigest, buildEd25519CosignInstruction, cosignEnvelope, buildFillAttestedSplit, decodeParams, findIntentPda, formatAmount, getIntentDecoder, INTENT_ENGINE_PROGRAM_ADDRESS, IntentStatus, Kind, MAX_SPLIT_RECIPIENTS, NATIVE_MINT, releaseMemo, splitCommit, splitFees, splitPayout, settlementWarnings, } from "@intent-engine/core";
4
3
  import { decodeLookupTable } from "@intent-engine/solver";
5
4
  import { chainTime, deliveryRecord, firstDelivery, followUpInstructions, followUpMemo, followUpOf, loadConfig, MEMO_PROGRAM_ADDRESS, mintOf, neverLanded, PACKET_DATA_SIZE, tokenAccountIfMissing, } from "@intent-engine/client";
6
5
  import { execute } from "../../flows.js";
@@ -14,13 +13,15 @@ import { preparedView } from "../shapes.js";
14
13
  import { walletRecipient } from "../owner.js";
15
14
  import { prepare, transactionSize } from "../prepare.js";
16
15
  import { STATUS } from "../../accounts.js";
17
- import { PREVIEW_APPROVAL, PREVIEW_APPROVAL_NEXT, WAIT_SCAN, signerOf, sent, sha256Of } from "./guard.js";
18
- import { RELEASE_CHANGED, approvalOf } from "./attest.js";
16
+ import { feePayerOf, PREVIEW_APPROVAL, PREVIEW_APPROVAL_NEXT, WAIT_SCAN, signerOf, sent, sha256Of, walletOpeners } from "./guard.js";
17
+ import { openingOutput, openingsFor, sendOpenings, skippedOf } from "./openings.js";
18
+ import { DEVICE_RELEASE, RELEASE_CHANGED, approvalOf } from "./attest.js";
19
19
  import { notInSplit, DELIVERED_NEEDED, ATTEST_PAGES, MAX_ATTEST_PAGES, MAX_PAGES_INPUT, HISTORY_TOO_LONG, notAttestor, confirmedRelease } from "./delivery.js";
20
20
  export const SPLIT_FITS = 2;
21
21
  export const SPLIT_FITS_WITH_TABLE = 4;
22
22
  export const splitTooLarge = (size, recipients, withTable) => `this ${recipients}-co-author split builds a ${size}-byte transaction without the delivery memo, over the ${PACKET_DATA_SIZE}-byte limit${withTable ? " even with the lookup table" : ""}; a release fits ${SPLIT_FITS} co-authors without a lookup table and ${SPLIT_FITS_WITH_TABLE} with one when their token accounts exist, and fewer when this wallet creates them in the same transaction${withTable ? ", so reduce recipients or pay the rest in a second release" : ", so pass lookup_table with the preview's lookup_accounts to fit more, or reduce recipients"}`;
23
23
  export const RECORDS_SPLIT = (delivered) => `Records: the delivered work's sha256 ${delivered}, in a memo this wallet signs with the release, or in a follow-up transaction this wallet signs right after it when the release has no room for the memo`;
24
+ export const unrecordedOnDevice = () => `released; the Ledger signed only the release message and the fee payer the transaction, so no memo records the delivered work's sha256; to record it, call ${tool("wallet_record_delivery")} with the same owner and nonce, the delivered_sha256 as sha256 and this signature as release`;
24
25
  export const followUpFailed = (reason) => `the release landed, but the follow-up transaction that records the delivered work's sha256 failed, so the hash is not recorded on chain: ${reason}; to record it, call ${tool("wallet_record_delivery")} with the same owner and nonce, the delivered_sha256 as sha256 and this signature as release, which sends the memo in record_memo for ${tool("wallet_receipt")} to read`;
25
26
  export const SPLIT_WEIGHTS_WRONG = "the weights must be whole basis points that add up to 10000";
26
27
  export const SPLIT_SIG_NEEDED = "every co-author must sign the split before send: true; preview returns the envelope each one signs";
@@ -69,6 +70,7 @@ export const walletAttestSplit = define({
69
70
  recorded: optional(recordedWhere),
70
71
  follow_up_signature: optional(text("the follow-up transaction that records the sha256, when recorded is follow-up")),
71
72
  record_memo: optional(text(`when recorded is false, the memo that records the sha256 for this release; ${tool("wallet_record_delivery")} sends it from this wallet with a zero transfer to the escrow`)),
73
+ ...openingOutput,
72
74
  summary: list(text(), 12),
73
75
  warnings: list(text(), 8),
74
76
  sent: flag(),
@@ -77,6 +79,8 @@ export const walletAttestSplit = define({
77
79
  }),
78
80
  run: async (ctx, input, call) => {
79
81
  const signer = await signerOf(ctx);
82
+ const device = signer.device !== undefined;
83
+ const payer = device ? await feePayerOf(ctx) : signer;
80
84
  const [intent] = await findIntentPda({ owner: input.owner, nonce: input.nonce });
81
85
  const [view, { config }] = await Promise.all([ctx.transport.getAccount(intent), loadConfig(ctx.transport)]);
82
86
  if (view === null) {
@@ -115,28 +119,32 @@ export const walletAttestSplit = define({
115
119
  throw new InvalidInput([{ path: "delivered_sha256", message: DELIVERED_NEEDED }]);
116
120
  }
117
121
  const delivered = sha256Of(input.delivered_sha256, "delivered_sha256");
118
- const record = await deliveryRecord(ctx.transport, signer.address, intent, input.max_pages ?? ATTEST_PAGES);
122
+ const keypair = await walletOpeners(ctx);
123
+ const record = await deliveryRecord(ctx.transport, signer.address, intent, input.max_pages ?? ATTEST_PAGES, keypair);
119
124
  if (!record.complete) {
120
125
  throw new AgentRefusal("HistoryTooLong", HISTORY_TOO_LONG);
121
126
  }
122
127
  const first = firstDelivery(record.deliveries, delivered);
128
+ const passed = await skippedOf(ctx, { judge: signer.address, intent, device, recipients: [signer.address], record, first, openers: keypair });
123
129
  if (first !== null && !wallets.includes(first.worker)) {
124
130
  throw new AgentRefusal("NotEarliestAnnouncer", notInSplit(first.worker, delivered));
125
131
  }
126
- await confirmedRelease(ctx, { intent, attestor: signer.address, sha256: delivered, pages: input.max_pages ?? ATTEST_PAGES, payees: wallets });
127
- const memoText = releaseMemo(delivered);
132
+ const salt = first?.salt;
133
+ const openings = openingsFor(record, first);
134
+ await confirmedRelease(ctx, { intent, attestor: signer.address, sha256: delivered, pages: input.max_pages ?? ATTEST_PAGES, payees: wallets, keypair });
135
+ const memoText = releaseMemo(delivered, salt);
128
136
  const memo = { programAddress: MEMO_PROGRAM_ADDRESS, accounts: [{ address: signer.address, role: AccountRole.READONLY_SIGNER, signer }], data: new TextEncoder().encode(memoText) };
129
137
  const token = await mintOf(ctx.transport, held.inputMint);
130
- const payees = await Promise.all(wallets.map((w) => tokenAccountIfMissing(ctx.transport, signer, w, held.inputMint, token.tokenProgram)));
138
+ const payees = await Promise.all(wallets.map((w) => tokenAccountIfMissing(ctx.transport, payer, w, held.inputMint, token.tokenProgram)));
131
139
  const amountIn = held.escrowed - held.filled;
132
140
  const settleAmount = amountIn - params.judgeFee;
133
- const maxFeeBps = feeBpsFor(config, held.kind) + held.partnerBps;
134
- const shares = splitFees(settleAmount, feeBpsFor(config, held.kind), held.partnerBps, held.partnerCutBps);
141
+ const maxFeeBps = held.feeBps + held.partnerBps;
142
+ const shares = splitFees(settleAmount, held.feeBps, held.partnerBps, held.partnerCutBps);
135
143
  const payout = splitPayout(shares.net, weights);
136
- const treasury = shares.protocol > 0n ? await tokenAccountIfMissing(ctx.transport, signer, config.feeRecipient, held.inputMint, token.tokenProgram) : { create: [] };
144
+ const treasury = shares.protocol > 0n ? await tokenAccountIfMissing(ctx.transport, payer, config.feeRecipient, held.inputMint, token.tokenProgram) : { create: [] };
137
145
  const partnerPaid = shares.partner > 0n;
138
- const partner = partnerPaid ? await tokenAccountIfMissing(ctx.transport, signer, held.partner, held.inputMint, token.tokenProgram) : { create: [] };
139
- const judge = params.judgeFee > 0n ? await tokenAccountIfMissing(ctx.transport, signer, signer.address, held.inputMint, token.tokenProgram) : { create: [] };
146
+ const partner = partnerPaid ? await tokenAccountIfMissing(ctx.transport, payer, held.partner, held.inputMint, token.tokenProgram) : { create: [] };
147
+ const judge = params.judgeFee > 0n ? await tokenAccountIfMissing(ctx.transport, payer, signer.address, held.inputMint, token.tokenProgram) : { create: [] };
140
148
  const splitHash = await splitCommit(wallets, weights);
141
149
  const fields = {
142
150
  domain: Uint8Array.from(config.domain),
@@ -149,10 +157,11 @@ export const walletAttestSplit = define({
149
157
  specHash: params.specHash,
150
158
  splitHash,
151
159
  };
152
- const message = await attestedSplitMessage(fields);
153
- const digestHex = getBase16Decoder().decode(Uint8Array.from(createHash("sha256").update(await attestedSplitPreimage(fields)).digest()));
160
+ const digest = await attestedSplitDigest(fields);
161
+ const message = cosignEnvelope([...wallets, signer.address], digest);
162
+ const digestHex = getBase16Decoder().decode(digest);
154
163
  const settle = await buildFillAttestedSplit({
155
- solver: signer,
164
+ solver: payer,
156
165
  owner: input.owner,
157
166
  nonce: input.nonce,
158
167
  inputMint: held.inputMint,
@@ -165,6 +174,7 @@ export const walletAttestSplit = define({
165
174
  amountIn,
166
175
  result,
167
176
  maxFeeBps,
177
+ capped: held.capped,
168
178
  });
169
179
  const name = TOKEN_NAMES[held.inputMint] ?? held.inputMint;
170
180
  const approval = approvalOf(message, memoText);
@@ -173,17 +183,21 @@ export const walletAttestSplit = define({
173
183
  }
174
184
  let batch;
175
185
  if (input.send === true) {
176
- const entries = input.recipients.map((r, i) => {
186
+ const signatures = new Map();
187
+ input.recipients.forEach((r, i) => {
188
+ if (r.wallet === signer.address) {
189
+ return;
190
+ }
177
191
  if (r.signature === undefined || !new RegExp(SIGNATURE_PATTERN).test(r.signature)) {
178
192
  throw new InvalidInput([{ path: `recipients.${i}.signature`, message: SPLIT_SIG_NEEDED }]);
179
193
  }
180
- return { publicKey: r.wallet, signature: Uint8Array.from(getBase16Encoder().encode(r.signature)) };
194
+ signatures.set(r.wallet, Uint8Array.from(getBase16Encoder().encode(r.signature)));
181
195
  });
182
- const attestorSignature = new Uint8Array(await signer.signBytes(message));
183
- batch = buildEd25519BatchInstruction({ entries: [...entries, { publicKey: signer.address, signature: attestorSignature }], message });
196
+ signatures.set(signer.address, new Uint8Array(await signer.signBytes(message)));
197
+ batch = buildEd25519CosignInstruction({ entries: [...signatures].map(([publicKey, signature]) => ({ publicKey, signature })), message });
184
198
  }
185
199
  const setup = [...payees.flatMap((p) => p.create), ...treasury.create, ...partner.create, ...judge.create];
186
- const invoked = new Set([INTENT_ENGINE_PROGRAM_ADDRESS, token.tokenProgram, signer.address]);
200
+ const invoked = new Set([INTENT_ENGINE_PROGRAM_ADDRESS, token.tokenProgram, payer.address]);
187
201
  const lookupAccounts = [...new Set((settle.accounts ?? []).map((a) => a.address))].filter((a) => !invoked.has(a));
188
202
  let tables;
189
203
  if (input.send === true && input.lookup_table !== undefined) {
@@ -196,16 +210,20 @@ export const walletAttestSplit = define({
196
210
  let prepared;
197
211
  let followUp = false;
198
212
  if (input.send === true && batch !== undefined) {
199
- const sizeOf = async (ixs) => transactionSize(ctx.transport, await ctx.transport.budget(ixs, signer.address, tables), signer.address, tables);
213
+ const sizeOf = async (ixs) => transactionSize(ctx.transport, await ctx.transport.budget(ixs, payer.address, tables), payer.address, tables);
200
214
  const bare = [...setup, batch, settle];
201
- followUp = (await sizeOf([...bare, memo])) > PACKET_DATA_SIZE;
215
+ followUp = !device && (await sizeOf([...bare, memo])) > PACKET_DATA_SIZE;
202
216
  if (followUp) {
203
217
  const size = await sizeOf(bare);
204
218
  if (size > PACKET_DATA_SIZE) {
205
219
  throw new AgentRefusal("ReleaseTooLarge", splitTooLarge(size, input.recipients.length, input.lookup_table !== undefined));
206
220
  }
207
221
  }
208
- prepared = preparedView(await prepare(ctx.transport, followUp ? bare : [...bare, memo], signer.address, tables));
222
+ const bareSize = device ? await sizeOf(bare) : 0;
223
+ if (bareSize > PACKET_DATA_SIZE) {
224
+ throw new AgentRefusal("ReleaseTooLarge", splitTooLarge(bareSize, input.recipients.length, input.lookup_table !== undefined));
225
+ }
226
+ prepared = preparedView(await prepare(ctx.transport, followUp || device ? bare : [...bare, memo], payer.address, tables));
209
227
  }
210
228
  const view2 = {
211
229
  intent,
@@ -228,48 +246,57 @@ export const walletAttestSplit = define({
228
246
  ...(params.judgeFee > 0n ? [`Pays the judge: ${formatAmount(params.judgeFee, token.decimals)} of ${name} to this wallet, carved out of the escrow`] : []),
229
247
  `Binds: the result to the committed spec ${getBase16Decoder().decode(params.specHash)}`,
230
248
  `Attests: result ${result}, signed by this server's wallet as the escrow's attestor`,
231
- RECORDS_SPLIT(delivered),
232
- ...(setup.length === 0 ? [] : [`Setup: creates ${setup.length} token account(s), paid by this wallet`]),
249
+ ...(device
250
+ ? [`Signs: only the release message on the Ledger, which shows digest ${digestHex}; the fee payer ${payer.address} signs and pays the transaction, so no memo records the delivered work`]
251
+ : [RECORDS_SPLIT(delivered)]),
252
+ ...(setup.length === 0 ? [] : [`Setup: creates ${setup.length} token account(s), paid by ${device ? "the fee payer" : "this wallet"}`]),
233
253
  ],
234
254
  warnings: [...settlementWarnings(params), WARN_COAUTHORS],
235
255
  prepared,
236
256
  };
237
- const done = await sent(ctx, signer, view2, input.send, call, {
238
- preview: PREVIEW_APPROVAL_NEXT,
257
+ const done = await sent(ctx, payer, view2, input.send, call, {
258
+ preview: device ? `${PREVIEW_APPROVAL_NEXT}; ${DEVICE_RELEASE}` : PREVIEW_APPROVAL_NEXT,
239
259
  done: `released to co-authors; ${tool("wallet_feedback")} to rate if you own it`,
240
260
  });
241
261
  if (!("signature" in done)) {
242
- return done;
243
- }
244
- if (!followUp) {
245
- return { ...done, recorded: "release" };
262
+ return { ...done, ...passed };
246
263
  }
247
- const unrecorded = (error) => ({
248
- ...done,
249
- recorded: false,
250
- record_memo: followUpMemo(delivered, done.signature),
251
- next: followUpFailed(problemOf(error).hint),
252
- });
253
- let recording;
254
- try {
255
- recording = preparedView(await prepare(ctx.transport, followUpInstructions(signer, intent, delivered, done.signature), signer.address));
256
- }
257
- catch (error) {
258
- return unrecorded(error);
259
- }
260
- try {
261
- return { ...done, recorded: "follow-up", follow_up_signature: await execute(ctx.transport, recording, signer) };
262
- }
263
- catch (error) {
264
- if (neverLanded(error)) {
265
- return unrecorded(error);
266
- }
267
- const landed = await ctx.transport
268
- .engineTransactions(WAIT_SCAN, intent)
269
- .then((transactions) => followUpOf(transactions, done.signature, signer.address))
270
- .catch(() => null);
271
- return landed === null || landed.sha256 !== delivered ? unrecorded(error) : { ...done, recorded: "follow-up", follow_up_signature: landed.signature };
264
+ if (device) {
265
+ return { ...done, ...passed, recorded: false, record_memo: followUpMemo(delivered, done.signature, salt), next: unrecordedOnDevice(), ...(await sendOpenings(ctx, payer, signer.address, openings)) };
272
266
  }
267
+ const recorded = await recordedSplit(ctx, signer, intent, delivered, salt, done, followUp);
268
+ return recorded.recorded === false ? { ...recorded, ...passed } : { ...recorded, ...passed, ...(await sendOpenings(ctx, signer, signer.address, openings)) };
273
269
  },
274
270
  });
271
+ async function recordedSplit(ctx, signer, intent, delivered, salt, done, followUp) {
272
+ if (!followUp) {
273
+ return { ...done, recorded: "release" };
274
+ }
275
+ const unrecorded = (error) => ({
276
+ ...done,
277
+ recorded: false,
278
+ record_memo: followUpMemo(delivered, done.signature, salt),
279
+ next: followUpFailed(problemOf(error).hint),
280
+ });
281
+ let recording;
282
+ try {
283
+ recording = preparedView(await prepare(ctx.transport, followUpInstructions(signer, intent, delivered, done.signature, salt), signer.address));
284
+ }
285
+ catch (error) {
286
+ return unrecorded(error);
287
+ }
288
+ try {
289
+ return { ...done, recorded: "follow-up", follow_up_signature: await execute(ctx.transport, recording, signer) };
290
+ }
291
+ catch (error) {
292
+ if (neverLanded(error)) {
293
+ return unrecorded(error);
294
+ }
295
+ const landed = await ctx.transport
296
+ .engineTransactions(WAIT_SCAN, intent)
297
+ .then((transactions) => followUpOf(transactions, done.signature, signer.address))
298
+ .catch(() => null);
299
+ return landed === null || landed.sha256 !== delivered ? unrecorded(error) : { ...done, recorded: "follow-up", follow_up_signature: landed.signature };
300
+ }
301
+ }
275
302
  //# sourceMappingURL=split.js.map