@intent-engine/cli 0.1.22 → 0.1.26

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 (175) hide show
  1. package/dist/src/admin-commands.d.ts +12 -0
  2. package/dist/src/admin-commands.js +140 -0
  3. package/dist/src/admin-commands.js.map +1 -0
  4. package/dist/src/agent/actions.d.ts +2 -0
  5. package/dist/src/agent/actions.js +1 -1
  6. package/dist/src/agent/actions.js.map +1 -1
  7. package/dist/src/agent/claims.js +13 -12
  8. package/dist/src/agent/claims.js.map +1 -1
  9. package/dist/src/agent/create.d.ts +1 -0
  10. package/dist/src/agent/create.js +18 -4
  11. package/dist/src/agent/create.js.map +1 -1
  12. package/dist/src/agent/mandate-agent.d.ts +2 -0
  13. package/dist/src/agent/mandate-agent.js +136 -0
  14. package/dist/src/agent/mandate-agent.js.map +1 -0
  15. package/dist/src/agent/mandate-grant.d.ts +2 -0
  16. package/dist/src/agent/mandate-grant.js +192 -0
  17. package/dist/src/agent/mandate-grant.js.map +1 -0
  18. package/dist/src/agent/mandate-revoke.d.ts +1 -0
  19. package/dist/src/agent/mandate-revoke.js +142 -0
  20. package/dist/src/agent/mandate-revoke.js.map +1 -0
  21. package/dist/src/agent/mandate-state.d.ts +33 -0
  22. package/dist/src/agent/mandate-state.js +85 -0
  23. package/dist/src/agent/mandate-state.js.map +1 -0
  24. package/dist/src/agent/mandate.d.ts +4 -26
  25. package/dist/src/agent/mandate.js +4 -479
  26. package/dist/src/agent/mandate.js.map +1 -1
  27. package/dist/src/agent/mcp.js +10 -5
  28. package/dist/src/agent/mcp.js.map +1 -1
  29. package/dist/src/agent/prepare.js +1 -1
  30. package/dist/src/agent/prepare.js.map +1 -1
  31. package/dist/src/agent/problems.d.ts +15 -1
  32. package/dist/src/agent/problems.js +38 -2
  33. package/dist/src/agent/problems.js.map +1 -1
  34. package/dist/src/agent/read.d.ts +13 -0
  35. package/dist/src/agent/read.js +56 -7
  36. package/dist/src/agent/read.js.map +1 -1
  37. package/dist/src/agent/registry.js +8 -2
  38. package/dist/src/agent/registry.js.map +1 -1
  39. package/dist/src/agent/relay.d.ts +2 -0
  40. package/dist/src/agent/relay.js +11 -3
  41. package/dist/src/agent/relay.js.map +1 -1
  42. package/dist/src/agent/sales.d.ts +29 -0
  43. package/dist/src/agent/sales.js +248 -0
  44. package/dist/src/agent/sales.js.map +1 -0
  45. package/dist/src/agent/signed-prepare.d.ts +1 -0
  46. package/dist/src/agent/signed-prepare.js +141 -0
  47. package/dist/src/agent/signed-prepare.js.map +1 -0
  48. package/dist/src/agent/signed-relay.d.ts +25 -0
  49. package/dist/src/agent/signed-relay.js +68 -0
  50. package/dist/src/agent/signed-relay.js.map +1 -0
  51. package/dist/src/agent/signed-submit.d.ts +2 -0
  52. package/dist/src/agent/signed-submit.js +137 -0
  53. package/dist/src/agent/signed-submit.js.map +1 -0
  54. package/dist/src/agent/signed-terms.d.ts +85 -0
  55. package/dist/src/agent/signed-terms.js +84 -0
  56. package/dist/src/agent/signed-terms.js.map +1 -0
  57. package/dist/src/agent/signed.d.ts +4 -13
  58. package/dist/src/agent/signed.js +4 -361
  59. package/dist/src/agent/signed.js.map +1 -1
  60. package/dist/src/agent/wallet/account.d.ts +4 -0
  61. package/dist/src/agent/wallet/account.js +84 -0
  62. package/dist/src/agent/wallet/account.js.map +1 -0
  63. package/dist/src/agent/wallet/attest.d.ts +4 -0
  64. package/dist/src/agent/wallet/attest.js +178 -0
  65. package/dist/src/agent/wallet/attest.js.map +1 -0
  66. package/dist/src/agent/wallet/delivery.d.ts +13 -0
  67. package/dist/src/agent/wallet/delivery.js +171 -0
  68. package/dist/src/agent/wallet/delivery.js.map +1 -0
  69. package/dist/src/agent/wallet/escrow.d.ts +7 -0
  70. package/dist/src/agent/wallet/escrow.js +164 -0
  71. package/dist/src/agent/wallet/escrow.js.map +1 -0
  72. package/dist/src/agent/wallet/fills.d.ts +27 -0
  73. package/dist/src/agent/wallet/fills.js +80 -0
  74. package/dist/src/agent/wallet/fills.js.map +1 -0
  75. package/dist/src/agent/wallet/guard.d.ts +57 -0
  76. package/dist/src/agent/wallet/guard.js +205 -0
  77. package/dist/src/agent/wallet/guard.js.map +1 -0
  78. package/dist/src/agent/wallet/offer.d.ts +50 -0
  79. package/dist/src/agent/wallet/offer.js +80 -0
  80. package/dist/src/agent/wallet/offer.js.map +1 -0
  81. package/dist/src/agent/wallet/receipt.d.ts +42 -0
  82. package/dist/src/agent/wallet/receipt.js +102 -0
  83. package/dist/src/agent/wallet/receipt.js.map +1 -0
  84. package/dist/src/agent/wallet/record.d.ts +31 -0
  85. package/dist/src/agent/wallet/record.js +178 -0
  86. package/dist/src/agent/wallet/record.js.map +1 -0
  87. package/dist/src/agent/wallet/releases.d.ts +40 -0
  88. package/dist/src/agent/wallet/releases.js +236 -0
  89. package/dist/src/agent/wallet/releases.js.map +1 -0
  90. package/dist/src/agent/wallet/split.d.ts +10 -0
  91. package/dist/src/agent/wallet/split.js +271 -0
  92. package/dist/src/agent/wallet/split.js.map +1 -0
  93. package/dist/src/agent/wallet/trade.d.ts +14 -0
  94. package/dist/src/agent/wallet/trade.js +243 -0
  95. package/dist/src/agent/wallet/trade.js.map +1 -0
  96. package/dist/src/agent/wallet/wait.d.ts +5 -0
  97. package/dist/src/agent/wallet/wait.js +99 -0
  98. package/dist/src/agent/wallet/wait.js.map +1 -0
  99. package/dist/src/agent/wallet.d.ts +18 -72
  100. package/dist/src/agent/wallet.js +26 -1216
  101. package/dist/src/agent/wallet.js.map +1 -1
  102. package/dist/src/arg-options.d.ts +333 -0
  103. package/dist/src/arg-options.js +310 -0
  104. package/dist/src/arg-options.js.map +1 -0
  105. package/dist/src/arg-usage.d.ts +7 -0
  106. package/dist/src/arg-usage.js +53 -0
  107. package/dist/src/arg-usage.js.map +1 -0
  108. package/dist/src/arg-values.d.ts +47 -0
  109. package/dist/src/arg-values.js +280 -0
  110. package/dist/src/arg-values.js.map +1 -0
  111. package/dist/src/args.d.ts +7 -487
  112. package/dist/src/args.js +89 -880
  113. package/dist/src/args.js.map +1 -1
  114. package/dist/src/artifact.d.ts +22 -0
  115. package/dist/src/artifact.js +89 -0
  116. package/dist/src/artifact.js.map +1 -0
  117. package/dist/src/check-process.d.ts +39 -0
  118. package/dist/src/check-process.js +338 -0
  119. package/dist/src/check-process.js.map +1 -0
  120. package/dist/src/command-builders.d.ts +37 -0
  121. package/dist/src/command-builders.js +216 -0
  122. package/dist/src/command-builders.js.map +1 -0
  123. package/dist/src/command-types.d.ts +227 -0
  124. package/dist/src/command-types.js +2 -0
  125. package/dist/src/command-types.js.map +1 -0
  126. package/dist/src/commands.d.ts +7 -43
  127. package/dist/src/commands.js +67 -426
  128. package/dist/src/commands.js.map +1 -1
  129. package/dist/src/event-feed.d.ts +13 -0
  130. package/dist/src/event-feed.js +46 -0
  131. package/dist/src/event-feed.js.map +1 -0
  132. package/dist/src/flow-commands.d.ts +8 -0
  133. package/dist/src/flow-commands.js +116 -0
  134. package/dist/src/flow-commands.js.map +1 -0
  135. package/dist/src/flows.d.ts +6 -0
  136. package/dist/src/flows.js +84 -10
  137. package/dist/src/flows.js.map +1 -1
  138. package/dist/src/job-commands.d.ts +9 -0
  139. package/dist/src/job-commands.js +89 -0
  140. package/dist/src/job-commands.js.map +1 -0
  141. package/dist/src/judge-errors.d.ts +12 -0
  142. package/dist/src/judge-errors.js +16 -0
  143. package/dist/src/judge-errors.js.map +1 -0
  144. package/dist/src/judge.d.ts +28 -0
  145. package/dist/src/judge.js +169 -0
  146. package/dist/src/judge.js.map +1 -0
  147. package/dist/src/main.d.ts +4 -1
  148. package/dist/src/main.js +26 -10
  149. package/dist/src/main.js.map +1 -1
  150. package/dist/src/order-builders.d.ts +10 -0
  151. package/dist/src/order-builders.js +172 -0
  152. package/dist/src/order-builders.js.map +1 -0
  153. package/dist/src/render.d.ts +1 -0
  154. package/dist/src/render.js +9 -0
  155. package/dist/src/render.js.map +1 -1
  156. package/dist/src/runtime.d.ts +22 -0
  157. package/dist/src/runtime.js +2 -0
  158. package/dist/src/runtime.js.map +1 -0
  159. package/dist/src/solve-commands.d.ts +25 -0
  160. package/dist/src/solve-commands.js +171 -0
  161. package/dist/src/solve-commands.js.map +1 -0
  162. package/dist/src/tokens.js +2 -1
  163. package/dist/src/tokens.js.map +1 -1
  164. package/dist/src/version.d.ts +1 -1
  165. package/dist/src/version.js +1 -1
  166. package/dist/src/wallet.d.ts +4 -1
  167. package/dist/src/wallet.js +25 -5
  168. package/dist/src/wallet.js.map +1 -1
  169. package/package.json +16 -7
  170. package/dist/src/events.d.ts +0 -8
  171. package/dist/src/events.js +0 -43
  172. package/dist/src/events.js.map +0 -1
  173. package/dist/src/transport.d.ts +0 -208
  174. package/dist/src/transport.js +0 -441
  175. package/dist/src/transport.js.map +0 -1
@@ -0,0 +1,248 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { link, mkdir, open, readdir, readFile, rename, rm, stat } from "node:fs/promises";
3
+ import { basename, dirname, join } from "node:path";
4
+ import { AgentRefusal } from "./problems.js";
5
+ export const LOCK_WAIT_MS = 5_000;
6
+ export const LOCK_STALE_MS = 30_000;
7
+ export const LOCK_POLL_MS = 20;
8
+ export const BUSY_ATTEMPTS = 10;
9
+ export const BUSY_BACKOFF_MS = 10;
10
+ export const BUSY_BACKOFF_CAP_MS = 200;
11
+ export const LEFTOVER_MS = 60_000;
12
+ export const salesPath = (keypair) => `${keypair}.sales.json`;
13
+ export const salesBroken = (path) => `${path} is not a sale record this server wrote; delete it to reset the wallet's hourly count`;
14
+ export const WALLET_BUSY = "another server using this wallet is recording a sale right now; call again in a moment";
15
+ function parsed(text, path) {
16
+ let rows;
17
+ try {
18
+ rows = JSON.parse(text);
19
+ }
20
+ catch {
21
+ throw new Error(salesBroken(path));
22
+ }
23
+ if (!Array.isArray(rows)) {
24
+ throw new Error(salesBroken(path));
25
+ }
26
+ return rows.map((row) => {
27
+ if (typeof row?.id !== "string" || typeof row.mint !== "string" || typeof row.at !== "string" || typeof row.amount !== "string") {
28
+ throw new Error(salesBroken(path));
29
+ }
30
+ try {
31
+ return { id: row.id, mint: row.mint, at: BigInt(row.at), amount: BigInt(row.amount) };
32
+ }
33
+ catch {
34
+ throw new Error(salesBroken(path));
35
+ }
36
+ });
37
+ }
38
+ const codeOf = (error) => error?.code;
39
+ const missing = (error) => codeOf(error) === "ENOENT";
40
+ const taken = (error) => codeOf(error) === "EEXIST";
41
+ const BUSY_CODES = new Set(["EPERM", "EACCES", "EBUSY"]);
42
+ const busy = (error) => BUSY_CODES.has(codeOf(error));
43
+ const UNLINKABLE_CODES = new Set(["EPERM", "ENOTSUP", "EOPNOTSUPP", "EXDEV"]);
44
+ const unlinkable = (error) => UNLINKABLE_CODES.has(codeOf(error)) || (process.platform === "win32" && !taken(error) && !busy(error));
45
+ const linkless = new Set();
46
+ const pause = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
47
+ async function retried(work) {
48
+ for (let attempt = 1;; attempt++) {
49
+ try {
50
+ return await work();
51
+ }
52
+ catch (error) {
53
+ if (!busy(error) || attempt >= BUSY_ATTEMPTS) {
54
+ throw error;
55
+ }
56
+ await pause(Math.min(BUSY_BACKOFF_MS * 2 ** (attempt - 1), BUSY_BACKOFF_CAP_MS));
57
+ }
58
+ }
59
+ }
60
+ async function readSales(file, path) {
61
+ try {
62
+ return parsed(await retried(() => readFile(file, "utf8")), path);
63
+ }
64
+ catch (error) {
65
+ if (missing(error)) {
66
+ return [];
67
+ }
68
+ throw error;
69
+ }
70
+ }
71
+ async function written(file, text) {
72
+ const handle = await open(file, "wx", 0o600);
73
+ try {
74
+ await handle.writeFile(text);
75
+ await handle.sync();
76
+ }
77
+ catch (error) {
78
+ await handle.close().catch(() => undefined);
79
+ await rm(file, { force: true }).catch(() => undefined);
80
+ throw error;
81
+ }
82
+ await handle.close();
83
+ }
84
+ async function sweep(file) {
85
+ const folder = dirname(file);
86
+ const prefix = `${basename(file)}.`;
87
+ const names = await readdir(folder).catch(() => []);
88
+ const cutoff = Date.now() - LEFTOVER_MS;
89
+ await Promise.all(names
90
+ .filter((name) => name.startsWith(prefix) && name.endsWith(".tmp"))
91
+ .map(async (name) => {
92
+ const leftover = join(folder, name);
93
+ const seen = await stat(leftover).catch(() => null);
94
+ if (seen !== null && seen.mtimeMs < cutoff) {
95
+ await rm(leftover, { force: true }).catch(() => undefined);
96
+ }
97
+ }));
98
+ }
99
+ async function writeSales(file, sales, files) {
100
+ await sweep(file);
101
+ const rows = sales.map((s) => ({ id: s.id, mint: s.mint, at: s.at.toString(), amount: s.amount.toString() }));
102
+ const temporary = `${file}.${randomUUID()}.tmp`;
103
+ await written(temporary, JSON.stringify(rows));
104
+ try {
105
+ await retried(() => files.rename(temporary, file));
106
+ }
107
+ catch (error) {
108
+ await rm(temporary, { force: true }).catch(() => undefined);
109
+ throw error;
110
+ }
111
+ }
112
+ async function ownerOf(lock) {
113
+ try {
114
+ return await retried(() => readFile(lock, "utf8"));
115
+ }
116
+ catch (error) {
117
+ if (missing(error)) {
118
+ return null;
119
+ }
120
+ throw error;
121
+ }
122
+ }
123
+ async function linksFail(linker, temporary, lock) {
124
+ const probe = `${lock}.${randomUUID()}.tmp`;
125
+ try {
126
+ await linker(temporary, probe);
127
+ }
128
+ catch {
129
+ return true;
130
+ }
131
+ await rm(probe, { force: true }).catch(() => undefined);
132
+ return false;
133
+ }
134
+ async function created(lock, token) {
135
+ try {
136
+ await written(lock, token);
137
+ }
138
+ catch (error) {
139
+ if (taken(error) || busy(error)) {
140
+ return false;
141
+ }
142
+ throw error;
143
+ }
144
+ return true;
145
+ }
146
+ async function linked(lock, token, linker) {
147
+ const temporary = `${lock}.${randomUUID()}.tmp`;
148
+ await written(temporary, token);
149
+ try {
150
+ await linker(temporary, lock);
151
+ }
152
+ catch (error) {
153
+ if (taken(error)) {
154
+ return false;
155
+ }
156
+ if (unlinkable(error) && (await linksFail(linker, temporary, lock))) {
157
+ return null;
158
+ }
159
+ if (busy(error)) {
160
+ return false;
161
+ }
162
+ throw error;
163
+ }
164
+ finally {
165
+ await rm(temporary, { force: true }).catch(() => undefined);
166
+ }
167
+ return true;
168
+ }
169
+ async function claim(lock, token, linker) {
170
+ const folder = dirname(lock);
171
+ let placed = linkless.has(folder) ? null : await linked(lock, token, linker);
172
+ if (placed === null) {
173
+ linkless.add(folder);
174
+ placed = await created(lock, token);
175
+ }
176
+ return placed && (await ownerOf(lock)) === token;
177
+ }
178
+ async function release(lock, token) {
179
+ if ((await ownerOf(lock)) === token) {
180
+ await retried(() => rm(lock, { force: true }));
181
+ }
182
+ }
183
+ const stale = async (path) => {
184
+ const seen = await stat(path).catch(() => null);
185
+ return seen !== null && Date.now() - seen.mtimeMs > LOCK_STALE_MS;
186
+ };
187
+ async function takeOver(lock, token, linker) {
188
+ const old = await ownerOf(lock);
189
+ if (old === null) {
190
+ return false;
191
+ }
192
+ const breaker = `${lock}.break`;
193
+ if (!(await claim(breaker, token, linker))) {
194
+ if (await stale(breaker)) {
195
+ await rm(breaker, { force: true });
196
+ }
197
+ return false;
198
+ }
199
+ try {
200
+ if ((await ownerOf(lock)) !== old || !(await stale(lock))) {
201
+ return false;
202
+ }
203
+ await retried(() => rm(lock, { force: true }));
204
+ return await claim(lock, token, linker);
205
+ }
206
+ finally {
207
+ await release(breaker, token).catch(() => undefined);
208
+ }
209
+ }
210
+ async function locked(file, linker, work) {
211
+ const lock = `${file}.lock`;
212
+ const token = randomUUID();
213
+ await mkdir(dirname(file), { recursive: true, mode: 0o700 });
214
+ const deadline = Date.now() + LOCK_WAIT_MS;
215
+ for (;;) {
216
+ if (await claim(lock, token, linker)) {
217
+ break;
218
+ }
219
+ if ((await stale(lock)) && (await takeOver(lock, token, linker))) {
220
+ break;
221
+ }
222
+ if (Date.now() >= deadline) {
223
+ throw new AgentRefusal("WalletBusy", WALLET_BUSY);
224
+ }
225
+ await pause(LOCK_POLL_MS);
226
+ }
227
+ try {
228
+ return await work();
229
+ }
230
+ finally {
231
+ await release(lock, token).catch(() => undefined);
232
+ }
233
+ }
234
+ export function fileSales(locate = (path) => path, files = { rename }) {
235
+ const linker = files.link === undefined ? link : files.link.bind(files);
236
+ return {
237
+ read: (path) => readSales(locate(path), path),
238
+ update: (path, change) => {
239
+ const file = locate(path);
240
+ return locked(file, linker, async () => {
241
+ const { sales, value } = change(await readSales(file, path));
242
+ await writeSales(file, sales, files);
243
+ return value;
244
+ });
245
+ },
246
+ };
247
+ }
248
+ //# sourceMappingURL=sales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sales.js","sourceRoot":"","sources":["../../../src/agent/sales.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const prepareSignedIntent: import("./actions.js").AnyAction;
@@ -0,0 +1,141 @@
1
+ import { createNoopSigner, getBase64Decoder } from "@solana/kit";
2
+ import { buildApproveDelegate, buildEd25519Instruction, describeSignedIntent, escrowAmount, formatAmount, MEMO_URL_RULE, signedIntentMessage, validate, } from "@intent-engine/core";
3
+ import { chainTime, clusterDomain, initUserIfMissing, loadConfig, loadUser, mintOf, tokenAccountIfMissing, } from "@intent-engine/client";
4
+ import { define } from "./actions.js";
5
+ import { tool } from "./names.js";
6
+ import { expiryOf, termsInput, termsOutput, warningsOf } from "./create.js";
7
+ import { pickNonce, raiseAllowance, setupLines, unusedIntent } from "./owner.js";
8
+ import { prepare } from "./prepare.js";
9
+ import { AgentRefusal } from "./problems.js";
10
+ import { SIGNATURE_FEE } from "./budget.js";
11
+ import { refuseCostlyTerms, refuseLongRelay } from "./relay.js";
12
+ import { claim, claimedBy } from "./claims.js";
13
+ import { paramsOf, preparedSchema, preparedView } from "./shapes.js";
14
+ import { tokenNames } from "../tokens.js";
15
+ import { account, amount, integer, object, optional, text } from "./schema.js";
16
+ import { DEFAULT_SUBMIT_WITHIN, fieldsOf, MAX_SUBMIT_WITHIN, published, publishedUrl, publishesLine, signedTerms, SPEC_URL_UNSIGNED, } from "./signed-terms.js";
17
+ import { offeredFee, RELAY_TOO_LARGE, relayCreate, relayFits, relayFloor, SPEC_URL_TOO_LONG } from "./signed-relay.js";
18
+ export const prepareSignedIntent = define({
19
+ name: tool("prepare_signed_intent"),
20
+ title: "Prepare a relayer-submitted signed intent",
21
+ description: `Build an intent the owner authorises by signing a message off-chain, so a relayer creates it on chain and pays its rent and fees. Steps: (1) the owner signs and sends the returned setup transaction; it registers them, creates the receiving token account and raises the engine's spending allowance on the input token by this intent's escrow plus any relayer fee, and it is the only part that costs the owner SOL: its network fee, which the summary gives in lamports, plus rent for any account it creates; (2) the owner signs message with their wallet's sign-message; (3) pass submit unchanged plus that base58 signature to ${tool("submit_signed_intent")}. When this server runs a relayer, it relays only the input tokens it lists a fee for, the message includes that fee, and the owner pays it in that token as the intent is created; it refuses, before the owner signs or pays anything, an expiry beyond that relayer's longest or a create fee and crank bounty above what it pays; without --relayer this server can prepare but not submit. Read summary and warnings before the owner signs anything.`,
22
+ effect: "prepare",
23
+ input: object({
24
+ ...termsInput,
25
+ owner: account("the wallet that signs the message off-chain; it pays only the setup transaction's network fee and any rent named in the summary, in SOL"),
26
+ submit_within: optional(integer(60, MAX_SUBMIT_WITHIN, `seconds the relayer has to submit the signature; default ${DEFAULT_SUBMIT_WITHIN}`)),
27
+ relayer_fee: optional(amount("raw input units offered to whoever submits; default and minimum is this server's relayer fee for the input token")),
28
+ spec_url: optional(text(`where the acceptance spec of an attested order with spec_hash is published, ${MEMO_URL_RULE}; passed on in submit for the relayer to record in a memo it signs with the create, so workers find it. It is not part of what the owner signs`)),
29
+ }),
30
+ output: object({
31
+ ...termsOutput,
32
+ message: text("base64 bytes the owner signs with sign-message"),
33
+ digest: text("sha-256 of the signed terms; the wallet shows the same value"),
34
+ submit: object(signedTerms, `pass these unchanged, plus the signature, to ${tool("submit_signed_intent")}`),
35
+ setup: preparedSchema,
36
+ }),
37
+ run: async ({ transport, claims, relay }, input, call) => {
38
+ const now = await chainTime(transport);
39
+ const expiresAt = expiryOf(input, now);
40
+ const params = validate(paramsOf(input.order));
41
+ const specUrl = await publishedUrl(transport, params, input.spec_url);
42
+ if (relay !== undefined) {
43
+ refuseLongRelay(relay, expiresAt, now);
44
+ const { config } = await loadConfig(transport);
45
+ refuseCostlyTerms(relay, BigInt(config.createFee) + BigInt(config.crankBounty));
46
+ }
47
+ const user = await loadUser(transport, input.owner);
48
+ const outputToken = await mintOf(transport, input.output_mint);
49
+ if (input.nonce !== undefined) {
50
+ await unusedIntent(transport, input.owner, input.nonce);
51
+ }
52
+ const terms = {
53
+ owner: input.owner,
54
+ input_mint: input.input_mint,
55
+ output_mint: input.output_mint,
56
+ order: input.order,
57
+ expires_at: expiresAt,
58
+ nonce: pickNonce(user, input.nonce, claimedBy(claims, input.owner, now)),
59
+ submit_by: now + BigInt(input.submit_within ?? DEFAULT_SUBMIT_WITHIN),
60
+ epoch: user?.epoch ?? 0n,
61
+ relayer_fee: offeredFee(relay === undefined ? 0n : relayFloor(relay, input.input_mint), input.relayer_fee),
62
+ ...(input.partner === undefined ? {} : { partner: input.partner }),
63
+ ...(specUrl === undefined ? {} : { spec_url: specUrl }),
64
+ };
65
+ claim(claims, call, input.owner, terms.nonce, terms.submit_by, now);
66
+ const { config, inputToken, fields } = await fieldsOf(transport, terms, params, outputToken.tokenProgram);
67
+ if (relay !== undefined) {
68
+ const placeholder = buildEd25519Instruction({
69
+ publicKey: input.owner,
70
+ signature: new Uint8Array(64),
71
+ message: await signedIntentMessage(fields),
72
+ });
73
+ const create = await relayCreate(terms, relay, config, params, {
74
+ input: inputToken.tokenProgram,
75
+ output: outputToken.tokenProgram,
76
+ });
77
+ if (!(await relayFits(transport, relay, [placeholder, create, ...published(relay.signer, specUrl)]))) {
78
+ const memoOnly = specUrl !== undefined && (await relayFits(transport, relay, [placeholder, create]));
79
+ throw new AgentRefusal("RelayTooLarge", memoOnly ? SPEC_URL_TOO_LONG : RELAY_TOO_LARGE);
80
+ }
81
+ }
82
+ const description = await describeSignedIntent(fields, {
83
+ now,
84
+ currentEpoch: terms.epoch,
85
+ expectedDomain: await clusterDomain(transport),
86
+ outputTokenProgram: outputToken.tokenProgram,
87
+ inputDecimals: inputToken.decimals,
88
+ outputDecimals: outputToken.decimals,
89
+ ...tokenNames(fields.inputMint, fields.outputMint),
90
+ });
91
+ const escrow = escrowAmount(params);
92
+ const allowance = await raiseAllowance(transport, input.owner, fields.ownerInput, escrow + terms.relayer_fee);
93
+ const receiver = await tokenAccountIfMissing(transport, createNoopSigner(input.owner), input.owner, input.output_mint, outputToken.tokenProgram);
94
+ const approve = await buildApproveDelegate({
95
+ owner: createNoopSigner(input.owner),
96
+ mint: input.input_mint,
97
+ tokenProgram: inputToken.tokenProgram,
98
+ amount: allowance.after,
99
+ decimals: inputToken.decimals,
100
+ });
101
+ const register = await initUserIfMissing(user, input.owner);
102
+ const setup = [...register, ...receiver.create, approve];
103
+ const intent = await unusedIntent(transport, input.owner, terms.nonce);
104
+ const disclosed = setupLines({
105
+ registers: register.length > 0,
106
+ creates: receiver.create.length > 0 ? [input.output_mint] : [],
107
+ allowance,
108
+ decimals: inputToken.decimals,
109
+ });
110
+ const ready = await prepare(transport, setup, input.owner);
111
+ const prepared = preparedView(ready);
112
+ const setupFee = SIGNATURE_FEE * BigInt(ready.signers.length) + ready.priorityLamports;
113
+ return {
114
+ intent,
115
+ nonce: terms.nonce,
116
+ expires_at: expiresAt,
117
+ escrow,
118
+ summary: [
119
+ ...description.lines,
120
+ terms.relayer_fee === 0n
121
+ ? `Cost to you: no relayer fee; only ${setupFee} lamports of SOL for the setup transaction's network fee, once`
122
+ : `Cost to you: ${formatAmount(terms.relayer_fee, inputToken.decimals)} of ${input.input_mint} to the relayer, plus ${setupFee} lamports of SOL for the setup transaction's network fee, once`,
123
+ ...(specUrl === undefined ? [] : [publishesLine(specUrl)]),
124
+ ...disclosed.lines,
125
+ ],
126
+ warnings: [
127
+ ...new Set([
128
+ ...warningsOf(params, expiresAt, now, inputToken.scaled || outputToken.scaled),
129
+ ...description.warnings,
130
+ ...disclosed.warnings,
131
+ ...(specUrl === undefined ? [] : [SPEC_URL_UNSIGNED]),
132
+ ]),
133
+ ],
134
+ message: getBase64Decoder().decode(await signedIntentMessage(fields)),
135
+ digest: description.digest,
136
+ submit: terms,
137
+ setup: prepared,
138
+ };
139
+ },
140
+ });
141
+ //# sourceMappingURL=signed-prepare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signed-prepare.js","sourceRoot":"","sources":["../../../src/agent/signed-prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAuB,MAAM,aAAa,CAAC;AACtF,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,MAAM,EACN,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EACL,qBAAqB,EACrB,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,aAAa,EACb,WAAW,EAEX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEvH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;IACxC,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC;IACnC,KAAK,EAAE,2CAA2C;IAClD,WAAW,EACT,inBAAinB,IAAI,CAAC,sBAAsB,CAAC,4bAA4b;IAC3kC,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;QACZ,GAAG,UAAU;QACb,KAAK,EAAE,OAAO,CAAC,yIAAyI,CAAC;QACzJ,aAAa,EAAE,QAAQ,CACrB,OAAO,CAAC,EAAE,EAAE,iBAAiB,EAAE,4DAA4D,qBAAqB,EAAE,CAAC,CACpH;QACD,WAAW,EAAE,QAAQ,CACnB,MAAM,CAAC,kHAAkH,CAAC,CAC3H;QACD,QAAQ,EAAE,QAAQ,CAChB,IAAI,CAAC,+EAA+E,aAAa,gJAAgJ,CAAC,CACnP;KACF,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;QACb,GAAG,WAAW;QACd,OAAO,EAAE,IAAI,CAAC,gDAAgD,CAAC;QAC/D,MAAM,EAAE,IAAI,CAAC,8DAA8D,CAAC;QAC5E,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,gDAAgD,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC3G,KAAK,EAAE,cAAc;KACtB,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;YAC/C,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,KAAK,GAAgB;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACxE,SAAS,EAAE,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,qBAAqB,CAAC;YACrE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;YACxB,WAAW,EAAE,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;YAC1G,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAClE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;SACxD,CAAC;QACF,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACpE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;QAC1G,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,uBAAuB,CAAC;gBAC1C,SAAS,EAAE,KAAK,CAAC,KAAK;gBACtB,SAAS,EAAE,IAAI,UAAU,CAAC,EAAE,CAAmB;gBAC/C,OAAO,EAAE,MAAM,mBAAmB,CAAC,MAAM,CAAC;aAC3C,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;gBAC7D,KAAK,EAAE,UAAU,CAAC,YAAY;gBAC9B,MAAM,EAAE,WAAW,CAAC,YAAY;aACjC,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrG,MAAM,QAAQ,GAAG,OAAO,KAAK,SAAS,IAAI,CAAC,MAAM,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrG,MAAM,IAAI,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE;YACrD,GAAG;YACH,YAAY,EAAE,KAAK,CAAC,KAAK;YACzB,cAAc,EAAE,MAAM,aAAa,CAAC,SAAS,CAAC;YAC9C,kBAAkB,EAAE,WAAW,CAAC,YAAY;YAC5C,aAAa,EAAE,UAAU,CAAC,QAAQ;YAClC,cAAc,EAAE,WAAW,CAAC,QAAQ;YACpC,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC;SACnD,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9G,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;QACjJ,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC;YACzC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;YACpC,IAAI,EAAE,KAAK,CAAC,UAAU;YACtB,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,MAAM,EAAE,SAAS,CAAC,KAAK;YACvB,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,UAAU,CAAC;YAC3B,SAAS,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC9B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9D,SAAS;YACT,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACvF,OAAO;YACL,MAAM;YACN,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,SAAS;YACrB,MAAM;YACN,OAAO,EAAE;gBACP,GAAG,WAAW,CAAC,KAAK;gBACpB,KAAK,CAAC,WAAW,KAAK,EAAE;oBACtB,CAAC,CAAC,qCAAqC,QAAQ,gEAAgE;oBAC/G,CAAC,CAAC,gBAAgB,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,UAAU,yBAAyB,QAAQ,gEAAgE;gBAChM,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC1D,GAAG,SAAS,CAAC,KAAK;aACnB;YACD,QAAQ,EAAE;gBACR,GAAG,IAAI,GAAG,CAAC;oBACT,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC;oBAC9E,GAAG,WAAW,CAAC,QAAQ;oBACvB,GAAG,SAAS,CAAC,QAAQ;oBACrB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;iBACtD,CAAC;aACH;YACD,OAAO,EAAE,gBAAgB,EAAE,CAAC,MAAM,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type Address, type Instruction } from "@solana/kit";
2
+ import { type IntentParams } from "@intent-engine/core";
3
+ import { type Transport } from "@intent-engine/client";
4
+ import { type Prepared } from "./prepare.js";
5
+ import type { Relay } from "./relay.js";
6
+ import type { SignedTerms } from "./signed-terms.js";
7
+ export declare function relayFloor(relay: Relay, mint: Address): bigint;
8
+ export declare const RELAY_TOO_LARGE = "this server's relayer cannot fit these signed terms in one Solana transaction; drop the partner fee or use a relayer that adds no priority fee";
9
+ export declare function relayCreate(input: SignedTerms, relay: Relay, config: {
10
+ feeRecipient: Address;
11
+ createFee: number;
12
+ crankBounty: number;
13
+ }, params: IntentParams, tokenPrograms: {
14
+ input: Address;
15
+ output: Address;
16
+ }): Promise<Instruction>;
17
+ export declare function relayFits(transport: Transport, relay: Relay, instructions: readonly Instruction[]): Promise<boolean>;
18
+ export declare const SPEC_URL_TOO_LONG = "this server's relayer cannot fit the spec url's memo with these signed terms in one Solana transaction; give a shorter spec_url or leave it out";
19
+ export declare const preparedFits: (prepared: Prepared) => boolean;
20
+ export declare function offeredFee(floor: bigint, offered: bigint | undefined): bigint;
21
+ export declare function paying<T>(paid: {
22
+ any: boolean;
23
+ }, sending: Promise<T>): Promise<T>;
24
+ export declare const repriced: (admitted: bigint, now: bigint) => string;
25
+ export declare function refuseRepricing(admitted: bigint, now: bigint): void;
@@ -0,0 +1,68 @@
1
+ import { getBase64Encoder } from "@solana/kit";
2
+ import { buildCreateIntentSigned } from "@intent-engine/core";
3
+ import { bytesFit } from "@intent-engine/solver";
4
+ import { Charged } from "@intent-engine/client";
5
+ import { transactionSize } from "./prepare.js";
6
+ import { AgentRefusal } from "./problems.js";
7
+ export function relayFloor(relay, mint) {
8
+ const floor = relay.fees.get(mint);
9
+ if (floor === undefined) {
10
+ throw new AgentRefusal("RelayMintNotAccepted", `this server's relayer does not relay intents selling ${mint}; it relays only ${[...relay.fees.keys()].join(", ")}`);
11
+ }
12
+ return floor;
13
+ }
14
+ export const RELAY_TOO_LARGE = "this server's relayer cannot fit these signed terms in one Solana transaction; drop the partner fee or use a relayer that adds no priority fee";
15
+ export async function relayCreate(input, relay, config, params, tokenPrograms) {
16
+ return buildCreateIntentSigned({
17
+ payer: relay.signer,
18
+ owner: input.owner,
19
+ treasury: config.feeRecipient,
20
+ maxCreateFee: config.createFee,
21
+ maxBounty: config.crankBounty,
22
+ nonce: input.nonce,
23
+ params,
24
+ expiresAt: input.expires_at,
25
+ ...(input.partner === undefined ? {} : { partner: { key: input.partner.account, bps: input.partner.bps } }),
26
+ inputMint: input.input_mint,
27
+ outputMint: input.output_mint,
28
+ inputTokenProgram: tokenPrograms.input,
29
+ outputTokenProgram: tokenPrograms.output,
30
+ submitBy: input.submit_by,
31
+ relayerFee: input.relayer_fee,
32
+ });
33
+ }
34
+ export async function relayFits(transport, relay, instructions) {
35
+ const budgeted = await transport.budget(instructions, relay.signer.address);
36
+ return bytesFit(await transactionSize(transport, budgeted, relay.signer.address));
37
+ }
38
+ export const SPEC_URL_TOO_LONG = "this server's relayer cannot fit the spec url's memo with these signed terms in one Solana transaction; give a shorter spec_url or leave it out";
39
+ export const preparedFits = (prepared) => bytesFit(getBase64Encoder().encode(prepared.transaction).length);
40
+ export function offeredFee(floor, offered) {
41
+ if (offered === undefined) {
42
+ return floor;
43
+ }
44
+ if (offered < floor) {
45
+ throw new AgentRefusal("RelayFeeTooLow", `this server's relayer charges ${floor} raw units of the input token; offer at least that or leave relayer_fee out`);
46
+ }
47
+ return offered;
48
+ }
49
+ export async function paying(paid, sending) {
50
+ try {
51
+ const result = await sending;
52
+ paid.any = true;
53
+ return result;
54
+ }
55
+ catch (error) {
56
+ if (error instanceof Charged) {
57
+ paid.any = true;
58
+ }
59
+ throw error;
60
+ }
61
+ }
62
+ export const repriced = (admitted, now) => `the priority fee rose from the admitted ${admitted} to ${now} lamports while relaying; ask again later`;
63
+ export function refuseRepricing(admitted, now) {
64
+ if (now > admitted) {
65
+ throw new AgentRefusal("RelayTooCostly", repriced(admitted, now));
66
+ }
67
+ }
68
+ //# sourceMappingURL=signed-relay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signed-relay.js","sourceRoot":"","sources":["../../../src/agent/signed-relay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const submitSignedIntent: import("./actions.js").AnyAction;
2
+ export declare const previewSignedIntent: import("./actions.js").AnyAction;