@agirails/sdk 4.7.2 → 4.8.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/ACTPClient.d.ts +15 -0
- package/dist/ACTPClient.d.ts.map +1 -1
- package/dist/ACTPClient.js +1 -0
- package/dist/ACTPClient.js.map +1 -1
- package/dist/cli/commands/agent.js +11 -0
- package/dist/cli/commands/agent.js.map +1 -1
- package/dist/cli/commands/publish.d.ts.map +1 -1
- package/dist/cli/commands/publish.js +15 -3
- package/dist/cli/commands/publish.js.map +1 -1
- package/dist/config/networks.d.ts +8 -0
- package/dist/config/networks.d.ts.map +1 -1
- package/dist/config/networks.js +17 -1
- package/dist/config/networks.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/level1/Agent.d.ts +59 -1
- package/dist/level1/Agent.d.ts.map +1 -1
- package/dist/level1/Agent.js +184 -10
- package/dist/level1/Agent.js.map +1 -1
- package/dist/negotiation/BuyerOrchestrator.d.ts +8 -0
- package/dist/negotiation/BuyerOrchestrator.d.ts.map +1 -1
- package/dist/negotiation/BuyerOrchestrator.js +4 -1
- package/dist/negotiation/BuyerOrchestrator.js.map +1 -1
- package/dist/negotiation/DecisionEngine.d.ts +16 -0
- package/dist/negotiation/DecisionEngine.d.ts.map +1 -1
- package/dist/negotiation/DecisionEngine.js.map +1 -1
- package/dist/negotiation/ProviderOrchestrator.d.ts +32 -0
- package/dist/negotiation/ProviderOrchestrator.d.ts.map +1 -1
- package/dist/negotiation/ProviderOrchestrator.js +12 -1
- package/dist/negotiation/ProviderOrchestrator.js.map +1 -1
- package/dist/negotiation/index.d.ts +2 -2
- package/dist/negotiation/index.d.ts.map +1 -1
- package/dist/protocol/EventMonitor.d.ts +9 -0
- package/dist/protocol/EventMonitor.d.ts.map +1 -1
- package/dist/protocol/EventMonitor.js +37 -3
- package/dist/protocol/EventMonitor.js.map +1 -1
- package/dist/receipts/push.d.ts +7 -0
- package/dist/receipts/push.d.ts.map +1 -1
- package/dist/receipts/push.js +20 -6
- package/dist/receipts/push.js.map +1 -1
- package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
- package/dist/runtime/BlockchainRuntime.js +11 -3
- package/dist/runtime/BlockchainRuntime.js.map +1 -1
- package/package.json +6 -5
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;;;;;AAEH,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,2CAKsB;AAJpB,wGAAA,UAAU,OAAA;AAMZ,gFAAgF;AAChF,kCAAkC;AAClC,gFAAgF;AAEhF,sDAOgC;AAN9B,0GAAA,WAAW,OAAA;AACX,6HAAA,8BAA8B,OAAA;AAC9B,uHAAA,wBAAwB,OAAA;AACxB,6GAAA,cAAc,OAAA;AACd,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AAGnB,wDAIiC;AAH/B,4GAAA,YAAY,OAAA;AAKd,8DAGoC;AAFlC,kHAAA,eAAe,OAAA;AAIjB,sDAGgC;AAF9B,0GAAA,WAAW,OAAA;AAIb,qCAAqC;AACrC,kDAW6B;AAV3B,uGAAA,SAAS,OAAA;AACT,6GAAA,eAAe,OAAA;AACf,sHAAA,wBAAwB,OAAA;AACxB,wHAAA,0BAA0B,OAAA;AAC1B,wHAAA,0BAA0B,OAAA;AAC1B,qHAAA,uBAAuB,OAAA;AACvB,qHAAA,uBAAuB,OAAA;AACvB,sHAAA,wBAAwB,OAAA;AACxB,6HAAA,+BAA+B,OAAA;AAC/B,oHAAA,sBAAsB,OAAA;AAGxB,8DAA6D;AAApD,kHAAA,eAAe,OAAA;AAExB,0DAGkC;AAFhC,8GAAA,aAAa,OAAA;AAIf,gDAK6B;AAD3B,qGAAA,SAAS,OAAA;AAcX,sCAAsC;AACtC,qDAO+B;AAN7B,0GAAA,WAAW,OAAA;AACX,uHAAA,wBAAwB,OAAA;AACxB,kHAAA,mBAAmB,OAAA;AACnB,kHAAA,mBAAmB,OAAA;AACnB,kHAAA,mBAAmB,OAAA;AACnB,uHAAA,wBAAwB,OAAA;AAG1B,iDAAiD;AACjD,+DAKoC;AAJlC,oHAAA,gBAAgB,OAAA;AAChB,2HAAA,uBAAuB,OAAA;AACvB,yHAAA,qBAAqB,OAAA;AACrB,sHAAA,kBAAkB,OAAA;AAGpB,0CAA0C;AAC1C,iEAGqC;AAFnC,sHAAA,iBAAiB,OAAA;AAInB,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,uDAUmC;AAFjC,kHAAA,qBAAqB,OAAA;AACrB,gHAAA,mBAAmB,OAAA;AAGrB,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAEhF,mBAAmB;AACnB,oDAAmD;AAA1C,wGAAA,UAAU,OAAA;AACnB,sDAAqD;AAA5C,0GAAA,WAAW,OAAA;AACpB,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AACrB,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AACtB,4DAAgF;AAAvE,gHAAA,cAAc,OAAA;AACvB,kDAA4D;AAAnD,sGAAA,SAAS,OAAA;AAClB,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AACtB,oDAAmD;AAA1C,wGAAA,UAAU,OAAA;AACnB,sDAAqD;AAA5C,0GAAA,WAAW,OAAA;AAEpB,WAAW;AACX,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AACrB,sEAAqE;AAA5D,0HAAA,mBAAmB,OAAA;AAE5B,wEAAuE;AAA9D,4HAAA,oBAAoB,OAAA;AAE7B,wEAAuE;AAA9D,4HAAA,oBAAoB,OAAA;AAE7B,kDAAkD;AAClD,yDAKkC;AAJhC,kHAAA,kBAAkB,OAAA;AAClB,mHAAA,mBAAmB,OAAA;AACnB,kHAAA,kBAAkB,OAAA;AAClB,gHAAA,gBAAgB,OAAA;AAGlB,mDAAmD;AACnD,2EAA0E;AAAjE,4HAAA,oBAAoB,OAAA;AAC7B,+DAAoE;AAA3D,sHAAA,oBAAoB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/level1/Agent.d.ts
CHANGED
|
@@ -102,6 +102,20 @@ export interface AgentConfig {
|
|
|
102
102
|
* rpcUrl: 'https://base-sepolia.g.alchemy.com/v2/YOUR_API_KEY'
|
|
103
103
|
*/
|
|
104
104
|
rpcUrl?: string;
|
|
105
|
+
/**
|
|
106
|
+
* ethers provider polling interval in milliseconds for live on-chain
|
|
107
|
+
* event / block polling (testnet / mainnet only; ignored in 'mock').
|
|
108
|
+
*
|
|
109
|
+
* Lower values tighten job-pickup latency but multiply the agent's
|
|
110
|
+
* `eth_blockNumber` / `eth_getLogs` RPC load — a long-running provider on
|
|
111
|
+
* a metered RPC (Alchemy / Infura / QuickNode free tier) burns compute
|
|
112
|
+
* units proportionally. Defaults to the SDK runtime default (1000 ms / 1s).
|
|
113
|
+
* Always-on daemons should raise this to 5000–8000.
|
|
114
|
+
*
|
|
115
|
+
* @default 1000
|
|
116
|
+
* @example pollingInterval: 6000
|
|
117
|
+
*/
|
|
118
|
+
pollingInterval?: number;
|
|
105
119
|
/**
|
|
106
120
|
* State directory (mock mode only)
|
|
107
121
|
*/
|
|
@@ -312,6 +326,15 @@ export declare class Agent extends EventEmitter {
|
|
|
312
326
|
* before the state transition completes
|
|
313
327
|
*/
|
|
314
328
|
private processedJobs;
|
|
329
|
+
/**
|
|
330
|
+
* Per-job failure counter for bounded retry. A non-kernel failure (e.g. the
|
|
331
|
+
* user's handler throwing on bad input) is retried as if transient; after
|
|
332
|
+
* MAX_JOB_ATTEMPTS recurrences it is treated as effectively permanent and
|
|
333
|
+
* marked processed, so polling does not retry it forever. In-memory → resets
|
|
334
|
+
* on restart (same blast radius as the permanent-failure skip set).
|
|
335
|
+
*/
|
|
336
|
+
private jobAttempts;
|
|
337
|
+
private static readonly MAX_JOB_ATTEMPTS;
|
|
315
338
|
/**
|
|
316
339
|
* Processing locks (for atomic locking)
|
|
317
340
|
*
|
|
@@ -539,6 +562,15 @@ export declare class Agent extends EventEmitter {
|
|
|
539
562
|
* Stop polling
|
|
540
563
|
*/
|
|
541
564
|
private stopPolling;
|
|
565
|
+
/**
|
|
566
|
+
* Emit an 'error' event only when a consumer is listening; otherwise log it.
|
|
567
|
+
* A long-running provider agent must NOT crash the process on a transient or
|
|
568
|
+
* per-job failure just because no 'error' listener was attached — Node throws
|
|
569
|
+
* on an unhandled 'error' event. Poll/job errors are retried on the next
|
|
570
|
+
* cycle, so swallowing-to-log here keeps the daemon alive; callers that DO
|
|
571
|
+
* attach an 'error' listener still receive every error unchanged.
|
|
572
|
+
*/
|
|
573
|
+
private safeEmitError;
|
|
542
574
|
/**
|
|
543
575
|
* Poll for new jobs
|
|
544
576
|
*
|
|
@@ -577,7 +609,10 @@ export declare class Agent extends EventEmitter {
|
|
|
577
609
|
* Dispatch order:
|
|
578
610
|
* PRIMARY (PRD §5.4 — on-chain Layer B):
|
|
579
611
|
* Match by `tx.serviceHash` against the `handlersByHash` map.
|
|
580
|
-
*
|
|
612
|
+
* ZEROHASH SOLE-HANDLER FALLBACK (raw-pay routing):
|
|
613
|
+
* When `serviceHash === ZeroHash` and exactly one handler is
|
|
614
|
+
* registered, route to it (Level 0 `pay` to a single-service
|
|
615
|
+
* provider). 0 or 2+ handlers → fall through (ambiguous, not routed).
|
|
581
616
|
* FALLBACK (preserves MockRuntime test fixtures + legacy clients):
|
|
582
617
|
* 5-step `serviceDescription` dispatch — JSON / legacy /
|
|
583
618
|
* hash-only / string exact match.
|
|
@@ -613,6 +648,29 @@ export declare class Agent extends EventEmitter {
|
|
|
613
648
|
* callback path before this commit, MockRuntime-only test fixtures),
|
|
614
649
|
* fall back to the legacy `extractServiceName` so behavior is unchanged.
|
|
615
650
|
*/
|
|
651
|
+
/**
|
|
652
|
+
* Emit a `job:declined` (economic) or `job:filtered` (policy) event when a
|
|
653
|
+
* polled job is rejected before acceptance.
|
|
654
|
+
*
|
|
655
|
+
* Before this, both rejection classes were swallowed into a single debug log
|
|
656
|
+
* inside {@link shouldAutoAccept}, so a provider could only see "a job was
|
|
657
|
+
* rejected" by parsing logs — consumers (e.g. Sentinel) had to monkeypatch
|
|
658
|
+
* the agent to count declines. These events surface the decision with a
|
|
659
|
+
* machine-readable `reason`.
|
|
660
|
+
*
|
|
661
|
+
* Semantics:
|
|
662
|
+
* - `job:declined` — economic: budget/price out of band. The agent would
|
|
663
|
+
* take it at a different price.
|
|
664
|
+
* - `job:filtered` — policy: a custom predicate / rate-limit / legacy
|
|
665
|
+
* filter rejected it. Price is irrelevant.
|
|
666
|
+
*
|
|
667
|
+
* Payload (second arg; first arg is the {@link Job} like other job:* events):
|
|
668
|
+
* `{ jobId, requester, amount, reason, ...extra }`
|
|
669
|
+
*
|
|
670
|
+
* Best-effort: wrapped in try/catch so a throwing listener can NEVER break
|
|
671
|
+
* the accept/decline decision path (which would wrongly drop or take a job).
|
|
672
|
+
*/
|
|
673
|
+
private emitJobDecision;
|
|
616
674
|
private createJobFromTransaction;
|
|
617
675
|
/**
|
|
618
676
|
* Extract service name from transaction
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../src/level1/Agent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../src/level1/Agent.ts"],"names":[],"mappings":"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"}
|
package/dist/level1/Agent.js
CHANGED
|
@@ -107,6 +107,14 @@ class Agent extends events_1.EventEmitter {
|
|
|
107
107
|
* before the state transition completes
|
|
108
108
|
*/
|
|
109
109
|
this.processedJobs = new security_1.LRUCache(10000);
|
|
110
|
+
/**
|
|
111
|
+
* Per-job failure counter for bounded retry. A non-kernel failure (e.g. the
|
|
112
|
+
* user's handler throwing on bad input) is retried as if transient; after
|
|
113
|
+
* MAX_JOB_ATTEMPTS recurrences it is treated as effectively permanent and
|
|
114
|
+
* marked processed, so polling does not retry it forever. In-memory → resets
|
|
115
|
+
* on restart (same blast radius as the permanent-failure skip set).
|
|
116
|
+
*/
|
|
117
|
+
this.jobAttempts = new security_1.LRUCache(10000);
|
|
110
118
|
/**
|
|
111
119
|
* Processing locks (for atomic locking)
|
|
112
120
|
*
|
|
@@ -223,6 +231,7 @@ class Agent extends events_1.EventEmitter {
|
|
|
223
231
|
stateDirectory: this.config.stateDirectory,
|
|
224
232
|
privateKey: await this.getPrivateKey(),
|
|
225
233
|
rpcUrl,
|
|
234
|
+
pollingInterval: this.config.pollingInterval,
|
|
226
235
|
});
|
|
227
236
|
this.startPolling();
|
|
228
237
|
this.subscribeIfBlockchain();
|
|
@@ -236,7 +245,7 @@ class Agent extends events_1.EventEmitter {
|
|
|
236
245
|
this.stopPolling();
|
|
237
246
|
this.unsubscribe();
|
|
238
247
|
this._status = 'stopped';
|
|
239
|
-
this.
|
|
248
|
+
this.safeEmitError(error);
|
|
240
249
|
throw error;
|
|
241
250
|
}
|
|
242
251
|
}
|
|
@@ -322,7 +331,7 @@ class Agent extends events_1.EventEmitter {
|
|
|
322
331
|
return;
|
|
323
332
|
}
|
|
324
333
|
this.jobSubscriptionCleanup = runtime.subscribeProviderJobs(this.address, (tx) => {
|
|
325
|
-
this.handleIncomingTransaction(tx).catch((err) => this.
|
|
334
|
+
this.handleIncomingTransaction(tx).catch((err) => this.safeEmitError(err));
|
|
326
335
|
});
|
|
327
336
|
this.logger.info('Subscribed to on-chain TransactionCreated events', {
|
|
328
337
|
provider: this.address,
|
|
@@ -572,7 +581,7 @@ class Agent extends events_1.EventEmitter {
|
|
|
572
581
|
const pollingInterval = 5000; // 5 seconds
|
|
573
582
|
this.pollingIntervalId = setInterval(() => {
|
|
574
583
|
this.pollForJobs().catch((error) => {
|
|
575
|
-
this.
|
|
584
|
+
this.safeEmitError(error);
|
|
576
585
|
});
|
|
577
586
|
}, pollingInterval);
|
|
578
587
|
}
|
|
@@ -585,6 +594,22 @@ class Agent extends events_1.EventEmitter {
|
|
|
585
594
|
this.pollingIntervalId = undefined;
|
|
586
595
|
}
|
|
587
596
|
}
|
|
597
|
+
/**
|
|
598
|
+
* Emit an 'error' event only when a consumer is listening; otherwise log it.
|
|
599
|
+
* A long-running provider agent must NOT crash the process on a transient or
|
|
600
|
+
* per-job failure just because no 'error' listener was attached — Node throws
|
|
601
|
+
* on an unhandled 'error' event. Poll/job errors are retried on the next
|
|
602
|
+
* cycle, so swallowing-to-log here keeps the daemon alive; callers that DO
|
|
603
|
+
* attach an 'error' listener still receive every error unchanged.
|
|
604
|
+
*/
|
|
605
|
+
safeEmitError(error) {
|
|
606
|
+
if (this.listenerCount('error') > 0) {
|
|
607
|
+
this.emit('error', error);
|
|
608
|
+
}
|
|
609
|
+
else {
|
|
610
|
+
this.logger.error('Agent error (no error listener attached; not crashing)', {}, error);
|
|
611
|
+
}
|
|
612
|
+
}
|
|
588
613
|
/**
|
|
589
614
|
* Poll for new jobs
|
|
590
615
|
*
|
|
@@ -646,7 +671,7 @@ class Agent extends events_1.EventEmitter {
|
|
|
646
671
|
catch (error) {
|
|
647
672
|
// Polling error - will retry on next interval
|
|
648
673
|
this.logger.error('Polling error', {}, error);
|
|
649
|
-
this.
|
|
674
|
+
this.safeEmitError(error);
|
|
650
675
|
}
|
|
651
676
|
}
|
|
652
677
|
/**
|
|
@@ -759,12 +784,12 @@ class Agent extends events_1.EventEmitter {
|
|
|
759
784
|
// Process the job asynchronously (don't await — handler runs out-of-band).
|
|
760
785
|
this.processJob(job, serviceHandler.handler).catch((error) => {
|
|
761
786
|
this.logger.error('Job processing failed', { jobId: job.id }, error);
|
|
762
|
-
this.
|
|
787
|
+
this.safeEmitError(error);
|
|
763
788
|
});
|
|
764
789
|
}
|
|
765
790
|
catch (error) {
|
|
766
791
|
this.logger.error('Error processing pending job', { txId: tx.id }, error);
|
|
767
|
-
this.
|
|
792
|
+
this.safeEmitError(error);
|
|
768
793
|
}
|
|
769
794
|
finally {
|
|
770
795
|
this.processingLocks.delete(tx.id);
|
|
@@ -779,7 +804,10 @@ class Agent extends events_1.EventEmitter {
|
|
|
779
804
|
* Dispatch order:
|
|
780
805
|
* PRIMARY (PRD §5.4 — on-chain Layer B):
|
|
781
806
|
* Match by `tx.serviceHash` against the `handlersByHash` map.
|
|
782
|
-
*
|
|
807
|
+
* ZEROHASH SOLE-HANDLER FALLBACK (raw-pay routing):
|
|
808
|
+
* When `serviceHash === ZeroHash` and exactly one handler is
|
|
809
|
+
* registered, route to it (Level 0 `pay` to a single-service
|
|
810
|
+
* provider). 0 or 2+ handlers → fall through (ambiguous, not routed).
|
|
783
811
|
* FALLBACK (preserves MockRuntime test fixtures + legacy clients):
|
|
784
812
|
* 5-step `serviceDescription` dispatch — JSON / legacy /
|
|
785
813
|
* hash-only / string exact match.
|
|
@@ -792,6 +820,34 @@ class Agent extends events_1.EventEmitter {
|
|
|
792
820
|
if (byHash)
|
|
793
821
|
return byHash;
|
|
794
822
|
}
|
|
823
|
+
// ZeroHash / missing-hash sole-handler fallback (raw-pay routing).
|
|
824
|
+
//
|
|
825
|
+
// A Level 0 `client.pay(provider, amount)` creates an on-chain tx with
|
|
826
|
+
// `serviceHash === ZeroHash` and no `serviceDescription`. Before this
|
|
827
|
+
// branch such a tx fell through to the string dispatch below, found
|
|
828
|
+
// nothing, and was silently dropped — the requester paid a single-service
|
|
829
|
+
// provider but the job never ran (it stayed COMMITTED forever).
|
|
830
|
+
//
|
|
831
|
+
// `noRoutableHash` is true when the hash is the literal ZeroHash OR when it
|
|
832
|
+
// is absent / non-string (some runtimes surface a raw pay with no
|
|
833
|
+
// serviceHash field at all). Both are the same "payer named no service"
|
|
834
|
+
// case. This deliberately matches the behavior of the agent-side monkeypatch
|
|
835
|
+
// this fix replaces (Sentinel used `!hash || hash === ZeroHash`), so an
|
|
836
|
+
// agent that drops its monkeypatch sees byte-identical routing.
|
|
837
|
+
//
|
|
838
|
+
// When there is no routable hash AND the agent has EXACTLY ONE registered
|
|
839
|
+
// handler, the routing is unambiguous — route to that sole handler.
|
|
840
|
+
//
|
|
841
|
+
// Guards (deliberately conservative — never guess):
|
|
842
|
+
// * 0 handlers → fall through, returns undefined (unchanged).
|
|
843
|
+
// * 2+ handlers → ambiguous, fall through, returns undefined (unchanged).
|
|
844
|
+
// * exactly 1 → route, with a warn-level log so operators can see
|
|
845
|
+
// raw-pay activations in production.
|
|
846
|
+
const noRoutableHash = !hash || hash === ethers_1.ethers.ZeroHash.toLowerCase();
|
|
847
|
+
if (noRoutableHash && this.handlersByHash.size === 1) {
|
|
848
|
+
this.logger.warn('ZeroHash (raw-pay) tx routed to the sole registered handler', { txId: tx?.id });
|
|
849
|
+
return this.handlersByHash.values().next().value;
|
|
850
|
+
}
|
|
795
851
|
// FALLBACK: existing 5-step string dispatch.
|
|
796
852
|
return this.findServiceHandlerByString(tx);
|
|
797
853
|
}
|
|
@@ -878,6 +934,10 @@ class Agent extends events_1.EventEmitter {
|
|
|
878
934
|
budget,
|
|
879
935
|
minBudget: filter.minBudget,
|
|
880
936
|
});
|
|
937
|
+
this.emitJobDecision('job:declined', tx, serviceHandler, {
|
|
938
|
+
reason: 'budget_below_minimum',
|
|
939
|
+
minBudget: filter.minBudget,
|
|
940
|
+
});
|
|
881
941
|
return false;
|
|
882
942
|
}
|
|
883
943
|
// Check maxBudget
|
|
@@ -887,6 +947,10 @@ class Agent extends events_1.EventEmitter {
|
|
|
887
947
|
budget,
|
|
888
948
|
maxBudget: filter.maxBudget,
|
|
889
949
|
});
|
|
950
|
+
this.emitJobDecision('job:declined', tx, serviceHandler, {
|
|
951
|
+
reason: 'budget_above_maximum',
|
|
952
|
+
maxBudget: filter.maxBudget,
|
|
953
|
+
});
|
|
890
954
|
return false;
|
|
891
955
|
}
|
|
892
956
|
// Check custom filter function
|
|
@@ -895,6 +959,10 @@ class Agent extends events_1.EventEmitter {
|
|
|
895
959
|
const customResult = await filter.custom(job);
|
|
896
960
|
if (!customResult) {
|
|
897
961
|
this.logger.debug('Job rejected: custom filter declined', { txId: tx.id });
|
|
962
|
+
this.emitJobDecision('job:filtered', tx, serviceHandler, {
|
|
963
|
+
reason: 'custom_filter',
|
|
964
|
+
filter: 'custom',
|
|
965
|
+
});
|
|
898
966
|
return false;
|
|
899
967
|
}
|
|
900
968
|
}
|
|
@@ -905,6 +973,10 @@ class Agent extends events_1.EventEmitter {
|
|
|
905
973
|
const filterResult = filter(job);
|
|
906
974
|
if (!filterResult) {
|
|
907
975
|
this.logger.debug('Job rejected: filter function declined', { txId: tx.id });
|
|
976
|
+
this.emitJobDecision('job:filtered', tx, serviceHandler, {
|
|
977
|
+
reason: 'function_filter',
|
|
978
|
+
filter: 'legacy_function',
|
|
979
|
+
});
|
|
908
980
|
return false;
|
|
909
981
|
}
|
|
910
982
|
}
|
|
@@ -930,6 +1002,10 @@ class Agent extends events_1.EventEmitter {
|
|
|
930
1002
|
txId: tx.id,
|
|
931
1003
|
reason: calculation.reason,
|
|
932
1004
|
});
|
|
1005
|
+
this.emitJobDecision('job:declined', tx, serviceHandler, {
|
|
1006
|
+
reason: 'pricing_rejected',
|
|
1007
|
+
detail: calculation.reason,
|
|
1008
|
+
});
|
|
933
1009
|
return false;
|
|
934
1010
|
}
|
|
935
1011
|
// Counter-offer: provider accepts at reduced margin (budget >= cost
|
|
@@ -1012,6 +1088,10 @@ class Agent extends events_1.EventEmitter {
|
|
|
1012
1088
|
catch (error) {
|
|
1013
1089
|
// If pricing calculation fails, reject the job for safety
|
|
1014
1090
|
this.logger.error('Pricing calculation failed, rejecting job', { txId: tx.id }, error);
|
|
1091
|
+
this.emitJobDecision('job:declined', tx, serviceHandler, {
|
|
1092
|
+
reason: 'pricing_error',
|
|
1093
|
+
detail: error instanceof Error ? error.message : String(error),
|
|
1094
|
+
});
|
|
1015
1095
|
return false;
|
|
1016
1096
|
}
|
|
1017
1097
|
}
|
|
@@ -1020,16 +1100,34 @@ class Agent extends events_1.EventEmitter {
|
|
|
1020
1100
|
if (autoAccept === undefined || autoAccept === true) {
|
|
1021
1101
|
return true;
|
|
1022
1102
|
}
|
|
1103
|
+
// Blanket opt-out: the agent is not auto-accepting anything. This is a mode,
|
|
1104
|
+
// not a per-job judgement, but we still surface it so a consumer counting
|
|
1105
|
+
// "every job we didn't take" (e.g. Sentinel's decline counter) sees it.
|
|
1023
1106
|
if (autoAccept === false) {
|
|
1107
|
+
this.emitJobDecision('job:filtered', tx, serviceHandler, {
|
|
1108
|
+
reason: 'auto_accept_disabled',
|
|
1109
|
+
filter: 'auto_accept',
|
|
1110
|
+
});
|
|
1024
1111
|
return false;
|
|
1025
1112
|
}
|
|
1026
|
-
// It's a function - evaluate it
|
|
1113
|
+
// It's a function - evaluate it (per-job programmatic gate).
|
|
1027
1114
|
if (typeof autoAccept === 'function') {
|
|
1028
1115
|
const job = this.createJobFromTransaction(tx, serviceHandler);
|
|
1029
|
-
|
|
1116
|
+
const decision = await autoAccept(job);
|
|
1117
|
+
if (!decision) {
|
|
1118
|
+
this.emitJobDecision('job:filtered', tx, serviceHandler, {
|
|
1119
|
+
reason: 'auto_accept_callback',
|
|
1120
|
+
filter: 'auto_accept',
|
|
1121
|
+
});
|
|
1122
|
+
}
|
|
1123
|
+
return decision;
|
|
1030
1124
|
}
|
|
1031
1125
|
return false;
|
|
1032
1126
|
}
|
|
1127
|
+
// NOTE: the pricing "counter-offer" path is intentionally NOT a decline/filter
|
|
1128
|
+
// event — there the agent RESPONDED with a signed counter price (a QUOTED
|
|
1129
|
+
// transition), it did not refuse the job. Emitting a decline there would
|
|
1130
|
+
// mislabel a negotiation as a rejection.
|
|
1033
1131
|
/**
|
|
1034
1132
|
* Create Job object from MockTransaction.
|
|
1035
1133
|
*
|
|
@@ -1043,6 +1141,66 @@ class Agent extends events_1.EventEmitter {
|
|
|
1043
1141
|
* callback path before this commit, MockRuntime-only test fixtures),
|
|
1044
1142
|
* fall back to the legacy `extractServiceName` so behavior is unchanged.
|
|
1045
1143
|
*/
|
|
1144
|
+
/**
|
|
1145
|
+
* Emit a `job:declined` (economic) or `job:filtered` (policy) event when a
|
|
1146
|
+
* polled job is rejected before acceptance.
|
|
1147
|
+
*
|
|
1148
|
+
* Before this, both rejection classes were swallowed into a single debug log
|
|
1149
|
+
* inside {@link shouldAutoAccept}, so a provider could only see "a job was
|
|
1150
|
+
* rejected" by parsing logs — consumers (e.g. Sentinel) had to monkeypatch
|
|
1151
|
+
* the agent to count declines. These events surface the decision with a
|
|
1152
|
+
* machine-readable `reason`.
|
|
1153
|
+
*
|
|
1154
|
+
* Semantics:
|
|
1155
|
+
* - `job:declined` — economic: budget/price out of band. The agent would
|
|
1156
|
+
* take it at a different price.
|
|
1157
|
+
* - `job:filtered` — policy: a custom predicate / rate-limit / legacy
|
|
1158
|
+
* filter rejected it. Price is irrelevant.
|
|
1159
|
+
*
|
|
1160
|
+
* Payload (second arg; first arg is the {@link Job} like other job:* events):
|
|
1161
|
+
* `{ jobId, requester, amount, reason, ...extra }`
|
|
1162
|
+
*
|
|
1163
|
+
* Best-effort: wrapped in try/catch so a throwing listener can NEVER break
|
|
1164
|
+
* the accept/decline decision path (which would wrongly drop or take a job).
|
|
1165
|
+
*/
|
|
1166
|
+
emitJobDecision(event, tx, serviceHandler, detail) {
|
|
1167
|
+
// These two events fire MID-DECISION (right before `shouldAutoAccept`
|
|
1168
|
+
// returns), so a misbehaving listener must never affect the accept/decline
|
|
1169
|
+
// outcome — neither by a synchronous throw nor by a rejected Promise from
|
|
1170
|
+
// an `async` listener (which a plain EventEmitter.emit would surface as an
|
|
1171
|
+
// unhandledRejection and could crash a long-running agent).
|
|
1172
|
+
//
|
|
1173
|
+
// We therefore dispatch manually over `rawListeners` (which preserves
|
|
1174
|
+
// `once()` self-removal semantics) and swallow BOTH failure modes:
|
|
1175
|
+
// * sync throw → caught by the try/catch around the call
|
|
1176
|
+
// * async reject → caught via `.catch()` on the returned thenable
|
|
1177
|
+
let job;
|
|
1178
|
+
try {
|
|
1179
|
+
job = serviceHandler ? this.createJobFromTransaction(tx, serviceHandler) : undefined;
|
|
1180
|
+
}
|
|
1181
|
+
catch {
|
|
1182
|
+
job = undefined;
|
|
1183
|
+
}
|
|
1184
|
+
const payload = {
|
|
1185
|
+
jobId: tx?.id,
|
|
1186
|
+
requester: tx?.requester,
|
|
1187
|
+
amount: this.convertAmountToNumber(tx?.amount),
|
|
1188
|
+
...detail,
|
|
1189
|
+
};
|
|
1190
|
+
for (const listener of this.rawListeners(event)) {
|
|
1191
|
+
try {
|
|
1192
|
+
const result = listener(job, payload);
|
|
1193
|
+
if (result && typeof result.then === 'function') {
|
|
1194
|
+
result.catch(() => {
|
|
1195
|
+
/* async listener rejection — never propagates past the decision */
|
|
1196
|
+
});
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
catch {
|
|
1200
|
+
/* sync listener throw — swallowed; the decision continues unaffected */
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
}
|
|
1046
1204
|
createJobFromTransaction(tx, matched) {
|
|
1047
1205
|
return {
|
|
1048
1206
|
id: tx.id,
|
|
@@ -1278,6 +1436,7 @@ class Agent extends events_1.EventEmitter {
|
|
|
1278
1436
|
}
|
|
1279
1437
|
// Security: Remove from active jobs on SUCCESS
|
|
1280
1438
|
this.activeJobs.delete(job.id);
|
|
1439
|
+
this.jobAttempts.delete(job.id);
|
|
1281
1440
|
// Update stats
|
|
1282
1441
|
this._stats.jobsCompleted++;
|
|
1283
1442
|
const duration = Date.now() - startTime;
|
|
@@ -1379,7 +1538,21 @@ class Agent extends events_1.EventEmitter {
|
|
|
1379
1538
|
this.logger.warn('Job failed with a permanent kernel revert — marking processed so polling does not retry forever', { jobId: job.id, reason: errorMessage.slice(0, 200) });
|
|
1380
1539
|
}
|
|
1381
1540
|
else {
|
|
1382
|
-
|
|
1541
|
+
// Transient by default — retry on the next poll. But a non-kernel
|
|
1542
|
+
// failure that keeps recurring (e.g. the handler throwing on bad input)
|
|
1543
|
+
// is effectively permanent; after MAX_JOB_ATTEMPTS, stop retrying so we
|
|
1544
|
+
// don't spin every poll cycle. The buyer stays protected by escrow
|
|
1545
|
+
// (dispute / deadline refunds).
|
|
1546
|
+
const attempts = (this.jobAttempts.get(job.id) ?? 0) + 1;
|
|
1547
|
+
if (attempts >= Agent.MAX_JOB_ATTEMPTS) {
|
|
1548
|
+
this.processedJobs.set(job.id, true);
|
|
1549
|
+
this.jobAttempts.delete(job.id);
|
|
1550
|
+
this.logger.warn('Job failed repeatedly — marking processed after max attempts so polling does not retry forever', { jobId: job.id, attempts, reason: errorMessage.slice(0, 200) });
|
|
1551
|
+
}
|
|
1552
|
+
else {
|
|
1553
|
+
this.jobAttempts.set(job.id, attempts);
|
|
1554
|
+
this.processedJobs.delete(job.id);
|
|
1555
|
+
}
|
|
1383
1556
|
}
|
|
1384
1557
|
this._stats.jobsFailed++;
|
|
1385
1558
|
this._stats.successRate =
|
|
@@ -1794,4 +1967,5 @@ class Agent extends events_1.EventEmitter {
|
|
|
1794
1967
|
}
|
|
1795
1968
|
}
|
|
1796
1969
|
exports.Agent = Agent;
|
|
1970
|
+
Agent.MAX_JOB_ATTEMPTS = 3;
|
|
1797
1971
|
//# sourceMappingURL=Agent.js.map
|