@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":"eval.js","sourceRoot":"","sources":["../../src/session/eval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type CustomerRefusal, type JobOffer, type OrderScenario, type QuoteRequest, type ReasonCode, type SessionEvent } from '@avow-finance/spec';
|
|
2
|
+
import type { ReservedJob, Verdict } from './service.js';
|
|
3
|
+
import type { ChargeStanding, JobWorld } from './world.js';
|
|
4
|
+
/**
|
|
5
|
+
* What happens after a quote goes out, which no model drives. The executor follows the order, posts
|
|
6
|
+
* what the customer says and verifies once each, and at the customer's reserve runs the developer's
|
|
7
|
+
* `checkBeforeWork`. Only a `start` verdict leads to the acceptance, and only an acceptance that
|
|
8
|
+
* landed, or that the lock shows landed, leads to work. Repeated states, states out of order and an
|
|
9
|
+
* acceptance seen twice never verify, accept or start a job twice, since every step is the
|
|
10
|
+
* executor's own and keyed by the order.
|
|
11
|
+
*
|
|
12
|
+
* A customer that cancels after the start breaks its promise. The executor stops the work, reports
|
|
13
|
+
* the late-cancellation charge the job's terms allow, and follows the charge on the customer's
|
|
14
|
+
* lock: reported, then confirmed by Avow, then paid once its contest window closes, or paused for
|
|
15
|
+
* a ruling. The job ends for the session once Avow has answered, and the executor goes on following
|
|
16
|
+
* the charge until it's paid or paused, without holding anything else up.
|
|
17
|
+
*/
|
|
18
|
+
export interface ExecutorDeps {
|
|
19
|
+
world: JobWorld;
|
|
20
|
+
emit: (event: SessionEvent) => void;
|
|
21
|
+
/** Runs the developer's `checkBeforeWork` in a process of its own, with no keys. */
|
|
22
|
+
checkBeforeWork: (job: ReservedJob) => Promise<Verdict | {
|
|
23
|
+
failed: string;
|
|
24
|
+
}>;
|
|
25
|
+
/** Says something to the developer that isn't an event. */
|
|
26
|
+
note: (line: string) => void;
|
|
27
|
+
/** What's in flight on the chain or to the customer, or null once nothing is. */
|
|
28
|
+
busy?: (what: string | null) => void;
|
|
29
|
+
/** How long to wait between reads of an order, in milliseconds. */
|
|
30
|
+
pollMs?: number;
|
|
31
|
+
/** How long the simulated work takes, in milliseconds. */
|
|
32
|
+
workMs?: number;
|
|
33
|
+
}
|
|
34
|
+
/** How a job ended for this run. */
|
|
35
|
+
export type JobOutcome = {
|
|
36
|
+
kind: 'refused';
|
|
37
|
+
refusal: CustomerRefusal;
|
|
38
|
+
} | {
|
|
39
|
+
kind: 'not_started';
|
|
40
|
+
code: ReasonCode;
|
|
41
|
+
layer: 'service' | 'avow' | 'relay' | 'lock';
|
|
42
|
+
} | {
|
|
43
|
+
kind: 'paid';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The customer cancelled after the start. `charge` is where the reported charge stood when the
|
|
47
|
+
* job ended for the session, or the reason no report could be filed.
|
|
48
|
+
*/
|
|
49
|
+
| {
|
|
50
|
+
kind: 'cancelled';
|
|
51
|
+
charge: {
|
|
52
|
+
amount: bigint;
|
|
53
|
+
standing: ChargeStanding;
|
|
54
|
+
} | {
|
|
55
|
+
refused: ReasonCode;
|
|
56
|
+
};
|
|
57
|
+
} | {
|
|
58
|
+
kind: 'stopped';
|
|
59
|
+
why: string;
|
|
60
|
+
};
|
|
61
|
+
/** What a quote that went out carries for the executor. */
|
|
62
|
+
export interface Quoted {
|
|
63
|
+
run: number;
|
|
64
|
+
order: JobOffer;
|
|
65
|
+
quote: QuoteRequest;
|
|
66
|
+
/** The scenario the order was asked for, when it was asked for one. */
|
|
67
|
+
scenario?: OrderScenario;
|
|
68
|
+
}
|
|
69
|
+
export declare class JobExecutor {
|
|
70
|
+
#private;
|
|
71
|
+
private readonly deps;
|
|
72
|
+
constructor(deps: ExecutorDeps);
|
|
73
|
+
/** Follows a quoted order to its end, once however often it's asked. */
|
|
74
|
+
follow(quoted: Quoted): Promise<JobOutcome>;
|
|
75
|
+
/** Stops following charges, so a session that ends doesn't wait out a contest window. */
|
|
76
|
+
stop(): void;
|
|
77
|
+
/** Resolves once every charge being followed has been paid, paused or ended. */
|
|
78
|
+
charges(): Promise<void>;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/session/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EAGpB,KAAK,QAAQ,EAEb,KAAK,aAAa,EAGlB,KAAK,YAAY,EAEjB,KAAK,UAAU,EACf,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAI3B,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAkB,MAAM,YAAY,CAAA;AAE1E;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,QAAQ,CAAA;IACf,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IACnC,oFAAoF;IACpF,eAAe,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC5E,2DAA2D;IAC3D,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,iFAAiF;IACjF,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACpC,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,oCAAoC;AACpC,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;AAClB;;;GAGG;GACD;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,cAAc,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,UAAU,CAAA;KAAE,CAAA;CAC/E,GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpC,2DAA2D;AAC3D,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,QAAQ,CAAA;IACf,KAAK,EAAE,YAAY,CAAA;IACnB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,aAAa,CAAA;CACzB;AA2BD,qBAAa,WAAW;;IAMV,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAEnD,wEAAwE;IACxE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAY1C;IAED,yFAAyF;IACzF,IAAI,IAAI,IAAI,CAEX;IAED,gFAAgF;IAC1E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7B;CA8UF"}
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
import { formatUsd, isChainedTerms, jobVerificationOf, REPORT_AFTER_CANCELLATION, SIMULATED_RESULT_LABEL, } from '@avow-finance/spec';
|
|
2
|
+
import { keccak256, stringToHex } from 'viem';
|
|
3
|
+
import { sendErrorIn } from '../send.js';
|
|
4
|
+
const RANK = {
|
|
5
|
+
offered: 0,
|
|
6
|
+
verifying: 1,
|
|
7
|
+
refused: 2,
|
|
8
|
+
reserved: 3,
|
|
9
|
+
accepted: 4,
|
|
10
|
+
cancelled: 5,
|
|
11
|
+
delivered: 6,
|
|
12
|
+
paid: 7,
|
|
13
|
+
};
|
|
14
|
+
/** A wait in whole minutes and seconds, as a person says it. */
|
|
15
|
+
function waitText(seconds) {
|
|
16
|
+
const m = seconds / 60n;
|
|
17
|
+
const s = seconds % 60n;
|
|
18
|
+
const part = (n, one) => `${n} ${one}${n === 1n ? '' : 's'}`;
|
|
19
|
+
if (m === 0n)
|
|
20
|
+
return part(s, 'second');
|
|
21
|
+
return s === 0n ? part(m, 'minute') : `${part(m, 'minute')} ${part(s, 'second')}`;
|
|
22
|
+
}
|
|
23
|
+
/** How long the simulated work runs, in milliseconds, unless a test sets another. */
|
|
24
|
+
const WORK_MS = 15_000;
|
|
25
|
+
const sameHex = (a, b) => a.toLowerCase() === b.toLowerCase();
|
|
26
|
+
export class JobExecutor {
|
|
27
|
+
deps;
|
|
28
|
+
#jobs = new Map();
|
|
29
|
+
/** Charges still being followed to their end after their jobs ended for the session. */
|
|
30
|
+
#charges = new Set();
|
|
31
|
+
#stopped = false;
|
|
32
|
+
constructor(deps) {
|
|
33
|
+
this.deps = deps;
|
|
34
|
+
}
|
|
35
|
+
/** Follows a quoted order to its end, once however often it's asked. */
|
|
36
|
+
follow(quoted) {
|
|
37
|
+
const id = quoted.order.orderId;
|
|
38
|
+
const running = this.#jobs.get(id);
|
|
39
|
+
if (running)
|
|
40
|
+
return running;
|
|
41
|
+
const job = this.#run(quoted).catch((error) => ({
|
|
42
|
+
kind: 'stopped',
|
|
43
|
+
why: error instanceof Error ? error.message : String(error),
|
|
44
|
+
}));
|
|
45
|
+
this.#jobs.set(id, job);
|
|
46
|
+
return job;
|
|
47
|
+
}
|
|
48
|
+
/** Stops following charges, so a session that ends doesn't wait out a contest window. */
|
|
49
|
+
stop() {
|
|
50
|
+
this.#stopped = true;
|
|
51
|
+
}
|
|
52
|
+
/** Resolves once every charge being followed has been paid, paused or ended. */
|
|
53
|
+
async charges() {
|
|
54
|
+
await Promise.allSettled([...this.#charges]);
|
|
55
|
+
}
|
|
56
|
+
async #run({ run, order, quote, scenario }) {
|
|
57
|
+
const { world, emit, note } = this.deps;
|
|
58
|
+
const busy = this.deps.busy ?? (() => { });
|
|
59
|
+
const orderId = order.orderId;
|
|
60
|
+
const base = { run, source: 'session', orderId };
|
|
61
|
+
const said = new Set();
|
|
62
|
+
const stated = new Set();
|
|
63
|
+
const posted = new Set();
|
|
64
|
+
const once = (event) => {
|
|
65
|
+
if (posted.has(event.type))
|
|
66
|
+
return;
|
|
67
|
+
posted.add(event.type);
|
|
68
|
+
emit(event);
|
|
69
|
+
};
|
|
70
|
+
/** The customer's statements each posted once, by index, however often a state repeats them. */
|
|
71
|
+
const statements = (state) => {
|
|
72
|
+
for (const s of state.said) {
|
|
73
|
+
if (said.has(s.index))
|
|
74
|
+
continue;
|
|
75
|
+
said.add(s.index);
|
|
76
|
+
emit({ ...base, type: 'said', speaker: { kind: 'customer', index: s.index }, text: s.text });
|
|
77
|
+
}
|
|
78
|
+
for (const { index, ...fact } of state.facts) {
|
|
79
|
+
if (stated.has(index))
|
|
80
|
+
continue;
|
|
81
|
+
stated.add(index);
|
|
82
|
+
emit({ ...base, type: 'fact', ...fact });
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const read = async () => {
|
|
86
|
+
for (let attempt = 0;; attempt++) {
|
|
87
|
+
try {
|
|
88
|
+
const state = await world.orderState(orderId);
|
|
89
|
+
statements(state);
|
|
90
|
+
return state;
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (attempt >= 5)
|
|
94
|
+
throw error;
|
|
95
|
+
await world.sleep(this.#pollMs * (attempt + 1));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
/** Reads the order until it reaches `at` or is refused, never going back on what it saw. */
|
|
100
|
+
const until = async (at, giveUpAt) => {
|
|
101
|
+
for (;;) {
|
|
102
|
+
const state = await read();
|
|
103
|
+
if (state.status === 'refused' || state.status === 'cancelled')
|
|
104
|
+
return state;
|
|
105
|
+
if (RANK[state.status] >= RANK[at])
|
|
106
|
+
return state;
|
|
107
|
+
if (world.now() > giveUpAt)
|
|
108
|
+
return null;
|
|
109
|
+
await world.sleep(this.#pollMs);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
// The customer verifies the quote and the compute booking it names, then reserves.
|
|
113
|
+
const reserved = await until('reserved', order.expiry + 600n);
|
|
114
|
+
if (!reserved)
|
|
115
|
+
return {
|
|
116
|
+
kind: 'stopped',
|
|
117
|
+
why: `The customer didn't answer the quote for order ${orderId} in time.`,
|
|
118
|
+
};
|
|
119
|
+
if (reserved.status === 'refused') {
|
|
120
|
+
once({ ...base, type: 'job_customer_refused', refusal: reserved.refusal });
|
|
121
|
+
return { kind: 'refused', refusal: reserved.refusal };
|
|
122
|
+
}
|
|
123
|
+
if (!('reserve' in reserved) || reserved.status === 'cancelled') {
|
|
124
|
+
return { kind: 'stopped', why: `Order ${orderId} went back to ${reserved.status}.` };
|
|
125
|
+
}
|
|
126
|
+
once({ ...base, type: 'job_customer_verified', checks: reserved.checks });
|
|
127
|
+
const refuse = (code, layer, block = null, index = null) => {
|
|
128
|
+
once({ ...base, type: 'job_commitment_refused', code, layer, block, index });
|
|
129
|
+
return { kind: 'not_started', code, layer };
|
|
130
|
+
};
|
|
131
|
+
// The reserve the customer names has to be the commitment the business quoted.
|
|
132
|
+
const reserve = reserved.reserve;
|
|
133
|
+
const c = reserve.reference;
|
|
134
|
+
if (c.side !== 'buyer' ||
|
|
135
|
+
!sameHex(c.commitmentId, order.commitmentId) ||
|
|
136
|
+
!sameHex(c.termsHash, quote.agreement.termsHash) ||
|
|
137
|
+
!sameHex(c.lock, world.customer.lock) ||
|
|
138
|
+
c.chainId !== world.customer.chainId) {
|
|
139
|
+
return refuse('order.commitment_mismatch', 'service');
|
|
140
|
+
}
|
|
141
|
+
if (!isChainedTerms(quote.terms))
|
|
142
|
+
return refuse('dependency.required', 'service');
|
|
143
|
+
const terms = quote.terms;
|
|
144
|
+
const reservedJob = {
|
|
145
|
+
orderId,
|
|
146
|
+
commitment: c,
|
|
147
|
+
verification: jobVerificationOf(terms, quote.salt, c),
|
|
148
|
+
terms,
|
|
149
|
+
salt: quote.salt,
|
|
150
|
+
supplier: world.supplier,
|
|
151
|
+
token: world.token,
|
|
152
|
+
};
|
|
153
|
+
// The developer's own check, in a process of its own with no keys.
|
|
154
|
+
const verdict = await this.deps.checkBeforeWork(reservedJob);
|
|
155
|
+
if ('failed' in verdict) {
|
|
156
|
+
note(verdict.failed);
|
|
157
|
+
return refuse('service.check_failed', 'service');
|
|
158
|
+
}
|
|
159
|
+
if (!verdict.start)
|
|
160
|
+
return refuse(verdict.code, 'service', verdict.block, verdict.index);
|
|
161
|
+
const checked = verdict.check;
|
|
162
|
+
emit({
|
|
163
|
+
...base,
|
|
164
|
+
type: 'fact',
|
|
165
|
+
text: `The customer's lock holds its ${formatUsd(checked.reserve)} reserve in full for your business, under the job's terms, and your compute booking stands.`,
|
|
166
|
+
check: 'reserve',
|
|
167
|
+
verifiedBy: 'service',
|
|
168
|
+
reference: c,
|
|
169
|
+
block: checked.block,
|
|
170
|
+
transactionHash: reserve.fundedIn,
|
|
171
|
+
});
|
|
172
|
+
// The acceptance, sent again only when its outcome was unknown, which the lock then decides.
|
|
173
|
+
const sent = [];
|
|
174
|
+
let accepted = null;
|
|
175
|
+
let unknown = null;
|
|
176
|
+
busy("your business's acceptance of the customer's commitment");
|
|
177
|
+
try {
|
|
178
|
+
for (let attempt = 0; attempt < 4 && accepted === null; attempt++) {
|
|
179
|
+
try {
|
|
180
|
+
accepted = await world.accept(order, quote);
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
unknown = error;
|
|
184
|
+
sent.push(...(sendErrorIn(error)?.hashes ?? []));
|
|
185
|
+
await world.sleep(this.#pollMs * (attempt + 1));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
finally {
|
|
190
|
+
busy(null);
|
|
191
|
+
}
|
|
192
|
+
if (!accepted) {
|
|
193
|
+
return {
|
|
194
|
+
kind: 'stopped',
|
|
195
|
+
why: `The acceptance's outcome is still unknown after four tries (${unknown instanceof Error ? unknown.message : String(unknown)}). The customer's lock decides whether it landed, and no work starts until it shows it.`,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
if (!accepted.ok)
|
|
199
|
+
return refuse(accepted.code, accepted.layer, accepted.block, accepted.index);
|
|
200
|
+
// An acceptance this run sent and saw land is this run's. One the lock showed accepted came
|
|
201
|
+
// from an earlier attempt, and this run saw its transaction only if it sent it.
|
|
202
|
+
const acceptedIn = accepted.sent
|
|
203
|
+
? {
|
|
204
|
+
transactionHash: accepted.sent.landed.transactionHash,
|
|
205
|
+
blockNumber: accepted.sent.landed.blockNumber,
|
|
206
|
+
}
|
|
207
|
+
: await world.landed(sent);
|
|
208
|
+
const job = c;
|
|
209
|
+
once({
|
|
210
|
+
...base,
|
|
211
|
+
type: 'job_commitment_checked',
|
|
212
|
+
reference: job,
|
|
213
|
+
amount: reserve.amount,
|
|
214
|
+
charges: terms.remedies.charges.map((ch) => ({ kind: ch.kind, amount: ch.amount })),
|
|
215
|
+
releaseDate: terms.backing.releaseDate,
|
|
216
|
+
checks: [...accepted.checks],
|
|
217
|
+
acceptedIn,
|
|
218
|
+
});
|
|
219
|
+
const onLock = await world.read(job).catch(() => null);
|
|
220
|
+
if (onLock) {
|
|
221
|
+
emit({
|
|
222
|
+
...base,
|
|
223
|
+
type: 'commitment',
|
|
224
|
+
role: 'job',
|
|
225
|
+
reference: job,
|
|
226
|
+
amount: reserve.amount,
|
|
227
|
+
state: onLock.state,
|
|
228
|
+
verifiedBy: 'service',
|
|
229
|
+
block: onLock.block,
|
|
230
|
+
transactionHash: acceptedIn?.transactionHash ?? null,
|
|
231
|
+
verification: reservedJob.verification,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
// The work, which is simulated, starts once the customer's free cancellation ends.
|
|
235
|
+
const startsAt = terms.subject.startsAt;
|
|
236
|
+
const left = startsAt - world.now();
|
|
237
|
+
if (left > 0n) {
|
|
238
|
+
this.deps.note(`Work starts in ${waitText(left)}. Until then the customer can still cancel for nothing.`);
|
|
239
|
+
}
|
|
240
|
+
while (world.now() < startsAt) {
|
|
241
|
+
await world.sleep(Math.min(Number(startsAt - world.now()) * 1000, 5000));
|
|
242
|
+
}
|
|
243
|
+
once({ ...base, type: 'job_work_started', reference: job });
|
|
244
|
+
// The customer can cancel while the work runs. An order asked to cancel late is worked on
|
|
245
|
+
// until the customer's cancellation can no longer change the charge, so the work never ends
|
|
246
|
+
// before the cancellation it was asked for.
|
|
247
|
+
const workEnds = world.now() + BigInt(Math.ceil((this.deps.workMs ?? WORK_MS) / 1000));
|
|
248
|
+
const noShow = terms.remedies.charges.find((ch) => ch.kind === 'noShow');
|
|
249
|
+
const worksUntil = scenario === 'cancels_late' && noShow && noShow.earliest > workEnds
|
|
250
|
+
? noShow.earliest
|
|
251
|
+
: workEnds;
|
|
252
|
+
while (world.now() < worksUntil) {
|
|
253
|
+
const state = await read();
|
|
254
|
+
if (state.status === 'cancelled')
|
|
255
|
+
return this.#charge(base, order, job, state, once);
|
|
256
|
+
await world.sleep(Math.min(this.#pollMs, Number(worksUntil - world.now()) * 1000));
|
|
257
|
+
}
|
|
258
|
+
const result = {
|
|
259
|
+
label: SIMULATED_RESULT_LABEL,
|
|
260
|
+
hash: keccak256(stringToHex(`${SIMULATED_RESULT_LABEL} for order ${orderId}`)),
|
|
261
|
+
};
|
|
262
|
+
busy('the delivery report');
|
|
263
|
+
try {
|
|
264
|
+
for (let attempt = 0;; attempt++) {
|
|
265
|
+
try {
|
|
266
|
+
await world.deliver(orderId, result);
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
if (attempt >= 5)
|
|
271
|
+
throw error;
|
|
272
|
+
await world.sleep(this.#pollMs * (attempt + 1));
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
finally {
|
|
277
|
+
busy(null);
|
|
278
|
+
}
|
|
279
|
+
once({ ...base, type: 'job_delivered', reference: job, result });
|
|
280
|
+
const paid = await until('paid', terms.subject.deliverBy + 1800n);
|
|
281
|
+
if (paid?.status === 'cancelled')
|
|
282
|
+
return this.#charge(base, order, job, paid, once);
|
|
283
|
+
if (paid?.status !== 'paid') {
|
|
284
|
+
return { kind: 'stopped', why: `The customer hasn't paid for order ${orderId} yet.` };
|
|
285
|
+
}
|
|
286
|
+
once({ ...base, type: 'job_paid', payment: paid.payment });
|
|
287
|
+
return { kind: 'paid' };
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* The broken promise. The customer says it cancelled, so the work stops and the business reports
|
|
291
|
+
* the late-cancellation charge. Avow answers from its own record of the customer's signed
|
|
292
|
+
* cancellation, so a customer that only says it cancelled gets the report referred to a ruling.
|
|
293
|
+
*/
|
|
294
|
+
async #charge(base, order, job, cancelled, once) {
|
|
295
|
+
const { world } = this.deps;
|
|
296
|
+
const busy = this.deps.busy ?? (() => { });
|
|
297
|
+
once({
|
|
298
|
+
...base,
|
|
299
|
+
type: 'job_customer_cancelled',
|
|
300
|
+
reference: job,
|
|
301
|
+
cancelledAt: cancelled.cancellation.cancelledAt,
|
|
302
|
+
});
|
|
303
|
+
// Avow confirms only a cancellation its record shows clearly before the report, so the report
|
|
304
|
+
// waits. One filed at once would go to a ruling.
|
|
305
|
+
const reportFrom = cancelled.cancellation.cancelledAt + REPORT_AFTER_CANCELLATION;
|
|
306
|
+
if (world.now() < reportFrom) {
|
|
307
|
+
this.deps.note(`Your code waits ${REPORT_AFTER_CANCELLATION} seconds before it reports the charge, since Avow confirms only a cancellation its record shows clearly before the report.`);
|
|
308
|
+
while (world.now() < reportFrom && !this.#stopped) {
|
|
309
|
+
await world.sleep(Math.min(Number(reportFrom - world.now()) * 1000, this.#pollMs));
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
busy('the report of the cancellation charge');
|
|
313
|
+
let reported;
|
|
314
|
+
try {
|
|
315
|
+
reported = await world.reportCharge(order, 'lateCancellation');
|
|
316
|
+
}
|
|
317
|
+
finally {
|
|
318
|
+
busy(null);
|
|
319
|
+
}
|
|
320
|
+
if (!reported.ok) {
|
|
321
|
+
this.deps.note(`The report of the charge wasn't filed (${reported.code}, at the ${reported.layer} layer), so the customer's reserve stands as it was.`);
|
|
322
|
+
return { kind: 'cancelled', charge: { refused: reported.code } };
|
|
323
|
+
}
|
|
324
|
+
const { amount, reportNumber, transactionHash, reportedAt } = reported;
|
|
325
|
+
const report = { amount, reportNumber, transactionHash, reportedAt };
|
|
326
|
+
once({
|
|
327
|
+
...base,
|
|
328
|
+
type: 'job_charge_reported',
|
|
329
|
+
reference: job,
|
|
330
|
+
kind: 'lateCancellation',
|
|
331
|
+
amount,
|
|
332
|
+
reportNumber,
|
|
333
|
+
transactionHash,
|
|
334
|
+
});
|
|
335
|
+
/** Posts where the charge stands, and says whether that's its end. */
|
|
336
|
+
const post = (standing) => {
|
|
337
|
+
if (standing.state === 'confirmed') {
|
|
338
|
+
once({
|
|
339
|
+
...base,
|
|
340
|
+
type: 'job_charge_confirmed',
|
|
341
|
+
reference: job,
|
|
342
|
+
amount,
|
|
343
|
+
contestableUntil: standing.contestableUntil,
|
|
344
|
+
});
|
|
345
|
+
return false;
|
|
346
|
+
}
|
|
347
|
+
if (standing.state === 'paused') {
|
|
348
|
+
once({ ...base, type: 'job_charge_paused', reference: job, cause: standing.cause });
|
|
349
|
+
}
|
|
350
|
+
else if (standing.state === 'paid') {
|
|
351
|
+
once({ ...base, type: 'job_charge_paid', reference: job, amount });
|
|
352
|
+
}
|
|
353
|
+
return standing.state !== 'waiting';
|
|
354
|
+
};
|
|
355
|
+
/** Reads the charge until `done` says to stop, the session ends or the terms' last date passes. */
|
|
356
|
+
const follow = async (done) => {
|
|
357
|
+
const giveUpAt = order.terms.backing.releaseDate + order.terms.resolution.contestWindow + 3600n;
|
|
358
|
+
let standing = { state: 'waiting' };
|
|
359
|
+
for (;;) {
|
|
360
|
+
standing = await world.charge(order, report).catch(() => standing);
|
|
361
|
+
const ended = post(standing);
|
|
362
|
+
if (done(standing) || ended || this.#stopped || world.now() > giveUpAt)
|
|
363
|
+
return standing;
|
|
364
|
+
await world.sleep(this.#pollMs);
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
// The job ends for the session once Avow has answered the report, one way or the other.
|
|
368
|
+
const standing = await follow((s) => s.state !== 'waiting');
|
|
369
|
+
if (standing.state === 'confirmed') {
|
|
370
|
+
// A confirmed charge pays, or pauses on a contest, after the session has moved on.
|
|
371
|
+
const rest = follow(() => false).then(() => undefined);
|
|
372
|
+
this.#charges.add(rest);
|
|
373
|
+
void rest.finally(() => this.#charges.delete(rest));
|
|
374
|
+
}
|
|
375
|
+
return { kind: 'cancelled', charge: { amount, standing } };
|
|
376
|
+
}
|
|
377
|
+
get #pollMs() {
|
|
378
|
+
return this.deps.pollMs ?? 3000;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/session/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type Hex } from 'viem';
|
|
2
|
+
import type { JobWorld } from './world.js';
|
|
3
|
+
/** Where the fixture's clock starts, in unix seconds, so every run reads the same. */
|
|
4
|
+
export declare const FIXTURE_START = 1800000000n;
|
|
5
|
+
export interface FixtureOptions {
|
|
6
|
+
/** The agent's authority in dollars, $500 by default. */
|
|
7
|
+
authority?: number;
|
|
8
|
+
/**
|
|
9
|
+
* What becomes of a charge reported on a job the customer cancelled. `pays` is Avow confirming it
|
|
10
|
+
* and the lock paying it once its contest window closes, the default. `contested` is the customer
|
|
11
|
+
* contesting the confirmed charge. `referred` is a customer that says it cancelled without Avow
|
|
12
|
+
* holding its signed cancellation, so Avow refers the report. `unanswered` is Avow never
|
|
13
|
+
* answering, so the report times out at its deadline.
|
|
14
|
+
*/
|
|
15
|
+
charge?: 'pays' | 'contested' | 'referred' | 'unanswered';
|
|
16
|
+
}
|
|
17
|
+
/** How long Avow has to answer a report in the fixture world, in seconds. */
|
|
18
|
+
export declare const FIXTURE_CONFIRM_WINDOW = 600n;
|
|
19
|
+
export interface FixtureWorld extends JobWorld {
|
|
20
|
+
readonly kind: 'fixture';
|
|
21
|
+
/** The private keys the fixture made, so the eval can check none reaches the model. */
|
|
22
|
+
readonly secrets: readonly Hex[];
|
|
23
|
+
/** Every transaction hash an acceptance sent, for tests that check which landed. */
|
|
24
|
+
readonly acceptances: Hex[];
|
|
25
|
+
/** Makes the next `count` acceptances throw as a send whose outcome is unknown, after landing. */
|
|
26
|
+
failAcceptances(count: number): void;
|
|
27
|
+
}
|
|
28
|
+
export declare function fixtureWorld(options?: FixtureOptions): FixtureWorld;
|
|
29
|
+
//# sourceMappingURL=fixture-world.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture-world.d.ts","sourceRoot":"","sources":["../../src/session/fixture-world.ts"],"names":[],"mappings":"AA6CA,OAAO,EAAgB,KAAK,GAAG,EAA0C,MAAM,MAAM,CAAA;AAQrF,OAAO,KAAK,EAOV,QAAQ,EAIT,MAAM,YAAY,CAAA;AAoBnB,sFAAsF;AACtF,eAAO,MAAM,aAAa,cAAiB,CAAA;AAkC3C,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAA;CAC1D;AAED,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,OAAO,CAAA;AAU1C,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,uFAAuF;IACvF,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,EAAE,CAAA;IAChC,oFAAoF;IACpF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,CAAA;IAC3B,kGAAkG;IAClG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrC;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,cAAmB,GAAG,YAAY,CA0rBvE"}
|