@agirails/sdk 3.3.0 → 3.4.1
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/api/agirailsApp.d.ts +21 -1
- package/dist/api/agirailsApp.d.ts.map +1 -1
- package/dist/api/agirailsApp.js.map +1 -1
- package/dist/builders/CounterAcceptBuilder.d.ts +96 -0
- package/dist/builders/CounterAcceptBuilder.d.ts.map +1 -0
- package/dist/builders/CounterAcceptBuilder.js +226 -0
- package/dist/builders/CounterAcceptBuilder.js.map +1 -0
- package/dist/builders/CounterOfferBuilder.d.ts +143 -0
- package/dist/builders/CounterOfferBuilder.d.ts.map +1 -0
- package/dist/builders/CounterOfferBuilder.js +329 -0
- package/dist/builders/CounterOfferBuilder.js.map +1 -0
- package/dist/builders/QuoteBuilder.d.ts.map +1 -1
- package/dist/builders/QuoteBuilder.js +8 -3
- package/dist/builders/QuoteBuilder.js.map +1 -1
- package/dist/builders/index.d.ts +2 -0
- package/dist/builders/index.d.ts.map +1 -1
- package/dist/builders/index.js +7 -1
- package/dist/builders/index.js.map +1 -1
- package/dist/cli/agirails.js +22 -2
- package/dist/cli/agirails.js.map +1 -1
- package/dist/cli/commands/health.js +21 -5
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +25 -5
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/publish.d.ts +34 -0
- package/dist/cli/commands/publish.d.ts.map +1 -1
- package/dist/cli/commands/publish.js +256 -80
- package/dist/cli/commands/publish.js.map +1 -1
- package/dist/cli/commands/repair.d.ts +23 -0
- package/dist/cli/commands/repair.d.ts.map +1 -0
- package/dist/cli/commands/repair.js +210 -0
- package/dist/cli/commands/repair.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +38 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +308 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/test.js +2 -2
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/agirailsmdV4.d.ts +46 -1
- package/dist/config/agirailsmdV4.d.ts.map +1 -1
- package/dist/config/agirailsmdV4.js +65 -8
- package/dist/config/agirailsmdV4.js.map +1 -1
- package/dist/config/defaults.d.ts +10 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +10 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/publishPipeline.d.ts +23 -1
- package/dist/config/publishPipeline.d.ts.map +1 -1
- package/dist/config/publishPipeline.js +70 -15
- package/dist/config/publishPipeline.js.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -3
- package/dist/index.js.map +1 -1
- package/dist/level1/Agent.d.ts +27 -0
- package/dist/level1/Agent.d.ts.map +1 -1
- package/dist/level1/Agent.js +77 -6
- package/dist/level1/Agent.js.map +1 -1
- package/dist/negotiation/BuyerOrchestrator.d.ts +103 -1
- package/dist/negotiation/BuyerOrchestrator.d.ts.map +1 -1
- package/dist/negotiation/BuyerOrchestrator.js +499 -4
- package/dist/negotiation/BuyerOrchestrator.js.map +1 -1
- package/dist/negotiation/DecisionEngine.d.ts +69 -1
- package/dist/negotiation/DecisionEngine.d.ts.map +1 -1
- package/dist/negotiation/DecisionEngine.js +140 -1
- package/dist/negotiation/DecisionEngine.js.map +1 -1
- package/dist/negotiation/PolicyEngine.d.ts +32 -0
- package/dist/negotiation/PolicyEngine.d.ts.map +1 -1
- package/dist/negotiation/PolicyEngine.js.map +1 -1
- package/dist/negotiation/ProviderOrchestrator.d.ts +108 -0
- package/dist/negotiation/ProviderOrchestrator.d.ts.map +1 -0
- package/dist/negotiation/ProviderOrchestrator.js +136 -0
- package/dist/negotiation/ProviderOrchestrator.js.map +1 -0
- package/dist/negotiation/ProviderPolicy.d.ts +143 -0
- package/dist/negotiation/ProviderPolicy.d.ts.map +1 -0
- package/dist/negotiation/ProviderPolicy.js +207 -0
- package/dist/negotiation/ProviderPolicy.js.map +1 -0
- package/dist/negotiation/index.d.ts +8 -1
- package/dist/negotiation/index.d.ts.map +1 -1
- package/dist/negotiation/index.js +8 -1
- package/dist/negotiation/index.js.map +1 -1
- package/dist/negotiation/verifyQuoteOnChain.d.ts +58 -0
- package/dist/negotiation/verifyQuoteOnChain.d.ts.map +1 -0
- package/dist/negotiation/verifyQuoteOnChain.js +83 -0
- package/dist/negotiation/verifyQuoteOnChain.js.map +1 -0
- package/dist/runtime/BlockchainRuntime.d.ts +13 -0
- package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
- package/dist/runtime/BlockchainRuntime.js +23 -0
- package/dist/runtime/BlockchainRuntime.js.map +1 -1
- package/dist/runtime/IACTPRuntime.d.ts +35 -0
- package/dist/runtime/IACTPRuntime.d.ts.map +1 -1
- package/dist/runtime/MockRuntime.d.ts +11 -0
- package/dist/runtime/MockRuntime.d.ts.map +1 -1
- package/dist/runtime/MockRuntime.js +39 -0
- package/dist/runtime/MockRuntime.js.map +1 -1
- package/dist/runtime/types/MockState.d.ts +10 -0
- package/dist/runtime/types/MockState.d.ts.map +1 -1
- package/dist/runtime/types/MockState.js.map +1 -1
- package/dist/transport/QuoteChannel.d.ts +201 -0
- package/dist/transport/QuoteChannel.d.ts.map +1 -0
- package/dist/transport/QuoteChannel.js +358 -0
- package/dist/transport/QuoteChannel.js.map +1 -0
- package/dist/types/adapter.d.ts +24 -24
- package/package.json +16 -1
|
@@ -22,17 +22,99 @@ const agirailsApp_1 = require("../api/agirailsApp");
|
|
|
22
22
|
const PolicyEngine_1 = require("./PolicyEngine");
|
|
23
23
|
const DecisionEngine_1 = require("./DecisionEngine");
|
|
24
24
|
const SessionStore_1 = require("./SessionStore");
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
const CounterOfferBuilder_1 = require("../builders/CounterOfferBuilder");
|
|
26
|
+
const CounterAcceptBuilder_1 = require("../builders/CounterAcceptBuilder");
|
|
27
|
+
const QuoteChannel_1 = require("../transport/QuoteChannel");
|
|
28
|
+
const NonceManager_1 = require("../utils/NonceManager");
|
|
29
|
+
const verifyQuoteOnChain_1 = require("./verifyQuoteOnChain");
|
|
28
30
|
class BuyerOrchestrator {
|
|
29
|
-
constructor(policy, runtime, requesterAddress, actpDir) {
|
|
31
|
+
constructor(policy, runtime, requesterAddress, actpDir, negotiation = {}) {
|
|
32
|
+
/** Quotes pushed in by the caller's quote-channel handler, keyed by txId. */
|
|
33
|
+
this.receivedQuotes = new Map();
|
|
34
|
+
/** Provider-acceptance-of-counter signal, keyed by txId. */
|
|
35
|
+
this.counterAccepted = new Map();
|
|
36
|
+
/** Resolvers waiting on counter acceptance — woken by setCounterAccepted. */
|
|
37
|
+
this.counterWaiters = new Map();
|
|
38
|
+
/**
|
|
39
|
+
* Counters this orchestrator sent (one per round, last write wins),
|
|
40
|
+
* keyed by txId. Stored so `setCounterAccepted` can cryptographically
|
|
41
|
+
* bind a provider's acceptance message to the exact counter we sent
|
|
42
|
+
* (acceptedAmount === counter.counterAmount, inReplyTo === counterHash).
|
|
43
|
+
*/
|
|
44
|
+
this.sentCounters = new Map();
|
|
30
45
|
this.policy = policy;
|
|
31
46
|
this.runtime = runtime;
|
|
32
47
|
this.requesterAddress = requesterAddress;
|
|
33
48
|
this.policyEngine = new PolicyEngine_1.PolicyEngine(policy, actpDir);
|
|
34
49
|
this.decisionEngine = new DecisionEngine_1.DecisionEngine(policy.selection.weights);
|
|
35
50
|
this.sessionStore = new SessionStore_1.SessionStore(actpDir);
|
|
51
|
+
this.negotiation = negotiation;
|
|
52
|
+
if (negotiation.signer) {
|
|
53
|
+
this.counterBuilder = new CounterOfferBuilder_1.CounterOfferBuilder(negotiation.signer, negotiation.nonceManager ?? new NonceManager_1.InMemoryNonceManager());
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Push a verified QuoteMessage into the orchestrator. Callers wire
|
|
58
|
+
* this from their QuoteChannel handler so the negotiation loop can
|
|
59
|
+
* pick it up on the next poll tick.
|
|
60
|
+
*
|
|
61
|
+
* Caller is responsible for validating the signature before pushing
|
|
62
|
+
* (the QuoteChannel handler already does this); the orchestrator
|
|
63
|
+
* layers on top by cross-referencing against on-chain hash (with
|
|
64
|
+
* legacy fallback, §3.6).
|
|
65
|
+
*/
|
|
66
|
+
setReceivedQuote(txId, quote, opts = {}) {
|
|
67
|
+
this.receivedQuotes.set(txId, {
|
|
68
|
+
quote,
|
|
69
|
+
providerEndpoint: opts.providerEndpoint,
|
|
70
|
+
providerAddress: opts.providerAddress,
|
|
71
|
+
actualEscrow: opts.actualEscrow,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Signal that the provider has accepted our counter-offer off-chain.
|
|
76
|
+
* Callers wire this from their quote-channel handler when an
|
|
77
|
+
* `agirails.counteraccept.v1` notification arrives.
|
|
78
|
+
*
|
|
79
|
+
* Verifies the acceptance is cryptographically bound to the counter
|
|
80
|
+
* THIS orchestrator sent for THIS txId:
|
|
81
|
+
* 1. EIP-712 signature recovers to provider DID
|
|
82
|
+
* 2. `acceptMessage.txId === txId`
|
|
83
|
+
* 3. `acceptMessage.inReplyTo === keccak(stored counter)`
|
|
84
|
+
* 4. `acceptMessage.acceptedAmount === storedCounter.counterAmount`
|
|
85
|
+
*
|
|
86
|
+
* Throws on any mismatch. Without these checks a malicious peer could
|
|
87
|
+
* pose as the provider and trick the buyer into committing at any
|
|
88
|
+
* price, since the previous (string-only) API trusted the caller.
|
|
89
|
+
*
|
|
90
|
+
* Wakes any negotiation round waiting on counter acceptance for this txId.
|
|
91
|
+
*/
|
|
92
|
+
async setCounterAccepted(txId, acceptMessage) {
|
|
93
|
+
if (!this.negotiation.kernelAddress) {
|
|
94
|
+
throw new Error('setCounterAccepted requires negotiation.kernelAddress in BuyerNegotiationContext');
|
|
95
|
+
}
|
|
96
|
+
const sentCounter = this.sentCounters.get(txId);
|
|
97
|
+
if (!sentCounter) {
|
|
98
|
+
throw new Error(`No counter-offer sent for txId ${txId} — cannot verify provider acceptance`);
|
|
99
|
+
}
|
|
100
|
+
if (acceptMessage.txId !== txId) {
|
|
101
|
+
throw new Error(`CounterAccept.txId mismatch: expected ${txId}, got ${acceptMessage.txId}`);
|
|
102
|
+
}
|
|
103
|
+
const counterHash = new CounterOfferBuilder_1.CounterOfferBuilder().computeHash(sentCounter);
|
|
104
|
+
if (acceptMessage.inReplyTo !== counterHash) {
|
|
105
|
+
throw new Error(`CounterAccept.inReplyTo (${acceptMessage.inReplyTo}) does not match sent counter hash (${counterHash})`);
|
|
106
|
+
}
|
|
107
|
+
if (acceptMessage.acceptedAmount !== sentCounter.counterAmount) {
|
|
108
|
+
throw new Error(`CounterAccept.acceptedAmount (${acceptMessage.acceptedAmount}) does not match counter.counterAmount (${sentCounter.counterAmount})`);
|
|
109
|
+
}
|
|
110
|
+
const verifier = new CounterAcceptBuilder_1.CounterAcceptBuilder();
|
|
111
|
+
await verifier.verify(acceptMessage, this.negotiation.kernelAddress);
|
|
112
|
+
this.counterAccepted.set(txId, { amountBaseUnits: acceptMessage.acceptedAmount });
|
|
113
|
+
const waiter = this.counterWaiters.get(txId);
|
|
114
|
+
if (waiter) {
|
|
115
|
+
waiter();
|
|
116
|
+
this.counterWaiters.delete(txId);
|
|
117
|
+
}
|
|
36
118
|
}
|
|
37
119
|
/**
|
|
38
120
|
* Execute the full negotiation flow.
|
|
@@ -189,6 +271,10 @@ class BuyerOrchestrator {
|
|
|
189
271
|
tx_id: txId,
|
|
190
272
|
});
|
|
191
273
|
emit({ type: 'round_end', round: round + 1, action: 'timeout', reason: 'Quote TTL expired' });
|
|
274
|
+
// External caller may have pushed a quote between createTransaction
|
|
275
|
+
// and timeout — clear so a long-running daemon doesn't accumulate
|
|
276
|
+
// entries in receivedQuotes / sentCounters.
|
|
277
|
+
this._cleanupTxState(txId);
|
|
192
278
|
continue;
|
|
193
279
|
}
|
|
194
280
|
emit({ type: 'quote_received', txId });
|
|
@@ -213,6 +299,51 @@ class BuyerOrchestrator {
|
|
|
213
299
|
catch {
|
|
214
300
|
// Non-fatal — price tracking is best-effort
|
|
215
301
|
}
|
|
302
|
+
// 3d-bis. AIP-2.1 negotiation branch: if the caller pushed in a
|
|
303
|
+
// signed QuoteMessage via setReceivedQuote, verify it against
|
|
304
|
+
// on-chain hash (with legacy fallback) and run evaluateQuote.
|
|
305
|
+
// The branch ONLY triggers when reachedState === 'QUOTED' — the
|
|
306
|
+
// COMMITTED fast-path below bypasses negotiation entirely because
|
|
307
|
+
// the provider already locked the deal at buyer's offered amount.
|
|
308
|
+
if (reachedState === 'QUOTED') {
|
|
309
|
+
const received = this.receivedQuotes.get(txId);
|
|
310
|
+
if (received) {
|
|
311
|
+
const negResult = await this._runNegotiationRound({
|
|
312
|
+
txId,
|
|
313
|
+
received,
|
|
314
|
+
candidateSlug: candidate.slug,
|
|
315
|
+
providerAddress,
|
|
316
|
+
offer,
|
|
317
|
+
round,
|
|
318
|
+
rounds,
|
|
319
|
+
emit,
|
|
320
|
+
});
|
|
321
|
+
if (negResult.done) {
|
|
322
|
+
// Negotiation reached a terminal decision (accept or
|
|
323
|
+
// reject) — short-circuit the existing escrow logic below.
|
|
324
|
+
if (negResult.success) {
|
|
325
|
+
this.sessionStore.linkTransaction(session.commerce_session_id, txId, candidate.slug);
|
|
326
|
+
const negReason = negResult.reason ?? 'Negotiation complete';
|
|
327
|
+
emit({ type: 'complete', success: true, reason: negReason });
|
|
328
|
+
return {
|
|
329
|
+
success: true,
|
|
330
|
+
commerce_session_id: session.commerce_session_id,
|
|
331
|
+
actp_tx_id: txId,
|
|
332
|
+
selected_provider: candidate.slug,
|
|
333
|
+
rounds_used: round + 1,
|
|
334
|
+
reason: negReason,
|
|
335
|
+
rounds,
|
|
336
|
+
deadlock_detected: deadlockDetected,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
// negResult.success === false → candidate rejected; continue
|
|
340
|
+
// outer loop to try the next one. The existing code below
|
|
341
|
+
// would attempt linkEscrow at buyer's offered price, which
|
|
342
|
+
// would happily succeed and silently ignore our rejection.
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
216
347
|
// 3e. Reserve budget and link escrow (or recognize already-committed).
|
|
217
348
|
// ACTP invariant: tx.amount is immutable (set at createTransaction).
|
|
218
349
|
// Policy was already validated pre-round, so offer.unit_price
|
|
@@ -239,6 +370,10 @@ class BuyerOrchestrator {
|
|
|
239
370
|
});
|
|
240
371
|
emit({ type: 'round_end', round: round + 1, action: 'accepted', reason });
|
|
241
372
|
emit({ type: 'complete', success: true, reason: 'Negotiation complete' });
|
|
373
|
+
// COMMITTED fast-path bypassed _runNegotiationRound (which is
|
|
374
|
+
// the usual cleanup site) — drop any stashed quote/counter
|
|
375
|
+
// state so daemon callers don't leak across negotiations.
|
|
376
|
+
this._cleanupTxState(txId);
|
|
242
377
|
return {
|
|
243
378
|
success: true,
|
|
244
379
|
commerce_session_id: session.commerce_session_id,
|
|
@@ -269,6 +404,9 @@ class BuyerOrchestrator {
|
|
|
269
404
|
});
|
|
270
405
|
emit({ type: 'round_end', round: round + 1, action: 'accepted', reason });
|
|
271
406
|
emit({ type: 'complete', success: true, reason: 'Negotiation complete' });
|
|
407
|
+
// Symmetric to the COMMITTED fast-path above — this success exit
|
|
408
|
+
// also bypassed _runNegotiationRound's cleanup site.
|
|
409
|
+
this._cleanupTxState(txId);
|
|
272
410
|
return {
|
|
273
411
|
success: true,
|
|
274
412
|
commerce_session_id: session.commerce_session_id,
|
|
@@ -294,6 +432,8 @@ class BuyerOrchestrator {
|
|
|
294
432
|
quoted_price: quotedPrice,
|
|
295
433
|
});
|
|
296
434
|
emit({ type: 'round_end', round: round + 1, action: 'error', reason });
|
|
435
|
+
// Same daemon-leak rationale as the timeout `continue` above.
|
|
436
|
+
this._cleanupTxState(txId);
|
|
297
437
|
continue;
|
|
298
438
|
}
|
|
299
439
|
}
|
|
@@ -313,6 +453,361 @@ class BuyerOrchestrator {
|
|
|
313
453
|
};
|
|
314
454
|
}
|
|
315
455
|
// ============================================================================
|
|
456
|
+
// AIP-2.1 negotiation round
|
|
457
|
+
// ============================================================================
|
|
458
|
+
/**
|
|
459
|
+
* Run a negotiation decision for a single incoming provider quote.
|
|
460
|
+
* Called ONLY when the caller has pushed in a signed QuoteMessage via
|
|
461
|
+
* setReceivedQuote and the tx has reached QUOTED on-chain.
|
|
462
|
+
*
|
|
463
|
+
* Returns `{ done: true, success: bool, reason }` when a terminal
|
|
464
|
+
* decision is reached (accept landed COMMITTED, or candidate rejected).
|
|
465
|
+
* Returns `{ done: false }` when the caller should fall through to the
|
|
466
|
+
* existing fixed-price flow (verification failed, missing negotiation
|
|
467
|
+
* context, etc).
|
|
468
|
+
*/
|
|
469
|
+
async _runNegotiationRound(args) {
|
|
470
|
+
const { txId, received, candidateSlug, providerAddress, offer, round, rounds, emit } = args;
|
|
471
|
+
// Any `done: true` return from this method means the tx reached a
|
|
472
|
+
// terminal decision — cleanup per-tx state before returning so
|
|
473
|
+
// long-running daemon callers don't accumulate entries in
|
|
474
|
+
// receivedQuotes / counterAccepted over thousands of negotiations.
|
|
475
|
+
const terminate = (result) => {
|
|
476
|
+
this._cleanupTxState(txId);
|
|
477
|
+
return result;
|
|
478
|
+
};
|
|
479
|
+
// 1. Cross-reference the off-chain quote with the on-chain hash.
|
|
480
|
+
// Without a match we cannot trust the pushed message, so fall
|
|
481
|
+
// through to the existing fixed-price flow rather than negotiate
|
|
482
|
+
// on unverified data.
|
|
483
|
+
const onChainTx = await this.runtime.getTransaction(txId);
|
|
484
|
+
const onChainHash = onChainTx && onChainTx.quoteHash;
|
|
485
|
+
if (!onChainHash) {
|
|
486
|
+
// Drop the pushed quote even though we're falling through to the
|
|
487
|
+
// fixed-price flow — keeping it would leak memory in daemon-style
|
|
488
|
+
// runners. The pushed quote was specific to THIS round; if a new
|
|
489
|
+
// (real) quote arrives later for the same txId, callers must push
|
|
490
|
+
// again. Targeted cleanup here pairs with terminate() on the
|
|
491
|
+
// done:true paths.
|
|
492
|
+
this._cleanupTxState(txId);
|
|
493
|
+
return { done: false };
|
|
494
|
+
}
|
|
495
|
+
const verify = (0, verifyQuoteOnChain_1.verifyQuoteHashOnChain)(received.quote, onChainHash, {
|
|
496
|
+
providerAddress: received.providerAddress,
|
|
497
|
+
actualEscrow: received.actualEscrow,
|
|
498
|
+
});
|
|
499
|
+
if (!verify.match) {
|
|
500
|
+
rounds.push({
|
|
501
|
+
round: round + 1,
|
|
502
|
+
provider_slug: candidateSlug,
|
|
503
|
+
provider_address: providerAddress,
|
|
504
|
+
action: 'error',
|
|
505
|
+
reason: `Quote hash mismatch: expected ${verify.canonicalHash}, on-chain ${onChainHash}`,
|
|
506
|
+
tx_id: txId,
|
|
507
|
+
});
|
|
508
|
+
emit({ type: 'round_end', round: round + 1, action: 'error', reason: 'Quote hash mismatch' });
|
|
509
|
+
return terminate({ done: true, success: false, reason: 'hash mismatch' });
|
|
510
|
+
}
|
|
511
|
+
// Attach source tag onto the round record for observability.
|
|
512
|
+
const hashSource = verify.source;
|
|
513
|
+
// 2. Decide accept / counter / reject.
|
|
514
|
+
//
|
|
515
|
+
// We pass `roundsUsedSoFar = 0` (the default) deliberately:
|
|
516
|
+
// _runNegotiationRound runs at most ONCE per provider in the outer
|
|
517
|
+
// `_negotiate` loop (one call site at line ~459, one quote per
|
|
518
|
+
// candidate). Multi-round counter-counter exchange against the same
|
|
519
|
+
// provider is a future feature (tracked in PRD as 3.4.1) — when it
|
|
520
|
+
// lands the caller MUST start passing the actual count of prior
|
|
521
|
+
// evaluations for this txId so the budget guard
|
|
522
|
+
// (`roundsUsedSoFar + 1 >= rounds_per_provider`) advances correctly.
|
|
523
|
+
const evaluation = this.decisionEngine.evaluateQuote(received.quote, this.policy);
|
|
524
|
+
if (evaluation.action === 'reject') {
|
|
525
|
+
try {
|
|
526
|
+
await this.runtime.transitionState(txId, 'CANCELLED');
|
|
527
|
+
}
|
|
528
|
+
catch {
|
|
529
|
+
// Best-effort; if the tx is already terminal the cancel call
|
|
530
|
+
// may revert and that's fine.
|
|
531
|
+
}
|
|
532
|
+
rounds.push({
|
|
533
|
+
round: round + 1,
|
|
534
|
+
provider_slug: candidateSlug,
|
|
535
|
+
provider_address: providerAddress,
|
|
536
|
+
action: 'rejected',
|
|
537
|
+
reason: `${evaluation.reason} (quote source: ${hashSource})`,
|
|
538
|
+
tx_id: txId,
|
|
539
|
+
quoted_price: this._baseUnitsForLog(received.quote.quotedAmount),
|
|
540
|
+
});
|
|
541
|
+
emit({ type: 'round_end', round: round + 1, action: 'rejected', reason: evaluation.reason });
|
|
542
|
+
return terminate({ done: true, success: false, reason: evaluation.reason });
|
|
543
|
+
}
|
|
544
|
+
if (evaluation.action === 'accept') {
|
|
545
|
+
// Commit at provider's quoted amount. AIP-2 sequence:
|
|
546
|
+
// acceptQuote(txId, quotedAmount) → updates tx.amount (still QUOTED),
|
|
547
|
+
// linkEscrow(txId, quotedAmount) → COMMITTED.
|
|
548
|
+
// The two calls are NOT atomic on-chain. If linkEscrow fails after
|
|
549
|
+
// acceptQuote succeeded, the tx is stuck in QUOTED with a finalized
|
|
550
|
+
// amount but no escrow lock — best-effort CANCELLED keeps state
|
|
551
|
+
// machine consistent rather than leaving a zombie row.
|
|
552
|
+
const amountBaseUnits = received.quote.quotedAmount;
|
|
553
|
+
let acceptQuoteSucceeded = false;
|
|
554
|
+
try {
|
|
555
|
+
await this.runtime.acceptQuote(txId, amountBaseUnits);
|
|
556
|
+
acceptQuoteSucceeded = true;
|
|
557
|
+
await this.runtime.linkEscrow(txId, amountBaseUnits);
|
|
558
|
+
}
|
|
559
|
+
catch (err) {
|
|
560
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
561
|
+
if (acceptQuoteSucceeded) {
|
|
562
|
+
// linkEscrow failed after accept — roll back to CANCELLED so
|
|
563
|
+
// the tx doesn't sit in QUOTED with a price set but no commit.
|
|
564
|
+
try {
|
|
565
|
+
await this.runtime.transitionState(txId, 'CANCELLED');
|
|
566
|
+
}
|
|
567
|
+
catch {
|
|
568
|
+
// Best-effort: if the chain itself is unreachable or the
|
|
569
|
+
// tx already moved (stale read race), the operator gets
|
|
570
|
+
// the original failure reason in the round log.
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
rounds.push({
|
|
574
|
+
round: round + 1,
|
|
575
|
+
provider_slug: candidateSlug,
|
|
576
|
+
provider_address: providerAddress,
|
|
577
|
+
action: 'error',
|
|
578
|
+
reason: `Accept flow failed: ${reason}`,
|
|
579
|
+
tx_id: txId,
|
|
580
|
+
});
|
|
581
|
+
emit({ type: 'round_end', round: round + 1, action: 'error', reason });
|
|
582
|
+
return terminate({ done: true, success: false, reason });
|
|
583
|
+
}
|
|
584
|
+
// Update local ledger for daily-spend accounting; tolerate
|
|
585
|
+
// reservation failure (it's bookkeeping — the on-chain escrow
|
|
586
|
+
// is already locked).
|
|
587
|
+
try {
|
|
588
|
+
this.policyEngine.reserve(offer.commerce_session_id || '', this._baseUnitsForLog(amountBaseUnits), offer.currency);
|
|
589
|
+
}
|
|
590
|
+
catch {
|
|
591
|
+
// swallow
|
|
592
|
+
}
|
|
593
|
+
const reason = `Quote accepted at ${amountBaseUnits} base units (source: ${hashSource})`;
|
|
594
|
+
rounds.push({
|
|
595
|
+
round: round + 1,
|
|
596
|
+
provider_slug: candidateSlug,
|
|
597
|
+
provider_address: providerAddress,
|
|
598
|
+
action: 'accepted',
|
|
599
|
+
reason,
|
|
600
|
+
tx_id: txId,
|
|
601
|
+
quoted_price: this._baseUnitsForLog(amountBaseUnits),
|
|
602
|
+
});
|
|
603
|
+
emit({ type: 'round_end', round: round + 1, action: 'accepted', reason });
|
|
604
|
+
return terminate({ done: true, success: true, reason });
|
|
605
|
+
}
|
|
606
|
+
// evaluation.action === 'counter'.
|
|
607
|
+
if (!this.counterBuilder || !this.negotiation.kernelAddress || !this.negotiation.chainId) {
|
|
608
|
+
// Caller requested counter-offers but didn't wire the signer.
|
|
609
|
+
// Log + fall through to accept/reject at max guard rails
|
|
610
|
+
// (treating as if counter_strategy were 'walk' would be less
|
|
611
|
+
// surprising than silently accepting above target).
|
|
612
|
+
try {
|
|
613
|
+
await this.runtime.transitionState(txId, 'CANCELLED');
|
|
614
|
+
}
|
|
615
|
+
catch {
|
|
616
|
+
/* best-effort */
|
|
617
|
+
}
|
|
618
|
+
const reason = 'counter_strategy set but no signer/kernelAddress/chainId in BuyerNegotiationContext';
|
|
619
|
+
rounds.push({
|
|
620
|
+
round: round + 1,
|
|
621
|
+
provider_slug: candidateSlug,
|
|
622
|
+
provider_address: providerAddress,
|
|
623
|
+
action: 'error',
|
|
624
|
+
reason,
|
|
625
|
+
tx_id: txId,
|
|
626
|
+
});
|
|
627
|
+
emit({ type: 'round_end', round: round + 1, action: 'error', reason });
|
|
628
|
+
return terminate({ done: true, success: false, reason });
|
|
629
|
+
}
|
|
630
|
+
// Build + send counter-offer. Then wait for provider's off-chain
|
|
631
|
+
// acceptance (setCounterAccepted) or timeout.
|
|
632
|
+
const channel = this.negotiation.channel ?? new QuoteChannel_1.QuoteChannelClient();
|
|
633
|
+
const counterTtlSec = this.policy.negotiation.counter_response_ttl_seconds
|
|
634
|
+
?? PolicyEngine_1.PolicyEngine.parseTtl(this.policy.negotiation.quote_ttl);
|
|
635
|
+
const now = Math.floor(Date.now() / 1000);
|
|
636
|
+
let counter;
|
|
637
|
+
try {
|
|
638
|
+
counter = await this.counterBuilder.build({
|
|
639
|
+
txId,
|
|
640
|
+
consumer: `did:ethr:${this.negotiation.chainId}:${(await this.negotiation.signer.getAddress()).toLowerCase()}`,
|
|
641
|
+
provider: received.quote.provider,
|
|
642
|
+
quoteAmount: received.quote.quotedAmount,
|
|
643
|
+
counterAmount: evaluation.amountBaseUnits,
|
|
644
|
+
maxPrice: received.quote.maxPrice,
|
|
645
|
+
inReplyTo: verify.canonicalHash,
|
|
646
|
+
chainId: this.negotiation.chainId,
|
|
647
|
+
kernelAddress: this.negotiation.kernelAddress,
|
|
648
|
+
expiresAt: now + counterTtlSec,
|
|
649
|
+
});
|
|
650
|
+
// Stash the counter we just built so setCounterAccepted can
|
|
651
|
+
// cryptographically bind the provider's acceptance message to
|
|
652
|
+
// the exact counter we sent (acceptedAmount + inReplyTo checks).
|
|
653
|
+
this.sentCounters.set(txId, counter);
|
|
654
|
+
}
|
|
655
|
+
catch (err) {
|
|
656
|
+
const reason = `Counter build failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
657
|
+
rounds.push({
|
|
658
|
+
round: round + 1,
|
|
659
|
+
provider_slug: candidateSlug,
|
|
660
|
+
provider_address: providerAddress,
|
|
661
|
+
action: 'error',
|
|
662
|
+
reason,
|
|
663
|
+
tx_id: txId,
|
|
664
|
+
});
|
|
665
|
+
emit({ type: 'round_end', round: round + 1, action: 'error', reason });
|
|
666
|
+
return terminate({ done: true, success: false, reason });
|
|
667
|
+
}
|
|
668
|
+
// Without an endpoint we have nowhere to deliver the signed counter.
|
|
669
|
+
// Cancel immediately rather than wait counter_response_ttl seconds
|
|
670
|
+
// for a provider that can't possibly hear from us.
|
|
671
|
+
if (!received.providerEndpoint) {
|
|
672
|
+
try {
|
|
673
|
+
await this.runtime.transitionState(txId, 'CANCELLED');
|
|
674
|
+
}
|
|
675
|
+
catch {
|
|
676
|
+
/* best-effort */
|
|
677
|
+
}
|
|
678
|
+
const reason = 'Cannot deliver counter — no providerEndpoint set on received quote';
|
|
679
|
+
rounds.push({
|
|
680
|
+
round: round + 1,
|
|
681
|
+
provider_slug: candidateSlug,
|
|
682
|
+
provider_address: providerAddress,
|
|
683
|
+
action: 'error',
|
|
684
|
+
reason,
|
|
685
|
+
tx_id: txId,
|
|
686
|
+
});
|
|
687
|
+
emit({ type: 'round_end', round: round + 1, action: 'error', reason });
|
|
688
|
+
return terminate({ done: true, success: false, reason });
|
|
689
|
+
}
|
|
690
|
+
try {
|
|
691
|
+
await channel.sendCounter(received.providerEndpoint, counter);
|
|
692
|
+
}
|
|
693
|
+
catch (err) {
|
|
694
|
+
const reason = `Counter channel POST failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
695
|
+
rounds.push({
|
|
696
|
+
round: round + 1,
|
|
697
|
+
provider_slug: candidateSlug,
|
|
698
|
+
provider_address: providerAddress,
|
|
699
|
+
action: 'error',
|
|
700
|
+
reason,
|
|
701
|
+
tx_id: txId,
|
|
702
|
+
});
|
|
703
|
+
emit({ type: 'round_end', round: round + 1, action: 'error', reason });
|
|
704
|
+
return terminate({ done: true, success: false, reason });
|
|
705
|
+
}
|
|
706
|
+
// Wait for provider's acceptance signal or timeout.
|
|
707
|
+
const accepted = await this._waitForCounterAcceptance(txId, counterTtlSec * 1000);
|
|
708
|
+
if (!accepted) {
|
|
709
|
+
try {
|
|
710
|
+
await this.runtime.transitionState(txId, 'CANCELLED');
|
|
711
|
+
}
|
|
712
|
+
catch {
|
|
713
|
+
/* best-effort */
|
|
714
|
+
}
|
|
715
|
+
const reason = `Counter acceptance not received within ${counterTtlSec}s`;
|
|
716
|
+
rounds.push({
|
|
717
|
+
round: round + 1,
|
|
718
|
+
provider_slug: candidateSlug,
|
|
719
|
+
provider_address: providerAddress,
|
|
720
|
+
action: 'timeout',
|
|
721
|
+
reason,
|
|
722
|
+
tx_id: txId,
|
|
723
|
+
});
|
|
724
|
+
emit({ type: 'round_end', round: round + 1, action: 'timeout', reason });
|
|
725
|
+
return terminate({ done: true, success: false, reason });
|
|
726
|
+
}
|
|
727
|
+
const finalAmount = accepted.amountBaseUnits;
|
|
728
|
+
let acceptQuoteSucceeded = false;
|
|
729
|
+
try {
|
|
730
|
+
await this.runtime.acceptQuote(txId, finalAmount);
|
|
731
|
+
acceptQuoteSucceeded = true;
|
|
732
|
+
await this.runtime.linkEscrow(txId, finalAmount);
|
|
733
|
+
}
|
|
734
|
+
catch (err) {
|
|
735
|
+
const reason = `Accept-counter flow failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
736
|
+
if (acceptQuoteSucceeded) {
|
|
737
|
+
// Mirror the symmetric path above: roll back to CANCELLED so
|
|
738
|
+
// the tx doesn't sit QUOTED with a finalized counter price.
|
|
739
|
+
try {
|
|
740
|
+
await this.runtime.transitionState(txId, 'CANCELLED');
|
|
741
|
+
}
|
|
742
|
+
catch {
|
|
743
|
+
/* best-effort */
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
rounds.push({
|
|
747
|
+
round: round + 1,
|
|
748
|
+
provider_slug: candidateSlug,
|
|
749
|
+
provider_address: providerAddress,
|
|
750
|
+
action: 'error',
|
|
751
|
+
reason,
|
|
752
|
+
tx_id: txId,
|
|
753
|
+
});
|
|
754
|
+
emit({ type: 'round_end', round: round + 1, action: 'error', reason });
|
|
755
|
+
return terminate({ done: true, success: false, reason });
|
|
756
|
+
}
|
|
757
|
+
const reason = `Counter accepted at ${finalAmount} base units (source: ${hashSource})`;
|
|
758
|
+
rounds.push({
|
|
759
|
+
round: round + 1,
|
|
760
|
+
provider_slug: candidateSlug,
|
|
761
|
+
provider_address: providerAddress,
|
|
762
|
+
action: 'accepted',
|
|
763
|
+
reason,
|
|
764
|
+
tx_id: txId,
|
|
765
|
+
quoted_price: this._baseUnitsForLog(finalAmount),
|
|
766
|
+
});
|
|
767
|
+
emit({ type: 'round_end', round: round + 1, action: 'accepted', reason });
|
|
768
|
+
return terminate({ done: true, success: true, reason });
|
|
769
|
+
}
|
|
770
|
+
/** Resolve when setCounterAccepted(txId, …) is called, or on timeout. */
|
|
771
|
+
async _waitForCounterAcceptance(txId, timeoutMs) {
|
|
772
|
+
// Already accepted before we started waiting? Return immediately.
|
|
773
|
+
const existing = this.counterAccepted.get(txId);
|
|
774
|
+
if (existing)
|
|
775
|
+
return existing;
|
|
776
|
+
return new Promise((resolve) => {
|
|
777
|
+
const timer = setTimeout(() => {
|
|
778
|
+
this.counterWaiters.delete(txId);
|
|
779
|
+
resolve(null);
|
|
780
|
+
}, timeoutMs);
|
|
781
|
+
this.counterWaiters.set(txId, () => {
|
|
782
|
+
clearTimeout(timer);
|
|
783
|
+
resolve(this.counterAccepted.get(txId) ?? null);
|
|
784
|
+
});
|
|
785
|
+
});
|
|
786
|
+
}
|
|
787
|
+
/**
|
|
788
|
+
* Free per-tx negotiation state at terminal outcomes (accept commits,
|
|
789
|
+
* reject CANCELLED, timeout). Long-running daemon-style runners would
|
|
790
|
+
* otherwise leak both maps unbounded as txIds accumulate.
|
|
791
|
+
*
|
|
792
|
+
* Idempotent — safe to call from multiple cleanup sites.
|
|
793
|
+
*/
|
|
794
|
+
_cleanupTxState(txId) {
|
|
795
|
+
this.receivedQuotes.delete(txId);
|
|
796
|
+
this.counterAccepted.delete(txId);
|
|
797
|
+
this.counterWaiters.delete(txId);
|
|
798
|
+
this.sentCounters.delete(txId);
|
|
799
|
+
}
|
|
800
|
+
/**
|
|
801
|
+
* Display-only downcast: USDC base-units string → Number for the
|
|
802
|
+
* RoundResult.quoted_price log field. Loses precision above
|
|
803
|
+
* Number.MAX_SAFE_INTEGER / 1e6 (~$9 quadrillion) but every
|
|
804
|
+
* comparison the orchestrator actually MAKES uses the bigint
|
|
805
|
+
* string. The on-chain tx.amount is the source of truth.
|
|
806
|
+
*/
|
|
807
|
+
_baseUnitsForLog(baseUnitsStr) {
|
|
808
|
+
return Number(BigInt(baseUnitsStr)) / 1000000;
|
|
809
|
+
}
|
|
810
|
+
// ============================================================================
|
|
316
811
|
// Helpers
|
|
317
812
|
// ============================================================================
|
|
318
813
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuyerOrchestrator.js","sourceRoot":"","sources":["../../src/negotiation/BuyerOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BuyerOrchestrator.js","sourceRoot":"","sources":["../../src/negotiation/BuyerOrchestrator.ts"],"names":[],"mappings":"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"}
|