@wowok/agent-mcp 3.2.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/dist/config/exposure.d.ts +8 -8
  2. package/dist/config/judgment.d.ts +20 -20
  3. package/dist/config/rule-engine.d.ts +20 -20
  4. package/dist/extensions/industry-pack.js +1 -1
  5. package/dist/graph/onchain/facts.js +1 -1
  6. package/dist/graph/onchain/sdk-batch.d.ts +1 -0
  7. package/dist/graph/onchain/sdk-batch.js +1 -1
  8. package/dist/graph/onchain/sdk-dataplane.d.ts +1 -0
  9. package/dist/graph/onchain/sdk-dataplane.js +1 -1
  10. package/dist/knowledge/allocation-templates.d.ts +1 -1
  11. package/dist/knowledge/allocation-templates.js +1 -1
  12. package/dist/knowledge/arbitration-ledger.js +1 -1
  13. package/dist/knowledge/audit-rules.d.ts +1 -1
  14. package/dist/knowledge/audit-rules.js +1 -1
  15. package/dist/knowledge/builtin-templates.d.ts +1 -1
  16. package/dist/knowledge/builtin-templates.js +1 -1
  17. package/dist/knowledge/discount-threshold.d.ts +15 -0
  18. package/dist/knowledge/discount-threshold.js +1 -0
  19. package/dist/knowledge/getting-started.js +1 -1
  20. package/dist/knowledge/guard-design-patterns.js +1 -1
  21. package/dist/knowledge/guard-lint.js +1 -1
  22. package/dist/knowledge/guard-translation.js +1 -1
  23. package/dist/knowledge/index.d.ts +2 -2
  24. package/dist/knowledge/index.js +1 -1
  25. package/dist/knowledge/industry-generalizer.d.ts +38 -1
  26. package/dist/knowledge/industry-generalizer.js +1 -1
  27. package/dist/knowledge/industry-registry.js +1 -1
  28. package/dist/knowledge/industry-strategy.js +1 -1
  29. package/dist/knowledge/jsonrpc-enum.js +1 -1
  30. package/dist/knowledge/onchain-constants.d.ts +2 -2
  31. package/dist/knowledge/onchain-constants.js +1 -1
  32. package/dist/knowledge/scenario-modes.d.ts +10 -0
  33. package/dist/knowledge/strategy-manuals.d.ts +1 -1
  34. package/dist/knowledge/strategy-manuals.js +1 -1
  35. package/dist/knowledge/template-loader.d.ts +20 -0
  36. package/dist/knowledge/template-loader.js +1 -1
  37. package/dist/knowledge/template-registry.js +1 -1
  38. package/dist/knowledge/template-scanner.js +1 -1
  39. package/dist/knowledge/tools-reference.js +1 -1
  40. package/dist/monitor/MonitorLoop.js +1 -1
  41. package/dist/participation/arbitrator-interest.js +1 -1
  42. package/dist/participation/customer-interest.js +1 -1
  43. package/dist/participation/merchant-interest.js +1 -1
  44. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  45. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  46. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  47. package/dist/playbooks/service-build/mode-actions.d.ts +12 -1
  48. package/dist/playbooks/service-build/mode-actions.js +1 -1
  49. package/dist/playbooks/service-build/object-panorama.js +1 -1
  50. package/dist/playbooks/service-build/participation-radar.js +1 -1
  51. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  52. package/dist/playbooks/service-build/reverse-mapping-refund-p0-5.spec.d.ts +1 -0
  53. package/dist/playbooks/service-build/reverse-mapping-refund-p0-5.spec.js +1 -0
  54. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  55. package/dist/playbooks/service-build/semantic-graph.js +1 -1
  56. package/dist/playbooks/service-build/service-panorama.js +1 -1
  57. package/dist/playbooks/service-build/service-quote.js +1 -1
  58. package/dist/review/index.js +1 -1
  59. package/dist/role/profiles.js +1 -1
  60. package/dist/role/types.d.ts +2 -0
  61. package/dist/role/types.js +1 -1
  62. package/dist/safety/confirm-gate.js +1 -1
  63. package/dist/schema/call/allocation.d.ts +7 -7
  64. package/dist/schema/call/arbitration.d.ts +1 -1
  65. package/dist/schema/call/arbitration.js +1 -1
  66. package/dist/schema/call/base.d.ts +5 -5
  67. package/dist/schema/call/base.js +1 -1
  68. package/dist/schema/call/bridge.d.ts +5 -9
  69. package/dist/schema/call/bridge.js +1 -1
  70. package/dist/schema/call/contact.d.ts +1 -1
  71. package/dist/schema/call/demand.d.ts +1 -1
  72. package/dist/schema/call/guard.d.ts +11 -11
  73. package/dist/schema/call/handler.js +1 -1
  74. package/dist/schema/call/machine.d.ts +2 -2
  75. package/dist/schema/call/order.d.ts +1 -1
  76. package/dist/schema/call/payment.d.ts +1 -1
  77. package/dist/schema/call/permission.d.ts +1 -1
  78. package/dist/schema/call/personal.d.ts +1 -1
  79. package/dist/schema/call/progress.d.ts +1 -1
  80. package/dist/schema/call/proof.d.ts +2 -2
  81. package/dist/schema/call/repository.d.ts +1 -1
  82. package/dist/schema/call/reward.d.ts +1 -1
  83. package/dist/schema/call/semantic.js +1 -1
  84. package/dist/schema/call/service.d.ts +5 -5
  85. package/dist/schema/call/service.js +1 -1
  86. package/dist/schema/call/treasury.d.ts +1 -1
  87. package/dist/schema/common/index.js +1 -1
  88. package/dist/schema/evaluation/index.d.ts +6 -2
  89. package/dist/schema/evaluation/index.js +1 -1
  90. package/dist/schema/goal/index.d.ts +8 -8
  91. package/dist/schema/goal/planning.d.ts +15 -15
  92. package/dist/schema/industry-pack/index.d.ts +15 -0
  93. package/dist/schema/industry-pack/modes.d.ts +15 -0
  94. package/dist/schema/industry-pack/modes.js +1 -1
  95. package/dist/schema/intent-radar/index.d.ts +3 -0
  96. package/dist/schema/intent-radar/index.js +1 -1
  97. package/dist/schema/local/index.d.ts +577 -18
  98. package/dist/schema/local/index.js +1 -1
  99. package/dist/schema/messenger/index.d.ts +140 -20
  100. package/dist/schema/messenger/index.js +1 -1
  101. package/dist/schema/operations.d.ts +30 -28
  102. package/dist/schema/operations.js +1 -1
  103. package/dist/schema/persona/index.d.ts +708 -708
  104. package/dist/schema/persona/index.js +1 -1
  105. package/dist/schema/query/bi.d.ts +20 -6
  106. package/dist/schema/query/bi.js +1 -1
  107. package/dist/schema/query/index.d.ts +32 -32
  108. package/dist/schema/query/index.js +1 -1
  109. package/dist/schema/schema-query/index.d.ts +3 -3
  110. package/dist/schema/schema-version.js +1 -1
  111. package/dist/schema/watch/index.d.ts +2 -2
  112. package/dist/schema/workflow/index.d.ts +2 -2
  113. package/dist/schema-query-impl/index.js +1 -1
  114. package/dist/schemas/account_operation.output.json +6 -2
  115. package/dist/schemas/account_operation.schema.json +1 -1
  116. package/dist/schemas/bridge_operation.schema.json +2 -10
  117. package/dist/schemas/evaluation_operation.output.json +2 -0
  118. package/dist/schemas/evaluation_operation.schema.json +2 -0
  119. package/dist/schemas/index.json +7 -1
  120. package/dist/schemas/industry_pack_operation.output.json +87 -4
  121. package/dist/schemas/intent_radar.output.json +2 -0
  122. package/dist/schemas/intent_radar.schema.json +1 -0
  123. package/dist/schemas/local_cache_operation.output.json +1536 -0
  124. package/dist/schemas/local_cache_operation.schema.json +101 -0
  125. package/dist/schemas/local_mark_operation.output.json +51 -36
  126. package/dist/schemas/local_mark_operation.schema.json +1 -0
  127. package/dist/schemas/messenger_operation.schema.json +358 -35
  128. package/dist/schemas/onchain_operations.schema.json +10 -10
  129. package/dist/schemas/onchain_operations_allocation.schema.json +1 -1
  130. package/dist/schemas/onchain_operations_arbitration.schema.json +3 -3
  131. package/dist/schemas/onchain_operations_payment.schema.json +1 -1
  132. package/dist/schemas/onchain_operations_reward.schema.json +1 -1
  133. package/dist/schemas/onchain_operations_service.schema.json +3 -3
  134. package/dist/schemas/onchain_operations_treasury.schema.json +1 -1
  135. package/dist/schemas/onchain_table_data.output.json +11 -0
  136. package/dist/schemas/query_toolkit.output.json +11 -4
  137. package/dist/schemas/query_toolkit.schema.json +13 -2
  138. package/dist/tools/handlers/benchmark-migration.js +1 -1
  139. package/dist/tools/handlers/bridge.js +1 -1
  140. package/dist/tools/handlers/config.js +1 -1
  141. package/dist/tools/handlers/local.d.ts +1 -0
  142. package/dist/tools/handlers/local.js +1 -1
  143. package/dist/tools/handlers/messenger.d.ts +9 -2
  144. package/dist/tools/handlers/messenger.js +1 -1
  145. package/dist/tools/handlers/name-resolution.d.ts +4 -0
  146. package/dist/tools/handlers/name-resolution.js +1 -0
  147. package/dist/tools/handlers/name-resolution.spec.d.ts +1 -0
  148. package/dist/tools/handlers/name-resolution.spec.js +1 -0
  149. package/dist/tools/handlers/onchain-name-registration.d.ts +37 -0
  150. package/dist/tools/handlers/onchain-name-registration.js +1 -0
  151. package/dist/tools/handlers/onchain-name-registration.spec.d.ts +1 -0
  152. package/dist/tools/handlers/onchain-name-registration.spec.js +1 -0
  153. package/dist/tools/handlers/onchain.d.ts +1 -0
  154. package/dist/tools/handlers/onchain.js +1 -1
  155. package/dist/tools/handlers/query.d.ts +1 -0
  156. package/dist/tools/handlers/query.js +1 -1
  157. package/dist/tools/index.js +1 -1
  158. package/dist/tools/registry/local.js +1 -1
  159. package/dist/tools/sanitize-description-roundtrip.spec.d.ts +1 -0
  160. package/dist/tools/sanitize-description-roundtrip.spec.js +1 -0
  161. package/dist/tools/sanitize-output.d.ts +1 -0
  162. package/dist/tools/sanitize-output.js +1 -1
  163. package/dist/tools/wrap.js +1 -1
  164. package/package.json +2 -2
@@ -1 +1 @@
1
- function resolveNameBase(a,b){if(b?.['nameBase']&&b['nameBase']['trim']())return b['nameBase']['trim']()['toLowerCase']()['replace'](/[^a-z0-9]+/g,'_')['replace'](/^_+|_+$/g,'');const c=a['description']['toLowerCase']()['replace'](/[^a-z0-9]+/g,'_')['replace'](/^_+|_+$/g,'')['slice'](0x0,0x18)['replace'](/_+$/g,'');return c||'service';}export function buildSemanticGraph(a,b,c,d){const e=[],f=[],h=[],j=resolveNameBase(a,d),k=c?.['machine_shape']??[],l=k['filter'](u=>u['operator'])['map'](u=>u['name']+'='+u['operator'])['join'](',\x20'),m=c?.['allocator'],n=!!m&&!d?.['paymentExplicit']&&(m['count']>0x1||m['recipient']!=='signer');e['push']({'id':'main_permission','type':'permission','purpose':'Role-based\x20access\x20control\x20for\x20merchant,\x20customer,\x20and\x20optional\x20arbitrator','derivedFrom':{'intentField':'roles','rationale':'All\x20WOW\x20services\x20require\x20a\x20Permission\x20object\x20for\x20role\x20management'},'config':{'name':{'type':'string','value':j+'_permission','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset')&&(e['push']({'id':'main_service','type':'service','purpose':'Main\x20service\x20offering:\x20'+a['description'],'derivedFrom':{'intentField':'description','rationale':'Service\x20is\x20the\x20primary\x20object\x20representing\x20the\x20merchant\x20offering'},'config':{'name':{'type':'string','value':j+'_service','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':'main_service','to':'main_permission','relation':'requires_permission','required':!![],'derivedFrom':{'intentField':'roles','rationale':'Service\x20must\x20reference\x20its\x20Permission\x20object'}}));(a['payment']['model']==='milestone'||a['deliverables']['length']>0x1||k['length']>0x0)&&(e['push']({'id':'main_machine','type':'machine','purpose':'Workflow\x20controlling\x20deliverable\x20milestones\x20and\x20acceptance','derivedFrom':k['length']>0x0?{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20machine_shape\x20prior:\x20'+k['length']+'\x20nodes'}:{'intentField':'deliverables','rationale':'Multiple\x20deliverables\x20or\x20milestone\x20payment\x20requires\x20Machine\x20workflow'},'config':{'name':{'type':'string','value':j+'_machine','mapsTo':'object.name'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'},...k['length']>0x0?{'nodes':{'type':'string','value':k['map'](u=>u['name'])['join']('\x20→\x20'),'mapsTo':'machine.nodes'}}:{},...l['length']>0x0?{'operators':{'type':'string','value':l,'mapsTo':'machine.forwards.named_operator'}}:{}},'expectedState':{'published':!![],'paused':![]}}),e['find'](u=>u['id']==='main_service')&&f['push']({'from':'main_service','to':'main_machine','relation':'uses_machine','required':!![],'derivedFrom':{'intentField':'deliverables','rationale':'Service\x20binds\x20to\x20Machine\x20for\x20workflow\x20execution'}}));(a['payment']['model']==='milestone'||a['payment']['model']==='escrow'||a['trust']['escrow']||n)&&(e['push']({'id':'main_allocation','type':'allocation','purpose':'Order\x20fund\x20routing\x20via\x20Service.order_allocators\x20(frozen\x20at\x20publish;\x20settlement\x20fires\x20via\x20alloc_by_guard)','derivedFrom':n&&a['payment']['model']!=='milestone'&&a['payment']['model']!=='escrow'&&!a['trust']['escrow']?{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20allocator\x20prior:\x20'+m['description']}:{'intentField':'payment.allocation','rationale':'Escrow/milestone\x20requires\x20Allocation\x20for\x20fund\x20routing'},'config':{'name':{'type':'string','value':j+'_allocation','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'},...m?{'allocator_strategy':{'type':'string','value':m['description'],'mapsTo':'allocation.strategy'},'allocator_mode':{'type':'enum','value':m['mode'],'allowed':['amount','rate','surplus'],'mapsTo':'allocation.mode'},'allocator_recipient_count':{'type':'number','value':m['count'],'mapsTo':'allocation.recipients'}}:{}},'expectedState':{'published':!![],'paused':![]}}),e['find'](u=>u['id']==='main_service')&&f['push']({'from':'main_service','to':'main_allocation','relation':'has_order_allocators','required':!![],'derivedFrom':{'intentField':'payment','rationale':'Service\x20must\x20bind\x20Allocation\x20for\x20order\x20fund\x20routing'}}));a['trust']['arbitration']!=='none'&&(e['push']({'id':'main_arbitration','type':'arb','purpose':'Independent\x20dispute\x20resolution','derivedFrom':{'intentField':'trust.arbitration','rationale':'Arbitration\x20object\x20provides\x20binding\x20dispute\x20resolution'},'config':{'name':{'type':'string','value':j+'_arbitration','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'}},'expectedState':{'published':!![],'paused':![]}}),e['push']({'id':'arb_permission','type':'permission','purpose':'Independent\x20permission\x20for\x20arbitration\x20(MUST\x20differ\x20from\x20Service.permission)','derivedFrom':{'intentField':'trust.arbitration','rationale':'Contract-enforced:\x20arbitration.permission\x20!=\x20service.permission\x20(E_ARBITRATION_PERMISSION_CONFLICT=33)'},'config':{'name':{'type':'string','value':j+'_arb_permission','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':'main_arbitration','to':'arb_permission','relation':'requires_permission','required':!![],'derivedFrom':{'intentField':'trust.arbitration','rationale':'Arbitration\x20requires\x20its\x20own\x20Permission'}}),e['find'](u=>u['id']==='main_service')&&f['push']({'from':'main_service','to':'main_arbitration','relation':'has_arbitration','required':![],'derivedFrom':{'intentField':'trust.arbitration','rationale':'Service\x20references\x20Arbitration\x20in\x20arbitrations\x20list'}}));const o=b['some'](u=>u['id']==='wip_provenance'||u['id']==='subscription_with_proof'||u['id']==='damage_attestation');o&&e['push']({'id':'main_repository','type':'repository','purpose':'Store\x20WIP\x20hashes\x20and\x20delivery\x20evidence','derivedFrom':{'intentField':'deliverables','rationale':'WIP\x20provenance\x20requires\x20Repository\x20for\x20hash\x20commitments'},'config':{'name':{'type':'string','value':j+'_repository','mapsTo':'object.name'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}});for(const u of b){for(const v of u['templateRefs']){if(v['object_type']==='guard')e['push']({'id':'guard_'+u['id'],'type':'guard','purpose':v['purpose'],'derivedFrom':{'intentField':'trust','rationale':'Guard\x20for\x20'+u['name']+'\x20module'},'config':{'name':{'type':'string','value':j+'_'+u['id']+'_guard','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});else{if(v['template_id']['startsWith']('supplier-')){const w='supplier_'+u['id']+'_'+v['object_type'];if(e['some'](y=>y['id']===w))continue;e['push']({'id':w,'type':v['object_type'],'purpose':v['purpose'],'derivedFrom':{'intentField':'roles.suppliers','rationale':'Supplier\x20'+v['object_type']+'\x20for\x20'+u['name']+'\x20(B-6\x20two-hop\x20waterfall)'},'config':{'name':{'type':'string','value':j+'_'+u['id']+'_'+v['object_type'],'mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});const x=e['find'](y=>y['id']==='main_service');x&&f['push']({'from':'main_service','to':w,'relation':'sub_order','required':![],'derivedFrom':{'intentField':'payment.allocation','rationale':'Two-hop\x20waterfall:\x20main\x20order\x20→\x20tier-1\x20allocation\x20→\x20supplier\x20sub-order\x20→\x20tier-2\x20allocation\x20('+u['name']+')'}});}}}}if(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset'){e['push']({'id':'main_contact','type':'contact','purpose':'Public\x20contact/IM\x20channel\x20so\x20customers\x20can\x20reach\x20the\x20merchant\x20before\x20ordering','derivedFrom':{'intentField':'description','rationale':'A\x20discoverable\x20contact\x20object\x20improves\x20customer\x20trust\x20and\x20order\x20conversion'},'config':{'name':{'type':'string','value':j+'_contact','mapsTo':'object.name'},'description':{'type':'string','value':a['description'],'mapsTo':'object.description'}},'expectedState':{'published':!![],'paused':![]}});const y=e['find'](z=>z['id']==='main_service');y&&(y['config']['um']={'type':'address_ref','targetId':'main_contact','mapsTo':'object.um'},f['push']({'from':'main_service','to':'main_contact','relation':'has_contact','required':![],'derivedFrom':{'intentField':'description','rationale':'Service\x20binds\x20Contact\x20via\x20um\x20so\x20customers\x20can\x20reach\x20the\x20merchant'}}));}(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset')&&(e['push']({'id':'main_reward','type':'reward','purpose':'Optional\x20incentive\x20pool\x20(discount/referral)\x20to\x20attract\x20and\x20retain\x20customers','derivedFrom':{'intentField':'payment','rationale':'Rewards\x20lower\x20acquisition\x20cost\x20and\x20boost\x20conversion'},'config':{'name':{'type':'string','value':j+'_reward','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}}),e['find'](z=>z['id']==='main_service')&&f['push']({'from':'main_service','to':'main_reward','relation':'has_rewards','required':![],'derivedFrom':{'intentField':'payment','rationale':'Service\x20can\x20reference\x20Reward\x20in\x20its\x20rewards\x20list'}}));if(c?.['guards']?.['length']){const z=A=>{switch(A){case'service':return e['find'](B=>B['id']==='main_service')?.['id'];case'machine':return e['find'](B=>B['id']==='main_machine')?.['id'];case'reward':return e['find'](B=>B['id']==='main_reward')?.['id'];case'repository':return e['find'](B=>B['id']==='main_repository')?.['id'];case'arbitration':return e['find'](B=>B['id']==='main_arbitration')?.['id'];default:return undefined;}};for(const A of c['guards']){const B='guard_'+A['template_id'];if(e['some'](D=>D['id']===B))continue;const C=z(A['host']);if(!C)continue;e['push']({'id':B,'type':'guard','purpose':A['purpose'],'derivedFrom':{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20guard\x20prior\x20('+A['host']+'\x20host)'},'config':{'name':{'type':'string','value':j+'_'+A['template_id'],'mapsTo':'object.name'},'template':{'type':'string','value':A['template_id'],'mapsTo':'guard.template'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':C,'to':B,'relation':'has_guard','required':![],'derivedFrom':{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20attaches\x20'+A['template_id']+'\x20to\x20'+A['host']}});}}if(c?.['config_overrides'])for(const [D,E]of Object['entries'](c['config_overrides'])){for(const F of e){if(F['type']!==D)continue;for(const [G,H]of Object['entries'](E)){if(F['config'][G]!==undefined)continue;if(typeof H==='string')F['config'][G]={'type':'string','value':H,'mapsTo':'object.'+G};else{if(typeof H==='number')F['config'][G]={'type':'number','value':H,'mapsTo':'object.'+G};else typeof H==='boolean'&&(F['config'][G]={'type':'boolean','value':H,'mapsTo':'object.'+G});}}}}h['push']({'id':'service_permission_bound','level':'hard','description':'Service\x20must\x20be\x20bound\x20to\x20a\x20Permission\x20object','source':{'layer':'contract','reference':'permission\x20field\x20is\x20required'},'fixSuggestion':'Create\x20Permission\x20object\x20first,\x20then\x20reference\x20it\x20in\x20Service.object.permission'});a['trust']['arbitration']!=='none'&&h['push']({'id':'arbitration_permission_independent','level':'hard','description':'Arbitration.permission\x20MUST\x20be\x20different\x20from\x20Service.permission','source':{'layer':'contract','reference':'E_ARBITRATION_PERMISSION_CONFLICT=33'},'fixSuggestion':'Create\x20a\x20dedicated\x20Permission\x20object\x20for\x20Arbitration,\x20do\x20NOT\x20reuse\x20Service.permission'});a['payment']['model']==='milestone'&&h['push']({'id':'machine_bound_before_publish','level':'hard','description':'Machine\x20must\x20be\x20published\x20and\x20bound\x20to\x20Service\x20before\x20Service.publish','source':{'layer':'contract','reference':'machine\x20is\x20IMMUTABLE\x20after\x20publish'},'fixSuggestion':'Create\x20and\x20publish\x20Machine\x20before\x20calling\x20Service.publish.\x20Machine\x20cannot\x20be\x20changed\x20after\x20Service\x20is\x20published.'});if(c){h['push']({'id':'mode_key_risk','level':'info','description':'['+c['display_name']+']\x20key\x20risk:\x20'+c['key_risk'],'source':{'layer':'industry_mode','reference':c['name']},'fixSuggestion':c['build_notes']?.[0x0]??'Adopt\x20the\x20mode\x27s\x20guard/allocator\x20priors\x20when\x20materializing\x20objects'});for(let I=0x0;I<(c['build_notes']??[])['length'];I++){h['push']({'id':'mode_build_note_'+I,'level':'info','description':'['+c['display_name']+']\x20'+c['build_notes'][I],'source':{'layer':'industry_mode','reference':c['name']},'fixSuggestion':'Apply\x20this\x20note\x20during\x20object\x20materialization'});}c['risk_constraints']['require_arbitration']&&a['trust']['arbitration']==='none'&&h['push']({'id':'mode_requires_arbitration','level':'soft','description':'Mode\x20\x27'+c['display_name']+'\x27\x20requires\x20arbitration,\x20but\x20intent\x20trust.arbitration\x20is\x20\x27none\x27','source':{'layer':'industry_mode','reference':c['name']+'.risk_constraints.require_arbitration'},'fixSuggestion':'Set\x20guide_confirm.trust.arbitration\x20to\x20a\x20dispute\x20resolution\x20mode,\x20or\x20the\x20plan\x20ships\x20without\x20the\x20mode\x27s\x20safety\x20net'});}const p=calculateModuleScoreBoost(b),q=Math['min'](0x64,0x28+Object['values'](p)['reduce']((J,K)=>J+K,0x0)/0x2),r=Math['min'](0x64,0x32+(p['trust']??0x0)+(p['fund_safety']??0x0)),s=Math['min'](0x64,0x1e+b['length']*0x8),t={'estimatedRiskScore':q,'estimatedTrustScore':r,'estimatedCompletenessScore':s,'keyRisks':[...c?['['+c['display_name']+']\x20'+c['key_risk']]:[],...a['trust']['arbitration']==='none'?['No\x20arbitration\x20configured\x20—\x20disputes\x20have\x20no\x20resolution\x20path']:[],...a['payment']['model']==='upfront'&&a['trust']['refundPolicy']==='no_refund'?['Full\x20upfront\x20+\x20no\x20refund\x20=\x20high\x20user\x20risk']:[]],'strengths':[...b['map'](J=>J['name']+':\x20'+J['description']['slice'](0x0,0x3c)+'...'),...(c?.['expected_benefits']??[])['map'](J=>J['metric']+':\x20'+J['expected_value']+'\x20('+J['evidence']+')')],'moduleBoosts':p};return{'nodes':e,'edges':f,'constraints':h,'evaluationPreview':t,'adoptedModules':b['map'](J=>J['id']),'businessIntent':a};}function calculateModuleScoreBoost(a){const b={};for(const c of a){for(const d of c['evaluationImpact']){const e=d['effect']==='required'?0xf:d['effect']==='boost'?0x8:0x3;b[d['dimension']]=(b[d['dimension']]??0x0)+e;}}return b;}export function validateGraph(a){const b=[],c=[],d=[];for(const e of a['constraints']){if(e['id']==='service_permission_bound'){const f=a['nodes']['some'](h=>h['type']==='service'),g=a['edges']['some'](h=>h['relation']==='requires_permission'&&h['from']['startsWith']('main_service'));f&&!g&&b['push'](e);}if(e['id']==='arbitration_permission_independent'){const h=a['nodes']['find'](j=>j['id']==='main_service'),i=a['nodes']['find'](j=>j['id']==='main_arbitration');if(h&&i){const j=a['edges']['find'](l=>l['from']==='main_service'&&l['relation']==='requires_permission')?.['to'],k=a['edges']['find'](l=>l['from']==='main_arbitration'&&l['relation']==='requires_permission')?.['to'];j&&k&&j===k&&b['push'](e);}}if(e['level']==='soft')c['push'](e);else e['level']==='info'&&d['push'](e);}return{'valid':b['length']===0x0,'hardViolations':b,'softViolations':c,'infoNotes':d};}
1
+ function resolveNameBase(a,b){if(b?.['nameBase']&&b['nameBase']['trim']())return b['nameBase']['trim']()['toLowerCase']()['replace'](/[^a-z0-9]+/g,'_')['replace'](/^_+|_+$/g,'');const c=a['description']['toLowerCase']()['replace'](/[^a-z0-9]+/g,'_')['replace'](/^_+|_+$/g,'')['slice'](0x0,0x18)['replace'](/_+$/g,'');return c||'service';}export function buildSemanticGraph(a,b,c,d){const e=[],f=[],h=[],j=resolveNameBase(a,d),k=c?.['machine_shape']??[],l=k['filter'](u=>u['operator'])['map'](u=>u['name']+'='+u['operator'])['join'](',\x20'),m=c?.['allocator'],n=!!m&&!d?.['paymentExplicit']&&(m['count']>0x1||m['recipient']!=='signer');e['push']({'id':'main_permission','type':'permission','purpose':'Role-based\x20access\x20control\x20for\x20merchant,\x20customer,\x20and\x20optional\x20arbitrator','derivedFrom':{'intentField':'roles','rationale':'All\x20WOW\x20services\x20require\x20a\x20Permission\x20object\x20for\x20role\x20management'},'config':{'name':{'type':'string','value':j+'_permission','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset')&&(e['push']({'id':'main_service','type':'service','purpose':'Main\x20service\x20offering:\x20'+a['description'],'derivedFrom':{'intentField':'description','rationale':'Service\x20is\x20the\x20primary\x20object\x20representing\x20the\x20merchant\x20offering'},'config':{'name':{'type':'string','value':j+'_service','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':'main_service','to':'main_permission','relation':'requires_permission','required':!![],'derivedFrom':{'intentField':'roles','rationale':'Service\x20must\x20reference\x20its\x20Permission\x20object'}}));(a['payment']['model']==='milestone'||a['deliverables']['length']>0x1||k['length']>0x0)&&(e['push']({'id':'main_machine','type':'machine','purpose':'Workflow\x20controlling\x20deliverable\x20milestones\x20and\x20acceptance','derivedFrom':k['length']>0x0?{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20machine_shape\x20prior:\x20'+k['length']+'\x20nodes'}:{'intentField':'deliverables','rationale':'Multiple\x20deliverables\x20or\x20milestone\x20payment\x20requires\x20Machine\x20workflow'},'config':{'name':{'type':'string','value':j+'_machine','mapsTo':'object.name'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'},...k['length']>0x0?{'nodes':{'type':'string','value':k['map'](u=>u['name'])['join']('\x20→\x20'),'mapsTo':'machine.nodes'}}:{},...l['length']>0x0?{'operators':{'type':'string','value':l,'mapsTo':'machine.forwards.named_operator'}}:{}},'expectedState':{'published':!![],'paused':![]}}),e['find'](u=>u['id']==='main_service')&&f['push']({'from':'main_service','to':'main_machine','relation':'uses_machine','required':!![],'derivedFrom':{'intentField':'deliverables','rationale':'Service\x20binds\x20to\x20Machine\x20for\x20workflow\x20execution'}}));(a['payment']['model']==='milestone'||a['payment']['model']==='escrow'||a['trust']['escrow']||n)&&(e['push']({'id':'main_allocation','type':'allocation','purpose':'Order\x20fund\x20routing\x20via\x20Service.order_allocators\x20(frozen\x20at\x20publish;\x20settlement\x20fires\x20via\x20alloc_by_guard)','derivedFrom':n&&a['payment']['model']!=='milestone'&&a['payment']['model']!=='escrow'&&!a['trust']['escrow']?{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20allocator\x20prior:\x20'+m['description']}:{'intentField':'payment.allocation','rationale':'Escrow/milestone\x20requires\x20Allocation\x20for\x20fund\x20routing'},'config':{'name':{'type':'string','value':j+'_allocation','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'},...m?{'allocator_strategy':{'type':'string','value':m['description'],'mapsTo':'allocation.strategy'},...m['rows']?.['length']?{'allocator_rows':{'type':'string','value':m['rows']['map'](u=>u['track']+':'+u['mode']+':'+u['recipient']+(u['recipient_key']?'('+u['recipient_key']+')':'')+(u['value']!==undefined?'='+u['value']:u['value_from']?'<-'+u['value_from']:''))['join']('\x20|\x20'),'mapsTo':'allocation.rows'}}:{'allocator_mode':{'type':'enum','value':m['mode'],'allowed':['amount','rate','surplus'],'mapsTo':'allocation.mode'}},'allocator_recipient_count':{'type':'number','value':m['count'],'mapsTo':'allocation.recipients'},...m['refund_track']?{'allocator_refund_track':{'type':'string','value':m['refund_track'],'mapsTo':'allocation.refund_track'}}:{},...m['once_per_order']!==undefined?{'allocator_once_per_order':{'type':'boolean','value':m['once_per_order'],'mapsTo':'allocation.once_per_order'}}:{}}:{}},'expectedState':{'published':!![],'paused':![]}}),e['find'](u=>u['id']==='main_service')&&f['push']({'from':'main_service','to':'main_allocation','relation':'has_order_allocators','required':!![],'derivedFrom':{'intentField':'payment','rationale':'Service\x20must\x20bind\x20Allocation\x20for\x20order\x20fund\x20routing'}}));a['trust']['arbitration']!=='none'&&(e['push']({'id':'main_arbitration','type':'arb','purpose':'Independent\x20dispute\x20resolution','derivedFrom':{'intentField':'trust.arbitration','rationale':'Arbitration\x20object\x20provides\x20binding\x20dispute\x20resolution'},'config':{'name':{'type':'string','value':j+'_arbitration','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'}},'expectedState':{'published':!![],'paused':![]}}),e['push']({'id':'arb_permission','type':'permission','purpose':'Independent\x20permission\x20for\x20arbitration\x20(MUST\x20differ\x20from\x20Service.permission)','derivedFrom':{'intentField':'trust.arbitration','rationale':'Contract-enforced:\x20arbitration.permission\x20!=\x20service.permission\x20(E_ARBITRATION_PERMISSION_CONFLICT=33)'},'config':{'name':{'type':'string','value':j+'_arb_permission','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':'main_arbitration','to':'arb_permission','relation':'requires_permission','required':!![],'derivedFrom':{'intentField':'trust.arbitration','rationale':'Arbitration\x20requires\x20its\x20own\x20Permission'}}),e['find'](u=>u['id']==='main_service')&&f['push']({'from':'main_service','to':'main_arbitration','relation':'has_arbitration','required':![],'derivedFrom':{'intentField':'trust.arbitration','rationale':'Service\x20references\x20Arbitration\x20in\x20arbitrations\x20list'}}));const o=b['some'](u=>u['id']==='wip_provenance'||u['id']==='subscription_with_proof'||u['id']==='damage_attestation');o&&e['push']({'id':'main_repository','type':'repository','purpose':'Store\x20WIP\x20hashes\x20and\x20delivery\x20evidence','derivedFrom':{'intentField':'deliverables','rationale':'WIP\x20provenance\x20requires\x20Repository\x20for\x20hash\x20commitments'},'config':{'name':{'type':'string','value':j+'_repository','mapsTo':'object.name'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}});for(const u of b){for(const v of u['templateRefs']){if(v['object_type']==='guard')e['push']({'id':'guard_'+u['id'],'type':'guard','purpose':v['purpose'],'derivedFrom':{'intentField':'trust','rationale':'Guard\x20for\x20'+u['name']+'\x20module'},'config':{'name':{'type':'string','value':j+'_'+u['id']+'_guard','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});else{if(v['template_id']['startsWith']('supplier-')){const w='supplier_'+u['id']+'_'+v['object_type'];if(e['some'](y=>y['id']===w))continue;e['push']({'id':w,'type':v['object_type'],'purpose':v['purpose'],'derivedFrom':{'intentField':'roles.suppliers','rationale':'Supplier\x20'+v['object_type']+'\x20for\x20'+u['name']+'\x20(B-6\x20two-hop\x20waterfall)'},'config':{'name':{'type':'string','value':j+'_'+u['id']+'_'+v['object_type'],'mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});const x=e['find'](y=>y['id']==='main_service');x&&f['push']({'from':'main_service','to':w,'relation':'sub_order','required':![],'derivedFrom':{'intentField':'payment.allocation','rationale':'Two-hop\x20waterfall:\x20main\x20order\x20→\x20tier-1\x20allocation\x20→\x20supplier\x20sub-order\x20→\x20tier-2\x20allocation\x20('+u['name']+')'}});}}}}if(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset'){e['push']({'id':'main_contact','type':'contact','purpose':'Public\x20contact/IM\x20channel\x20so\x20customers\x20can\x20reach\x20the\x20merchant\x20before\x20ordering','derivedFrom':{'intentField':'description','rationale':'A\x20discoverable\x20contact\x20object\x20improves\x20customer\x20trust\x20and\x20order\x20conversion'},'config':{'name':{'type':'string','value':j+'_contact','mapsTo':'object.name'},'description':{'type':'string','value':a['description'],'mapsTo':'object.description'}},'expectedState':{'published':!![],'paused':![]}});const y=e['find'](z=>z['id']==='main_service');y&&(y['config']['um']={'type':'address_ref','targetId':'main_contact','mapsTo':'object.um'},f['push']({'from':'main_service','to':'main_contact','relation':'has_contact','required':![],'derivedFrom':{'intentField':'description','rationale':'Service\x20binds\x20Contact\x20via\x20um\x20so\x20customers\x20can\x20reach\x20the\x20merchant'}}));}(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset')&&(e['push']({'id':'main_reward','type':'reward','purpose':'Optional\x20incentive\x20pool\x20(discount/referral)\x20to\x20attract\x20and\x20retain\x20customers','derivedFrom':{'intentField':'payment','rationale':'Rewards\x20lower\x20acquisition\x20cost\x20and\x20boost\x20conversion'},'config':{'name':{'type':'string','value':j+'_reward','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}}),e['find'](z=>z['id']==='main_service')&&f['push']({'from':'main_service','to':'main_reward','relation':'has_rewards','required':![],'derivedFrom':{'intentField':'payment','rationale':'Service\x20can\x20reference\x20Reward\x20in\x20its\x20rewards\x20list'}}));if(c?.['guards']?.['length']){const z=A=>{switch(A){case'service':return e['find'](B=>B['id']==='main_service')?.['id'];case'machine':return e['find'](B=>B['id']==='main_machine')?.['id'];case'reward':return e['find'](B=>B['id']==='main_reward')?.['id'];case'repository':return e['find'](B=>B['id']==='main_repository')?.['id'];case'arbitration':return e['find'](B=>B['id']==='main_arbitration')?.['id'];default:return undefined;}};for(const A of c['guards']){const B='guard_'+A['template_id'];if(e['some'](D=>D['id']===B))continue;const C=z(A['host']);if(!C)continue;e['push']({'id':B,'type':'guard','purpose':A['purpose'],'derivedFrom':{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20guard\x20prior\x20('+A['host']+'\x20host)'},'config':{'name':{'type':'string','value':j+'_'+A['template_id'],'mapsTo':'object.name'},'template':{'type':'string','value':A['template_id'],'mapsTo':'guard.template'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':C,'to':B,'relation':'has_guard','required':![],'derivedFrom':{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20attaches\x20'+A['template_id']+'\x20to\x20'+A['host']}});}}if(c?.['config_overrides'])for(const [D,E]of Object['entries'](c['config_overrides'])){for(const F of e){if(F['type']!==D)continue;for(const [G,H]of Object['entries'](E)){if(F['config'][G]!==undefined)continue;if(typeof H==='string')F['config'][G]={'type':'string','value':H,'mapsTo':'object.'+G};else{if(typeof H==='number')F['config'][G]={'type':'number','value':H,'mapsTo':'object.'+G};else typeof H==='boolean'&&(F['config'][G]={'type':'boolean','value':H,'mapsTo':'object.'+G});}}}}h['push']({'id':'service_permission_bound','level':'hard','description':'Service\x20must\x20be\x20bound\x20to\x20a\x20Permission\x20object','source':{'layer':'contract','reference':'permission\x20field\x20is\x20required'},'fixSuggestion':'Create\x20Permission\x20object\x20first,\x20then\x20reference\x20it\x20in\x20Service.object.permission'});a['trust']['arbitration']!=='none'&&h['push']({'id':'arbitration_permission_independent','level':'hard','description':'Arbitration.permission\x20MUST\x20be\x20different\x20from\x20Service.permission','source':{'layer':'contract','reference':'E_ARBITRATION_PERMISSION_CONFLICT=33'},'fixSuggestion':'Create\x20a\x20dedicated\x20Permission\x20object\x20for\x20Arbitration,\x20do\x20NOT\x20reuse\x20Service.permission'});a['payment']['model']==='milestone'&&h['push']({'id':'machine_bound_before_publish','level':'hard','description':'Machine\x20must\x20be\x20published\x20and\x20bound\x20to\x20Service\x20before\x20Service.publish','source':{'layer':'contract','reference':'machine\x20is\x20IMMUTABLE\x20after\x20publish'},'fixSuggestion':'Create\x20and\x20publish\x20Machine\x20before\x20calling\x20Service.publish.\x20Machine\x20cannot\x20be\x20changed\x20after\x20Service\x20is\x20published.'});if(c){h['push']({'id':'mode_key_risk','level':'info','description':'['+c['display_name']+']\x20key\x20risk:\x20'+c['key_risk'],'source':{'layer':'industry_mode','reference':c['name']},'fixSuggestion':c['build_notes']?.[0x0]??'Adopt\x20the\x20mode\x27s\x20guard/allocator\x20priors\x20when\x20materializing\x20objects'});for(let I=0x0;I<(c['build_notes']??[])['length'];I++){h['push']({'id':'mode_build_note_'+I,'level':'info','description':'['+c['display_name']+']\x20'+c['build_notes'][I],'source':{'layer':'industry_mode','reference':c['name']},'fixSuggestion':'Apply\x20this\x20note\x20during\x20object\x20materialization'});}c['risk_constraints']['require_arbitration']&&a['trust']['arbitration']==='none'&&h['push']({'id':'mode_requires_arbitration','level':'soft','description':'Mode\x20\x27'+c['display_name']+'\x27\x20requires\x20arbitration,\x20but\x20intent\x20trust.arbitration\x20is\x20\x27none\x27','source':{'layer':'industry_mode','reference':c['name']+'.risk_constraints.require_arbitration'},'fixSuggestion':'Set\x20guide_confirm.trust.arbitration\x20to\x20a\x20dispute\x20resolution\x20mode,\x20or\x20the\x20plan\x20ships\x20without\x20the\x20mode\x27s\x20safety\x20net'});}const p=calculateModuleScoreBoost(b),q=Math['min'](0x64,0x28+Object['values'](p)['reduce']((J,K)=>J+K,0x0)/0x2),r=Math['min'](0x64,0x32+(p['trust']??0x0)+(p['fund_safety']??0x0)),s=Math['min'](0x64,0x1e+b['length']*0x8),t={'estimatedRiskScore':q,'estimatedTrustScore':r,'estimatedCompletenessScore':s,'keyRisks':[...c?['['+c['display_name']+']\x20'+c['key_risk']]:[],...a['trust']['arbitration']==='none'?['No\x20arbitration\x20configured\x20—\x20disputes\x20have\x20no\x20resolution\x20path']:[],...a['payment']['model']==='upfront'&&a['trust']['refundPolicy']==='no_refund'?['Full\x20upfront\x20+\x20no\x20refund\x20=\x20high\x20user\x20risk']:[]],'strengths':[...b['map'](J=>J['name']+':\x20'+J['description']['slice'](0x0,0x3c)+'...'),...(c?.['expected_benefits']??[])['map'](J=>J['metric']+':\x20'+J['expected_value']+'\x20('+J['evidence']+')')],'moduleBoosts':p};return{'nodes':e,'edges':f,'constraints':h,'evaluationPreview':t,'adoptedModules':b['map'](J=>J['id']),'businessIntent':a};}function calculateModuleScoreBoost(a){const b={};for(const c of a){for(const d of c['evaluationImpact']){const e=d['effect']==='required'?0xf:d['effect']==='boost'?0x8:0x3;b[d['dimension']]=(b[d['dimension']]??0x0)+e;}}return b;}export function validateGraph(a){const b=[],c=[],d=[];for(const e of a['constraints']){if(e['id']==='service_permission_bound'){const f=a['nodes']['some'](h=>h['type']==='service'),g=a['edges']['some'](h=>h['relation']==='requires_permission'&&h['from']['startsWith']('main_service'));f&&!g&&b['push'](e);}if(e['id']==='arbitration_permission_independent'){const h=a['nodes']['find'](j=>j['id']==='main_service'),i=a['nodes']['find'](j=>j['id']==='main_arbitration');if(h&&i){const j=a['edges']['find'](l=>l['from']==='main_service'&&l['relation']==='requires_permission')?.['to'],k=a['edges']['find'](l=>l['from']==='main_arbitration'&&l['relation']==='requires_permission')?.['to'];j&&k&&j===k&&b['push'](e);}}if(e['level']==='soft')c['push'](e);else e['level']==='info'&&d['push'](e);}return{'valid':b['length']===0x0,'hardViolations':b,'softViolations':c,'infoNotes':d};}
@@ -1 +1 @@
1
- import{Config,LocalMark,query_serviceContext,query_object_last_updated,query_affiliations,objectTypeFromAddress,ObjectType}from'@wowok/wowok';import{generateBusinessReport}from'./reverse-mapping.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{batchQueryObjectsByIds,fetchServiceOrders,ringWindowSaturated}from'../../graph/onchain/sdk-batch.js';import{projectExploration}from'../../graph/onchain/exploration.js';import{buildMachineGraph}from'./machine-nodes.js';import{formatMoneyAnnotation}from'./facet-money.js';function balanceStr(a){if(a===null||a===undefined)return null;if(typeof a==='bigint')return a['toString']();return String(a);}function ownerAddr(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];}return null;}function requireField(a,b){if(a===undefined||a===null)throw new Error('\x27'+b+'\x27\x20is\x20required\x20for\x20this\x20action');return a;}function summarizeGuard(a){if(!a)return null;const b=a,c=Array['isArray'](b['table'])?b['table']:[],d=c['filter'](e=>e?.['b_submission']===!![])['length'];return{'address':b['object']??'','description':b['description']??null,'rep':typeof b['rep']==='boolean'?b['rep']:null,'table_entry_count':c['length'],'submission_slot_count':d,'relies':Array['isArray'](b['relies'])?b['relies']['filter'](e=>typeof e==='string'):[],'relies_logic_and':typeof b['relies_logic_and']==='boolean'?b['relies_logic_and']:null};}function summarizePermission(a,b){if(!a)return null;const c=a,d=Array['isArray'](c['admin'])?c['admin']:[],e=d[0x0],f=typeof e==='string'?e:typeof e?.['account']==='string'?e['account']:c['builder']??null;return{'address':c['object']??'','description':c['description']??null,'builder':c['builder']??null,'owner':f,'owner_name':b?.['name']??null,'admin_count':d['length'],'entity_count':typeof c['entity_count']==='number'?c['entity_count']:null,'perm_remark':Array['isArray'](c['perm_remark'])?c['perm_remark']['map'](g=>({'index':String(g?.['index']??''),'remark':typeof g?.['remark']==='string'?g['remark']:''})):[],'um':c['um']??null,'tags':b?.['tags']??[],'updated_timestamp_ms':b?.['updated_at_ms']!=null?String(b['updated_at_ms']):null};}async function markOf(a){if(!a)return{'name':null,'tags':[],'updated_at_ms':null};try{const b=await LocalMark['Instance']()['get'](a);if(b)return{'name':b['name']??null,'tags':Array['isArray'](b['tags'])?b['tags']:[],'updated_at_ms':typeof b['updatedAt']==='number'?b['updatedAt']:null};}catch{}try{const c=await LocalMark['Instance']()['list']({'address':a}),d=c?.[0x0];if(d)return{'name':d['name']??null,'tags':Array['isArray'](d['tags'])?d['tags']:[],'updated_at_ms':typeof d['updatedAt']==='number'?d['updatedAt']:null};}catch{}return{'name':null,'tags':[],'updated_at_ms':null};}async function markOfMany(a){const b=[...new Set(a['filter'](e=>!!e))],c=await Promise['all'](b['map'](e=>markOf(e))),d=new Map();for(let e=0x0;e<b['length'];e++)d['set'](b[e],c[e]);return d;}export async function handleServicePanorama(b){const c=requireField(b['service_address'],'service_address'),d=b['context_network']??undefined;let h=d??await Config['Instance']()['network_get']();const j=[];let k=c;if(!/^0x[0-9a-fA-F]{32,64}$/['test'](c)){const a5=await LocalMark['Instance']()['get_address'](c);if(!a5)throw new Error('Cannot\x20resolve\x20service\x20\x27'+c+'\x27\x20—\x20not\x20a\x20valid\x20address\x20and\x20no\x20LocalMark\x20entry\x20found.\x20'+'Pass\x20the\x200x\x20Service\x20object\x20address\x20directly\x20or\x20register\x20the\x20name\x20via\x20local_mark_operation.');k=a5;}let l=await query_serviceContext({'service':k,'include_machine_nodes':!![],'network':h});if(!l?.['service']&&d){const a6=await Config['Instance']()['network_get']();a6&&a6!==h&&(h=a6,l=await query_serviceContext({'service':k,'include_machine_nodes':!![],'network':h}));}const m=l['service'];k=m['object']??k;const q=new Set(),w=a7=>{if(a7)q['add'](a7);};w(k),w(m['machine']),w(m['permission']),w(m['um']);for(const a7 of m['arbitrations']??[])w(a7);for(const a8 of m['rewards']??[])w(a8);for(const a9 of m['repositories']??[])w(a9);const x=l['permission'];if(x){const aa=Array['isArray'](x['admin'])?x['admin']:[];aa[0x0]&&w(typeof aa[0x0]==='string'?aa[0x0]:aa[0x0]?.['account']);if(x['builder'])w(x['builder']);}const y=await markOfMany([...q]),z=y['get'](k)??{'name':null,'tags':[],'updated_at_ms':null},A=z['name'],B=ab=>ab?y['get'](ab)??{'name':null,'tags':[],'updated_at_ms':null}:{'name':null,'tags':[],'updated_at_ms':null};let C=null;const D=l['machine'],E=l['machine_nodes']??[];if(D||E['length']>0x0){const {nodes:ab,edges:ac}=buildMachineGraph(E);C={'address':D?.['object']??m['machine']??'','name':B(D?.['object']??m['machine'])['name'],'description':D?.['description']??null,'published':typeof D?.['bPublished']==='boolean'?D['bPublished']:null,'paused':typeof D?.['bPaused']==='boolean'?D['bPaused']:null,'node_count':typeof D?.['node_count']==='number'?D['node_count']:null,'consensus_repositories':Array['isArray'](D?.['consensus_repositories'])?D['consensus_repositories']:[],'nodes':ab,'edges':ac};}let F=null;try{const ad=await query_object_last_updated({'object':k,'network':h});ad?.['timestamp_ms']&&(F={'timestamp_ms':ad['timestamp_ms'],'digest':ad['digest']??null,'sender':ad['sender']??null});}catch{j['push']('onchain_last_updated:\x20query\x20failed\x20(non-blocking)');}let G=null;try{G=await resolveSupplyChainGraph(k,h);}catch{j['push']('supply_chain:\x20resolution\x20failed\x20(non-blocking)');}let H=null;try{const ae=[m];for(const af of Object['values'](l['referenced']??{})){if(af&&af['object']!==k)ae['push'](af);}H=generateBusinessReport({'objects':ae,'machine_nodes':E['map'](ag=>({'name':ag['name']}))});}catch{j['push']('business_report:\x20generation\x20failed\x20(non-blocking)');}const I=m?.['type_raw']??m?.['type']??'',J=I['match'](/<(.+)>$/),K=J?J[0x1]:null,L=(ag,ah)=>{const ai=[];return ag?ai['push']('Pricing\x20&\x20settlement\x20coin:\x20'+ag+'\x20—\x20the\x20Service\x27s\x20generic\x20T,\x20FIXED\x20at\x20creation\x20(immutable).\x20Sales\x20prices\x20and\x20order\x20amounts\x20are\x20denominated\x20in\x20this\x20exact\x20token;\x20buyers\x20must\x20hold\x20it\x20to\x20order.'):ai['push']('Pricing\x20&\x20settlement\x20coin:\x20unavailable\x20from\x20the\x20Service\x20type\x20(no\x20generic\x20found)\x20—\x20treat\x20amounts\x20as\x20raw\x20smallest\x20units.'),ai['push']('To\x20price\x20in\x20a\x20different\x20token,\x20publish\x20a\x20NEW\x20Service\x20with\x20type_parameter\x20set\x20to\x20that\x20token\x27s\x20full\x20type\x20—\x20this\x20one\x20keeps\x20settling\x20in\x20its\x20coin.'),/testnet/i['test'](ah)?ai['push']('Testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20testnet\x20services\x20stay\x20WOW-denominated;\x20multi-token\x20pricing\x20is\x20a\x20mainnet\x20capability.'):ai['push']('Mainnet\x20accepts\x20bridged\x20tokens\x20(USDT\x20/\x20USDC\x20/\x20ETH\x20/\x20WBTC\x20/\x20WOW):\x20buyers\x20bridge\x20them\x20from\x20Ethereum\x20via\x20the\x20cross-chain\x20bridge.\x20Query\x20wowok_buildin_info\x20info=\x27mainnet\x20bridge\x20tokens\x27\x20for\x20each\x20token\x27s\x20exact\x20type\x20tag\x20(wowTypeTag)\x20to\x20use\x20in\x20type_parameter\x20when\x20publishing.'),ai['join']('\x20');},M=ag=>formatMoneyAnnotation(ag,K,h),N=0x3,O=0x32;let P=null;try{const ag=await fetchServiceOrders(k,h,!![]),ah=Array['isArray'](ag?.['items'])?ag['items']:[],ai=ah['slice'](-O),aj=ah['slice'](-N),ak=ai['map'](aI=>typeof aI?.['who']==='string'?aI['who']:'')['filter'](aI=>aI!==''),al=aj['map'](aI=>typeof aI?.['who']==='string'?aI['who']:'')['filter'](aI=>aI!==''),am=new Map();try{if(ak['length']>0x0){const aI=await batchQueryObjectsByIds(ak,h,!![]);for(const aJ of aI){aJ&&aJ['type']===ObjectType['Order']&&am['set'](aJ['object'],aJ);}}}catch{j['push']('recent_orders:\x20order\x20details\x20unavailable\x20(non-blocking)');}const an=new Map();try{const aK=new Set();for(const aL of am['values']()){if(aL?.['allocation'])aK['add'](aL['allocation']);}if(aK['size']>0x0){const aM=await batchQueryObjectsByIds(Array['from'](aK),h,!![]);for(const aN of aM){if(!aN?.['object'])continue;if(aN['type']===ObjectType['Allocation']){const aO=Number(aN?.['balance']??0x0);an['set'](aN['object'],Number['isFinite'](aO)&&aO===0x0?'allocated':'pending');}}}}catch{j['push']('recent_orders:\x20allocation\x20details\x20unavailable\x20(non-blocking)');}const ao=new Map(),ap=new Map();try{const aP=new Set();for(const aQ of al){const aR=am['get'](aQ);if(aR?.['progress'])aP['add'](aR['progress']);}if(aP['size']>0x0){const aS=await batchQueryObjectsByIds(Array['from'](aP),h,!![]);for(const aT of aS){if(!aT?.['object'])continue;if(aT['type']===ObjectType['Progress']){const aU=aT?.['current'];ao['set'](aT['object'],typeof aU==='string'&&aU!==''?aU:null),ap['set'](aT['object'],Number(aT?.['current_time'])||null);}}}}catch{j['push']('recent_orders:\x20progress\x20details\x20unavailable\x20(non-blocking)');}const aq=new Map();try{const aV=al,aW=await Promise['allSettled'](aV['map'](aX=>query_object_last_updated({'object':aX,'network':h})));for(let aX=0x0;aX<aV['length'];aX++){const aY=aW[aX];aq['set'](aV[aX],aY['status']==='fulfilled'&&aY['value']?.['timestamp_ms']?Number(aY['value']['timestamp_ms'])||null:null);}}catch{j['push']('recent_orders:\x20order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const ar=await Promise['all'](aj['map'](async aZ=>{const b0=typeof aZ?.['who']==='string'?aZ['who']:'',b1=am['get'](b0),b2=b1?.['amount']!==null&&b1?.['amount']!==undefined?String(b1['amount']):'',b3=await M(b2);return{'order':b0,'time':typeof aZ?.['time']==='number'?aZ['time']:0x0,'updated_ms':aq['get'](b0)??null,'amount':b2,'amount_display':b3['display'],'amount_tip':b3['tip'],'progress':b1?.['progress']??null,'allocation':b1?.['allocation']??null,'disputes':Array['isArray'](b1?.['dispute'])?b1['dispute']:[],'agent':Array['isArray'](b1?.['agent'])?b1['agent']:[],'owner':ownerAddr(b1?.['builder']??b1?.['owner']),'claimed_by':b1?.['claimed_by']??null,'required_info':b1?.['required_info']??null,'progress_next':b1?.['progress']?ao['get'](b1['progress'])??null:null,'progress_since':b1?.['progress']?ap['get'](b1['progress'])??null:null,'allocation_state':b1?.['allocation']?an['get'](b1['allocation'])??'pending':'none','bought':await Promise['all']((Array['isArray'](b1?.['items'])?b1['items']:[])['map'](async b4=>({'name':String(b4?.['name']??''),'price_display':(await M(b4?.['price']!==null&&b4?.['price']!==undefined?String(b4['price']):null))['display'],'quantity':String(b4?.['quantity']??'0'),'wip_hash':String(b4?.['wip_hash']??'')})))};})),as=ar['filter'](aZ=>aZ['order']!==''),at=ak['map'](aZ=>am['get'](aZ))['filter'](aZ=>!!aZ);let au=0x0n,av=0x0,aw=0x0,ax=0x0,ay=0x0,az=0x0,aA=null,aB=null;for(const aZ of at){const b0=aZ?.['amount']!==null&&aZ?.['amount']!==undefined?String(aZ['amount']):'';/^\d+$/['test'](b0)&&(au+=BigInt(b0),av++);if(Array['isArray'](aZ?.['dispute'])&&aZ['dispute']['length']>0x0)aw++;const b1=aZ?.['allocation']?an['get'](aZ['allocation'])??'pending':'none';if(b1==='pending')ax++;else{if(b1==='allocated')ay++;else az++;}}for(const b2 of ai){if(typeof b2?.['time']==='number'){if(aA===null||b2['time']<aA)aA=b2['time'];if(aB===null||b2['time']>aB)aB=b2['time'];}}const aC=av>0x0?au['toString']():null,aD=aC!==null?await M(aC):null,aE=ah['length'],aF=ag?.['ring_saturated']??ringWindowSaturated(aE),aG=as['length'],aH='Analyze\x20ALL\x20orders\x20of\x20Service\x20'+k+'\x20('+h+')\x20one\x20by\x20one,\x20newest\x20first.\x20'+('The\x20orders\x20live\x20in\x20the\x20Service\x27s\x20FIFO\x20tx-linker\x20window\x20holding\x20at\x20most\x205200\x20newest\x20entries\x20—\x20the\x20retained\x20count\x20is\x20a\x20lower\x20bound\x20when\x20the\x20window\x20is\x20saturated\x20(currently\x20'+aE+(aF?',\x20saturated':'')+').\x20')+'For\x20each\x20order\x20call\x20object_panorama\x20with\x20the\x20order\x27s\x20FULL\x200x\x20address\x20(collect\x20the\x20addresses\x20from\x20the\x20same\x20reverse-index\x20source;\x20work\x20newest-first)\x20and\x20render\x20ONE\x20table\x20row\x20per\x20order:\x20'+'order\x20address\x20chip\x20(first\x20column)\x20|\x20created\x20+\x20last-updated\x20(local\x20dates)\x20|\x20amount\x20(the\x20display\x20value\x20with\x20its\x20token\x20symbol\x20—\x20never\x20reconvert\x20from\x20raw)\x20|\x20fund\x20state\x20(none\x20/\x20pending\x20/\x20allocated)\x20|\x20current\x20machine\x20node\x20|\x20disputes\x20(each\x20dispute\x20case\x20as\x20its\x20own\x20address\x20chip\x20ON\x20THE\x20SAME\x20ROW\x20—\x20an\x20order\x27s\x20progress,\x20allocation\x20and\x20arb\x20cases\x20are\x20its\x20children\x20and\x20are\x20never\x20split\x20into\x20a\x20separate\x20flat\x20list)\x20|\x20buyer\x20address\x20chip.\x20'+'Close\x20with\x20the\x203\x20most\x20valuable\x20patterns\x20across\x20the\x20rows\x20(amount\x20distribution,\x20stuck\x20or\x20paused\x20orders,\x20dispute\x20rate).\x20Orders\x20only\x20—\x20do\x20not\x20re-analyze\x20the\x20Service\x20itself.';P={'count':aE,'window_saturated':aF,'preview_truncated':aE>aG,'stats':{'scope_count':at['length'],'scoped':at['length']<aE,'amount_sum_raw':aC,'amount_sum_display':aD?.['display']??null,'amount_sum_tip':aD?.['tip']??null,'amount_known_count':av,'disputed_order_count':aw,'allocation_pending_count':ax,'allocation_allocated_count':ay,'allocation_none_count':az,'first_created_ms':aA,'last_created_ms':aB},...aE>aG?{'drilldown':{'total_count':aE,'analyzed_count':aG,'stats_scope_count':at['length'],'prompt':aH}}:{},'items':as};}catch{j['push']('recent_orders:\x20reverse-index\x20query\x20failed\x20(non-blocking)');}const Q=[];try{const b3=await query_affiliations({'address':k,'no_cache':!![],'network':h}),b4=new Set(),b5=new Map();for(const b7 of b3?.['entries']??[]){const b8=typeof b7?.['who']==='string'?b7['who']:'';if(!b8||b4['has'](b8))continue;b4['add'](b8);const b9=objectTypeFromAddress(b8);if(!b9)continue;if(b9===ObjectType['Order'])continue;const ba=String(b9);let bb=b5['get'](ba);!bb&&(bb=[],b5['set'](ba,bb)),bb['push']({'address':b8,'type_label':ba,'name':B(b8)['name'],'time':typeof b7?.['time']==='number'?b7['time']:null,'via':typeof b7?.['table']==='string'?b7['table']:null});}const b6=['Progress','Allocation','Payment','Guard'];for(const bc of b6){const bd=b5['get'](bc);bd&&bd['length']>0x0&&(Q['push']({'type_label':bc,'items':bd}),b5['delete'](bc));}for(const [be,bf]of b5){if(bf['length']>0x0)Q['push']({'type_label':be,'items':bf});}}catch{j['push']('related:\x20global-table\x20lookup\x20failed\x20(non-blocking)');}const R=new Set(),S=bg=>{typeof bg==='string'&&/^0x[0-9a-fA-F]{40,64}$/['test'](bg)&&R['add'](bg['toLowerCase']());};S(m['buy_guard']);for(const bg of E){for(const bh of bg?.['pairs']??[]){for(const bi of bh?.['forwards']??[])S(bi?.['guard']);}}for(const bj of m['order_allocators']?.['allocators']??[])S(bj?.['guard']);for(const bk of l['allocator_guards']??[])S(bk?.['object']);for(const bl of Object['values'](l['referenced']??{})){const bm=bl;if(!bm||typeof bm!=='object')continue;if(bm['type']===ObjectType['Reward']){for(const bn of bm['guards']??[])S(bn?.['guard']);}if(bm['type']===ObjectType['Treasury']){for(const bo of bm['external_withdraw_guard']??[])S(bo?.['guard']);for(const bp of bm['external_deposit_guard']??[])S(bp?.['guard']);}(bm['type']===ObjectType['Arbitration']||bm['type']===ObjectType['Arb'])&&S(bm['voting_guard']);}const T=Q['find'](bq=>bq['type_label']===String(ObjectType['Guard']));if(T){T['items']=T['items']['filter'](bq=>!R['has'](bq['address']['toLowerCase']()));if(T['items']['length']===0x0)Q['splice'](Q['indexOf'](T),0x1);else{const bq=T['items'];try{const br=await batchQueryObjectsByIds(bq['map'](bt=>bt['address']),h,!![]),bs=new Map();for(const bt of br){if(bt?.['object'])bs['set'](String(bt['object'])['toLowerCase'](),bt);}for(const bu of bq){const bv=bs['get'](bu['address']['toLowerCase']());if(!bv){bu['explanation']=null;continue;}const bw=Array['isArray'](bv['table'])?bv['table']:[],bx=[];let by=0x0;for(const bA of bw){if(bA?.['b_submission']===!![]){by++;continue;}bA?.['value_type']==='Address'&&typeof bA?.['value']==='string'&&bA['value']['startsWith']('0x')&&bx['push'](bA['value']);}const bz=bx['some'](bB=>bB['toLowerCase']()===k['toLowerCase']());bu['explanation']={'description':typeof bv['description']==='string'?bv['description']:null,'table_refs':bx,'references_this_service':bz,'submission_slots':by,'note':bz?'One-off\x20verification\x20guard:\x20NOT\x20mounted\x20on\x20any\x20host\x20field;\x20its\x20table\x20carries\x20this\x20Service\x20as\x20an\x20on-chain\x20constant\x20(the\x20affiliation\x20is\x20written\x20at\x20creation).\x20It\x20acts\x20only\x20when\x20submitted\x20inside\x20a\x20passport\x20at\x20runtime.':'Guard\x20surfaced\x20by\x20the\x20affiliation\x20window\x20only;\x20not\x20mounted\x20on\x20any\x20host\x20field\x20reachable\x20from\x20this\x20panorama.\x20It\x20acts\x20only\x20when\x20referenced\x20at\x20runtime\x20(passport\x20submission\x20or\x20a\x20host\x20outside\x20this\x20view).'};}}catch{j['push']('related:\x20unbound-guard\x20explanation\x20unavailable\x20(non-blocking)');}}}const U=new Map();for(const bB of l['allocator_guards']??[]){const bC=bB;if(bC?.['object'])U['set'](String(bC['object'])['toLowerCase'](),bC);}const V=[];for(const bD of Array['isArray'](m['sales'])?m['sales']:[]){const bE=balanceStr(bD?.['price']),bF=await M(bE);V['push']({'name':typeof bD?.['name']==='string'?bD['name']:'','price':bE,'price_display':bF['display'],'price_tip':bF['tip'],'stock':balanceStr(bD?.['stock']),'suspension':bD?.['suspension']===!![],'wip':typeof bD?.['wip']==='string'?bD['wip']:'','wip_hash':typeof bD?.['wip_hash']==='string'?bD['wip_hash']:''});}const W=bG=>bG===0x0?'amount':bG===0x2?'surplus':'rate',X=bG=>{const bH=bG?.['who'];if(bH&&typeof bH==='object'&&'Entity'in bH){const bI=bH['Entity'],bJ=typeof bI==='string'?bI:typeof bI?.['name_or_address']==='string'?bI['name_or_address']:null;return{'who':bJ?'Entity\x20'+bJ:'Entity','entity':bJ&&/^0x[0-9a-fA-F]{6,64}$/['test'](bJ)?bJ:null,'mode':W(bG?.['mode']),'value':balanceStr(bG?.['sharing'])};}if(bH&&typeof bH==='object'&&'GuardIdentifier'in bH)return{'who':'Guard\x20identifier\x20#'+bH['GuardIdentifier'],'entity':null,'mode':W(bG?.['mode']),'value':balanceStr(bG?.['sharing'])};return{'who':'Signer','entity':null,'mode':W(bG?.['mode']),'value':balanceStr(bG?.['sharing'])};},Y=m['order_allocators']?{'description':m['order_allocators']['description']??'','threshold':balanceStr(m['order_allocators']['threshold']),'allocators':(m['order_allocators']['allocators']??[])['map'](bG=>({'guard':bG['guard'],'sharing_count':Array['isArray'](bG['sharing'])?bG['sharing']['length']:0x0,'sharing':(Array['isArray'](bG['sharing'])?bG['sharing']:[])['map'](X),'max':balanceStr(bG['max']??null),'guard_summary':summarizeGuard(U['get'](String(bG['guard']??'')['toLowerCase']()))}))}:null,Z=[];{const bG=new Map();for(const bH of m['order_allocators']?.['allocators']??[]){for(const bI of Array['isArray'](bH['sharing'])?bH['sharing']:[]){const bJ=X(bI);if(bJ['entity']){const bK=bJ['entity']['toLowerCase'](),bL=bG['get'](bK)??{'raw':bJ['entity'],'guards':[]};bL['guards']['push'](bH['guard']??''),bG['set'](bK,bL);}}}if(bG['size']>0x0)try{const bM=await batchQueryObjectsByIds([...bG['keys']()],h,!![]),bN=new Map();for(const bO of bM){if(bO?.['object'])bN['set'](String(bO['object'])['toLowerCase'](),bO);}for(const [bP,bQ]of bG){const bR=bN['get'](bP),bS='order_allocators\x20sharing\x20of\x20allocator\x20guard\x20'+bQ['guards'][0x0];if(bR&&bR['permission']!==undefined){const bT=balanceStr(bR['balance']),bU=await M(bT);Z['push']({'address':String(bR['object']),'kind':'treasury','description':typeof bR['description']==='string'?bR['description']:null,'permission':typeof bR['permission']==='string'?bR['permission']:null,'balance':bT,'balance_display':bU['display'],'balance_tip':bU['tip'],'external_deposit_guard_count':Array['isArray'](bR['external_deposit_guard'])?bR['external_deposit_guard']['length']:null,'external_withdraw_guard_count':Array['isArray'](bR['external_withdraw_guard'])?bR['external_withdraw_guard']['length']:null,'via':bS});}else Z['push']({'address':bQ['raw'],'kind':'account','description':null,'permission':null,'balance':null,'balance_display':null,'balance_tip':null,'external_deposit_guard_count':null,'external_withdraw_guard_count':null,'via':bS});}}catch{j['push']('income_recipients:\x20Sharing\x20entity\x20read\x20failed\x20(non-blocking)');}}const a0=summarizePermission(l['permission'],B(m['permission'])),a1=a0?.['owner']??F?.['sender']??null,a2=a1?await markOf(a1):null,a3=await M(balanceStr(m['compensation_fund'])),a4=projectExploration([],{'truncations':[],'budgetExhausted':{},'dataGaps':j});return{'action':'service_panorama','network':h,'service':{'address':k,'name':A,'description':m['description']??'','location':m['location']??'','published':m['bPublished']===!![],'paused':m['bPaused']===!![],'paused_time':typeof m['paused_time']==='number'?m['paused_time']:typeof m['paused_time']==='string'&&/^\d+$/['test'](m['paused_time'])?Number(m['paused_time']):null,'setting_lock_duration':balanceStr(m['setting_lock_duration']),'customer_required':Array['isArray'](m['customer_required'])?m['customer_required']:[],'compensation_fund':balanceStr(m['compensation_fund']),'compensation_fund_display':a3['display'],'compensation_fund_tip':a3['tip'],'sales':V,'machine':m['machine']??null,'buy_guard':m['buy_guard']??null,'permission':m['permission']??'','um':m['um']??null,'arbitrations':Array['isArray'](m['arbitrations'])?m['arbitrations']:[],'rewards':Array['isArray'](m['rewards'])?m['rewards']:[],'repositories':Array['isArray'](m['repositories'])?m['repositories']:[],'order_allocators':Y,'income_recipients':Z,'payment_token':{'coin_type':K,'guidance':L(K,h)},'onchain_last_updated':F,'tags':z['tags']??[],'owner':a1,'owner_name':a2?.['name']??null},'machine_graph':C,'buy_guard':summarizeGuard(l['buy_guard']),'permission':a0,'related':{'groups':Q},'supply_chain':G,'business_report':H,'recent_orders':P,'data_gaps':j,...a4['open_questions']['length']>0x0?{'exploration':a4}:{}};}
1
+ import{Config,LocalMark,query_serviceContext,query_object_last_updated,query_affiliations,objectTypeFromAddress,ObjectType}from'@wowok/wowok';import{resolveAddress as a318a}from'../../tools/handlers/name-resolution.js';import{generateBusinessReport}from'./reverse-mapping.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{batchQueryObjectsByIds,fetchServiceOrders,ringWindowSaturated}from'../../graph/onchain/sdk-batch.js';import{projectExploration}from'../../graph/onchain/exploration.js';import{buildMachineGraph}from'./machine-nodes.js';import{formatMoneyAnnotation}from'./facet-money.js';function balanceStr(a){if(a===null||a===undefined)return null;if(typeof a==='bigint')return a['toString']();return String(a);}function ownerAddr(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];}return null;}function requireField(a,b){if(a===undefined||a===null)throw new Error('\x27'+b+'\x27\x20is\x20required\x20for\x20this\x20action');return a;}function summarizeGuard(a){if(!a)return null;const b=a,c=Array['isArray'](b['table'])?b['table']:[],d=c['filter'](e=>e?.['b_submission']===!![])['length'];return{'address':b['object']??'','description':b['description']??null,'rep':typeof b['rep']==='boolean'?b['rep']:null,'table_entry_count':c['length'],'submission_slot_count':d,'relies':Array['isArray'](b['relies'])?b['relies']['filter'](e=>typeof e==='string'):[],'relies_logic_and':typeof b['relies_logic_and']==='boolean'?b['relies_logic_and']:null};}function summarizePermission(a,b){if(!a)return null;const c=a,d=Array['isArray'](c['admin'])?c['admin']:[],e=d[0x0],f=typeof e==='string'?e:typeof e?.['account']==='string'?e['account']:c['builder']??null;return{'address':c['object']??'','description':c['description']??null,'builder':c['builder']??null,'owner':f,'owner_name':b?.['name']??null,'admin_count':d['length'],'entity_count':typeof c['entity_count']==='number'?c['entity_count']:null,'perm_remark':Array['isArray'](c['perm_remark'])?c['perm_remark']['map'](g=>({'index':String(g?.['index']??''),'remark':typeof g?.['remark']==='string'?g['remark']:''})):[],'um':c['um']??null,'tags':b?.['tags']??[],'updated_timestamp_ms':b?.['updated_at_ms']!=null?String(b['updated_at_ms']):null};}async function markOf(a){if(!a)return{'name':null,'tags':[],'updated_at_ms':null};try{const b=await LocalMark['Instance']()['get'](a);if(b)return{'name':b['name']??null,'tags':Array['isArray'](b['tags'])?b['tags']:[],'updated_at_ms':typeof b['updatedAt']==='number'?b['updatedAt']:null};}catch{}try{const c=await LocalMark['Instance']()['list']({'address':a}),d=c?.[0x0];if(d)return{'name':d['name']??null,'tags':Array['isArray'](d['tags'])?d['tags']:[],'updated_at_ms':typeof d['updatedAt']==='number'?d['updatedAt']:null};}catch{}return{'name':null,'tags':[],'updated_at_ms':null};}async function markOfMany(a){const b=[...new Set(a['filter'](e=>!!e))],c=await Promise['all'](b['map'](e=>markOf(e))),d=new Map();for(let e=0x0;e<b['length'];e++)d['set'](b[e],c[e]);return d;}export async function handleServicePanorama(b){const c=requireField(b['service_address'],'service_address'),d=b['context_network']??undefined;let h=d??await Config['Instance']()['network_get']();const j=[];let k=await a318a(c,'service'),l=await query_serviceContext({'service':k,'include_machine_nodes':!![],'network':h});if(!l?.['service']&&d){const a5=await Config['Instance']()['network_get']();a5&&a5!==h&&(h=a5,l=await query_serviceContext({'service':k,'include_machine_nodes':!![],'network':h}));}const m=l['service'];k=m['object']??k;const q=new Set(),w=a6=>{if(a6)q['add'](a6);};w(k),w(m['machine']),w(m['permission']),w(m['um']);for(const a6 of m['arbitrations']??[])w(a6);for(const a7 of m['rewards']??[])w(a7);for(const a8 of m['repositories']??[])w(a8);const x=l['permission'];if(x){const a9=Array['isArray'](x['admin'])?x['admin']:[];a9[0x0]&&w(typeof a9[0x0]==='string'?a9[0x0]:a9[0x0]?.['account']);if(x['builder'])w(x['builder']);}const y=await markOfMany([...q]),z=y['get'](k)??{'name':null,'tags':[],'updated_at_ms':null},A=z['name'],B=aa=>aa?y['get'](aa)??{'name':null,'tags':[],'updated_at_ms':null}:{'name':null,'tags':[],'updated_at_ms':null};let C=null;const D=l['machine'],E=l['machine_nodes']??[];if(D||E['length']>0x0){const {nodes:aa,edges:ab}=buildMachineGraph(E);C={'address':D?.['object']??m['machine']??'','name':B(D?.['object']??m['machine'])['name'],'description':D?.['description']??null,'published':typeof D?.['bPublished']==='boolean'?D['bPublished']:null,'paused':typeof D?.['bPaused']==='boolean'?D['bPaused']:null,'node_count':typeof D?.['node_count']==='number'?D['node_count']:null,'consensus_repositories':Array['isArray'](D?.['consensus_repositories'])?D['consensus_repositories']:[],'nodes':aa,'edges':ab};}let F=null;try{const ac=await query_object_last_updated({'object':k,'network':h});ac?.['timestamp_ms']&&(F={'timestamp_ms':ac['timestamp_ms'],'digest':ac['digest']??null,'sender':ac['sender']??null});}catch{j['push']('onchain_last_updated:\x20query\x20failed\x20(non-blocking)');}let G=null;try{G=await resolveSupplyChainGraph(k,h);}catch{j['push']('supply_chain:\x20resolution\x20failed\x20(non-blocking)');}let H=null;try{const ad=[m];for(const ae of Object['values'](l['referenced']??{})){if(ae&&ae['object']!==k)ad['push'](ae);}H=generateBusinessReport({'objects':ad,'machine_nodes':E['map'](af=>({'name':af['name']}))});}catch{j['push']('business_report:\x20generation\x20failed\x20(non-blocking)');}const I=m?.['type_raw']??m?.['type']??'',J=I['match'](/<(.+)>$/),K=J?J[0x1]:null,L=(af,ag)=>{const ah=[];return af?ah['push']('Pricing\x20&\x20settlement\x20coin:\x20'+af+'\x20—\x20the\x20Service\x27s\x20generic\x20T,\x20FIXED\x20at\x20creation\x20(immutable).\x20Sales\x20prices\x20and\x20order\x20amounts\x20are\x20denominated\x20in\x20this\x20exact\x20token;\x20buyers\x20must\x20hold\x20it\x20to\x20order.'):ah['push']('Pricing\x20&\x20settlement\x20coin:\x20unavailable\x20from\x20the\x20Service\x20type\x20(no\x20generic\x20found)\x20—\x20treat\x20amounts\x20as\x20raw\x20smallest\x20units.'),ah['push']('To\x20price\x20in\x20a\x20different\x20token,\x20publish\x20a\x20NEW\x20Service\x20with\x20type_parameter\x20set\x20to\x20that\x20token\x27s\x20full\x20type\x20—\x20this\x20one\x20keeps\x20settling\x20in\x20its\x20coin.'),/testnet/i['test'](ag)?ah['push']('Testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20testnet\x20services\x20stay\x20WOW-denominated;\x20multi-token\x20pricing\x20is\x20a\x20mainnet\x20capability.'):ah['push']('Mainnet\x20accepts\x20bridged\x20tokens\x20(USDT\x20/\x20USDC\x20/\x20ETH\x20/\x20WBTC\x20/\x20WOW):\x20buyers\x20bridge\x20them\x20from\x20Ethereum\x20via\x20the\x20cross-chain\x20bridge.\x20Query\x20wowok_buildin_info\x20info=\x27mainnet\x20bridge\x20tokens\x27\x20for\x20each\x20token\x27s\x20exact\x20type\x20tag\x20(wowTypeTag)\x20to\x20use\x20in\x20type_parameter\x20when\x20publishing.'),ah['join']('\x20');},M=af=>formatMoneyAnnotation(af,K,h),N=0x3,O=0x32;let P=null;try{const af=await fetchServiceOrders(k,h,!![]),ag=Array['isArray'](af?.['items'])?af['items']:[],ah=ag['slice'](-O),ai=ag['slice'](-N),aj=ah['map'](aH=>typeof aH?.['who']==='string'?aH['who']:'')['filter'](aH=>aH!==''),ak=ai['map'](aH=>typeof aH?.['who']==='string'?aH['who']:'')['filter'](aH=>aH!==''),al=new Map();try{if(aj['length']>0x0){const aH=await batchQueryObjectsByIds(aj,h,!![]);for(const aI of aH){aI&&aI['type']===ObjectType['Order']&&al['set'](aI['object'],aI);}}}catch{j['push']('recent_orders:\x20order\x20details\x20unavailable\x20(non-blocking)');}const am=new Map();try{const aJ=new Set();for(const aK of al['values']()){if(aK?.['allocation'])aJ['add'](aK['allocation']);}if(aJ['size']>0x0){const aL=await batchQueryObjectsByIds(Array['from'](aJ),h,!![]);for(const aM of aL){if(!aM?.['object'])continue;if(aM['type']===ObjectType['Allocation']){const aN=Number(aM?.['balance']??0x0);am['set'](aM['object'],Number['isFinite'](aN)&&aN===0x0?'allocated':'pending');}}}}catch{j['push']('recent_orders:\x20allocation\x20details\x20unavailable\x20(non-blocking)');}const an=new Map(),ao=new Map();try{const aO=new Set();for(const aP of ak){const aQ=al['get'](aP);if(aQ?.['progress'])aO['add'](aQ['progress']);}if(aO['size']>0x0){const aR=await batchQueryObjectsByIds(Array['from'](aO),h,!![]);for(const aS of aR){if(!aS?.['object'])continue;if(aS['type']===ObjectType['Progress']){const aT=aS?.['current'];an['set'](aS['object'],typeof aT==='string'&&aT!==''?aT:null),ao['set'](aS['object'],Number(aS?.['current_time'])||null);}}}}catch{j['push']('recent_orders:\x20progress\x20details\x20unavailable\x20(non-blocking)');}const ap=new Map();try{const aU=ak,aV=await Promise['allSettled'](aU['map'](aW=>query_object_last_updated({'object':aW,'network':h})));for(let aW=0x0;aW<aU['length'];aW++){const aX=aV[aW];ap['set'](aU[aW],aX['status']==='fulfilled'&&aX['value']?.['timestamp_ms']?Number(aX['value']['timestamp_ms'])||null:null);}}catch{j['push']('recent_orders:\x20order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const aq=await Promise['all'](ai['map'](async aY=>{const aZ=typeof aY?.['who']==='string'?aY['who']:'',b0=al['get'](aZ),b1=b0?.['amount']!==null&&b0?.['amount']!==undefined?String(b0['amount']):'',b2=await M(b1);return{'order':aZ,'time':typeof aY?.['time']==='number'?aY['time']:0x0,'updated_ms':ap['get'](aZ)??null,'amount':b1,'amount_display':b2['display'],'amount_tip':b2['tip'],'progress':b0?.['progress']??null,'allocation':b0?.['allocation']??null,'disputes':Array['isArray'](b0?.['dispute'])?b0['dispute']:[],'agent':Array['isArray'](b0?.['agent'])?b0['agent']:[],'owner':ownerAddr(b0?.['builder']??b0?.['owner']),'claimed_by':b0?.['claimed_by']??null,'required_info':b0?.['required_info']??null,'progress_next':b0?.['progress']?an['get'](b0['progress'])??null:null,'progress_since':b0?.['progress']?ao['get'](b0['progress'])??null:null,'allocation_state':b0?.['allocation']?am['get'](b0['allocation'])??'pending':'none','bought':await Promise['all']((Array['isArray'](b0?.['items'])?b0['items']:[])['map'](async b3=>({'name':String(b3?.['name']??''),'price_display':(await M(b3?.['price']!==null&&b3?.['price']!==undefined?String(b3['price']):null))['display'],'quantity':String(b3?.['quantity']??'0'),'wip_hash':String(b3?.['wip_hash']??'')})))};})),ar=aq['filter'](aY=>aY['order']!==''),as=aj['map'](aY=>al['get'](aY))['filter'](aY=>!!aY);let at=0x0n,au=0x0,av=0x0,aw=0x0,ax=0x0,ay=0x0,az=null,aA=null;for(const aY of as){const aZ=aY?.['amount']!==null&&aY?.['amount']!==undefined?String(aY['amount']):'';/^\d+$/['test'](aZ)&&(at+=BigInt(aZ),au++);if(Array['isArray'](aY?.['dispute'])&&aY['dispute']['length']>0x0)av++;const b0=aY?.['allocation']?am['get'](aY['allocation'])??'pending':'none';if(b0==='pending')aw++;else{if(b0==='allocated')ax++;else ay++;}}for(const b1 of ah){if(typeof b1?.['time']==='number'){if(az===null||b1['time']<az)az=b1['time'];if(aA===null||b1['time']>aA)aA=b1['time'];}}const aB=au>0x0?at['toString']():null,aC=aB!==null?await M(aB):null,aD=ag['length'],aE=af?.['ring_saturated']??ringWindowSaturated(aD),aF=ar['length'],aG='Analyze\x20ALL\x20orders\x20of\x20Service\x20'+k+'\x20('+h+')\x20one\x20by\x20one,\x20newest\x20first.\x20'+('The\x20orders\x20live\x20in\x20the\x20Service\x27s\x20FIFO\x20tx-linker\x20window\x20holding\x20at\x20most\x205200\x20newest\x20entries\x20—\x20the\x20retained\x20count\x20is\x20a\x20lower\x20bound\x20when\x20the\x20window\x20is\x20saturated\x20(currently\x20'+aD+(aE?',\x20saturated':'')+').\x20')+'For\x20each\x20order\x20call\x20object_panorama\x20with\x20the\x20order\x27s\x20FULL\x200x\x20address\x20(collect\x20the\x20addresses\x20from\x20the\x20same\x20reverse-index\x20source;\x20work\x20newest-first)\x20and\x20render\x20ONE\x20table\x20row\x20per\x20order:\x20'+'order\x20address\x20chip\x20(first\x20column)\x20|\x20created\x20+\x20last-updated\x20(local\x20dates)\x20|\x20amount\x20(the\x20display\x20value\x20with\x20its\x20token\x20symbol\x20—\x20never\x20reconvert\x20from\x20raw)\x20|\x20fund\x20state\x20(none\x20/\x20pending\x20/\x20allocated)\x20|\x20current\x20machine\x20node\x20|\x20disputes\x20(each\x20dispute\x20case\x20as\x20its\x20own\x20address\x20chip\x20ON\x20THE\x20SAME\x20ROW\x20—\x20an\x20order\x27s\x20progress,\x20allocation\x20and\x20arb\x20cases\x20are\x20its\x20children\x20and\x20are\x20never\x20split\x20into\x20a\x20separate\x20flat\x20list)\x20|\x20buyer\x20address\x20chip.\x20'+'Close\x20with\x20the\x203\x20most\x20valuable\x20patterns\x20across\x20the\x20rows\x20(amount\x20distribution,\x20stuck\x20or\x20paused\x20orders,\x20dispute\x20rate).\x20Orders\x20only\x20—\x20do\x20not\x20re-analyze\x20the\x20Service\x20itself.';P={'count':aD,'window_saturated':aE,'preview_truncated':aD>aF,'stats':{'scope_count':as['length'],'scoped':as['length']<aD,'amount_sum_raw':aB,'amount_sum_display':aC?.['display']??null,'amount_sum_tip':aC?.['tip']??null,'amount_known_count':au,'disputed_order_count':av,'allocation_pending_count':aw,'allocation_allocated_count':ax,'allocation_none_count':ay,'first_created_ms':az,'last_created_ms':aA},...aD>aF?{'drilldown':{'total_count':aD,'analyzed_count':aF,'stats_scope_count':as['length'],'prompt':aG}}:{},'items':ar};}catch{j['push']('recent_orders:\x20reverse-index\x20query\x20failed\x20(non-blocking)');}const Q=[];try{const b2=await query_affiliations({'address':k,'no_cache':!![],'network':h}),b3=new Set(),b4=new Map();for(const b6 of b2?.['entries']??[]){const b7=typeof b6?.['who']==='string'?b6['who']:'';if(!b7||b3['has'](b7))continue;b3['add'](b7);const b8=objectTypeFromAddress(b7);if(!b8)continue;if(b8===ObjectType['Order'])continue;const b9=String(b8);let ba=b4['get'](b9);!ba&&(ba=[],b4['set'](b9,ba)),ba['push']({'address':b7,'type_label':b9,'name':B(b7)['name'],'time':typeof b6?.['time']==='number'?b6['time']:null,'via':typeof b6?.['table']==='string'?b6['table']:null});}const b5=['Progress','Allocation','Payment','Guard'];for(const bb of b5){const bc=b4['get'](bb);bc&&bc['length']>0x0&&(Q['push']({'type_label':bb,'items':bc}),b4['delete'](bb));}for(const [bd,be]of b4){if(be['length']>0x0)Q['push']({'type_label':bd,'items':be});}}catch{j['push']('related:\x20global-table\x20lookup\x20failed\x20(non-blocking)');}const R=new Set(),S=bf=>{typeof bf==='string'&&/^0x[0-9a-fA-F]{40,64}$/['test'](bf)&&R['add'](bf['toLowerCase']());};S(m['buy_guard']);for(const bf of E){for(const bg of bf?.['pairs']??[]){for(const bh of bg?.['forwards']??[])S(bh?.['guard']);}}for(const bi of m['order_allocators']?.['allocators']??[])S(bi?.['guard']);for(const bj of l['allocator_guards']??[])S(bj?.['object']);for(const bk of Object['values'](l['referenced']??{})){const bl=bk;if(!bl||typeof bl!=='object')continue;if(bl['type']===ObjectType['Reward']){for(const bm of bl['guards']??[])S(bm?.['guard']);}if(bl['type']===ObjectType['Treasury']){for(const bn of bl['external_withdraw_guard']??[])S(bn?.['guard']);for(const bo of bl['external_deposit_guard']??[])S(bo?.['guard']);}(bl['type']===ObjectType['Arbitration']||bl['type']===ObjectType['Arb'])&&S(bl['voting_guard']);}const T=Q['find'](bp=>bp['type_label']===String(ObjectType['Guard']));if(T){T['items']=T['items']['filter'](bp=>!R['has'](bp['address']['toLowerCase']()));if(T['items']['length']===0x0)Q['splice'](Q['indexOf'](T),0x1);else{const bp=T['items'];try{const bq=await batchQueryObjectsByIds(bp['map'](bs=>bs['address']),h,!![]),br=new Map();for(const bs of bq){if(bs?.['object'])br['set'](String(bs['object'])['toLowerCase'](),bs);}for(const bt of bp){const bu=br['get'](bt['address']['toLowerCase']());if(!bu){bt['explanation']=null;continue;}const bv=Array['isArray'](bu['table'])?bu['table']:[],bw=[];let bx=0x0;for(const bz of bv){if(bz?.['b_submission']===!![]){bx++;continue;}bz?.['value_type']==='Address'&&typeof bz?.['value']==='string'&&bz['value']['startsWith']('0x')&&bw['push'](bz['value']);}const by=bw['some'](bA=>bA['toLowerCase']()===k['toLowerCase']());bt['explanation']={'description':typeof bu['description']==='string'?bu['description']:null,'table_refs':bw,'references_this_service':by,'submission_slots':bx,'note':by?'One-off\x20verification\x20guard:\x20NOT\x20mounted\x20on\x20any\x20host\x20field;\x20its\x20table\x20carries\x20this\x20Service\x20as\x20an\x20on-chain\x20constant\x20(the\x20affiliation\x20is\x20written\x20at\x20creation).\x20It\x20acts\x20only\x20when\x20submitted\x20inside\x20a\x20passport\x20at\x20runtime.':'Guard\x20surfaced\x20by\x20the\x20affiliation\x20window\x20only;\x20not\x20mounted\x20on\x20any\x20host\x20field\x20reachable\x20from\x20this\x20panorama.\x20It\x20acts\x20only\x20when\x20referenced\x20at\x20runtime\x20(passport\x20submission\x20or\x20a\x20host\x20outside\x20this\x20view).'};}}catch{j['push']('related:\x20unbound-guard\x20explanation\x20unavailable\x20(non-blocking)');}}}const U=new Map();for(const bA of l['allocator_guards']??[]){const bB=bA;if(bB?.['object'])U['set'](String(bB['object'])['toLowerCase'](),bB);}const V=[];for(const bC of Array['isArray'](m['sales'])?m['sales']:[]){const bD=balanceStr(bC?.['price']),bE=await M(bD);V['push']({'name':typeof bC?.['name']==='string'?bC['name']:'','price':bD,'price_display':bE['display'],'price_tip':bE['tip'],'stock':balanceStr(bC?.['stock']),'suspension':bC?.['suspension']===!![],'wip':typeof bC?.['wip']==='string'?bC['wip']:'','wip_hash':typeof bC?.['wip_hash']==='string'?bC['wip_hash']:''});}const W=bF=>bF===0x0?'amount':bF===0x2?'surplus':'rate',X=bF=>{const bG=bF?.['who'];if(bG&&typeof bG==='object'&&'Entity'in bG){const bH=bG['Entity'],bI=typeof bH==='string'?bH:typeof bH?.['name_or_address']==='string'?bH['name_or_address']:null;return{'who':bI?'Entity\x20'+bI:'Entity','entity':bI&&/^0x[0-9a-fA-F]{6,64}$/['test'](bI)?bI:null,'mode':W(bF?.['mode']),'value':balanceStr(bF?.['sharing'])};}if(bG&&typeof bG==='object'&&'GuardIdentifier'in bG)return{'who':'Guard\x20identifier\x20#'+bG['GuardIdentifier'],'entity':null,'mode':W(bF?.['mode']),'value':balanceStr(bF?.['sharing'])};return{'who':'Signer','entity':null,'mode':W(bF?.['mode']),'value':balanceStr(bF?.['sharing'])};},Y=m['order_allocators']?{'description':m['order_allocators']['description']??'','threshold':balanceStr(m['order_allocators']['threshold']),'allocators':(m['order_allocators']['allocators']??[])['map'](bF=>({'guard':bF['guard'],'sharing_count':Array['isArray'](bF['sharing'])?bF['sharing']['length']:0x0,'sharing':(Array['isArray'](bF['sharing'])?bF['sharing']:[])['map'](X),'max':balanceStr(bF['max']??null),'guard_summary':summarizeGuard(U['get'](String(bF['guard']??'')['toLowerCase']()))}))}:null,Z=[];{const bF=new Map();for(const bG of m['order_allocators']?.['allocators']??[]){for(const bH of Array['isArray'](bG['sharing'])?bG['sharing']:[]){const bI=X(bH);if(bI['entity']){const bJ=bI['entity']['toLowerCase'](),bK=bF['get'](bJ)??{'raw':bI['entity'],'guards':[]};bK['guards']['push'](bG['guard']??''),bF['set'](bJ,bK);}}}if(bF['size']>0x0)try{const bL=await batchQueryObjectsByIds([...bF['keys']()],h,!![]),bM=new Map();for(const bN of bL){if(bN?.['object'])bM['set'](String(bN['object'])['toLowerCase'](),bN);}for(const [bO,bP]of bF){const bQ=bM['get'](bO),bR='order_allocators\x20sharing\x20of\x20allocator\x20guard\x20'+bP['guards'][0x0];if(bQ&&bQ['permission']!==undefined){const bS=balanceStr(bQ['balance']),bT=await M(bS);Z['push']({'address':String(bQ['object']),'kind':'treasury','description':typeof bQ['description']==='string'?bQ['description']:null,'permission':typeof bQ['permission']==='string'?bQ['permission']:null,'balance':bS,'balance_display':bT['display'],'balance_tip':bT['tip'],'external_deposit_guard_count':Array['isArray'](bQ['external_deposit_guard'])?bQ['external_deposit_guard']['length']:null,'external_withdraw_guard_count':Array['isArray'](bQ['external_withdraw_guard'])?bQ['external_withdraw_guard']['length']:null,'via':bR});}else Z['push']({'address':bP['raw'],'kind':'account','description':null,'permission':null,'balance':null,'balance_display':null,'balance_tip':null,'external_deposit_guard_count':null,'external_withdraw_guard_count':null,'via':bR});}}catch{j['push']('income_recipients:\x20Sharing\x20entity\x20read\x20failed\x20(non-blocking)');}}const a0=summarizePermission(l['permission'],B(m['permission'])),a1=a0?.['owner']??F?.['sender']??null,a2=a1?await markOf(a1):null,a3=await M(balanceStr(m['compensation_fund'])),a4=projectExploration([],{'truncations':[],'budgetExhausted':{},'dataGaps':j});return{'action':'service_panorama','network':h,'service':{'address':k,'name':A,'description':m['description']??'','location':m['location']??'','published':m['bPublished']===!![],'paused':m['bPaused']===!![],'paused_time':typeof m['paused_time']==='number'?m['paused_time']:typeof m['paused_time']==='string'&&/^\d+$/['test'](m['paused_time'])?Number(m['paused_time']):null,'setting_lock_duration':balanceStr(m['setting_lock_duration']),'customer_required':Array['isArray'](m['customer_required'])?m['customer_required']:[],'compensation_fund':balanceStr(m['compensation_fund']),'compensation_fund_display':a3['display'],'compensation_fund_tip':a3['tip'],'sales':V,'machine':m['machine']??null,'buy_guard':m['buy_guard']??null,'permission':m['permission']??'','um':m['um']??null,'arbitrations':Array['isArray'](m['arbitrations'])?m['arbitrations']:[],'rewards':Array['isArray'](m['rewards'])?m['rewards']:[],'repositories':Array['isArray'](m['repositories'])?m['repositories']:[],'order_allocators':Y,'income_recipients':Z,'payment_token':{'coin_type':K,'guidance':L(K,h)},'onchain_last_updated':F,'tags':z['tags']??[],'owner':a1,'owner_name':a2?.['name']??null},'machine_graph':C,'buy_guard':summarizeGuard(l['buy_guard']),'permission':a0,'related':{'groups':Q},'supply_chain':G,'business_report':H,'recent_orders':P,'data_gaps':j,...a4['open_questions']['length']>0x0?{'exploration':a4}:{}};}
@@ -1 +1 @@
1
- import{Config,LocalMark,query_serviceContext}from'@wowok/wowok';import{formatMoneyAnnotation}from'./facet-money.js';const balanceStr=a=>a===null||a===undefined?'0':typeof a==='bigint'?a['toString']():String(a);async function displayOf(a,b,c){try{return(await formatMoneyAnnotation(a,b,c))['display'];}catch{return a;}}function describeRecipient(a){if(typeof a==='string')return a;if(a&&typeof a==='object'){const b=a;if('GuardIdentifier'in b)return'submission\x20slot\x20'+String(b['GuardIdentifier']);if('Entity'in b){const c=b['Entity'],d=c&&typeof c==='object'?c['name_or_address']:c;return d===''?'Entity(\x22\x22)\x20—\x20MCP\x20default\x20local\x20account':'Entity:'+String(d);}return JSON['stringify'](a);}return'unknown';}export async function handleServiceQuote(a){const b=a['context_network']??undefined??await Config['Instance']()['network_get']();let c=a['service_address'];if(!/^0x[0-9a-fA-F]{32,64}$/['test'](c)){const w=await LocalMark['Instance']()['get_address'](c);if(!w)throw new Error('Cannot\x20resolve\x20service\x20\x27'+c+'\x27\x20—\x20not\x20a\x20valid\x20address\x20and\x20no\x20LocalMark\x20entry\x20found.\x20'+'Pass\x20the\x200x\x20Service\x20object\x20address\x20directly\x20or\x20register\x20the\x20name\x20via\x20local_mark_operation.');c=w;}const d=await query_serviceContext({'service':c,'network':b}),e=d['service'];if(!e)throw new Error('Service\x20\x27'+a['service_address']+'\x27\x20not\x20found\x20on\x20network\x20'+b+'.');const f=e?.['type_raw']??e?.['type']??'',g=f['match'](/<(.+)>$/),h=g?g[0x1]:null,i=Array['isArray'](e['sales'])?e['sales']:[],j=new Map();for(const x of i){if(!x||typeof x['name']!=='string')continue;j['set'](x['name'],{'price':balanceStr(x['price']?.['balance']??x['price']??0x0),'suspended':x['suspension']===!![]});}const k=a['items']??[...j['keys']()]['map'](y=>({'name':y,'quantity':0x1})),l=k['filter'](y=>!j['has'](y['name']));if(l['length']>0x0)throw new Error('Sale(s)\x20not\x20found\x20on\x20this\x20Service:\x20'+l['map'](y=>'\x27'+y['name']+'\x27')['join'](',\x20')+'.\x20'+('Available\x20sales:\x20'+([...j['keys']()]['map'](y=>'\x27'+y+'\x27')['join'](',\x20')||'<none>')+'.'));if(k['length']===0x0)throw new Error('This\x20Service\x20has\x20NO\x20configured\x20sales\x20—\x20nothing\x20to\x20quote.');const m=[];let n=0x0n;for(const y of k){const z=j['get'](y['name']),A=BigInt(z['price']||'0'),B=A*BigInt(y['quantity']);n+=B,m['push']({'name':y['name'],'quantity':y['quantity'],'unit_price':z['price'],'unit_price_display':await displayOf(z['price'],h,b),'line_total':B['toString'](),'suspended':z['suspended']});}const o=await displayOf(n['toString'](),h,b),p=e['order_allocators'],q=Array['isArray'](p?.['allocators'])?p['allocators']:[],r=q['length']>0x0?q[0x0]:undefined,t=r?{'allocator_index':0x0,'note':'Sharing\x20rows\x20of\x20the\x20FIRST\x20order_allocator\x20(the\x20intended\x20normal\x20payout\x20path).\x20'+'Guards\x20select\x20per-case\x20allocators\x20(refund\x20/\x20damage\x20/\x20late-cancel),\x20so\x20the\x20LIVE\x20'+'split\x20depends\x20on\x20which\x20guard\x20passes\x20—\x20review\x20the\x20full\x20allocator\x20table\x20via\x20'+'service_panorama\x20before\x20ordering.','sharing':(Array['isArray'](r['sharing'])?r['sharing']:[])['map'](C=>({'recipient':describeRecipient(C?.['who']),'mode':typeof C?.['mode']==='string'?C['mode']:null,'value':balanceStr(C?.['sharing']?.['balance']??C?.['sharing']??0x0)}))}:null;let u=null;try{const C=await LocalMark['Instance']()['list']({'address':c});u=C?.[0x0]?.['name']??null;}catch{u=null;}return{'action':'service_quote','network':String(b),'service':{'address':c,'name':u},'payment_token':{'coin_type':h,'display_note':h?'Prices\x20and\x20the\x20order\x20total\x20are\x20denominated\x20in\x20this\x20token\x27s\x20smallest\x20units;\x20displays\x20convert\x20with\x20the\x20token\x27s\x20on-chain\x20precision.':'Payment\x20token\x20could\x20not\x20be\x20parsed\x20from\x20the\x20Service\x20type\x20—\x20raw\x20smallest\x20units\x20only,\x20precision\x20NOT\x20guessed.'},'items':m,'total_pay':{'balance':n['toString'](),'display':o,'note':'order_new.buy.total_pay.balance\x20must\x20equal\x20this\x20exactly\x20—\x20the\x20on-chain\x20buy\x20aborts\x20on\x20any\x20drift.'},'allocation_preview':t};}
1
+ import{Config,LocalMark,query_serviceContext}from'@wowok/wowok';import{resolveAddress as a319a}from'../../tools/handlers/name-resolution.js';import{formatMoneyAnnotation}from'./facet-money.js';const balanceStr=a=>a===null||a===undefined?'0':typeof a==='bigint'?a['toString']():String(a);async function displayOf(a,b,c){try{return(await formatMoneyAnnotation(a,b,c))['display'];}catch{return a;}}function describeRecipient(a){if(typeof a==='string')return a;if(a&&typeof a==='object'){const b=a;if('GuardIdentifier'in b)return'submission\x20slot\x20'+String(b['GuardIdentifier']);if('Entity'in b){const c=b['Entity'],d=c&&typeof c==='object'?c['name_or_address']:c;return d===''?'Entity(\x22\x22)\x20—\x20MCP\x20default\x20local\x20account':'Entity:'+String(d);}return JSON['stringify'](a);}return'unknown';}export async function handleServiceQuote(a){const b=a['context_network']??undefined??await Config['Instance']()['network_get'](),c=await a319a(a['service_address'],'service_address'),d=await query_serviceContext({'service':c,'network':b}),e=d['service'];if(!e)throw new Error('Service\x20\x27'+a['service_address']+'\x27\x20not\x20found\x20on\x20network\x20'+b+'.');const f=e?.['type_raw']??e?.['type']??'',g=f['match'](/<(.+)>$/),h=g?g[0x1]:null,i=Array['isArray'](e['sales'])?e['sales']:[],j=new Map();for(const w of i){if(!w||typeof w['name']!=='string')continue;j['set'](w['name'],{'price':balanceStr(w['price']?.['balance']??w['price']??0x0),'suspended':w['suspension']===!![]});}const k=a['items']??[...j['keys']()]['map'](x=>({'name':x,'quantity':0x1})),l=k['filter'](x=>!j['has'](x['name']));if(l['length']>0x0)throw new Error('Sale(s)\x20not\x20found\x20on\x20this\x20Service:\x20'+l['map'](x=>'\x27'+x['name']+'\x27')['join'](',\x20')+'.\x20'+('Available\x20sales:\x20'+([...j['keys']()]['map'](x=>'\x27'+x+'\x27')['join'](',\x20')||'<none>')+'.'));if(k['length']===0x0)throw new Error('This\x20Service\x20has\x20NO\x20configured\x20sales\x20—\x20nothing\x20to\x20quote.');const m=[];let n=0x0n;for(const x of k){const y=j['get'](x['name']),z=BigInt(y['price']||'0'),A=z*BigInt(x['quantity']);n+=A,m['push']({'name':x['name'],'quantity':x['quantity'],'unit_price':y['price'],'unit_price_display':await displayOf(y['price'],h,b),'line_total':A['toString'](),'suspended':y['suspended']});}const o=await displayOf(n['toString'](),h,b),p=e['order_allocators'],q=Array['isArray'](p?.['allocators'])?p['allocators']:[],r=q['length']>0x0?q[0x0]:undefined,t=r?{'allocator_index':0x0,'note':'Sharing\x20rows\x20of\x20the\x20FIRST\x20order_allocator\x20(the\x20intended\x20normal\x20payout\x20path).\x20'+'Guards\x20select\x20per-case\x20allocators\x20(refund\x20/\x20damage\x20/\x20late-cancel),\x20so\x20the\x20LIVE\x20'+'split\x20depends\x20on\x20which\x20guard\x20passes\x20—\x20review\x20the\x20full\x20allocator\x20table\x20via\x20'+'service_panorama\x20before\x20ordering.','sharing':(Array['isArray'](r['sharing'])?r['sharing']:[])['map'](B=>({'recipient':describeRecipient(B?.['who']),'mode':typeof B?.['mode']==='string'?B['mode']:null,'value':balanceStr(B?.['sharing']?.['balance']??B?.['sharing']??0x0)}))}:null;let u=null;try{const B=await LocalMark['Instance']()['list']({'address':c});u=B?.[0x0]?.['name']??null;}catch{u=null;}return{'action':'service_quote','network':String(b),'service':{'address':c,'name':u},'payment_token':{'coin_type':h,'display_note':h?'Prices\x20and\x20the\x20order\x20total\x20are\x20denominated\x20in\x20this\x20token\x27s\x20smallest\x20units;\x20displays\x20convert\x20with\x20the\x20token\x27s\x20on-chain\x20precision.':'Payment\x20token\x20could\x20not\x20be\x20parsed\x20from\x20the\x20Service\x20type\x20—\x20raw\x20smallest\x20units\x20only,\x20precision\x20NOT\x20guessed.'},'items':m,'total_pay':{'balance':n['toString'](),'display':o,'note':'order_new.buy.total_pay.balance\x20must\x20equal\x20this\x20exactly\x20—\x20the\x20on-chain\x20buy\x20aborts\x20on\x20any\x20drift.'},'allocation_preview':t};}
@@ -1 +1 @@
1
- import{LocalMark,objectTypeFromAddress,ObjectType}from'@wowok/wowok';import{handleObjectPanorama}from'../playbooks/service-build/object-panorama.js';import{handleServicePanorama}from'../playbooks/service-build/service-panorama.js';import{handleMachinePanorama}from'../playbooks/service-build/machine-panorama.js';import{assembleOrderReview}from'./order.js';import{assembleServiceReview}from'./service.js';import{assembleMachineReview}from'./machine.js';import{assembleArbReview}from'./arb.js';import{assembleDemandReview}from'./demand.js';import{assembleRepositoryReview}from'./repository.js';import{assembleProgressReview}from'./progress.js';export const REVIEW_PACK_TYPES=['Order','Service','Arb','Demand','Repository','Progress','Machine'];export async function handleReviewPack(a){const b=a['object_address'];if(!b)throw new Error('\x27object_address\x27\x20is\x20required\x20for\x20review_pack');let c=b;if(!/^0x[0-9a-fA-F]{32,64}$/['test'](c)){const g=await LocalMark['Instance']()['get_address'](c);if(!g)throw new Error('Cannot\x20resolve\x20\x27'+c+'\x27\x20—\x20not\x20a\x20valid\x20address\x20and\x20no\x20LocalMark\x20entry\x20found.');c=g;}const d=objectTypeFromAddress(c);if(d===ObjectType['Order']){const h=await handleObjectPanorama(a);if(h['object_type']!=='Order')throw new Error('review_pack:\x20expected\x20an\x20Order,\x20resolved\x20to\x20'+h['object_type']);return assembleOrderReview(h);}if(d===ObjectType['Service']){const i=await handleServicePanorama({...a,'service_address':c});return assembleServiceReview(i);}if(d===ObjectType['Machine']){const j=await handleMachinePanorama({...a,'object_address':c});if(j['machineAddress']?.['toLowerCase']()!==c['toLowerCase']())throw new Error('review_pack:\x20expected\x20a\x20Machine,\x20resolved\x20to\x20'+j['machineAddress']);return assembleMachineReview(j);}const e={[ObjectType['Arb']]:assembleArbReview,[ObjectType['Demand']]:assembleDemandReview,[ObjectType['Repository']]:assembleRepositoryReview,[ObjectType['Progress']]:assembleProgressReview},f=d?e[d]:undefined;if(f){const k=await handleObjectPanorama(a);if(k['object_type']!==d)throw new Error('review_pack:\x20expected\x20a\x20'+d+',\x20resolved\x20to\x20'+k['object_type']);return f(k);}throw new Error('review_pack:\x20unsupported\x20object\x20type\x20\x27'+(d??'unknown')+'\x27\x20—\x20supported:\x20'+REVIEW_PACK_TYPES['join'](',\x20')+'.\x20Other\x20types\x20keep\x20object_panorama\x20/\x20machine_panorama\x20/\x20service_panorama.');}
1
+ import{objectTypeFromAddress,ObjectType}from'@wowok/wowok';import{resolveAddress as a331a}from'../tools/handlers/name-resolution.js';import{handleObjectPanorama}from'../playbooks/service-build/object-panorama.js';import{handleServicePanorama}from'../playbooks/service-build/service-panorama.js';import{handleMachinePanorama}from'../playbooks/service-build/machine-panorama.js';import{assembleOrderReview}from'./order.js';import{assembleServiceReview}from'./service.js';import{assembleMachineReview}from'./machine.js';import{assembleArbReview}from'./arb.js';import{assembleDemandReview}from'./demand.js';import{assembleRepositoryReview}from'./repository.js';import{assembleProgressReview}from'./progress.js';export const REVIEW_PACK_TYPES=['Order','Service','Arb','Demand','Repository','Progress','Machine'];export async function handleReviewPack(a){const b=a['object_address'];if(!b)throw new Error('\x27object_address\x27\x20is\x20required\x20for\x20review_pack');const c=await a331a(b,'object_address'),d=objectTypeFromAddress(c);if(d===ObjectType['Order']){const g=await handleObjectPanorama(a);if(g['object_type']!=='Order')throw new Error('review_pack:\x20expected\x20an\x20Order,\x20resolved\x20to\x20'+g['object_type']);return assembleOrderReview(g);}if(d===ObjectType['Service']){const h=await handleServicePanorama({...a,'service_address':c});return assembleServiceReview(h);}if(d===ObjectType['Machine']){const i=await handleMachinePanorama({...a,'object_address':c});if(i['machineAddress']?.['toLowerCase']()!==c['toLowerCase']())throw new Error('review_pack:\x20expected\x20a\x20Machine,\x20resolved\x20to\x20'+i['machineAddress']);return assembleMachineReview(i);}const e={[ObjectType['Arb']]:assembleArbReview,[ObjectType['Demand']]:assembleDemandReview,[ObjectType['Repository']]:assembleRepositoryReview,[ObjectType['Progress']]:assembleProgressReview},f=d?e[d]:undefined;if(f){const j=await handleObjectPanorama(a);if(j['object_type']!==d)throw new Error('review_pack:\x20expected\x20a\x20'+d+',\x20resolved\x20to\x20'+j['object_type']);return f(j);}throw new Error('review_pack:\x20unsupported\x20object\x20type\x20\x27'+(d??'unknown')+'\x27\x20—\x20supported:\x20'+REVIEW_PACK_TYPES['join'](',\x20')+'.\x20Other\x20types\x20keep\x20object_panorama\x20/\x20machine_panorama\x20/\x20service_panorama.');}
@@ -1 +1 @@
1
- export const ROLE_MOVE_MECHANISMS=['Service','Machine','Guard','Allocator','Progress','Order','Arbitration','Demand','DemandPresenter','Reward','Treasury','Passport','WTS','WIP','CompensationFund','Repository'];export const ROLE_PERSONALITIES={'merchant':{'role':'merchant','archetype':'The\x20Trust-First\x20Shopkeeper\x20—\x20wins\x20repeat\x20volume\x20by\x20making\x20trust\x20verifiable\x20on-chain','motivations':['durable\x20gross\x20margin\x20above\x20hard\x20cost/fund\x20floors','repeat\x20order\x20volume\x20and\x20referral-driven\x20acquisition','a\x20differentiated\x20trust\x20moat\x20(arbitration\x20+\x20compensation\x20fund\x20+\x20WIP\x20evidence)','low\x20dispute\x20and\x20compensation-payout\x20rates'],'communication':'proactive\x20and\x20specific:\x20quote\x20prices\x20with\x20escrow/split\x20terms,\x20state\x20guard\x20evidence\x20up\x20front,\x20answer\x20fast\x20on\x20pre-sales\x20questions,\x20never\x20vague-promise','value_levers':[{'move':'Publish\x20services\x20with\x20a\x20WIP-verified\x20product,\x20bound\x20Arbitration\x20and\x20a\x20funded\x20CompensationFund\x20so\x20trust\x20is\x20inspectable\x20before\x20purchase','via':'onchain_operations','when':'new\x20service\x20or\x20trust\x20score\x20below\x20category\x20median'},{'move':'Design\x20the\x20Machine\x20around\x20verifiable\x20business\x20states\x20and\x20attach\x20buy/evidence\x20Guards\x20instead\x20of\x20relying\x20on\x20chat\x20assurances','via':'machineNode2file'},{'move':'Encode\x20pricing\x20and\x20delivery\x20money\x20flow\x20explicitly\x20with\x20Allocator\x20splits/milestones,\x20never\x20informal\x20off-chain\x20promises','via':'onchain_operations'},{'move':'Run\x20Reward-based\x20acquisition\x20and\x20targeted\x20discounts\x20only\x20against\x20tracked\x20funnel\x20metrics,\x20not\x20blanket\x20price\x20cuts','via':'onchain_operations','when':'posture\x20is\x20volume\x20or\x20a\x20campaign\x20window\x20is\x20open'},{'move':'Scan\x20competitor\x20supply\x20(price,\x20trust,\x20rewards,\x20fund\x20coverage)\x20before\x20changing\x20price\x20or\x20offering','via':'evaluation_operation'},{'move':'Adopt\x20and\x20tune\x20the\x20industry\x20playbook\x20(mode/flywheel/risk\x20constraints)\x20for\x20the\x20shop\x27s\x20industry','via':'industry_pack_operation'}],'game_moves':[{'move':'Lead\x20negotiation\x20with\x20verifiable\x20trust\x20assets\x20(arb\x20rulings,\x20WIP,\x20fund\x20balance);\x20compete\x20on\x20proof\x20before\x20price','via':'evaluation_operation'},{'move':'Concede\x20small\x20discounts\x20late\x20in\x20negotiation\x20in\x20exchange\x20for\x20review/referral\x20commitments,\x20never\x20before\x20intent\x20is\x20proven','via':'Reward'},{'move':'Advance\x20orders\x20only\x20against\x20the\x20guard\x20evidence\x20the\x20machine\x20requires;\x20keep\x20the\x20workflow\x20moving\x20to\x20avoid\x20stall\x20blame','via':'workflow_operation'},{'move':'Settle\x20a\x20genuine\x20fault\x20fast\x20via\x20the\x20machine/allocator\x20refund\x20path\x20rather\x20than\x20escalating;\x20reserve\x20arbitration\x20for\x20disputed\x20fault','via':'Arbitration'},{'move':'Never\x20price\x20below\x20hard\x20cost\x20floor\x20or\x20leave\x20the\x20compensation\x20fund\x20under-covered\x20to\x20chase\x20volume','taboo':!![]},{'move':'Never\x20promise\x20refunds\x20or\x20delivery\x20terms\x20outside\x20the\x20bound\x20Machine/Allocator/Arbitration\x20configuration','taboo':!![]}],'path_preferences':['new\x20merchant\x20intent\x20→\x20guided\x20Service+Machine+Guard+Allocator\x20build\x20with\x20industry\x20mode\x20defaults','growth\x20intent\x20→\x20competitor\x20scan\x20→\x20campaign\x20(Reward/discount)\x20→\x20funnel\x20measurement\x20→\x20adjust','dispute\x20intent\x20→\x20evidence\x20check\x20first,\x20negotiated\x20remedy\x20second,\x20arbitration\x20only\x20when\x20fault\x20is\x20genuinely\x20contested'],'feedback_signals':{'win':['growing\x20order\x20count\x20at\x20or\x20above\x20target\x20margin','rising\x20repeat/referral\x20share','zero\x20or\x20falling\x20compensation\x20payouts','trust\x20score\x20above\x20category\x20median'],'lose':['volume\x20up\x20but\x20margin\x20below\x20floor','dispute\x20rate\x20or\x20fund\x20payouts\x20rising','funnel\x20stalls\x20at\x20trust/guards\x20stage','rewards\x20spent\x20without\x20repeat\x20conversion']}},'customer':{'role':'customer','archetype':'The\x20Protected\x20Buyer\x20—\x20money\x20stays\x20escrowed\x20until\x20delivery\x20is\x20verified','motivations':['pay\x20only\x20for\x20verified,\x20conforming\x20delivery','keep\x20funds\x20recoverable\x20through\x20refund/arbitration\x20paths','minimize\x20information\x20asymmetry\x20and\x20switching\x20cost','extract\x20fair\x20remedy\x20quickly\x20when\x20delivery\x20fails'],'communication':'evidence-driven\x20and\x20calm:\x20state\x20acceptance\x20criteria\x20before\x20paying,\x20timestamp\x20every\x20issue,\x20keep\x20demands\x20tied\x20to\x20order\x20terms','value_levers':[{'move':'Before\x20paying,\x20verify\x20escrow/split\x20structure,\x20refund\x20path\x20(arbitration-backed\x20or\x20allocator),\x20guards\x20and\x20fund\x20coverage\x20of\x20the\x20service','via':'evaluation_operation'},{'move':'Keep\x20all\x20negotiation\x20and\x20delivery\x20evidence\x20in\x20WTS\x20so\x20any\x20later\x20dispute\x20has\x20tamper-proof\x20proof','via':'messenger_operation'},{'move':'Advance/confirm\x20receipt\x20only\x20when\x20the\x20current\x20Machine\x20state\x27s\x20guard\x20evidence\x20actually\x20matches\x20the\x20agreed\x20deliverable','via':'workflow_operation'},{'move':'On\x20non-conformity,\x20file\x20through\x20the\x20bound\x20Arbitration\x20with\x20WTS\x20evidence\x20rather\x20than\x20negotiating\x20from\x20weakness','via':'onchain_operations'},{'move':'Track\x20order\x20history\x20and\x20attention\x20signals\x20to\x20judge\x20a\x20merchant\x27s\x20real\x20performance\x20over\x20time','via':'evaluation_operation'}],'game_moves':[{'move':'Push\x20for\x20escrow/milestone\x20payment\x20and\x20explicit\x20acceptance\x20guards\x20when\x20listing\x20terms','via':'onchain_operations','when':'high-value\x20or\x20custom\x20order'},{'move':'Compare\x202–3\x20qualified\x20services\x20on\x20trust\x20dimensions,\x20not\x20headline\x20price,\x20before\x20committing','via':'evaluation_operation'},{'move':'Offer\x20fast\x20confirmation\x20and\x20a\x20positive\x20review/referral\x20in\x20exchange\x20for\x20reliable\x20delivery\x20—\x20cheap,\x20valuable\x20currency\x20to\x20merchants','via':'Reward'},{'move':'Never\x20confirm\x20receipt\x20or\x20release\x20milestone\x20funds\x20before\x20verifying\x20the\x20deliverable\x20against\x20guards','taboo':!![]},{'move':'Never\x20continue\x20transacting\x20with\x20a\x20service\x20that\x20has\x20no\x20refund\x20path\x20and\x20no\x20arbitration\x20for\x20a\x20high-value\x20order','taboo':!![]}],'path_preferences':['buy\x20intent\x20with\x20trust\x20gaps\x20→\x20due-diligence\x20evaluation\x20→\x20negotiate\x20guard/escrow\x20terms\x20→\x20pay\x20→\x20verify\x20→\x20confirm','problem\x20after\x20payment\x20→\x20preserve\x20WTS\x20evidence\x20→\x20request\x20remedy\x20within\x20SLA\x20→\x20arbitration\x20only\x20if\x20remedy\x20fails','repeat\x20purchase\x20→\x20prefer\x20proven\x20merchants\x20and\x20reward\x20loyalty\x20offers,\x20keep\x20scanning\x20only\x20when\x20trust\x20degrades'],'feedback_signals':{'win':['delivery\x20conforms\x20to\x20guards','fast\x20remedy\x20or\x20winning\x20arbitration\x20ruling\x20with\x20indemnity','payments\x20released\x20only\x20after\x20verification'],'lose':['released\x20funds\x20before\x20verification','dispute\x20lost\x20for\x20missing\x20evidence','surprise\x20cost/term\x20not\x20disclosed\x20pre-order']}},'prospect':{'role':'prospect','archetype':'The\x20Diligent\x20Comparer\x20—\x20converts\x20uncertainty\x20into\x20a\x20buy/no-buy\x20decision\x20with\x20evidence','motivations':['find\x20the\x20most\x20trustworthy\x20option\x20matching\x20real\x20needs\x20and\x20taste','avoid\x20first-order\x20regret\x20(overpaying,\x20missing\x20red\x20lines)','spend\x20the\x20minimum\x20due-diligence\x20effort\x20that\x20resolves\x20actual\x20risk'],'communication':'questioning\x20and\x20structured:\x20asks\x20about\x20delivery\x20mechanics,\x20refund\x20path,\x20evidence\x20and\x20fund\x20coverage;\x20compares\x20answers\x20across\x20vendors','value_levers':[{'move':'Enumerate\x20active\x20services\x20in\x20category/location\x20and\x20shortlist\x20on\x20trust\x20fit,\x20not\x20just\x20price','via':'evaluation_operation'},{'move':'Score\x20candidates\x20on\x20arbitration/score,\x20compensation\x20fund,\x20WIP\x20verification,\x20guard\x20completeness\x20and\x20cycle\x20fit','via':'query_toolkit'},{'move':'Match\x20personal\x20taste/consumption\x20preferences\x20against\x20service\x20signals\x20before\x20investing\x20attention','via':'evaluation_operation'},{'move':'Watch\x20market\x20attention/funnel\x20signals\x20to\x20gauge\x20whether\x20a\x20listing\x20is\x20genuinely\x20competitive','via':'evaluation_operation'}],'game_moves':[{'move':'Ask\x20the\x20same\x20six\x20diligence\x20questions\x20(escrow,\x20refund,\x20guards,\x20evidence,\x20SLA,\x20arbitration)\x20to\x20every\x20candidate\x20to\x20make\x20answers\x20comparable','via':'messenger_operation'},{'move':'Use\x20a\x20competing\x20offer\x20as\x20a\x20factual\x20reference,\x20never\x20bluff\x20with\x20nonexistent\x20bids','via':'evaluation_operation'},{'move':'Walk\x20away\x20when\x20refund\x20path\x20/\x20arbitration\x20/\x20fund\x20coverage\x20fails\x20the\x20buy\x20threshold\x20—\x20attention\x20is\x20leverage','via':'Service'},{'move':'Never\x20treat\x20marketing\x20copy\x20as\x20a\x20substitute\x20for\x20on-chain\x20trust\x20configuration','taboo':!![]}],'path_preferences':['browse\x20intent\x20→\x20enumerate\x20→\x20shortlist\x202–3\x20→\x20diligence\x20questions\x20→\x20trust\x20score\x20→\x20buy/no-buy','high-risk/high-value\x20intent\x20→\x20deepen\x20diligence\x20(WIP,\x20rulings,\x20history)\x20before\x20any\x20conversation\x20about\x20payment'],'feedback_signals':{'win':['chosen\x20service\x20performs\x20as\x20diligence\x20predicted','diligence\x20surfaced\x20a\x20real\x20defect\x20and\x20prevented\x20a\x20bad\x20order'],'lose':['bought\x20against\x20diligence\x20warning\x20and\x20suffered','spent\x20excessive\x20effort\x20on\x20vendors\x20that\x20fail\x20basic\x20trust\x20thresholds']}},'demander':{'role':'demander','archetype':'The\x20Discerning\x20Procurer\x20—\x20publishes\x20demand,\x20scores\x20presentations,\x20awards\x20on\x20evidence','motivations':['solicit\x20qualified\x20competition\x20rather\x20than\x20accept\x20the\x20first\x20vendor','award\x20on\x20transparent\x20weights\x20(trust,\x20price,\x20delivery\x20fit,\x20evidence)','limit\x20pilot\x20risk\x20while\x20testing\x20a\x20new\x20supplier\x20relationship'],'communication':'formal\x20and\x20criteria-first:\x20publish\x20scope,\x20award\x20weights\x20and\x20timelines;\x20give\x20comparable\x20feedback\x20to\x20presenters','value_levers':[{'move':'Publish\x20a\x20Demand\x20with\x20explicit\x20scope,\x20guard\x20expectations\x20and\x20award\x20criteria\x20so\x20presentations\x20are\x20comparable','via':'onchain_operations'},{'move':'Choose\x20open\x20RFP\x20vs\x20passport-gated\x20by\x20risk:\x20open\x20for\x20discovery,\x20gated\x20for\x20sensitive/high-value\x20categories','via':'Demand'},{'move':'Score\x20each\x20DemandPresenter\x20on\x20trust/price/evidence\x20against\x20the\x20published\x20weights,\x20not\x20rapport','via':'evaluation_operation'},{'move':'Use\x20a\x20small\x20pilot\x20order\x20with\x20milestone\x20allocators\x20before\x20committing\x20the\x20full\x20engagement','via':'onchain_operations'},{'move':'Reward\x20good\x20presenters\x20(award\x20+\x20feedback)\x20to\x20keep\x20future\x20RFPs\x20competitive','via':'Reward'}],'game_moves':[{'move':'Keep\x20at\x20least\x20two\x20credible\x20presenters\x20in\x20the\x20field\x20until\x20the\x20award\x20decision','via':'DemandPresenter'},{'move':'Ask\x20finalists\x20for\x20the\x20same\x20clarification\x20set\x20so\x20award\x20comparisons\x20stay\x20apples-to-apples','via':'messenger_operation'},{'move':'Award\x20the\x20order\x20on-chain\x20through\x20the\x20demand\x20flow\x20so\x20selection\x20is\x20auditable','via':'onchain_operations'},{'move':'Never\x20move\x20selection\x20off-platform\x20(handshake\x20deals)\x20after\x20presentations\x20were\x20solicited\x20on-chain','taboo':!![]},{'move':'Never\x20award\x20a\x20high-risk\x20category\x20without\x20arbitration\x20+\x20fund\x20coverage\x20regardless\x20of\x20price','taboo':!![]}],'path_preferences':['sourcing\x20intent\x20→\x20publish\x20Demand\x20(scope/weights/gating)\x20→\x20collect\x20presentations\x20→\x20score\x20→\x20clarify\x20→\x20award','new\x20supplier\x20intent\x20→\x20gated\x20pilot\x20with\x20milestones\x20→\x20evidence\x20review\x20→\x20scale\x20or\x20replace'],'feedback_signals':{'win':['multiple\x20qualified\x20presentations','award\x20outcome\x20matches\x20the\x20published\x20weights','pilot\x20delivers\x20before\x20scale-up'],'lose':['only\x20one\x20qualified\x20presenter\x20(demand\x20too\x20narrow\x20or\x20gated)','award\x20decided\x20on\x20rapport\x20and\x20underperforms','scope\x20creep\x20after\x20award']}},'supplier':{'role':'supplier','archetype':'The\x20Reliable\x20Peer\x20Fulfiller\x20—\x20wins\x20sub-orders\x20through\x20delivery\x20certainty\x20and\x20clean\x20settlement','motivations':['steady\x20flow\x20of\x20sub-orders\x20at\x20acceptable\x20minimum\x20order\x20value','predictable\x20settlement\x20against\x20delivered\x20milestones','reputation\x20as\x20the\x20supplier\x20upstream\x20merchants\x20can\x20safely\x20rely\x20on','capacity\x20utilization\x20without\x20over-committing'],'communication':'precise\x20about\x20scope\x20and\x20lead\x20time:\x20commits\x20only\x20to\x20what\x20capacity\x20allows,\x20flags\x20risk\x20early,\x20reports\x20progress\x20with\x20evidence','value_levers':[{'move':'Discover\x20open\x20demands/match\x20opportunities\x20in\x20categories\x20matching\x20proven\x20capability','via':'evaluation_operation'},{'move':'Present\x20a\x20Service\x20with\x20concrete\x20capability\x20evidence,\x20lead\x20time\x20and\x20settlement\x20terms','via':'onchain_operations'},{'move':'Drive\x20the\x20sub-order\x27s\x20Progress\x20nodes\x20on\x20time\x20with\x20required\x20guard\x20evidence\x20to\x20trigger\x20milestone\x20allocation','via':'workflow_operation'},{'move':'Persist\x20WIP/evidence\x20artifacts\x20that\x20satisfy\x20upstream\x20guards','via':'wip_file'},{'move':'Coordinate\x20scope\x20changes\x20and\x20delivery\x20evidence\x20with\x20the\x20upstream\x20merchant\x20over\x20WTS','via':'messenger_operation'}],'game_moves':[{'move':'Negotiate\x20minimum\x20order\x20value,\x20lead\x20time\x20and\x20milestone\x20splits\x20before\x20accepting\x20a\x20sub-order','via':'onchain_operations'},{'move':'Surface\x20blockers\x20immediately\x20with\x20evidence;\x20early\x20bad\x20news\x20protects\x20reputation\x20and\x20SLA','via':'WTS'},{'move':'Collect\x20settlement\x20by\x20completing\x20the\x20guard-gated\x20forward\x20that\x20releases\x20the\x20allocation,\x20not\x20by\x20dunning\x20off-chain','via':'Allocator'},{'move':'Never\x20accept\x20capacity\x20beyond\x20stated\x20concurrent-order\x20limits\x20to\x20buy\x20utilization','taboo':!![]},{'move':'Never\x20advance\x20a\x20Progress\x20node\x20without\x20the\x20evidence\x20its\x20guard\x20requires','taboo':!![]}],'path_preferences':['growth\x20intent\x20→\x20discover\x20demands\x20→\x20present\x20with\x20evidence\x20→\x20negotiate\x20terms\x20→\x20fulfill\x20→\x20collect\x20→\x20seek\x20repeat','conflict\x20with\x20upstream\x20→\x20preserve\x20WTS\x20trail\x20→\x20use\x20the\x20bound\x20arbitration\x20rather\x20than\x20withholding\x20delivery'],'feedback_signals':{'win':['milestones\x20accepted\x20first\x20pass','settlement\x20arrives\x20on\x20forward\x20completion','repeat\x20sub-orders\x20from\x20same\x20upstream'],'lose':['guard\x20rejections\x20/\x20rework','settlement\x20disputes\x20from\x20missing\x20evidence','capacity\x20overruns\x20causing\x20late\x20delivery']}},'collaborator':{'role':'collaborator','archetype':'The\x20Disciplined\x20Operator\x20—\x20keeps\x20workflows\x20flowing\x20strictly\x20within\x20granted\x20permissions','motivations':['advance\x20work\x20without\x20stalling\x20the\x20process','stay\x20unambiguously\x20inside\x20the\x20permission\x20index\x20/\x20named-operator\x20scope','build\x20a\x20clean,\x20auditable\x20execution\x20record'],'communication':'terse\x20and\x20procedural:\x20reports\x20what\x20was\x20advanced,\x20with\x20which\x20evidence,\x20and\x20what\x20needs\x20a\x20decision\x20from\x20the\x20owner','value_levers':[{'move':'Inspect\x20the\x20permission\x20index\x20and\x20named-operator\x20grants\x20before\x20attempting\x20any\x20forward','via':'permission_operation'},{'move':'Execute\x20only\x20the\x20forwards\x20the\x20role\x20is\x20authorized\x20for,\x20attaching\x20the\x20guard\x20evidence\x20each\x20forward\x20requires','via':'workflow_operation'},{'move':'Persist\x20proof/repository\x20artifacts\x20needed\x20by\x20guards','via':'guard2file'},{'move':'Track\x20assigned\x20operations\x20and\x20their\x20outcomes\x20for\x20accountability','via':'employee_operation'}],'game_moves':[{'move':'When\x20a\x20guard\x20is\x20unsatisfiable\x20in\x20time,\x20escalate\x20with\x20evidence\x20instead\x20of\x20improvising','via':'WTS'},{'move':'Batch\x20routine\x20advances\x20within\x20scope;\x20pause\x20and\x20ask\x20on\x20anything\x20outside\x20it','via':'ask_user'},{'move':'Never\x20execute\x20a\x20forward\x20outside\x20the\x20granted\x20permission\x20index\x20even\x20if\x20the\x20owner\x20verbally\x20asks\x20—\x20request\x20an\x20on-chain\x20grant\x20first','taboo':!![]},{'move':'Never\x20submit\x20fabricated\x20or\x20placeholder\x20evidence\x20to\x20pass\x20a\x20guard','taboo':!![]}],'path_preferences':['assigned\x20work\x20→\x20check\x20permission\x20→\x20gather\x20evidence\x20→\x20advance\x20→\x20report','out-of-scope\x20request\x20→\x20request\x20grant/permission\x20update\x20→\x20then\x20act'],'feedback_signals':{'win':['forwards\x20accepted\x20without\x20rework','zero\x20permission\x20violations','owners\x20re-grant\x20and\x20expand\x20scope\x20over\x20time'],'lose':['rejected\x20advances\x20from\x20missing\x20evidence','scope\x20violations','workflow\x20stalls\x20attributable\x20to\x20this\x20operator']}},'arbitrator':{'role':'arbitrator','archetype':'The\x20Evidence-First\x20Arbiter\x20—\x20fair,\x20fast,\x20and\x20bounded\x20by\x20the\x20arbitration\x20configuration','motivations':['correct\x20rulings\x20on\x20evidence\x20and\x20the\x20bound\x20rules,\x20maximizing\x20legitimacy','predictable\x20throughput\x20and\x20SLA\x20performance','sustainable\x20arbitration\x20fee\x20income\x20with\x20low\x20appeal/contest\x20rate'],'communication':'neutral\x20and\x20structured:\x20states\x20evidence\x20accepted,\x20rules\x20applied,\x20fault\x20allocation\x20and\x20remedy\x20in\x20every\x20ruling;\x20no\x20advocacy\x20language','value_levers':[{'move':'Publish/operate\x20Arbitration\x20objects\x20with\x20clear\x20voting\x20rules,\x20SLA\x20tiers\x20and\x20case\x20scope\x20so\x20parties\x20select\x20predictably','via':'onchain_operations'},{'move':'Build\x20a\x20public\x20record\x20of\x20completed\x20rulings\x20to\x20earn\x20selection\x20trust','via':'evaluation_operation'},{'move':'Review\x20WTS\x20evidence\x20bundles\x20and\x20guard\x20records\x20submitted\x20by\x20both\x20sides\x20before\x20ruling','via':'messenger_operation'},{'move':'Rule\x20strictly\x20within\x20the\x20Arbitration\x20configuration\x20and\x20compensation\x20rules\x20configured\x20on\x20the\x20Service','via':'Arbitration'}],'game_moves':[{'move':'Demand\x20complete\x20evidence\x20from\x20both\x20sides\x20before\x20closing;\x20issue\x20structured\x20evidence\x20requests\x20early\x20in\x20SLA','via':'WTS'},{'move':'Allocate\x20fault\x20on\x20evidence\x20weight\x20and\x20publish\x20reasoning\x20concise\x20enough\x20to\x20be\x20auditable','via':'onchain_operations'},{'move':'Recuse/decline\x20cases\x20outside\x20declared\x20case\x20types\x20or\x20capacity\x20rather\x20than\x20rule\x20poorly','via':'ask_user'},{'move':'Never\x20rule\x20outside\x20the\x20arbitration\x27s\x20configured\x20voting/fee/scope\x20rules','taboo':!![]},{'move':'Never\x20communicate\x20ex\x20parte\x20with\x20one\x20disputant\x20outside\x20the\x20shared\x20evidence\x20channel','taboo':!![]}],'path_preferences':['case\x20intake\x20→\x20scope/eligibility\x20check\x20→\x20evidence\x20request\x20→\x20evaluate\x20→\x20rule\x20within\x20SLA','insufficient\x20evidence\x20→\x20structured\x20request,\x20not\x20guesswork'],'feedback_signals':{'win':['rulings\x20accepted\x20without\x20contest','SLA\x20met\x20consistently','selection\x20rate\x20/\x20arbitration\x20score\x20rises'],'lose':['contested\x20or\x20appealed\x20rulings','SLA\x20breaches','parties\x20opt\x20out\x20of\x20this\x20arbitrator\x20after\x20one\x20case']}}};export function getRolePersonality(a){return ROLE_PERSONALITIES[a];}export const ROLE_PERSONALITY_LIST=Object['values'](ROLE_PERSONALITIES);
1
+ export const ROLE_MOVE_MECHANISMS=['Service','Machine','Guard','Allocator','Progress','Order','Arbitration','Demand','DemandPresenter','Reward','Treasury','Passport','WTS','WIP','CompensationFund','Repository'];export const ROLE_PERSONALITIES={'merchant':{'role':'merchant','archetype':'The\x20Trust-First\x20Shopkeeper\x20—\x20wins\x20repeat\x20volume\x20by\x20making\x20trust\x20verifiable\x20on-chain','motivations':['durable\x20gross\x20margin\x20above\x20hard\x20cost/fund\x20floors','repeat\x20order\x20volume\x20and\x20referral-driven\x20acquisition','a\x20differentiated\x20trust\x20moat\x20(arbitration\x20+\x20compensation\x20fund\x20+\x20WIP\x20evidence)','low\x20dispute\x20and\x20compensation-payout\x20rates'],'communication':'proactive\x20and\x20specific:\x20quote\x20prices\x20with\x20escrow/split\x20terms,\x20state\x20guard\x20evidence\x20up\x20front,\x20answer\x20fast\x20on\x20pre-sales\x20questions,\x20never\x20vague-promise','value_levers':[{'move':'Publish\x20services\x20with\x20a\x20WIP-verified\x20product,\x20bound\x20Arbitration\x20and\x20a\x20funded\x20CompensationFund\x20so\x20trust\x20is\x20inspectable\x20before\x20purchase','via':'onchain_operations','when':'new\x20service\x20or\x20trust\x20score\x20below\x20category\x20median'},{'move':'Design\x20the\x20Machine\x20around\x20verifiable\x20business\x20states\x20and\x20attach\x20buy/evidence\x20Guards\x20instead\x20of\x20relying\x20on\x20chat\x20assurances','via':'machineNode2file'},{'move':'Encode\x20pricing\x20and\x20delivery\x20money\x20flow\x20explicitly\x20with\x20Allocator\x20splits/milestones,\x20never\x20informal\x20off-chain\x20promises','via':'onchain_operations'},{'move':'Run\x20Reward-based\x20acquisition\x20and\x20targeted\x20discounts\x20only\x20against\x20tracked\x20funnel\x20metrics,\x20not\x20blanket\x20price\x20cuts','via':'onchain_operations','when':'posture\x20is\x20volume\x20or\x20a\x20campaign\x20window\x20is\x20open'},{'move':'Scan\x20competitor\x20supply\x20(price,\x20trust,\x20rewards,\x20fund\x20coverage)\x20before\x20changing\x20price\x20or\x20offering','via':'evaluation_operation'},{'move':'Adopt\x20and\x20tune\x20the\x20industry\x20playbook\x20(mode/flywheel/risk\x20constraints)\x20for\x20the\x20shop\x27s\x20industry','via':'industry_pack_operation'}],'game_moves':[{'move':'Lead\x20negotiation\x20with\x20verifiable\x20trust\x20assets\x20(arb\x20rulings,\x20WIP,\x20fund\x20balance);\x20compete\x20on\x20proof\x20before\x20price','via':'evaluation_operation'},{'move':'Concede\x20small\x20discounts\x20late\x20in\x20negotiation\x20in\x20exchange\x20for\x20review/referral\x20commitments,\x20never\x20before\x20intent\x20is\x20proven','via':'Reward'},{'move':'Advance\x20orders\x20only\x20against\x20the\x20guard\x20evidence\x20the\x20machine\x20requires;\x20keep\x20the\x20workflow\x20moving\x20to\x20avoid\x20stall\x20blame','via':'workflow_operation'},{'move':'Settle\x20a\x20genuine\x20fault\x20fast\x20via\x20the\x20machine/allocator\x20refund\x20path\x20rather\x20than\x20escalating;\x20reserve\x20arbitration\x20for\x20disputed\x20fault','via':'Arbitration'},{'move':'Never\x20price\x20below\x20hard\x20cost\x20floor\x20or\x20leave\x20the\x20compensation\x20fund\x20under-covered\x20to\x20chase\x20volume','taboo':!![]},{'move':'Keep\x20the\x20fund\x20at\x20or\x20above\x203x\x20your\x20largest\x20single\x20order\x20—\x203x\x20IS\x20the\x20chain\x27s\x20award\x20ceiling,\x20so\x20anything\x20less\x20makes\x20a\x20ruling\x20you\x20LOSE\x20unpayable\x20(claim\x20aborts\x2027)\x20and\x20the\x20buyer\x20holds\x20a\x20win\x20they\x20cannot\x20convert','taboo':!![]},{'move':'Never\x20drop\x20a\x20venue\x20from\x20the\x20arbitration\x20allowlist\x20while\x20an\x20award\x20it\x20already\x20ruled\x20on\x20is\x20still\x20awaiting\x20payout\x20—\x20the\x20claim\x20then\x20aborts\x2039\x20and\x20the\x20buyer\x27s\x20money\x20is\x20stranded','taboo':!![]},{'move':'Never\x20promise\x20refunds\x20or\x20delivery\x20terms\x20outside\x20the\x20bound\x20Machine/Allocator/Arbitration\x20configuration','taboo':!![]}],'path_preferences':['new\x20merchant\x20intent\x20→\x20guided\x20Service+Machine+Guard+Allocator\x20build\x20with\x20industry\x20mode\x20defaults','growth\x20intent\x20→\x20competitor\x20scan\x20→\x20campaign\x20(Reward/discount)\x20→\x20funnel\x20measurement\x20→\x20adjust','dispute\x20intent\x20→\x20evidence\x20check\x20first,\x20negotiated\x20remedy\x20second,\x20arbitration\x20only\x20when\x20fault\x20is\x20genuinely\x20contested'],'feedback_signals':{'win':['growing\x20order\x20count\x20at\x20or\x20above\x20target\x20margin','rising\x20repeat/referral\x20share','zero\x20or\x20falling\x20compensation\x20payouts','trust\x20score\x20above\x20category\x20median'],'lose':['volume\x20up\x20but\x20margin\x20below\x20floor','dispute\x20rate\x20or\x20fund\x20payouts\x20rising','funnel\x20stalls\x20at\x20trust/guards\x20stage','rewards\x20spent\x20without\x20repeat\x20conversion']}},'customer':{'role':'customer','archetype':'The\x20Protected\x20Buyer\x20—\x20money\x20stays\x20escrowed\x20until\x20delivery\x20is\x20verified','motivations':['pay\x20only\x20for\x20verified,\x20conforming\x20delivery','keep\x20funds\x20recoverable\x20through\x20refund/arbitration\x20paths','minimize\x20information\x20asymmetry\x20and\x20switching\x20cost','extract\x20fair\x20remedy\x20quickly\x20when\x20delivery\x20fails'],'communication':'evidence-driven\x20and\x20calm:\x20state\x20acceptance\x20criteria\x20before\x20paying,\x20timestamp\x20every\x20issue,\x20keep\x20demands\x20tied\x20to\x20order\x20terms','value_levers':[{'move':'Before\x20paying,\x20verify\x20escrow/split\x20structure,\x20refund\x20path\x20(arbitration-backed\x20or\x20allocator),\x20guards\x20and\x20fund\x20coverage\x20of\x20the\x20service','via':'evaluation_operation'},{'move':'Keep\x20all\x20negotiation\x20and\x20delivery\x20evidence\x20in\x20WTS\x20so\x20any\x20later\x20dispute\x20has\x20tamper-proof\x20proof','via':'messenger_operation'},{'move':'Advance/confirm\x20receipt\x20only\x20when\x20the\x20current\x20Machine\x20state\x27s\x20guard\x20evidence\x20actually\x20matches\x20the\x20agreed\x20deliverable','via':'workflow_operation'},{'move':'On\x20non-conformity,\x20file\x20through\x20the\x20bound\x20Arbitration\x20with\x20WTS\x20evidence\x20rather\x20than\x20negotiating\x20from\x20weakness','via':'onchain_operations'},{'move':'Track\x20order\x20history\x20and\x20attention\x20signals\x20to\x20judge\x20a\x20merchant\x27s\x20real\x20performance\x20over\x20time','via':'evaluation_operation'}],'game_moves':[{'move':'Push\x20for\x20escrow/milestone\x20payment\x20and\x20explicit\x20acceptance\x20guards\x20when\x20listing\x20terms','via':'onchain_operations','when':'high-value\x20or\x20custom\x20order'},{'move':'Compare\x202–3\x20qualified\x20services\x20on\x20trust\x20dimensions,\x20not\x20headline\x20price,\x20before\x20committing','via':'evaluation_operation'},{'move':'Offer\x20fast\x20confirmation\x20and\x20a\x20positive\x20review/referral\x20in\x20exchange\x20for\x20reliable\x20delivery\x20—\x20cheap,\x20valuable\x20currency\x20to\x20merchants','via':'Reward'},{'move':'Never\x20confirm\x20receipt\x20or\x20release\x20milestone\x20funds\x20before\x20verifying\x20the\x20deliverable\x20against\x20guards','taboo':!![]},{'move':'Pick\x20ONE\x20track\x20per\x20dispute\x20—\x20refund\x20rail\x20or\x20arbitration,\x20not\x20both:\x20an\x20indemnity\x20is\x20net\x20of\x20what\x20you\x20already\x20recovered,\x20so\x20claiming\x20both\x20yields\x20the\x20same\x20money\x20and\x20a\x20weaker,\x20challengeable\x20case','taboo':!![]},{'move':'Never\x20file\x20through\x20an\x20arbitrator\x20the\x20merchant\x20has\x20not\x20accepted\x20—\x20an\x20unlisted\x20venue\x27s\x20award\x20aborts\x2039\x20at\x20the\x20claim,\x20so\x20the\x20fee\x20buys\x20a\x20ruling\x20nobody\x20must\x20honour','taboo':!![]},{'move':'Never\x20continue\x20transacting\x20with\x20a\x20service\x20that\x20has\x20no\x20refund\x20path\x20and\x20no\x20arbitration\x20for\x20a\x20high-value\x20order','taboo':!![]}],'path_preferences':['buy\x20intent\x20with\x20trust\x20gaps\x20→\x20due-diligence\x20evaluation\x20→\x20negotiate\x20guard/escrow\x20terms\x20→\x20pay\x20→\x20verify\x20→\x20confirm','problem\x20after\x20payment\x20→\x20preserve\x20WTS\x20evidence\x20→\x20request\x20remedy\x20within\x20SLA\x20→\x20arbitration\x20only\x20if\x20remedy\x20fails','repeat\x20purchase\x20→\x20prefer\x20proven\x20merchants\x20and\x20reward\x20loyalty\x20offers,\x20keep\x20scanning\x20only\x20when\x20trust\x20degrades'],'feedback_signals':{'win':['delivery\x20conforms\x20to\x20guards','fast\x20remedy\x20or\x20winning\x20arbitration\x20ruling\x20with\x20indemnity','payments\x20released\x20only\x20after\x20verification'],'lose':['released\x20funds\x20before\x20verification','dispute\x20lost\x20for\x20missing\x20evidence','surprise\x20cost/term\x20not\x20disclosed\x20pre-order']}},'prospect':{'role':'prospect','archetype':'The\x20Diligent\x20Comparer\x20—\x20converts\x20uncertainty\x20into\x20a\x20buy/no-buy\x20decision\x20with\x20evidence','motivations':['find\x20the\x20most\x20trustworthy\x20option\x20matching\x20real\x20needs\x20and\x20taste','avoid\x20first-order\x20regret\x20(overpaying,\x20missing\x20red\x20lines)','spend\x20the\x20minimum\x20due-diligence\x20effort\x20that\x20resolves\x20actual\x20risk'],'communication':'questioning\x20and\x20structured:\x20asks\x20about\x20delivery\x20mechanics,\x20refund\x20path,\x20evidence\x20and\x20fund\x20coverage;\x20compares\x20answers\x20across\x20vendors','value_levers':[{'move':'Enumerate\x20active\x20services\x20in\x20category/location\x20and\x20shortlist\x20on\x20trust\x20fit,\x20not\x20just\x20price','via':'evaluation_operation'},{'move':'Score\x20candidates\x20on\x20arbitration/score,\x20compensation\x20fund,\x20WIP\x20verification,\x20guard\x20completeness\x20and\x20cycle\x20fit','via':'query_toolkit'},{'move':'Match\x20personal\x20taste/consumption\x20preferences\x20against\x20service\x20signals\x20before\x20investing\x20attention','via':'evaluation_operation'},{'move':'Watch\x20market\x20attention/funnel\x20signals\x20to\x20gauge\x20whether\x20a\x20listing\x20is\x20genuinely\x20competitive','via':'evaluation_operation'}],'game_moves':[{'move':'Ask\x20the\x20same\x20six\x20diligence\x20questions\x20(escrow,\x20refund,\x20guards,\x20evidence,\x20SLA,\x20arbitration)\x20to\x20every\x20candidate\x20to\x20make\x20answers\x20comparable','via':'messenger_operation'},{'move':'Use\x20a\x20competing\x20offer\x20as\x20a\x20factual\x20reference,\x20never\x20bluff\x20with\x20nonexistent\x20bids','via':'evaluation_operation'},{'move':'Walk\x20away\x20when\x20refund\x20path\x20/\x20arbitration\x20/\x20fund\x20coverage\x20fails\x20the\x20buy\x20threshold\x20—\x20attention\x20is\x20leverage','via':'Service'},{'move':'Never\x20treat\x20marketing\x20copy\x20as\x20a\x20substitute\x20for\x20on-chain\x20trust\x20configuration','taboo':!![]}],'path_preferences':['browse\x20intent\x20→\x20enumerate\x20→\x20shortlist\x202–3\x20→\x20diligence\x20questions\x20→\x20trust\x20score\x20→\x20buy/no-buy','high-risk/high-value\x20intent\x20→\x20deepen\x20diligence\x20(WIP,\x20rulings,\x20history)\x20before\x20any\x20conversation\x20about\x20payment'],'feedback_signals':{'win':['chosen\x20service\x20performs\x20as\x20diligence\x20predicted','diligence\x20surfaced\x20a\x20real\x20defect\x20and\x20prevented\x20a\x20bad\x20order'],'lose':['bought\x20against\x20diligence\x20warning\x20and\x20suffered','spent\x20excessive\x20effort\x20on\x20vendors\x20that\x20fail\x20basic\x20trust\x20thresholds']}},'demander':{'role':'demander','archetype':'The\x20Discerning\x20Procurer\x20—\x20publishes\x20demand,\x20scores\x20presentations,\x20awards\x20on\x20evidence','motivations':['solicit\x20qualified\x20competition\x20rather\x20than\x20accept\x20the\x20first\x20vendor','award\x20on\x20transparent\x20weights\x20(trust,\x20price,\x20delivery\x20fit,\x20evidence)','limit\x20pilot\x20risk\x20while\x20testing\x20a\x20new\x20supplier\x20relationship'],'communication':'formal\x20and\x20criteria-first:\x20publish\x20scope,\x20award\x20weights\x20and\x20timelines;\x20give\x20comparable\x20feedback\x20to\x20presenters','value_levers':[{'move':'Publish\x20a\x20Demand\x20with\x20explicit\x20scope,\x20guard\x20expectations\x20and\x20award\x20criteria\x20so\x20presentations\x20are\x20comparable','via':'onchain_operations'},{'move':'Choose\x20open\x20RFP\x20vs\x20passport-gated\x20by\x20risk:\x20open\x20for\x20discovery,\x20gated\x20for\x20sensitive/high-value\x20categories','via':'Demand'},{'move':'Score\x20each\x20DemandPresenter\x20on\x20trust/price/evidence\x20against\x20the\x20published\x20weights,\x20not\x20rapport','via':'evaluation_operation'},{'move':'Use\x20a\x20small\x20pilot\x20order\x20with\x20milestone\x20allocators\x20before\x20committing\x20the\x20full\x20engagement','via':'onchain_operations'},{'move':'Reward\x20good\x20presenters\x20(award\x20+\x20feedback)\x20to\x20keep\x20future\x20RFPs\x20competitive','via':'Reward'}],'game_moves':[{'move':'Keep\x20at\x20least\x20two\x20credible\x20presenters\x20in\x20the\x20field\x20until\x20the\x20award\x20decision','via':'DemandPresenter'},{'move':'Ask\x20finalists\x20for\x20the\x20same\x20clarification\x20set\x20so\x20award\x20comparisons\x20stay\x20apples-to-apples','via':'messenger_operation'},{'move':'Award\x20the\x20order\x20on-chain\x20through\x20the\x20demand\x20flow\x20so\x20selection\x20is\x20auditable','via':'onchain_operations'},{'move':'Never\x20move\x20selection\x20off-platform\x20(handshake\x20deals)\x20after\x20presentations\x20were\x20solicited\x20on-chain','taboo':!![]},{'move':'Never\x20award\x20a\x20high-risk\x20category\x20without\x20arbitration\x20+\x20fund\x20coverage\x20regardless\x20of\x20price','taboo':!![]}],'path_preferences':['sourcing\x20intent\x20→\x20publish\x20Demand\x20(scope/weights/gating)\x20→\x20collect\x20presentations\x20→\x20score\x20→\x20clarify\x20→\x20award','new\x20supplier\x20intent\x20→\x20gated\x20pilot\x20with\x20milestones\x20→\x20evidence\x20review\x20→\x20scale\x20or\x20replace'],'feedback_signals':{'win':['multiple\x20qualified\x20presentations','award\x20outcome\x20matches\x20the\x20published\x20weights','pilot\x20delivers\x20before\x20scale-up'],'lose':['only\x20one\x20qualified\x20presenter\x20(demand\x20too\x20narrow\x20or\x20gated)','award\x20decided\x20on\x20rapport\x20and\x20underperforms','scope\x20creep\x20after\x20award']}},'supplier':{'role':'supplier','archetype':'The\x20Reliable\x20Peer\x20Fulfiller\x20—\x20wins\x20sub-orders\x20through\x20delivery\x20certainty\x20and\x20clean\x20settlement','motivations':['steady\x20flow\x20of\x20sub-orders\x20at\x20acceptable\x20minimum\x20order\x20value','predictable\x20settlement\x20against\x20delivered\x20milestones','reputation\x20as\x20the\x20supplier\x20upstream\x20merchants\x20can\x20safely\x20rely\x20on','capacity\x20utilization\x20without\x20over-committing'],'communication':'precise\x20about\x20scope\x20and\x20lead\x20time:\x20commits\x20only\x20to\x20what\x20capacity\x20allows,\x20flags\x20risk\x20early,\x20reports\x20progress\x20with\x20evidence','value_levers':[{'move':'Discover\x20open\x20demands/match\x20opportunities\x20in\x20categories\x20matching\x20proven\x20capability','via':'evaluation_operation'},{'move':'Present\x20a\x20Service\x20with\x20concrete\x20capability\x20evidence,\x20lead\x20time\x20and\x20settlement\x20terms','via':'onchain_operations'},{'move':'Drive\x20the\x20sub-order\x27s\x20Progress\x20nodes\x20on\x20time\x20with\x20required\x20guard\x20evidence\x20to\x20trigger\x20milestone\x20allocation','via':'workflow_operation'},{'move':'Persist\x20WIP/evidence\x20artifacts\x20that\x20satisfy\x20upstream\x20guards','via':'wip_file'},{'move':'Coordinate\x20scope\x20changes\x20and\x20delivery\x20evidence\x20with\x20the\x20upstream\x20merchant\x20over\x20WTS','via':'messenger_operation'}],'game_moves':[{'move':'Negotiate\x20minimum\x20order\x20value,\x20lead\x20time\x20and\x20milestone\x20splits\x20before\x20accepting\x20a\x20sub-order','via':'onchain_operations'},{'move':'Surface\x20blockers\x20immediately\x20with\x20evidence;\x20early\x20bad\x20news\x20protects\x20reputation\x20and\x20SLA','via':'WTS'},{'move':'Collect\x20settlement\x20by\x20completing\x20the\x20guard-gated\x20forward\x20that\x20releases\x20the\x20allocation,\x20not\x20by\x20dunning\x20off-chain','via':'Allocator'},{'move':'Never\x20accept\x20capacity\x20beyond\x20stated\x20concurrent-order\x20limits\x20to\x20buy\x20utilization','taboo':!![]},{'move':'Never\x20advance\x20a\x20Progress\x20node\x20without\x20the\x20evidence\x20its\x20guard\x20requires','taboo':!![]}],'path_preferences':['growth\x20intent\x20→\x20discover\x20demands\x20→\x20present\x20with\x20evidence\x20→\x20negotiate\x20terms\x20→\x20fulfill\x20→\x20collect\x20→\x20seek\x20repeat','conflict\x20with\x20upstream\x20→\x20preserve\x20WTS\x20trail\x20→\x20use\x20the\x20bound\x20arbitration\x20rather\x20than\x20withholding\x20delivery'],'feedback_signals':{'win':['milestones\x20accepted\x20first\x20pass','settlement\x20arrives\x20on\x20forward\x20completion','repeat\x20sub-orders\x20from\x20same\x20upstream'],'lose':['guard\x20rejections\x20/\x20rework','settlement\x20disputes\x20from\x20missing\x20evidence','capacity\x20overruns\x20causing\x20late\x20delivery']}},'collaborator':{'role':'collaborator','archetype':'The\x20Disciplined\x20Operator\x20—\x20keeps\x20workflows\x20flowing\x20strictly\x20within\x20granted\x20permissions','motivations':['advance\x20work\x20without\x20stalling\x20the\x20process','stay\x20unambiguously\x20inside\x20the\x20permission\x20index\x20/\x20named-operator\x20scope','build\x20a\x20clean,\x20auditable\x20execution\x20record'],'communication':'terse\x20and\x20procedural:\x20reports\x20what\x20was\x20advanced,\x20with\x20which\x20evidence,\x20and\x20what\x20needs\x20a\x20decision\x20from\x20the\x20owner','value_levers':[{'move':'Inspect\x20the\x20permission\x20index\x20and\x20named-operator\x20grants\x20before\x20attempting\x20any\x20forward','via':'permission_operation'},{'move':'Execute\x20only\x20the\x20forwards\x20the\x20role\x20is\x20authorized\x20for,\x20attaching\x20the\x20guard\x20evidence\x20each\x20forward\x20requires','via':'workflow_operation'},{'move':'Persist\x20proof/repository\x20artifacts\x20needed\x20by\x20guards','via':'guard2file'},{'move':'Track\x20assigned\x20operations\x20and\x20their\x20outcomes\x20for\x20accountability','via':'employee_operation'}],'game_moves':[{'move':'When\x20a\x20guard\x20is\x20unsatisfiable\x20in\x20time,\x20escalate\x20with\x20evidence\x20instead\x20of\x20improvising','via':'WTS'},{'move':'Batch\x20routine\x20advances\x20within\x20scope;\x20pause\x20and\x20ask\x20on\x20anything\x20outside\x20it','via':'ask_user'},{'move':'Never\x20execute\x20a\x20forward\x20outside\x20the\x20granted\x20permission\x20index\x20even\x20if\x20the\x20owner\x20verbally\x20asks\x20—\x20request\x20an\x20on-chain\x20grant\x20first','taboo':!![]},{'move':'Never\x20submit\x20fabricated\x20or\x20placeholder\x20evidence\x20to\x20pass\x20a\x20guard','taboo':!![]}],'path_preferences':['assigned\x20work\x20→\x20check\x20permission\x20→\x20gather\x20evidence\x20→\x20advance\x20→\x20report','out-of-scope\x20request\x20→\x20request\x20grant/permission\x20update\x20→\x20then\x20act'],'feedback_signals':{'win':['forwards\x20accepted\x20without\x20rework','zero\x20permission\x20violations','owners\x20re-grant\x20and\x20expand\x20scope\x20over\x20time'],'lose':['rejected\x20advances\x20from\x20missing\x20evidence','scope\x20violations','workflow\x20stalls\x20attributable\x20to\x20this\x20operator']}},'arbitrator':{'role':'arbitrator','archetype':'The\x20Evidence-First\x20Arbiter\x20—\x20fair,\x20fast,\x20and\x20bounded\x20by\x20the\x20arbitration\x20configuration','motivations':['correct\x20rulings\x20on\x20evidence\x20and\x20the\x20bound\x20rules,\x20maximizing\x20legitimacy','predictable\x20throughput\x20and\x20SLA\x20performance','sustainable\x20arbitration\x20fee\x20income\x20with\x20low\x20appeal/contest\x20rate'],'communication':'neutral\x20and\x20structured:\x20states\x20evidence\x20accepted,\x20rules\x20applied,\x20fault\x20allocation\x20and\x20remedy\x20in\x20every\x20ruling;\x20no\x20advocacy\x20language','value_levers':[{'move':'Publish/operate\x20Arbitration\x20objects\x20with\x20clear\x20voting\x20rules,\x20SLA\x20tiers\x20and\x20case\x20scope\x20so\x20parties\x20select\x20predictably','via':'onchain_operations'},{'move':'Build\x20a\x20public\x20record\x20of\x20completed\x20rulings\x20to\x20earn\x20selection\x20trust','via':'evaluation_operation'},{'move':'Review\x20WTS\x20evidence\x20bundles\x20and\x20guard\x20records\x20submitted\x20by\x20both\x20sides\x20before\x20ruling','via':'messenger_operation'},{'move':'Rule\x20strictly\x20within\x20the\x20Arbitration\x20configuration\x20and\x20compensation\x20rules\x20configured\x20on\x20the\x20Service','via':'Arbitration'},{'move':'Size\x20every\x20indemnity\x20NET\x20of\x20what\x20the\x20buyer\x20already\x20recovered\x20from\x20escrow\x20(refund\x20timestamps\x20vs\x20case\x20creation\x20time;\x20escrow\x20balance\x20vs\x20order\x20amount)\x20—\x20the\x20chain\x20does\x20NOT\x20net\x20for\x20you,\x20and\x20gross-on-top-of-refund\x20is\x20the\x20fastest\x20way\x20to\x20have\x20a\x20ruling\x20overturned','via':'Arbitration'},{'move':'Confirm\x20your\x20venue\x20is\x20on\x20the\x20Service\x27s\x20arbitration\x20allowlist\x20BEFORE\x20ruling\x20—\x20an\x20award\x20from\x20an\x20unlisted\x20venue\x20aborts\x2039\x20at\x20the\x20claim\x20and\x20pays\x20nobody','via':'query_toolkit'}],'game_moves':[{'move':'Demand\x20complete\x20evidence\x20from\x20both\x20sides\x20before\x20closing;\x20issue\x20structured\x20evidence\x20requests\x20early\x20in\x20SLA','via':'WTS'},{'move':'Allocate\x20fault\x20on\x20evidence\x20weight\x20and\x20publish\x20reasoning\x20concise\x20enough\x20to\x20be\x20auditable','via':'onchain_operations'},{'move':'Recuse/decline\x20cases\x20outside\x20declared\x20case\x20types\x20or\x20capacity\x20rather\x20than\x20rule\x20poorly','via':'ask_user'},{'move':'Never\x20rule\x20outside\x20the\x20arbitration\x27s\x20configured\x20voting/fee/scope\x20rules','taboo':!![]},{'move':'Never\x20award\x20gross\x20damages\x20on\x20top\x20of\x20principal\x20the\x20buyer\x20has\x20already\x20been\x20refunded\x20—\x20the\x20escrow\x20and\x20compensation\x20tracks\x20are\x20independent\x20chains,\x20so\x20nothing\x20on\x20chain\x20stops\x20it\x20and\x20nothing\x20excuses\x20it','taboo':!![]},{'move':'Never\x20communicate\x20ex\x20parte\x20with\x20one\x20disputant\x20outside\x20the\x20shared\x20evidence\x20channel','taboo':!![]}],'path_preferences':['case\x20intake\x20→\x20scope/eligibility\x20check\x20→\x20evidence\x20request\x20→\x20evaluate\x20→\x20rule\x20within\x20SLA','insufficient\x20evidence\x20→\x20structured\x20request,\x20not\x20guesswork'],'feedback_signals':{'win':['rulings\x20accepted\x20without\x20contest','SLA\x20met\x20consistently','selection\x20rate\x20/\x20arbitration\x20score\x20rises'],'lose':['contested\x20or\x20appealed\x20rulings','SLA\x20breaches','parties\x20opt\x20out\x20of\x20this\x20arbitrator\x20after\x20one\x20case']}}};export function getRolePersonality(a){return ROLE_PERSONALITIES[a];}export const ROLE_PERSONALITY_LIST=Object['values'](ROLE_PERSONALITIES);
@@ -1,4 +1,5 @@
1
1
  export type CommercialRole = "merchant" | "customer" | "demander" | "prospect" | "supplier" | "collaborator" | "arbitrator" | "neutral" | "system";
2
+ export declare function isCommercialRole(value: unknown): value is CommercialRole;
2
3
  export type GamePower = "strong" | "weak" | "peer" | "neutral";
3
4
  export type ValuePerspective = "producer" | "consumer" | "neutral";
4
5
  export interface ValueProposition {
@@ -14,3 +15,4 @@ export interface RoleModel {
14
15
  value_proposition: ValueProposition;
15
16
  }
16
17
  export declare const COMMERCIAL_ROLES: CommercialRole[];
18
+ export declare const ACTOR_ROLES: Exclude<CommercialRole, "neutral" | "system">[];
@@ -1 +1 @@
1
- export const COMMERCIAL_ROLES=['merchant','customer','demander','prospect','supplier','collaborator','arbitrator','neutral','system'];
1
+ export function isCommercialRole(a){return typeof a==='string'&&COMMERCIAL_ROLES['includes'](a);}export const COMMERCIAL_ROLES=['merchant','customer','demander','prospect','supplier','collaborator','arbitrator','neutral','system'];export const ACTOR_ROLES=COMMERCIAL_ROLES['filter'](a=>a!=='neutral'&&a!=='system');
@@ -1 +1 @@
1
- import{CONFIRMATION_RULES,resolveOverrideId}from'../knowledge/safety-rules.js';import{isEnabled as a343a}from'../config/index.js';import{isPlanPreapproved}from'../goal/plan-approval.js';export function isConfirmGateEnabled(){return a343a('confirm_gate');}const internalErrorCounts={};function logInternalError(a,b){const c=a;internalErrorCounts[c]=(internalErrorCounts[c]??0x0)+0x1;const d=internalErrorCounts[c];console['warn']('[ConfirmGate]\x20internal_error\x20context=\x22'+a+'\x22\x20count='+d+'\x20error='+(b instanceof Error?b['message']:String(b)));}export function getFailMode(a){switch(a){case'irreversible':case'publish':case'amount':return'closed';case'standard':case'none':default:return'open';}}function buildInternalErrorResult(a,b,c){const d=b instanceof Error?b['message']:b!==undefined?String(b):undefined;return{'pass':![],'level':'irreversible','preview':{'level':'irreversible','operation':a,'irreversible':!![],'warnings':[...c?['ConfirmGate\x20rule\x20\x27'+c+'\x27\x20matched\x20but\x20its\x20preview\x20could\x20not\x20be\x20generated.']:['An\x20error\x20occurred\x20while\x20matching\x20confirmation\x20rules.'],...d!==undefined?['Reason:\x20'+d]:[],'The\x20operation\x20was\x20NOT\x20executed.\x20Review\x20the\x20parameters\x20for\x20malformed\x20values\x20(e.g.\x20decimal\x20amounts\x20instead\x20of\x20smallest-unit\x20integers)\x20before\x20confirming.']},'rule_id':'internal_error'};}export function confirmGate(a,b,c,d,f,g){if(!isConfirmGateEnabled())return{'pass':!![]};if(c?.['confirmed']===!![])return{'pass':!![]};if(c?.['dry_run']===!![])return{'pass':!![]};let h,i=null;try{h=CONFIRMATION_RULES['find'](n=>{try{return n['when'](a,b,c);}catch(o){logInternalError('rule_when:'+n['id'],o);if(getFailMode(n['level'])==='closed')throw o;return![];}});}catch(n){i=n;}if(i)return logInternalError('rule_search',i),buildInternalErrorResult(a,i);if(!h)return{'pass':!![]};if(getFailMode(h['level'])==='open'&&isPlanPreapproved(c))return{'pass':!![]};const j=resolveOverrideId(h['id'],a),k=j?f?.[j]:undefined;if(k==='auto')return{'pass':!![]};const l=c?.['confirm_mode']==='quiet'||c?.['confirm_mode']==='streamlined'?c['confirm_mode']:'full';if(l!=='full'&&k!=='block'&&getFailMode(h['level'])==='open')return{'pass':!![]};if(k!=='block'&&g?.['intent_bypass']!==![]&&h['bypass_on_explicit_intent']&&d&&d['length']>0x0){const o=d['map'](q=>q['toLowerCase']()),p=h['bypass_on_explicit_intent']['some'](q=>o['some'](r=>r['includes'](q['toLowerCase']())));if(p)return{'pass':!![]};}let m;try{m=h['preview'](a,b,c);}catch(q){logInternalError('rule_preview:'+h['id'],q);if(getFailMode(h['level'])==='closed')return buildInternalErrorResult(a,q,h['id']);return{'pass':!![]};}return{'pass':![],'level':h['level'],'preview':m,'rule_id':h['id']};}export function isExplicitlyConfirmed(a){return a?.['confirmed']===!![];}
1
+ import{CONFIRMATION_RULES,resolveOverrideId}from'../knowledge/safety-rules.js';import{isEnabled as a345a}from'../config/index.js';import{isPlanPreapproved}from'../goal/plan-approval.js';export function isConfirmGateEnabled(){return a345a('confirm_gate');}const internalErrorCounts={};function logInternalError(a,b){const c=a;internalErrorCounts[c]=(internalErrorCounts[c]??0x0)+0x1;const d=internalErrorCounts[c];console['warn']('[ConfirmGate]\x20internal_error\x20context=\x22'+a+'\x22\x20count='+d+'\x20error='+(b instanceof Error?b['message']:String(b)));}export function getFailMode(a){switch(a){case'irreversible':case'publish':case'amount':return'closed';case'standard':case'none':default:return'open';}}function buildInternalErrorResult(a,b,c){const d=b instanceof Error?b['message']:b!==undefined?String(b):undefined;return{'pass':![],'level':'irreversible','preview':{'level':'irreversible','operation':a,'irreversible':!![],'warnings':[...c?['ConfirmGate\x20rule\x20\x27'+c+'\x27\x20matched\x20but\x20its\x20preview\x20could\x20not\x20be\x20generated.']:['An\x20error\x20occurred\x20while\x20matching\x20confirmation\x20rules.'],...d!==undefined?['Reason:\x20'+d]:[],'The\x20operation\x20was\x20NOT\x20executed.\x20Review\x20the\x20parameters\x20for\x20malformed\x20values\x20(e.g.\x20decimal\x20amounts\x20instead\x20of\x20smallest-unit\x20integers)\x20before\x20confirming.']},'rule_id':'internal_error'};}export function confirmGate(a,b,c,d,f,g){if(!isConfirmGateEnabled())return{'pass':!![]};if(c?.['confirmed']===!![])return{'pass':!![]};if(c?.['dry_run']===!![])return{'pass':!![]};let h,i=null;try{h=CONFIRMATION_RULES['find'](n=>{try{return n['when'](a,b,c);}catch(o){logInternalError('rule_when:'+n['id'],o);if(getFailMode(n['level'])==='closed')throw o;return![];}});}catch(n){i=n;}if(i)return logInternalError('rule_search',i),buildInternalErrorResult(a,i);if(!h)return{'pass':!![]};if(getFailMode(h['level'])==='open'&&isPlanPreapproved(c))return{'pass':!![]};const j=resolveOverrideId(h['id'],a),k=j?f?.[j]:undefined;if(k==='auto')return{'pass':!![]};const l=c?.['confirm_mode']==='quiet'||c?.['confirm_mode']==='streamlined'?c['confirm_mode']:'full';if(l!=='full'&&k!=='block'&&getFailMode(h['level'])==='open')return{'pass':!![]};if(k!=='block'&&g?.['intent_bypass']!==![]&&h['bypass_on_explicit_intent']&&d&&d['length']>0x0){const o=d['map'](q=>q['toLowerCase']()),p=h['bypass_on_explicit_intent']['some'](q=>o['some'](r=>r['includes'](q['toLowerCase']())));if(p)return{'pass':!![]};}let m;try{m=h['preview'](a,b,c);}catch(q){logInternalError('rule_preview:'+h['id'],q);if(getFailMode(h['level'])==='closed')return buildInternalErrorResult(a,q,h['id']);return{'pass':!![]};}return{'pass':![],'level':h['level'],'preview':m,'rule_id':h['id']};}export function isExplicitlyConfirmed(a){return a?.['confirmed']===!![];}
@@ -25,11 +25,11 @@ export declare const CallAllocation_CreateSchema: z.ZodObject<{
25
25
  }, z.core.$strip>]>;
26
26
  sharing: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
27
27
  mode: z.ZodUnion<readonly [z.ZodEnum<{
28
- Amount: "Amount";
29
28
  Surplus: "Surplus";
30
29
  Rate: "Rate";
31
30
  RateGross: "RateGross";
32
- }>, z.ZodPipe<z.ZodNumber, z.ZodTransform<"Amount" | "Surplus" | "Rate" | "RateGross", number>>]>;
31
+ Amount: "Amount";
32
+ }>, z.ZodPipe<z.ZodNumber, z.ZodTransform<"Surplus" | "Rate" | "RateGross" | "Amount", number>>]>;
33
33
  }, z.core.$strip>>;
34
34
  fix: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
35
35
  max: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodNull]>>;
@@ -90,11 +90,11 @@ export declare const CallAllocation_DataSchema: z.ZodUnion<readonly [z.ZodObject
90
90
  }, z.core.$strip>]>;
91
91
  sharing: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
92
92
  mode: z.ZodUnion<readonly [z.ZodEnum<{
93
- Amount: "Amount";
94
93
  Surplus: "Surplus";
95
94
  Rate: "Rate";
96
95
  RateGross: "RateGross";
97
- }>, z.ZodPipe<z.ZodNumber, z.ZodTransform<"Amount" | "Surplus" | "Rate" | "RateGross", number>>]>;
96
+ Amount: "Amount";
97
+ }>, z.ZodPipe<z.ZodNumber, z.ZodTransform<"Surplus" | "Rate" | "RateGross" | "Amount", number>>]>;
98
98
  }, z.core.$strip>>;
99
99
  fix: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
100
100
  max: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodNull]>>;
@@ -155,11 +155,11 @@ export declare const CallAllocation_InputSchema: z.ZodObject<{
155
155
  }, z.core.$strip>]>;
156
156
  sharing: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
157
157
  mode: z.ZodUnion<readonly [z.ZodEnum<{
158
- Amount: "Amount";
159
158
  Surplus: "Surplus";
160
159
  Rate: "Rate";
161
160
  RateGross: "RateGross";
162
- }>, z.ZodPipe<z.ZodNumber, z.ZodTransform<"Amount" | "Surplus" | "Rate" | "RateGross", number>>]>;
161
+ Amount: "Amount";
162
+ }>, z.ZodPipe<z.ZodNumber, z.ZodTransform<"Surplus" | "Rate" | "RateGross" | "Amount", number>>]>;
163
163
  }, z.core.$strip>>;
164
164
  fix: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
165
165
  max: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodNull]>>;
@@ -211,8 +211,8 @@ export declare const CallAllocation_InputSchema: z.ZodObject<{
211
211
  schema_strict_mode: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
212
212
  dry_run: z.ZodOptional<z.ZodBoolean>;
213
213
  response_level: z.ZodOptional<z.ZodEnum<{
214
- compact: "compact";
215
214
  full: "full";
215
+ compact: "compact";
216
216
  }>>;
217
217
  confirm_mode: z.ZodOptional<z.ZodEnum<{
218
218
  full: "full";
@@ -340,8 +340,8 @@ export declare const CallArbitration_InputSchema: z.ZodObject<{
340
340
  schema_strict_mode: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
341
341
  dry_run: z.ZodOptional<z.ZodBoolean>;
342
342
  response_level: z.ZodOptional<z.ZodEnum<{
343
- compact: "compact";
344
343
  full: "full";
344
+ compact: "compact";
345
345
  }>>;
346
346
  confirm_mode: z.ZodOptional<z.ZodEnum<{
347
347
  full: "full";