@intent-engine/cli 0.1.47 → 0.1.49
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/agent/claim-line.d.ts +27 -0
- package/dist/src/agent/claim-line.js +131 -0
- package/dist/src/agent/claim-line.js.map +1 -0
- package/dist/src/agent/create.js +3 -2
- package/dist/src/agent/create.js.map +1 -1
- package/dist/src/agent/everyday.js +8 -0
- package/dist/src/agent/everyday.js.map +1 -1
- package/dist/src/agent/expiry.d.ts +4 -0
- package/dist/src/agent/expiry.js +23 -0
- package/dist/src/agent/expiry.js.map +1 -0
- package/dist/src/agent/job-claims.d.ts +10 -0
- package/dist/src/agent/job-claims.js +31 -0
- package/dist/src/agent/job-claims.js.map +1 -0
- package/dist/src/agent/jobs.d.ts +2 -0
- package/dist/src/agent/jobs.js +35 -9
- package/dist/src/agent/jobs.js.map +1 -1
- package/dist/src/agent/mandate-agent.js +3 -2
- package/dist/src/agent/mandate-agent.js.map +1 -1
- package/dist/src/agent/mcp.d.ts +5 -1
- package/dist/src/agent/mcp.js +31 -4
- package/dist/src/agent/mcp.js.map +1 -1
- package/dist/src/agent/problems.d.ts +2 -0
- package/dist/src/agent/problems.js +2 -0
- package/dist/src/agent/problems.js.map +1 -1
- package/dist/src/agent/signed-prepare.js +2 -1
- package/dist/src/agent/signed-prepare.js.map +1 -1
- package/dist/src/agent/signed-submit.js +4 -2
- package/dist/src/agent/signed-submit.js.map +1 -1
- package/dist/src/agent/spec.js +5 -1
- package/dist/src/agent/spec.js.map +1 -1
- package/dist/src/agent/wallet/account.js +5 -3
- package/dist/src/agent/wallet/account.js.map +1 -1
- package/dist/src/agent/wallet/attest.js +7 -2
- package/dist/src/agent/wallet/attest.js.map +1 -1
- package/dist/src/agent/wallet/committee.d.ts +4 -0
- package/dist/src/agent/wallet/committee.js +71 -4
- package/dist/src/agent/wallet/committee.js.map +1 -1
- package/dist/src/agent/wallet/costs.d.ts +32 -0
- package/dist/src/agent/wallet/costs.js +77 -0
- package/dist/src/agent/wallet/costs.js.map +1 -0
- package/dist/src/agent/wallet/delivery.d.ts +4 -0
- package/dist/src/agent/wallet/delivery.js +5 -4
- package/dist/src/agent/wallet/delivery.js.map +1 -1
- package/dist/src/agent/wallet/escrow.d.ts +2 -0
- package/dist/src/agent/wallet/escrow.js +33 -12
- package/dist/src/agent/wallet/escrow.js.map +1 -1
- package/dist/src/agent/wallet/guard.d.ts +1 -0
- package/dist/src/agent/wallet/guard.js +7 -0
- package/dist/src/agent/wallet/guard.js.map +1 -1
- package/dist/src/agent/wallet/history-profit.d.ts +30 -0
- package/dist/src/agent/wallet/history-profit.js +104 -0
- package/dist/src/agent/wallet/history-profit.js.map +1 -0
- package/dist/src/agent/wallet/history-work.d.ts +18 -2
- package/dist/src/agent/wallet/history-work.js +29 -7
- package/dist/src/agent/wallet/history-work.js.map +1 -1
- package/dist/src/agent/wallet/history.d.ts +1 -0
- package/dist/src/agent/wallet/history.js +50 -17
- package/dist/src/agent/wallet/history.js.map +1 -1
- package/dist/src/agent/wallet/offer.d.ts +1 -0
- package/dist/src/agent/wallet/offer.js +2 -0
- package/dist/src/agent/wallet/offer.js.map +1 -1
- package/dist/src/agent/wallet/receipt.d.ts +2 -0
- package/dist/src/agent/wallet/receipt.js +57 -9
- package/dist/src/agent/wallet/receipt.js.map +1 -1
- package/dist/src/agent/wallet/seal.d.ts +7 -0
- package/dist/src/agent/wallet/seal.js +62 -0
- package/dist/src/agent/wallet/seal.js.map +1 -0
- package/dist/src/agent/wallet/split.js +11 -3
- package/dist/src/agent/wallet/split.js.map +1 -1
- package/dist/src/agent/wallet/trade.js +2 -1
- package/dist/src/agent/wallet/trade.js.map +1 -1
- package/dist/src/agent/wallet/work.d.ts +8 -0
- package/dist/src/agent/wallet/work.js +150 -0
- package/dist/src/agent/wallet/work.js.map +1 -0
- package/dist/src/agent/wallet.d.ts +1 -1
- package/dist/src/agent/wallet.js +8 -2
- package/dist/src/agent/wallet.js.map +1 -1
- package/dist/src/agent/work-claims.js +111 -63
- package/dist/src/agent/work-claims.js.map +1 -1
- package/dist/src/delivery-fetch.d.ts +7 -0
- package/dist/src/delivery-fetch.js +19 -9
- package/dist/src/delivery-fetch.js.map +1 -1
- package/dist/src/job-commands.js +2 -1
- package/dist/src/job-commands.js.map +1 -1
- package/dist/src/job-filters.d.ts +3 -1
- package/dist/src/job-filters.js +5 -4
- package/dist/src/job-filters.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +4 -4
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { findIntentPda, formatAmount, kindName, tokenName } from "@intent-engine/core";
|
|
1
|
+
import { findIntentPda, formatAmount, Kind, kindName, tokenName } from "@intent-engine/core";
|
|
2
2
|
import { createClient, mintOf, ownHistory, paidWalletsOf, transactionAt } from "@intent-engine/client";
|
|
3
3
|
import { define } from "../actions.js";
|
|
4
4
|
import { tool } from "../names.js";
|
|
5
5
|
import { account, amount, choice, flag, integer, list, nullable, object, optional, text, time } from "../schema.js";
|
|
6
6
|
import { signerOf } from "./guard.js";
|
|
7
7
|
import { claimItem, claimsOf, OWN_TRANSACTIONS, workItem, workOf } from "./history-work.js";
|
|
8
|
+
import { PAID_FROM_INPUT, PAID_FROM_MAX, profitItem, profitOf } from "./history-profit.js";
|
|
8
9
|
export const HISTORY_DEFAULT = 10;
|
|
9
10
|
export const HISTORY_MAX = 25;
|
|
11
|
+
export const RANGE_SCAN = 100;
|
|
10
12
|
const EVENTS_PER_INTENT = 20;
|
|
11
13
|
const OUTCOMES = ["open", "filled", "released", "cancelled", "expired", "unknown"];
|
|
12
14
|
const fields = (event) => (event?.fields ?? {});
|
|
@@ -18,6 +20,9 @@ const ENDINGS = {
|
|
|
18
20
|
IntentCancelled: "cancelled",
|
|
19
21
|
IntentExpired: "expired",
|
|
20
22
|
};
|
|
23
|
+
const inRange = (range, intent, at) => (range.escrow === undefined || intent === range.escrow) &&
|
|
24
|
+
(range.since === undefined || (at !== null && at >= range.since)) &&
|
|
25
|
+
(range.until === undefined || (at !== null && at <= range.until));
|
|
21
26
|
async function paidWalletOf(transport, ending, intent) {
|
|
22
27
|
const { signature, slot, blockTime } = ending;
|
|
23
28
|
const transaction = (await transactionAt(transport, signature, intent)) ?? { signature, slot, blockTime, failed: false, emitted: [] };
|
|
@@ -26,10 +31,14 @@ async function paidWalletOf(transport, ending, intent) {
|
|
|
26
31
|
export const walletHistory = define({
|
|
27
32
|
name: tool("wallet_history"),
|
|
28
33
|
title: "Show the wallet's history",
|
|
29
|
-
description: `Shows
|
|
34
|
+
description: `Shows what this wallet did, newest first, from the chain: orders (intents) it created and how each ended; work it announced with ${tool("wallet_deliver")} and whether a release paid it; claims it took or dropped. escrow, since and until narrow the lists; paid_from adds profit: what a job paid against what its sub-escrows cost. Leaves out transfers and releases it judged.`,
|
|
30
35
|
effect: "read",
|
|
31
36
|
input: object({
|
|
32
37
|
limit: optional(integer(1, HISTORY_MAX, `how many of the newest intents, and of the newest announcements and claims, to show; default ${HISTORY_DEFAULT}`)),
|
|
38
|
+
escrow: optional(account("list only this escrow's intent, announcements and claims; with paid_from, the job this wallet was paid for")),
|
|
39
|
+
since: optional(time("list only what happened at or after these unix seconds")),
|
|
40
|
+
until: optional(time("list only what happened at or before these unix seconds")),
|
|
41
|
+
paid_from: optional(list(account(), PAID_FROM_MAX, PAID_FROM_INPUT, 1)),
|
|
33
42
|
}),
|
|
34
43
|
output: object({
|
|
35
44
|
wallet: account("this server's wallet, whose history this is"),
|
|
@@ -41,7 +50,7 @@ export const walletHistory = define({
|
|
|
41
50
|
sold: text("whole tokens the intent escrowed"),
|
|
42
51
|
sell_token: text("SOL, TEST or the mint"),
|
|
43
52
|
received: nullable(text("whole tokens delivered by the fill")),
|
|
44
|
-
receive_token: text("SOL, TEST or the mint"),
|
|
53
|
+
receive_token: nullable(text("SOL, TEST or the mint a fill delivers; null for a work escrow, which pays a worker and receives nothing")),
|
|
45
54
|
paid_to: nullable(account("the wallet a release paid: the owner of payee")),
|
|
46
55
|
payee: nullable(account("the token account a release paid into, owned by paid_to; for SOL it holds wrapped SOL")),
|
|
47
56
|
signature: nullable(text("the transaction that ended it")),
|
|
@@ -51,13 +60,16 @@ export const walletHistory = define({
|
|
|
51
60
|
work: list(workItem, HISTORY_MAX, `the work this wallet announced with ${tool("wallet_deliver")}, newest first`),
|
|
52
61
|
claims: list(claimItem, HISTORY_MAX, "the claims this wallet took or dropped, newest first"),
|
|
53
62
|
more_work: flag(`true when older announcements or claims exist beyond limit, or this wallet has transactions older than the newest ${OWN_TRANSACTIONS} read`),
|
|
63
|
+
profit: optional(profitItem),
|
|
54
64
|
}),
|
|
55
65
|
run: async (ctx, input) => {
|
|
56
66
|
const wallet = (await signerOf(ctx)).address;
|
|
67
|
+
const profit = input.paid_from === undefined ? undefined : await profitOf(ctx.transport, wallet, input.escrow, input.paid_from);
|
|
57
68
|
const client = createClient({ url: ctx.url ?? "http://cluster", transport: ctx.transport });
|
|
58
69
|
const next = await client.nextNonce(wallet);
|
|
59
70
|
const limit = BigInt(input.limit ?? HISTORY_DEFAULT);
|
|
60
|
-
const
|
|
71
|
+
const ranged = input.since !== undefined || input.until !== undefined;
|
|
72
|
+
const range = { escrow: input.escrow, since: input.since, until: input.until };
|
|
61
73
|
const decimals = new Map();
|
|
62
74
|
const tokens = async (mint, raw) => {
|
|
63
75
|
if (!decimals.has(mint)) {
|
|
@@ -65,41 +77,62 @@ export const walletHistory = define({
|
|
|
65
77
|
}
|
|
66
78
|
return formatAmount(raw, decimals.get(mint) ?? 0);
|
|
67
79
|
};
|
|
68
|
-
const
|
|
69
|
-
for (let nonce = next - 1n; nonce >= oldest && nonce >= 0n; nonce -= 1n) {
|
|
70
|
-
const [intent] = await findIntentPda({ owner: wallet, nonce });
|
|
80
|
+
const activityOf = async (intent, nonce) => {
|
|
71
81
|
const events = await client.history(intent, EVENTS_PER_INTENT);
|
|
72
82
|
const created = fields(events.find((e) => e.name === "IntentCreated"));
|
|
73
83
|
const inputMint = created["inputMint"];
|
|
74
84
|
const outputMint = created["outputMint"];
|
|
75
|
-
if (inputMint === undefined || outputMint === undefined) {
|
|
76
|
-
|
|
85
|
+
if (inputMint === undefined || outputMint === undefined || (nonce === undefined && created["owner"] !== wallet)) {
|
|
86
|
+
return undefined;
|
|
77
87
|
}
|
|
88
|
+
const kind = Number(created["kind"]);
|
|
78
89
|
const ending = events.find((e) => e.name in ENDINGS);
|
|
79
90
|
const outcome = ending === undefined ? ((await ctx.transport.getAccount(intent)) === null ? "unknown" : "open") : (ENDINGS[ending.name] ?? "unknown");
|
|
80
91
|
const ended = fields(ending);
|
|
81
92
|
const delivered = outcome === "filled" ? ended["delivered"] : undefined;
|
|
82
93
|
const attested = ending?.name === "IntentAttested" ? ending : undefined;
|
|
83
|
-
|
|
84
|
-
nonce,
|
|
94
|
+
return {
|
|
95
|
+
nonce: nonce ?? created["nonce"],
|
|
85
96
|
intent,
|
|
86
|
-
kind: kindName(
|
|
97
|
+
kind: kindName(kind) ?? "unknown",
|
|
87
98
|
outcome,
|
|
88
99
|
sold: await tokens(inputMint, created["escrowed"]),
|
|
89
100
|
sell_token: tokenName(inputMint) ?? inputMint,
|
|
90
101
|
received: delivered === undefined ? null : await tokens(outputMint, delivered),
|
|
91
|
-
receive_token: tokenName(outputMint) ?? outputMint,
|
|
102
|
+
receive_token: kind === Kind.AttestedResult ? null : (tokenName(outputMint) ?? outputMint),
|
|
92
103
|
paid_to: attested === undefined ? null : await paidWalletOf(ctx.transport, attested, intent),
|
|
93
104
|
payee: attested === undefined ? null : attested.fields.payee,
|
|
94
105
|
signature: ending?.signature ?? null,
|
|
95
106
|
at: (ending ?? events[0])?.blockTime ?? null,
|
|
96
|
-
}
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
const activity = [];
|
|
110
|
+
let more = false;
|
|
111
|
+
if (input.escrow !== undefined) {
|
|
112
|
+
const item = await activityOf(input.escrow, undefined);
|
|
113
|
+
activity.push(...(item !== undefined && inRange(range, item.intent, item.at) ? [item] : []));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
const oldest = next - (ranged ? BigInt(RANGE_SCAN) : limit);
|
|
117
|
+
for (let nonce = next - 1n; nonce >= oldest && nonce >= 0n; nonce -= 1n) {
|
|
118
|
+
if (BigInt(activity.length) === limit) {
|
|
119
|
+
more = true;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
const [intent] = await findIntentPda({ owner: wallet, nonce });
|
|
123
|
+
const item = await activityOf(intent, nonce);
|
|
124
|
+
if (item !== undefined && inRange(range, intent, item.at)) {
|
|
125
|
+
activity.push(item);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
more ||= oldest > 0n;
|
|
97
129
|
}
|
|
130
|
+
const kept = ({ intent, blockTime }) => inRange(range, intent, blockTime);
|
|
98
131
|
const own = await ownHistory(ctx.transport, wallet, OWN_TRANSACTIONS);
|
|
99
132
|
const count = Number(limit);
|
|
100
|
-
const { work, more: moreWork } = await workOf(ctx.transport, wallet, own.transactions, count, tokens);
|
|
101
|
-
const { claims, more: moreClaims } = await claimsOf(ctx.transport, wallet, own.transactions, count);
|
|
102
|
-
return { wallet, activity, more
|
|
133
|
+
const { work, more: moreWork } = await workOf(ctx.transport, wallet, own.transactions, count, tokens, kept);
|
|
134
|
+
const { claims, more: moreClaims } = await claimsOf(ctx.transport, wallet, own.transactions, count, kept);
|
|
135
|
+
return { wallet, activity, more, work, claims, more_work: moreWork || moreClaims || !own.complete, ...(profit === undefined ? {} : { profit }) };
|
|
103
136
|
},
|
|
104
137
|
});
|
|
105
138
|
//# sourceMappingURL=history.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../../src/agent/wallet/history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../../src/agent/wallet/history.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,7 @@ export declare function offered(ctx: AgentContext, call: Call, input: {
|
|
|
49
49
|
pay_to?: Address | undefined;
|
|
50
50
|
send?: boolean | undefined;
|
|
51
51
|
after?: AfterCreate | undefined;
|
|
52
|
+
priced?: ((network: bigint) => void) | undefined;
|
|
52
53
|
}, terms: (sold: Token, bought: Token, now: bigint, inputMint: Address, outputMint: Address) => Promise<Terms> | Terms, done?: string): Promise<{
|
|
53
54
|
sent: boolean;
|
|
54
55
|
next: string;
|
|
@@ -4,6 +4,7 @@ import { createIntent } from "../create.js";
|
|
|
4
4
|
import { AgentRefusal, problemOf } from "../problems.js";
|
|
5
5
|
import { account, amount, flag, list, object, optional, text } from "../schema.js";
|
|
6
6
|
import { orderSchema } from "../shapes.js";
|
|
7
|
+
import { networkFee } from "./costs.js";
|
|
7
8
|
import { walletEmpty, access, signerOf, mintNamed, limited, bookOf, live, salesOf, checkSale, sent, refusedBeforeSending, deviceOutput } from "./guard.js";
|
|
8
9
|
export const offerFields = {
|
|
9
10
|
intent: account(),
|
|
@@ -40,6 +41,7 @@ export async function offered(ctx, call, input, terms, done) {
|
|
|
40
41
|
return { intent, nonce, summary, warnings, prepared };
|
|
41
42
|
};
|
|
42
43
|
const first = await created(ctx);
|
|
44
|
+
input.priced?.(networkFee(first.prepared));
|
|
43
45
|
if (input.send !== true) {
|
|
44
46
|
return sent(ctx, signer, first, input.send, call, { done });
|
|
45
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offer.js","sourceRoot":"","sources":["../../../../src/agent/wallet/offer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAG7F,OAAO,EAAoB,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAe,IAAI,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3J,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,OAAO,EAAE;IACjB,KAAK,EAAE,MAAM,EAAE;IACf,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;IACzB,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;IAC1B,GAAG,YAAY;IACf,IAAI,EAAE,IAAI,EAAE;IACZ,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAQ/C,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAiB,EACjB,IAAU,EACV,
|
|
1
|
+
{"version":3,"file":"offer.js","sourceRoot":"","sources":["../../../../src/agent/wallet/offer.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export declare const noneKnown: (name: string, count: number) => string;
|
|
|
10
10
|
export declare const RELEASE_LANDING = "the escrow is marked released on chain, but the RPC node has not returned the release transaction yet, so who it paid is not known; call again in a few seconds";
|
|
11
11
|
export declare const stillUnknown: (name: string) => string;
|
|
12
12
|
export { NO_CLOCK } from "./wait.js";
|
|
13
|
+
export declare const paidOther: (wallets: readonly Address[], self: Address) => string;
|
|
13
14
|
export declare const walletReceipt: import("../actions.js").AnyAction;
|
|
14
15
|
export declare const getReceipt: import("../actions.js").AnyAction;
|
|
15
16
|
export declare function escrowReceipt(transport: Transport, owner: Address, nonce: bigint, sha256: string | undefined, releaseSignature?: string): Promise<{
|
|
@@ -38,6 +39,7 @@ export declare function escrowReceipt(transport: Transport, owner: Address, nonc
|
|
|
38
39
|
paid: string;
|
|
39
40
|
mint?: Address;
|
|
40
41
|
recipients: bigint;
|
|
42
|
+
paid_wallets?: Address[];
|
|
41
43
|
} | {
|
|
42
44
|
intent: Address<string>;
|
|
43
45
|
released: boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getAddressDecoder } from "@solana/kit";
|
|
2
|
-
import { findIntentPda, formatAmount, IntentStatus, Kind, NATIVE_MINT } from "@intent-engine/core";
|
|
2
|
+
import { findIntentPda, formatAmount, IntentStatus, Kind, MAX_RECIPIENTS, NATIVE_MINT } from "@intent-engine/core";
|
|
3
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";
|
|
@@ -21,19 +21,53 @@ export const RELEASE_LANDING = "the escrow is marked released on chain, but the
|
|
|
21
21
|
export const stillUnknown = (name) => `the RPC node had not returned the escrow's release when the wait ran out, so whether and how it was paid is still unknown; call ${tool(name)} again with wait in a few seconds`;
|
|
22
22
|
export { NO_CLOCK } from "./wait.js";
|
|
23
23
|
const waitInput = optional(integer(1, WAIT_MAX, "most seconds to wait for a release; without it, the tool reads once"));
|
|
24
|
-
const alsoInput = optional(list(object({ owner: account("the wallet that made this escrow"), nonce: amount("this escrow's nonce") }), ALSO_MAX, `up to ${ALSO_MAX} more escrows, each by owner and nonce, read with the one nonce names; the result is the first released, and its owner and nonce say which; sha256 and release apply only to the one nonce names`));
|
|
24
|
+
const alsoInput = optional(list(object({ owner: account("the wallet that made this escrow"), nonce: amount("this escrow's nonce") }), ALSO_MAX, `up to ${ALSO_MAX} more escrows, each by owner and nonce, read with the one nonce names; the result is the first released, and its owner and nonce say which, and escrows gives the state of each; sha256 and release apply only to the one nonce names`));
|
|
25
25
|
const unknownIn = (receipt) => "complete" in receipt && receipt.complete === false;
|
|
26
|
+
const paidWalletsIn = (paid) => (!paid.released ? undefined : paid.paid_to !== undefined ? [paid.paid_to] : paid.paid_wallets);
|
|
27
|
+
const stateOf = ({ owner, nonce }, receipt) => {
|
|
28
|
+
const paid = receipt;
|
|
29
|
+
return {
|
|
30
|
+
owner,
|
|
31
|
+
nonce,
|
|
32
|
+
intent: receipt.intent,
|
|
33
|
+
released: receipt.released,
|
|
34
|
+
...(unknownIn(receipt) ? { complete: false } : {}),
|
|
35
|
+
...(!paid.released ? {} : paid.paid_to !== undefined ? { paid_to: paid.paid_to } : paid.paid_wallets !== undefined ? { paid_wallets: paid.paid_wallets } : {}),
|
|
36
|
+
};
|
|
37
|
+
};
|
|
26
38
|
async function firstReleased(transport, escrows) {
|
|
27
39
|
const read = [];
|
|
28
40
|
for (const { owner, nonce, sha256, release } of escrows) {
|
|
29
|
-
|
|
30
|
-
if (receipt.released) {
|
|
31
|
-
return escrows.length === 1 ? receipt : { ...receipt, owner, nonce };
|
|
32
|
-
}
|
|
33
|
-
read.push(receipt);
|
|
41
|
+
read.push(await escrowReceipt(transport, owner, nonce, sha256, release));
|
|
34
42
|
}
|
|
35
43
|
const [first] = read;
|
|
36
|
-
|
|
44
|
+
if (escrows.length === 1) {
|
|
45
|
+
return first;
|
|
46
|
+
}
|
|
47
|
+
const states = escrows.map((escrow, at) => stateOf(escrow, read[at]));
|
|
48
|
+
const at = read.findIndex(({ released }) => released);
|
|
49
|
+
const escrow = escrows[at];
|
|
50
|
+
if (escrow !== undefined) {
|
|
51
|
+
return { ...read[at], owner: escrow.owner, nonce: escrow.nonce, escrows: states };
|
|
52
|
+
}
|
|
53
|
+
return read.some(unknownIn) ? { intent: first.intent, released: false, complete: false, next: "", escrows: states } : { ...first, escrows: states };
|
|
54
|
+
}
|
|
55
|
+
export const paidOther = (wallets, self) => `this release paid ${wallets.join(", ")}, not this wallet ${self}: matches and valid describe the recorded work, and this wallet was not paid for it`;
|
|
56
|
+
function forWallet(receipt, self) {
|
|
57
|
+
const paid = (state) => {
|
|
58
|
+
const wallets = paidWalletsIn(state);
|
|
59
|
+
return wallets === undefined ? {} : { paid_this_wallet: wallets.includes(self) };
|
|
60
|
+
};
|
|
61
|
+
const escrows = receipt.escrows?.map((state) => ({ ...state, ...paid(state) }));
|
|
62
|
+
const own = paid(receipt);
|
|
63
|
+
const wallets = paidWalletsIn(receipt);
|
|
64
|
+
const shown = { ...receipt, ...own, ...(escrows === undefined ? {} : { escrows }) };
|
|
65
|
+
if (own.paid_this_wallet !== false || wallets === undefined) {
|
|
66
|
+
return shown;
|
|
67
|
+
}
|
|
68
|
+
const prior = "next" in receipt ? receipt.next : undefined;
|
|
69
|
+
const line = paidOther(wallets, self);
|
|
70
|
+
return { ...shown, next: typeof prior === "string" && prior !== "" ? `${line}; ${prior}` : line };
|
|
37
71
|
}
|
|
38
72
|
async function waitedReceipt(ctx, name, wait, escrows) {
|
|
39
73
|
const many = escrows.length > 1;
|
|
@@ -79,8 +113,20 @@ const receiptOutput = object({
|
|
|
79
113
|
delivered_salt: optional(text("the payee's salt the release recorded, which opens the payee's announcement")),
|
|
80
114
|
valid: optional(flag("given with delivered_salt: whether that salt opens an announcement by the payee to the recorded sha256")),
|
|
81
115
|
refuted_by: optional(text("an earlier announcement of the same work that a published opening shows, so the release paid a later announcer")),
|
|
116
|
+
paid_wallets: optional(list(account(), MAX_RECIPIENTS, "the wallets a split release paid")),
|
|
117
|
+
paid_this_wallet: optional(flag("wallet_receipt with a released escrow whose payees are known: whether the release paid this server's wallet")),
|
|
82
118
|
owner: optional(account("given with also: the owner of the escrow released")),
|
|
83
119
|
nonce: optional(amount("given with also: the nonce of the escrow released")),
|
|
120
|
+
escrows: optional(list(object({
|
|
121
|
+
owner: account(),
|
|
122
|
+
nonce: amount(),
|
|
123
|
+
intent: account(),
|
|
124
|
+
released: flag(),
|
|
125
|
+
complete: optional(flag("false when the history read was not enough to know whether it was released")),
|
|
126
|
+
paid_to: optional(account("the wallet the release paid")),
|
|
127
|
+
paid_wallets: optional(list(account(), MAX_RECIPIENTS, "the wallets a split release paid")),
|
|
128
|
+
paid_this_wallet: optional(flag("wallet_receipt only: whether the release paid this server's wallet")),
|
|
129
|
+
}), ALSO_MAX + 1, "given with also: every named escrow in the order given, released or not, with whom each release paid")),
|
|
84
130
|
next: optional(text()),
|
|
85
131
|
});
|
|
86
132
|
export const walletReceipt = define({
|
|
@@ -100,7 +146,7 @@ export const walletReceipt = define({
|
|
|
100
146
|
run: async (ctx, input) => {
|
|
101
147
|
const self = (await signerOf(ctx)).address;
|
|
102
148
|
const escrows = escrowsOf({ owner: input.owner ?? self, nonce: input.nonce, sha256: input.sha256, release: input.release }, input.also);
|
|
103
|
-
const receipt = await waitedReceipt(ctx, "wallet_receipt", input.wait, escrows);
|
|
149
|
+
const receipt = forWallet(await waitedReceipt(ctx, "wallet_receipt", input.wait, escrows), self);
|
|
104
150
|
const wrapped = "paid_to" in receipt && receipt.paid_to === self && receipt.mint === NATIVE_MINT;
|
|
105
151
|
if (!wrapped) {
|
|
106
152
|
return receipt;
|
|
@@ -176,11 +222,13 @@ export async function escrowReceipt(transport, owner, nonce, sha256, releaseSign
|
|
|
176
222
|
if (release.event.name === "IntentSplit") {
|
|
177
223
|
mint ??= await heldMint(transport, intent);
|
|
178
224
|
const decimals = mint === undefined ? undefined : (await mintOf(transport, mint)).decimals;
|
|
225
|
+
const wallets = await paidWalletsOf(transport, { event: release.event, transaction: tx }, intent);
|
|
179
226
|
return {
|
|
180
227
|
...common,
|
|
181
228
|
paid: formatAmount(fields["net"], decimals),
|
|
182
229
|
...(mint === undefined ? {} : { mint }),
|
|
183
230
|
recipients: BigInt(fields["recipients"]),
|
|
231
|
+
...(wallets === null ? {} : { paid_wallets: wallets }),
|
|
184
232
|
};
|
|
185
233
|
}
|
|
186
234
|
const payee = fields["payee"];
|
|
@@ -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,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrI,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,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,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,0BAA0B,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC;AAE7I,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAE1B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,eAAe,KAAK,kCAAkC,IAAI,CAAC,IAAI,CAAC,6DAA6D,CAAC;AAE3L,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CACvD,qBAAqB,KAAK,yHAAyH,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC;AAE7M,MAAM,CAAC,MAAM,eAAe,GAC1B,iKAAiK,CAAC;AAEpK,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAC3C,mIAAmI,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC;AAEnL,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,qEAAqE,CAAC,CAAC,CAAC;AAExH,MAAM,SAAS,GAAG,QAAQ,CACxB,IAAI,CACF,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,kCAAkC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,EACpG,QAAQ,EACR,SAAS,QAAQ,uOAAuO,CACzP,CACF,CAAC;AAUF,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,UAAU,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC;AAErG,MAAM,aAAa,GAAG,CAAC,IAAU,EAAkC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAErK,MAAM,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAU,EAAE,OAAgB,EAAe,EAAE;IAC1E,MAAM,IAAI,GAAS,OAAO,CAAC;IAC3B,OAAO;QACL,KAAK;QACL,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/J,CAAC;AACJ,CAAC,CAAC;AAEF,KAAK,UAAU,aAAa,CAAC,SAAoB,EAAE,OAA0B;IAC3E,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAiB,CAAC;IAClC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAY,CAAC,CAAC,CAAC;IACjF,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,GAAI,IAAI,CAAC,EAAE,CAAa,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACjG,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACtJ,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAA2B,EAAE,IAAa,EAAE,EAAE,CACtE,qBAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,qFAAqF,CAAC;AAExJ,SAAS,SAAS,CAAC,OAAgB,EAAE,IAAa;IAChD,MAAM,IAAI,GAAG,CAAC,KAAW,EAAkC,EAAE;QAC3D,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnF,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACpF,IAAI,GAAG,CAAC,gBAAgB,KAAK,KAAK,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAY,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACpG,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAiB,EAAE,IAAY,EAAE,IAAwB,EAAE,OAA0B;IAChH,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,CAAC,IAAa,EAAW,EAAE,CACtC,IAAI,CAAC,QAAQ;QACX,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,IAAI;gBACJ,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;gBACpD,CAAC,CAAC,IAAI,KAAK,SAAS;oBAClB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE;YAC3C,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7F,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,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,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,OAAkB,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,IAAmC,EAAY,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;AAE7G,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,0EAA0E,CAAC,CAAC;IACtG,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,wFAAwF,CAAC,CAAC;IAClH,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,CAAC,YAAY,CAAC,CAAC;IACtC,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,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,kCAAkC,CAAC,CAAC;IAC3F,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,6GAA6G,CAAC,CAAC;IAC/I,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IAC7E,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,mDAAmD,CAAC,CAAC;IAC5E,OAAO,EAAE,QAAQ,CACf,IAAI,CACF,MAAM,CAAC;QACL,KAAK,EAAE,OAAO,EAAE;QAChB,KAAK,EAAE,MAAM,EAAE;QACf,MAAM,EAAE,OAAO,EAAE;QACjB,QAAQ,EAAE,IAAI,EAAE;QAChB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;QACtG,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QACzD,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,kCAAkC,CAAC,CAAC;QAC3F,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;KACvG,CAAC,EACF,QAAQ,GAAG,CAAC,EACZ,sGAAsG,CACvG,CACF;IACD,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,sKAAsK,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,QAAQ,yHAAyH;IACjW,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;QACf,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,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxI,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;QACjG,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,mfAAmf,QAAQ,6EAA6E;IACrlB,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;QACf,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,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;CACjK,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,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;YAC9F,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QAC7E,CAAC;QACD,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,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAoB,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACjH,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;YAClD,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;SACvD,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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type AgentContext } from "../actions.js";
|
|
2
|
+
export declare const SEAL_LIMIT = "seal to at most 32 wallets in all, the attestor included";
|
|
3
|
+
export declare const SEALED_UNCHECKED = "spec_url holds a sealed spec this wallet cannot open, so its sha256 was not checked against spec_hash";
|
|
4
|
+
export declare const SEALED_NEXT: string;
|
|
5
|
+
export declare const sealedTooLarge: (bytes: number) => string;
|
|
6
|
+
export declare function openedSpec(ctx: AgentContext, bytes: Uint8Array): Promise<Uint8Array | undefined>;
|
|
7
|
+
export declare const walletSealSpec: import("../actions.js").AnyAction;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { isSealed, MAX_SEALED_RECIPIENTS, seal, SealedError, unseal } from "@intent-engine/core";
|
|
3
|
+
import { MAX_SPEC_BYTES } from "@intent-engine/client";
|
|
4
|
+
import { define } from "../actions.js";
|
|
5
|
+
import { tool } from "../names.js";
|
|
6
|
+
import { InvalidInput, account, list, object, optional, text } from "../schema.js";
|
|
7
|
+
import { signerOf, walletKeypair } from "./guard.js";
|
|
8
|
+
export const SEAL_LIMIT = `seal to at most ${MAX_SEALED_RECIPIENTS} wallets in all, the attestor included`;
|
|
9
|
+
export const SEALED_UNCHECKED = "spec_url holds a sealed spec this wallet cannot open, so its sha256 was not checked against spec_hash";
|
|
10
|
+
export const SEALED_NEXT = `host sealed at an https url, byte for byte, then pass that url as spec_url and sha256 as spec_hash to ${tool("wallet_escrow")}`;
|
|
11
|
+
export const sealedTooLarge = (bytes) => `sealed, it is ${bytes} bytes, over the ${MAX_SPEC_BYTES} bytes ${tool("get_spec")} reads; shorten the spec`;
|
|
12
|
+
const sha256 = (bytes) => createHash("sha256").update(bytes).digest("hex");
|
|
13
|
+
export async function openedSpec(ctx, bytes) {
|
|
14
|
+
if (!isSealed(bytes)) {
|
|
15
|
+
return bytes;
|
|
16
|
+
}
|
|
17
|
+
const keypair = await walletKeypair(ctx);
|
|
18
|
+
return keypair === undefined ? undefined : unseal(bytes, keypair).catch(() => undefined);
|
|
19
|
+
}
|
|
20
|
+
export const walletSealSpec = define({
|
|
21
|
+
name: tool("wallet_seal_spec"),
|
|
22
|
+
title: "Seal a spec for an invite-only job",
|
|
23
|
+
description: `Seals an acceptance spec so only the wallets it invites and the attestor (the judge) can read it, in the form ${tool("get_spec")} opens. Sends nothing: host sealed at a public url, then pass that url as spec_url and sha256 as spec_hash to ${tool("wallet_escrow")}.`,
|
|
24
|
+
effect: "read",
|
|
25
|
+
input: object({
|
|
26
|
+
text: text("the spec, exactly as invited workers should read it"),
|
|
27
|
+
invite: list(account(), MAX_SEALED_RECIPIENTS, `the wallets that may read the spec, such as the workers you hire; ${SEAL_LIMIT}`, 1),
|
|
28
|
+
attestor: optional(account("the escrow's attestor, who reads the spec to judge the work; default this wallet")),
|
|
29
|
+
}),
|
|
30
|
+
output: object({
|
|
31
|
+
sealed: text("the sealed spec to host, byte for byte"),
|
|
32
|
+
sha256: text("64 hex: the sha256 of the spec text; pass it as spec_hash"),
|
|
33
|
+
sealed_sha256: text("64 hex: the sha256 of sealed, to check the hosted copy"),
|
|
34
|
+
sealed_to: list(account(), MAX_SEALED_RECIPIENTS, "every wallet that can open it, the attestor included"),
|
|
35
|
+
next: text(),
|
|
36
|
+
}),
|
|
37
|
+
run: async (ctx, input) => {
|
|
38
|
+
const attestor = input.attestor ?? (await signerOf(ctx)).address;
|
|
39
|
+
const recipients = [...new Set([...input.invite, attestor])];
|
|
40
|
+
if (recipients.length > MAX_SEALED_RECIPIENTS) {
|
|
41
|
+
throw new InvalidInput([{ path: "invite", message: SEAL_LIMIT }]);
|
|
42
|
+
}
|
|
43
|
+
let sealed;
|
|
44
|
+
try {
|
|
45
|
+
sealed = await seal(new TextEncoder().encode(input.text), recipients);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw error instanceof SealedError ? new InvalidInput([{ path: "invite", message: error.message }]) : error;
|
|
49
|
+
}
|
|
50
|
+
if (sealed.length > MAX_SPEC_BYTES) {
|
|
51
|
+
throw new InvalidInput([{ path: "text", message: sealedTooLarge(sealed.length) }]);
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
sealed: new TextDecoder().decode(sealed),
|
|
55
|
+
sha256: sha256(input.text),
|
|
56
|
+
sealed_sha256: sha256(sealed),
|
|
57
|
+
sealed_to: recipients,
|
|
58
|
+
next: SEALED_NEXT,
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=seal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal.js","sourceRoot":"","sources":["../../../../src/agent/wallet/seal.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { TOKEN_NAMES } from "../../tokens.js";
|
|
|
7
7
|
import { define } from "../actions.js";
|
|
8
8
|
import { WRAPPED } from "../create.js";
|
|
9
9
|
import { tool } from "../names.js";
|
|
10
|
+
import { boardLeft, leavesBoard, thenSettle } from "../claim-line.js";
|
|
10
11
|
import { AgentRefusal, problemOf } from "../problems.js";
|
|
11
12
|
import { InvalidInput, account, amount, choice, flag, integer, list, object, optional, text } from "../schema.js";
|
|
12
13
|
import { preparedView } from "../shapes.js";
|
|
@@ -16,7 +17,12 @@ import { STATUS } from "../../accounts.js";
|
|
|
16
17
|
import { feePayerOf, PREVIEW_APPROVAL, PREVIEW_APPROVAL_NEXT, WAIT_SCAN, signerOf, sent, sha256Of, walletOpeners } from "./guard.js";
|
|
17
18
|
import { openingOutput, openingsFor, sendOpenings, skippedOf } from "./openings.js";
|
|
18
19
|
import { DEVICE_RELEASE, RELEASE_CHANGED, approvalOf, claimsOfRelease, stakeReturned } from "./attest.js";
|
|
20
|
+
import { sol, tokenAccountRent } from "./costs.js";
|
|
19
21
|
import { notInSplit, DELIVERED_NEEDED, ATTEST_PAGES, MAX_ATTEST_PAGES, MAX_PAGES_INPUT, HISTORY_TOO_LONG, notAttestor, confirmedRelease } from "./delivery.js";
|
|
22
|
+
async function setupLine(ctx, count, tokenProgram, device) {
|
|
23
|
+
const rent = await tokenAccountRent(ctx.transport, tokenProgram);
|
|
24
|
+
return `Setup: creates ${count} token account(s), paid by ${device ? "the fee payer" : "this wallet"}: ${sol(rent)} of rent each, ${sol(rent * BigInt(count))} in all`;
|
|
25
|
+
}
|
|
20
26
|
export const SPLIT_FITS = 2;
|
|
21
27
|
export const SPLIT_FITS_WITH_TABLE = 4;
|
|
22
28
|
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"}`;
|
|
@@ -71,7 +77,7 @@ export const walletAttestSplit = define({
|
|
|
71
77
|
follow_up_signature: optional(text("the follow-up transaction that records the sha256, when recorded is follow-up")),
|
|
72
78
|
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
79
|
...openingOutput,
|
|
74
|
-
summary: list(text(),
|
|
80
|
+
summary: list(text(), 18),
|
|
75
81
|
warnings: list(text(), 8),
|
|
76
82
|
sent: flag(),
|
|
77
83
|
signature: optional(text()),
|
|
@@ -116,6 +122,7 @@ export const walletAttestSplit = define({
|
|
|
116
122
|
await walletRecipient(ctx.transport, r.wallet, `recipients.${i}.wallet`);
|
|
117
123
|
}
|
|
118
124
|
const claimed = await claimsOfRelease(ctx, intent, held.claims, wallets);
|
|
125
|
+
const left = claimed.accounts.claims === undefined ? undefined : await boardLeft(ctx.transport, input.owner, input.nonce, intent);
|
|
119
126
|
if (input.delivered_sha256 === undefined) {
|
|
120
127
|
throw new InvalidInput([{ path: "delivered_sha256", message: DELIVERED_NEEDED }]);
|
|
121
128
|
}
|
|
@@ -252,14 +259,15 @@ export const walletAttestSplit = define({
|
|
|
252
259
|
? [`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`]
|
|
253
260
|
: [RECORDS_SPLIT(delivered)]),
|
|
254
261
|
...stakeReturned(claimed.stake, claimed.accounts.stakeTo),
|
|
255
|
-
...(
|
|
262
|
+
...leavesBoard(left),
|
|
263
|
+
...(setup.length === 0 ? [] : [await setupLine(ctx, setup.length, token.tokenProgram, device)]),
|
|
256
264
|
],
|
|
257
265
|
warnings: [...settlementWarnings(params), WARN_COAUTHORS],
|
|
258
266
|
prepared,
|
|
259
267
|
};
|
|
260
268
|
const done = await sent(ctx, payer, view2, input.send, call, {
|
|
261
269
|
preview: device ? `${PREVIEW_APPROVAL_NEXT}; ${DEVICE_RELEASE}` : PREVIEW_APPROVAL_NEXT,
|
|
262
|
-
done: `released to co-authors; ${tool("wallet_feedback")} to rate if you own it`,
|
|
270
|
+
done: thenSettle(`released to co-authors; ${tool("wallet_feedback")} to rate if you own it`, left),
|
|
263
271
|
});
|
|
264
272
|
if (!("signature" in done)) {
|
|
265
273
|
return { ...done, ...passed };
|