@wowok/agent-mcp 3.3.6 → 3.3.7

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 (137) hide show
  1. package/dist/chain-semantics/eval-order.js +1 -1
  2. package/dist/chain-semantics/field-capability.js +1 -1
  3. package/dist/chain-semantics/fund-flow.js +1 -1
  4. package/dist/chain-semantics/guard-verbs.js +1 -1
  5. package/dist/chain-semantics/object-graph.js +1 -1
  6. package/dist/composition/audit.js +1 -1
  7. package/dist/composition/compile.d.ts +2 -1
  8. package/dist/composition/compile.js +1 -1
  9. package/dist/composition/materialize.js +1 -1
  10. package/dist/data/projection/facets.spec.js +1 -1
  11. package/dist/evaluation/match-policy.d.ts +30 -6
  12. package/dist/evaluation/match-policy.js +1 -1
  13. package/dist/evaluation/match-policy.spec.js +1 -1
  14. package/dist/extensions/business-modules.js +1 -1
  15. package/dist/harness/recover.js +1 -1
  16. package/dist/intent/types.d.ts +1 -1
  17. package/dist/intent/types.js +1 -1
  18. package/dist/keeper/detectors.d.ts +3 -0
  19. package/dist/keeper/detectors.js +1 -1
  20. package/dist/keeper/keeper.spec.js +1 -1
  21. package/dist/knowledge/allocator-rail-verifier.js +1 -1
  22. package/dist/knowledge/audit-rules.js +1 -1
  23. package/dist/knowledge/baselines/rules/plan.json +97 -2
  24. package/dist/knowledge/builtin-templates.d.ts +6 -1
  25. package/dist/knowledge/builtin-templates.js +1 -1
  26. package/dist/knowledge/event-semantics.js +1 -1
  27. package/dist/knowledge/guard-design-patterns.js +1 -1
  28. package/dist/knowledge/guard-templates.d.ts +1 -1
  29. package/dist/knowledge/guard-templates.js +1 -1
  30. package/dist/knowledge/industry-generalizer.d.ts +4 -0
  31. package/dist/knowledge/industry-generalizer.js +1 -1
  32. package/dist/knowledge/semantic-ir.d.ts +113 -0
  33. package/dist/knowledge/semantic-ir.js +1 -0
  34. package/dist/knowledge/strategy-manuals.js +1 -1
  35. package/dist/knowledge/template-loader.d.ts +34 -0
  36. package/dist/knowledge/template-loader.js +1 -1
  37. package/dist/knowledge/template-prose.d.ts +50 -0
  38. package/dist/knowledge/template-prose.js +1 -0
  39. package/dist/knowledge/template-registry.js +1 -1
  40. package/dist/knowledge/template-scanner.d.ts +1 -1
  41. package/dist/knowledge/template-scanner.js +1 -1
  42. package/dist/knowledge/tools-reference.js +1 -1
  43. package/dist/monitor/MonitorLoop.js +1 -1
  44. package/dist/monitor/normalize.d.ts +1 -1
  45. package/dist/monitor/normalize.js +1 -1
  46. package/dist/monitor/types.js +1 -1
  47. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  48. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  49. package/dist/playbooks/service-build/merchant-guide.d.ts +4 -0
  50. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  51. package/dist/playbooks/service-build/migration-planner.d.ts +2 -1
  52. package/dist/playbooks/service-build/migration-planner.js +1 -1
  53. package/dist/playbooks/service-build/mode-actions.d.ts +7 -0
  54. package/dist/playbooks/service-build/mode-actions.js +1 -1
  55. package/dist/playbooks/service-build/object-panorama.d.ts +22 -1
  56. package/dist/playbooks/service-build/object-panorama.js +1 -1
  57. package/dist/playbooks/service-build/participation-radar.js +1 -1
  58. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  59. package/dist/playbooks/service-build/reverse-mapping-nk4.spec.js +1 -1
  60. package/dist/playbooks/service-build/reverse-mapping.d.ts +1 -0
  61. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  62. package/dist/playbooks/service-build/service-panorama.js +1 -1
  63. package/dist/playbooks/service-build/service-quote.js +1 -1
  64. package/dist/review/index.js +1 -1
  65. package/dist/safety/confirm-gate.js +1 -1
  66. package/dist/schema/benchmark-migration/index.d.ts +64 -10
  67. package/dist/schema/benchmark-migration/index.js +1 -1
  68. package/dist/schema/call/arbitration.js +1 -1
  69. package/dist/schema/call/base.d.ts +8 -0
  70. package/dist/schema/call/bridge.d.ts +2 -0
  71. package/dist/schema/call/error-codes.d.ts +1 -1
  72. package/dist/schema/call/error-codes.js +1 -1
  73. package/dist/schema/call/reward.d.ts +10 -0
  74. package/dist/schema/call/reward.js +1 -1
  75. package/dist/schema/call/semantic.js +1 -1
  76. package/dist/schema/call/service.js +1 -1
  77. package/dist/schema/common/index.js +1 -1
  78. package/dist/schema/evaluation/index.d.ts +152 -0
  79. package/dist/schema/evaluation/index.js +1 -1
  80. package/dist/schema/goal/index.d.ts +2 -0
  81. package/dist/schema/goal/planning.d.ts +3 -0
  82. package/dist/schema/goal/planning.js +1 -1
  83. package/dist/schema/industry-pack/index.d.ts +62 -0
  84. package/dist/schema/industry-pack/modes.d.ts +62 -0
  85. package/dist/schema/industry-pack/modes.js +1 -1
  86. package/dist/schema/intent-radar/index.d.ts +3 -0
  87. package/dist/schema/intent-radar/index.js +1 -1
  88. package/dist/schema/local/index.d.ts +20 -0
  89. package/dist/schema/local/index.js +1 -1
  90. package/dist/schema/operations.d.ts +5 -0
  91. package/dist/schema/query/index.d.ts +145 -47
  92. package/dist/schema/query/index.js +1 -1
  93. package/dist/schema/schema-version.js +1 -1
  94. package/dist/schema-query-impl/index.js +1 -1
  95. package/dist/schemas/account_operation.output.json +2 -0
  96. package/dist/schemas/benchmark_migration_operation.output.json +42 -0
  97. package/dist/schemas/benchmark_migration_operation.schema.json +208 -5
  98. package/dist/schemas/bridge_operation.output.json +2 -0
  99. package/dist/schemas/evaluation_operation.output.json +240 -0
  100. package/dist/schemas/evaluation_operation.schema.json +397 -1
  101. package/dist/schemas/goal_operation.schema.json +18 -10
  102. package/dist/schemas/index.json +1 -1
  103. package/dist/schemas/industry_pack_operation.output.json +86 -2
  104. package/dist/schemas/industry_pack_operation.schema.json +199 -0
  105. package/dist/schemas/intent_radar.output.json +2 -0
  106. package/dist/schemas/intent_radar.schema.json +1 -0
  107. package/dist/schemas/local_cache_operation.output.json +2 -0
  108. package/dist/schemas/local_history_operation.output.json +2 -0
  109. package/dist/schemas/local_info_operation.output.json +2 -0
  110. package/dist/schemas/local_mark_operation.output.json +2 -0
  111. package/dist/schemas/onchain_events.output.json +281 -11
  112. package/dist/schemas/onchain_events.schema.json +5 -1
  113. package/dist/schemas/onchain_operations.output.json +2 -0
  114. package/dist/schemas/onchain_operations.schema.json +37 -3
  115. package/dist/schemas/onchain_operations_arbitration.schema.json +1 -1
  116. package/dist/schemas/onchain_operations_reward.schema.json +35 -1
  117. package/dist/schemas/onchain_operations_service.schema.json +1 -1
  118. package/dist/schemas/query_toolkit.output.json +34 -0
  119. package/dist/tools/handlers/benchmark-migration.d.ts +1 -0
  120. package/dist/tools/handlers/benchmark-migration.js +1 -1
  121. package/dist/tools/handlers/config.js +1 -1
  122. package/dist/tools/handlers/evaluation.js +1 -1
  123. package/dist/tools/handlers/evaluation.spec.js +1 -1
  124. package/dist/tools/handlers/intent-radar.js +1 -1
  125. package/dist/tools/handlers/messenger.d.ts +1 -0
  126. package/dist/tools/handlers/messenger.js +1 -1
  127. package/dist/tools/handlers/onchain.d.ts +1 -0
  128. package/dist/tools/handlers/onchain.js +1 -1
  129. package/dist/tools/handlers/query.js +1 -1
  130. package/dist/tools/handlers/wip.js +1 -1
  131. package/dist/tools/registry/agent.js +1 -1
  132. package/dist/tools/registry/query.js +1 -1
  133. package/dist/tools/wip-verify-ledger.d.ts +14 -0
  134. package/dist/tools/wip-verify-ledger.js +1 -0
  135. package/dist/tools/wrap.d.ts +4 -0
  136. package/dist/tools/wrap.js +1 -1
  137. package/package.json +2 -2
@@ -225,7 +225,7 @@
225
225
  ]
226
226
  },
227
227
  "guard_add": {
228
- "description": "Add Guard to Reward object. IDIOMS (F08 — these differ from Service allocation, follow THIS shape here): recipient is ONE OF {GuardIdentifier: <u8>} | {Entity: {name_or_address: 'mark'}} | {Signer: 'signer'} (string const INSIDE the key, NOT a bare string) — BUT on the REWARD claim rail the recipient MUST equal the transaction sender (chain assert, abort 14), so {Signer: 'signer'} is the canonical form and {Entity} also passes (SDK replaces it with the claimant's account at claim time); a {GuardIdentifier} recipient resolves to the submitted Order and is STRUCTURALLY UNPAYABLE (every claim aborts 14) — the tool gate rejects it (crs-mn-261015 F-12). amount is {type: 'Fixed', value: '0.1WOW'} — value accepts a display string with token symbol ('0.1WOW') or a smallest-unit integer ('100000000'), NOT the plain balance string used by allocation `sharing`. FULL EXAMPLE: [{guard: '0xabc...', recipient: {Signer: 'signer'}, amount: {type: 'Fixed', value: '0.1WOW'}}].",
228
+ "description": "Add Guard to Reward object. IDIOMS (F08 — these differ from Service allocation, follow THIS shape here): recipient is ONE OF {GuardIdentifier: <u8>} | {Entity: {name_or_address: 'mark'}} | {Signer: 'signer'} (string const INSIDE the key, NOT a bare string) — BUT on the REWARD claim rail the recipient MUST equal the transaction sender (chain assert, abort 14), so {Signer: 'signer'} is the canonical form and {Entity} also passes (SDK replaces it with the claimant's account at claim time); a {GuardIdentifier} recipient resolves to the submitted Order and is STRUCTURALLY UNPAYABLE (every claim aborts 14) — the tool gate rejects it (crs-mn-261015 F-12). amount is {type: 'Fixed', value: '0.1WOW'} — value accepts a display string with token symbol ('0.1WOW') or a smallest-unit integer ('100000000'), NOT the plain balance string used by allocation `sharing`. FULL EXAMPLE: [{guard: '0xabc...', recipient: {Signer: 'signer'}, amount: {type: 'Fixed', value: '0.1WOW'}}]. OPTIONAL EVIDENCE BINDING (ksk9d2-tn-261026 F-01): an entry may carry evidence {repo, key, predicate} — a claim-time attestation pin that counts ONLY repository rows tied to THIS claim's own store_from value (the submitted order), so borrowed/foreign rows never satisfy the bounty; it requires store_from_id on the same guard (a missing pin aborts 16 at build time) and a claim whose order has no matching attestation row aborts 15.",
229
229
  "type": "array",
230
230
  "items": {
231
231
  "type": "object",
@@ -363,6 +363,40 @@
363
363
  "type": "null"
364
364
  }
365
365
  ]
366
+ },
367
+ "evidence": {
368
+ "description": "ksk9d2-tn-261026 F-01 claim-time attestation pin (reward::evidence_bind). REQUIRES store_from_id on the SAME guard — the binding reads THE pinned store_from row, so the chain aborts 16 (E_EVIDENCE_NEEDS_STORE_FROM) at build time without it. At claim the chain counts repository rows under (repo, key) matching the predicate for the claim's OWN store_from value (the submitted order) via the native evidence_count and aborts 15 (E_EVIDENCE_NOT_OWNED) when none — a borrowed foreign row can never pay.",
369
+ "type": "object",
370
+ "properties": {
371
+ "repo": {
372
+ "type": "string",
373
+ "description": "Repository object ID or name holding the attestation rows."
374
+ },
375
+ "key": {
376
+ "type": "array",
377
+ "items": {
378
+ "type": "integer",
379
+ "minimum": 0,
380
+ "maximum": 255
381
+ },
382
+ "description": "Repository data key bytes (the policy name the rows live under, e.g. UTF-8 bytes of 'rating')."
383
+ },
384
+ "predicate": {
385
+ "type": "array",
386
+ "items": {
387
+ "type": "integer",
388
+ "minimum": 0,
389
+ "maximum": 255
390
+ },
391
+ "description": "BCS-encoded RepositoryDataPredicateWire bytes — the same predicate blob the repository read channel uses."
392
+ }
393
+ },
394
+ "required": [
395
+ "repo",
396
+ "key",
397
+ "predicate"
398
+ ],
399
+ "additionalProperties": false
366
400
  }
367
401
  },
368
402
  "required": [
@@ -670,7 +670,7 @@
670
670
  ]
671
671
  },
672
672
  "restock": {
673
- "description": "Refund restocking (permission 305 SERVICE_SALES). op:'flag' opts ONE live product into restock-on-refund; op:'order' puts the units a REFUNDED order purchased back on shelf. The order path is all-or-nothing: every purchased line must be flagged and still live before any unit moves (otherwise the chain aborts 46/32), so half a restock is impossible. The order path is once-per-order (replay aborts 49) and bound to THIS service (foreign order aborts 26). Do NOT fake a restock with stock_add when the order carries several lines — use op:'order' so quantities come from the order itself.",
673
+ "description": "Refund restocking (permission 305 SERVICE_SALES). op:'flag' opts ONE live product into restock-on-refund; op:'order' puts the units a REFUNDED order purchased back on shelf. The order path is all-or-nothing: every purchased line must be flagged and still live before any unit moves (otherwise the chain aborts 46/32), so half a restock is impossible. The order path is once-per-order (replay aborts 49) and bound to THIS service (foreign order aborts 26). Do NOT fake a restock with stock_add when the order carries several lines — use op:'order' so quantities come from the order itself. DISCLOSURE: restock reopens sales — if the machine (or its template) has no refund-terminal gate, orders inside their refund window may lose refund eligibility or create fund-accounting ambiguity once restocked units are resold; confirm the machine's refund rail remains reachable after restocking.",
674
674
  "oneOf": [
675
675
  {
676
676
  "type": "object",
@@ -5374,6 +5374,40 @@
5374
5374
  "type": "null"
5375
5375
  }
5376
5376
  ]
5377
+ },
5378
+ "evidence": {
5379
+ "description": "ksk9d2-tn-261026 F-01 claim-time attestation pin (reward::evidence_bind). REQUIRES store_from_id on the SAME guard — the binding reads THE pinned store_from row, so the chain aborts 16 (E_EVIDENCE_NEEDS_STORE_FROM) at build time without it. At claim the chain counts repository rows under (repo, key) matching the predicate for the claim's OWN store_from value (the submitted order) via the native evidence_count and aborts 15 (E_EVIDENCE_NOT_OWNED) when none — a borrowed foreign row can never pay.",
5380
+ "type": "object",
5381
+ "properties": {
5382
+ "repo": {
5383
+ "type": "string",
5384
+ "description": "Repository object ID or name holding the attestation rows."
5385
+ },
5386
+ "key": {
5387
+ "type": "array",
5388
+ "items": {
5389
+ "type": "integer",
5390
+ "minimum": 0,
5391
+ "maximum": 255
5392
+ },
5393
+ "description": "Repository data key bytes (the policy name the rows live under, e.g. UTF-8 bytes of 'rating')."
5394
+ },
5395
+ "predicate": {
5396
+ "type": "array",
5397
+ "items": {
5398
+ "type": "integer",
5399
+ "minimum": 0,
5400
+ "maximum": 255
5401
+ },
5402
+ "description": "BCS-encoded RepositoryDataPredicateWire bytes — the same predicate blob the repository read channel uses."
5403
+ }
5404
+ },
5405
+ "required": [
5406
+ "repo",
5407
+ "key",
5408
+ "predicate"
5409
+ ],
5410
+ "additionalProperties": false
5377
5411
  }
5378
5412
  },
5379
5413
  "required": [
@@ -68,6 +68,7 @@ export declare function planNextAction(plan: Record<string, unknown>, retryActio
68
68
  export interface RewardPoolPrefill {
69
69
  fee_key: "review_reward_pool";
70
70
  value: number;
71
+ claim_source?: "semantic_ir";
71
72
  }
72
73
  export declare function extractRewardPoolCandidate(description: string | undefined): number | undefined;
73
74
  export { validateAllocatorRows };
@@ -1 +1 @@
1
- import{strictParse}from'../../schema/index.js';import{BenchmarkMigrationSchema}from'../../schema/benchmark-migration/index.js';import{getTemplate,listTemplates,validateAllocatorRows,platformShareBps,builtinTemplateDrift}from'../../knowledge/template-loader.js';import{BUILTIN_TEMPLATES,BUILTIN_TEMPLATES_VERSION}from'../../knowledge/builtin-templates.js';import{scanTemplate,buildFeeParamLandingTable}from'../../knowledge/template-scanner.js';import{planMigration}from'../../playbooks/service-build/migration-planner.js';import{handleMerchantGuide}from'../../playbooks/service-build/merchant-guide.js';import{inferArbitration}from'../../playbooks/service-build/intent-analyzer.js';import{getIndustryModeRegistry}from'../../extensions/index.js';import{resolveIndustryName}from'../../knowledge/industry-registry.js';function templateSummary(a){return{'id':a['id'],'industry':a['industry'],'variant':a['variant'],'product_ref':a['product_ref'],'archetype':a['archetype'],'key_risk':a['key_risk'],'node_count':a['machine_shape']['length'],'guard_count':a['guards']['length'],'recommended_role':a['recommended_role']};}function templateGetAids(a){const b=a['machine_shape']['some'](c=>c['name']==='reviewed');return{'claim_anchor':b?'review_node+final':'final_only','claim_anchor_note':b?'machine_shape\x20mounts\x20a\x20\x27reviewed\x27\x20node\x20—\x20the\x20buyer\x27s\x20structured\x20review\x20rides\x20that\x20node\x20alongside\x20the\x20final\x20settlement.':'no\x20\x27reviewed\x27\x20node\x20—\x20sanctioned\x20variant:\x20the\x20buyer\x27s\x20voice\x20rides\x20the\x20claim/arbitration\x20rail\x20only\x20(no\x20separate\x20review\x20stop).','allocator_count_note':'allocator.count\x20=\x20'+a['allocator']['count']+'\x20counts\x20SETTLEMENT-track\x20legs\x20only;\x20refund-track\x20legs\x20(rows[]\x20with\x20track:\x22refund\x22)\x20are\x20additional\x20and\x20NOT\x20included\x20in\x20this\x20count.\x20rows[]\x20carries\x20the\x20complete\x20executable\x20split\x20plan.','onchain_field_notes':['passport.impack\x20—\x20the\x20on-chain\x20field\x20is\x20spelled\x20`impack`\x20(passport.move,\x20packed\x20business\x20objects\x20in\x20the\x20passport\x20verification\x20context).\x20It\x20is\x20the\x20contract\x27s\x20own\x20field\x20name,\x20not\x20a\x20typo;\x20echo\x20it\x20verbatim.']};}function requireTemplate(a,b){if(!a)throw new Error('\x27template_id\x27\x20is\x20required\x20for\x20action=\x27'+b+'\x27');const c=getTemplate(a);if(!c)throw new Error('Unknown\x20template\x20id:\x20'+a+'\x20(use\x20action=\x27template_list\x27\x20to\x20see\x20valid\x20ids)');return c;}function driftFace(a){const b=builtinTemplateDrift()['find'](c=>c['template']===a);if(!b){const c=BUILTIN_TEMPLATES['some'](d=>d['id']===a);return c?{'template':a,'state':'current','catalog_version':BUILTIN_TEMPLATES_VERSION,'blocked':![],'repairable':![],'detail':'disk\x20body\x20matches\x20the\x20shipped\x20catalog\x20(hash-verified\x20sentinel)'}:{'template':a,'state':'untracked','catalog_version':undefined,'blocked':![],'repairable':![],'detail':'user-authored\x20template\x20—\x20no\x20builtin\x20catalog\x20binding\x20to\x20compare\x20against'};}return{'template':b['template'],'state':b['state'],'catalog_version':BUILTIN_TEMPLATES_VERSION,'blocked':!![],'repairable':b['repairable'],'detail':b['detail']};}function scanSummary(a,b){const c={};for(const d of a['findings'])c[d['severity']]=(c[d['severity']]??0x0)+0x1;return{'template_id':a['template_id'],'risk_level':a['risk_level'],'preflight_scan_passed':a['red_flags']['length']===0x0,'finding_count':a['findings']['length'],'findings_by_severity':c,'red_flags':a['red_flags'],'findings':a['findings'],'drift':b};}function assertScanPassed(a,b){const c=a['red_flags'];if(a['passed']||c['length']===0x0)return;throw new Error('action=\x27'+b+'\x27\x20blocked:\x20pre-deploy\x20scan\x20of\x20template\x20\x27'+a['template_id']+'\x27\x20found\x20CRITICAL\x20risk\x20—\x20'+c['join'](';\x20')+'.\x20Fix\x20the\x20template\x20(frontmatter\x20or\x20body)\x20and\x20re-run\x20action=\x27template_scan\x27.');}const GENERATE_HIGH_TOLERATED=new Set([]);function assertGenerateScanPassed(a,b){assertScanPassed(a,b);if(b!=='template_generate')return;const c=generateHighBlockers(a['template_id'],a['findings']);if(c['length']===0x0)return;throw new Error('action=\x27'+b+'\x27\x20blocked:\x20pre-deploy\x20scan\x20of\x20template\x20\x27'+a['template_id']+'\x27\x20found\x20'+c['length']+'\x20HIGH\x20finding(s)\x20—\x20'+c['map'](d=>(d['rule_id']??'HIGH')+':\x20'+d['title'])['join'](';\x20')+'.\x20Fix\x20the\x20template\x20(frontmatter\x20or\x20body)\x20and\x20re-run\x20action=\x27template_scan\x27.');}function generateHighBlockers(a,b){return b['filter'](c=>c['severity']==='high'&&!(c['rule_id']&&GENERATE_HIGH_TOLERATED['has'](a+'/'+c['rule_id'])));}export function buildVerdict(a,b,c){const d=[];!a['preflight_scan_passed']&&d['push']('scan:\x20'+(a['findings_by_severity']['critical']??0x0)+'\x20CRITICAL\x20finding(s)\x20(preflight\x20scan\x20failed)');if(c){const h=generateHighBlockers(a['template_id'],a['findings']??[]);h['length']>0x0&&d['push']('scan:\x20'+h['length']+'\x20HIGH\x20finding(s)\x20—\x20template_generate\x20would\x20refuse\x20(N-21):\x20'+h['map'](i=>((i['rule_id']??'HIGH')+':\x20'+(i['title']??''))['trim']())['join'](';\x20'));}const e=b['graph_validation'];if(e&&e['valid']===![]){const i=Array['isArray'](e['hard_violations'])?e['hard_violations']['length']:0x0,j=Array['isArray'](e['hard_violations'])?e['hard_violations']['map'](k=>k['id'])['join'](',\x20'):'';d['push']('graph_validation:\x20'+i+'\x20hard\x20violation(s)'+(j?'\x20('+j+')':''));}const f=b['audit'];if(f&&f['blocking']===!![]){const k=(f['findings']??[])['filter'](l=>l['level']==='critical'||l['level']==='high');d['push'](k['length']===0x0?'audit:\x20guide\x20audit\x20flagged\x20blocking\x20issue(s)\x20(plan.audit)':'audit:\x20'+k['length']+'\x20blocking\x20finding(s)\x20—\x20'+k['slice'](0x0,0x5)['map'](l=>((l['rule_id']??'?')+':\x20'+(l['title']??''))['trim']())['join'](';\x20')+(k['length']>0x5?'\x20(+'+(k['length']-0x5)+'\x20more\x20in\x20plan.audit.findings)':''));}const g=d['length']===0x0;return{'buildable':g,'blockers':d,'status':g?'READY':'BLOCKED'};}async function templateScanDryRun(a){const b=[{'name':'scan-probe','price':'1000000000','quantity':0x1}],c=a['review_mode']==='review_reward'?{'review_mode':'review_reward','reward_funding':'20000000'}:undefined;try{const d=await runGuide(a,undefined,undefined,undefined,c,b),f=buildVerdict(scanSummary(scanTemplate(a)),d,!![]);return{'status':f['buildable']?'ready':'blocked','buildable':f['buildable'],'blockers':f['blockers'],'note':'Compile\x20dry-run\x20on\x20synthetic\x20probe\x20inputs\x20(single\x20probe\x20SKU,\x20benchmark\x20reward\x20funding),\x20mirrored\x20to\x20the\x20template_generate\x20gate\x20(CRITICAL\x20+\x20N-21\x20HIGH\x20+\x20graph\x20+\x20audit).\x20Structural\x20blockers\x20are\x20REAL\x20—\x20the\x20generate\x20face\x20refuses\x20for\x20the\x20same\x20reason.\x20Blockers\x20naming\x20caller\x20inputs\x20(fee_overrides\x20/\x20guard_resolutions\x20/\x20catalog)\x20may\x20clear\x20with\x20real\x20values.'};}catch(g){return{'status':'unavailable','note':'Compile\x20dry-run\x20could\x20not\x20run\x20on\x20synthetic\x20probe\x20inputs\x20('+(g instanceof Error?g['message']:String(g))+').\x20This\x20is\x20a\x20probe\x20limitation,\x20NOT\x20a\x20template\x20verdict\x20—\x20run\x20template_generate\x20for\x20the\x20authoritative\x20buildability.'};}}export function planNextAction(a,b,c){const d=a['next_action'];if(typeof d==='string'&&d['startsWith']('Plan\x20ready.'))return d;if(c?.['buildable']){const f=Array['isArray'](a['pending_guard_designs'])?a['pending_guard_designs']['length']:0x0;return'Plan\x20is\x20buildable\x20(verdict.buildable=true).\x20Materialize\x20the\x20objects\x20in\x20plan.steps\x20order'+(f>0x0?',\x20resolving\x20the\x20'+f+'\x20pending\x20guard\x20design(s)\x20in\x20plan.pending_guard_designs\x20via\x20guard_resolutions\x20before\x20the\x20Machine\x20publish':'')+'.';}const e=Array['isArray'](a['pending_guard_designs'])?a['pending_guard_designs']['length']:0x0;return'Plan\x20BLOCKED\x20by\x20the\x20guide\x20audit\x20(see\x20plan.audit\x20/\x20plan.next_action).\x20Do\x20NOT\x20materialize,\x20'+'and\x20do\x20NOT\x20hand-build\x20the\x20objects\x20instead:\x20this\x20plan\x20is\x20the\x20wiring\x20authority\x20(Arbitration\x20+\x20'+'compensation-fund,\x20Contact/um,\x20allocator\x20rows)\x20and\x20hand-built\x20replicas\x20silently\x20drop\x20those\x20wirings.\x20'+(e>0x0?'Resolve\x20the\x20'+e+'\x20pending\x20guard\x20design(s)\x20in\x20plan.pending_guard_designs\x20via\x20guard_resolutions\x20(kind\x20\x27inline\x27\x20with\x20the\x20Guard\x20table+root,\x20kind\x20\x27template\x27\x20with\x20a\x20tpl_*\x20id,\x20or\x20{kind:\x27omit\x27}\x20for\x20advisory\x20designs\x20that\x20do\x20not\x20apply\x20to\x20this\x20shop),\x20':'Adjust\x20fee_overrides,\x20pick\x20another\x20template\x20variant,\x20or\x20fix\x20the\x20template,\x20')+('then\x20re-run\x20action=\x27'+b+'\x27.');}function templateIntent(a,b){if(b&&b['trim']())return b['trim']();return'Adopt\x20the\x20'+a['id']+'\x20industry\x20archetype\x20template\x20('+a['archetype']+')\x20for\x20the\x20'+a['industry']+'\x20industry.\x20'+('Primary\x20risk\x20to\x20mitigate:\x20'+a['key_risk']+'.');}function effectiveFeeParams(a,b){return{...a['fee_params'],...b??{}};}const REWARD_POOL_PATTERNS=[/(?:reward|review|bonus|tip|prize)[\s-]*pools?\s*(?:of|is|at|:|=)?\s*([0-9][0-9_,]*(?:\.[0-9]+)?)/i,/([0-9][0-9_,]*(?:\.[0-9]+)?)\s*(?:reward|review|bonus|tip|prize)[\s-]*pools?\b/i,/(?:奖(?:金|励)?池|打赏池|好评(?:奖励)?池)\s*(?:为|是|:|:|=)?\s*([0-9][0-9_,]*(?:\.[0-9]+)?)/,/([0-9][0-9_,]*(?:\.[0-9]+)?)\s*的?\s*(?:奖(?:金|励)?池|打赏池|好评(?:奖励)?池)/];export function extractRewardPoolCandidate(a){if(!a)return undefined;for(const b of REWARD_POOL_PATTERNS){const c=b['exec'](a);if(!c)continue;const d=Number(c[0x1]['replaceAll'](/[,_]/g,''));if(Number['isFinite'](d)&&d>=0x0)return d;}return undefined;}function rewardPoolPrefill(a,b,c){if(a['fee_params']['review_reward_pool']===undefined)return undefined;if(c?.['review_reward_pool']!==undefined)return undefined;const d=extractRewardPoolCandidate(b);return d===undefined?undefined:{'fee_key':'review_reward_pool','value':d};}function validateFeeParams(a,b){const c=[];let d=0x0;for(const [e,f]of Object['entries'](a)){if(typeof f!=='number'||!Number['isFinite'](f))continue;if(e['endsWith']('_bps')){(!Number['isInteger'](f)||f<0x0||f>0x2710)&&c['push'](e+'='+f+'\x20is\x20not\x20an\x20integer\x20rate\x20in\x20[0,\x2010000]\x20bps');if(e['endsWith']('_share_bps'))d+=Math['max'](0x0,f);}else{if(e['endsWith']('_days')){if(f<=0x0||f>0xe42)c['push'](e+'='+f+'\x20is\x20outside\x20the\x20sane\x20window\x20range\x20(0,\x203650]\x20days');}else{if(e['endsWith']('_hours')){if(f<=0x0||f>0x2238)c['push'](e+'='+f+'\x20is\x20outside\x20the\x20sane\x20window\x20range\x20(0,\x208760]\x20hours');}}}}if(d>0x2710)c['push']('*_share_bps\x20sum\x20'+d+'\x20exceeds\x2010000\x20(a\x20pool\x20splits\x20into\x20at\x20most\x20100%)');if(c['length']>0x0)throw new Error('invalid\x20fee\x20parameters\x20for\x20template\x20\x27'+b+'\x27:\x20'+c['join'](';\x20')+'.\x20'+'Correct\x20the\x20template\x27s\x20fee_params\x20or\x20pass\x20valid\x20\x27fee_overrides\x27.');}export{validateAllocatorRows};export function variantPaymentModel(a){if(a['payment_model'])return a['payment_model'];const b=a['allocator']['rows']??[];if(b['some'](d=>d['track']==='refund'))return'escrow';const c=a['machine_shape']['map'](d=>d['name'])['join']('\x20')['toLowerCase']();if(/\b(milestone|revision|revis|draft|deliverable)\b/['test'](c))return'milestone';if(/\b(charge|renew|subscription|cycle|billing|monthly)\b/['test'](c))return'subscription';return'escrow';}function variantRefundPolicy(a){const b=a['allocator']['description']['toLowerCase']();if(/full[ -]?refund|100% refund|refund .*100/['test'](b))return'full';if(/pro-?rata|prorated/['test'](b))return'milestone_prorated';if(/partial/['test'](b))return'partial';return undefined;}export function variantDeliverables(a,b){const c=a['machine_shape']['filter'](g=>g['semantic_role']==='final'),d=c[c['length']-0x1]??[...a['machine_shape']]['reverse']()['find'](g=>!/refund|cancel|dispute|terminat/i['test'](g['name']+'\x20'+g['role']))??a['machine_shape'][a['machine_shape']['length']-0x1],e=b?.['has_logistics']?'physical':b?.['pure_digital']?'digital':'service_session',f=(a['guards']??[])['filter'](h=>/repository_data_check|required_info_evidence_gate|allocator_order_anchor/['test'](h['template_id']));return[{'name':a['variant']+'\x20fulfillment','type':e,'acceptanceCriteria':'Order\x20reaches\x20the\x20terminal\x20workflow\x20node\x20\x27'+d['name']+'\x27\x20('+d['role']+')','proofOfDelivery':f['length']>0x0?'wip_hash':'manual_confirm'}];}function validateConditionalParams(a,b){for(const d of a['conditional_guards']??[]){const e=b[d['param']];if(e===undefined)continue;if(typeof e!=='string'||!d['values']['includes'](e))throw new Error('invalid\x20\x27'+d['param']+'='+String(e)+'\x27\x20for\x20template\x20\x27'+a['id']+'\x27:\x20must\x20be\x20one\x20of\x20'+d['values']['map'](f=>'\x27'+f+'\x27')['join']('\x20|\x20')+('\x20(the\x20guard\x20variant\x20mounts\x20at\x20\x27'+d['emit_value']+'\x27)'));}}async function runGuide(a,b,c,d,e,f){const g=effectiveFeeParams(a,c),h=rewardPoolPrefill(a,b,c);if(h)g[h['fee_key']]=h['value'];validateFeeParams(g,a['id']),validateConditionalParams(a,g);const i=getIndustryModeRegistry()['getMode'](a['industry']),j=platformShareBps(g),k={'model':variantPaymentModel(a)},l=[],m=(a['allocator']['rows']?.['length']??0x0)>0x0;if(j!==undefined&&j>0x0&&!m&&a['allocator']['mode']==='rate'){const q=Math['round'](j)/0x64;l['push']({'recipient':'merchant','percentage':Math['round']((0x64-q)*0x64)/0x64}),l['push']({'recipient':'platform','percentage':q}),k['allocation']=l;}const n=variantRefundPolicy(a),o={'escrow':!![]};if(n)o['refundPolicy']=n;o['arbitration']=a['arbitration_mode']??o['arbitration']??inferArbitration(templateIntent(a,b));const p=await handleMerchantGuide({'intent':templateIntent(a,b),'guide_confirm':{'industry':a['industry'],'payment':k,'trust':o,'deliverables':variantDeliverables(a,i?.['traits']),...d&&Object['keys'](d)['length']>0x0?{'guard_resolutions':d}:{},...e?.['review_mode']?{'review_mode':e['review_mode']}:{},...e?.['reward_funding']!==undefined?{'reward_funding':e['reward_funding']}:{},...e?.['after_sales_mode']?{'after_sales_mode':e['after_sales_mode']}:{},...e?.['acceptance_mode']?{'acceptance_mode':e['acceptance_mode']}:{},...e?.['installment_mode']?{'installment_mode':e['installment_mode']}:{},...e?.['affiliate_mode']?{'affiliate_mode':e['affiliate_mode']}:{},...e?.['crowdfunding_mode']?{'crowdfunding_mode':e['crowdfunding_mode']}:{},...f?.['length']?{'sales':f}:{}},'template_override':{...a,'fee_params':g},'name_base':a['id']});if(a['allocator']['rows']?.['length'])p['template_allocator_rows']=a['allocator']['rows']['map'](s=>({...s}));p['template']={'id':a['id'],'archetype':a['archetype'],'recommended_role':a['recommended_role'],'fee_params':g},p['template_fee_param_landings']=buildFeeParamLandingTable(a,g);if(c&&Object['keys'](c)['length']>0x0)p['template_fee_overrides']=c;return h&&(p['fee_overrides_prefill']=h,p['next_action']=p['next_action']+'\x20Reward\x20pool\x20prefilled\x20from\x20your\x20request:\x20'+h['value']+'\x20—\x20adjust\x20via\x20fee_overrides.'),p;}export async function handleBenchmarkMigrationOperation(a){const b=strictParse(BenchmarkMigrationSchema,a,'benchmark_migration_operation\x20input'),c=b['industry']?resolveIndustryName(b['industry'])??b['industry']['toLowerCase']():undefined;let d;switch(b['action']){case'template_list':{const {templates:e,errors:f}=listTemplates(),g=c?e['filter'](i=>i['industry']===c):e,h=new Map(builtinTemplateDrift()['map'](i=>[i['template'],i['state']]));d={'action':'template_list','count':g['length'],'templates':g['map'](i=>({...templateSummary(i),'disk_state':h['get'](i['id'])??(BUILTIN_TEMPLATES['some'](j=>j['id']===i['id'])?'current':'untracked')})),'load_errors':f};break;}case'template_get':{const i=requireTemplate(b['template_id'],'template_get');d={'action':'template_get','template':{...i,...templateGetAids(i)}};break;}case'template_generate':{const j=requireTemplate(b['template_id'],'template_generate'),k=b['review_mode']??j['review_mode']??'none';if(k==='review_reward'&&!b['reward_funding'])return{'content':[{'type':'text','text':'template_generate\x20refused\x20—\x20no\x20plan\x20was\x20built.\x20Template\x20\x27'+j['id']+'\x27\x20resolves\x20to\x20review_mode\x20\x27review_reward\x27\x20(input'+(b['review_mode']?'':'\x20via\x20template\x20declaration')+'),\x20which\x20promises\x20buyers\x20a\x20claimable\x20review\x20bounty\x20—\x20an\x20unfunded\x20pool\x20must\x20not\x20ship.\x20Pass\x20reward_funding\x20(smallest-unit\x20string),\x20or\x20drop\x20the\x20mode\x20explicitly\x20(review_mode\x20\x27review\x27\x20keeps\x20the\x20review\x20rail\x20without\x20the\x20bounty;\x20\x27none\x27\x20removes\x20the\x20rail).'}],'structuredContent':{'result':{'type':'error','error':'review_mode\x20\x27'+k+'\x27\x20without\x20reward_funding\x20(INV-4)\x20on\x20template\x20\x27'+j['id']+'\x27.','error_code':'reward_funding_required','retryable':!![],'recovery_hint':'Pass\x20reward_funding\x20=\x20expected\x20orders\x20x\x20per-order\x20reward\x20(fee_param\x20review_reward_pool\x20is\x20the\x20planning\x20benchmark),\x20or\x20re-send\x20with\x20review_mode:\x27review\x27\x20(rail\x20only)\x20/\x20\x27none\x27\x20(no\x20rail).'},'message':'Refused:\x20a\x20review_reward\x20build\x20requires\x20a\x20funded\x20reward\x20pool.\x20See\x20recovery_hint.'}};if(!Array['isArray'](b['sales'])||b['sales']['length']===0x0)return{'content':[{'type':'text','text':'template_generate\x20refused\x20—\x20no\x20plan\x20was\x20built.\x20The\x20sellable\x20catalog\x20(sales)\x20is\x20required:\x20a\x20plan\x20without\x20one\x20publishes\x20a\x20Service\x20frozen\x20with\x20sales:\x20[]\x20and\x20every\x20order_new\x20aborts\x20(PLAN-SALES-01).\x20List\x20at\x20least\x20one\x20SKU:\x20{\x20name,\x20price,\x20quantity?,\x20wip_hash?\x20}\x20—\x20price\x20in\x20smallest\x20units.'}],'structuredContent':{'result':{'type':'error','error':'template_generate\x20without\x20a\x20non-empty\x20sales\x20catalog\x20(PLAN-SALES-01\x20upgraded\x20to\x20an\x20input\x20requirement,\x20amz9\x20A-2).','error_code':'sales_required','retryable':!![],'recovery_hint':'Pass\x20sales:\x20[{\x20name,\x20price,\x20quantity?,\x20wip_hash?\x20}]\x20—\x20one\x20entry\x20per\x20sellable\x20SKU\x20(wip_hash\x20from\x20the\x20wip_file\x20tool\x20upload).\x20migration_apply\x20is\x20unaffected:\x20it\x20confirms\x20an\x20already-reviewed\x20import.'},'message':'Refused:\x20template_generate\x20requires\x20a\x20sellable\x20catalog.\x20See\x20recovery_hint.'}};const l=scanTemplate(j);assertGenerateScanPassed(l,'template_generate');const m=await runGuide(j,b['description'],b['fee_overrides'],b['guard_resolutions'],{'review_mode':b['review_mode'],'reward_funding':b['reward_funding'],'after_sales_mode':b['after_sales_mode'],'acceptance_mode':b['acceptance_mode'],'installment_mode':b['installment_mode'],'affiliate_mode':b['affiliate_mode'],'crowdfunding_mode':b['crowdfunding_mode']},b['sales']);d=((()=>{const n=scanSummary(l,driftFace(j['id'])),o=buildVerdict(n,m);return{'action':'template_generate','template_id':j['id'],'scan':n,'plan':m,'verdict':o,'next_action':planNextAction(m,'template_generate',o)};})());break;}case'template_scan':{const n=requireTemplate(b['template_id'],'template_scan'),o=await templateScanDryRun(n);d={'action':'template_scan','scan':{...scanTemplate(n),'drift':driftFace(n['id']),'compile_dry_run':o}};break;}case'migration_import':{if(!b['description']||!b['description']['trim']())throw new Error('\x27description\x27\x20is\x20required\x20for\x20action=\x27migration_import\x27');const p=planMigration({'url':b['url'],'description':b['description'],'industry':c,'network':b['network']});if(!p)throw new Error('No\x20industry\x20template\x20matched\x20the\x20description.\x20Refine\x20the\x20description\x20or\x20pass\x20an\x20explicit\x20\x27industry\x27\x20hint.');d={'action':'migration_import','log':p,'next_action':'MigrationLog\x20ready.\x20Next:\x20call\x20action=\x27migration_review\x27\x20with\x20this\x20log\x20to\x20surface\x20the\x20mapped/unmapped/manual_review\x20items\x20for\x20user\x20confirmation.'};break;}case'migration_review':{if(!b['log'])throw new Error('\x27log\x27\x20is\x20required\x20for\x20action=\x27migration_review\x27');const q=b['log'],r=Array['isArray'](q['mapped'])?q['mapped']:[],s=Array['isArray'](q['unmapped'])?q['unmapped']:[],t=Array['isArray'](q['manual_review'])?q['manual_review']:[],u=q['risk_check']??{},v=q['source']?.['matched_template']??'',w=s['length']===0x0&&t['length']===0x0&&u['passed']===!![];d={'action':'migration_review','log':q,'review_summary':{'mapped_count':r['length'],'unmapped_count':s['length'],'manual_review_count':t['length'],'risk_passed':u['passed']===!![]},'next_action':w?'Review\x20clean.\x20Proceed:\x20call\x20action=\x27migration_apply\x27\x20with\x20template_id=\x27'+v+'\x27\x20to\x20produce\x20the\x20creation\x20plan\x20(network\x20defaults\x20to\x20testnet;\x20mainnet\x20requires\x20explicit\x20user\x20confirmation).':'Surface\x20the\x20'+s['length']+'\x20unmapped\x20and\x20'+t['length']+'\x20manual_review\x20items'+(u['passed']===!![]?'':'\x20plus\x20the\x20risk_check\x20findings')+'\x20to\x20the\x20user\x20for\x20a\x20decision\x20before\x20action=\x27migration_apply\x27\x20(template_id=\x27'+v+'\x27).'};break;}case'migration_apply':{const x=requireTemplate(b['template_id'],'migration_apply'),y=scanTemplate(x);assertScanPassed(y,'migration_apply');const z=b['network']??'testnet',A=await runGuide(x,b['description'],b['fee_overrides'],b['guard_resolutions'],{'review_mode':b['review_mode'],'reward_funding':b['reward_funding'],'after_sales_mode':b['after_sales_mode'],'acceptance_mode':b['acceptance_mode'],'installment_mode':b['installment_mode'],'affiliate_mode':b['affiliate_mode'],'crowdfunding_mode':b['crowdfunding_mode']},b['sales']);d=((()=>{const B=scanSummary(y,driftFace(x['id'])),C=buildVerdict(B,A);return{'action':'migration_apply','template_id':x['id'],'network':z,'scan':B,'plan':A,'verdict':C,'next_action':planNextAction(A,'migration_apply',C)};})());break;}default:throw new Error('Unknown\x20benchmark_migration_operation\x20action:\x20'+String(b['action']));}return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d}};}
1
+ import{strictParse}from'../../schema/index.js';import{BenchmarkMigrationSchema}from'../../schema/benchmark-migration/index.js';import{getTemplate,listTemplates,validateAllocatorRows,platformShareBps,builtinTemplateDrift}from'../../knowledge/template-loader.js';import{BUILTIN_TEMPLATES,BUILTIN_TEMPLATES_VERSION}from'../../knowledge/builtin-templates.js';import{scanTemplate,buildFeeParamLandingTable}from'../../knowledge/template-scanner.js';import{planMigration}from'../../playbooks/service-build/migration-planner.js';import{handleMerchantGuide}from'../../playbooks/service-build/merchant-guide.js';import{inferArbitration}from'../../playbooks/service-build/intent-analyzer.js';import{getIndustryModeRegistry}from'../../extensions/index.js';import{resolveIndustryName}from'../../knowledge/industry-registry.js';import{claimNumber,normalizeSemanticIR}from'../../knowledge/semantic-ir.js';import{handleRecommendIndustry}from'../../playbooks/service-build/mode-actions.js';function templateSummary(a){return{'id':a['id'],'industry':a['industry'],'variant':a['variant'],'product_ref':a['product_ref'],'archetype':a['archetype'],'key_risk':a['key_risk'],'node_count':a['machine_shape']['length'],'guard_count':a['guards']['length'],'recommended_role':a['recommended_role']};}function templateGetAids(a){const b=a['machine_shape']['some'](c=>c['name']==='reviewed');return{'claim_anchor':b?'review_node+final':'final_only','claim_anchor_note':b?'machine_shape\x20mounts\x20a\x20\x27reviewed\x27\x20node\x20—\x20the\x20buyer\x27s\x20structured\x20review\x20rides\x20that\x20node\x20alongside\x20the\x20final\x20settlement.':'no\x20\x27reviewed\x27\x20node\x20—\x20sanctioned\x20variant:\x20the\x20buyer\x27s\x20voice\x20rides\x20the\x20claim/arbitration\x20rail\x20only\x20(no\x20separate\x20review\x20stop).','allocator_count_note':'allocator.count\x20=\x20'+a['allocator']['count']+'\x20counts\x20SETTLEMENT-track\x20legs\x20only;\x20refund-track\x20legs\x20(rows[]\x20with\x20track:\x22refund\x22)\x20are\x20additional\x20and\x20NOT\x20included\x20in\x20this\x20count.\x20rows[]\x20carries\x20the\x20complete\x20executable\x20split\x20plan.','onchain_field_notes':['passport.impack\x20—\x20the\x20on-chain\x20field\x20is\x20spelled\x20`impack`\x20(passport.move,\x20packed\x20business\x20objects\x20in\x20the\x20passport\x20verification\x20context).\x20It\x20is\x20the\x20contract\x27s\x20own\x20field\x20name,\x20not\x20a\x20typo;\x20echo\x20it\x20verbatim.']};}function requireTemplate(a,b){if(!a)throw new Error('\x27template_id\x27\x20is\x20required\x20for\x20action=\x27'+b+'\x27');const c=getTemplate(a);if(!c)throw new Error('Unknown\x20template\x20id:\x20'+a+'\x20(use\x20action=\x27template_list\x27\x20to\x20see\x20valid\x20ids)');return c;}function driftFace(a){const b=builtinTemplateDrift()['find'](c=>c['template']===a);if(!b){const c=BUILTIN_TEMPLATES['some'](d=>d['id']===a);return c?{'template':a,'state':'current','catalog_version':BUILTIN_TEMPLATES_VERSION,'blocked':![],'repairable':![],'detail':'disk\x20body\x20matches\x20the\x20shipped\x20catalog\x20(hash-verified\x20sentinel)'}:{'template':a,'state':'untracked','catalog_version':undefined,'blocked':![],'repairable':![],'detail':'user-authored\x20template\x20—\x20no\x20builtin\x20catalog\x20binding\x20to\x20compare\x20against'};}return{'template':b['template'],'state':b['state'],'catalog_version':BUILTIN_TEMPLATES_VERSION,'blocked':!![],'repairable':b['repairable'],'detail':b['detail']};}function scanSummary(a,b){const c={};for(const d of a['findings'])c[d['severity']]=(c[d['severity']]??0x0)+0x1;return{'template_id':a['template_id'],'risk_level':a['risk_level'],'preflight_scan_passed':a['red_flags']['length']===0x0,'finding_count':a['findings']['length'],'findings_by_severity':c,'red_flags':a['red_flags'],'findings':a['findings'],'drift':b};}function assertScanPassed(a,b){const c=a['red_flags'];if(a['passed']||c['length']===0x0)return;throw new Error('action=\x27'+b+'\x27\x20blocked:\x20pre-deploy\x20scan\x20of\x20template\x20\x27'+a['template_id']+'\x27\x20found\x20CRITICAL\x20risk\x20—\x20'+c['join'](';\x20')+'.\x20Fix\x20the\x20template\x20(frontmatter\x20or\x20body)\x20and\x20re-run\x20action=\x27template_scan\x27.');}const GENERATE_HIGH_TOLERATED=new Set([]);function assertGenerateScanPassed(a,b){assertScanPassed(a,b);if(b!=='template_generate')return;const c=generateHighBlockers(a['template_id'],a['findings']);if(c['length']===0x0)return;throw new Error('action=\x27'+b+'\x27\x20blocked:\x20pre-deploy\x20scan\x20of\x20template\x20\x27'+a['template_id']+'\x27\x20found\x20'+c['length']+'\x20HIGH\x20finding(s)\x20—\x20'+c['map'](d=>(d['rule_id']??'HIGH')+':\x20'+d['title'])['join'](';\x20')+'.\x20Fix\x20the\x20template\x20(frontmatter\x20or\x20body)\x20and\x20re-run\x20action=\x27template_scan\x27.');}function generateHighBlockers(a,b){return b['filter'](c=>c['severity']==='high'&&!(c['rule_id']&&GENERATE_HIGH_TOLERATED['has'](a+'/'+c['rule_id'])));}export function buildVerdict(a,b,c){const d=[];!a['preflight_scan_passed']&&d['push']('scan:\x20'+(a['findings_by_severity']['critical']??0x0)+'\x20CRITICAL\x20finding(s)\x20(preflight\x20scan\x20failed)');if(c){const h=generateHighBlockers(a['template_id'],a['findings']??[]);h['length']>0x0&&d['push']('scan:\x20'+h['length']+'\x20HIGH\x20finding(s)\x20—\x20template_generate\x20would\x20refuse\x20(N-21):\x20'+h['map'](i=>((i['rule_id']??'HIGH')+':\x20'+(i['title']??''))['trim']())['join'](';\x20'));}const e=b['graph_validation'];if(e&&e['valid']===![]){const i=Array['isArray'](e['hard_violations'])?e['hard_violations']['length']:0x0,j=Array['isArray'](e['hard_violations'])?e['hard_violations']['map'](k=>k['id'])['join'](',\x20'):'';d['push']('graph_validation:\x20'+i+'\x20hard\x20violation(s)'+(j?'\x20('+j+')':''));}const f=b['audit'];if(f&&f['blocking']===!![]){const k=(f['findings']??[])['filter'](l=>l['level']==='critical'||l['level']==='high');d['push'](k['length']===0x0?'audit:\x20guide\x20audit\x20flagged\x20blocking\x20issue(s)\x20(plan.audit)':'audit:\x20'+k['length']+'\x20blocking\x20finding(s)\x20—\x20'+k['slice'](0x0,0x5)['map'](l=>((l['rule_id']??'?')+':\x20'+(l['title']??''))['trim']())['join'](';\x20')+(k['length']>0x5?'\x20(+'+(k['length']-0x5)+'\x20more\x20in\x20plan.audit.findings)':''));}const g=d['length']===0x0;return{'buildable':g,'blockers':d,'status':g?'READY':'BLOCKED'};}async function templateScanDryRun(a){const b=[{'name':'scan-probe','price':'1000000000','quantity':0x1}],c=a['review_mode']==='review_reward'?{'review_mode':'review_reward','reward_funding':'20000000','reward_claim_amount':'1000000'}:undefined;try{const d=await runGuide(a,undefined,undefined,undefined,c,b),f=buildVerdict(scanSummary(scanTemplate(a)),d,!![]);return{'status':f['buildable']?'ready':'blocked','buildable':f['buildable'],'blockers':f['blockers'],'note':'Compile\x20dry-run\x20on\x20synthetic\x20probe\x20inputs\x20(single\x20probe\x20SKU,\x20benchmark\x20reward\x20funding),\x20mirrored\x20to\x20the\x20template_generate\x20gate\x20(CRITICAL\x20+\x20N-21\x20HIGH\x20+\x20graph\x20+\x20audit).\x20Structural\x20blockers\x20are\x20REAL\x20—\x20the\x20generate\x20face\x20refuses\x20for\x20the\x20same\x20reason.\x20Blockers\x20naming\x20caller\x20inputs\x20(fee_overrides\x20/\x20guard_resolutions\x20/\x20catalog)\x20may\x20clear\x20with\x20real\x20values.'};}catch(g){return{'status':'unavailable','note':'Compile\x20dry-run\x20could\x20not\x20run\x20on\x20synthetic\x20probe\x20inputs\x20('+(g instanceof Error?g['message']:String(g))+').\x20This\x20is\x20a\x20probe\x20limitation,\x20NOT\x20a\x20template\x20verdict\x20—\x20run\x20template_generate\x20for\x20the\x20authoritative\x20buildability.'};}}export function planNextAction(a,b,c){const d=a['next_action'];if(typeof d==='string'&&d['startsWith']('Plan\x20ready.'))return d;if(c?.['buildable']){const f=Array['isArray'](a['pending_guard_designs'])?a['pending_guard_designs']['length']:0x0;return'Plan\x20is\x20buildable\x20(verdict.buildable=true).\x20Materialize\x20the\x20objects\x20in\x20plan.steps\x20order'+(f>0x0?',\x20resolving\x20the\x20'+f+'\x20pending\x20guard\x20design(s)\x20in\x20plan.pending_guard_designs\x20via\x20guard_resolutions\x20before\x20the\x20Machine\x20publish':'')+'.';}const e=Array['isArray'](a['pending_guard_designs'])?a['pending_guard_designs']['length']:0x0;return'Plan\x20BLOCKED\x20by\x20the\x20guide\x20audit\x20(see\x20plan.audit\x20/\x20plan.next_action).\x20Do\x20NOT\x20materialize,\x20'+'and\x20do\x20NOT\x20hand-build\x20the\x20objects\x20instead:\x20this\x20plan\x20is\x20the\x20wiring\x20authority\x20(Arbitration\x20+\x20'+'compensation-fund,\x20Contact/um,\x20allocator\x20rows)\x20and\x20hand-built\x20replicas\x20silently\x20drop\x20those\x20wirings.\x20'+(e>0x0?'Resolve\x20the\x20'+e+'\x20pending\x20guard\x20design(s)\x20in\x20plan.pending_guard_designs\x20via\x20guard_resolutions\x20(kind\x20\x27inline\x27\x20with\x20the\x20Guard\x20table+root,\x20kind\x20\x27template\x27\x20with\x20a\x20tpl_*\x20id,\x20or\x20{kind:\x27omit\x27}\x20for\x20advisory\x20designs\x20that\x20do\x20not\x20apply\x20to\x20this\x20shop),\x20':'Adjust\x20fee_overrides,\x20pick\x20another\x20template\x20variant,\x20or\x20fix\x20the\x20template,\x20')+('then\x20re-run\x20action=\x27'+b+'\x27.');}function templateIntent(a,b){if(b&&b['trim']())return b['trim']();return'Adopt\x20the\x20'+a['id']+'\x20industry\x20archetype\x20template\x20('+a['archetype']+')\x20for\x20the\x20'+a['industry']+'\x20industry.\x20'+('Primary\x20risk\x20to\x20mitigate:\x20'+a['key_risk']+'.');}function effectiveFeeParams(a,b){return{...a['fee_params'],...b??{}};}const REWARD_POOL_PATTERNS=[/(?:reward|review|bonus|tip|prize)[\s-]*pools?\s*(?:of|is|at|:|=)?\s*([0-9][0-9_,]*(?:\.[0-9]+)?)/i,/([0-9][0-9_,]*(?:\.[0-9]+)?)\s*(?:reward|review|bonus|tip|prize)[\s-]*pools?\b/i];export function extractRewardPoolCandidate(a){if(!a)return undefined;for(const b of REWARD_POOL_PATTERNS){const c=b['exec'](a);if(!c)continue;const d=Number(c[0x1]['replaceAll'](/[,_]/g,''));if(Number['isFinite'](d)&&d>=0x0)return d;}return undefined;}function rewardPoolPrefill(a,b,c,d){if(a['fee_params']['review_reward_pool']===undefined)return undefined;if(c?.['review_reward_pool']!==undefined)return undefined;const e=d?claimNumber(d,'reward_pool_amount'):undefined;if(e!==undefined)return{'fee_key':'review_reward_pool','value':e,'claim_source':'semantic_ir'};const f=extractRewardPoolCandidate(b);return f===undefined?undefined:{'fee_key':'review_reward_pool','value':f};}function validateFeeParams(a,b){const c=[];let d=0x0;for(const [e,f]of Object['entries'](a)){if(typeof f!=='number'||!Number['isFinite'](f))continue;if(e['endsWith']('_bps')){(!Number['isInteger'](f)||f<0x0||f>0x2710)&&c['push'](e+'='+f+'\x20is\x20not\x20an\x20integer\x20rate\x20in\x20[0,\x2010000]\x20bps');if(e['endsWith']('_share_bps'))d+=Math['max'](0x0,f);}else{if(e['endsWith']('_days')){if(f<=0x0||f>0xe42)c['push'](e+'='+f+'\x20is\x20outside\x20the\x20sane\x20window\x20range\x20(0,\x203650]\x20days');}else{if(e['endsWith']('_hours')){if(f<=0x0||f>0x2238)c['push'](e+'='+f+'\x20is\x20outside\x20the\x20sane\x20window\x20range\x20(0,\x208760]\x20hours');}}}}if(d>0x2710)c['push']('*_share_bps\x20sum\x20'+d+'\x20exceeds\x2010000\x20(a\x20pool\x20splits\x20into\x20at\x20most\x20100%)');if(c['length']>0x0)throw new Error('invalid\x20fee\x20parameters\x20for\x20template\x20\x27'+b+'\x27:\x20'+c['join'](';\x20')+'.\x20'+'Correct\x20the\x20template\x27s\x20fee_params\x20or\x20pass\x20valid\x20\x27fee_overrides\x27.');}export{validateAllocatorRows};export function variantPaymentModel(a){if(a['payment_model'])return a['payment_model'];const b=a['allocator']['rows']??[];if(b['some'](d=>d['track']==='refund'))return'escrow';const c=a['machine_shape']['map'](d=>d['name'])['join']('\x20')['toLowerCase']();if(/\b(milestone|revision|revis|draft|deliverable)\b/['test'](c))return'milestone';if(/\b(charge|renew|subscription|cycle|billing|monthly)\b/['test'](c))return'subscription';return'escrow';}function variantRefundPolicy(a){const b=a['allocator']['description']['toLowerCase']();if(/full[ -]?refund|100% refund|refund .*100/['test'](b))return'full';if(/pro-?rata|prorated/['test'](b))return'milestone_prorated';if(/partial/['test'](b))return'partial';return undefined;}export function variantDeliverables(a,b){const c=a['machine_shape']['filter'](g=>g['semantic_role']==='final'),d=c[c['length']-0x1]??[...a['machine_shape']]['reverse']()['find'](g=>!/refund|cancel|dispute|terminat/i['test'](g['name']+'\x20'+g['role']))??a['machine_shape'][a['machine_shape']['length']-0x1],e=b?.['has_logistics']?'physical':b?.['pure_digital']?'digital':'service_session',f=(a['guards']??[])['filter'](h=>/repository_data_check|required_info_evidence_gate|allocator_order_anchor/['test'](h['template_id']));return[{'name':a['variant']+'\x20fulfillment','type':e,'acceptanceCriteria':'Order\x20reaches\x20the\x20terminal\x20workflow\x20node\x20\x27'+d['name']+'\x27\x20('+d['role']+')','proofOfDelivery':f['length']>0x0?'wip_hash':'manual_confirm'}];}function validateConditionalParams(a,b){for(const d of a['conditional_guards']??[]){const e=b[d['param']];if(e===undefined)continue;if(typeof e!=='string'||!d['values']['includes'](e))throw new Error('invalid\x20\x27'+d['param']+'='+String(e)+'\x27\x20for\x20template\x20\x27'+a['id']+'\x27:\x20must\x20be\x20one\x20of\x20'+d['values']['map'](f=>'\x27'+f+'\x27')['join']('\x20|\x20')+('\x20(the\x20guard\x20variant\x20mounts\x20at\x20\x27'+d['emit_value']+'\x27)'));}}async function runGuide(a,b,c,d,e,f,g){const h=effectiveFeeParams(a,c),i=rewardPoolPrefill(a,b,c,g);if(i)h[i['fee_key']]=i['value'];validateFeeParams(h,a['id']),validateConditionalParams(a,h);const j=getIndustryModeRegistry()['getMode'](a['industry']),k=platformShareBps(h),l={'model':variantPaymentModel(a)},m=[],n=(a['allocator']['rows']?.['length']??0x0)>0x0;if(k!==undefined&&k>0x0&&!n&&a['allocator']['mode']==='rate'){const r=Math['round'](k)/0x64;m['push']({'recipient':'merchant','percentage':Math['round']((0x64-r)*0x64)/0x64}),m['push']({'recipient':'platform','percentage':r}),l['allocation']=m;}const o=variantRefundPolicy(a),p={'escrow':!![]};if(o)p['refundPolicy']=o;p['arbitration']=a['arbitration_mode']??p['arbitration']??inferArbitration(templateIntent(a,b));const q=await handleMerchantGuide({'intent':templateIntent(a,b),'guide_confirm':{'industry':a['industry'],'payment':l,'trust':p,'deliverables':variantDeliverables(a,j?.['traits']),...d&&Object['keys'](d)['length']>0x0?{'guard_resolutions':d}:{},...e?.['review_mode']?{'review_mode':e['review_mode']}:{},...e?.['reward_funding']!==undefined?{'reward_funding':e['reward_funding']}:{},...e?.['reward_claim_amount']!==undefined?{'reward_claim_amount':e['reward_claim_amount']}:{},...e?.['after_sales_mode']?{'after_sales_mode':e['after_sales_mode']}:{},...e?.['acceptance_mode']?{'acceptance_mode':e['acceptance_mode']}:{},...e?.['installment_mode']?{'installment_mode':e['installment_mode']}:{},...e?.['affiliate_mode']?{'affiliate_mode':e['affiliate_mode']}:{},...e?.['crowdfunding_mode']?{'crowdfunding_mode':e['crowdfunding_mode']}:{},...f?.['length']?{'sales':f}:{}},'template_override':{...a,'fee_params':h},'name_base':a['id']});if(a['allocator']['rows']?.['length'])q['template_allocator_rows']=a['allocator']['rows']['map'](s=>({...s}));q['template']={'id':a['id'],'archetype':a['archetype'],'recommended_role':a['recommended_role'],'fee_params':h},q['template_fee_param_landings']=buildFeeParamLandingTable(a,h);if(c&&Object['keys'](c)['length']>0x0)q['template_fee_overrides']=c;if(i){q['fee_overrides_prefill']=i;const s=i['claim_source']==='semantic_ir'?'\x20(from\x20the\x20semantic\x20IR\x20claim)':'';q['next_action']=q['next_action']+'\x20Reward\x20pool\x20prefilled\x20from\x20your\x20request:\x20'+i['value']+s+'\x20—\x20adjust\x20via\x20fee_overrides.';}return q;}export async function handleBenchmarkMigrationOperation(a){const b=strictParse(BenchmarkMigrationSchema,a,'benchmark_migration_operation\x20input'),c=b['industry']?resolveIndustryName(b['industry'])??b['industry']['toLowerCase']():undefined,d=b['semantic_ir']?normalizeSemanticIR(b['semantic_ir']):undefined,e=d?{'semantic_ir_digest':d['digest'],...d['issues']['length']>0x0?{'semantic_ir_issues':d['issues']}:{}}:undefined;let f;switch(b['action']){case'template_list':{const {templates:g,errors:h}=listTemplates(),i=c?g['filter'](k=>k['industry']===c):g,j=new Map(builtinTemplateDrift()['map'](k=>[k['template'],k['state']]));f={'action':'template_list','count':i['length'],'templates':i['map'](k=>({...templateSummary(k),'disk_state':j['get'](k['id'])??(BUILTIN_TEMPLATES['some'](l=>l['id']===k['id'])?'current':'untracked')})),'load_errors':h};break;}case'template_get':{const k=requireTemplate(b['template_id'],'template_get');f={'action':'template_get','template':{...k,...templateGetAids(k)}};break;}case'template_generate':{const l=requireTemplate(b['template_id'],'template_generate'),m=b['review_mode']??l['review_mode']??'none';if(m==='review_reward'&&!b['reward_funding'])return{'content':[{'type':'text','text':'template_generate\x20refused\x20—\x20no\x20plan\x20was\x20built.\x20Template\x20\x27'+l['id']+'\x27\x20resolves\x20to\x20review_mode\x20\x27review_reward\x27\x20(input'+(b['review_mode']?'':'\x20via\x20template\x20declaration')+'),\x20which\x20promises\x20buyers\x20a\x20claimable\x20review\x20bounty\x20—\x20an\x20unfunded\x20pool\x20must\x20not\x20ship.\x20Pass\x20reward_funding\x20(smallest-unit\x20string),\x20or\x20drop\x20the\x20mode\x20explicitly\x20(review_mode\x20\x27review\x27\x20keeps\x20the\x20review\x20rail\x20without\x20the\x20bounty;\x20\x27none\x27\x20removes\x20the\x20rail).'}],'structuredContent':{'result':{'type':'error','error':'review_mode\x20\x27'+m+'\x27\x20without\x20reward_funding\x20(INV-4)\x20on\x20template\x20\x27'+l['id']+'\x27.','error_code':'reward_funding_required','retryable':!![],'recovery_hint':'Pass\x20reward_funding\x20=\x20expected\x20orders\x20x\x20per-order\x20reward\x20(fee_param\x20review_reward_pool\x20is\x20the\x20planning\x20benchmark),\x20or\x20re-send\x20with\x20review_mode:\x27review\x27\x20(rail\x20only)\x20/\x20\x27none\x27\x20(no\x20rail).'},'message':'Refused:\x20a\x20review_reward\x20build\x20requires\x20a\x20funded\x20reward\x20pool.\x20See\x20recovery_hint.'}};if(!Array['isArray'](b['sales'])||b['sales']['length']===0x0)return{'content':[{'type':'text','text':'template_generate\x20refused\x20—\x20no\x20plan\x20was\x20built.\x20The\x20sellable\x20catalog\x20(sales)\x20is\x20required:\x20a\x20plan\x20without\x20one\x20publishes\x20a\x20Service\x20frozen\x20with\x20sales:\x20[]\x20and\x20every\x20order_new\x20aborts\x20(PLAN-SALES-01).\x20List\x20at\x20least\x20one\x20SKU:\x20{\x20name,\x20price,\x20quantity?,\x20wip_hash?\x20}\x20—\x20price\x20in\x20smallest\x20units.'}],'structuredContent':{'result':{'type':'error','error':'template_generate\x20without\x20a\x20non-empty\x20sales\x20catalog\x20(PLAN-SALES-01\x20upgraded\x20to\x20an\x20input\x20requirement,\x20amz9\x20A-2).','error_code':'sales_required','retryable':!![],'recovery_hint':'Pass\x20sales:\x20[{\x20name,\x20price,\x20quantity?,\x20wip_hash?\x20}]\x20—\x20one\x20entry\x20per\x20sellable\x20SKU\x20(wip_hash\x20from\x20the\x20wip_file\x20tool\x20upload).\x20migration_apply\x20is\x20unaffected:\x20it\x20confirms\x20an\x20already-reviewed\x20import.'},'message':'Refused:\x20template_generate\x20requires\x20a\x20sellable\x20catalog.\x20See\x20recovery_hint.'}};const n=scanTemplate(l);assertGenerateScanPassed(n,'template_generate');const o=await runGuide(l,b['description'],b['fee_overrides'],b['guard_resolutions'],{'review_mode':b['review_mode'],'reward_funding':b['reward_funding'],'reward_claim_amount':b['reward_claim_amount'],'after_sales_mode':b['after_sales_mode'],'acceptance_mode':b['acceptance_mode'],'installment_mode':b['installment_mode'],'affiliate_mode':b['affiliate_mode'],'crowdfunding_mode':b['crowdfunding_mode']},b['sales'],d?.['ir']);f=((()=>{const p=scanSummary(n,driftFace(l['id'])),q=buildVerdict(p,o);return{'action':'template_generate','template_id':l['id'],...e,'scan':p,'plan':o,'verdict':q,'next_action':planNextAction(o,'template_generate',q)};})());break;}case'template_scan':{const p=requireTemplate(b['template_id'],'template_scan'),q=await templateScanDryRun(p);f={'action':'template_scan','scan':{...scanTemplate(p),'drift':driftFace(p['id']),'compile_dry_run':q}};break;}case'migration_import':{if(!b['description']||!b['description']['trim']())throw new Error('\x27description\x27\x20is\x20required\x20for\x20action=\x27migration_import\x27');const r=d?handleRecommendIndustry({'intent':b['description'],'semantic_ir':b['semantic_ir']}):undefined,s=planMigration({'url':b['url'],'description':b['description'],'industry':c,'ir_industry':c?undefined:r?.['recommendations'][0x0]?.['industry'],'network':b['network']});if(!s)throw new Error('No\x20industry\x20template\x20matched\x20the\x20description.\x20Refine\x20the\x20description\x20or\x20pass\x20an\x20explicit\x20\x27industry\x27\x20hint'+(d?',\x20or\x20provide\x20semantic_ir\x20with\x20trait/domain\x20evidence.':'\x20(or\x20provide\x20semantic_ir\x20for\x20a\x20non-English\x20description).'));f={'action':'migration_import','log':s,...r?{'inference_source':r['inference_source']}:{},...e,'next_action':'MigrationLog\x20ready.\x20Next:\x20call\x20action=\x27migration_review\x27\x20with\x20this\x20log\x20to\x20surface\x20the\x20mapped/unmapped/manual_review\x20items\x20for\x20user\x20confirmation.'};break;}case'migration_review':{if(!b['log'])throw new Error('\x27log\x27\x20is\x20required\x20for\x20action=\x27migration_review\x27');const t=b['log'],u=Array['isArray'](t['mapped'])?t['mapped']:[],v=Array['isArray'](t['unmapped'])?t['unmapped']:[],w=Array['isArray'](t['manual_review'])?t['manual_review']:[],x=t['risk_check']??{},y=t['source']?.['matched_template']??'',z=v['length']===0x0&&w['length']===0x0&&x['passed']===!![];f={'action':'migration_review','log':t,'review_summary':{'mapped_count':u['length'],'unmapped_count':v['length'],'manual_review_count':w['length'],'risk_passed':x['passed']===!![]},'next_action':z?'Review\x20clean.\x20Proceed:\x20call\x20action=\x27migration_apply\x27\x20with\x20template_id=\x27'+y+'\x27\x20to\x20produce\x20the\x20creation\x20plan\x20(network\x20defaults\x20to\x20testnet;\x20mainnet\x20requires\x20explicit\x20user\x20confirmation).':'Surface\x20the\x20'+v['length']+'\x20unmapped\x20and\x20'+w['length']+'\x20manual_review\x20items'+(x['passed']===!![]?'':'\x20plus\x20the\x20risk_check\x20findings')+'\x20to\x20the\x20user\x20for\x20a\x20decision\x20before\x20action=\x27migration_apply\x27\x20(template_id=\x27'+y+'\x27).'};break;}case'migration_apply':{const A=requireTemplate(b['template_id'],'migration_apply'),B=scanTemplate(A);assertScanPassed(B,'migration_apply');const C=b['network']??'testnet',D=await runGuide(A,b['description'],b['fee_overrides'],b['guard_resolutions'],{'review_mode':b['review_mode'],'reward_funding':b['reward_funding'],'reward_claim_amount':b['reward_claim_amount'],'after_sales_mode':b['after_sales_mode'],'acceptance_mode':b['acceptance_mode'],'installment_mode':b['installment_mode'],'affiliate_mode':b['affiliate_mode'],'crowdfunding_mode':b['crowdfunding_mode']},b['sales'],d?.['ir']);f=((()=>{const E=scanSummary(B,driftFace(A['id'])),F=buildVerdict(E,D);return{'action':'migration_apply','template_id':A['id'],'network':C,...e,'scan':E,'plan':D,'verdict':F,'next_action':planNextAction(D,'migration_apply',F)};})());break;}default:throw new Error('Unknown\x20benchmark_migration_operation\x20action:\x20'+String(b['action']));}return{'content':[{'type':'text','text':JSON['stringify']({'result':f})}],'structuredContent':{'result':f}};}
@@ -1 +1 @@
1
- import{listServices,getServiceInfo,toggle as a496a,setEnabled as a496b,reset as a496c}from'../../config/index.js';import{judgmentStatus,setJudgmentOverride,clearJudgmentOverride,clearJudgmentOverrides,patchUserJudgmentDoc,readUserJudgmentDocView}from'../../config/judgment.js';import{strictParse}from'../../schema/index.js';import{ConfigOperationInputSchema}from'../../schema/config/index.js';export async function handleConfigOperation(a){const b=strictParse(ConfigOperationInputSchema,a,'config_operation\x20input'),{action:c,service:d,path:e,value:f}=b;let g;switch(c){case'list':g={'action':'list','services':listServices()};break;case'toggle':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20toggle');const h=d,i=getServiceInfo(h);if(!i)throw new Error('Unknown\x20service:\x20'+h+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');if(h==='confirm_gate'&&i['enabled'])throw new Error('confirm_gate\x20cannot\x20be\x20disabled\x20at\x20runtime.\x20'+'Set\x20WOWOK_CONFIRM_GATE=0\x20in\x20the\x20server\x20environment\x20and\x20restart\x20if\x20you\x20really\x20want\x20it\x20off.');const j=a496a(h);g={'action':'toggle','service':h,'enabled':j,'reminder':i['reminder']};break;}case'disable':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20disable');const k=d,l=getServiceInfo(k);if(!l)throw new Error('Unknown\x20service:\x20'+k+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');if(k==='confirm_gate')throw new Error('confirm_gate\x20cannot\x20be\x20disabled\x20at\x20runtime.\x20'+'Set\x20WOWOK_CONFIRM_GATE=0\x20in\x20the\x20server\x20environment\x20and\x20restart\x20if\x20you\x20really\x20want\x20it\x20off.');a496b(k,![]),g={'action':'disable','service':k,'enabled':![],'reminder':l['reminder']};break;}case'enable':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20enable');const m=d,n=getServiceInfo(m);if(!n)throw new Error('Unknown\x20service:\x20'+m+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');a496b(m,!![]),g={'action':'enable','service':m,'enabled':!![],'reminder':n['reminder']};break;}case'reset':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20reset');const o=d,p=getServiceInfo(o);if(!p)throw new Error('Unknown\x20service:\x20'+o+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');a496c(o),g={'action':'reset','service':o,'enabled':getServiceInfo(o)?.['enabled'],'reminder':p['reminder'],'reset':!![]};break;}case'info':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20info');const q=d,r=getServiceInfo(q);if(!r)throw new Error('Unknown\x20service:\x20'+q+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');g={'action':'info',...r};break;}case'judgment_list':g={'action':'judgment_list',...judgmentStatus()};break;case'judgment_set':{if(!e)throw new Error('\x27path\x27\x20param\x20is\x20required\x20for\x20judgment_set\x20(dotted,\x20e.g.\x20\x27evaluation.weights.trust_reviews\x27)');if(!('value'in b))throw new Error('\x27value\x27\x20param\x20is\x20required\x20for\x20judgment_set');const s=setJudgmentOverride(e,f);if(!s['ok'])throw new Error(s['error']);g={'action':'judgment_set','path':e,'value':f,'applied':!![]};break;}case'judgment_reset':{const t=e?clearJudgmentOverride(e)?0x1:0x0:clearJudgmentOverrides();g={'action':'judgment_reset',...e?{'path':e}:{},'cleared':t};break;}case'judgment_doc_read':{g={'action':'judgment_doc_read',...readUserJudgmentDocView()};break;}case'judgment_doc_patch':{if(!b['patch']||typeof b['patch']!=='object'||Array['isArray'](b['patch']))throw new Error('\x27patch\x27\x20param\x20is\x20required\x20for\x20judgment_doc_patch\x20(a\x20partial\x20judgment\x20document\x20object,\x20e.g.\x20{\x22evaluation\x22:\x20{\x22weights\x22:\x20{…}}})');g={'action':'judgment_doc_patch',...patchUserJudgmentDoc(b['patch'])};break;}default:throw new Error('Unknown\x20config_operation\x20action:\x20'+String(c));}return{'content':[{'type':'text','text':JSON['stringify']({'result':g})}],'structuredContent':{'result':g}};}
1
+ import{listServices,getServiceInfo,toggle as a498a,setEnabled as a498b,reset as a498c}from'../../config/index.js';import{judgmentStatus,setJudgmentOverride,clearJudgmentOverride,clearJudgmentOverrides,patchUserJudgmentDoc,readUserJudgmentDocView}from'../../config/judgment.js';import{strictParse}from'../../schema/index.js';import{ConfigOperationInputSchema}from'../../schema/config/index.js';export async function handleConfigOperation(a){const b=strictParse(ConfigOperationInputSchema,a,'config_operation\x20input'),{action:c,service:d,path:e,value:f}=b;let g;switch(c){case'list':g={'action':'list','services':listServices()};break;case'toggle':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20toggle');const h=d,i=getServiceInfo(h);if(!i)throw new Error('Unknown\x20service:\x20'+h+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');if(h==='confirm_gate'&&i['enabled'])throw new Error('confirm_gate\x20cannot\x20be\x20disabled\x20at\x20runtime.\x20'+'Set\x20WOWOK_CONFIRM_GATE=0\x20in\x20the\x20server\x20environment\x20and\x20restart\x20if\x20you\x20really\x20want\x20it\x20off.');const j=a498a(h);g={'action':'toggle','service':h,'enabled':j,'reminder':i['reminder']};break;}case'disable':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20disable');const k=d,l=getServiceInfo(k);if(!l)throw new Error('Unknown\x20service:\x20'+k+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');if(k==='confirm_gate')throw new Error('confirm_gate\x20cannot\x20be\x20disabled\x20at\x20runtime.\x20'+'Set\x20WOWOK_CONFIRM_GATE=0\x20in\x20the\x20server\x20environment\x20and\x20restart\x20if\x20you\x20really\x20want\x20it\x20off.');a498b(k,![]),g={'action':'disable','service':k,'enabled':![],'reminder':l['reminder']};break;}case'enable':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20enable');const m=d,n=getServiceInfo(m);if(!n)throw new Error('Unknown\x20service:\x20'+m+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');a498b(m,!![]),g={'action':'enable','service':m,'enabled':!![],'reminder':n['reminder']};break;}case'reset':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20reset');const o=d,p=getServiceInfo(o);if(!p)throw new Error('Unknown\x20service:\x20'+o+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');a498c(o),g={'action':'reset','service':o,'enabled':getServiceInfo(o)?.['enabled'],'reminder':p['reminder'],'reset':!![]};break;}case'info':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20info');const q=d,r=getServiceInfo(q);if(!r)throw new Error('Unknown\x20service:\x20'+q+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');g={'action':'info',...r};break;}case'judgment_list':g={'action':'judgment_list',...judgmentStatus()};break;case'judgment_set':{if(!e)throw new Error('\x27path\x27\x20param\x20is\x20required\x20for\x20judgment_set\x20(dotted,\x20e.g.\x20\x27evaluation.weights.trust_reviews\x27)');if(!('value'in b))throw new Error('\x27value\x27\x20param\x20is\x20required\x20for\x20judgment_set');const s=setJudgmentOverride(e,f);if(!s['ok'])throw new Error(s['error']);g={'action':'judgment_set','path':e,'value':f,'applied':!![]};break;}case'judgment_reset':{const t=e?clearJudgmentOverride(e)?0x1:0x0:clearJudgmentOverrides();g={'action':'judgment_reset',...e?{'path':e}:{},'cleared':t};break;}case'judgment_doc_read':{g={'action':'judgment_doc_read',...readUserJudgmentDocView()};break;}case'judgment_doc_patch':{if(!b['patch']||typeof b['patch']!=='object'||Array['isArray'](b['patch']))throw new Error('\x27patch\x27\x20param\x20is\x20required\x20for\x20judgment_doc_patch\x20(a\x20partial\x20judgment\x20document\x20object,\x20e.g.\x20{\x22evaluation\x22:\x20{\x22weights\x22:\x20{…}}})');g={'action':'judgment_doc_patch',...patchUserJudgmentDoc(b['patch'])};break;}default:throw new Error('Unknown\x20config_operation\x20action:\x20'+String(c));}return{'content':[{'type':'text','text':JSON['stringify']({'result':g})}],'structuredContent':{'result':g}};}
@@ -1 +1 @@
1
- import{strictParse}from'../../schema/index.js';import{EvaluationOperationInputSchema}from'../../schema/evaluation/index.js';import{evaluateArbGame}from'../../evaluation/arbitration-game.js';import{evaluateNodeGame}from'../../evaluation/node-game.js';import{evaluatePathReasoning}from'../../evaluation/path-reasoning.js';import{assessEvidenceReview,reviewEvidenceList}from'../../knowledge/evidence-review.js';import{expandSearchScope,inferSensitivity,rankByLocation}from'../../evaluation/location-match.js';import{query_objects,ArbStatus,createQueryCoverage,discoveryDataSource,remoteIndexUrl}from'@wowok/wowok';import{enumerateServices,enumerateDemands,enumerateArbs,matchServicesViaIndex}from'../../knowledge/jsonrpc-enum.js';import{KNOWN_CAPABILITIES}from'../../data/api/match.js';import{fetchObjectLinkerCore,batchQueryObjectsByIds}from'../../graph/onchain/sdk-batch.js';import{summarizeCapabilityGaps}from'../../evaluation/gap.js';import{resolveNetwork}from'./network.js';import{composeServicesForDemand}from'../../evaluation/composer.js';import{matchDemandToServices,matchServiceToDemands}from'../../evaluation/builtins/demand-match.js';import{nextOperationForServiceMatch,nextOperationForDemandMatch,nextOperationForServiceOrder}from'../../evaluation/match-operation.js';import{extractDemandCapability}from'../../evaluation/extract.js';import{assessArbitration}from'../../evaluation/builtins/arbitration-score.js';import{resolveCategoryMatchRules,toSoftWeightInjection,applyHardConstraints}from'../../evaluation/category-match-rules.js';import{computeMarketMetrics,computeOrderFlow}from'../../knowledge/market-metrics.js';import{workflowSubgraphFromRows}from'../../graph/onchain/index.js';import{assessAntiCheat}from'../../knowledge/anti-cheat.js';import{computeJourneyFunnel,attributeReferrals,buildCustomerRelationships}from'../../knowledge/market-operations.js';import{suggestPricing}from'../../knowledge/dynamic-pricing.js';import{runAccountEventWatchers}from'../../customer/account-events.js';import{registerBuiltinEvaluations}from'../../evaluation/builtins/index.js';import{getEffectivePersona,mergeInjections}from'../../persona/index.js';import{buildUserInjection}from'../../evaluation/injection.js';import{applyPolicyGates,applyPolicyRerank,buildPolicyEffect,policyToInjection,resolveMatchPolicy}from'../../evaluation/match-policy.js';registerBuiltinEvaluations();function arbCaseFromObject(b){const c=typeof b['time']==='number'?b['time']:Number(b['time']??0x0);return{'status':b['status'],'time':Number['isFinite'](c)?c:undefined,'resolved_time':typeof b['indemnity']?.['time']==='number'?b['indemnity']['time']:b['compensation_time']??undefined,'indemnity_amount':b['indemnity']?.['amount'],'objected':b['status']===ArbStatus['Objectionable']||b['objection']!=null&&b['objection']['length']>0x0};}async function arbCasesWithRoles(a,b){const c=a['map'](arbCaseFromObject),d=Array['from'](new Set(a['map'](j=>j['order'])['filter'](Boolean))),e=new Map(),f=[];if(d['length']>0x0){const j=await batchQueryObjectsByIds(d,b);for(const k of j){const l=k;if(!l?.['object'])continue;e['set'](l['object'],l);if(l['service'])f['push'](l['service']);}}const g=new Map(),h=Array['from'](new Set(f));if(h['length']>0x0){const m=await batchQueryObjectsByIds(h,b);for(const n of m){const p=n;if(p?.['object'])g['set'](p['object'],p);}}for(let q=0x0;q<a['length'];q++){const r=e['get'](a[q]['order']);if(!r)continue;c[q]['customer']=r['builder']||undefined;const t=g['get'](r['service']);if(t)c[q]['merchant']=t['permission']||undefined;}return c;}function capabilityFromInput(a){return{'id':a['id'],'kind':a['kind'],'owner':a['owner']??'','industry':a['industry'],'industry_confidence':a['industry_confidence']??0x0,'region':a['region'],'price_min':a['price_min']!==undefined?BigInt(a['price_min']):undefined,'price_max':a['price_max']!==undefined?BigInt(a['price_max']):undefined,'token_type':a['token_type']??'','ticket_size':a['ticket_size']??'medium','trust_score':a['trust_score']??0x32,'reputation_like_ratio':a['reputation_like_ratio']??0x1,'arbitration_independent':a['arbitration_independent']??![],'merchant_history_count':a['merchant_history_count']??0x0,'capabilities':a['capabilities'],'tags':a['tags']??[],'keywords':a['keywords']??[]};}async function resolveInjection(a,b){return mergeInjections(await buildUserInjection(a),b);}function serviceSummaryToExtract(a){const b=a['json']??{},c=f=>typeof f==='string'?f:undefined,d=f=>typeof f==='string'?f:null,e=Array['isArray'](b['sales'])?b['sales']['map'](f=>{const g=f?.['fields']??f;return{'name':typeof g?.['name']==='string'?g['name']:undefined,'price':typeof g?.['price']==='string'?g['price']:g?.['price']!=null?String(g['price']):'0','wip_hash':typeof g?.['wip_hash']==='string'?g['wip_hash']:undefined};}):[];return{'object':a['object'],'description':c(b['description'])??'','location':a['location']??c(b['location'])??'','sales':e,'arbitrations':Array['isArray'](b['arbitrations'])?b['arbitrations']['map'](String):[],'compensation_fund':c(b['compensation_fund']),'buy_guard':d(b['buy_guard']),'machine':d(b['machine']),'um':d(b['um']),'bPublished':b['bPublished']===!![],'bPaused':b['bPaused']===!![],'owner':c(b['owner'])};}export async function handleEvaluationOperation(a){const b=strictParse(EvaluationOperationInputSchema,a,'evaluation_operation\x20input');let c;switch(b['action']){case'arb_game':{const e=b['account']?await getEffectivePersona(b['account']):null,f=b['appetite']??e?.['layer']['preferences']?.['risk_appetite'],g=b['requirements']??e?.['layer']['requirements'];c={'action':'arb_game',...evaluateArbGame(b['status'],b['perspective'],{'risk_appetite':f,'requirements':g})};break;}case'node_game':{const h=b['account']?await getEffectivePersona(b['account']):null,i=b['appetite']??h?.['layer']['preferences']?.['risk_appetite'],j=b['requirements']??h?.['layer']['requirements'];c={'action':'node_game',...evaluateNodeGame({'current_node':b['current_node'],'perspective':b['perspective'],'appetite':i,'requirements':j,'threshold':b['threshold'],'allocation':b['allocation'],'order_amount':b['order_amount'],'compensation_fund':b['compensation_fund'],'operable':b['operable'],'waiting_on':b['waiting_on']??[]})};break;}case'capability_gap':{c={'action':'capability_gap','report':summarizeCapabilityGaps(capabilityFromInput(b['demand']),capabilityFromInput(b['service']))};break;}case'compose_service':{c={'action':'compose_service','plan':composeServicesForDemand(capabilityFromInput(b['demand']),b['services']['map'](capabilityFromInput))};break;}case'demand_match':{const k=await matchDemandToServices(capabilityFromInput(b['demand_cap']),b['services'],await resolveInjection(b['account'],b['injection']),0x5,b['presenter_history']);c={'action':'demand_match','matches':k['map'](l=>({'service':l['service'],'result':l['result'],'next':nextOperationForDemandMatch(l['service']),'order':nextOperationForServiceOrder(l['service'])}))};break;}case'service_match':{const l=await matchServiceToDemands(capabilityFromInput(b['service_cap']),b['demands'],await resolveInjection(b['account'],b['injection']),0x5,b['presenter_history']);c={'action':'service_match','matches':l['map'](n=>({'demand':n['demand'],'result':n['result'],'next':nextOperationForServiceMatch(n['demand'],null)}))};break;}case'path_reasoning':{const m=b['account']?await getEffectivePersona(b['account']):null,n=b['appetite']??m?.['layer']['preferences']?.['risk_appetite'],o=b['requirements']??m?.['layer']['requirements'];c={'action':'path_reasoning',...evaluatePathReasoning({'current_node':b['current_node'],'perspective':b['perspective'],'workflow':workflowSubgraphFromRows(b['machine_nodes']),'node_annotations':b['node_annotations'],'appetite':n,'requirements':o,'order_amount':b['order_amount'],'max_depth':b['max_depth']})};break;}case'evidence_review':{b['items']&&b['items']['length']>0x0?c={'action':'evidence_review','list':reviewEvidenceList(b['items'])}:c={'action':'evidence_review','review':assessEvidenceReview({'kind':b['kind'],'hash_committed':b['hash_committed'],'digital_check_passed':b['digital_check_passed'],'contradiction':b['contradiction']})};break;}case'discover_services':{const p=!b['sensitivity']?inferSensitivity(b['description']??''):null,q=b['sensitivity']??p['sensitivity'],r=p?.['signals']??[],s=await resolveNetwork(b['context_network']),t={'raw':b['location'],...b['region']??{}},u=expandSearchScope(q,t),v=await enumerateServices(s,{'max_objects':b['max_objects'],'no_cache':b['no_cache'],'location_any':u['search_terms'],'coin_type':b['coin_type'],'name_contains':b['name_contains']}),w=rankByLocation(q,t,v['services']['map'](x=>({'id':x['object'],'name':x['name'],'location':x['location']})));c={'action':'discover_services','sensitivity':q,'inference_signals':r,'services':w['map'](x=>{const y=v['services']['find'](z=>z['object']===x['id']);return{'object':x['id'],'name':y?.['name'],'location':y?.['location'],'relation':x['relation'],'satisfied':x['satisfied'],'score':x['score'],'reason':x['reason']};}),'total_enumerated':v['total_enumerated'],'has_more':v['has_more'],'coverage':v['coverage'],'scope_advice':{'search_terms':u['search_terms'],'ai_enrichment_note':u['ai_enrichment_note']}};break;}case'discover_demands':{const x=await resolveNetwork(b['context_network']),y=await enumerateDemands(x,{'max_objects':b['max_objects'],'no_cache':b['no_cache']}),z=b['location']?.['toLowerCase'](),A=y['demands']['filter'](B=>!z||(B['location']??'')['toLowerCase']()['includes'](z))['map'](B=>({'object':B['object'],'description':B['description']??'','location':B['location']??'','presenters_count':B['presenters_count']??0x0,'permission':B['permission']??''}));c={'action':'discover_demands','demands':A,'total_enumerated':y['total_enumerated'],'has_more':y['has_more'],'coverage':y['coverage']};break;}case'demand_present':{const B=await resolveNetwork(b['context_network']),C=await enumerateDemands(B,{'max_objects':b['max_objects'],'no_cache':b['no_cache']}),D=b['location']?.['toLowerCase'](),E=C['demands']['filter'](I=>!D||(I['location']??'')['toLowerCase']()['includes'](D)),F=new Map(E['map'](I=>[I['object'],(I['guards']?.['length']??0x0)>0x0])),G=E['map'](I=>({'object':I['object'],'description':I['description']??'','location':I['location']??'','rewards':I['rewards']??[],'um':I['um']??null})),H=await matchServiceToDemands(capabilityFromInput(b['service_cap']),G,await resolveInjection(b['account'],b['injection']),b['limit']??0x5);c={'action':'demand_present','matches':H['map'](I=>{const J=F['get'](I['demand']['object'])??![];return{'demand':I['demand'],'result':I['result'],'next':nextOperationForServiceMatch(I['demand'],J)};}),'total_enumerated':C['total_enumerated'],'has_more':C['has_more'],'coverage':C['coverage']};break;}case'market_metrics':{const I=await resolveNetwork(b['context_network']),J=await computeMarketMetrics(I,b['no_cache']),K=await computeOrderFlow(I,{'noCache':b['no_cache'],'maxPages':b['limit']?Math['max'](0x1,Math['ceil'](b['limit']/0x32)):undefined});c={'action':'market_metrics',...J,'order_flow':K};break;}case'anti_cheat':{const L=assessAntiCheat({'service':{'object':b['service']['object'],'arbitrations':b['service']['arbitrations'],'compensation_fund':b['service']['compensation_fund'],'machine':b['service']['machine'],'bPublished':b['service']['bPublished']},'orders':b['orders'],'reviews':b['reviews']});c={'action':'anti_cheat','signals':L};break;}case'market_operations':{if(b['op']==='journey_funnel')c={'action':'market_operations','result':computeJourneyFunnel({'due_diligence':b['due_diligence']??0x0,'orders':b['orders']??0x0,'completed':b['completed']??0x0,'reviews':b['reviews']??0x0})};else{if(b['op']==='referral_attribution')c={'action':'market_operations','result':attributeReferrals(b['referral_orders']??[])};else{if(b['op']==='dynamic_pricing'){const M=b['market_signals'];if(!M)throw new Error('dynamic_pricing\x20op\x20requires\x20market_signals');c={'action':'market_operations','result':suggestPricing({'supplyCount':M['supplyCount'],'demandCount':M['demandCount'],'avgPrice':M['avgPrice'],'myPrice':M['myPrice'],'competitorPrices':M['competitorPrices'],'recentOrderCount':M['recentOrderCount'],'repeatCustomerRate':M['repeatCustomerRate']})};}else c={'action':'market_operations','result':buildCustomerRelationships(b['customer_orders']??[])};}}break;}case'match_discover':{const N=!b['sensitivity']?inferSensitivity(b['description']??''):null,O=b['sensitivity']??N['sensitivity'],P=N?.['signals']??[],Q=await resolveNetwork(b['context_network']),R={'raw':b['location'],...b['region']??{}},S=expandSearchScope(O,R),T=resolveMatchPolicy(b['match_policy'],'demand_to_supply'),U=(b['required_capabilities']??[])['filter'](ag=>KNOWN_CAPABILITIES['includes'](ag)),V=!b['coin_type']&&!b['name_contains'],W=discoveryDataSource();let X,Y=new Map(),Z='legacy_enumeration';const a0=()=>enumerateServices(Q,{'max_objects':b['max_objects'],'no_cache':b['no_cache'],'location_any':S['search_terms'],'coin_type':b['coin_type'],'name_contains':b['name_contains']});if(V&&W!=='legacy'&&remoteIndexUrl())try{const ag=await matchServicesViaIndex(Q,{'q':b['description'],'location':b['location'],'budgetWei':b['budget'],'capabilities':U['length']>0x0?U:undefined,'limit':Math['min'](0x64,b['max_objects']??0x64),'recallLimit':Math['min'](0x3e8,Math['max'](0xc8,b['max_objects']??0xc8))});X={'services':ag['candidates']['map'](ah=>({'object':ah['objectId'],'location':ah['publicFeatures']['location']??'','json':ah['payloadJson']??null})),'total_enumerated':ag['recall']['liveSet']??ag['recall']['gated'],'has_more':ag['truncated'],'coverage':ag['coverage']},Y=new Map(ag['candidates']['map'](ah=>[ah['objectId'],ah])),Z='remote_index';}catch(ah){if(W==='remote')throw ah;X=await a0();const ai=ah?.['code'],aj=typeof ai==='string'&&/^INDEX_[A-Z_]+$/['test'](ai)?ai:'INDEX_UNAVAILABLE';X['coverage']=createQueryCoverage({'mode':X['coverage']['mode'],'totalEnumerated':X['coverage']['total_enumerated'],'truncated':X['coverage']['truncated'],'chainId':X['coverage']['chain_id'],'degradedReasons':[...X['coverage']['degraded_reasons'],'MATCH_INDEX_FALLBACK',aj]});}else X=await a0();const a1=new Set(b['required_capabilities']??[]),a2=extractDemandCapability({'object':'intent','description':b['description'],'location':b['location'],'owner':b['account']},{'price_max':b['budget']!==undefined?BigInt(b['budget']):undefined,'capabilities':{'has_arbitration':a1['has']('has_arbitration'),'has_refund_path':a1['has']('has_refund_path'),'has_milestone_nodes':a1['has']('has_milestone_nodes'),'has_compensation_fund':a1['has']('has_compensation_fund'),'has_wip_verification':a1['has']('has_wip_verification'),'has_messenger':a1['has']('has_messenger'),'has_buy_guard':a1['has']('has_buy_guard'),'has_dynamic_pricing':a1['has']('has_dynamic_pricing'),'is_published':!![],'is_paused':![]}}),a3=rankByLocation(O,R,X['services']['map'](ak=>({'id':ak['object'],'name':ak['name'],'location':ak['location']}))),a4=a3['filter'](ak=>ak['satisfied']),a5=X['services']['filter'](ak=>a4['some'](al=>al['id']===ak['object']))['map'](serviceSummaryToExtract),a6=resolveCategoryMatchRules(b['category']);let a7=a5;const a8=[];if(a6){const ak=applyHardConstraints(a6,a5);a7=ak['passed'];for(const al of ak['dropped']){a8['push']({'object':al['candidate']['object'],'reason':al['constraint']['description']});}}let a9=await resolveInjection(b['account'],b['injection']);a6&&(a9=mergeInjections(a9,toSoftWeightInjection(a6)));let aa,ab;if(T){const am=applyPolicyGates(T,a7,{'budgetWei':b['budget']!==undefined?BigInt(b['budget']):undefined});a7=am['passed'];const an=policyToInjection(T);a9=mergeInjections(a9,an['injection']),ab={'gateOutcome':am,'weights':an};}const ac=await matchDemandToServices(a2,a7,a9,a7['length'],b['presenter_history']),ad=new Map(ac['map'](ao=>[ao['service']['object'],ao['result']])),ae=new Set(a7['map'](ao=>ao['object']));let af=a4['filter'](ao=>ae['has'](ao['id']))['map'](ao=>{const ap=X['services']['find'](ar=>ar['object']===ao['id']),aq=Y['get'](ao['id']);return{'service':serviceSummaryToExtract(ap),'location':{'relation':ao['relation'],'satisfied':ao['satisfied'],'score':ao['score'],'reason':ao['reason']},'result':ad['get'](ao['id']),...aq?{'server_match':{'policy_version':aq['serverEvaluation']['policyVersion'],'total':aq['serverEvaluation']['total'],'breakdown':aq['serverEvaluation']['breakdown'],'unknown_rules':aq['serverEvaluation']['unknownRules'],'red_flags':aq['serverEvaluation']['redFlags'],'channels':aq['channels'],'rrf':aq['rrf']}}:{}};});if(T&&ab){const ao=applyPolicyRerank(af,T);af=ao['matches'],aa=buildPolicyEffect(T,ab['gateOutcome'],ab['weights'],ao);}c={'action':'match_discover','sensitivity':O,'inference_signals':P,'match_route':Z,'matches':af,'total_enumerated':X['total_enumerated'],'has_more':X['has_more'],'coverage':X['coverage'],'scope_advice':{'search_terms':S['search_terms'],'ai_enrichment_note':S['ai_enrichment_note']},...aa?{'policy_effect':aa}:{}};break;}case'arbitration_score':{let ap=b['history'];const aq=b['context_network']??'testnet';if((!ap||ap['length']===0x0)&&b['arbitration']['object'])try{const as=await enumerateArbs(aq,{'arbitration':b['arbitration']['object']});ap=await arbCasesWithRoles(as['arbs'],aq);}catch{ap=b['history'];}if((!ap||ap['length']===0x0)&&b['arbitration']['object'])try{const at=await query_objects({'objects':[b['arbitration']['object']],'network':aq}),au=at?.['objects']?.[0x0];if(au?.['permission']){const av=await fetchObjectLinkerCore(au['permission'],aq),aw=(av?.['items']??[])['map'](ay=>ay['who'])['filter'](ay=>ay!==b['arbitration']['object']),ax=[];for(const ay of aw['slice'](0x0,0xa)){const az=await enumerateArbs(aq,{'arbitration':ay})['catch'](()=>undefined);az?.['arbs']?.['length']&&ax['push'](...await arbCasesWithRoles(az['arbs'],aq));}if(ax['length']>0x0)ap=ax;}}catch{}const ar=await assessArbitration({'arbitration':{'object':b['arbitration']['object'],'fee':b['arbitration']['fee'],'balance':b['arbitration']['balance'],'voting_guard_count':b['arbitration']['voting_guard_count'],'bPaused':b['arbitration']['bPaused'],'location':b['arbitration']['location'],'has_verified_identity':b['arbitration']['has_verified_identity']},'history':ap,'entity_votes':b['entity_votes'],'fee_median':b['fee_median']},await resolveInjection(b['account'],b['injection']));c={'action':'arbitration_score',...ar};break;}case'account_events':{const aA=await runAccountEventWatchers({'account':b['account'],'network':await resolveNetwork(b['context_network']),'reviews':b['reviews']?.['map'](aB=>({'reviewer':aB['reviewer'],'rating':aB['rating'],'tags':aB['tags'],'comment':aB['comment'],'orderRef':aB['orderRef'],'timestamp':aB['timestamp'],'verified':aB['verified']??![]})),'order_history':b['order_history']},b['categories']);c={'action':'account_events','events':aA};break;}default:throw new Error('Unknown\x20evaluation_operation\x20action');}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
1
+ import{strictParse}from'../../schema/index.js';import{EvaluationOperationInputSchema}from'../../schema/evaluation/index.js';import{evaluateArbGame}from'../../evaluation/arbitration-game.js';import{evaluateNodeGame}from'../../evaluation/node-game.js';import{evaluatePathReasoning}from'../../evaluation/path-reasoning.js';import{assessEvidenceReview,reviewEvidenceList}from'../../knowledge/evidence-review.js';import{expandSearchScope,inferSensitivity,rankByLocation}from'../../evaluation/location-match.js';import{query_objects,ArbStatus,createQueryCoverage,discoveryDataSource,remoteIndexUrl}from'@wowok/wowok';import{enumerateServices,enumerateDemands,enumerateArbs,matchServicesViaIndex}from'../../knowledge/jsonrpc-enum.js';import{KNOWN_CAPABILITIES}from'../../data/api/match.js';import{fetchObjectLinkerCore,batchQueryObjectsByIds}from'../../graph/onchain/sdk-batch.js';import{summarizeCapabilityGaps}from'../../evaluation/gap.js';import{resolveNetwork}from'./network.js';import{composeServicesForDemand}from'../../evaluation/composer.js';import{matchDemandToServices,matchServiceToDemands}from'../../evaluation/builtins/demand-match.js';import{nextOperationForServiceMatch,nextOperationForDemandMatch,nextOperationForServiceOrder}from'../../evaluation/match-operation.js';import{extractDemandCapability}from'../../evaluation/extract.js';import{assessArbitration}from'../../evaluation/builtins/arbitration-score.js';import{resolveCategoryMatchRules,toSoftWeightInjection,applyHardConstraints}from'../../evaluation/category-match-rules.js';import{computeMarketMetrics,computeOrderFlow}from'../../knowledge/market-metrics.js';import{workflowSubgraphFromRows}from'../../graph/onchain/index.js';import{assessAntiCheat}from'../../knowledge/anti-cheat.js';import{computeJourneyFunnel,attributeReferrals,buildCustomerRelationships}from'../../knowledge/market-operations.js';import{suggestPricing}from'../../knowledge/dynamic-pricing.js';import{runAccountEventWatchers}from'../../customer/account-events.js';import{registerBuiltinEvaluations}from'../../evaluation/builtins/index.js';import{getEffectivePersona,mergeInjections}from'../../persona/index.js';import{buildUserInjection}from'../../evaluation/injection.js';import{applyDemandPolicyGates,applyPolicyGates,applyPolicyRerank,buildPolicyEffect,policyToInjection,rerankDemandMatches,resolveMatchPolicy}from'../../evaluation/match-policy.js';registerBuiltinEvaluations();function arbCaseFromObject(b){const c=typeof b['time']==='number'?b['time']:Number(b['time']??0x0);return{'status':b['status'],'time':Number['isFinite'](c)?c:undefined,'resolved_time':typeof b['indemnity']?.['time']==='number'?b['indemnity']['time']:b['compensation_time']??undefined,'indemnity_amount':b['indemnity']?.['amount'],'objected':b['status']===ArbStatus['Objectionable']||b['objection']!=null&&b['objection']['length']>0x0};}async function arbCasesWithRoles(a,b){const c=a['map'](arbCaseFromObject),d=Array['from'](new Set(a['map'](j=>j['order'])['filter'](Boolean))),e=new Map(),f=[];if(d['length']>0x0){const j=await batchQueryObjectsByIds(d,b);for(const k of j){const l=k;if(!l?.['object'])continue;e['set'](l['object'],l);if(l['service'])f['push'](l['service']);}}const g=new Map(),h=Array['from'](new Set(f));if(h['length']>0x0){const m=await batchQueryObjectsByIds(h,b);for(const n of m){const p=n;if(p?.['object'])g['set'](p['object'],p);}}for(let q=0x0;q<a['length'];q++){const r=e['get'](a[q]['order']);if(!r)continue;c[q]['customer']=r['builder']||undefined;const t=g['get'](r['service']);if(t)c[q]['merchant']=t['permission']||undefined;}return c;}function capabilityFromInput(a){return{'id':a['id'],'kind':a['kind'],'owner':a['owner']??'','industry':a['industry'],'industry_confidence':a['industry_confidence']??0x0,'region':a['region'],'price_min':a['price_min']!==undefined?BigInt(a['price_min']):undefined,'price_max':a['price_max']!==undefined?BigInt(a['price_max']):undefined,'token_type':a['token_type']??'','ticket_size':a['ticket_size']??'medium','trust_score':a['trust_score']??0x32,'reputation_like_ratio':a['reputation_like_ratio']??0x1,'arbitration_independent':a['arbitration_independent']??![],'merchant_history_count':a['merchant_history_count']??0x0,'capabilities':a['capabilities'],'tags':a['tags']??[],'keywords':a['keywords']??[]};}async function resolveInjection(a,b){return mergeInjections(await buildUserInjection(a),b);}function serviceSummaryToExtract(a){const b=a['json']??{},c=f=>typeof f==='string'?f:undefined,d=f=>typeof f==='string'?f:null,e=Array['isArray'](b['sales'])?b['sales']['map'](f=>{const g=f?.['fields']??f;return{'name':typeof g?.['name']==='string'?g['name']:undefined,'price':typeof g?.['price']==='string'?g['price']:g?.['price']!=null?String(g['price']):'0','wip_hash':typeof g?.['wip_hash']==='string'?g['wip_hash']:undefined};}):[];return{'object':a['object'],'description':c(b['description'])??'','location':a['location']??c(b['location'])??'','sales':e,'arbitrations':Array['isArray'](b['arbitrations'])?b['arbitrations']['map'](String):[],'compensation_fund':c(b['compensation_fund']),'buy_guard':d(b['buy_guard']),'machine':d(b['machine']),'um':d(b['um']),'bPublished':b['bPublished']===!![],'bPaused':b['bPaused']===!![],'owner':c(b['owner'])};}export async function handleEvaluationOperation(a){const b=strictParse(EvaluationOperationInputSchema,a,'evaluation_operation\x20input');let c;switch(b['action']){case'arb_game':{const e=b['account']?await getEffectivePersona(b['account']):null,f=b['appetite']??e?.['layer']['preferences']?.['risk_appetite'],g=b['requirements']??e?.['layer']['requirements'];c={'action':'arb_game',...evaluateArbGame(b['status'],b['perspective'],{'risk_appetite':f,'requirements':g})};break;}case'node_game':{const h=b['account']?await getEffectivePersona(b['account']):null,i=b['appetite']??h?.['layer']['preferences']?.['risk_appetite'],j=b['requirements']??h?.['layer']['requirements'];c={'action':'node_game',...evaluateNodeGame({'current_node':b['current_node'],'perspective':b['perspective'],'appetite':i,'requirements':j,'threshold':b['threshold'],'allocation':b['allocation'],'order_amount':b['order_amount'],'compensation_fund':b['compensation_fund'],'operable':b['operable'],'waiting_on':b['waiting_on']??[]})};break;}case'capability_gap':{c={'action':'capability_gap','report':summarizeCapabilityGaps(capabilityFromInput(b['demand']),capabilityFromInput(b['service']))};break;}case'compose_service':{c={'action':'compose_service','plan':composeServicesForDemand(capabilityFromInput(b['demand']),b['services']['map'](capabilityFromInput))};break;}case'demand_match':{const k=await matchDemandToServices(capabilityFromInput(b['demand_cap']),b['services'],await resolveInjection(b['account'],b['injection']),0x5,b['presenter_history']);c={'action':'demand_match','matches':k['map'](l=>({'service':l['service'],'result':l['result'],'next':nextOperationForDemandMatch(l['service']),'order':nextOperationForServiceOrder(l['service'])}))};break;}case'service_match':{const l=await matchServiceToDemands(capabilityFromInput(b['service_cap']),b['demands'],await resolveInjection(b['account'],b['injection']),0x5,b['presenter_history']);c={'action':'service_match','matches':l['map'](n=>({'demand':n['demand'],'result':n['result'],'next':nextOperationForServiceMatch(n['demand'],null)}))};break;}case'path_reasoning':{const m=b['account']?await getEffectivePersona(b['account']):null,n=b['appetite']??m?.['layer']['preferences']?.['risk_appetite'],o=b['requirements']??m?.['layer']['requirements'];c={'action':'path_reasoning',...evaluatePathReasoning({'current_node':b['current_node'],'perspective':b['perspective'],'workflow':workflowSubgraphFromRows(b['machine_nodes']),'node_annotations':b['node_annotations'],'appetite':n,'requirements':o,'order_amount':b['order_amount'],'max_depth':b['max_depth']})};break;}case'evidence_review':{b['items']&&b['items']['length']>0x0?c={'action':'evidence_review','list':reviewEvidenceList(b['items'])}:c={'action':'evidence_review','review':assessEvidenceReview({'kind':b['kind'],'hash_committed':b['hash_committed'],'digital_check_passed':b['digital_check_passed'],'contradiction':b['contradiction']})};break;}case'discover_services':{const p=!b['sensitivity']?inferSensitivity(b['description']??''):null,q=b['sensitivity']??p['sensitivity'],r=p?.['signals']??[],s=await resolveNetwork(b['context_network']),t={'raw':b['location'],...b['region']??{}},u=expandSearchScope(q,t),v=await enumerateServices(s,{'max_objects':b['max_objects'],'no_cache':b['no_cache'],'location_any':u['search_terms'],'coin_type':b['coin_type'],'name_contains':b['name_contains']}),w=rankByLocation(q,t,v['services']['map'](x=>({'id':x['object'],'name':x['name'],'location':x['location']})));c={'action':'discover_services','sensitivity':q,'inference_signals':r,'services':w['map'](x=>{const y=v['services']['find'](z=>z['object']===x['id']);return{'object':x['id'],'name':y?.['name'],'location':y?.['location'],'relation':x['relation'],'satisfied':x['satisfied'],'score':x['score'],'reason':x['reason']};}),'total_enumerated':v['total_enumerated'],'has_more':v['has_more'],'coverage':v['coverage'],'scope_advice':{'search_terms':u['search_terms'],'ai_enrichment_note':u['ai_enrichment_note']}};break;}case'discover_demands':{const x=await resolveNetwork(b['context_network']),y=resolveMatchPolicy(b['match_policy'],'supply_to_demand'),z=await enumerateDemands(x,{'max_objects':b['max_objects'],'no_cache':b['no_cache']}),A=b['location']?.['toLowerCase'](),B=z['demands']['filter'](E=>!A||(E['location']??'')['toLowerCase']()['includes'](A))['map'](E=>({'object':E['object'],'description':E['description']??'','location':E['location']??'','presenters_count':E['presenters_count']??0x0,'permission':E['permission']??''}));let C=B,D;if(y){const E=z['demands']['filter'](J=>!A||(J['location']??'')['toLowerCase']()['includes'](A))['map'](J=>({'object':J['object'],'description':J['description']??'','location':J['location']??'','rewards':J['rewards'],'um':J['um']??null,'owner':typeof J['owner']==='string'?J['owner']:undefined,'guards':J['guards'],'presenters_count':J['presenters_count']})),F=applyDemandPolicyGates(y,E),G=new Set(F['passed']['map'](J=>J['object']));C=B['filter'](J=>G['has'](J['object']));const H=y['output']?.['top_n'];if(H!==undefined)C=C['slice'](0x0,H);const I=[];Object['keys'](y['weights']??{})['length']>0x0&&I['push']('weights\x20not\x20applicable\x20in\x20discover_demands\x20(no\x20private\x20scoring\x20at\x20this\x20stage;\x20use\x20demand_present)'),y['rerank']!==undefined&&I['push']('rerank\x20not\x20applicable\x20in\x20discover_demands\x20(no\x20private\x20scoring\x20at\x20this\x20stage;\x20use\x20demand_present)'),D=buildPolicyEffect(y,F,{'applied':{},'ignored':[]},{'order':'enumeration\x20order\x20(discover_demands\x20performs\x20no\x20private\x20scoring)','diversity_applied':![],'deferred':0x0,'ignored':[]},I);}c={'action':'discover_demands','demands':C,'total_enumerated':z['total_enumerated'],'has_more':z['has_more'],'coverage':z['coverage'],...D?{'policy_effect':D}:{}};break;}case'demand_present':{const J=await resolveNetwork(b['context_network']),K=resolveMatchPolicy(b['match_policy'],'supply_to_demand'),L=await enumerateDemands(J,{'max_objects':b['max_objects'],'no_cache':b['no_cache']}),M=b['location']?.['toLowerCase'](),N=L['demands']['filter'](X=>!M||(X['location']??'')['toLowerCase']()['includes'](M)),O=new Map(N['map'](X=>[X['object'],(X['guards']?.['length']??0x0)>0x0])),P=N['map'](X=>({'object':X['object'],'description':X['description']??'','location':X['location']??'','rewards':X['rewards']??[],'um':X['um']??null,'owner':typeof X['owner']==='string'?X['owner']:undefined})),Q=N['map'](X=>({'object':X['object'],'description':X['description']??'','location':X['location']??'','rewards':X['rewards'],'um':X['um']??null,'owner':typeof X['owner']==='string'?X['owner']:undefined,'guards':X['guards'],'presenters_count':X['presenters_count']}));let R=await resolveInjection(b['account'],b['injection']),S=P,T,U;if(K){const X=applyDemandPolicyGates(K,Q),Y=new Set(X['passed']['map'](a0=>a0['object']));S=P['filter'](a0=>Y['has'](a0['object']));const Z=policyToInjection(K);R=mergeInjections(R,Z['injection']),U={'gateOutcome':X,'weights':Z};}const V=await matchServiceToDemands(capabilityFromInput(b['service_cap']),S,R,K?S['length']:b['limit']??0x5);let W=V['map'](a0=>{const a1=O['get'](a0['demand']['object'])??![];return{'demand':a0['demand'],'result':a0['result'],'next':nextOperationForServiceMatch(a0['demand'],a1)};});if(K&&U){const a0=rerankDemandMatches(W,K);W=a0['matches'],T=buildPolicyEffect(K,U['gateOutcome'],U['weights'],a0);}c={'action':'demand_present','matches':W,'total_enumerated':L['total_enumerated'],'has_more':L['has_more'],'coverage':L['coverage'],...T?{'policy_effect':T}:{}};break;}case'market_metrics':{const a1=await resolveNetwork(b['context_network']),a2=await computeMarketMetrics(a1,b['no_cache']),a3=await computeOrderFlow(a1,{'noCache':b['no_cache'],'maxPages':b['limit']?Math['max'](0x1,Math['ceil'](b['limit']/0x32)):undefined});c={'action':'market_metrics',...a2,'order_flow':a3};break;}case'anti_cheat':{const a4=assessAntiCheat({'service':{'object':b['service']['object'],'arbitrations':b['service']['arbitrations'],'compensation_fund':b['service']['compensation_fund'],'machine':b['service']['machine'],'bPublished':b['service']['bPublished']},'orders':b['orders'],'reviews':b['reviews']});c={'action':'anti_cheat','signals':a4};break;}case'market_operations':{if(b['op']==='journey_funnel')c={'action':'market_operations','result':computeJourneyFunnel({'due_diligence':b['due_diligence']??0x0,'orders':b['orders']??0x0,'completed':b['completed']??0x0,'reviews':b['reviews']??0x0})};else{if(b['op']==='referral_attribution')c={'action':'market_operations','result':attributeReferrals(b['referral_orders']??[])};else{if(b['op']==='dynamic_pricing'){const a5=b['market_signals'];if(!a5)throw new Error('dynamic_pricing\x20op\x20requires\x20market_signals');c={'action':'market_operations','result':suggestPricing({'supplyCount':a5['supplyCount'],'demandCount':a5['demandCount'],'avgPrice':a5['avgPrice'],'myPrice':a5['myPrice'],'competitorPrices':a5['competitorPrices'],'recentOrderCount':a5['recentOrderCount'],'repeatCustomerRate':a5['repeatCustomerRate']})};}else c={'action':'market_operations','result':buildCustomerRelationships(b['customer_orders']??[])};}}break;}case'match_discover':{const a6=!b['sensitivity']?inferSensitivity(b['description']??''):null,a7=b['sensitivity']??a6['sensitivity'],a8=a6?.['signals']??[],a9=await resolveNetwork(b['context_network']),aa={'raw':b['location'],...b['region']??{}},ab=expandSearchScope(a7,aa),ac=resolveMatchPolicy(b['match_policy'],'demand_to_supply'),ad=(b['required_capabilities']??[])['filter'](az=>KNOWN_CAPABILITIES['includes'](az)),ae=!b['coin_type']&&!b['name_contains'],af=discoveryDataSource();let ag,ah=new Map(),ai='legacy_enumeration';const aj=()=>enumerateServices(a9,{'max_objects':b['max_objects'],'no_cache':b['no_cache'],'location_any':ab['search_terms'],'coin_type':b['coin_type'],'name_contains':b['name_contains']});if(ae&&af!=='legacy'&&remoteIndexUrl())try{const az=await matchServicesViaIndex(a9,{'q':b['description'],'location':b['location'],'budgetWei':b['budget'],'capabilities':ad['length']>0x0?ad:undefined,'limit':Math['min'](0x64,b['max_objects']??0x64),'recallLimit':Math['min'](0x3e8,Math['max'](0xc8,b['max_objects']??0xc8))});ag={'services':az['candidates']['map'](aA=>({'object':aA['objectId'],'location':aA['publicFeatures']['location']??'','json':aA['payloadJson']??null})),'total_enumerated':az['recall']['liveSet']??az['recall']['gated'],'has_more':az['truncated'],'coverage':az['coverage']},ah=new Map(az['candidates']['map'](aA=>[aA['objectId'],aA])),ai='remote_index';}catch(aA){if(af==='remote')throw aA;ag=await aj();const aB=aA?.['code'],aC=typeof aB==='string'&&/^INDEX_[A-Z_]+$/['test'](aB)?aB:'INDEX_UNAVAILABLE';ag['coverage']=createQueryCoverage({'mode':ag['coverage']['mode'],'totalEnumerated':ag['coverage']['total_enumerated'],'truncated':ag['coverage']['truncated'],'chainId':ag['coverage']['chain_id'],'degradedReasons':[...ag['coverage']['degraded_reasons'],'MATCH_INDEX_FALLBACK',aC]});}else ag=await aj();const ak=new Set(b['required_capabilities']??[]),al=extractDemandCapability({'object':'intent','description':b['description'],'location':b['location'],'owner':b['account']},{'price_max':b['budget']!==undefined?BigInt(b['budget']):undefined,'capabilities':{'has_arbitration':ak['has']('has_arbitration'),'has_refund_path':ak['has']('has_refund_path'),'has_milestone_nodes':ak['has']('has_milestone_nodes'),'has_compensation_fund':ak['has']('has_compensation_fund'),'has_wip_verification':ak['has']('has_wip_verification'),'has_messenger':ak['has']('has_messenger'),'has_buy_guard':ak['has']('has_buy_guard'),'has_dynamic_pricing':ak['has']('has_dynamic_pricing'),'is_published':!![],'is_paused':![]}}),am=rankByLocation(a7,aa,ag['services']['map'](aD=>({'id':aD['object'],'name':aD['name'],'location':aD['location']}))),an=am['filter'](aD=>aD['satisfied']),ao=ag['services']['filter'](aD=>an['some'](aE=>aE['id']===aD['object']))['map'](serviceSummaryToExtract),ap=resolveCategoryMatchRules(b['category']);let aq=ao;const ar=[];if(ap){const aD=applyHardConstraints(ap,ao);aq=aD['passed'];for(const aE of aD['dropped']){ar['push']({'object':aE['candidate']['object'],'reason':aE['constraint']['description']});}}let as=await resolveInjection(b['account'],b['injection']);ap&&(as=mergeInjections(as,toSoftWeightInjection(ap)));let at,au;if(ac){const aF=applyPolicyGates(ac,aq,{'budgetWei':b['budget']!==undefined?BigInt(b['budget']):undefined});aq=aF['passed'];const aG=policyToInjection(ac);as=mergeInjections(as,aG['injection']),au={'gateOutcome':aF,'weights':aG};}const av=await matchDemandToServices(al,aq,as,aq['length'],b['presenter_history']),aw=new Map(av['map'](aH=>[aH['service']['object'],aH['result']])),ax=new Set(aq['map'](aH=>aH['object']));let ay=an['filter'](aH=>ax['has'](aH['id']))['map'](aH=>{const aI=ag['services']['find'](aK=>aK['object']===aH['id']),aJ=ah['get'](aH['id']);return{'service':serviceSummaryToExtract(aI),'location':{'relation':aH['relation'],'satisfied':aH['satisfied'],'score':aH['score'],'reason':aH['reason']},'result':aw['get'](aH['id']),...aJ?{'server_match':{'policy_version':aJ['serverEvaluation']['policyVersion'],'total':aJ['serverEvaluation']['total'],'breakdown':aJ['serverEvaluation']['breakdown'],'unknown_rules':aJ['serverEvaluation']['unknownRules'],'red_flags':aJ['serverEvaluation']['redFlags'],'channels':aJ['channels'],'rrf':aJ['rrf']}}:{}};});if(ac&&au){const aH=applyPolicyRerank(ay,ac);ay=aH['matches'],at=buildPolicyEffect(ac,au['gateOutcome'],au['weights'],aH);}c={'action':'match_discover','sensitivity':a7,'inference_signals':a8,'match_route':ai,'matches':ay,'total_enumerated':ag['total_enumerated'],'has_more':ag['has_more'],'coverage':ag['coverage'],'scope_advice':{'search_terms':ab['search_terms'],'ai_enrichment_note':ab['ai_enrichment_note']},...at?{'policy_effect':at}:{}};break;}case'arbitration_score':{let aI=b['history'];const aJ=b['context_network']??'testnet';if((!aI||aI['length']===0x0)&&b['arbitration']['object'])try{const aL=await enumerateArbs(aJ,{'arbitration':b['arbitration']['object']});aI=await arbCasesWithRoles(aL['arbs'],aJ);}catch{aI=b['history'];}if((!aI||aI['length']===0x0)&&b['arbitration']['object'])try{const aM=await query_objects({'objects':[b['arbitration']['object']],'network':aJ}),aN=aM?.['objects']?.[0x0];if(aN?.['permission']){const aO=await fetchObjectLinkerCore(aN['permission'],aJ),aP=(aO?.['items']??[])['map'](aR=>aR['who'])['filter'](aR=>aR!==b['arbitration']['object']),aQ=[];for(const aR of aP['slice'](0x0,0xa)){const aS=await enumerateArbs(aJ,{'arbitration':aR})['catch'](()=>undefined);aS?.['arbs']?.['length']&&aQ['push'](...await arbCasesWithRoles(aS['arbs'],aJ));}if(aQ['length']>0x0)aI=aQ;}}catch{}const aK=await assessArbitration({'arbitration':{'object':b['arbitration']['object'],'fee':b['arbitration']['fee'],'balance':b['arbitration']['balance'],'voting_guard_count':b['arbitration']['voting_guard_count'],'bPaused':b['arbitration']['bPaused'],'location':b['arbitration']['location'],'has_verified_identity':b['arbitration']['has_verified_identity']},'history':aI,'entity_votes':b['entity_votes'],'fee_median':b['fee_median']},await resolveInjection(b['account'],b['injection']));c={'action':'arbitration_score',...aK};break;}case'account_events':{const aT=await runAccountEventWatchers({'account':b['account'],'network':await resolveNetwork(b['context_network']),'reviews':b['reviews']?.['map'](aU=>({'reviewer':aU['reviewer'],'rating':aU['rating'],'tags':aU['tags'],'comment':aU['comment'],'orderRef':aU['orderRef'],'timestamp':aU['timestamp'],'verified':aU['verified']??![]})),'order_history':b['order_history']},b['categories']);c={'action':'account_events','events':aT};break;}default:throw new Error('Unknown\x20evaluation_operation\x20action');}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
@@ -1 +1 @@
1
- import{afterEach,beforeEach,describe,expect,it,vi}from'vitest';import{handleEvaluationOperation}from'./evaluation.js';import{enumerateServices,matchServicesViaIndex,weiToWowDecimal}from'../../knowledge/jsonrpc-enum.js';vi['mock']('../../knowledge/jsonrpc-enum.js',async a=>({...await a(),'enumerateServices':vi['fn'](),'matchServicesViaIndex':vi['fn']()}));function resultOf(a){return a['structuredContent']['result'];}const demandCap={'id':'0xdemand1','kind':'demand','industry':'freelance','region':{'mode':'physical','city':'Shanghai','raw':'Shanghai'},'keywords':['design'],'capabilities':{'has_arbitration':![],'has_refund_path':![],'has_milestone_nodes':![],'has_compensation_fund':![],'has_wip_verification':![],'has_messenger':![],'has_buy_guard':![],'has_dynamic_pricing':![],'is_published':!![],'is_paused':![]}},service={'object':'0xsvc1','description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'price':'100','wip_hash':'abc'}],'bPublished':!![],'bPaused':![]};describe('evaluation_operation\x20demand_match\x20presenter_history\x20(P2-2)',()=>{it('acceptance\x20rule\x20scores\x20the\x20rated\x20history\x20in\x20the\x20breakdown',async()=>{const a=await handleEvaluationOperation({'action':'demand_match','demand_cap':demandCap,'services':[service],'presenter_history':[{'acceptance_score':0x50},{'acceptance_score':0x5a}]}),c=resultOf(a);expect(c['action'])['toBe']('demand_match');const d=c['matches'][0x0]['result']['breakdown']['find'](e=>e['rule_id']==='acceptance');expect(d)['toBeDefined'](),expect(d['score'])['toBe'](0x55);}),it('omitted\x20history\x20→\x20acceptance\x20stays\x20neutral',async()=>{const a=await handleEvaluationOperation({'action':'demand_match','demand_cap':demandCap,'services':[service]}),c=resultOf(a)['matches'][0x0]['result']['breakdown']['find'](d=>d['rule_id']==='acceptance');expect(c)['toBeDefined'](),expect(c['score'])['toBe'](0x32),expect(c['reason'])['toContain']('neutral');}),it('schema\x20rejects\x20a\x20malformed\x20presenter_history\x20entry',async()=>{await expect(handleEvaluationOperation({'action':'demand_match','demand_cap':demandCap,'services':[service],'presenter_history':[{'acceptance_score':0x50,'bogus':!![]}]}))['rejects']['toThrow']();});}),describe('evaluation_operation\x20demand_match\x20order\x20bridge\x20(N-2\x20/\x2008\x20§7)',()=>{it('each\x20match\x20carries\x20the\x20service.order_new\x20transaction-formation\x20bridge',async()=>{const a=await handleEvaluationOperation({'action':'demand_match','demand_cap':demandCap,'services':[service]}),b=resultOf(a)['matches'][0x0];expect(b['order'])['toBeDefined'](),expect(b['order']['operation'])['toBe']('service.order_new'),expect(b['order']['operation_type'])['toBe']('service'),expect(b['order']['preconditions']['some'](c=>c['includes']('acceptance_score')))['toBe'](!![]),expect(b['order']['rationale'])['toContain']('0xsvc1'),expect(b['next']['operation'])['toBe']('demand.publish'),expect(b['next']['operation_type'])['toBe']('demand'),expect(b['next']['rationale'])['toContain']('service.order_new');});}),describe('evaluation_operation\x20match_discover\x20indexed\x20candidate\x20mapping',()=>{it('scores\x20wrapped\x20sales\x20fields\x20instead\x20of\x20replacing\x20them\x20with\x20zero\x20values',async()=>{vi['mocked'](enumerateServices)['mockResolvedValueOnce']({'services':[{'object':'0xsvc1','name':'Logo\x20design','location':'Shanghai','json':{'description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'fields':{'name':'logo','price':'100','wip_hash':'abc'}}],'bPublished':!![],'bPaused':![]}}],'total_enumerated':0x1,'has_more':![],'coverage':{'mode':'known_objects','complete':![],'truncated':![],'total_enumerated':0x1,'chain_id':'chain_test','degraded_reasons':[]}});const a=await handleEvaluationOperation({'action':'match_discover','description':'freelance\x20logo\x20design','location':'Shanghai','sensitivity':'strict','budget':'50','required_capabilities':['has_wip_verification'],'context_network':'testnet'}),b=resultOf(a)['matches'][0x0];expect(b['service']['sales'])['toEqual']([{'name':'logo','price':'100','wip_hash':'abc'}]),expect(b['result']['breakdown']['find'](c=>c['rule_id']==='price'))['toMatchObject']({'score':0x0,'reason':'over\x20budget'}),expect(b['result']['breakdown']['find'](c=>c['rule_id']==='capabilities'))['toMatchObject']({'score':0x64,'matched':['has_wip_verification']});});}),describe('evaluation_operation\x20evidence_review\x20list\x20mode\x20(P2-3)',()=>{it('items\x20mode\x20→\x20structured\x20usable/manual/rejected\x20+\x20proof\x20candidates',async()=>{const a=await handleEvaluationOperation({'action':'evidence_review','items':[{'id':'chat.wts','kind':'signature_photo','hash_committed':!![],'digital_check_passed':!![],'proof_ref':'0xproof1'},{'id':'waybill.jpg','kind':'delivery_proof','hash_committed':!![]},{'id':'voice.mp3','kind':'voice_recording','hash_committed':![]}]}),b=resultOf(a);expect(b['action'])['toBe']('evidence_review'),expect(b['list']['items'])['toHaveLength'](0x3),expect(b['list']['usable'])['toHaveLength'](0x1),expect(b['list']['manual'])['toHaveLength'](0x1),expect(b['list']['rejected'])['toHaveLength'](0x1),expect(b['list']['proof_candidates'])['toHaveLength'](0x1),expect(b['list']['proof_candidates'][0x0]['proof_ref'])['toBe']('0xproof1'),expect(b['list']['dispute_hint'])['toContain']('1\x20Proof\x20reference\x20candidate(s)\x20ready');}),it('single-item\x20mode\x20still\x20works\x20(backwards\x20compatible)',async()=>{const a=await handleEvaluationOperation({'action':'evidence_review','kind':'signature_photo','hash_committed':!![],'digital_check_passed':!![]});expect(resultOf(a)['review']['status'])['toBe']('auto_pass');}),it('schema\x20refinement:\x20neither\x20items\x20nor\x20kind+hash_committed\x20→\x20error',async()=>{await expect(handleEvaluationOperation({'action':'evidence_review'}))['rejects']['toThrow']();});});function remoteCandidate(a,b={}){return{'objectId':a,'verifiedKind':'Service','objectVersion':'3','facetVersion':'facets-1','channels':['bm25','structured'],'rrf':0.032786885246,'publicFeatures':{'industry':'freelance','industryConfidence':0.7,'location':'Shanghai','priceMin':'100','priceMax':'100','capabilities':['has_wip_verification'],'published':!![],'paused':![],'keywords':['design']},'serverEvaluation':{'policyVersion':'public-baseline-1','total':87.5,'breakdown':[{'dimension':'text','weight':0x1e,'score':0x64}],'unknownRules':['trust:\x20cold-start\x20prior\x20withheld'],'redFlags':[]},'payloadJson':{'description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'fields':{'name':'logo','price':'100','wip_hash':'abc'}}],'bPublished':!![],'bPaused':![]},...b};}function remotePage(a){return{'policyVersion':'public-baseline-1','candidates':a,'recall':{'liveSet':a['length']+0x2,'gated':a['length'],'structured':a['length'],'bm25':a['length'],'merged':a['length'],'channelsActive':['structured','bm25']},'truncated':![],'coverage':{'mode':'known_objects','complete':![],'truncated':![],'total_enumerated':a['length'],'chain_id':'chain_test','degraded_reasons':[]}};}function legacyAnswer(){return{'services':[{'object':'0xsvc1','name':'Logo\x20design','location':'Shanghai','json':{'description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'fields':{'name':'logo','price':'100','wip_hash':'abc'}}],'bPublished':!![],'bPaused':![]}}],'total_enumerated':0x1,'has_more':![],'coverage':{'mode':'event_window','complete':![],'truncated':![],'total_enumerated':0x1,'chain_id':'chain_test','degraded_reasons':['EVENT_BACKED_ENUMERATION']}};}const MATCH_INPUT={'action':'match_discover','description':'freelance\x20logo\x20design','location':'Shanghai','sensitivity':'strict','budget':'100','required_capabilities':['has_wip_verification'],'context_network':'testnet'};describe('evaluation_operation\x20match_discover\x20remote\x20index\x20route\x20(K5-11\x20R3)',()=>{beforeEach(()=>{vi['mocked'](enumerateServices)['mockReset'](),vi['mocked'](matchServicesViaIndex)['mockReset']();}),afterEach(()=>{delete process['env']['WOWOK_DATA_SOURCE'],delete process['env']['WOWOK_INDEX_URL'];}),it('converts\x20wei\x20budgets\x20to\x20WOW\x20decimals\x20for\x20the\x20match\x20API',()=>{expect(weiToWowDecimal('0'))['toBe']('0'),expect(weiToWowDecimal('6000000000'))['toBe']('6'),expect(weiToWowDecimal('7500000000'))['toBe']('7.5'),expect(weiToWowDecimal('123456789'))['toBe']('0.123456789'),expect(weiToWowDecimal('1000000000000'))['toBe']('1000'),expect(()=>weiToWowDecimal('12.5'))['toThrow']();}),it('one-shot\x20remote\x20match:\x20no\x20enumeration,\x20dual\x20breakdown,\x20private\x20re-rank',async()=>{process['env']['WOWOK_DATA_SOURCE']='remote',process['env']['WOWOK_INDEX_URL']='http://index.test',vi['mocked'](matchServicesViaIndex)['mockResolvedValueOnce'](remotePage([remoteCandidate('0xsvc1'),remoteCandidate('0xsvc2',{'payloadJson':{'description':'mural\x20painting','location':'Shanghai','sales':[{'fields':{'name':'mural','price':'90'}}],'bPublished':!![],'bPaused':![]}})]));const a=await handleEvaluationOperation({...MATCH_INPUT}),b=resultOf(a);expect(b['match_route'])['toBe']('remote_index'),expect(enumerateServices)['not']['toHaveBeenCalled'](),expect(vi['mocked'](matchServicesViaIndex)['mock']['calls'][0x0][0x1])['toMatchObject']({'q':'freelance\x20logo\x20design','location':'Shanghai','budgetWei':'100','capabilities':['has_wip_verification']}),expect(b['matches'])['toHaveLength'](0x2),expect(b['total_enumerated'])['toBe'](0x4);const c=b['matches']['find'](e=>e['service']['object']==='0xsvc1');expect(c['server_match'])['toMatchObject']({'policy_version':'public-baseline-1','total':87.5,'channels':['bm25','structured']}),expect(c['server_match']['unknown_rules'])['toEqual'](['trust:\x20cold-start\x20prior\x20withheld']),expect(c['result']['breakdown']['some'](e=>e['rule_id']==='capabilities'))['toBe'](!![]);const d=b['matches']['find'](e=>e['service']['object']==='0xsvc2');expect(d['service']['description'])['toBe']('mural\x20painting'),expect(d['server_match'])['toBeDefined'](),expect(b['coverage']['mode'])['toBe']('known_objects');}),it('auto\x20mode\x20degrades\x20to\x20legacy\x20enumeration\x20with\x20honest\x20coverage',async()=>{process['env']['WOWOK_DATA_SOURCE']='auto',process['env']['WOWOK_INDEX_URL']='http://index.test',vi['mocked'](matchServicesViaIndex)['mockRejectedValueOnce'](Object['assign'](new Error('Remote\x20index\x20returned\x20HTTP\x20503'),{'code':'INDEX_HTTP_ERROR'})),vi['mocked'](enumerateServices)['mockResolvedValueOnce'](legacyAnswer());const a=await handleEvaluationOperation({...MATCH_INPUT}),b=resultOf(a);expect(b['match_route'])['toBe']('legacy_enumeration'),expect(enumerateServices)['toHaveBeenCalledTimes'](0x1),expect(b['coverage']['degraded_reasons'])['toContain']('MATCH_INDEX_FALLBACK'),expect(b['coverage']['degraded_reasons'])['toContain']('INDEX_HTTP_ERROR'),expect(b['matches'])['toHaveLength'](0x1),expect(b['matches'][0x0]['server_match'])['toBeUndefined']();}),it('strict\x20remote\x20mode\x20surfaces\x20the\x20index\x20failure',async()=>{process['env']['WOWOK_DATA_SOURCE']='remote',process['env']['WOWOK_INDEX_URL']='http://index.test',vi['mocked'](matchServicesViaIndex)['mockRejectedValueOnce'](Object['assign'](new Error('Remote\x20index\x20request\x20failed'),{'code':'INDEX_UNAVAILABLE'})),await expect(handleEvaluationOperation({...MATCH_INPUT}))['rejects']['toThrow'](/Remote index request failed/),expect(enumerateServices)['not']['toHaveBeenCalled']();}),it('filters\x20the\x20match\x20API\x20cannot\x20express\x20keep\x20the\x20legacy\x20route',async()=>{process['env']['WOWOK_DATA_SOURCE']='remote',process['env']['WOWOK_INDEX_URL']='http://index.test',vi['mocked'](enumerateServices)['mockResolvedValueOnce'](legacyAnswer());const a=await handleEvaluationOperation({...MATCH_INPUT,'coin_type':'0x2::wow::WOW'}),b=resultOf(a);expect(b['match_route'])['toBe']('legacy_enumeration'),expect(matchServicesViaIndex)['not']['toHaveBeenCalled'](),expect(enumerateServices)['toHaveBeenCalledTimes'](0x1);});}),describe('evaluation_operation\x20match_discover\x20private\x20policy\x20DSL\x20(K5-11\x20R4)',()=>{beforeEach(()=>{vi['mocked'](enumerateServices)['mockReset'](),vi['mocked'](matchServicesViaIndex)['mockReset']();}),afterEach(()=>{delete process['env']['WOWOK_DATA_SOURCE'],delete process['env']['WOWOK_INDEX_URL'];});function a(){return{'services':[{'object':'0xgood','name':'Logo\x20design','location':'Shanghai','json':{'description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'fields':{'name':'logo','price':'100','wip_hash':'abc'}}],'arbitrations':['0xarb1'],'owner':'0xownerA','bPublished':!![],'bPaused':![]}},{'object':'0xpaused','name':'Paused\x20shop','location':'Shanghai','json':{'description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'fields':{'name':'logo','price':'100'}}],'owner':'0xownerB','bPublished':!![],'bPaused':!![]}}],'total_enumerated':0x2,'has_more':![],'coverage':{'mode':'event_window','complete':![],'truncated':![],'total_enumerated':0x2,'chain_id':'chain_test','degraded_reasons':['EVENT_BACKED_ENUMERATION']}};}it('preset\x20gate\x20drops\x20the\x20paused\x20candidate\x20and\x20reports\x20it\x20in\x20policy_effect',async()=>{vi['mocked'](enumerateServices)['mockResolvedValueOnce'](a());const b=await handleEvaluationOperation({'action':'match_discover','description':'freelance\x20logo\x20design','location':'Shanghai','sensitivity':'strict','context_network':'testnet','match_policy':'trust_first'}),c=resultOf(b);expect(c['matches']['map'](d=>d['service']['object']))['toEqual'](['0xgood']),expect(c['policy_effect']['policy_id'])['toBe']('trust_first'),expect(c['policy_effect']['privacy'])['toContain']('never\x20leave\x20this\x20device'),expect(c['policy_effect']['dropped']['some'](e=>e['object']==='0xpaused'))['toBe'](!![]),expect(c['policy_effect']['weights_applied']['trust'])['toBe'](0x1e),expect(typeof c['policy_effect']['policy_hash'])['toBe']('string');}),it('a\x20weight-only\x20policy\x20re-anchors\x20the\x20trust\x20dimension\x20(weight_source=override)',async()=>{vi['mocked'](enumerateServices)['mockResolvedValueOnce'](a());const b=await handleEvaluationOperation({'action':'match_discover','description':'freelance\x20logo\x20design','location':'Shanghai','sensitivity':'strict','context_network':'testnet','match_policy':{'policy_id':'custom','weights':{'trust':0x2d}}}),c=resultOf(b),d=c['matches'][0x0]['result']['breakdown']['find'](e=>e['rule_id']==='trust');expect(d['weight'])['toBe'](0x2d),expect(d['weight_source'])['toBe']('override'),expect(c['policy_effect']['weights_applied'])['toEqual']({'trust':0x2d});}),it('the\x20private\x20policy\x20never\x20reaches\x20the\x20remote\x20match\x20request',async()=>{process['env']['WOWOK_DATA_SOURCE']='remote',process['env']['WOWOK_INDEX_URL']='http://index.test',vi['mocked'](matchServicesViaIndex)['mockResolvedValueOnce'](remotePage([remoteCandidate('0xsvc1')])),await handleEvaluationOperation({...MATCH_INPUT,'match_policy':'trust_first'});const b=vi['mocked'](matchServicesViaIndex)['mock']['calls'][0x0][0x1];expect(b['match_policy'])['toBeUndefined'](),expect(b['policy'])['toBeUndefined'](),expect(JSON['stringify'](b))['not']['toContain']('trust_first');}),it('unknown\x20preset\x20id\x20throws\x20with\x20the\x20available\x20list',async()=>{await expect(handleEvaluationOperation({...MATCH_INPUT,'match_policy':'does_not_exist'}))['rejects']['toThrow'](/unknown match_policy preset/);}),it('a\x20supply_to_demand\x20policy\x20is\x20rejected\x20by\x20match_discover',async()=>{await expect(handleEvaluationOperation({...MATCH_INPUT,'match_policy':'supplier_hunting'}))['rejects']['toThrow'](/direction/);});});
1
+ import{afterEach,beforeEach,describe,expect,it,vi}from'vitest';import{handleEvaluationOperation}from'./evaluation.js';import{enumerateDemands,enumerateServices,matchServicesViaIndex,weiToWowDecimal}from'../../knowledge/jsonrpc-enum.js';vi['mock']('../../knowledge/jsonrpc-enum.js',async a=>({...await a(),'enumerateServices':vi['fn'](),'enumerateDemands':vi['fn'](),'matchServicesViaIndex':vi['fn']()}));function resultOf(a){return a['structuredContent']['result'];}const demandCap={'id':'0xdemand1','kind':'demand','industry':'freelance','region':{'mode':'physical','city':'Shanghai','raw':'Shanghai'},'keywords':['design'],'capabilities':{'has_arbitration':![],'has_refund_path':![],'has_milestone_nodes':![],'has_compensation_fund':![],'has_wip_verification':![],'has_messenger':![],'has_buy_guard':![],'has_dynamic_pricing':![],'is_published':!![],'is_paused':![]}},service={'object':'0xsvc1','description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'price':'100','wip_hash':'abc'}],'bPublished':!![],'bPaused':![]};describe('evaluation_operation\x20demand_match\x20presenter_history\x20(P2-2)',()=>{it('acceptance\x20rule\x20scores\x20the\x20rated\x20history\x20in\x20the\x20breakdown',async()=>{const a=await handleEvaluationOperation({'action':'demand_match','demand_cap':demandCap,'services':[service],'presenter_history':[{'acceptance_score':0x50},{'acceptance_score':0x5a}]}),c=resultOf(a);expect(c['action'])['toBe']('demand_match');const d=c['matches'][0x0]['result']['breakdown']['find'](e=>e['rule_id']==='acceptance');expect(d)['toBeDefined'](),expect(d['score'])['toBe'](0x55);}),it('omitted\x20history\x20→\x20acceptance\x20stays\x20neutral',async()=>{const a=await handleEvaluationOperation({'action':'demand_match','demand_cap':demandCap,'services':[service]}),c=resultOf(a)['matches'][0x0]['result']['breakdown']['find'](d=>d['rule_id']==='acceptance');expect(c)['toBeDefined'](),expect(c['score'])['toBe'](0x32),expect(c['reason'])['toContain']('neutral');}),it('schema\x20rejects\x20a\x20malformed\x20presenter_history\x20entry',async()=>{await expect(handleEvaluationOperation({'action':'demand_match','demand_cap':demandCap,'services':[service],'presenter_history':[{'acceptance_score':0x50,'bogus':!![]}]}))['rejects']['toThrow']();});}),describe('evaluation_operation\x20demand_match\x20order\x20bridge\x20(N-2\x20/\x2008\x20§7)',()=>{it('each\x20match\x20carries\x20the\x20service.order_new\x20transaction-formation\x20bridge',async()=>{const a=await handleEvaluationOperation({'action':'demand_match','demand_cap':demandCap,'services':[service]}),b=resultOf(a)['matches'][0x0];expect(b['order'])['toBeDefined'](),expect(b['order']['operation'])['toBe']('service.order_new'),expect(b['order']['operation_type'])['toBe']('service'),expect(b['order']['preconditions']['some'](c=>c['includes']('acceptance_score')))['toBe'](!![]),expect(b['order']['rationale'])['toContain']('0xsvc1'),expect(b['next']['operation'])['toBe']('demand.publish'),expect(b['next']['operation_type'])['toBe']('demand'),expect(b['next']['rationale'])['toContain']('service.order_new');});}),describe('evaluation_operation\x20match_discover\x20indexed\x20candidate\x20mapping',()=>{it('scores\x20wrapped\x20sales\x20fields\x20instead\x20of\x20replacing\x20them\x20with\x20zero\x20values',async()=>{vi['mocked'](enumerateServices)['mockResolvedValueOnce']({'services':[{'object':'0xsvc1','name':'Logo\x20design','location':'Shanghai','json':{'description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'fields':{'name':'logo','price':'100','wip_hash':'abc'}}],'bPublished':!![],'bPaused':![]}}],'total_enumerated':0x1,'has_more':![],'coverage':{'mode':'known_objects','complete':![],'truncated':![],'total_enumerated':0x1,'chain_id':'chain_test','degraded_reasons':[]}});const a=await handleEvaluationOperation({'action':'match_discover','description':'freelance\x20logo\x20design','location':'Shanghai','sensitivity':'strict','budget':'50','required_capabilities':['has_wip_verification'],'context_network':'testnet'}),b=resultOf(a)['matches'][0x0];expect(b['service']['sales'])['toEqual']([{'name':'logo','price':'100','wip_hash':'abc'}]),expect(b['result']['breakdown']['find'](c=>c['rule_id']==='price'))['toMatchObject']({'score':0x0,'reason':'over\x20budget'}),expect(b['result']['breakdown']['find'](c=>c['rule_id']==='capabilities'))['toMatchObject']({'score':0x64,'matched':['has_wip_verification']});});}),describe('evaluation_operation\x20evidence_review\x20list\x20mode\x20(P2-3)',()=>{it('items\x20mode\x20→\x20structured\x20usable/manual/rejected\x20+\x20proof\x20candidates',async()=>{const a=await handleEvaluationOperation({'action':'evidence_review','items':[{'id':'chat.wts','kind':'signature_photo','hash_committed':!![],'digital_check_passed':!![],'proof_ref':'0xproof1'},{'id':'waybill.jpg','kind':'delivery_proof','hash_committed':!![]},{'id':'voice.mp3','kind':'voice_recording','hash_committed':![]}]}),b=resultOf(a);expect(b['action'])['toBe']('evidence_review'),expect(b['list']['items'])['toHaveLength'](0x3),expect(b['list']['usable'])['toHaveLength'](0x1),expect(b['list']['manual'])['toHaveLength'](0x1),expect(b['list']['rejected'])['toHaveLength'](0x1),expect(b['list']['proof_candidates'])['toHaveLength'](0x1),expect(b['list']['proof_candidates'][0x0]['proof_ref'])['toBe']('0xproof1'),expect(b['list']['dispute_hint'])['toContain']('1\x20Proof\x20reference\x20candidate(s)\x20ready');}),it('single-item\x20mode\x20still\x20works\x20(backwards\x20compatible)',async()=>{const a=await handleEvaluationOperation({'action':'evidence_review','kind':'signature_photo','hash_committed':!![],'digital_check_passed':!![]});expect(resultOf(a)['review']['status'])['toBe']('auto_pass');}),it('schema\x20refinement:\x20neither\x20items\x20nor\x20kind+hash_committed\x20→\x20error',async()=>{await expect(handleEvaluationOperation({'action':'evidence_review'}))['rejects']['toThrow']();});});function remoteCandidate(a,b={}){return{'objectId':a,'verifiedKind':'Service','objectVersion':'3','facetVersion':'facets-1','channels':['bm25','structured'],'rrf':0.032786885246,'publicFeatures':{'industry':'freelance','industryConfidence':0.7,'location':'Shanghai','priceMin':'100','priceMax':'100','capabilities':['has_wip_verification'],'published':!![],'paused':![],'keywords':['design']},'serverEvaluation':{'policyVersion':'public-baseline-1','total':87.5,'breakdown':[{'dimension':'text','weight':0x1e,'score':0x64}],'unknownRules':['trust:\x20cold-start\x20prior\x20withheld'],'redFlags':[]},'payloadJson':{'description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'fields':{'name':'logo','price':'100','wip_hash':'abc'}}],'bPublished':!![],'bPaused':![]},...b};}function remotePage(a){return{'policyVersion':'public-baseline-1','candidates':a,'recall':{'liveSet':a['length']+0x2,'gated':a['length'],'structured':a['length'],'bm25':a['length'],'merged':a['length'],'channelsActive':['structured','bm25']},'truncated':![],'coverage':{'mode':'known_objects','complete':![],'truncated':![],'total_enumerated':a['length'],'chain_id':'chain_test','degraded_reasons':[]}};}function legacyAnswer(){return{'services':[{'object':'0xsvc1','name':'Logo\x20design','location':'Shanghai','json':{'description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'fields':{'name':'logo','price':'100','wip_hash':'abc'}}],'bPublished':!![],'bPaused':![]}}],'total_enumerated':0x1,'has_more':![],'coverage':{'mode':'event_window','complete':![],'truncated':![],'total_enumerated':0x1,'chain_id':'chain_test','degraded_reasons':['EVENT_BACKED_ENUMERATION']}};}const MATCH_INPUT={'action':'match_discover','description':'freelance\x20logo\x20design','location':'Shanghai','sensitivity':'strict','budget':'100','required_capabilities':['has_wip_verification'],'context_network':'testnet'};describe('evaluation_operation\x20match_discover\x20remote\x20index\x20route\x20(K5-11\x20R3)',()=>{beforeEach(()=>{vi['mocked'](enumerateServices)['mockReset'](),vi['mocked'](matchServicesViaIndex)['mockReset']();}),afterEach(()=>{delete process['env']['WOWOK_DATA_SOURCE'],delete process['env']['WOWOK_INDEX_URL'];}),it('converts\x20wei\x20budgets\x20to\x20WOW\x20decimals\x20for\x20the\x20match\x20API',()=>{expect(weiToWowDecimal('0'))['toBe']('0'),expect(weiToWowDecimal('6000000000'))['toBe']('6'),expect(weiToWowDecimal('7500000000'))['toBe']('7.5'),expect(weiToWowDecimal('123456789'))['toBe']('0.123456789'),expect(weiToWowDecimal('1000000000000'))['toBe']('1000'),expect(()=>weiToWowDecimal('12.5'))['toThrow']();}),it('one-shot\x20remote\x20match:\x20no\x20enumeration,\x20dual\x20breakdown,\x20private\x20re-rank',async()=>{process['env']['WOWOK_DATA_SOURCE']='remote',process['env']['WOWOK_INDEX_URL']='http://index.test',vi['mocked'](matchServicesViaIndex)['mockResolvedValueOnce'](remotePage([remoteCandidate('0xsvc1'),remoteCandidate('0xsvc2',{'payloadJson':{'description':'mural\x20painting','location':'Shanghai','sales':[{'fields':{'name':'mural','price':'90'}}],'bPublished':!![],'bPaused':![]}})]));const a=await handleEvaluationOperation({...MATCH_INPUT}),b=resultOf(a);expect(b['match_route'])['toBe']('remote_index'),expect(enumerateServices)['not']['toHaveBeenCalled'](),expect(vi['mocked'](matchServicesViaIndex)['mock']['calls'][0x0][0x1])['toMatchObject']({'q':'freelance\x20logo\x20design','location':'Shanghai','budgetWei':'100','capabilities':['has_wip_verification']}),expect(b['matches'])['toHaveLength'](0x2),expect(b['total_enumerated'])['toBe'](0x4);const c=b['matches']['find'](e=>e['service']['object']==='0xsvc1');expect(c['server_match'])['toMatchObject']({'policy_version':'public-baseline-1','total':87.5,'channels':['bm25','structured']}),expect(c['server_match']['unknown_rules'])['toEqual'](['trust:\x20cold-start\x20prior\x20withheld']),expect(c['result']['breakdown']['some'](e=>e['rule_id']==='capabilities'))['toBe'](!![]);const d=b['matches']['find'](e=>e['service']['object']==='0xsvc2');expect(d['service']['description'])['toBe']('mural\x20painting'),expect(d['server_match'])['toBeDefined'](),expect(b['coverage']['mode'])['toBe']('known_objects');}),it('auto\x20mode\x20degrades\x20to\x20legacy\x20enumeration\x20with\x20honest\x20coverage',async()=>{process['env']['WOWOK_DATA_SOURCE']='auto',process['env']['WOWOK_INDEX_URL']='http://index.test',vi['mocked'](matchServicesViaIndex)['mockRejectedValueOnce'](Object['assign'](new Error('Remote\x20index\x20returned\x20HTTP\x20503'),{'code':'INDEX_HTTP_ERROR'})),vi['mocked'](enumerateServices)['mockResolvedValueOnce'](legacyAnswer());const a=await handleEvaluationOperation({...MATCH_INPUT}),b=resultOf(a);expect(b['match_route'])['toBe']('legacy_enumeration'),expect(enumerateServices)['toHaveBeenCalledTimes'](0x1),expect(b['coverage']['degraded_reasons'])['toContain']('MATCH_INDEX_FALLBACK'),expect(b['coverage']['degraded_reasons'])['toContain']('INDEX_HTTP_ERROR'),expect(b['matches'])['toHaveLength'](0x1),expect(b['matches'][0x0]['server_match'])['toBeUndefined']();}),it('strict\x20remote\x20mode\x20surfaces\x20the\x20index\x20failure',async()=>{process['env']['WOWOK_DATA_SOURCE']='remote',process['env']['WOWOK_INDEX_URL']='http://index.test',vi['mocked'](matchServicesViaIndex)['mockRejectedValueOnce'](Object['assign'](new Error('Remote\x20index\x20request\x20failed'),{'code':'INDEX_UNAVAILABLE'})),await expect(handleEvaluationOperation({...MATCH_INPUT}))['rejects']['toThrow'](/Remote index request failed/),expect(enumerateServices)['not']['toHaveBeenCalled']();}),it('filters\x20the\x20match\x20API\x20cannot\x20express\x20keep\x20the\x20legacy\x20route',async()=>{process['env']['WOWOK_DATA_SOURCE']='remote',process['env']['WOWOK_INDEX_URL']='http://index.test',vi['mocked'](enumerateServices)['mockResolvedValueOnce'](legacyAnswer());const a=await handleEvaluationOperation({...MATCH_INPUT,'coin_type':'0x2::wow::WOW'}),b=resultOf(a);expect(b['match_route'])['toBe']('legacy_enumeration'),expect(matchServicesViaIndex)['not']['toHaveBeenCalled'](),expect(enumerateServices)['toHaveBeenCalledTimes'](0x1);});}),describe('evaluation_operation\x20match_discover\x20private\x20policy\x20DSL\x20(K5-11\x20R4)',()=>{beforeEach(()=>{vi['mocked'](enumerateServices)['mockReset'](),vi['mocked'](matchServicesViaIndex)['mockReset']();}),afterEach(()=>{delete process['env']['WOWOK_DATA_SOURCE'],delete process['env']['WOWOK_INDEX_URL'];});function a(){return{'services':[{'object':'0xgood','name':'Logo\x20design','location':'Shanghai','json':{'description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'fields':{'name':'logo','price':'100','wip_hash':'abc'}}],'arbitrations':['0xarb1'],'owner':'0xownerA','bPublished':!![],'bPaused':![]}},{'object':'0xpaused','name':'Paused\x20shop','location':'Shanghai','json':{'description':'freelance\x20logo\x20design','location':'Shanghai','sales':[{'fields':{'name':'logo','price':'100'}}],'owner':'0xownerB','bPublished':!![],'bPaused':!![]}}],'total_enumerated':0x2,'has_more':![],'coverage':{'mode':'event_window','complete':![],'truncated':![],'total_enumerated':0x2,'chain_id':'chain_test','degraded_reasons':['EVENT_BACKED_ENUMERATION']}};}it('preset\x20gate\x20drops\x20the\x20paused\x20candidate\x20and\x20reports\x20it\x20in\x20policy_effect',async()=>{vi['mocked'](enumerateServices)['mockResolvedValueOnce'](a());const b=await handleEvaluationOperation({'action':'match_discover','description':'freelance\x20logo\x20design','location':'Shanghai','sensitivity':'strict','context_network':'testnet','match_policy':'trust_first'}),c=resultOf(b);expect(c['matches']['map'](d=>d['service']['object']))['toEqual'](['0xgood']),expect(c['policy_effect']['policy_id'])['toBe']('trust_first'),expect(c['policy_effect']['privacy'])['toContain']('never\x20leave\x20this\x20device'),expect(c['policy_effect']['dropped']['some'](e=>e['object']==='0xpaused'))['toBe'](!![]),expect(c['policy_effect']['weights_applied']['trust'])['toBe'](0x1e),expect(typeof c['policy_effect']['policy_hash'])['toBe']('string');}),it('a\x20weight-only\x20policy\x20re-anchors\x20the\x20trust\x20dimension\x20(weight_source=override)',async()=>{vi['mocked'](enumerateServices)['mockResolvedValueOnce'](a());const b=await handleEvaluationOperation({'action':'match_discover','description':'freelance\x20logo\x20design','location':'Shanghai','sensitivity':'strict','context_network':'testnet','match_policy':{'policy_id':'custom','weights':{'trust':0x2d}}}),c=resultOf(b),d=c['matches'][0x0]['result']['breakdown']['find'](e=>e['rule_id']==='trust');expect(d['weight'])['toBe'](0x2d),expect(d['weight_source'])['toBe']('override'),expect(c['policy_effect']['weights_applied'])['toEqual']({'trust':0x2d});}),it('the\x20private\x20policy\x20never\x20reaches\x20the\x20remote\x20match\x20request',async()=>{process['env']['WOWOK_DATA_SOURCE']='remote',process['env']['WOWOK_INDEX_URL']='http://index.test',vi['mocked'](matchServicesViaIndex)['mockResolvedValueOnce'](remotePage([remoteCandidate('0xsvc1')])),await handleEvaluationOperation({...MATCH_INPUT,'match_policy':'trust_first'});const b=vi['mocked'](matchServicesViaIndex)['mock']['calls'][0x0][0x1];expect(b['match_policy'])['toBeUndefined'](),expect(b['policy'])['toBeUndefined'](),expect(JSON['stringify'](b))['not']['toContain']('trust_first');}),it('unknown\x20preset\x20id\x20throws\x20with\x20the\x20available\x20list',async()=>{await expect(handleEvaluationOperation({...MATCH_INPUT,'match_policy':'does_not_exist'}))['rejects']['toThrow'](/unknown match_policy preset/);}),it('a\x20supply_to_demand\x20policy\x20is\x20rejected\x20by\x20match_discover',async()=>{await expect(handleEvaluationOperation({...MATCH_INPUT,'match_policy':'supplier_hunting'}))['rejects']['toThrow'](/direction/);});}),describe('evaluation_operation\x20demand_present\x20private\x20policy\x20(K5-11\x20R4-W2)',()=>{const a={'id':'0xsvc1','kind':'service','industry':'freelance','region':{'mode':'physical','city':'Shanghai','raw':'Shanghai'},'keywords':['design'],'capabilities':{'has_arbitration':!![],'has_refund_path':!![],'has_milestone_nodes':![],'has_compensation_fund':![],'has_wip_verification':!![],'has_messenger':!![],'has_buy_guard':![],'has_dynamic_pricing':![],'is_published':!![],'is_paused':![]}};function b(){return{'demands':[{'object':'0xdesign','description':'need\x20a\x20freelance\x20logo\x20redesign\x20for\x20a\x20coffee\x20brand','location':'Shanghai','rewards':['0xr1','0xr2'],'guards':[],'presenters_count':0x0,'um':'0xum1','permission':'0xperm1'},{'object':'0xcleaning','description':'deep\x20cleaning\x20for\x20a\x203-bedroom\x20apartment','location':'Beijing','rewards':['0xr3'],'guards':[{'guard':'0xg'}],'presenters_count':0x2,'um':null,'permission':'0xperm2'}],'total_enumerated':0x2,'has_more':![],'coverage':{'mode':'event_window','complete':![],'truncated':![],'total_enumerated':0x2,'chain_id':'chain_test','degraded_reasons':['EVENT_BACKED_ENUMERATION']}};}beforeEach(()=>{vi['mocked'](enumerateDemands)['mockReset'](),vi['mocked'](matchServicesViaIndex)['mockReset']();}),it('supply_to_demand\x20policy\x20gates\x20demands\x20and\x20reports\x20the\x20effect',async()=>{vi['mocked'](enumerateDemands)['mockResolvedValueOnce'](b());const c=await handleEvaluationOperation({'action':'demand_present','service_cap':a,'context_network':'testnet','match_policy':{'policy_id':'pick-design','direction':'supply_to_demand','gates':[{'dim':'text','op':'must_contain','value':'logo'},{'dim':'messenger','op':'eq','value':!![]}]}}),d=resultOf(c);expect(d['matches']['map'](e=>e['demand']['object']))['toEqual'](['0xdesign']),expect(d['policy_effect']['policy_id'])['toBe']('pick-design'),expect(d['policy_effect']['direction'])['toBe']('supply_to_demand'),expect(d['policy_effect']['dropped']['some'](e=>e['object']==='0xcleaning'))['toBe'](!![]),expect(d['policy_effect']['privacy'])['toContain']('never\x20leave\x20this\x20device'),expect(d['matches'][0x0]['next'])['toBeDefined'](),expect(matchServicesViaIndex)['not']['toHaveBeenCalled']();}),it('preset\x20supplier_hunting\x20drives\x20demand_present\x20end-to-end',async()=>{vi['mocked'](enumerateDemands)['mockResolvedValueOnce'](b());const c=await handleEvaluationOperation({'action':'demand_present','service_cap':a,'context_network':'testnet','match_policy':'supplier_hunting'}),d=resultOf(c);expect(d['policy_effect']['policy_id'])['toBe']('supplier_hunting'),expect(d['matches'])['toHaveLength'](0x2);}),it('a\x20demand_to_supply\x20policy\x20is\x20rejected\x20by\x20demand_present',async()=>{await expect(handleEvaluationOperation({'action':'demand_present','service_cap':a,'context_network':'testnet','match_policy':'trust_first'}))['rejects']['toThrow'](/direction/),expect(enumerateDemands)['not']['toHaveBeenCalled']();}),it('weights\x20re-anchor\x20the\x20demand_match\x20scoring\x20dims\x20on\x20the\x20supply-to-demand\x20path',async()=>{vi['mocked'](enumerateDemands)['mockResolvedValueOnce'](b());const c=await handleEvaluationOperation({'action':'demand_present','service_cap':a,'context_network':'testnet','match_policy':{'policy_id':'custom','direction':'supply_to_demand','weights':{'capabilities':0x32}}}),d=resultOf(c),e=d['matches'][0x0]['result']['breakdown']['find'](f=>f['rule_id']==='capabilities');expect(e['weight'])['toBe'](0x32),expect(e['weight_source'])['toBe']('override'),expect(d['policy_effect']['weights_applied'])['toEqual']({'capabilities':0x32});});}),describe('evaluation_operation\x20discover_demands\x20policy\x20gates\x20(K5-11\x20R4-W2)',()=>{function a(){return{'demands':[{'object':'0xdesign','description':'need\x20a\x20freelance\x20logo\x20redesign','location':'Shanghai','rewards':['0xr1'],'guards':[],'presenters_count':0x0,'um':'0xum1','permission':'0xperm1'},{'object':'0xcleaning','description':'deep\x20cleaning\x20for\x20a\x203-bedroom\x20apartment','location':'Beijing','rewards':[],'guards':[],'presenters_count':0x0,'um':null,'permission':'0xperm2'}],'total_enumerated':0x2,'has_more':![],'coverage':{'mode':'event_window','complete':![],'truncated':![],'total_enumerated':0x2,'chain_id':'chain_test','degraded_reasons':['EVENT_BACKED_ENUMERATION']}};}beforeEach(()=>{vi['mocked'](enumerateDemands)['mockReset']();}),it('gates\x20filter\x20the\x20enumerated\x20set;\x20weights/rerank\x20are\x20reported\x20not\x20applicable',async()=>{vi['mocked'](enumerateDemands)['mockResolvedValueOnce'](a());const b=await handleEvaluationOperation({'action':'discover_demands','context_network':'testnet','match_policy':{'policy_id':'pick-design','direction':'supply_to_demand','gates':[{'dim':'text','op':'must_contain','value':'logo'}],'weights':{'trust':0x1e},'rerank':{'diversity':{'by':'owner','max_per_group':0x1}}}}),c=resultOf(b);expect(c['demands']['map'](e=>e['object']))['toEqual'](['0xdesign']),expect(c['policy_effect']['policy_id'])['toBe']('pick-design'),expect(c['policy_effect']['ignored']['join']('|'))['toContain']('weights\x20not\x20applicable'),expect(c['policy_effect']['ignored']['join']('|'))['toContain']('rerank\x20not\x20applicable'),expect(c['policy_effect']['weights_applied'])['toEqual']({});}),it('violated\x20reward\x20gates\x20eliminate\x20demands\x20from\x20the\x20enumerated\x20set',async()=>{vi['mocked'](enumerateDemands)['mockResolvedValueOnce'](a());const b=await handleEvaluationOperation({'action':'discover_demands','context_network':'testnet','match_policy':{'policy_id':'multi-reward','direction':'supply_to_demand','gates':[{'dim':'reward','op':'gte','value':0x2}]}}),c=resultOf(b);expect(c['demands'])['toHaveLength'](0x0),expect(c['policy_effect']['dropped'])['toHaveLength'](0x2);});});
@@ -1 +1 @@
1
- import{strictParse}from'../../schema/index.js';import{IntentRadarInputSchema}from'../../schema/intent-radar/index.js';import{createIntent,listIntents,matchAllIntents,matchIntent,removeIntent}from'../../intent/index.js';import{enrichEventsWithObjectText}from'../../intent/enrich.js';import{query_events}from'@wowok/wowok';const AUTO_PULL_TYPES=['ServiceEvent','ArbitrationEvent','DemandChangedEvent','DemandPresentEvent','NewOrderEvent','ProgressEvent','ArbEvent','VoteEvent','DemandFeedbackEvent','NewEntityEvent','NewPaymentEvent','AllocationEvent','TreasuryEvent','RewardClaimEvent','RewardFundEvent','RewardWithdrawEvent','PermissionChangedEvent','RepositoryDataOverwriteEvent'];async function pullRecentEvents(a,b){const c=[];for(const d of AUTO_PULL_TYPES){try{const e=await query_events({'type':d,'cursor':null,'limit':b,'order':'descending','no_cache':![],'network':a}),f=e?.['data'];if(Array['isArray'](f))c['push'](...f);}catch{}}return c;}export async function handleIntentRadar(a){const b=strictParse(IntentRadarInputSchema,a,'intent_radar\x20input');let c;switch(b['action']){case'save':{const d=await createIntent({'intent':b['intent'],'account':b['account'],'role':b['role'],'target_types':b['target_types']});c={'action':'save','intent':d};break;}case'list':{c={'action':'list','intents':await listIntents(b['account'])};break;}case'remove':{c={'action':'remove','removed':await removeIntent(b['id'])};break;}case'match':{let e=b['events']??[];e['length']===0x0&&(e=await pullRecentEvents(b['network'],b['limit']??0x5));e=await enrichEventsWithObjectText(e,b['network']);const f=b['intent_id']?[await matchIntent(b['intent_id'],e)]['filter'](g=>g!==null):await matchAllIntents(e,b['account']);c={'action':'match','results':f};break;}default:throw new Error('Unknown\x20intent_radar\x20action');}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
1
+ import{strictParse}from'../../schema/index.js';import{IntentRadarInputSchema}from'../../schema/intent-radar/index.js';import{createIntent,listIntents,matchAllIntents,matchIntent,removeIntent}from'../../intent/index.js';import{enrichEventsWithObjectText}from'../../intent/enrich.js';import{query_events}from'@wowok/wowok';const AUTO_PULL_TYPES=['ServiceEvent','ArbitrationEvent','DemandChangedEvent','DemandPresentEvent','NewOrderEvent','ProgressEvent','ThresholdPendingEvent','ArbEvent','VoteEvent','DemandFeedbackEvent','NewEntityEvent','NewPaymentEvent','AllocationEvent','TreasuryEvent','RewardClaimEvent','RewardFundEvent','RewardWithdrawEvent','PermissionChangedEvent','RepositoryDataOverwriteEvent'];async function pullRecentEvents(a,b){const c=[];for(const d of AUTO_PULL_TYPES){try{const e=await query_events({'type':d,'cursor':null,'limit':b,'order':'descending','no_cache':![],'network':a}),f=e?.['data'];if(Array['isArray'](f))c['push'](...f);}catch{}}return c;}export async function handleIntentRadar(a){const b=strictParse(IntentRadarInputSchema,a,'intent_radar\x20input');let c;switch(b['action']){case'save':{const d=await createIntent({'intent':b['intent'],'account':b['account'],'role':b['role'],'target_types':b['target_types']});c={'action':'save','intent':d};break;}case'list':{c={'action':'list','intents':await listIntents(b['account'])};break;}case'remove':{c={'action':'remove','removed':await removeIntent(b['id'])};break;}case'match':{let e=b['events']??[];e['length']===0x0&&(e=await pullRecentEvents(b['network'],b['limit']??0x5));e=await enrichEventsWithObjectText(e,b['network']);const f=b['intent_id']?[await matchIntent(b['intent_id'],e)]['filter'](g=>g!==null):await matchAllIntents(e,b['account']);c={'action':'match','results':f};break;}default:throw new Error('Unknown\x20intent_radar\x20action');}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
@@ -20,4 +20,5 @@ export declare function normalizeManyAccountOrMark(input: string[] | {
20
20
  entities: any[];
21
21
  check_all_founded?: boolean;
22
22
  } | undefined;
23
+ export declare function throwIfTransportAmbiguous(op: string, e: unknown): never;
23
24
  export declare function handleMessengerOperation(args: unknown): Promise<ToolDispatchResult>;