triage-ows 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +786 -0
  2. package/bin/triage-ows.js +218 -0
  3. package/bin/triage-policy.js +66 -0
  4. package/bin/triage-server.js +4 -0
  5. package/dashboard-dist/assets/index-Dnhi_dJQ.css +2 -0
  6. package/dashboard-dist/assets/index-g_2MwC-o.js +9 -0
  7. package/dashboard-dist/favicon.svg +7 -0
  8. package/dashboard-dist/index.html +16 -0
  9. package/dist/config.d.ts +32 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +61 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/emitter.d.ts +7 -0
  14. package/dist/emitter.d.ts.map +1 -0
  15. package/dist/emitter.js +41 -0
  16. package/dist/emitter.js.map +1 -0
  17. package/dist/index.d.ts +17 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +55 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/scoring/behavior.d.ts +3 -0
  22. package/dist/scoring/behavior.d.ts.map +1 -0
  23. package/dist/scoring/behavior.js +13 -0
  24. package/dist/scoring/behavior.js.map +1 -0
  25. package/dist/scoring/compliance.d.ts +3 -0
  26. package/dist/scoring/compliance.d.ts.map +1 -0
  27. package/dist/scoring/compliance.js +11 -0
  28. package/dist/scoring/compliance.js.map +1 -0
  29. package/dist/scoring/identity.d.ts +3 -0
  30. package/dist/scoring/identity.d.ts.map +1 -0
  31. package/dist/scoring/identity.js +16 -0
  32. package/dist/scoring/identity.js.map +1 -0
  33. package/dist/scoring/index.d.ts +10 -0
  34. package/dist/scoring/index.d.ts.map +1 -0
  35. package/dist/scoring/index.js +35 -0
  36. package/dist/scoring/index.js.map +1 -0
  37. package/dist/scoring/limits.d.ts +7 -0
  38. package/dist/scoring/limits.d.ts.map +1 -0
  39. package/dist/scoring/limits.js +9 -0
  40. package/dist/scoring/limits.js.map +1 -0
  41. package/dist/scoring/network.d.ts +3 -0
  42. package/dist/scoring/network.d.ts.map +1 -0
  43. package/dist/scoring/network.js +16 -0
  44. package/dist/scoring/network.js.map +1 -0
  45. package/dist/scoring/onchain.d.ts +4 -0
  46. package/dist/scoring/onchain.d.ts.map +1 -0
  47. package/dist/scoring/onchain.js +35 -0
  48. package/dist/scoring/onchain.js.map +1 -0
  49. package/dist/scoring/risk.d.ts +3 -0
  50. package/dist/scoring/risk.d.ts.map +1 -0
  51. package/dist/scoring/risk.js +22 -0
  52. package/dist/scoring/risk.js.map +1 -0
  53. package/dist/server.d.ts +6 -0
  54. package/dist/server.d.ts.map +1 -0
  55. package/dist/server.js +405 -0
  56. package/dist/server.js.map +1 -0
  57. package/dist/store.d.ts +13 -0
  58. package/dist/store.d.ts.map +1 -0
  59. package/dist/store.js +177 -0
  60. package/dist/store.js.map +1 -0
  61. package/dist/types.d.ts +107 -0
  62. package/dist/types.d.ts.map +1 -0
  63. package/dist/types.js +26 -0
  64. package/dist/types.js.map +1 -0
  65. package/dist/webbotauth.d.ts +38 -0
  66. package/dist/webbotauth.d.ts.map +1 -0
  67. package/dist/webbotauth.js +120 -0
  68. package/dist/webbotauth.js.map +1 -0
  69. package/dist/xmtp.d.ts +6 -0
  70. package/dist/xmtp.d.ts.map +1 -0
  71. package/dist/xmtp.js +161 -0
  72. package/dist/xmtp.js.map +1 -0
  73. package/package.json +58 -0
  74. package/policy-template.json +14 -0
  75. package/src/config.ts +86 -0
  76. package/src/emitter.ts +40 -0
  77. package/src/index.ts +18 -0
  78. package/src/scoring/behavior.ts +15 -0
  79. package/src/scoring/compliance.ts +12 -0
  80. package/src/scoring/identity.ts +12 -0
  81. package/src/scoring/index.ts +31 -0
  82. package/src/scoring/limits.ts +10 -0
  83. package/src/scoring/network.ts +18 -0
  84. package/src/scoring/onchain.ts +44 -0
  85. package/src/scoring/risk.ts +25 -0
  86. package/src/server.ts +410 -0
  87. package/src/store.ts +197 -0
  88. package/src/types.ts +137 -0
  89. package/src/webbotauth.ts +128 -0
  90. package/src/xmtp.ts +188 -0
  91. package/triage.config.example.json +22 -0
package/dist/config.js ADDED
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadConfig = loadConfig;
4
+ exports.getConfig = getConfig;
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
7
+ const types_1 = require("./types");
8
+ const DEFAULT_CONFIG = {
9
+ scoreBands: [
10
+ { name: 'Sovereign', min: 80, dailyLimit: 1000, perTxLimit: 500, color: '#fff8e1' },
11
+ { name: 'Trusted', min: 60, dailyLimit: 200, perTxLimit: 100, color: '#ffd700' },
12
+ { name: 'Building', min: 40, dailyLimit: 50, perTxLimit: 25, color: '#4caf50' },
13
+ { name: 'Cautious', min: 20, dailyLimit: 10, perTxLimit: 5, color: '#00bcd4' },
14
+ { name: 'Restricted', min: 1, dailyLimit: 2, perTxLimit: 1, color: '#2196f3' },
15
+ { name: 'Frozen', min: 0, dailyLimit: 0, perTxLimit: 0, color: '#1a1a4e' },
16
+ ],
17
+ warningThreshold: 0.8,
18
+ xmtp: { enabled: true },
19
+ worldId: { enabled: true },
20
+ webBotAuth: { enabled: true },
21
+ networkScore: { enabled: true },
22
+ scoring: { overrideBoost: 3, maxFrequencyPenalty: 10, inactivityDecayRate: 0.5 },
23
+ port: 4021,
24
+ dashboardEnabled: true,
25
+ };
26
+ let _config = { ...DEFAULT_CONFIG };
27
+ function loadConfig(configPath) {
28
+ const path = configPath || process.env.TRIAGE_CONFIG_PATH || (0, path_1.join)(process.cwd(), 'triage.config.json');
29
+ try {
30
+ const raw = (0, fs_1.readFileSync)(path, 'utf-8');
31
+ const parsed = JSON.parse(raw);
32
+ _config = {
33
+ ...DEFAULT_CONFIG,
34
+ ...parsed,
35
+ xmtp: { ...DEFAULT_CONFIG.xmtp, ...parsed.xmtp },
36
+ worldId: { ...DEFAULT_CONFIG.worldId, ...parsed.worldId },
37
+ webBotAuth: { ...DEFAULT_CONFIG.webBotAuth, ...parsed.webBotAuth },
38
+ networkScore: { ...DEFAULT_CONFIG.networkScore, ...parsed.networkScore },
39
+ scoring: { ...DEFAULT_CONFIG.scoring, ...parsed.scoring },
40
+ };
41
+ if (parsed.scoreBands) {
42
+ _config.scoreBands = parsed.scoreBands;
43
+ (0, types_1.updateSpendingTiers)(parsed.scoreBands.map(b => ({
44
+ name: b.name,
45
+ color: b.color || '#666',
46
+ dailyLimit: b.dailyLimit,
47
+ perTxLimit: b.perTxLimit,
48
+ minScore: b.min,
49
+ })));
50
+ }
51
+ console.log(`[Config] Loaded from ${path}`);
52
+ }
53
+ catch {
54
+ console.log('[Config] No triage.config.json found — using defaults');
55
+ }
56
+ return _config;
57
+ }
58
+ function getConfig() {
59
+ return _config;
60
+ }
61
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { TriageEvent } from './types';
2
+ export declare function startWebSocketServer(port: number): void;
3
+ export declare function attachWebSocketToServer(server: {
4
+ on: (event: string, handler: (...args: any[]) => void) => void;
5
+ }): void;
6
+ export declare function emitEvent(event: TriageEvent): void;
7
+ //# sourceMappingURL=emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,QAGhD;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;CAAE,QAWjH;AAUD,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,QAK3C"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startWebSocketServer = startWebSocketServer;
4
+ exports.attachWebSocketToServer = attachWebSocketToServer;
5
+ exports.emitEvent = emitEvent;
6
+ const ws_1 = require("ws");
7
+ let wss = null;
8
+ const clients = new Set();
9
+ function startWebSocketServer(port) {
10
+ wss = new ws_1.WebSocketServer({ port });
11
+ wireConnections();
12
+ }
13
+ function attachWebSocketToServer(server) {
14
+ wss = new ws_1.WebSocketServer({ noServer: true });
15
+ wireConnections();
16
+ server.on('upgrade', (request, socket, head) => {
17
+ const url = new URL(request.url || '/', `http://${request.headers.host}`);
18
+ if (url.pathname === '/ws') {
19
+ wss.handleUpgrade(request, socket, head, (ws) => wss.emit('connection', ws, request));
20
+ }
21
+ else {
22
+ socket.destroy();
23
+ }
24
+ });
25
+ }
26
+ function wireConnections() {
27
+ if (!wss)
28
+ return;
29
+ wss.on('connection', (ws) => {
30
+ clients.add(ws);
31
+ ws.on('close', () => clients.delete(ws));
32
+ });
33
+ }
34
+ function emitEvent(event) {
35
+ const data = JSON.stringify(event);
36
+ for (const client of clients) {
37
+ if (client.readyState === ws_1.WebSocket.OPEN)
38
+ client.send(data);
39
+ }
40
+ }
41
+ //# sourceMappingURL=emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":";;AAQA,oDAGC;AAED,0DAWC;AAUD,8BAKC;AAvCD,2BAA+C;AAK/C,IAAI,GAAG,GAA2B,IAAI,CAAA;AACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAa,CAAA;AAEpC,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,GAAG,GAAG,IAAI,oBAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IACnC,eAAe,EAAE,CAAA;AACnB,CAAC;AAED,SAAgB,uBAAuB,CAAC,MAA0E;IAChH,GAAG,GAAG,IAAI,oBAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7C,eAAe,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAwB,EAAE,MAAc,EAAE,IAAY,EAAE,EAAE;QAC9E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACzE,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC3B,GAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;QACzF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,EAAE,CAAA;QAClB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC,GAAG;QAAE,OAAM;IAChB,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAgB,SAAS,CAAC,KAAkB;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,UAAU,KAAK,cAAS,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ export { app, startServer, BASE_SEPOLIA, USDC_BASE_SEPOLIA } from './server';
2
+ export { computeTrustScore } from './scoring/index';
3
+ export { getSpendingLimits } from './scoring/limits';
4
+ export { identityScore } from './scoring/identity';
5
+ export { onChainScore, refreshOnChainData } from './scoring/onchain';
6
+ export { behaviorScore } from './scoring/behavior';
7
+ export { complianceScore } from './scoring/compliance';
8
+ export { networkScore } from './scoring/network';
9
+ export { riskPenalty } from './scoring/risk';
10
+ export { getOrCreateAgent, getAgent, getAllAgents, getTopAgents, recordApproval, recordDenial, recordOverride, addVerifiedHuman, isVerifiedHuman, setOWSWallet, setWebBotAuthVerified } from './store';
11
+ export { verifyWebBotAuth, registerAgentPublicKey, parseSignatureInput } from './webbotauth';
12
+ export { emitEvent, startWebSocketServer, attachWebSocketToServer } from './emitter';
13
+ export { loadConfig, getConfig } from './config';
14
+ export type { TriageConfig } from './config';
15
+ export { getTierForScore, SPENDING_TIERS, updateSpendingTiers } from './types';
16
+ export type { PolicyContext, PolicyResult, TrustBreakdown, SpendingTier, AgentProfile, PolicyDecisionEvent, TrustChangeEvent, BudgetWarningEvent, TriageEvent } from './types';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AACtM,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAC5F,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAGpF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAC9E,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateSpendingTiers = exports.SPENDING_TIERS = exports.getTierForScore = exports.getConfig = exports.loadConfig = exports.attachWebSocketToServer = exports.startWebSocketServer = exports.emitEvent = exports.parseSignatureInput = exports.registerAgentPublicKey = exports.verifyWebBotAuth = exports.setWebBotAuthVerified = exports.setOWSWallet = exports.isVerifiedHuman = exports.addVerifiedHuman = exports.recordOverride = exports.recordDenial = exports.recordApproval = exports.getTopAgents = exports.getAllAgents = exports.getAgent = exports.getOrCreateAgent = exports.riskPenalty = exports.networkScore = exports.complianceScore = exports.behaviorScore = exports.refreshOnChainData = exports.onChainScore = exports.identityScore = exports.getSpendingLimits = exports.computeTrustScore = exports.USDC_BASE_SEPOLIA = exports.BASE_SEPOLIA = exports.startServer = exports.app = void 0;
4
+ var server_1 = require("./server");
5
+ Object.defineProperty(exports, "app", { enumerable: true, get: function () { return server_1.app; } });
6
+ Object.defineProperty(exports, "startServer", { enumerable: true, get: function () { return server_1.startServer; } });
7
+ Object.defineProperty(exports, "BASE_SEPOLIA", { enumerable: true, get: function () { return server_1.BASE_SEPOLIA; } });
8
+ Object.defineProperty(exports, "USDC_BASE_SEPOLIA", { enumerable: true, get: function () { return server_1.USDC_BASE_SEPOLIA; } });
9
+ var index_1 = require("./scoring/index");
10
+ Object.defineProperty(exports, "computeTrustScore", { enumerable: true, get: function () { return index_1.computeTrustScore; } });
11
+ var limits_1 = require("./scoring/limits");
12
+ Object.defineProperty(exports, "getSpendingLimits", { enumerable: true, get: function () { return limits_1.getSpendingLimits; } });
13
+ var identity_1 = require("./scoring/identity");
14
+ Object.defineProperty(exports, "identityScore", { enumerable: true, get: function () { return identity_1.identityScore; } });
15
+ var onchain_1 = require("./scoring/onchain");
16
+ Object.defineProperty(exports, "onChainScore", { enumerable: true, get: function () { return onchain_1.onChainScore; } });
17
+ Object.defineProperty(exports, "refreshOnChainData", { enumerable: true, get: function () { return onchain_1.refreshOnChainData; } });
18
+ var behavior_1 = require("./scoring/behavior");
19
+ Object.defineProperty(exports, "behaviorScore", { enumerable: true, get: function () { return behavior_1.behaviorScore; } });
20
+ var compliance_1 = require("./scoring/compliance");
21
+ Object.defineProperty(exports, "complianceScore", { enumerable: true, get: function () { return compliance_1.complianceScore; } });
22
+ var network_1 = require("./scoring/network");
23
+ Object.defineProperty(exports, "networkScore", { enumerable: true, get: function () { return network_1.networkScore; } });
24
+ var risk_1 = require("./scoring/risk");
25
+ Object.defineProperty(exports, "riskPenalty", { enumerable: true, get: function () { return risk_1.riskPenalty; } });
26
+ var store_1 = require("./store");
27
+ Object.defineProperty(exports, "getOrCreateAgent", { enumerable: true, get: function () { return store_1.getOrCreateAgent; } });
28
+ Object.defineProperty(exports, "getAgent", { enumerable: true, get: function () { return store_1.getAgent; } });
29
+ Object.defineProperty(exports, "getAllAgents", { enumerable: true, get: function () { return store_1.getAllAgents; } });
30
+ Object.defineProperty(exports, "getTopAgents", { enumerable: true, get: function () { return store_1.getTopAgents; } });
31
+ Object.defineProperty(exports, "recordApproval", { enumerable: true, get: function () { return store_1.recordApproval; } });
32
+ Object.defineProperty(exports, "recordDenial", { enumerable: true, get: function () { return store_1.recordDenial; } });
33
+ Object.defineProperty(exports, "recordOverride", { enumerable: true, get: function () { return store_1.recordOverride; } });
34
+ Object.defineProperty(exports, "addVerifiedHuman", { enumerable: true, get: function () { return store_1.addVerifiedHuman; } });
35
+ Object.defineProperty(exports, "isVerifiedHuman", { enumerable: true, get: function () { return store_1.isVerifiedHuman; } });
36
+ Object.defineProperty(exports, "setOWSWallet", { enumerable: true, get: function () { return store_1.setOWSWallet; } });
37
+ Object.defineProperty(exports, "setWebBotAuthVerified", { enumerable: true, get: function () { return store_1.setWebBotAuthVerified; } });
38
+ var webbotauth_1 = require("./webbotauth");
39
+ Object.defineProperty(exports, "verifyWebBotAuth", { enumerable: true, get: function () { return webbotauth_1.verifyWebBotAuth; } });
40
+ Object.defineProperty(exports, "registerAgentPublicKey", { enumerable: true, get: function () { return webbotauth_1.registerAgentPublicKey; } });
41
+ Object.defineProperty(exports, "parseSignatureInput", { enumerable: true, get: function () { return webbotauth_1.parseSignatureInput; } });
42
+ var emitter_1 = require("./emitter");
43
+ Object.defineProperty(exports, "emitEvent", { enumerable: true, get: function () { return emitter_1.emitEvent; } });
44
+ Object.defineProperty(exports, "startWebSocketServer", { enumerable: true, get: function () { return emitter_1.startWebSocketServer; } });
45
+ Object.defineProperty(exports, "attachWebSocketToServer", { enumerable: true, get: function () { return emitter_1.attachWebSocketToServer; } });
46
+ // XMTP exports are intentionally omitted — @xmtp/node-sdk requires native bindings.
47
+ // Import lazily: const xmtp = await import('triage-ows/dist/xmtp')
48
+ var config_1 = require("./config");
49
+ Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_1.loadConfig; } });
50
+ Object.defineProperty(exports, "getConfig", { enumerable: true, get: function () { return config_1.getConfig; } });
51
+ var types_1 = require("./types");
52
+ Object.defineProperty(exports, "getTierForScore", { enumerable: true, get: function () { return types_1.getTierForScore; } });
53
+ Object.defineProperty(exports, "SPENDING_TIERS", { enumerable: true, get: function () { return types_1.SPENDING_TIERS; } });
54
+ Object.defineProperty(exports, "updateSpendingTiers", { enumerable: true, get: function () { return types_1.updateSpendingTiers; } });
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAA4E;AAAnE,6FAAA,GAAG,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,sGAAA,YAAY,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAC1D,yCAAmD;AAA1C,0GAAA,iBAAiB,OAAA;AAC1B,2CAAoD;AAA3C,2GAAA,iBAAiB,OAAA;AAC1B,+CAAkD;AAAzC,yGAAA,aAAa,OAAA;AACtB,6CAAoE;AAA3D,uGAAA,YAAY,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AACzC,+CAAkD;AAAzC,yGAAA,aAAa,OAAA;AACtB,mDAAsD;AAA7C,6GAAA,eAAe,OAAA;AACxB,6CAAgD;AAAvC,uGAAA,YAAY,OAAA;AACrB,uCAA4C;AAAnC,mGAAA,WAAW,OAAA;AACpB,iCAAsM;AAA7L,yGAAA,gBAAgB,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,uGAAA,cAAc,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,uGAAA,cAAc,OAAA;AAAE,yGAAA,gBAAgB,OAAA;AAAE,wGAAA,eAAe,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,8GAAA,qBAAqB,OAAA;AACrL,2CAA4F;AAAnF,8GAAA,gBAAgB,OAAA;AAAE,oHAAA,sBAAsB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AACtE,qCAAoF;AAA3E,oGAAA,SAAS,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AACjE,oFAAoF;AACpF,mEAAmE;AACnE,mCAAgD;AAAvC,oGAAA,UAAU,OAAA;AAAE,mGAAA,SAAS,OAAA;AAE9B,iCAA8E;AAArE,wGAAA,eAAe,OAAA;AAAE,uGAAA,cAAc,OAAA;AAAE,4GAAA,mBAAmB,OAAA"}
@@ -0,0 +1,3 @@
1
+ import type { AgentProfile } from '../types';
2
+ export declare function behaviorScore(agent: AgentProfile): number;
3
+ //# sourceMappingURL=behavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behavior.d.ts","sourceRoot":"","sources":["../../src/scoring/behavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAYzD"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.behaviorScore = behaviorScore;
4
+ function behaviorScore(agent) {
5
+ const successRate = Math.min(5, (agent.successfulRequests / Math.max(1, agent.totalRequests)) * 5);
6
+ const now = Date.now();
7
+ const last60s = agent.requestTimestamps.filter(t => now - t < 60_000).length;
8
+ const pacing = last60s > 15 ? 0 : last60s > 5 ? 2 : 5;
9
+ const cleanDays = Math.min(5, agent.consecutiveCleanDays * 0.5);
10
+ const concentration = agent.counterparties.length >= 5 ? 5 : agent.counterparties.length >= 2 ? 2 : 0;
11
+ return Math.min(20, successRate + pacing + cleanDays + concentration);
12
+ }
13
+ //# sourceMappingURL=behavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behavior.js","sourceRoot":"","sources":["../../src/scoring/behavior.ts"],"names":[],"mappings":";;AAEA,sCAYC;AAZD,SAAgB,aAAa,CAAC,KAAmB;IAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAElG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAA;IAC5E,MAAM,MAAM,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAErD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,CAAA;IAE/D,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAErG,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,CAAA;AACvE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AgentProfile } from '../types';
2
+ export declare function complianceScore(agent: AgentProfile): number;
3
+ //# sourceMappingURL=compliance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.d.ts","sourceRoot":"","sources":["../../src/scoring/compliance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAS3D"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.complianceScore = complianceScore;
4
+ function complianceScore(agent) {
5
+ const total = agent.totalApproved + agent.totalDenied;
6
+ const approvalRate = Math.min(5, (agent.totalApproved / Math.max(1, total)) * 5);
7
+ const streak = Math.min(5, agent.consecutiveApprovals * 0.25);
8
+ const overrideFreq = 5 - Math.min(5, agent.humanOverrides * 1.67);
9
+ return Math.min(15, approvalRate + streak + overrideFreq);
10
+ }
11
+ //# sourceMappingURL=compliance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.js","sourceRoot":"","sources":["../../src/scoring/compliance.ts"],"names":[],"mappings":";;AAEA,0CASC;AATD,SAAgB,eAAe,CAAC,KAAmB;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,WAAW,CAAA;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAEhF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;IAE7D,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAEjE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,GAAG,YAAY,CAAC,CAAA;AAC3D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AgentProfile } from '../types';
2
+ export declare function identityScore(agent: AgentProfile): number;
3
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/scoring/identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CASzD"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.identityScore = identityScore;
4
+ function identityScore(agent) {
5
+ let score = 4; // base: fresh wallet
6
+ if (agent.totalRequests > 0)
7
+ score = 12; // funded with tx history
8
+ if (agent.isOWSWallet && agent.totalApproved > 0)
9
+ score = 20; // OWS wallet with policy trail
10
+ if (agent.webBotAuthVerified)
11
+ score += 4; // +4 request-level crypto identity
12
+ if (agent.worldIdVerified)
13
+ score += 11; // +11 human verified
14
+ return Math.min(35, score);
15
+ }
16
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/scoring/identity.ts"],"names":[],"mappings":";;AAEA,sCASC;AATD,SAAgB,aAAa,CAAC,KAAmB;IAC/C,IAAI,KAAK,GAAG,CAAC,CAAA,CAAC,qBAAqB;IAEnC,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC;QAAE,KAAK,GAAG,EAAE,CAAA,CAAC,yBAAyB;IACjE,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC;QAAE,KAAK,GAAG,EAAE,CAAA,CAAC,+BAA+B;IAC5F,IAAI,KAAK,CAAC,kBAAkB;QAAE,KAAK,IAAI,CAAC,CAAA,CAAC,mCAAmC;IAC5E,IAAI,KAAK,CAAC,eAAe;QAAE,KAAK,IAAI,EAAE,CAAA,CAAC,qBAAqB;IAE5D,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AAC5B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { AgentProfile, TrustBreakdown } from '../types';
2
+ export declare function computeTrustScore(agent: AgentProfile, getAgent: (addr: string) => AgentProfile | undefined): TrustBreakdown;
3
+ export { identityScore } from './identity';
4
+ export { onChainScore } from './onchain';
5
+ export { behaviorScore } from './behavior';
6
+ export { complianceScore } from './compliance';
7
+ export { networkScore } from './network';
8
+ export { riskPenalty } from './risk';
9
+ export { getSpendingLimits } from './limits';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scoring/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAQ5D,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,GACnD,cAAc,CAWhB;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSpendingLimits = exports.riskPenalty = exports.networkScore = exports.complianceScore = exports.behaviorScore = exports.onChainScore = exports.identityScore = void 0;
4
+ exports.computeTrustScore = computeTrustScore;
5
+ const identity_1 = require("./identity");
6
+ const onchain_1 = require("./onchain");
7
+ const behavior_1 = require("./behavior");
8
+ const compliance_1 = require("./compliance");
9
+ const network_1 = require("./network");
10
+ const risk_1 = require("./risk");
11
+ function computeTrustScore(agent, getAgent) {
12
+ const identity = (0, identity_1.identityScore)(agent);
13
+ const onChain = (0, onchain_1.onChainScore)(agent);
14
+ const behavior = (0, behavior_1.behaviorScore)(agent);
15
+ const compliance = (0, compliance_1.complianceScore)(agent);
16
+ const network = (0, network_1.networkScore)(agent, getAgent);
17
+ const risk = (0, risk_1.riskPenalty)(agent);
18
+ const total = Math.max(0, Math.min(100, identity + onChain + behavior + compliance + network - risk));
19
+ return { identity, onChain, behavior, compliance, network, risk, total };
20
+ }
21
+ var identity_2 = require("./identity");
22
+ Object.defineProperty(exports, "identityScore", { enumerable: true, get: function () { return identity_2.identityScore; } });
23
+ var onchain_2 = require("./onchain");
24
+ Object.defineProperty(exports, "onChainScore", { enumerable: true, get: function () { return onchain_2.onChainScore; } });
25
+ var behavior_2 = require("./behavior");
26
+ Object.defineProperty(exports, "behaviorScore", { enumerable: true, get: function () { return behavior_2.behaviorScore; } });
27
+ var compliance_2 = require("./compliance");
28
+ Object.defineProperty(exports, "complianceScore", { enumerable: true, get: function () { return compliance_2.complianceScore; } });
29
+ var network_2 = require("./network");
30
+ Object.defineProperty(exports, "networkScore", { enumerable: true, get: function () { return network_2.networkScore; } });
31
+ var risk_2 = require("./risk");
32
+ Object.defineProperty(exports, "riskPenalty", { enumerable: true, get: function () { return risk_2.riskPenalty; } });
33
+ var limits_1 = require("./limits");
34
+ Object.defineProperty(exports, "getSpendingLimits", { enumerable: true, get: function () { return limits_1.getSpendingLimits; } });
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scoring/index.ts"],"names":[],"mappings":";;;AAQA,8CAcC;AArBD,yCAA0C;AAC1C,uCAAwC;AACxC,yCAA0C;AAC1C,6CAA8C;AAC9C,uCAAwC;AACxC,iCAAoC;AAEpC,SAAgB,iBAAiB,CAC/B,KAAmB,EACnB,QAAoD;IAEpD,MAAM,QAAQ,GAAG,IAAA,wBAAa,EAAC,KAAK,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,KAAK,CAAC,CAAA;IACnC,MAAM,QAAQ,GAAG,IAAA,wBAAa,EAAC,KAAK,CAAC,CAAA;IACrC,MAAM,UAAU,GAAG,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAA;IACzC,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAG,IAAA,kBAAW,EAAC,KAAK,CAAC,CAAA;IAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAA;IAErG,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AAC1E,CAAC;AAED,uCAA0C;AAAjC,yGAAA,aAAa,OAAA;AACtB,qCAAwC;AAA/B,uGAAA,YAAY,OAAA;AACrB,uCAA0C;AAAjC,yGAAA,aAAa,OAAA;AACtB,2CAA8C;AAArC,6GAAA,eAAe,OAAA;AACxB,qCAAwC;AAA/B,uGAAA,YAAY,OAAA;AACrB,+BAAoC;AAA3B,mGAAA,WAAW,OAAA;AACpB,mCAA4C;AAAnC,2GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,7 @@
1
+ import { type SpendingTier } from '../types';
2
+ export declare function getSpendingLimits(score: number): {
3
+ tier: SpendingTier;
4
+ dailyLimit: number;
5
+ perTxLimit: number;
6
+ };
7
+ //# sourceMappingURL=limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/scoring/limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,UAAU,CAAA;AAE7D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG;IAChD,IAAI,EAAE,YAAY,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB,CAGA"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSpendingLimits = getSpendingLimits;
4
+ const types_1 = require("../types");
5
+ function getSpendingLimits(score) {
6
+ const tier = (0, types_1.getTierForScore)(score);
7
+ return { tier, dailyLimit: tier.dailyLimit, perTxLimit: tier.perTxLimit };
8
+ }
9
+ //# sourceMappingURL=limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/scoring/limits.ts"],"names":[],"mappings":";;AAEA,8CAOC;AATD,oCAA6D;AAE7D,SAAgB,iBAAiB,CAAC,KAAa;IAK7C,MAAM,IAAI,GAAG,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAA;IACnC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAA;AAC3E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AgentProfile } from '../types';
2
+ export declare function networkScore(agent: AgentProfile, getAgent: (addr: string) => AgentProfile | undefined): number;
3
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/scoring/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAG5C,wBAAgB,YAAY,CAC1B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,GACnD,MAAM,CAWR"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.networkScore = networkScore;
4
+ const config_1 = require("../config");
5
+ function networkScore(agent, getAgent) {
6
+ if (!(0, config_1.getConfig)().networkScore?.enabled)
7
+ return 0;
8
+ const known = agent.counterparties
9
+ .map(addr => getAgent(addr))
10
+ .filter((a) => a !== undefined);
11
+ if (known.length === 0)
12
+ return 0;
13
+ const avg = known.reduce((sum, a) => sum + a.trustScore, 0) / known.length;
14
+ return Math.min(5, avg / 20);
15
+ }
16
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/scoring/network.ts"],"names":[],"mappings":";;AAGA,oCAcC;AAhBD,sCAAqC;AAErC,SAAgB,YAAY,CAC1B,KAAmB,EACnB,QAAoD;IAEpD,IAAI,CAAC,IAAA,kBAAS,GAAE,CAAC,YAAY,EAAE,OAAO;QAAE,OAAO,CAAC,CAAA;IAEhD,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc;SAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAA;IAEpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IAEhC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;IAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AgentProfile } from '../types';
2
+ export declare function refreshOnChainData(address: string): Promise<void>;
3
+ export declare function onChainScore(agent: AgentProfile): number;
4
+ //# sourceMappingURL=onchain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onchain.d.ts","sourceRoot":"","sources":["../../src/scoring/onchain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAoB5C,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAaxD"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.refreshOnChainData = refreshOnChainData;
4
+ exports.onChainScore = onChainScore;
5
+ const viem_1 = require("viem");
6
+ const chains_1 = require("viem/chains");
7
+ const CACHE_TTL = 10 * 60 * 1000; // 10 minutes
8
+ const balanceCache = new Map();
9
+ function getRpcClient() {
10
+ return (0, viem_1.createPublicClient)({
11
+ chain: chains_1.baseSepolia,
12
+ transport: (0, viem_1.http)(process.env.BASE_SEPOLIA_RPC_URL || 'https://sepolia.base.org'),
13
+ });
14
+ }
15
+ async function refreshOnChainData(address) {
16
+ try {
17
+ const client = getRpcClient();
18
+ const raw = await client.getBalance({ address: address });
19
+ balanceCache.set(address, { balance: Number(raw), fetchedAt: Date.now() });
20
+ }
21
+ catch {
22
+ // On failure, keep old cached value (or leave absent — score will default to 0)
23
+ }
24
+ }
25
+ function onChainScore(agent) {
26
+ const monthsOld = (Date.now() - agent.createdAt) / (30 * 24 * 60 * 60 * 1000);
27
+ const age = Math.min(5, monthsOld * 0.5);
28
+ const txCount = Math.min(5, Math.log10(Math.max(1, agent.totalRequests)) * 2.5);
29
+ const diversity = Math.min(5, (agent.counterparties.length / 10) * 5);
30
+ const cached = balanceCache.get(agent.address);
31
+ const fresh = cached && (Date.now() - cached.fetchedAt) < CACHE_TTL;
32
+ const balance = fresh ? (cached.balance > 0 ? 5 : 0) : 0;
33
+ return Math.min(20, age + txCount + diversity + balance);
34
+ }
35
+ //# sourceMappingURL=onchain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onchain.js","sourceRoot":"","sources":["../../src/scoring/onchain.ts"],"names":[],"mappings":";;AAoBA,gDAQC;AAED,oCAaC;AA1CD,+BAA+C;AAC/C,wCAAyC;AAEzC,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,aAAa;AAO9C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAA;AAErD,SAAS,YAAY;IACnB,OAAO,IAAA,yBAAkB,EAAC;QACxB,KAAK,EAAE,oBAAW;QAClB,SAAS,EAAE,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,0BAA0B,CAAC;KAChF,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,OAAe;IACtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;QAC7B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,OAAwB,EAAE,CAAC,CAAA;QAC1E,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,gFAAgF;IAClF,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,KAAmB;IAC9C,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,CAAA;IAExC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAE/E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAErE,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;IACnE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAExD,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,CAAA;AAC1D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AgentProfile } from '../types';
2
+ export declare function riskPenalty(agent: AgentProfile): number;
3
+ //# sourceMappingURL=risk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risk.d.ts","sourceRoot":"","sources":["../../src/scoring/risk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAI5C,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAoBvD"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.riskPenalty = riskPenalty;
4
+ const types_1 = require("../types");
5
+ const config_1 = require("../config");
6
+ function riskPenalty(agent) {
7
+ const cfg = (0, config_1.getConfig)().scoring;
8
+ const now = Date.now();
9
+ const last60s = agent.requestTimestamps.filter(t => now - t < 60_000).length;
10
+ const maxFreqPenalty = cfg?.maxFrequencyPenalty ?? 10;
11
+ const freqSpike = last60s > 15 ? maxFreqPenalty : last60s > 10 ? Math.min(7, maxFreqPenalty) : last60s > 5 ? Math.min(3, maxFreqPenalty) : 0;
12
+ const failedTx = Math.min(5, agent.failedRequests * 2);
13
+ const hoursInactive = (now - agent.lastActive) / (60 * 60 * 1000);
14
+ const decayRate = cfg?.inactivityDecayRate ?? 0.5;
15
+ const inactivity = Math.min(5, hoursInactive * decayRate);
16
+ const dailyLimit = (0, types_1.getTierForScore)(agent.trustScore).dailyLimit;
17
+ const spendRatio = dailyLimit > 0 ? agent.dailySpent / dailyLimit : 0;
18
+ const spendPressure = spendRatio > 0.85 && agent.consecutiveApprovals > 0 ? 5 : 0;
19
+ const denialStreak = Math.min(5, agent.consecutiveDenials * 2.5);
20
+ return Math.min(30, freqSpike + failedTx + inactivity + spendPressure + denialStreak);
21
+ }
22
+ //# sourceMappingURL=risk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risk.js","sourceRoot":"","sources":["../../src/scoring/risk.ts"],"names":[],"mappings":";;AAIA,kCAoBC;AAvBD,oCAA0C;AAC1C,sCAAqC;AAErC,SAAgB,WAAW,CAAC,KAAmB;IAC7C,MAAM,GAAG,GAAG,IAAA,kBAAS,GAAE,CAAC,OAAO,CAAA;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAA;IAC5E,MAAM,cAAc,GAAG,GAAG,EAAE,mBAAmB,IAAI,EAAE,CAAA;IACrD,MAAM,SAAS,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE5I,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;IAEtD,MAAM,aAAa,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IACjE,MAAM,SAAS,GAAG,GAAG,EAAE,mBAAmB,IAAI,GAAG,CAAA;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC,CAAA;IAEzD,MAAM,UAAU,GAAG,IAAA,uBAAe,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,UAAU,CAAA;IAC/D,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,aAAa,GAAG,UAAU,GAAG,IAAI,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEjF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAA;IAEhE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,CAAC,CAAA;AACvF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ export declare const BASE_SEPOLIA = "eip155:84532";
3
+ export declare const USDC_BASE_SEPOLIA = "0x036CbD53842c5426634e7929541eC2318f3dCF7e";
4
+ export declare const app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
5
+ export declare function startServer(port?: number): import("@hono/node-server").ServerType;
6
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAkB3B,eAAO,MAAM,YAAY,iBAAiB,CAAA;AAC1C,eAAO,MAAM,iBAAiB,+CAA+C,CAAA;AAwB7E,eAAO,MAAM,GAAG,4EAAa,CAAA;AAqV7B,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,0CAmBxC"}