@avow-finance/sdk 0.0.0-stage → 0.2.0
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/LICENSE +201 -0
- package/README.md +122 -2
- package/dist/agent-entry.d.ts +15 -0
- package/dist/agent-entry.d.ts.map +1 -0
- package/dist/agent-entry.js +11 -0
- package/dist/agent-entry.js.map +1 -0
- package/dist/agent-key.d.ts +34 -0
- package/dist/agent-key.d.ts.map +1 -0
- package/dist/agent-key.js +33 -0
- package/dist/agent-key.js.map +1 -0
- package/dist/agent.d.ts +261 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +493 -0
- package/dist/agent.js.map +1 -0
- package/dist/avow-api.d.ts +78 -0
- package/dist/avow-api.d.ts.map +1 -0
- package/dist/avow-api.js +2 -0
- package/dist/avow-api.js.map +1 -0
- package/dist/contest.d.ts +135 -0
- package/dist/contest.d.ts.map +1 -0
- package/dist/contest.js +186 -0
- package/dist/contest.js.map +1 -0
- package/dist/http.d.ts +161 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +311 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/job/accept.d.ts +84 -0
- package/dist/job/accept.d.ts.map +1 -0
- package/dist/job/accept.js +136 -0
- package/dist/job/accept.js.map +1 -0
- package/dist/job/customer.d.ts +43 -0
- package/dist/job/customer.d.ts.map +1 -0
- package/dist/job/customer.js +83 -0
- package/dist/job/customer.js.map +1 -0
- package/dist/job/quote.d.ts +34 -0
- package/dist/job/quote.d.ts.map +1 -0
- package/dist/job/quote.js +37 -0
- package/dist/job/quote.js.map +1 -0
- package/dist/lock.d.ts +269 -0
- package/dist/lock.d.ts.map +1 -0
- package/dist/lock.js +283 -0
- package/dist/lock.js.map +1 -0
- package/dist/moderato.d.ts +27 -0
- package/dist/moderato.d.ts.map +1 -0
- package/dist/moderato.js +34 -0
- package/dist/moderato.js.map +1 -0
- package/dist/node/cli.d.ts +3 -0
- package/dist/node/cli.d.ts.map +1 -0
- package/dist/node/cli.js +346 -0
- package/dist/node/cli.js.map +1 -0
- package/dist/node/connect.d.ts +15 -0
- package/dist/node/connect.d.ts.map +1 -0
- package/dist/node/connect.js +91 -0
- package/dist/node/connect.js.map +1 -0
- package/dist/node/eval.d.ts +3 -0
- package/dist/node/eval.d.ts.map +1 -0
- package/dist/node/eval.js +67 -0
- package/dist/node/eval.js.map +1 -0
- package/dist/node/first-run.d.ts +50 -0
- package/dist/node/first-run.d.ts.map +1 -0
- package/dist/node/first-run.js +149 -0
- package/dist/node/first-run.js.map +1 -0
- package/dist/node/job.d.ts +50 -0
- package/dist/node/job.d.ts.map +1 -0
- package/dist/node/job.js +176 -0
- package/dist/node/job.js.map +1 -0
- package/dist/node/mailbox.d.ts +19 -0
- package/dist/node/mailbox.d.ts.map +1 -0
- package/dist/node/mailbox.js +81 -0
- package/dist/node/mailbox.js.map +1 -0
- package/dist/node/mcp.d.ts +74 -0
- package/dist/node/mcp.d.ts.map +1 -0
- package/dist/node/mcp.js +367 -0
- package/dist/node/mcp.js.map +1 -0
- package/dist/node/platform.d.ts +35 -0
- package/dist/node/platform.d.ts.map +1 -0
- package/dist/node/platform.js +102 -0
- package/dist/node/platform.js.map +1 -0
- package/dist/node/runner-session.d.ts +41 -0
- package/dist/node/runner-session.d.ts.map +1 -0
- package/dist/node/runner-session.js +100 -0
- package/dist/node/runner-session.js.map +1 -0
- package/dist/node/runner.d.ts +63 -0
- package/dist/node/runner.d.ts.map +1 -0
- package/dist/node/runner.js +341 -0
- package/dist/node/runner.js.map +1 -0
- package/dist/node/service-child.d.ts +2 -0
- package/dist/node/service-child.d.ts.map +1 -0
- package/dist/node/service-child.js +40 -0
- package/dist/node/service-child.js.map +1 -0
- package/dist/node/service-excerpt.d.ts +21 -0
- package/dist/node/service-excerpt.d.ts.map +1 -0
- package/dist/node/service-excerpt.js +32 -0
- package/dist/node/service-excerpt.js.map +1 -0
- package/dist/node/service-process.d.ts +12 -0
- package/dist/node/service-process.d.ts.map +1 -0
- package/dist/node/service-process.js +132 -0
- package/dist/node/service-process.js.map +1 -0
- package/dist/node/session-input.d.ts +12 -0
- package/dist/node/session-input.d.ts.map +1 -0
- package/dist/node/session-input.js +42 -0
- package/dist/node/session-input.js.map +1 -0
- package/dist/node/session-view.d.ts +20 -0
- package/dist/node/session-view.d.ts.map +1 -0
- package/dist/node/session-view.js +198 -0
- package/dist/node/session-view.js.map +1 -0
- package/dist/node-agent.d.ts +2 -0
- package/dist/node-agent.d.ts.map +1 -0
- package/dist/node-agent.js +6 -0
- package/dist/node-agent.js.map +1 -0
- package/dist/node.d.ts +2 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +9 -0
- package/dist/node.js.map +1 -0
- package/dist/sandbox/agent.d.ts +187 -0
- package/dist/sandbox/agent.d.ts.map +1 -0
- package/dist/sandbox/agent.js +468 -0
- package/dist/sandbox/agent.js.map +1 -0
- package/dist/sandbox/business-store.d.ts +19 -0
- package/dist/sandbox/business-store.d.ts.map +1 -0
- package/dist/sandbox/business-store.js +19 -0
- package/dist/sandbox/business-store.js.map +1 -0
- package/dist/sandbox/business.d.ts +70 -0
- package/dist/sandbox/business.d.ts.map +1 -0
- package/dist/sandbox/business.js +115 -0
- package/dist/sandbox/business.js.map +1 -0
- package/dist/sandbox/connect.d.ts +64 -0
- package/dist/sandbox/connect.d.ts.map +1 -0
- package/dist/sandbox/connect.js +182 -0
- package/dist/sandbox/connect.js.map +1 -0
- package/dist/sandbox/deployment.d.ts +14 -0
- package/dist/sandbox/deployment.d.ts.map +1 -0
- package/dist/sandbox/deployment.js +38 -0
- package/dist/sandbox/deployment.js.map +1 -0
- package/dist/sandbox/keys.d.ts +45 -0
- package/dist/sandbox/keys.d.ts.map +1 -0
- package/dist/sandbox/keys.js +132 -0
- package/dist/sandbox/keys.js.map +1 -0
- package/dist/sandbox/mailbox.d.ts +90 -0
- package/dist/sandbox/mailbox.d.ts.map +1 -0
- package/dist/sandbox/mailbox.js +400 -0
- package/dist/sandbox/mailbox.js.map +1 -0
- package/dist/sandbox/mandate.d.ts +84 -0
- package/dist/sandbox/mandate.d.ts.map +1 -0
- package/dist/sandbox/mandate.js +107 -0
- package/dist/sandbox/mandate.js.map +1 -0
- package/dist/sandbox/namespace.d.ts +16 -0
- package/dist/sandbox/namespace.d.ts.map +1 -0
- package/dist/sandbox/namespace.js +16 -0
- package/dist/sandbox/namespace.js.map +1 -0
- package/dist/sandbox/session.d.ts +60 -0
- package/dist/sandbox/session.d.ts.map +1 -0
- package/dist/sandbox/session.js +94 -0
- package/dist/sandbox/session.js.map +1 -0
- package/dist/sandbox/setup.d.ts +136 -0
- package/dist/sandbox/setup.d.ts.map +1 -0
- package/dist/sandbox/setup.js +490 -0
- package/dist/sandbox/setup.js.map +1 -0
- package/dist/sandbox/store.d.ts +69 -0
- package/dist/sandbox/store.d.ts.map +1 -0
- package/dist/sandbox/store.js +115 -0
- package/dist/sandbox/store.js.map +1 -0
- package/dist/sandbox/supplier-key.d.ts +73 -0
- package/dist/sandbox/supplier-key.d.ts.map +1 -0
- package/dist/sandbox/supplier-key.js +180 -0
- package/dist/sandbox/supplier-key.js.map +1 -0
- package/dist/sandbox/suppliers.d.ts +7 -0
- package/dist/sandbox/suppliers.d.ts.map +1 -0
- package/dist/sandbox/suppliers.js +29 -0
- package/dist/sandbox/suppliers.js.map +1 -0
- package/dist/sandbox/terms.d.ts +32 -0
- package/dist/sandbox/terms.d.ts.map +1 -0
- package/dist/sandbox/terms.js +58 -0
- package/dist/sandbox/terms.js.map +1 -0
- package/dist/sandbox/vault.d.ts +24 -0
- package/dist/sandbox/vault.d.ts.map +1 -0
- package/dist/sandbox/vault.js +54 -0
- package/dist/sandbox/vault.js.map +1 -0
- package/dist/send.d.ts +122 -0
- package/dist/send.d.ts.map +1 -0
- package/dist/send.js +328 -0
- package/dist/send.js.map +1 -0
- package/dist/service-entry.d.ts +6 -0
- package/dist/service-entry.d.ts.map +1 -0
- package/dist/service-entry.js +6 -0
- package/dist/service-entry.js.map +1 -0
- package/dist/session/anthropic.d.ts +17 -0
- package/dist/session/anthropic.d.ts.map +1 -0
- package/dist/session/anthropic.js +215 -0
- package/dist/session/anthropic.js.map +1 -0
- package/dist/session/charge.d.ts +13 -0
- package/dist/session/charge.d.ts.map +1 -0
- package/dist/session/charge.js +33 -0
- package/dist/session/charge.js.map +1 -0
- package/dist/session/data.d.ts +8 -0
- package/dist/session/data.d.ts.map +1 -0
- package/dist/session/data.js +20 -0
- package/dist/session/data.js.map +1 -0
- package/dist/session/eval.d.ts +41 -0
- package/dist/session/eval.d.ts.map +1 -0
- package/dist/session/eval.js +281 -0
- package/dist/session/eval.js.map +1 -0
- package/dist/session/executor.d.ts +80 -0
- package/dist/session/executor.d.ts.map +1 -0
- package/dist/session/executor.js +381 -0
- package/dist/session/executor.js.map +1 -0
- package/dist/session/fixture-world.d.ts +29 -0
- package/dist/session/fixture-world.d.ts.map +1 -0
- package/dist/session/fixture-world.js +708 -0
- package/dist/session/fixture-world.js.map +1 -0
- package/dist/session/live-world.d.ts +22 -0
- package/dist/session/live-world.d.ts.map +1 -0
- package/dist/session/live-world.js +329 -0
- package/dist/session/live-world.js.map +1 -0
- package/dist/session/ollama.d.ts +29 -0
- package/dist/session/ollama.d.ts.map +1 -0
- package/dist/session/ollama.js +177 -0
- package/dist/session/ollama.js.map +1 -0
- package/dist/session/provider.d.ts +79 -0
- package/dist/session/provider.d.ts.map +1 -0
- package/dist/session/provider.js +19 -0
- package/dist/session/provider.js.map +1 -0
- package/dist/session/scripted.d.ts +45 -0
- package/dist/session/scripted.d.ts.map +1 -0
- package/dist/session/scripted.js +236 -0
- package/dist/session/scripted.js.map +1 -0
- package/dist/session/selection.d.ts +37 -0
- package/dist/session/selection.d.ts.map +1 -0
- package/dist/session/selection.js +104 -0
- package/dist/session/selection.js.map +1 -0
- package/dist/session/service-check.d.ts +48 -0
- package/dist/session/service-check.d.ts.map +1 -0
- package/dist/session/service-check.js +86 -0
- package/dist/session/service-check.js.map +1 -0
- package/dist/session/service.d.ts +128 -0
- package/dist/session/service.d.ts.map +1 -0
- package/dist/session/service.js +150 -0
- package/dist/session/service.js.map +1 -0
- package/dist/session/session.d.ts +95 -0
- package/dist/session/session.d.ts.map +1 -0
- package/dist/session/session.js +312 -0
- package/dist/session/session.js.map +1 -0
- package/dist/session/toolbox.d.ts +69 -0
- package/dist/session/toolbox.d.ts.map +1 -0
- package/dist/session/toolbox.js +391 -0
- package/dist/session/toolbox.js.map +1 -0
- package/dist/session/tools.d.ts +45 -0
- package/dist/session/tools.d.ts.map +1 -0
- package/dist/session/tools.js +137 -0
- package/dist/session/tools.js.map +1 -0
- package/dist/session/world.d.ts +188 -0
- package/dist/session/world.d.ts.map +1 -0
- package/dist/session/world.js +2 -0
- package/dist/session/world.js.map +1 -0
- package/dist/sign.d.ts +19 -0
- package/dist/sign.d.ts.map +1 -0
- package/dist/sign.js +33 -0
- package/dist/sign.js.map +1 -0
- package/dist/supplier.d.ts +41 -0
- package/dist/supplier.d.ts.map +1 -0
- package/dist/supplier.js +57 -0
- package/dist/supplier.js.map +1 -0
- package/package.json +56 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/sandbox/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Address } from 'viem';
|
|
2
|
+
import { type SandboxStore, type StoredBusiness } from './store.js';
|
|
3
|
+
import { type SealedKey } from './vault.js';
|
|
4
|
+
/**
|
|
5
|
+
* The business's item, which only the runner reads: the business account, its root key sealed
|
|
6
|
+
* under the passphrase, and its registration. The sealed key is bound to the account, so a changed
|
|
7
|
+
* account only stops the key from opening. The runner checks the registration against the chain
|
|
8
|
+
* before it relies on it, since anything running as the developer can write this file. Nothing on
|
|
9
|
+
* the agent's side imports this module.
|
|
10
|
+
*/
|
|
11
|
+
export interface BusinessItem {
|
|
12
|
+
account: Address;
|
|
13
|
+
key: SealedKey;
|
|
14
|
+
business: StoredBusiness | null;
|
|
15
|
+
}
|
|
16
|
+
/** The business's item, or null when the business has no key yet. */
|
|
17
|
+
export declare function loadBusinessItem(store: SandboxStore): Promise<BusinessItem | null>;
|
|
18
|
+
export declare const saveBusinessItem: (store: SandboxStore, item: BusinessItem) => Promise<void>;
|
|
19
|
+
//# sourceMappingURL=business-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"business-store.d.ts","sourceRoot":"","sources":["../../src/sandbox/business-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,SAAS,CAAA;IACd,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;CAChC;AAED,qEAAqE;AACrE,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAcxF;AAED,eAAO,MAAM,gBAAgB,UAAW,YAAY,QAAQ,YAAY,kBACxC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { isAddressText, readBusiness, readJson, write, } from './store.js';
|
|
2
|
+
import { isSealedKey } from './vault.js';
|
|
3
|
+
/** The business's item, or null when the business has no key yet. */
|
|
4
|
+
export async function loadBusinessItem(store) {
|
|
5
|
+
const text = await store.read('business');
|
|
6
|
+
if (text === null)
|
|
7
|
+
return null;
|
|
8
|
+
const json = readJson(text, 'business');
|
|
9
|
+
if (!isAddressText(json.account) || !isSealedKey(json.key)) {
|
|
10
|
+
throw new Error("The sandbox's business file isn't in the form it writes. Restore it, or start over with npm run fresh.");
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
account: json.account,
|
|
14
|
+
key: json.key,
|
|
15
|
+
business: readBusiness(json.business),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export const saveBusinessItem = (store, item) => write(store, 'business', item);
|
|
19
|
+
//# sourceMappingURL=business-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"business-store.js","sourceRoot":"","sources":["../../src/sandbox/business-store.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,QAAQ,EAGR,KAAK,GACN,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,WAAW,EAAkB,MAAM,YAAY,CAAA;AAexD,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAmB;IACxD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACzC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CACb,wGAAwG,CACzG,CAAA;IACH,CAAC;IACD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;KACtC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAmB,EAAE,IAAkB,EAAE,EAAE,CAC1E,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type SandboxDeployment } from '@avow-finance/spec';
|
|
2
|
+
import { type Address, type Chain, type Hex, type PublicClient, type Transport } from 'viem';
|
|
3
|
+
import { type Account as TempoAccount } from 'viem/tempo';
|
|
4
|
+
/** The client a sandbox business reads the chain and sends its own transactions through. */
|
|
5
|
+
export type SandboxClient = PublicClient<Transport, Chain>;
|
|
6
|
+
/** One step of making a sandbox business, as it happens. */
|
|
7
|
+
export type SandboxBusinessStep = {
|
|
8
|
+
step: 'fees';
|
|
9
|
+
hashes: Hex[];
|
|
10
|
+
} | {
|
|
11
|
+
step: 'lock';
|
|
12
|
+
lock: Address;
|
|
13
|
+
createdIn: Hex | null;
|
|
14
|
+
} | {
|
|
15
|
+
step: 'registered';
|
|
16
|
+
businessId: string;
|
|
17
|
+
payout: Hex;
|
|
18
|
+
amount: bigint;
|
|
19
|
+
} | {
|
|
20
|
+
step: 'funded';
|
|
21
|
+
balance: bigint;
|
|
22
|
+
};
|
|
23
|
+
/** A sandbox business, registered and paid its test dollars. */
|
|
24
|
+
export interface SandboxBusiness {
|
|
25
|
+
account: Address;
|
|
26
|
+
lock: Address;
|
|
27
|
+
businessId: string;
|
|
28
|
+
/** The faucet transactions that funded the account's fees, empty when it held enough already. */
|
|
29
|
+
feeHashes: Hex[];
|
|
30
|
+
/** The transaction that created the lock, or null when the lock was there already. */
|
|
31
|
+
lockCreatedIn: Hex | null;
|
|
32
|
+
payout: {
|
|
33
|
+
transactionHash: Hex;
|
|
34
|
+
amount: bigint;
|
|
35
|
+
};
|
|
36
|
+
balance: bigint;
|
|
37
|
+
}
|
|
38
|
+
export interface SandboxBusinessDeps {
|
|
39
|
+
deployment: Pick<SandboxDeployment, 'chainId' | 'apiUrl' | 'factory' | 'token'>;
|
|
40
|
+
client: SandboxClient;
|
|
41
|
+
/** The business account's root key, made where the business runs and kept there. */
|
|
42
|
+
root: TempoAccount.RootAccount;
|
|
43
|
+
legalName: string;
|
|
44
|
+
/** Two capital letters, such as `US`. */
|
|
45
|
+
country: string;
|
|
46
|
+
onStep?: (step: SandboxBusinessStep) => void;
|
|
47
|
+
/** The clock, in unix seconds. */
|
|
48
|
+
now?: () => bigint;
|
|
49
|
+
/** Milliseconds to wait for the test dollars before giving up, four minutes by default. */
|
|
50
|
+
payoutWait?: number;
|
|
51
|
+
sleep?: (ms: number) => Promise<void>;
|
|
52
|
+
fetch?: typeof fetch;
|
|
53
|
+
}
|
|
54
|
+
/** The account's balance of a token, in base units. */
|
|
55
|
+
export declare const balanceOf: (client: SandboxClient, token: Address, account: Address) => Promise<bigint>;
|
|
56
|
+
/**
|
|
57
|
+
* Has Moderato's faucet fund an account's fees when it holds less than enough for them, and gives
|
|
58
|
+
* the faucet's transactions, none when it held enough already.
|
|
59
|
+
*/
|
|
60
|
+
export declare function fundFees(client: SandboxClient, account: Address): Promise<Hex[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Makes a sandbox business from its root key and registers it, in a browser or in Node.
|
|
63
|
+
* Moderato's faucet funds the account's fees, the root key creates the lock from Avow's factory,
|
|
64
|
+
* and then signs the sandbox registration, which has Avow's sandbox faucet pay the account its
|
|
65
|
+
* test dollars. Every step is safe to run again. An account that holds fees isn't funded twice, a
|
|
66
|
+
* lock that exists isn't created again, and Avow answers a second registration of the same account
|
|
67
|
+
* with the first one's answer and pays nothing more.
|
|
68
|
+
*/
|
|
69
|
+
export declare function createSandboxBusiness(deps: SandboxBusinessDeps): Promise<SandboxBusiness>;
|
|
70
|
+
//# sourceMappingURL=business.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"business.d.ts","sourceRoot":"","sources":["../../src/sandbox/business.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,MAAM,CAAA;AACb,OAAO,EAAW,KAAK,OAAO,IAAI,YAAY,EAAE,MAAM,YAAY,CAAA;AAMlE,4FAA4F;AAC5F,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAS1D,4DAA4D;AAC5D,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,GAAG,GAAG,IAAI,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvC,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,iGAAiG;IACjG,SAAS,EAAE,GAAG,EAAE,CAAA;IAChB,sFAAsF;IACtF,aAAa,EAAE,GAAG,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE;QAAE,eAAe,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAChD,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,CAAA;IAC/E,MAAM,EAAE,aAAa,CAAA;IACrB,oFAAoF;IACpF,IAAI,EAAE,YAAY,CAAC,WAAW,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAC5C,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACrB;AAKD,uDAAuD;AACvD,eAAO,MAAM,SAAS,WAAY,aAAa,SAAS,OAAO,WAAW,OAAO,oBACmB,CAAA;AAEpG;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAItF;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAsF/F"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { parseSandboxRegistrationAnswer, SANDBOX_PATHS, signBusinessRegistration, } from '@avow-finance/spec';
|
|
2
|
+
import { erc20Abi, } from 'viem';
|
|
3
|
+
import { Actions } from 'viem/tempo';
|
|
4
|
+
import { AvowApiError, avowRequests, rootRequestKey } from '../http.js';
|
|
5
|
+
import { createLockCall, FACTORY_ABI } from '../lock.js';
|
|
6
|
+
import { MODERATO_FEE_TOKEN } from '../moderato.js';
|
|
7
|
+
import { sendOwn } from '../send.js';
|
|
8
|
+
/** How long a registration the root key signs stays valid, well inside the API's five minutes. */
|
|
9
|
+
const REGISTRATION_VALIDITY = 120n;
|
|
10
|
+
/** Enough of the fee token for every fee a sandbox business pays, many times over. */
|
|
11
|
+
const ENOUGH_FOR_FEES = 1000000n;
|
|
12
|
+
/** How long to wait for the sandbox's test dollars to land, by default. */
|
|
13
|
+
const PAYOUT_WAIT_MS = 4 * 60_000;
|
|
14
|
+
const pause = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
15
|
+
const systemClock = () => BigInt(Math.floor(Date.now() / 1000));
|
|
16
|
+
/** The account's balance of a token, in base units. */
|
|
17
|
+
export const balanceOf = (client, token, account) => client.readContract({ address: token, abi: erc20Abi, functionName: 'balanceOf', args: [account] });
|
|
18
|
+
/**
|
|
19
|
+
* Has Moderato's faucet fund an account's fees when it holds less than enough for them, and gives
|
|
20
|
+
* the faucet's transactions, none when it held enough already.
|
|
21
|
+
*/
|
|
22
|
+
export async function fundFees(client, account) {
|
|
23
|
+
if ((await balanceOf(client, MODERATO_FEE_TOKEN, account)) >= ENOUGH_FOR_FEES)
|
|
24
|
+
return [];
|
|
25
|
+
const receipts = await Actions.faucet.fundSync(client, { account, timeout: 60_000 });
|
|
26
|
+
return receipts.map((r) => r.transactionHash);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Makes a sandbox business from its root key and registers it, in a browser or in Node.
|
|
30
|
+
* Moderato's faucet funds the account's fees, the root key creates the lock from Avow's factory,
|
|
31
|
+
* and then signs the sandbox registration, which has Avow's sandbox faucet pay the account its
|
|
32
|
+
* test dollars. Every step is safe to run again. An account that holds fees isn't funded twice, a
|
|
33
|
+
* lock that exists isn't created again, and Avow answers a second registration of the same account
|
|
34
|
+
* with the first one's answer and pays nothing more.
|
|
35
|
+
*/
|
|
36
|
+
export async function createSandboxBusiness(deps) {
|
|
37
|
+
const { deployment, client, root } = deps;
|
|
38
|
+
const onStep = deps.onStep ?? (() => { });
|
|
39
|
+
const sleep = deps.sleep ?? pause;
|
|
40
|
+
const now = deps.now ?? systemClock;
|
|
41
|
+
const account = root.address;
|
|
42
|
+
const feeHashes = await fundFees(client, account);
|
|
43
|
+
onStep({ step: 'fees', hashes: feeHashes });
|
|
44
|
+
const lock = await client.readContract({
|
|
45
|
+
address: deployment.factory,
|
|
46
|
+
abi: FACTORY_ABI,
|
|
47
|
+
functionName: 'lockAddress',
|
|
48
|
+
args: [account],
|
|
49
|
+
});
|
|
50
|
+
let lockCreatedIn = null;
|
|
51
|
+
if ((await client.getCode({ address: lock })) === undefined) {
|
|
52
|
+
const receipt = await sendOwn({
|
|
53
|
+
client,
|
|
54
|
+
account: root,
|
|
55
|
+
calls: [createLockCall(deployment.factory, account)],
|
|
56
|
+
});
|
|
57
|
+
lockCreatedIn = receipt.transactionHash;
|
|
58
|
+
}
|
|
59
|
+
onStep({ step: 'lock', lock, createdIn: lockCreatedIn });
|
|
60
|
+
const body = await signBusinessRegistration({
|
|
61
|
+
chainId: deployment.chainId,
|
|
62
|
+
factory: deployment.factory,
|
|
63
|
+
audience: deployment.apiUrl,
|
|
64
|
+
account,
|
|
65
|
+
lock,
|
|
66
|
+
legalName: deps.legalName,
|
|
67
|
+
country: deps.country,
|
|
68
|
+
now: now(),
|
|
69
|
+
validity: REGISTRATION_VALIDITY,
|
|
70
|
+
rootKey: root,
|
|
71
|
+
});
|
|
72
|
+
const registered = await avowRequests({
|
|
73
|
+
baseUrl: deployment.apiUrl,
|
|
74
|
+
key: rootRequestKey(root),
|
|
75
|
+
retryFor: 120n,
|
|
76
|
+
...(deps.fetch ? { fetch: deps.fetch } : {}),
|
|
77
|
+
})({
|
|
78
|
+
domain: { chainId: deployment.chainId, verifyingContract: lock },
|
|
79
|
+
path: SANDBOX_PATHS.businesses,
|
|
80
|
+
body,
|
|
81
|
+
read: parseSandboxRegistrationAnswer,
|
|
82
|
+
}).catch((error) => {
|
|
83
|
+
if (!(error instanceof AvowApiError))
|
|
84
|
+
throw error;
|
|
85
|
+
throw new Error(`Avow's sandbox didn't register the business (${error.reason ?? 'no answer'}): ${error.message}. The lock is ready, so the next run picks up from registering.`, { cause: error });
|
|
86
|
+
});
|
|
87
|
+
const payout = registered.payout;
|
|
88
|
+
onStep({
|
|
89
|
+
step: 'registered',
|
|
90
|
+
businessId: registered.businessId,
|
|
91
|
+
payout: payout.transactionHash,
|
|
92
|
+
amount: payout.amount,
|
|
93
|
+
});
|
|
94
|
+
const deadline = Date.now() + (deps.payoutWait ?? PAYOUT_WAIT_MS);
|
|
95
|
+
for (;;) {
|
|
96
|
+
const balance = await balanceOf(client, deployment.token, account).catch(() => null);
|
|
97
|
+
if (balance !== null && balance >= payout.amount) {
|
|
98
|
+
onStep({ step: 'funded', balance });
|
|
99
|
+
return {
|
|
100
|
+
account,
|
|
101
|
+
lock,
|
|
102
|
+
businessId: registered.businessId,
|
|
103
|
+
feeHashes,
|
|
104
|
+
lockCreatedIn,
|
|
105
|
+
payout,
|
|
106
|
+
balance,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
if (Date.now() > deadline) {
|
|
110
|
+
throw new Error(`Avow registered the business, but its test dollars haven't arrived. Look up ${payout.transactionHash} on the explorer, and try again in a few minutes.`);
|
|
111
|
+
}
|
|
112
|
+
await sleep(3000);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=business.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"business.js","sourceRoot":"","sources":["../../src/sandbox/business.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { type Enrollment } from '@avow-finance/spec';
|
|
2
|
+
import { type Address } from 'viem';
|
|
3
|
+
import { type AgentItem, type SandboxStore } from './store.js';
|
|
4
|
+
/** Where a business's administrator approves an agent on the testnet. */
|
|
5
|
+
export declare const SANDBOX_CONSOLE_URL = "https://testnet.avow.finance";
|
|
6
|
+
/**
|
|
7
|
+
* The console link that opens this agent's request for review, on a phone or anywhere else. It names
|
|
8
|
+
* the request and grants nothing: the administrator still signs in and signs what it shows.
|
|
9
|
+
*/
|
|
10
|
+
export declare const approvalLink: (agentKey: Address) => string;
|
|
11
|
+
/** What happens while an agent waits for its business to answer. */
|
|
12
|
+
export type ConnectEvent = {
|
|
13
|
+
type: 'asked';
|
|
14
|
+
businessId: string;
|
|
15
|
+
agentKey: Address;
|
|
16
|
+
pairingCode: string;
|
|
17
|
+
} | {
|
|
18
|
+
type: 'waiting';
|
|
19
|
+
expiresAt: bigint;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'approved';
|
|
22
|
+
agentId: string;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'enrolled';
|
|
25
|
+
enrollment: Enrollment;
|
|
26
|
+
} | {
|
|
27
|
+
type: 'supplier';
|
|
28
|
+
signingKey: Address;
|
|
29
|
+
};
|
|
30
|
+
export interface ConnectOptions {
|
|
31
|
+
/** The business the agent works for, as its console shows it. */
|
|
32
|
+
businessId: string;
|
|
33
|
+
/** The name the administrator sees, such as "Research agent". */
|
|
34
|
+
label: string;
|
|
35
|
+
/**
|
|
36
|
+
* Whether the agent sells as well as buys. It then makes a signing key of its own to quote and
|
|
37
|
+
* accept jobs with, and once approved registers it as the business's supplier key.
|
|
38
|
+
*/
|
|
39
|
+
sell?: boolean;
|
|
40
|
+
/** Where the agent's key and mandate are kept. In Node it's the working directory's `.avow`. */
|
|
41
|
+
store?: SandboxStore;
|
|
42
|
+
screenUrl?: string;
|
|
43
|
+
fetch?: typeof fetch;
|
|
44
|
+
/** Hears each step, so a terminal can print the pairing code and what it's waiting for. */
|
|
45
|
+
onEvent?: (event: ConnectEvent) => void;
|
|
46
|
+
/** Milliseconds between asks while the request waits, five seconds by default. */
|
|
47
|
+
pollEvery?: number;
|
|
48
|
+
/** Stops waiting. The request stays with Avow until it lapses, and asking again resumes it. */
|
|
49
|
+
signal?: AbortSignal;
|
|
50
|
+
}
|
|
51
|
+
/** Waits `ms`, or rejects with the signal's reason once it aborts. */
|
|
52
|
+
export declare const pause: (ms: number, signal?: AbortSignal) => Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Connects this agent to a business the way any agent connects, with no business key on this
|
|
55
|
+
* machine. It makes the agent's own key and keeps it in the store, asks the business for authority
|
|
56
|
+
* with a request signed by that key, and waits. The administrator approves it in the console,
|
|
57
|
+
* which signs the agent's mandate and puts its key on the account with the passkey. The agent then
|
|
58
|
+
* enrolls with that approval, and keeps its key and mandate as the agent item every SDK and MCP
|
|
59
|
+
* call reads.
|
|
60
|
+
*
|
|
61
|
+
* It refuses when the store already holds an agent, and gives back the agent item once enrolled.
|
|
62
|
+
*/
|
|
63
|
+
export declare function connectToBusiness(o: ConnectOptions): Promise<AgentItem>;
|
|
64
|
+
//# sourceMappingURL=connect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/sandbox/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,UAAU,EAKhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,KAAK,OAAO,EAA4B,MAAM,MAAM,CAAA;AAW7D,OAAO,EACL,KAAK,SAAS,EAGd,KAAK,YAAY,EAIlB,MAAM,YAAY,CAAA;AAGnB,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,iCAAiC,CAAA;AAEjE;;;GAGG;AACH,eAAO,MAAM,YAAY,aAAc,OAAO,KAAG,MACG,CAAA;AAEpD,oEAAoE;AACpE,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAA;AAE7C,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAA;IAClB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,gGAAgG;IAChG,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IACpB,2FAA2F;IAC3F,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IACvC,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AA2BD,sEAAsE;AACtE,eAAO,MAAM,KAAK,OAAQ,MAAM,WAAW,WAAW,kBAYlD,CAAA;AAEJ;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAiI7E"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { accountOfSandboxId, approvalHash, pairingCode, parseAgentRequestStatus, parseEnrollmentRequest, SANDBOX_PATHS, } from '@avow-finance/spec';
|
|
2
|
+
import { isAddressEqual } from 'viem';
|
|
3
|
+
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
|
|
4
|
+
import { Account } from 'viem/tempo';
|
|
5
|
+
import { AvowApiError, agentRequestKey, avowRequests, enrollAgent } from '../http.js';
|
|
6
|
+
import { FACTORY_ABI } from '../lock.js';
|
|
7
|
+
import { moderatoClient } from '../moderato.js';
|
|
8
|
+
import { httpSupplier } from '../supplier.js';
|
|
9
|
+
import { platformStore } from './agent.js';
|
|
10
|
+
import { loadSandboxDeployment } from './deployment.js';
|
|
11
|
+
import { SANDBOX_SCREEN_URL } from './session.js';
|
|
12
|
+
import { loadAgentItem, readJson, saveAgentItem, write, } from './store.js';
|
|
13
|
+
import { completeSupplierRegistration } from './supplier-key.js';
|
|
14
|
+
/** Where a business's administrator approves an agent on the testnet. */
|
|
15
|
+
export const SANDBOX_CONSOLE_URL = 'https://testnet.avow.finance';
|
|
16
|
+
/**
|
|
17
|
+
* The console link that opens this agent's request for review, on a phone or anywhere else. It names
|
|
18
|
+
* the request and grants nothing: the administrator still signs in and signs what it shows.
|
|
19
|
+
*/
|
|
20
|
+
export const approvalLink = (agentKey) => `${SANDBOX_CONSOLE_URL}/${approvalHash(agentKey)}`;
|
|
21
|
+
async function loadRequestItem(store) {
|
|
22
|
+
const text = await store.read('request');
|
|
23
|
+
if (text === null)
|
|
24
|
+
return null;
|
|
25
|
+
const json = readJson(text, 'request');
|
|
26
|
+
return typeof json.agentKey === 'string' &&
|
|
27
|
+
/^0x[0-9a-fA-F]{64}$/.test(json.agentKey) &&
|
|
28
|
+
typeof json.businessId === 'string'
|
|
29
|
+
? {
|
|
30
|
+
agentKey: json.agentKey,
|
|
31
|
+
businessId: json.businessId,
|
|
32
|
+
...(typeof json.signingKey === 'string' && /^0x[0-9a-fA-F]{64}$/.test(json.signingKey)
|
|
33
|
+
? { signingKey: json.signingKey }
|
|
34
|
+
: {}),
|
|
35
|
+
}
|
|
36
|
+
: null;
|
|
37
|
+
}
|
|
38
|
+
/** Waits `ms`, or rejects with the signal's reason once it aborts. */
|
|
39
|
+
export const pause = (ms, signal) => new Promise((resolve, reject) => {
|
|
40
|
+
if (signal?.aborted)
|
|
41
|
+
return reject(signal.reason);
|
|
42
|
+
const timer = setTimeout(resolve, ms);
|
|
43
|
+
signal?.addEventListener('abort', () => {
|
|
44
|
+
clearTimeout(timer);
|
|
45
|
+
reject(signal.reason);
|
|
46
|
+
}, { once: true });
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* Connects this agent to a business the way any agent connects, with no business key on this
|
|
50
|
+
* machine. It makes the agent's own key and keeps it in the store, asks the business for authority
|
|
51
|
+
* with a request signed by that key, and waits. The administrator approves it in the console,
|
|
52
|
+
* which signs the agent's mandate and puts its key on the account with the passkey. The agent then
|
|
53
|
+
* enrolls with that approval, and keeps its key and mandate as the agent item every SDK and MCP
|
|
54
|
+
* call reads.
|
|
55
|
+
*
|
|
56
|
+
* It refuses when the store already holds an agent, and gives back the agent item once enrolled.
|
|
57
|
+
*/
|
|
58
|
+
export async function connectToBusiness(o) {
|
|
59
|
+
const send = o.fetch ?? ((input, init) => fetch(input, init));
|
|
60
|
+
const store = o.store ?? platformStore();
|
|
61
|
+
if (!store)
|
|
62
|
+
throw new Error('Pass a store to keep the agent key in, outside Node.');
|
|
63
|
+
if (await loadAgentItem(store)) {
|
|
64
|
+
throw new Error('This folder already has an agent. Connect a new agent from a fresh folder.');
|
|
65
|
+
}
|
|
66
|
+
const deployment = await loadSandboxDeployment(o.screenUrl ?? SANDBOX_SCREEN_URL, send);
|
|
67
|
+
// The business's account from its id, and its lock from the factory on chain. Avow refuses the
|
|
68
|
+
// ask for a business it doesn't hold at that lock.
|
|
69
|
+
const account = accountOfSandboxId(o.businessId);
|
|
70
|
+
const unknown = `Avow has no sandbox business ${o.businessId}. Copy its ID from the console.`;
|
|
71
|
+
if (!account)
|
|
72
|
+
throw new Error(unknown);
|
|
73
|
+
const client = moderatoClient(deployment.rpcUrl);
|
|
74
|
+
const lock = await client.readContract({
|
|
75
|
+
address: deployment.factory,
|
|
76
|
+
abi: FACTORY_ABI,
|
|
77
|
+
functionName: 'lockAddress',
|
|
78
|
+
args: [account],
|
|
79
|
+
});
|
|
80
|
+
const waiting = await loadRequestItem(store);
|
|
81
|
+
const same = waiting?.businessId === o.businessId ? waiting : null;
|
|
82
|
+
const keyHex = same?.agentKey ?? generatePrivateKey();
|
|
83
|
+
const signingHex = o.sell ? (same?.signingKey ?? generatePrivateKey()) : undefined;
|
|
84
|
+
await write(store, 'request', {
|
|
85
|
+
agentKey: keyHex,
|
|
86
|
+
businessId: o.businessId,
|
|
87
|
+
...(signingHex ? { signingKey: signingHex } : {}),
|
|
88
|
+
});
|
|
89
|
+
const signing = signingHex ? privateKeyToAccount(signingHex) : null;
|
|
90
|
+
const agentKey = Account.fromSecp256k1(keyHex, { access: account });
|
|
91
|
+
const code = pairingCode(agentKey.accessKeyAddress);
|
|
92
|
+
o.onEvent?.({
|
|
93
|
+
type: 'asked',
|
|
94
|
+
businessId: o.businessId,
|
|
95
|
+
agentKey: agentKey.accessKeyAddress,
|
|
96
|
+
pairingCode: code,
|
|
97
|
+
});
|
|
98
|
+
const config = {
|
|
99
|
+
baseUrl: deployment.apiUrl,
|
|
100
|
+
key: agentRequestKey(agentKey),
|
|
101
|
+
retryFor: 60n,
|
|
102
|
+
fetch: send,
|
|
103
|
+
};
|
|
104
|
+
const ask = avowRequests(config);
|
|
105
|
+
const domain = { chainId: deployment.chainId, verifyingContract: lock };
|
|
106
|
+
let status;
|
|
107
|
+
for (;;) {
|
|
108
|
+
status = await ask({
|
|
109
|
+
domain,
|
|
110
|
+
path: SANDBOX_PATHS.agentRequests,
|
|
111
|
+
body: {
|
|
112
|
+
businessId: o.businessId,
|
|
113
|
+
label: o.label,
|
|
114
|
+
...(signing ? { signingKey: signing.address } : {}),
|
|
115
|
+
},
|
|
116
|
+
read: (json) => {
|
|
117
|
+
const read = parseAgentRequestStatus(json);
|
|
118
|
+
return read ? { ok: true, value: read } : { ok: false, reason: 'message.invalid' };
|
|
119
|
+
},
|
|
120
|
+
}).catch((error) => {
|
|
121
|
+
if (error instanceof AvowApiError && error.reason === 'business.unknown') {
|
|
122
|
+
throw new Error(unknown);
|
|
123
|
+
}
|
|
124
|
+
throw error;
|
|
125
|
+
});
|
|
126
|
+
if (status.state === 'approved')
|
|
127
|
+
break;
|
|
128
|
+
o.onEvent?.({ type: 'waiting', expiresAt: BigInt(status.expiresAt) });
|
|
129
|
+
await pause(o.pollEvery ?? 5000, o.signal);
|
|
130
|
+
}
|
|
131
|
+
const approval = parseEnrollmentRequest(status.approval, { chainId: deployment.chainId, lock });
|
|
132
|
+
if (!approval.ok)
|
|
133
|
+
throw new Error(`The approval Avow holds isn't a mandate: ${approval.reason}`);
|
|
134
|
+
const m = approval.value.mandate.message;
|
|
135
|
+
if (!isAddressEqual(m.agentKey, agentKey.accessKeyAddress) || m.businessId !== o.businessId) {
|
|
136
|
+
throw new Error("The approval names another agent or business, so this agent won't use it.");
|
|
137
|
+
}
|
|
138
|
+
o.onEvent?.({ type: 'approved', agentId: m.agentId });
|
|
139
|
+
const enrollment = await enrollAgent({ ...config, retryFor: 180n }, approval.value);
|
|
140
|
+
o.onEvent?.({ type: 'enrolled', enrollment });
|
|
141
|
+
// The suppliers the mandate allows that this deployment can reach, which is its demo supplier.
|
|
142
|
+
const demo = await httpSupplier(deployment.supplierUrl, send).catch(() => null);
|
|
143
|
+
const suppliers = demo && m.suppliers.includes(demo.profile.businessId)
|
|
144
|
+
? [{ id: demo.profile.businessId, url: deployment.supplierUrl }]
|
|
145
|
+
: [];
|
|
146
|
+
const business = {
|
|
147
|
+
chainId: deployment.chainId,
|
|
148
|
+
apiUrl: deployment.apiUrl,
|
|
149
|
+
factory: deployment.factory,
|
|
150
|
+
token: deployment.token,
|
|
151
|
+
account,
|
|
152
|
+
lock,
|
|
153
|
+
businessId: o.businessId,
|
|
154
|
+
};
|
|
155
|
+
const item = {
|
|
156
|
+
agentKey: keyHex,
|
|
157
|
+
business,
|
|
158
|
+
mandate: approval.value.mandate,
|
|
159
|
+
mandateHash: enrollment.mandateHash,
|
|
160
|
+
keyAuthorizedIn: approval.value.keyAuthorizedIn,
|
|
161
|
+
suppliers,
|
|
162
|
+
};
|
|
163
|
+
await saveAgentItem(store, item);
|
|
164
|
+
// An agent that sells completes its signing key's registration, which the account signed.
|
|
165
|
+
if (signingHex) {
|
|
166
|
+
if (!status.supplierRegistration) {
|
|
167
|
+
throw new Error('The administrator approved this agent to buy only. Connect again without selling, or ask them to approve selling.');
|
|
168
|
+
}
|
|
169
|
+
const supplier = await completeSupplierRegistration({
|
|
170
|
+
store,
|
|
171
|
+
deployment,
|
|
172
|
+
business,
|
|
173
|
+
client,
|
|
174
|
+
signingKey: signingHex,
|
|
175
|
+
partial: status.supplierRegistration,
|
|
176
|
+
fetch: send,
|
|
177
|
+
});
|
|
178
|
+
o.onEvent?.({ type: 'supplier', signingKey: supplier.profile.signingKey });
|
|
179
|
+
}
|
|
180
|
+
return item;
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/sandbox/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type SandboxDeployment } from '@avow-finance/spec';
|
|
2
|
+
import { type Address } from 'viem';
|
|
3
|
+
import type { StoredBusiness } from './store.js';
|
|
4
|
+
/** The lock factory the SDK trusts on a chain, or null on a chain where it trusts none. */
|
|
5
|
+
export declare function trustedFactory(chainId: number): Address | null;
|
|
6
|
+
/**
|
|
7
|
+
* The facts of the deployment the sandbox's screen runs against, as it publishes them. It refuses
|
|
8
|
+
* a deployment whose factory isn't the one the SDK trusts on that chain, so a changed settings file
|
|
9
|
+
* can't point the sandbox, or its verifier, at another factory's locks.
|
|
10
|
+
*/
|
|
11
|
+
export declare function loadSandboxDeployment(screenUrl?: string, send?: typeof fetch): Promise<SandboxDeployment>;
|
|
12
|
+
/** Whether a business was made on this deployment, so its lock and registration still hold. */
|
|
13
|
+
export declare const madeOn: (b: StoredBusiness, d: SandboxDeployment) => boolean;
|
|
14
|
+
//# sourceMappingURL=deployment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../src/sandbox/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,KAAK,OAAO,EAAkB,MAAM,MAAM,CAAA;AAGnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAE9D;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,GAAE,MAA2B,EACtC,IAAI,GAAE,OAAO,KAA2C,GACvD,OAAO,CAAC,iBAAiB,CAAC,CAiB5B;AAED,+FAA+F;AAC/F,eAAO,MAAM,MAAM,MAAO,cAAc,KAAK,iBAAiB,KAAG,OAI/B,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { parseSandboxDeployment, SANDBOX_DEPLOYMENT_PATH, TEMPO_MODERATO, } from '@avow-finance/spec';
|
|
2
|
+
import { isAddressEqual } from 'viem';
|
|
3
|
+
import { MODERATO_FACTORY } from '../moderato.js';
|
|
4
|
+
import { SANDBOX_SCREEN_URL } from './session.js';
|
|
5
|
+
const describe = (e) => (e instanceof Error ? e.message : String(e)).slice(0, 300);
|
|
6
|
+
/** The lock factory the SDK trusts on a chain, or null on a chain where it trusts none. */
|
|
7
|
+
export function trustedFactory(chainId) {
|
|
8
|
+
return chainId === TEMPO_MODERATO ? MODERATO_FACTORY : null;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The facts of the deployment the sandbox's screen runs against, as it publishes them. It refuses
|
|
12
|
+
* a deployment whose factory isn't the one the SDK trusts on that chain, so a changed settings file
|
|
13
|
+
* can't point the sandbox, or its verifier, at another factory's locks.
|
|
14
|
+
*/
|
|
15
|
+
export async function loadSandboxDeployment(screenUrl = SANDBOX_SCREEN_URL, send = (input, init) => fetch(input, init)) {
|
|
16
|
+
const url = `${new URL(screenUrl).origin}${SANDBOX_DEPLOYMENT_PATH}`;
|
|
17
|
+
let response;
|
|
18
|
+
try {
|
|
19
|
+
response = await send(url, { signal: AbortSignal.timeout(15_000) });
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
throw new Error(`The sandbox at ${url} didn't answer: ${describe(error)}`);
|
|
23
|
+
}
|
|
24
|
+
const parsed = parseSandboxDeployment(await response.json().catch(() => null));
|
|
25
|
+
if (!response.ok || !parsed.ok)
|
|
26
|
+
throw new Error(`${url} doesn't describe a testnet deployment`);
|
|
27
|
+
const trusted = trustedFactory(parsed.value.chainId);
|
|
28
|
+
if (!trusted || !isAddressEqual(trusted, parsed.value.factory)) {
|
|
29
|
+
throw new Error(`${url} names the factory ${parsed.value.factory}, but on chain ${parsed.value.chainId} the SDK trusts only ${trusted ?? 'none'}`);
|
|
30
|
+
}
|
|
31
|
+
return parsed.value;
|
|
32
|
+
}
|
|
33
|
+
/** Whether a business was made on this deployment, so its lock and registration still hold. */
|
|
34
|
+
export const madeOn = (b, d) => b.chainId === d.chainId &&
|
|
35
|
+
b.apiUrl === d.apiUrl &&
|
|
36
|
+
isAddressEqual(b.factory, d.factory) &&
|
|
37
|
+
isAddressEqual(b.token, d.token);
|
|
38
|
+
//# sourceMappingURL=deployment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../src/sandbox/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EAEvB,cAAc,GACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAgB,cAAc,EAAE,MAAM,MAAM,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAGjD,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAE3F,2FAA2F;AAC3F,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAA;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAS,GAAW,kBAAkB,EACtC,IAAI,GAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;IAExD,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAA;IACpE,IAAI,QAAkB,CAAA;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,mBAAmB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9E,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,wCAAwC,CAAC,CAAA;IAC/F,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpD,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,sBAAsB,MAAM,CAAC,KAAK,CAAC,OAAO,kBAAkB,MAAM,CAAC,KAAK,CAAC,OAAO,wBAAwB,OAAO,IAAI,MAAM,EAAE,CAClI,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAA;AACrB,CAAC;AAED,+FAA+F;AAC/F,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAiB,EAAE,CAAoB,EAAW,EAAE,CACzE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;IACvB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;IACrB,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC;IACpC,cAAc,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA"}
|