@intent-engine/cli 0.1.23 → 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.
- package/dist/src/admin-commands.d.ts +12 -0
- package/dist/src/admin-commands.js +140 -0
- package/dist/src/admin-commands.js.map +1 -0
- package/dist/src/agent/actions.d.ts +2 -0
- package/dist/src/agent/actions.js +1 -1
- package/dist/src/agent/actions.js.map +1 -1
- package/dist/src/agent/claims.js +13 -12
- package/dist/src/agent/claims.js.map +1 -1
- package/dist/src/agent/create.d.ts +1 -0
- package/dist/src/agent/create.js +7 -3
- package/dist/src/agent/create.js.map +1 -1
- package/dist/src/agent/mandate-agent.d.ts +2 -0
- package/dist/src/agent/mandate-agent.js +136 -0
- package/dist/src/agent/mandate-agent.js.map +1 -0
- package/dist/src/agent/mandate-grant.d.ts +2 -0
- package/dist/src/agent/mandate-grant.js +192 -0
- package/dist/src/agent/mandate-grant.js.map +1 -0
- package/dist/src/agent/mandate-revoke.d.ts +1 -0
- package/dist/src/agent/mandate-revoke.js +142 -0
- package/dist/src/agent/mandate-revoke.js.map +1 -0
- package/dist/src/agent/mandate-state.d.ts +33 -0
- package/dist/src/agent/mandate-state.js +85 -0
- package/dist/src/agent/mandate-state.js.map +1 -0
- package/dist/src/agent/mandate.d.ts +4 -26
- package/dist/src/agent/mandate.js +4 -479
- package/dist/src/agent/mandate.js.map +1 -1
- package/dist/src/agent/mcp.js +7 -3
- package/dist/src/agent/mcp.js.map +1 -1
- package/dist/src/agent/prepare.js +1 -1
- package/dist/src/agent/prepare.js.map +1 -1
- package/dist/src/agent/problems.d.ts +13 -1
- package/dist/src/agent/problems.js +32 -1
- package/dist/src/agent/problems.js.map +1 -1
- package/dist/src/agent/read.d.ts +12 -0
- package/dist/src/agent/read.js +20 -6
- package/dist/src/agent/read.js.map +1 -1
- package/dist/src/agent/registry.js +6 -1
- package/dist/src/agent/registry.js.map +1 -1
- package/dist/src/agent/relay.d.ts +2 -0
- package/dist/src/agent/relay.js +11 -3
- package/dist/src/agent/relay.js.map +1 -1
- package/dist/src/agent/sales.d.ts +29 -0
- package/dist/src/agent/sales.js +248 -0
- package/dist/src/agent/sales.js.map +1 -0
- package/dist/src/agent/signed-prepare.d.ts +1 -0
- package/dist/src/agent/signed-prepare.js +141 -0
- package/dist/src/agent/signed-prepare.js.map +1 -0
- package/dist/src/agent/signed-relay.d.ts +25 -0
- package/dist/src/agent/signed-relay.js +68 -0
- package/dist/src/agent/signed-relay.js.map +1 -0
- package/dist/src/agent/signed-submit.d.ts +2 -0
- package/dist/src/agent/signed-submit.js +137 -0
- package/dist/src/agent/signed-submit.js.map +1 -0
- package/dist/src/agent/signed-terms.d.ts +85 -0
- package/dist/src/agent/signed-terms.js +84 -0
- package/dist/src/agent/signed-terms.js.map +1 -0
- package/dist/src/agent/signed.d.ts +4 -13
- package/dist/src/agent/signed.js +4 -361
- package/dist/src/agent/signed.js.map +1 -1
- package/dist/src/agent/wallet/account.d.ts +4 -0
- package/dist/src/agent/wallet/account.js +84 -0
- package/dist/src/agent/wallet/account.js.map +1 -0
- package/dist/src/agent/wallet/attest.d.ts +4 -0
- package/dist/src/agent/wallet/attest.js +178 -0
- package/dist/src/agent/wallet/attest.js.map +1 -0
- package/dist/src/agent/wallet/delivery.d.ts +13 -0
- package/dist/src/agent/wallet/delivery.js +171 -0
- package/dist/src/agent/wallet/delivery.js.map +1 -0
- package/dist/src/agent/wallet/escrow.d.ts +7 -0
- package/dist/src/agent/wallet/escrow.js +164 -0
- package/dist/src/agent/wallet/escrow.js.map +1 -0
- package/dist/src/agent/wallet/fills.d.ts +27 -0
- package/dist/src/agent/wallet/fills.js +80 -0
- package/dist/src/agent/wallet/fills.js.map +1 -0
- package/dist/src/agent/wallet/guard.d.ts +57 -0
- package/dist/src/agent/wallet/guard.js +205 -0
- package/dist/src/agent/wallet/guard.js.map +1 -0
- package/dist/src/agent/wallet/offer.d.ts +50 -0
- package/dist/src/agent/wallet/offer.js +80 -0
- package/dist/src/agent/wallet/offer.js.map +1 -0
- package/dist/src/agent/wallet/receipt.d.ts +42 -0
- package/dist/src/agent/wallet/receipt.js +102 -0
- package/dist/src/agent/wallet/receipt.js.map +1 -0
- package/dist/src/agent/wallet/record.d.ts +31 -0
- package/dist/src/agent/wallet/record.js +178 -0
- package/dist/src/agent/wallet/record.js.map +1 -0
- package/dist/src/agent/wallet/releases.d.ts +40 -0
- package/dist/src/agent/wallet/releases.js +236 -0
- package/dist/src/agent/wallet/releases.js.map +1 -0
- package/dist/src/agent/wallet/split.d.ts +10 -0
- package/dist/src/agent/wallet/split.js +271 -0
- package/dist/src/agent/wallet/split.js.map +1 -0
- package/dist/src/agent/wallet/trade.d.ts +14 -0
- package/dist/src/agent/wallet/trade.js +243 -0
- package/dist/src/agent/wallet/trade.js.map +1 -0
- package/dist/src/agent/wallet/wait.d.ts +5 -0
- package/dist/src/agent/wallet/wait.js +99 -0
- package/dist/src/agent/wallet/wait.js.map +1 -0
- package/dist/src/agent/wallet.d.ts +18 -73
- package/dist/src/agent/wallet.js +24 -1322
- package/dist/src/agent/wallet.js.map +1 -1
- package/dist/src/arg-options.d.ts +333 -0
- package/dist/src/arg-options.js +310 -0
- package/dist/src/arg-options.js.map +1 -0
- package/dist/src/arg-usage.d.ts +7 -0
- package/dist/src/arg-usage.js +53 -0
- package/dist/src/arg-usage.js.map +1 -0
- package/dist/src/arg-values.d.ts +47 -0
- package/dist/src/arg-values.js +280 -0
- package/dist/src/arg-values.js.map +1 -0
- package/dist/src/args.d.ts +7 -545
- package/dist/src/args.js +55 -923
- package/dist/src/args.js.map +1 -1
- package/dist/src/artifact.d.ts +22 -0
- package/dist/src/artifact.js +89 -0
- package/dist/src/artifact.js.map +1 -0
- package/dist/src/check-process.d.ts +39 -0
- package/dist/src/check-process.js +338 -0
- package/dist/src/check-process.js.map +1 -0
- package/dist/src/command-builders.d.ts +37 -0
- package/dist/src/command-builders.js +216 -0
- package/dist/src/command-builders.js.map +1 -0
- package/dist/src/command-types.d.ts +227 -0
- package/dist/src/command-types.js +2 -0
- package/dist/src/command-types.js.map +1 -0
- package/dist/src/commands.d.ts +7 -43
- package/dist/src/commands.js +60 -457
- package/dist/src/commands.js.map +1 -1
- package/dist/src/event-feed.d.ts +13 -0
- package/dist/src/event-feed.js +46 -0
- package/dist/src/event-feed.js.map +1 -0
- package/dist/src/flow-commands.d.ts +8 -0
- package/dist/src/flow-commands.js +116 -0
- package/dist/src/flow-commands.js.map +1 -0
- package/dist/src/flows.d.ts +6 -0
- package/dist/src/flows.js +84 -10
- package/dist/src/flows.js.map +1 -1
- package/dist/src/job-commands.d.ts +9 -0
- package/dist/src/job-commands.js +89 -0
- package/dist/src/job-commands.js.map +1 -0
- package/dist/src/judge-errors.d.ts +12 -0
- package/dist/src/judge-errors.js +16 -0
- package/dist/src/judge-errors.js.map +1 -0
- package/dist/src/judge.d.ts +11 -16
- package/dist/src/judge.js +120 -100
- package/dist/src/judge.js.map +1 -1
- package/dist/src/main.d.ts +4 -1
- package/dist/src/main.js +25 -9
- package/dist/src/main.js.map +1 -1
- package/dist/src/order-builders.d.ts +10 -0
- package/dist/src/order-builders.js +172 -0
- package/dist/src/order-builders.js.map +1 -0
- package/dist/src/render.d.ts +1 -0
- package/dist/src/render.js +9 -0
- package/dist/src/render.js.map +1 -1
- package/dist/src/runtime.d.ts +22 -0
- package/dist/src/runtime.js +2 -0
- package/dist/src/runtime.js.map +1 -0
- package/dist/src/solve-commands.d.ts +25 -0
- package/dist/src/solve-commands.js +171 -0
- package/dist/src/solve-commands.js.map +1 -0
- package/dist/src/tokens.js +2 -1
- package/dist/src/tokens.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/wallet.d.ts +4 -1
- package/dist/src/wallet.js +25 -5
- package/dist/src/wallet.js.map +1 -1
- package/package.json +16 -7
- package/dist/src/events.d.ts +0 -8
- package/dist/src/events.js +0 -43
- package/dist/src/events.js.map +0 -1
- package/dist/src/transport.d.ts +0 -208
- package/dist/src/transport.js +0 -441
- package/dist/src/transport.js.map +0 -1
|
@@ -1,480 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { vaultBalance } from "../crank.js";
|
|
6
|
-
import { define } from "./actions.js";
|
|
7
|
-
import { createCost, release, rentFor, reserve, TOKEN_ACCOUNT_RENT_BYTES } from "./budget.js";
|
|
8
|
-
import { expiryOf, MAX_EXPIRES_IN, MIN_EXPIRES_IN, WARN_SCALED } from "./create.js";
|
|
9
|
-
import { tool } from "./names.js";
|
|
10
|
-
import { lowerAllowance, raiseAllowance, setupLines, unusedIntent } from "./owner.js";
|
|
11
|
-
import { prepare } from "./prepare.js";
|
|
12
|
-
import { paying } from "./signed.js";
|
|
13
|
-
import { claim, claimedBy, PREPARED_TTL } from "./claims.js";
|
|
14
|
-
import { decimalsFor } from "./read.js";
|
|
15
|
-
import { AgentRefusal, SimulationFailed } from "./problems.js";
|
|
16
|
-
import { orderSchema, paramsOf, partnerSchema, preparedSchema, preparedView } from "./shapes.js";
|
|
17
|
-
import { TOKEN_NAMES, tokenNames } from "../tokens.js";
|
|
18
|
-
import { account, amount, choice, integer, list, nullable, object, optional, text, time, InvalidInput, } from "./schema.js";
|
|
19
|
-
export const MANDATE_KIND_NAMES = ["swap", "limit", "dutch"];
|
|
20
|
-
const MAX_MANDATE_SECONDS = 365 * 24 * 60 * 60;
|
|
21
|
-
const MAX_MANDATE_INTENTS = 1_000_000;
|
|
22
|
-
export const MANDATE_ID_PROBES = 64;
|
|
23
|
-
export const REVOKE_CANCELS = 6;
|
|
24
|
-
const KIND_OF = { swap: Kind.SwapExactIn, limit: Kind.LimitOrder, dutch: Kind.DutchAuction };
|
|
25
|
-
const kindBits = (names) => names.reduce((bits, name) => bits | Number(kindBit(KIND_OF[name])), 0);
|
|
26
|
-
export const NO_MANDATE_HINT = "it was never granted, or the owner revoked it, which closes it";
|
|
27
|
-
const WARN_STILL_OPEN = "some of the agent's intents stay open after this; they can no longer be filled, but their escrow stays locked until you cancel them";
|
|
28
|
-
export async function loadMandate(transport, owner, agent, id) {
|
|
29
|
-
const [address] = await findMandatePda({ owner, agent, id });
|
|
30
|
-
const data = await engineAccount(transport, address, getMandateDiscriminatorBytes(), "mandate").catch((error) => {
|
|
31
|
-
if (error instanceof MissingAccount) {
|
|
32
|
-
error.message = `${error.message}; ${NO_MANDATE_HINT}`;
|
|
33
|
-
}
|
|
34
|
-
throw error;
|
|
35
|
-
});
|
|
36
|
-
return { address, mandate: getMandateDecoder().decode(data) };
|
|
37
|
-
}
|
|
38
|
-
function specOf(m) {
|
|
39
|
-
return {
|
|
40
|
-
id: m.id,
|
|
41
|
-
agent: m.agent,
|
|
42
|
-
kinds: m.kinds,
|
|
43
|
-
perIntent: m.perIntent,
|
|
44
|
-
total: m.total,
|
|
45
|
-
maxIntents: m.maxIntents,
|
|
46
|
-
maxTtl: m.maxTtl,
|
|
47
|
-
validUntil: m.validUntil,
|
|
48
|
-
floorOut: m.floorOut,
|
|
49
|
-
floorIn: m.floorIn,
|
|
50
|
-
...(m.partnerBps === 0 ? {} : { partner: { key: m.partner, bps: m.partnerBps } }),
|
|
51
|
-
agentFee: m.agentFee,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
function limitsOf(m) {
|
|
55
|
-
return `this mandate allows at most ${m.perIntent} raw input units per intent including the agent fee of ${m.agentFee}, ${m.total - m.spent} more raw input units in total, ${m.maxIntents - m.intents} more intents, each expiring within ${m.maxTtl} seconds, and at least ${m.floorOut} raw output units for every ${m.floorIn} raw input units it draws`;
|
|
56
|
-
}
|
|
57
|
-
function explained(m) {
|
|
58
|
-
return (error) => {
|
|
59
|
-
if (error instanceof SimulationFailed && error.problem.code.startsWith("Mandate")) {
|
|
60
|
-
throw new SimulationFailed({ ...error.problem, hint: `${error.problem.hint}; ${limitsOf(m)}` });
|
|
61
|
-
}
|
|
62
|
-
throw error;
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
export const AGENT_NONCE_PROBES = 64n;
|
|
66
|
-
export async function agentNonce(transport, owner, serial, used, hold) {
|
|
67
|
-
const lane = mandateLane(serial);
|
|
68
|
-
if (lane === null) {
|
|
69
|
-
throw new AgentRefusal("NoFreeNonce", "this mandate's grant serial has no nonce lane; the owner must grant a new mandate");
|
|
70
|
-
}
|
|
71
|
-
for (let k = 0n; k < AGENT_NONCE_PROBES; k++) {
|
|
72
|
-
const nonce = lane | ((BigInt(used) + k) & 0xffffffffn);
|
|
73
|
-
if (claimedBy(hold.claims, owner, hold.now).has(nonce)) {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
const [intent] = await findIntentPda({ owner, nonce });
|
|
77
|
-
const taken = (await createdAccount(transport, intent)) !== null;
|
|
78
|
-
if (!taken && !claimedBy(hold.claims, owner, hold.now).has(nonce)) {
|
|
79
|
-
claim(hold.claims, hold.call, owner, nonce, hold.now + PREPARED_TTL, hold.now);
|
|
80
|
-
return nonce;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
throw new AgentRefusal("NoFreeNonce", "this mandate's nonce lane is crowded; close some of its finished intents first");
|
|
84
|
-
}
|
|
85
|
-
export async function freeMandateId(transport, owner, agent) {
|
|
86
|
-
for (let id = 0n; id < BigInt(MANDATE_ID_PROBES); id++) {
|
|
87
|
-
const [address] = await findMandatePda({ owner, agent, id });
|
|
88
|
-
if ((await createdAccount(transport, address)) === null) {
|
|
89
|
-
return id;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
throw new AgentRefusal("NoFreeMandateId", `this owner already granted ${MANDATE_ID_PROBES} mandates to this agent; revoke one first`);
|
|
93
|
-
}
|
|
94
|
-
const mandateRef = {
|
|
95
|
-
owner: account("the wallet that granted the mandate"),
|
|
96
|
-
agent: account("the agent key the mandate authorises"),
|
|
97
|
-
id: optional(amount("which of the owner's mandates for this agent; default 0")),
|
|
98
|
-
};
|
|
99
|
-
export const prepareMandate = define({
|
|
100
|
-
name: tool("prepare_mandate"),
|
|
101
|
-
title: "Prepare a mandate for an agent",
|
|
102
|
-
description: `Build the one transaction an owner signs to let an agent key create intents on their behalf, within limits the program enforces: one token pair, the allowed kinds, a cap per intent, a total budget, a maximum number of intents, a maximum lifetime per intent, a price floor and an end date. Proceeds always go to the owner. The owner pays this transaction's fee and rent; the agent pays the network fee and rent of every intent it creates. The owner may grant the agent a fee per intent in the input token, which counts against every limit. The transaction also registers the owner and creates their output token account if needed, and raises the engine's spending allowance on the input token by the total budget. Revoke with ${tool("prepare_revoke_mandate")}.`,
|
|
103
|
-
effect: "prepare",
|
|
104
|
-
input: object({
|
|
105
|
-
owner: account("the wallet that grants the mandate and signs"),
|
|
106
|
-
agent: account("the agent key that may create intents"),
|
|
107
|
-
input_mint: account("the only token the agent may sell"),
|
|
108
|
-
output_mint: account("the only token the agent may buy"),
|
|
109
|
-
kinds: list(choice(MANDATE_KIND_NAMES), 3, "the intent kinds the agent may create", 1),
|
|
110
|
-
per_intent: amount("most raw input units one intent may draw, agent fee included"),
|
|
111
|
-
total: amount("most raw input units all the agent's intents may sell together"),
|
|
112
|
-
max_intents: integer(1, MAX_MANDATE_INTENTS, "most intents the agent may create"),
|
|
113
|
-
max_ttl: integer(MIN_EXPIRES_IN, MAX_EXPIRES_IN, "longest an intent may stay open, in seconds"),
|
|
114
|
-
valid_for: integer(MIN_EXPIRES_IN, MAX_MANDATE_SECONDS, "seconds from now until the mandate ends"),
|
|
115
|
-
floor: object({
|
|
116
|
-
out: amount("raw output units"),
|
|
117
|
-
in: amount("raw input units"),
|
|
118
|
-
}, "the worst price in raw units: every intent must ask at least out raw output units for every in raw input units it draws, fee included; one whole token is 10^decimals raw units, and get_balances gives the decimals"),
|
|
119
|
-
id: optional(amount("leave out to use the next free id")),
|
|
120
|
-
partner: optional(partnerSchema),
|
|
121
|
-
agent_fee: optional(amount("raw input units the agent takes from the owner per intent; counted in per_intent, total and the price floor; default 0")),
|
|
122
|
-
}),
|
|
123
|
-
output: object({
|
|
124
|
-
mandate: account(),
|
|
125
|
-
id: amount(),
|
|
126
|
-
valid_until: time(),
|
|
127
|
-
summary: list(text(), 24, "the grant in plain words; show these to the owner before signing"),
|
|
128
|
-
warnings: list(text(), 4),
|
|
129
|
-
prepared: preparedSchema,
|
|
130
|
-
}),
|
|
131
|
-
run: async ({ transport }, input) => {
|
|
132
|
-
const now = await chainTime(transport);
|
|
133
|
-
if (input.agent_fee === undefined && input.per_intent === 0n) {
|
|
134
|
-
throw new InvalidInput([{ path: "per_intent", message: "must be more than 0" }]);
|
|
135
|
-
}
|
|
136
|
-
if (input.agent_fee !== undefined && input.agent_fee >= input.per_intent) {
|
|
137
|
-
throw new InvalidInput([{ path: "agent_fee", message: "must be less than per_intent, which includes it" }]);
|
|
138
|
-
}
|
|
139
|
-
const id = input.id ?? (await freeMandateId(transport, input.owner, input.agent));
|
|
140
|
-
const spec = {
|
|
141
|
-
id,
|
|
142
|
-
agent: input.agent,
|
|
143
|
-
kinds: kindBits(input.kinds),
|
|
144
|
-
perIntent: input.per_intent,
|
|
145
|
-
total: input.total,
|
|
146
|
-
maxIntents: input.max_intents,
|
|
147
|
-
maxTtl: BigInt(input.max_ttl),
|
|
148
|
-
validUntil: now + BigInt(input.valid_for),
|
|
149
|
-
floorOut: input.floor.out,
|
|
150
|
-
floorIn: input.floor.in,
|
|
151
|
-
...(input.partner === undefined ? {} : { partner: { key: input.partner.account, bps: input.partner.bps } }),
|
|
152
|
-
...(input.agent_fee === undefined ? {} : { agentFee: input.agent_fee }),
|
|
153
|
-
};
|
|
154
|
-
const inputToken = await mintOf(transport, input.input_mint);
|
|
155
|
-
const outputToken = await mintOf(transport, input.output_mint);
|
|
156
|
-
const described = describeMandate(spec, {
|
|
157
|
-
inputMint: input.input_mint,
|
|
158
|
-
outputMint: input.output_mint,
|
|
159
|
-
...tokenNames(input.input_mint, input.output_mint),
|
|
160
|
-
now,
|
|
161
|
-
inputDecimals: inputToken.decimals,
|
|
162
|
-
outputDecimals: outputToken.decimals,
|
|
163
|
-
});
|
|
164
|
-
const owner = createNoopSigner(input.owner);
|
|
165
|
-
const source = await findAssociatedTokenAddress({
|
|
166
|
-
owner: input.owner,
|
|
167
|
-
mint: input.input_mint,
|
|
168
|
-
tokenProgram: inputToken.tokenProgram,
|
|
169
|
-
});
|
|
170
|
-
const allowance = await raiseAllowance(transport, input.owner, source, spec.total);
|
|
171
|
-
const register = await initUserIfMissing(await loadUser(transport, input.owner), input.owner);
|
|
172
|
-
const receiver = await tokenAccountIfMissing(transport, owner, input.owner, input.output_mint, outputToken.tokenProgram);
|
|
173
|
-
const wrap = await wrapIfShort(transport, input.owner, input.input_mint, inputToken.tokenProgram, spec.total);
|
|
174
|
-
const instructions = [
|
|
175
|
-
...register,
|
|
176
|
-
...receiver.create,
|
|
177
|
-
...wrap.instructions,
|
|
178
|
-
await buildApproveDelegate({
|
|
179
|
-
owner,
|
|
180
|
-
mint: input.input_mint,
|
|
181
|
-
tokenProgram: inputToken.tokenProgram,
|
|
182
|
-
amount: allowance.after,
|
|
183
|
-
decimals: inputToken.decimals,
|
|
184
|
-
}),
|
|
185
|
-
await buildCreateMandate({
|
|
186
|
-
owner,
|
|
187
|
-
inputMint: input.input_mint,
|
|
188
|
-
outputMint: input.output_mint,
|
|
189
|
-
inputTokenProgram: inputToken.tokenProgram,
|
|
190
|
-
outputTokenProgram: outputToken.tokenProgram,
|
|
191
|
-
mandate: spec,
|
|
192
|
-
ownerInput: source,
|
|
193
|
-
receiver: receiver.address,
|
|
194
|
-
}),
|
|
195
|
-
];
|
|
196
|
-
const disclosed = setupLines({
|
|
197
|
-
registers: register.length > 0,
|
|
198
|
-
creates: receiver.create.length > 0 ? [input.output_mint] : [],
|
|
199
|
-
allowance,
|
|
200
|
-
decimals: inputToken.decimals,
|
|
201
|
-
wraps: wrap.lamports,
|
|
202
|
-
});
|
|
203
|
-
const prepared = preparedView(await prepare(transport, instructions, input.owner));
|
|
204
|
-
const [mandate] = await findMandatePda({ owner: input.owner, agent: input.agent, id });
|
|
205
|
-
return {
|
|
206
|
-
mandate,
|
|
207
|
-
id,
|
|
208
|
-
valid_until: spec.validUntil,
|
|
209
|
-
summary: [...described.lines, `Proceeds go to ${receiver.address}; the agent spends only from ${source}`, ...disclosed.lines],
|
|
210
|
-
warnings: [
|
|
211
|
-
...described.warnings,
|
|
212
|
-
...disclosed.warnings,
|
|
213
|
-
...(inputToken.scaled || outputToken.scaled ? [WARN_SCALED] : []),
|
|
214
|
-
],
|
|
215
|
-
prepared,
|
|
216
|
-
};
|
|
217
|
-
},
|
|
218
|
-
});
|
|
219
|
-
export const getMandate = define({
|
|
220
|
-
name: tool("get_mandate"),
|
|
221
|
-
title: "Read a mandate",
|
|
222
|
-
description: "Read a mandate: its limits, how much of its budget and intent count the agent has used, and whether it is active, expired, or revoked because the owner advanced their signing epoch. A mandate the owner revoked outright is closed, so reading it fails with NotFound.",
|
|
223
|
-
effect: "read",
|
|
224
|
-
input: object(mandateRef),
|
|
225
|
-
output: object({
|
|
226
|
-
mandate: account(),
|
|
227
|
-
owner: account(),
|
|
228
|
-
agent: account(),
|
|
229
|
-
id: amount(),
|
|
230
|
-
status: choice(["active", "expired", "revoked"]),
|
|
231
|
-
input_mint: account(),
|
|
232
|
-
output_mint: account(),
|
|
233
|
-
kinds: list(choice(MANDATE_KIND_NAMES), 3),
|
|
234
|
-
per_intent: amount(),
|
|
235
|
-
total: amount(),
|
|
236
|
-
spent: amount(),
|
|
237
|
-
remaining: amount("raw input units the agent may still sell"),
|
|
238
|
-
max_intents: integer(0, 0xffff_ffff),
|
|
239
|
-
intents: integer(0, 0xffff_ffff),
|
|
240
|
-
max_ttl: time(),
|
|
241
|
-
valid_until: time(),
|
|
242
|
-
floor: object({ out: amount(), in: amount() }),
|
|
243
|
-
partner: nullable(partnerSchema),
|
|
244
|
-
agent_fee: amount("raw input units each intent pays the agent"),
|
|
245
|
-
summary: list(text(), 16),
|
|
246
|
-
}),
|
|
247
|
-
run: async ({ transport }, input) => {
|
|
248
|
-
const { address, mandate } = await loadMandate(transport, input.owner, input.agent, input.id ?? 0n);
|
|
249
|
-
const now = await chainTime(transport);
|
|
250
|
-
const decimals = await decimalsFor(transport, new Map(), mandate.inputMint, mandate.outputMint);
|
|
251
|
-
const user = await loadUser(transport, input.owner);
|
|
252
|
-
const status = user?.epoch !== mandate.epoch ? "revoked" : now >= mandate.validUntil ? "expired" : "active";
|
|
253
|
-
return {
|
|
254
|
-
mandate: address,
|
|
255
|
-
owner: mandate.owner,
|
|
256
|
-
agent: mandate.agent,
|
|
257
|
-
id: mandate.id,
|
|
258
|
-
status,
|
|
259
|
-
input_mint: mandate.inputMint,
|
|
260
|
-
output_mint: mandate.outputMint,
|
|
261
|
-
kinds: mandateKinds(mandate.kinds),
|
|
262
|
-
per_intent: mandate.perIntent,
|
|
263
|
-
total: mandate.total,
|
|
264
|
-
spent: mandate.spent,
|
|
265
|
-
remaining: mandate.total - mandate.spent,
|
|
266
|
-
max_intents: mandate.maxIntents,
|
|
267
|
-
intents: mandate.intents,
|
|
268
|
-
max_ttl: mandate.maxTtl,
|
|
269
|
-
valid_until: mandate.validUntil,
|
|
270
|
-
floor: { out: mandate.floorOut, in: mandate.floorIn },
|
|
271
|
-
partner: mandate.partnerBps === 0 ? null : { account: mandate.partner, bps: mandate.partnerBps },
|
|
272
|
-
agent_fee: mandate.agentFee,
|
|
273
|
-
summary: describeMandate(specOf(mandate), { inputMint: mandate.inputMint, outputMint: mandate.outputMint, now, ...decimals, ...tokenNames(mandate.inputMint, mandate.outputMint) }).lines,
|
|
274
|
-
};
|
|
275
|
-
},
|
|
276
|
-
});
|
|
277
|
-
export const prepareRevokeMandate = define({
|
|
278
|
-
name: tool("prepare_revoke_mandate"),
|
|
279
|
-
title: "Prepare a mandate revocation",
|
|
280
|
-
description: `Build the transaction that revokes one mandate and returns its rent to the owner. From then on no solver can fill any intent opened under it. The same transaction cancels up to ${REVOKE_CANCELS} of those intents that are still open, refunding their escrow, and lowers the engine's spending allowance by the unused budget; still_open counts the ones left, which list_intents finds and prepare_cancel cancels. Intents the owner made outside this mandate stay open and are counted in other_open. To revoke every mandate and pending signature together, the owner advances their signing epoch instead.`,
|
|
281
|
-
effect: "prepare",
|
|
282
|
-
input: object(mandateRef),
|
|
283
|
-
output: object({
|
|
284
|
-
mandate: account(),
|
|
285
|
-
cancelled: list(account(), REVOKE_CANCELS, "intents this transaction cancels"),
|
|
286
|
-
still_open: integer(0, MAX_MANDATE_INTENTS, "intents opened under the mandate that stay open, unfillable, until cancelled"),
|
|
287
|
-
other_open: integer(0, Number.MAX_SAFE_INTEGER, "the owner's open intents not made under this mandate, such as their own or signed ones, which revoking leaves untouched"),
|
|
288
|
-
allowance: amount("the engine's spending allowance on the mandate's input account once this transaction lands"),
|
|
289
|
-
summary: list(text(), 32, "what signing does, in plain words"),
|
|
290
|
-
warnings: list(text(), 8, "anything to check before signing"),
|
|
291
|
-
prepared: preparedSchema,
|
|
292
|
-
}),
|
|
293
|
-
run: async ({ transport }, input) => {
|
|
294
|
-
const id = input.id ?? 0n;
|
|
295
|
-
const { address, mandate } = await loadMandate(transport, input.owner, input.agent, id);
|
|
296
|
-
const owner = createNoopSigner(input.owner);
|
|
297
|
-
const inputToken = await mintOf(transport, mandate.inputMint);
|
|
298
|
-
const unused = mandate.total - mandate.spent;
|
|
299
|
-
const allowance = await lowerAllowance(transport, input.owner, mandate.inputAccount, unused);
|
|
300
|
-
const lower = allowance.after === allowance.before
|
|
301
|
-
? []
|
|
302
|
-
: allowance.after === 0n
|
|
303
|
-
? [getRevokeInstruction({ source: mandate.inputAccount, owner }, { programAddress: inputToken.tokenProgram })]
|
|
304
|
-
: [
|
|
305
|
-
await buildApproveDelegate({
|
|
306
|
-
owner,
|
|
307
|
-
mint: mandate.inputMint,
|
|
308
|
-
tokenProgram: inputToken.tokenProgram,
|
|
309
|
-
amount: allowance.after,
|
|
310
|
-
decimals: inputToken.decimals,
|
|
311
|
-
source: mandate.inputAccount,
|
|
312
|
-
}),
|
|
313
|
-
];
|
|
314
|
-
const live = (await transport.intents(input.owner))
|
|
315
|
-
.map(({ address: intent, data }) => ({ intent, state: getIntentDecoder().decode(data) }))
|
|
316
|
-
.filter(({ state }) => state.owner === input.owner && state.status === IntentStatus.Open);
|
|
317
|
-
const open = live.filter(({ state }) => state.mandate === address);
|
|
318
|
-
const chosen = open.slice(0, REVOKE_CANCELS);
|
|
319
|
-
const cancels = [];
|
|
320
|
-
for (const { state } of chosen) {
|
|
321
|
-
cancels.push(await buildCancelIntent({
|
|
322
|
-
owner,
|
|
323
|
-
nonce: state.nonce,
|
|
324
|
-
inputMint: state.inputMint,
|
|
325
|
-
tokenProgram: await tokenProgramOf(transport, state.inputMint),
|
|
326
|
-
}));
|
|
327
|
-
}
|
|
328
|
-
const ix = await buildRevokeMandate({ owner, agent: input.agent, id });
|
|
329
|
-
const show = (raw) => formatAmount(raw, inputToken.decimals);
|
|
330
|
-
let refunded = 0n;
|
|
331
|
-
for (const { intent } of chosen) {
|
|
332
|
-
refunded += await vaultBalance(transport, intent);
|
|
333
|
-
}
|
|
334
|
-
const left = open.length - chosen.length;
|
|
335
|
-
const others = live.filter(({ state }) => state.mandate !== address);
|
|
336
|
-
return {
|
|
337
|
-
mandate: address,
|
|
338
|
-
cancelled: chosen.map(({ intent }) => intent),
|
|
339
|
-
still_open: left,
|
|
340
|
-
other_open: others.length,
|
|
341
|
-
allowance: allowance.after,
|
|
342
|
-
summary: [
|
|
343
|
-
`Revokes mandate ${address}: ${input.agent} can no longer create intents for you, and nobody can fill the ones it made`,
|
|
344
|
-
...(chosen.length === 0
|
|
345
|
-
? ["None of the agent's intents under it are open"]
|
|
346
|
-
: [`Cancels the agent's ${chosen.length} open intent(s) and returns ${show(refunded)} of ${tokenOf(mandate.inputMint, TOKEN_NAMES[mandate.inputMint])} to you`]),
|
|
347
|
-
...(left === 0 ? [] : [`Leaves ${left} more of its intents open but unfillable; cancel them with ${tool("prepare_cancel")}`]),
|
|
348
|
-
allowance.after === allowance.before
|
|
349
|
-
? `Leaves the engine's spending allowance on ${mandate.inputAccount} at ${show(allowance.before)}`
|
|
350
|
-
: `Lowers the engine's spending allowance on ${mandate.inputAccount} from ${show(allowance.before)} to ${show(allowance.after)}, taking back the mandate's unused ${show(unused)}`,
|
|
351
|
-
...(others.length === 0
|
|
352
|
-
? []
|
|
353
|
-
: [`Leaves your ${others.length} other open intent(s) untouched: ${others.map(({ intent }) => intent).join(", ")}`]),
|
|
354
|
-
"Returns the mandate's rent to you",
|
|
355
|
-
],
|
|
356
|
-
warnings: left === 0 ? [] : [WARN_STILL_OPEN],
|
|
357
|
-
prepared: preparedView(await prepare(transport, [ix, ...cancels, ...lower], input.owner)),
|
|
358
|
-
};
|
|
359
|
-
},
|
|
360
|
-
});
|
|
361
|
-
const agentTerms = {
|
|
362
|
-
owner: account("the wallet whose mandate the agent uses"),
|
|
363
|
-
id: optional(amount("which of the owner's mandates for this agent; default 0")),
|
|
364
|
-
order: orderSchema,
|
|
365
|
-
expires_at: optional(time("unix seconds after which nobody can fill the intent")),
|
|
366
|
-
expires_in: optional(integer(MIN_EXPIRES_IN, MAX_EXPIRES_IN, "seconds from now until the intent expires")),
|
|
367
|
-
nonce: optional(amount("leave out to use the mandate's next free nonce; one you pass must have the top bit set")),
|
|
368
|
-
};
|
|
369
|
-
const agentOutput = {
|
|
370
|
-
intent: account(),
|
|
371
|
-
nonce: amount(),
|
|
372
|
-
expires_at: time(),
|
|
373
|
-
escrow: amount(),
|
|
374
|
-
agent_fee: amount("raw input units held with the escrow and paid to the agent only if this intent fills"),
|
|
375
|
-
budget_remaining: amount("raw input units the mandate still allows after this intent and its fee"),
|
|
376
|
-
summary: list(text(), 16),
|
|
377
|
-
};
|
|
378
|
-
async function agentIntent(transport, agent, input, claims, call) {
|
|
379
|
-
const id = input.id ?? 0n;
|
|
380
|
-
const { mandate } = await loadMandate(transport, input.owner, agent.address, id);
|
|
381
|
-
const now = await chainTime(transport);
|
|
382
|
-
const expiresAt = expiryOf(input, now);
|
|
383
|
-
const params = validate(paramsOf(input.order));
|
|
384
|
-
const { config } = await loadConfig(transport);
|
|
385
|
-
const inputToken = await mintOf(transport, mandate.inputMint);
|
|
386
|
-
const outputToken = await mintOf(transport, mandate.outputMint);
|
|
387
|
-
if (input.nonce !== undefined) {
|
|
388
|
-
await unusedIntent(transport, input.owner, input.nonce);
|
|
389
|
-
claim(claims, call, input.owner, input.nonce, now + PREPARED_TTL, now);
|
|
390
|
-
}
|
|
391
|
-
const nonce = input.nonce ?? (await agentNonce(transport, input.owner, mandate.serial, mandate.intents, { claims, call, now }));
|
|
392
|
-
const intent = await unusedIntent(transport, input.owner, nonce);
|
|
393
|
-
const feeAccount = mandate.agentFee === 0n
|
|
394
|
-
? { create: [] }
|
|
395
|
-
: await tokenAccountIfMissing(transport, agent, agent.address, mandate.inputMint, inputToken.tokenProgram);
|
|
396
|
-
const create = await buildCreateIntentByAgent({
|
|
397
|
-
agent,
|
|
398
|
-
owner: input.owner,
|
|
399
|
-
mandateId: id,
|
|
400
|
-
treasury: config.feeRecipient,
|
|
401
|
-
maxCreateFee: config.createFee,
|
|
402
|
-
maxBounty: config.crankBounty,
|
|
403
|
-
nonce,
|
|
404
|
-
params,
|
|
405
|
-
expiresAt,
|
|
406
|
-
...(mandate.partnerBps === 0 ? {} : { partner: { key: mandate.partner, bps: mandate.partnerBps } }),
|
|
407
|
-
inputMint: mandate.inputMint,
|
|
408
|
-
outputMint: mandate.outputMint,
|
|
409
|
-
inputTokenProgram: inputToken.tokenProgram,
|
|
410
|
-
outputTokenProgram: outputToken.tokenProgram,
|
|
411
|
-
ownerInput: mandate.inputAccount,
|
|
412
|
-
receiver: mandate.outputAccount,
|
|
413
|
-
});
|
|
414
|
-
const escrow = escrowAmount(params);
|
|
415
|
-
return {
|
|
416
|
-
mandate,
|
|
417
|
-
instructions: [...feeAccount.create, create],
|
|
418
|
-
cost: createCost(config) + (feeAccount.create.length > 0 ? rentFor(TOKEN_ACCOUNT_RENT_BYTES) : 0n),
|
|
419
|
-
now,
|
|
420
|
-
view: {
|
|
421
|
-
intent,
|
|
422
|
-
nonce,
|
|
423
|
-
expires_at: expiresAt,
|
|
424
|
-
escrow,
|
|
425
|
-
agent_fee: mandate.agentFee,
|
|
426
|
-
budget_remaining: mandate.total - mandate.spent - escrow - mandate.agentFee,
|
|
427
|
-
summary: [
|
|
428
|
-
...describeTerms({ kind: params.kind, params: encodeParams(params), inputMint: mandate.inputMint, outputMint: mandate.outputMint }, { inputDecimals: inputToken.decimals, outputDecimals: outputToken.decimals, ...tokenNames(mandate.inputMint, mandate.outputMint) }),
|
|
429
|
-
`Expires: ${formatTime(expiresAt)}`,
|
|
430
|
-
...(mandate.agentFee === 0n
|
|
431
|
-
? []
|
|
432
|
-
: [
|
|
433
|
-
`Agent fee: ${formatAmount(mandate.agentFee, inputToken.decimals)} of ${tokenOf(mandate.inputMint, TOKEN_NAMES[mandate.inputMint])}, held with the escrow and paid to the agent only if this intent fills; refunded to the owner if it is cancelled or expires`,
|
|
434
|
-
]),
|
|
435
|
-
],
|
|
436
|
-
},
|
|
437
|
-
};
|
|
438
|
-
}
|
|
439
|
-
export const prepareAgentCreate = define({
|
|
440
|
-
name: tool("prepare_agent_create"),
|
|
441
|
-
title: "Prepare an intent under a mandate",
|
|
442
|
-
description: `Build the transaction an agent key signs to create an intent for an owner under the mandate the owner granted it. The agent pays the fee, rent and any create fee; the owner's tokens move from the allowance they gave the engine. The program refuses anything outside the mandate. Use ${tool("agent_create")} instead when this server holds the agent key.`,
|
|
443
|
-
effect: "prepare",
|
|
444
|
-
input: object({ agent: account("the agent key that signs and pays"), ...agentTerms }),
|
|
445
|
-
output: object({ ...agentOutput, prepared: preparedSchema }),
|
|
446
|
-
run: async ({ transport, claims }, input, call) => {
|
|
447
|
-
const built = await agentIntent(transport, createNoopSigner(input.agent), input, claims, call);
|
|
448
|
-
const prepared = await prepare(transport, built.instructions, input.agent).catch(explained(built.mandate));
|
|
449
|
-
return { ...built.view, prepared: preparedView(prepared) };
|
|
450
|
-
},
|
|
451
|
-
});
|
|
452
|
-
export const agentCreate = define({
|
|
453
|
-
name: tool("agent_create"),
|
|
454
|
-
title: "Create an intent under a mandate",
|
|
455
|
-
description: "Create an intent for an owner under the mandate the owner granted to this server's agent key, signing and paying with that key. Needs a server started with --agent. This server refuses owners outside its --agent-owners list and spending beyond its hourly lamport budget; the program refuses anything outside the mandate's limits. Each call creates a new intent.",
|
|
456
|
-
effect: "submit",
|
|
457
|
-
repeats: true,
|
|
458
|
-
input: object(agentTerms),
|
|
459
|
-
output: object({ ...agentOutput, signature: text() }),
|
|
460
|
-
run: async (ctx, input, call) => {
|
|
461
|
-
const key = ctx.agent;
|
|
462
|
-
if (key === undefined) {
|
|
463
|
-
throw new AgentRefusal("AgentNotConfigured", "this server holds no agent key; start it with --agent to act under mandates");
|
|
464
|
-
}
|
|
465
|
-
if (!key.owners.has(input.owner)) {
|
|
466
|
-
throw new AgentRefusal("OwnerNotServed", `this agent only acts for the owners it was started with; ${input.owner} is not one of them`);
|
|
467
|
-
}
|
|
468
|
-
const built = await agentIntent(ctx.transport, key.signer, input, ctx.claims, call);
|
|
469
|
-
const prepared = await prepare(ctx.transport, built.instructions, key.signer.address).catch(explained(built.mandate));
|
|
470
|
-
const spend = reserve(key.budget, built.cost + prepared.priorityLamports, built.now);
|
|
471
|
-
const paid = { any: false };
|
|
472
|
-
call.undo.push(() => {
|
|
473
|
-
if (!paid.any) {
|
|
474
|
-
release(key.budget, spend);
|
|
475
|
-
}
|
|
476
|
-
});
|
|
477
|
-
return { ...built.view, signature: await paying(paid, ctx.transport.send(prepared.instructions, key.signer)) };
|
|
478
|
-
},
|
|
479
|
-
});
|
|
1
|
+
export { AGENT_NONCE_PROBES, agentNonce, freeMandateId, loadMandate, MANDATE_ID_PROBES, MANDATE_KIND_NAMES, NO_MANDATE_HINT, REVOKE_CANCELS, } from "./mandate-state.js";
|
|
2
|
+
export { getMandate, prepareMandate } from "./mandate-grant.js";
|
|
3
|
+
export { prepareRevokeMandate } from "./mandate-revoke.js";
|
|
4
|
+
export { agentCreate, prepareAgentCreate } from "./mandate-agent.js";
|
|
480
5
|
//# sourceMappingURL=mandate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mandate.js","sourceRoot":"","sources":["../../../src/agent/mandate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mandate.js","sourceRoot":"","sources":["../../../src/agent/mandate.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/src/agent/mcp.js
CHANGED
|
@@ -9,10 +9,14 @@ import { passThrough } from "./schema.js";
|
|
|
9
9
|
import { VERSION } from "../version.js";
|
|
10
10
|
export const ANNOTATIONS = {
|
|
11
11
|
read: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
12
|
-
prepare: { readOnlyHint:
|
|
13
|
-
submit: { readOnlyHint: false, destructiveHint:
|
|
12
|
+
prepare: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
|
|
13
|
+
submit: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true },
|
|
14
14
|
};
|
|
15
|
-
export const annotationsOf = (action) =>
|
|
15
|
+
export const annotationsOf = (action) => ({
|
|
16
|
+
...ANNOTATIONS[action.effect],
|
|
17
|
+
...(action.repeats === true ? { idempotentHint: false } : {}),
|
|
18
|
+
...(action.destructive === false ? { destructiveHint: false } : {}),
|
|
19
|
+
});
|
|
16
20
|
export const WALLET_INSTRUCTIONS = [
|
|
17
21
|
`This server holds a devnet wallet and trades intents with it. Devnet tokens have no value.`,
|
|
18
22
|
`Before anything else, show the user this notice once, every line:`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/agent/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAkD,MAAM,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,MAAM,CAAC,MAAM,WAAW,GAAyH;IAC/I,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAC/F,OAAO,EAAE,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/agent/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export async function transactionSize(transport, instructions, feePayer, tables)
|
|
|
10
10
|
return getTransactionEncoder().encode(compileTransaction(message)).length;
|
|
11
11
|
}
|
|
12
12
|
export async function prepare(transport, instructions, feePayer, tables) {
|
|
13
|
-
const budgeted = await transport.budget(instructions, feePayer);
|
|
13
|
+
const budgeted = await transport.budget(instructions, feePayer, tables);
|
|
14
14
|
const latest = await transport.latestBlockhash();
|
|
15
15
|
const message = withTables(pipe(createTransactionMessage({ version: 0 }), (m) => setTransactionMessageFeePayer(feePayer, m), (m) => setTransactionMessageLifetimeUsingBlockhash(latest, m), (m) => appendTransactionMessageInstructions(budgeted, m)), tables);
|
|
16
16
|
const compiled = await partiallySignTransactionMessageWithSigners(message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../../src/agent/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oCAAoC,EACpC,kBAAkB,EAClB,kDAAkD,EAClD,qBAAqB,EACrB,0CAA0C,EAC1C,wBAAwB,EACxB,+BAA+B,EAE/B,IAAI,EACJ,6BAA6B,EAC7B,2CAA2C,GAC5C,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAezG,MAAM,UAAU,GAAG,CAGjB,OAAU,EACV,MAAqB,EACrB,EAAE,CACF,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;IACtD,CAAC,CAAC,OAAO;IACT,CAAC,CAAC,kDAAkD,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAoB,EACpB,YAAoC,EACpC,QAAiB,EACjB,MAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,UAAU,CACxB,IAAI,CACF,wBAAwB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EACxC,CAAC,CAAC,EAAE,EAAE,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,EACjD,CAAC,CAAC,EAAE,EAAE,CAAC,2CAA2C,CAAC,MAAM,EAAE,CAAC,CAAC,EAC7D,CAAC,CAAC,EAAE,EAAE,CAAC,oCAAoC,CAAC,YAAY,EAAE,CAAC,CAAC,CAC7D,EACD,MAAM,CACP,CAAC;IACF,OAAO,qBAAqB,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,SAAoB,EACpB,YAAoC,EACpC,QAAiB,EACjB,MAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../../src/agent/prepare.ts"],"names":[],"mappings":"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"}
|
|
@@ -119,6 +119,7 @@ export declare const SERVER_PROBLEMS: {
|
|
|
119
119
|
readonly NotFound: Entry;
|
|
120
120
|
readonly NotAMint: Entry;
|
|
121
121
|
readonly RateLimited: Entry;
|
|
122
|
+
readonly Unreachable: Entry;
|
|
122
123
|
readonly Failed: Entry;
|
|
123
124
|
readonly TransactionFailed: Entry;
|
|
124
125
|
readonly WalletNotConfigured: Entry;
|
|
@@ -129,6 +130,7 @@ export declare const SERVER_PROBLEMS: {
|
|
|
129
130
|
readonly WalletTradeLimit: Entry;
|
|
130
131
|
readonly ReleaseChanged: Entry;
|
|
131
132
|
readonly ReleaseTooLarge: Entry;
|
|
133
|
+
readonly WalletBusy: Entry;
|
|
132
134
|
readonly WalletHourLimit: Entry;
|
|
133
135
|
readonly AgentNotConfigured: Entry;
|
|
134
136
|
readonly OwnerNotServed: Entry;
|
|
@@ -154,6 +156,14 @@ export declare const SERVER_PROBLEMS: {
|
|
|
154
156
|
readonly OwnerAccountMissing: Entry;
|
|
155
157
|
readonly NotDeliverable: Entry;
|
|
156
158
|
readonly NotEarliestAnnouncer: Entry;
|
|
159
|
+
readonly NotAnnounced: Entry;
|
|
160
|
+
readonly NotReleased: Entry;
|
|
161
|
+
readonly NotARelease: Entry;
|
|
162
|
+
readonly ReleaseUnread: Entry;
|
|
163
|
+
readonly HistoryLagging: Entry;
|
|
164
|
+
readonly OtherLifecycle: Entry;
|
|
165
|
+
readonly AlreadyRecorded: Entry;
|
|
166
|
+
readonly HistoryTooLong: Entry;
|
|
157
167
|
};
|
|
158
168
|
type ServerProblemName = keyof typeof SERVER_PROBLEMS;
|
|
159
169
|
export declare class AgentRefusal extends Error {
|
|
@@ -162,5 +172,7 @@ export declare class AgentRefusal extends Error {
|
|
|
162
172
|
}
|
|
163
173
|
export declare const HINT_LIMIT = 300;
|
|
164
174
|
export declare const untrusted: (text: string) => string;
|
|
165
|
-
export declare function
|
|
175
|
+
export declare function unreachable(error: unknown, depth?: number): boolean;
|
|
176
|
+
export declare const unreachableHint: (url: string | undefined) => string;
|
|
177
|
+
export declare function problemOf(error: unknown, url?: string): Problem;
|
|
166
178
|
export {};
|