@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.
Files changed (107) hide show
  1. package/dist/api/agirailsApp.d.ts +21 -1
  2. package/dist/api/agirailsApp.d.ts.map +1 -1
  3. package/dist/api/agirailsApp.js.map +1 -1
  4. package/dist/builders/CounterAcceptBuilder.d.ts +96 -0
  5. package/dist/builders/CounterAcceptBuilder.d.ts.map +1 -0
  6. package/dist/builders/CounterAcceptBuilder.js +226 -0
  7. package/dist/builders/CounterAcceptBuilder.js.map +1 -0
  8. package/dist/builders/CounterOfferBuilder.d.ts +143 -0
  9. package/dist/builders/CounterOfferBuilder.d.ts.map +1 -0
  10. package/dist/builders/CounterOfferBuilder.js +329 -0
  11. package/dist/builders/CounterOfferBuilder.js.map +1 -0
  12. package/dist/builders/QuoteBuilder.d.ts.map +1 -1
  13. package/dist/builders/QuoteBuilder.js +8 -3
  14. package/dist/builders/QuoteBuilder.js.map +1 -1
  15. package/dist/builders/index.d.ts +2 -0
  16. package/dist/builders/index.d.ts.map +1 -1
  17. package/dist/builders/index.js +7 -1
  18. package/dist/builders/index.js.map +1 -1
  19. package/dist/cli/agirails.js +22 -2
  20. package/dist/cli/agirails.js.map +1 -1
  21. package/dist/cli/commands/health.js +21 -5
  22. package/dist/cli/commands/health.js.map +1 -1
  23. package/dist/cli/commands/init.d.ts.map +1 -1
  24. package/dist/cli/commands/init.js +25 -5
  25. package/dist/cli/commands/init.js.map +1 -1
  26. package/dist/cli/commands/publish.d.ts +34 -0
  27. package/dist/cli/commands/publish.d.ts.map +1 -1
  28. package/dist/cli/commands/publish.js +256 -80
  29. package/dist/cli/commands/publish.js.map +1 -1
  30. package/dist/cli/commands/repair.d.ts +23 -0
  31. package/dist/cli/commands/repair.d.ts.map +1 -0
  32. package/dist/cli/commands/repair.js +210 -0
  33. package/dist/cli/commands/repair.js.map +1 -0
  34. package/dist/cli/commands/serve.d.ts +38 -0
  35. package/dist/cli/commands/serve.d.ts.map +1 -0
  36. package/dist/cli/commands/serve.js +308 -0
  37. package/dist/cli/commands/serve.js.map +1 -0
  38. package/dist/cli/commands/test.js +2 -2
  39. package/dist/cli/commands/test.js.map +1 -1
  40. package/dist/cli/index.js +6 -0
  41. package/dist/cli/index.js.map +1 -1
  42. package/dist/config/agirailsmdV4.d.ts +46 -1
  43. package/dist/config/agirailsmdV4.d.ts.map +1 -1
  44. package/dist/config/agirailsmdV4.js +65 -8
  45. package/dist/config/agirailsmdV4.js.map +1 -1
  46. package/dist/config/defaults.d.ts +10 -0
  47. package/dist/config/defaults.d.ts.map +1 -1
  48. package/dist/config/defaults.js +10 -0
  49. package/dist/config/defaults.js.map +1 -1
  50. package/dist/config/publishPipeline.d.ts +23 -1
  51. package/dist/config/publishPipeline.d.ts.map +1 -1
  52. package/dist/config/publishPipeline.js +70 -15
  53. package/dist/config/publishPipeline.js.map +1 -1
  54. package/dist/index.d.ts +20 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +29 -3
  57. package/dist/index.js.map +1 -1
  58. package/dist/level1/Agent.d.ts +27 -0
  59. package/dist/level1/Agent.d.ts.map +1 -1
  60. package/dist/level1/Agent.js +77 -6
  61. package/dist/level1/Agent.js.map +1 -1
  62. package/dist/negotiation/BuyerOrchestrator.d.ts +103 -1
  63. package/dist/negotiation/BuyerOrchestrator.d.ts.map +1 -1
  64. package/dist/negotiation/BuyerOrchestrator.js +499 -4
  65. package/dist/negotiation/BuyerOrchestrator.js.map +1 -1
  66. package/dist/negotiation/DecisionEngine.d.ts +69 -1
  67. package/dist/negotiation/DecisionEngine.d.ts.map +1 -1
  68. package/dist/negotiation/DecisionEngine.js +140 -1
  69. package/dist/negotiation/DecisionEngine.js.map +1 -1
  70. package/dist/negotiation/PolicyEngine.d.ts +32 -0
  71. package/dist/negotiation/PolicyEngine.d.ts.map +1 -1
  72. package/dist/negotiation/PolicyEngine.js.map +1 -1
  73. package/dist/negotiation/ProviderOrchestrator.d.ts +108 -0
  74. package/dist/negotiation/ProviderOrchestrator.d.ts.map +1 -0
  75. package/dist/negotiation/ProviderOrchestrator.js +136 -0
  76. package/dist/negotiation/ProviderOrchestrator.js.map +1 -0
  77. package/dist/negotiation/ProviderPolicy.d.ts +143 -0
  78. package/dist/negotiation/ProviderPolicy.d.ts.map +1 -0
  79. package/dist/negotiation/ProviderPolicy.js +207 -0
  80. package/dist/negotiation/ProviderPolicy.js.map +1 -0
  81. package/dist/negotiation/index.d.ts +8 -1
  82. package/dist/negotiation/index.d.ts.map +1 -1
  83. package/dist/negotiation/index.js +8 -1
  84. package/dist/negotiation/index.js.map +1 -1
  85. package/dist/negotiation/verifyQuoteOnChain.d.ts +58 -0
  86. package/dist/negotiation/verifyQuoteOnChain.d.ts.map +1 -0
  87. package/dist/negotiation/verifyQuoteOnChain.js +83 -0
  88. package/dist/negotiation/verifyQuoteOnChain.js.map +1 -0
  89. package/dist/runtime/BlockchainRuntime.d.ts +13 -0
  90. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
  91. package/dist/runtime/BlockchainRuntime.js +23 -0
  92. package/dist/runtime/BlockchainRuntime.js.map +1 -1
  93. package/dist/runtime/IACTPRuntime.d.ts +35 -0
  94. package/dist/runtime/IACTPRuntime.d.ts.map +1 -1
  95. package/dist/runtime/MockRuntime.d.ts +11 -0
  96. package/dist/runtime/MockRuntime.d.ts.map +1 -1
  97. package/dist/runtime/MockRuntime.js +39 -0
  98. package/dist/runtime/MockRuntime.js.map +1 -1
  99. package/dist/runtime/types/MockState.d.ts +10 -0
  100. package/dist/runtime/types/MockState.d.ts.map +1 -1
  101. package/dist/runtime/types/MockState.js.map +1 -1
  102. package/dist/transport/QuoteChannel.d.ts +201 -0
  103. package/dist/transport/QuoteChannel.d.ts.map +1 -0
  104. package/dist/transport/QuoteChannel.js +358 -0
  105. package/dist/transport/QuoteChannel.js.map +1 -0
  106. package/dist/types/adapter.d.ts +24 -24
  107. 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
- // BuyerOrchestrator
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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"}