@wowok/agent-mcp 3.4.4 → 3.4.5

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 (191) hide show
  1. package/dist/.build-stamp.json +3 -3
  2. package/dist/chain-semantics/composition-truth.js +1 -1
  3. package/dist/composition/audit.js +1 -1
  4. package/dist/composition/compile.js +1 -1
  5. package/dist/composition/emit-phases.js +1 -1
  6. package/dist/composition/guard-fill.js +1 -1
  7. package/dist/composition/input-normalize.js +1 -1
  8. package/dist/composition/materialize.js +1 -1
  9. package/dist/composition/mode-gates.js +1 -1
  10. package/dist/composition/param-disclosure.js +1 -1
  11. package/dist/composition/plan-run-store.js +1 -0
  12. package/dist/composition/reflux.js +1 -1
  13. package/dist/composition/role-bindings.js +1 -0
  14. package/dist/composition/shape-expand.js +1 -1
  15. package/dist/composition/supply-chain-emit.js +1 -1
  16. package/dist/config/judgment.d.ts +13 -25
  17. package/dist/config/judgment.js +1 -1
  18. package/dist/config/match-policy-file.js +1 -1
  19. package/dist/config/rule-engine.d.ts +4 -10
  20. package/dist/config/rule-engine.js +1 -1
  21. package/dist/config/template-params.js +1 -1
  22. package/dist/evaluation/engine.js +1 -1
  23. package/dist/experience/realtime-feedback.js +1 -1
  24. package/dist/extensions/capability.js +1 -1
  25. package/dist/graph/onchain/expand.js +1 -1
  26. package/dist/graph/onchain/exposure.js +1 -1
  27. package/dist/harness/forward-roster-preflight.js +1 -0
  28. package/dist/keeper/detectors.js +1 -1
  29. package/dist/knowledge/allocator-rail-verifier.js +1 -1
  30. package/dist/knowledge/arb-operation-face.js +1 -1
  31. package/dist/knowledge/arbitration-rail-verifier.js +1 -1
  32. package/dist/knowledge/audit-rules.d.ts +17 -1
  33. package/dist/knowledge/audit-rules.js +1 -1
  34. package/dist/knowledge/baselines/rules/alloc_audit.json.good.sha256 +1 -0
  35. package/dist/knowledge/baselines/rules/allocation.json.good.sha256 +1 -0
  36. package/dist/knowledge/baselines/rules/arb.json.good.sha256 +1 -0
  37. package/dist/knowledge/baselines/rules/arbitration.json.good.sha256 +1 -0
  38. package/dist/knowledge/baselines/rules/bridge.json.good.sha256 +1 -0
  39. package/dist/knowledge/baselines/rules/contact.json.good.sha256 +1 -0
  40. package/dist/knowledge/baselines/rules/demand.json.good.sha256 +1 -0
  41. package/dist/knowledge/baselines/rules/graph.json.good.sha256 +1 -0
  42. package/dist/knowledge/baselines/rules/guard.json.good.sha256 +1 -0
  43. package/dist/knowledge/baselines/rules/machine.json.good.sha256 +1 -0
  44. package/dist/knowledge/baselines/rules/oracle.json.good.sha256 +1 -0
  45. package/dist/knowledge/baselines/rules/order.json.good.sha256 +1 -0
  46. package/dist/knowledge/baselines/rules/payment.json.good.sha256 +1 -0
  47. package/dist/knowledge/baselines/rules/permission.json.good.sha256 +1 -0
  48. package/dist/knowledge/baselines/rules/personal.json.good.sha256 +1 -0
  49. package/dist/knowledge/baselines/rules/plan.json +153 -33
  50. package/dist/knowledge/baselines/rules/plan.json.good +153 -33
  51. package/dist/knowledge/baselines/rules/plan.json.good.sha256 +1 -0
  52. package/dist/knowledge/baselines/rules/progress.json.good.sha256 +1 -0
  53. package/dist/knowledge/baselines/rules/proof.json.good.sha256 +1 -0
  54. package/dist/knowledge/baselines/rules/registrar.json.good.sha256 +1 -0
  55. package/dist/knowledge/baselines/rules/repository.json.good.sha256 +1 -0
  56. package/dist/knowledge/baselines/rules/resource.json.good.sha256 +1 -0
  57. package/dist/knowledge/baselines/rules/reward.json.good.sha256 +1 -0
  58. package/dist/knowledge/baselines/rules/service.json.good.sha256 +1 -0
  59. package/dist/knowledge/baselines/rules/treasury.json.good.sha256 +1 -0
  60. package/dist/knowledge/baselines/rules/util.json.good.sha256 +1 -0
  61. package/dist/knowledge/builtin-templates.d.ts +1 -1
  62. package/dist/knowledge/builtin-templates.js +1 -1
  63. package/dist/knowledge/discount-threshold.js +1 -1
  64. package/dist/knowledge/fee-param-bindings.js +1 -1
  65. package/dist/knowledge/getting-started.js +1 -1
  66. package/dist/knowledge/guard-binding-table.js +1 -1
  67. package/dist/knowledge/guard-design-patterns.js +1 -1
  68. package/dist/knowledge/guard-templates.d.ts +3 -2
  69. package/dist/knowledge/guard-templates.js +1 -1
  70. package/dist/knowledge/index.js +1 -1
  71. package/dist/knowledge/industry-registry.js +1 -1
  72. package/dist/knowledge/jsonrpc-enum.js +1 -1
  73. package/dist/knowledge/knob-docs.js +1 -1
  74. package/dist/knowledge/machine-topology.js +1 -1
  75. package/dist/knowledge/param-schema.js +1 -1
  76. package/dist/knowledge/param-tiers.js +1 -1
  77. package/dist/knowledge/path-oracle/products/alibaba-1688.js +1 -1
  78. package/dist/knowledge/path-oracle/products/amazon.js +1 -1
  79. package/dist/knowledge/path-oracle/products/booking-com.js +1 -1
  80. package/dist/knowledge/path-oracle/products/contra.js +1 -1
  81. package/dist/knowledge/path-oracle/products/costco.js +1 -1
  82. package/dist/knowledge/path-oracle/products/duoduo-maicai.js +1 -1
  83. package/dist/knowledge/path-oracle/products/etsy.js +1 -1
  84. package/dist/knowledge/path-oracle/products/gamefound.js +1 -1
  85. package/dist/knowledge/path-oracle/products/gofundme.js +1 -1
  86. package/dist/knowledge/path-oracle/products/klook.js +1 -1
  87. package/dist/knowledge/path-oracle/products/ninety-nine-designs.js +1 -1
  88. package/dist/knowledge/path-oracle/products/pinduoduo-kuaituantuan.js +1 -1
  89. package/dist/knowledge/path-oracle/products/shansong.js +1 -1
  90. package/dist/knowledge/path-oracle/products/taobao-presale.js +1 -1
  91. package/dist/knowledge/path-oracle/products/upwork-catalog.js +1 -1
  92. package/dist/knowledge/path-oracle/products/upwork.js +1 -1
  93. package/dist/knowledge/pattern-resolutions.js +1 -1
  94. package/dist/knowledge/protocol-facts.js +1 -1
  95. package/dist/knowledge/publish-gate.js +1 -1
  96. package/dist/knowledge/publish-surface-contract.js +1 -1
  97. package/dist/knowledge/template-loader.js +1 -1
  98. package/dist/knowledge/template-registry.js +1 -1
  99. package/dist/knowledge/template-scanner.js +1 -1
  100. package/dist/knowledge/time-units.js +1 -0
  101. package/dist/knowledge/tools-reference.js +1 -1
  102. package/dist/knowledge/workflow-guidance.js +1 -1
  103. package/dist/monitor/MonitorLoop.js +1 -1
  104. package/dist/participation/radar-core.js +1 -1
  105. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  106. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  107. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  108. package/dist/playbooks/service-build/migration-planner.js +1 -1
  109. package/dist/playbooks/service-build/object-panorama.js +1 -1
  110. package/dist/playbooks/service-build/participation-radar.js +1 -1
  111. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  112. package/dist/playbooks/service-build/service-panorama.js +1 -1
  113. package/dist/playbooks/service-build/service-quote.js +1 -1
  114. package/dist/review/index.js +1 -1
  115. package/dist/safety/confirm-gate.js +1 -1
  116. package/dist/schema/benchmark-migration/index.d.ts +110 -2
  117. package/dist/schema/benchmark-migration/index.js +1 -1
  118. package/dist/schema/boundary-coercion.js +1 -0
  119. package/dist/schema/call/arbitration.js +1 -1
  120. package/dist/schema/call/base.js +1 -1
  121. package/dist/schema/call/handler.js +1 -1
  122. package/dist/schema/call/machine.d.ts +56 -8
  123. package/dist/schema/call/order.d.ts +37 -10
  124. package/dist/schema/call/order.js +1 -1
  125. package/dist/schema/call/permission.d.ts +210 -30
  126. package/dist/schema/call/personal.d.ts +56 -8
  127. package/dist/schema/call/progress.d.ts +28 -4
  128. package/dist/schema/call/semantic.js +1 -1
  129. package/dist/schema/call/service.d.ts +84 -12
  130. package/dist/schema/common/index.d.ts +14 -2
  131. package/dist/schema/common/index.js +1 -1
  132. package/dist/schema/evaluation/index.js +1 -1
  133. package/dist/schema/goal/index.d.ts +1 -1
  134. package/dist/schema/goal/planning.js +1 -1
  135. package/dist/schema/local/index.js +1 -1
  136. package/dist/schema/messenger/index.d.ts +168 -24
  137. package/dist/schema/messenger/index.js +1 -1
  138. package/dist/schema/operations.d.ts +655 -22
  139. package/dist/schema/operations.js +1 -1
  140. package/dist/schema/persona/index.d.ts +22 -110
  141. package/dist/schema/query/index.js +1 -1
  142. package/dist/schema/schema-version.js +1 -1
  143. package/dist/schema/workflow/index.d.ts +4 -0
  144. package/dist/schema/workflow/index.js +1 -1
  145. package/dist/schema-query-impl/index.js +1 -1
  146. package/dist/schemas/benchmark_migration_operation.schema.json +1 -1
  147. package/dist/schemas/evaluation_operation.schema.json +1 -1
  148. package/dist/schemas/goal_operation.schema.json +1 -1
  149. package/dist/schemas/guard_rebind_replacement.schema.json +1 -0
  150. package/dist/schemas/index.json +1 -1
  151. package/dist/schemas/messenger_operation.schema.json +1 -1
  152. package/dist/schemas/onchain_operations.schema.json +1 -1
  153. package/dist/schemas/onchain_operations_allocation.schema.json +1 -1
  154. package/dist/schemas/onchain_operations_arbitration.schema.json +1 -1
  155. package/dist/schemas/onchain_operations_contact.schema.json +1 -1
  156. package/dist/schemas/onchain_operations_demand.schema.json +1 -1
  157. package/dist/schemas/onchain_operations_gen_passport.schema.json +1 -1
  158. package/dist/schemas/onchain_operations_machine.schema.json +1 -1
  159. package/dist/schemas/onchain_operations_order.schema.json +1 -1
  160. package/dist/schemas/onchain_operations_permission.schema.json +1 -1
  161. package/dist/schemas/onchain_operations_personal.schema.json +1 -1
  162. package/dist/schemas/onchain_operations_progress.schema.json +1 -1
  163. package/dist/schemas/onchain_operations_proof.schema.json +1 -1
  164. package/dist/schemas/onchain_operations_repository.schema.json +1 -1
  165. package/dist/schemas/onchain_operations_reward.schema.json +1 -1
  166. package/dist/schemas/onchain_operations_service.schema.json +1 -1
  167. package/dist/schemas/onchain_operations_treasury.schema.json +1 -1
  168. package/dist/schemas/persona_operation.schema.json +1 -1
  169. package/dist/schemas/time_convert.schema.json +1 -0
  170. package/dist/schemas/wip_file.schema.json +1 -1
  171. package/dist/schemas/workflow_operation.schema.json +1 -1
  172. package/dist/tools/handlers/benchmark-migration.js +1 -1
  173. package/dist/tools/handlers/config.js +1 -1
  174. package/dist/tools/handlers/fund-rail-recipe.js +1 -1
  175. package/dist/tools/handlers/guard-rebind-replacement.js +1 -0
  176. package/dist/tools/handlers/local.js +1 -1
  177. package/dist/tools/handlers/mark-namespace.js +1 -1
  178. package/dist/tools/handlers/onchain.js +1 -1
  179. package/dist/tools/handlers/query.js +1 -1
  180. package/dist/tools/handlers/settle-sweep.js +1 -1
  181. package/dist/tools/handlers/time-convert.js +1 -0
  182. package/dist/tools/handlers/wip.js +1 -1
  183. package/dist/tools/handlers/workflow.js +1 -1
  184. package/dist/tools/index.d.ts +1 -0
  185. package/dist/tools/index.js +1 -1
  186. package/dist/tools/registry/business.js +1 -1
  187. package/dist/tools/registry/local.js +1 -1
  188. package/dist/tools/registry/onchain.js +1 -1
  189. package/dist/tools/wip-verify-ledger.js +1 -1
  190. package/dist/tools/wrap.js +1 -1
  191. package/package.json +6 -5
@@ -1 +1 @@
1
- import{Config,LocalMark,query_objects,query_object_last_updated,query_table,objectTypeFromAddress}from'@wowok/wowok';import{createHash}from'node:crypto';import{checkWtsProofAnchor,readWtsDocument}from'../../communication/wts-attestation.js';import{resolveAddress as a418a}from'../../tools/handlers/name-resolution.js';import{parseStructuredLines,firstStructuredValue}from'../../evaluation/structured-lines.js';import{batchReadAddressKeyedFields,batchQueryObjectsByIds,batchQueryTableItems,fetchObjectLinkerTx,ringWindowSaturated}from'../../graph/onchain/sdk-batch.js';import{enumerateArbs}from'../../knowledge/jsonrpc-enum.js';import{formatMoneyAnnotation}from'./facet-money.js';const js=a=>{if(typeof a==='bigint')return a['toString']();if(a&&typeof a==='object'&&!Array['isArray'](a)){const b={};for(const [c,d]of Object['entries'](a)){b[c]=js(d);}return b;}if(Array['isArray'](a))return a['map'](js);return a;},str=a=>a===null||a===undefined?null:String(a);function freshnessOf(a){const b=a?a['version']??a['data']?.['version']:undefined;return{'read_at_ms':Date['now'](),'version':b===undefined||b===null||String(b)===''?null:String(b),'note':'live\x20read\x20(cache\x20bypassed);\x20a\x20read\x20issued\x20in\x20the\x20same\x20second\x20as\x20a\x20committing\x20transaction\x20can\x20trail\x20the\x20committed\x20effect\x20by\x20one\x20checkpoint\x20—\x20if\x20any\x20field\x20contradicts\x20a\x20transaction\x20just\x20submitted,\x20re-query\x20once\x20(compare\x20version\x20across\x20reads)\x20before\x20concluding'};}const 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'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;},num=a=>{if(typeof a==='bigint')return Number(a);if(typeof a==='number')return Number['isFinite'](a)?a:null;if(typeof a==='string'&&a['trim']()!==''){const b=Number(a);return Number['isFinite'](b)?b:null;}return null;},arr=a=>Array['isArray'](a)?a:[],scalarValueStr=a=>{if(a==null)return null;if(typeof a==='string')return a;if(typeof a==='number'||typeof a==='boolean')return String(a);if(typeof a==='bigint')return a['toString']();if(a instanceof Uint8Array)try{return new TextDecoder()['decode'](a);}catch{return Array['from'](a['slice'](0x0,0x20))['map'](c=>c['toString'](0x10)['padStart'](0x2,'0'))['join']('')+(a['length']>0x20?'...':'');}try{return JSON['stringify'](a,(b,c)=>typeof c==='bigint'?c['toString']():c);}catch{return null;}};export function coinOfTypeRaw(a){if(typeof a!=='string'||!a)return null;const b=a['match'](/<(.+)>$/),c=b?.[0x1]?.['trim']();return c&&c['includes']('::')?c:null;}const RELATED_PREVIEW_CAP=0x32;async function buildRelatedList(a,b,c,d,e){const f={'key':a,'items':[],'count':0x0,'window_saturated':![],'preview_truncated':![]};if(!a)return f;try{const g=await fetchObjectLinkerTx(a,c,!![]),h=g?.['items']??[];f['window_saturated']=ringWindowSaturated(h['length']);const j=[];for(const k of h){const l=typeof k?.['who']==='string'?k['who']:'';if(!l||l['toLowerCase']()===b['toLowerCase']())continue;let m;try{m=objectTypeFromAddress(l);}catch{}if(!m)continue;j['push']({'address':l,'object_type':m,'time':typeof k?.['time']==='number'?k['time']:null});}f['count']=j['length'],f['items']=j['slice'](-RELATED_PREVIEW_CAP)['reverse'](),f['preview_truncated']=j['length']>f['items']['length'];}catch{d['push']('related:\x20ObjectLinkerTx('+e+')\x20lookup\x20failed');}return f;}const ARB_STATUS_NAMES={0x0:'Principal_confirming',0x1:'Arbitrator_confirming',0x2:'Voting',0x3:'Arbitrated',0x4:'Objectionable',0x5:'Finished',0x6:'Withdrawn'};async function resolveObject(a,b,c=!![]){const d=await a418a(a,'object_address');let f=b??undefined,g=null;if(!f)f=await Config['Instance']()['network_get']();try{const h=await query_objects({'objects':[d],'network':f,...c?{'no_cache':!![]}:{}});g=h?.['objects']?.[0x0]??null;if(!g&&b){const i=await Config['Instance']()['network_get']();if(i&&i!==f){const j=await query_objects({'objects':[d],'network':i,'no_cache':!![]}),k=j?.['objects']?.[0x0]??null;k&&(g=k,f=i);}}}catch(l){throw new Error('Failed\x20to\x20query\x20'+d+'\x20on\x20'+f+':\x20'+(l instanceof Error?l['message']:String(l)));}if(!g)throw new Error(d+'\x20not\x20found\x20on\x20'+f+(b?'':'\x20(session\x20default\x20network\x20—\x20not\x20an\x20explicit\x20request)')+'.\x20Verify\x20BOTH\x20the\x20object\x20ID\x20and\x20the\x20network:\x20an\x20object\x20that\x20exists\x20on\x20'+'one\x20network\x20answers\x20\x22not\x20found\x22\x20on\x20the\x20other.\x20Pass\x20context_network\x20'+'to\x20query\x20a\x20specific\x20network\x20before\x20concluding\x20the\x20object\x20does\x20not\x20exist.');return g['object']=g['object']??d,{'network':String(f),'obj':g};}async function resolveHead(a,b,c){let d=null,e=[];try{const f=await LocalMark['Instance']()['list']({'address':a});f['length']>0x0&&(d=f[0x0]['name']??null,e=(f[0x0]['tags']??[])['map'](g=>String(g)));}catch{c['push']('head:\x20LocalMark\x20lookup\x20failed');}return{'name':d,'tags':e,'description':str(b['description'])};}async function buildPresenters(a,b,c){const d=[];let e=0x0,f=![];const g=0xc8;let h=![];try{const {items:i,truncated:j}=await batchQueryTableItems(a,{'network':b,'noCache':!![],'maxItems':g});f=j;const k=i['map'](m=>m['object'])['filter'](m=>m?.['type']==='TableItem_DemandPresenter');e=k['length'];const l=k['map'](m=>({'presenter':str(m?.['address'])??'','service':str(m?.['service'])??'','recommend':str(m?.['recommend']),'acceptance_score':num(m?.['acceptance_score']),'feedback':str(m?.['feedback']),'feedback_time':num(m?.['feedback_time']),'update_time':num(m?.['update_time'])}))['sort']((m,n)=>(n['update_time']??0x0)-(m['update_time']??0x0))['slice'](0x0,0x32);for(const m of l){const n=parseStructuredLines(m['recommend']??'');d['push']({'presenter':m['presenter'],'service':m['service'],'recommend':m['recommend'],'acceptance_score':m['acceptance_score'],'feedback':m['feedback'],'feedback_time':m['feedback_time'],'update_time':m['update_time'],'structured':n,'quote':firstStructuredValue(n,['quote','price']),'score_covers_current_service':m['acceptance_score']==null?null:m['feedback_time']!=null&&m['update_time']!=null?m['feedback_time']>=m['update_time']:null});}}catch{h=!![];}if(h&&d['length']===0x0){try{const o=await fetchObjectLinkerTx(a,b,!![]),p=Array['isArray'](o?.['items'])?o['items']:[];f=ringWindowSaturated(p['length']);const q=p['map'](v=>({'who':String(v?.['who']??''),'time':typeof v?.['time']==='number'?v['time']:null}))['filter'](v=>v['who']['startsWith']('0x'));e=q['length'];const t=q['slice'](-0x32)['reverse'](),u=await batchReadAddressKeyedFields(a,t['map'](v=>v['who']),b,!![]);for(const v of t){const w=u['get'](v['who']['toLowerCase']()),x=num(w?.['acceptance_score']),y=num(w?.['feedback_time']),z=num(w?.['update_time'])??v['time'],A=str(w?.['recommend']),B=parseStructuredLines(A);d['push']({'presenter':v['who'],'service':str(w?.['service'])??'','recommend':A,'acceptance_score':x,'feedback':str(w?.['feedback']),'feedback_time':y,'update_time':z,'structured':B,'quote':firstStructuredValue(B,['quote','price']),'score_covers_current_service':x==null?null:y!=null&&z!=null?y>=z:null});}}catch{return c['push']('presenters:\x20presenter-table\x20walk\x20and\x20tx-ring\x20fallback\x20both\x20failed\x20(non-blocking)'),{'count':e,'window_saturated':f,'preview_truncated':e>d['length'],'items':d};}c['push']('presenters:\x20presenter-table\x20walk\x20failed;\x20served\x20tx-ring\x20fallback\x20rows');}return{'count':e,'window_saturated':f,'preview_truncated':e>d['length'],'items':d};}export async function buildRepositoryData(a,b,c){const d=0x32,f=0xc8,g=0x32,h=[];let i=0x0,j=!![];try{const l=[];let m=null;for(;;){const n=await query_table({'parent':a,'cursor':m,'limit':g,'no_cache':!![],'network':b}),o=Array['isArray'](n?.['items'])?n['items']:[];for(const p of o){if(typeof p?.['object']==='string')l['push'](p['object']);}i+=o['length'];if(n?.['hasNextPage']===!![]&&typeof n?.['nextCursor']==='string'&&i<f){m=n['nextCursor'];continue;}j=n?.['hasNextPage']!==!![];break;}if(l['length']>0x0){const q=await batchQueryObjectsByIds(l,b,!![]);for(const s of Array['isArray'](q)?q:[]){const t=s,u=t?.['data'];if(t?.['entity']===undefined&&t?.['name']===undefined)continue;h['push']({'entity':str(t?.['entity']),'name':str(t?.['name']),'value':scalarValueStr(u?.['value']??t?.['value']),'value_type':str(u?.['value_type'])});}}}catch(v){return c['push']('data:\x20table\x20enumeration\x20failed\x20('+(v instanceof Error?v['message']:String(v))+')\x20—\x20entries\x20below\x20are\x20NOT\x20the\x20full\x20set;\x20audit\x20via\x20onchain_table\x20(parent\x20=\x20this\x20Repository).'),{'count':null,'items':h['slice'](0x0,d)};}if(i===0x0)return{'count':0x0,'items':[]};const k=h['slice'](0x0,d);return(!j||i>d)&&c['push']('data:\x20showing\x20'+k['length']+'\x20of\x20'+i+'\x20row(s)'+(j?'':'\x20(walk\x20capped\x20at\x20'+f+')')+'\x20—\x20full\x20audit\x20via\x20onchain_table\x20(parent\x20=\x20this\x20Repository).'),{'count':i,'items':k};}export async function handleObjectPanorama(b){const c=b['object_address']??b['filter']??b['object']??b['service_address'];if(!c)throw new Error('\x27object_address\x27\x20is\x20required\x20for\x20object_panorama\x20(a\x20LocalMark\x20NAME\x20is\x20also\x20accepted;\x20\x27object\x27\x20and\x20\x27service_address\x27\x20are\x20tolerated\x20as\x20aliases).\x20Example:\x20{\x22query_type\x22:\x20\x22object_panorama\x22,\x20\x22object_address\x22:\x20\x220x...\x22}');const {network:d,obj:e}=await resolveObject(c,b['context_network'],b['no_cache']!==![]),f=String(e['object']),h=[],j=await resolveHead(f,e,h),k=String(e['type']??'');if(k==='Progress'){const l=arr(e['session'])[0x0],m=l?{'next_node':str(l['next_node']),'weights':num(l['weights']),'threshold':num(l['threshold']),'forwards':arr(l['forwards'])['map'](q=>{const r=q;return{'forward':str(r['forward'])??'','who':str(r['who']),'accomplished':r['accomplished']===!![],'msg':str(r['msg']),'time':num(r['time'])};})}:null,n=await buildRelatedList(typeof e['machine']==='string'?e['machine']:null,f,d,h,'machine');return{'action':'object_panorama','object':f,'object_type':'Progress','network':d,'head':j,'fields':{'machine':str(e['machine']),'current':str(e['current']),'task':str(e['task']),'history_count':num(e['history_count']),'current_time':num(e['current_time'])},'context_repositories':arr(e['context_repositories'])['map'](q=>String(q)),'operators':arr(e['namedOperator'])['map'](q=>{const r=q;return{'name':str(r['name'])??'','operators':arr(r['operators'])['map'](u=>String(u))};}),'session':m,'related':n,'freshness':freshnessOf(e),'data_gaps':h};}if(k==='Demand'){const q=num(e['presenters_count']),r=await buildPresenters(f,d,h);return q!=null&&q>0x0&&r['count']===0x0&&h['push']('presenters:\x20the\x20Demand\x20object\x20reports\x20'+q+'\x20presenter(s)\x20on-chain,\x20but\x20the\x20'+'presenter-table\x20walk\x20returned\x20NONE\x20—\x20this\x20is\x20a\x20READ\x20GAP,\x20not\x20an\x20absence.\x20Presenter\x20reputation\x20'+'(acceptance_score\x20/\x20feedback)\x20is\x20UNREADABLE\x20here;\x20verify\x20via\x20onchain_table\x20on\x20the\x20DemandPresenter\x20'+'entries\x20before\x20any\x20match/recall\x20decision'),{'action':'object_panorama','object':f,'object_type':'Demand','network':d,'head':j,'fields':{'location':str(e['location']),'um':str(e['um']),'permission':str(e['permission']),'presenters_count':q},'rewards':arr(e['rewards'])['map'](u=>String(u)),'guards':arr(e['guards'])['map'](u=>({'guard':str(u['guard'])??''})),'presenters':r,'data_gaps':h};}if(k==='Order'){let u=null;try{const L=await query_object_last_updated({'object':f,'network':d,'previous_transaction':str(e['previousTransaction'])});u=L?.['timestamp_ms']?Number(L['timestamp_ms'])||null:null;}catch{}let w='none',x=null,y=null,z=null,A,B=null;const C=str(e['allocation']),D=str(e['progress']),E=str(e['service']),F=[C,D,E]['filter'](M=>!!M);let G=null;if(F['length']>0x0)try{const M=await query_objects({'objects':F,'network':d}),N=M?.['objects']??[];if(C){w='pending';const O=N['find'](Q=>Q?.['object']===C),P=Number(O?.['balance']??NaN);B=Number['isFinite'](P)?P:null,Number['isFinite'](P)&&P===0x0&&(w='allocated');}if(D){const Q=N['find'](R=>R?.['object']===D);x=str(Q?.['current']),y=num(Q?.['current_time']);}if(E){const R=N['find'](S=>S?.['object']===E);G=coinOfTypeRaw(R?.['type_raw']??R?.['type']);}}catch{}const H=await buildRelatedList(f,f,d,h,'order'),I=str(e['amount']);if(w==='allocated')z='0';else{if(w==='pending'&&B!==null){const S=Number(I||NaN);Number['isFinite'](S)?z=String(Math['max'](0x0,S-B)):A='order\x20amount\x20unreadable\x20—\x20deficit\x20not\x20computable';}else w==='pending'?A='allocation\x20balance\x20unavailable\x20(read\x20failed)\x20—\x20deficit\x20not\x20computable':A='no\x20Allocation\x20bound\x20to\x20this\x20order\x20—\x20no\x20escrow\x20pool\x20exists';}const J=await formatMoneyAnnotation(I,G,d),K=await Promise['all'](arr(e['items'])['map'](async T=>{const U=T,V=str(U['price']),W=await formatMoneyAnnotation(V,G,d);return{'name':str(U['name']),'price':V,'price_display':W['display'],'price_tip':W['tip'],'quantity':str(U['quantity']),'wip_hash':str(U['wip_hash'])};}));return{'action':'object_panorama','object':f,'object_type':'Order','network':d,'head':j,'coin_type':G,'fields':{'service':E,'machine':str(e['machine']),'progress':D,'allocation':C,'discount':str(e['discount']),'amount':I,'amount_display':J['display'],'amount_tip':J['tip'],'owner':ownerAddr(e['builder']??e['owner']),'claimed_by':str(e['claimed_by']),'required_info':str(e['required_info']),'time':num(e['time'])},'updated_ms':u,'related':H,'allocation_state':w,'progress_current':x,'progress_next':x,'progress_since':y,'escrow_deficit':z,...A!==undefined?{'escrow_deficit_note':A}:{},'items':K,'disputes':arr(e['dispute'])['map'](T=>String(T)),'agents':arr(e['agent'])['map'](T=>String(T)),'data_gaps':h};}if(k==='Arb'){const T=e['indemnity'];let U=null;try{const a3=await query_object_last_updated({'object':f,'network':d,'previous_transaction':str(e['previousTransaction'])});U=a3?.['timestamp_ms']?Number(a3['timestamp_ms'])||null:null;}catch{}const V=str(e['order']);let W=null;if(V)try{const a4=await query_objects({'objects':[V],'network':d}),a5=a4?.['objects']?.[0x0];W=str(a5?.['service']);}catch{}const X=await buildRelatedList(f,f,d,h,'arb'),Y=coinOfTypeRaw(e['type_raw']),Z=str(e['fee']),a0=await formatMoneyAnnotation(Z,Y,d),a1=T?str(T['amount']):null,a2=await formatMoneyAnnotation(a1,Y,d);return{'action':'object_panorama','object':f,'object_type':'Arb','network':d,'head':j,'coin_type':Y,'fields':{'arbitration':str(e['arbitration']),'order':str(e['order']),'service':W,'fee':Z,'fee_display':a0['display'],'fee_tip':a0['tip'],'feedback':str(e['feedback']),'indemnity':T?{'amount':a1,'amount_display':a2['display'],'amount_tip':a2['tip'],'time':num(T['time'])}:null,'voting_deadline':num(e['voting_deadline']),'objection':str(e['objection']),'status':ARB_STATUS_NAMES[num(e['status'])??-0x1]??str(e['status']),'compensation_time':num(e['compensation_time']),'time':num(e['time']),'type_raw':str(e['type_raw'])},'voted':arr(e['voted'])['map'](a6=>{const a7=a6;return{'voter':str(a7['voter'])??'','agrees':arr(a7['agrees'])['map'](a8=>Number(a8)),'weight':num(a7['weight'])??0x0,'time':num(a7['time'])??0x0};}),'proposition':arr(e['proposition'])['map'](a6=>{const a7=a6;return{'name':str(a7['name'])??'','votes':num(a7['votes'])??0x0};}),'related':X,'updated_ms':U,'freshness':freshnessOf(e),'data_gaps':h};}if(k==='Arbitration'){const a6=coinOfTypeRaw(e['type_raw']??e['type']),a7=str(e['fee']),a8=await formatMoneyAnnotation(a7,a6,d),a9=str(e['balance']),aa=await formatMoneyAnnotation(a9,a6,d),ab=ae=>{if(ae&&typeof ae==='object'){const af=ae;if(af['GuardIdentifier']!==undefined)return'guard\x20identifier\x20#'+String(af['GuardIdentifier']);if(af['FixedValue']!==undefined)return'fixed\x20weight\x20'+String(af['FixedValue']);}return typeof ae==='number'||typeof ae==='string'?String(ae):null;},ac=arr(e['voting_guard'])['map'](ae=>{const af=ae;return{'guard':str(af['guard'])??'','vote_weight':ab(af['vote_weight'])};}),ad={'count':0x0,'window_saturated':![],'preview_truncated':![],'stats':{'first_created_ms':null,'last_created_ms':null},'items':[]};try{const ae=await enumerateArbs(d,{'arbitration':f,'no_cache':!![],'max_objects':0xc8}),af=ae['arbs']??[];ad['window_saturated']=ae['has_more']===!![],ad['count']=ae['total_enumerated']??af['length'];for(const ah of af){const ai=Number(ah?.['time']);if(Number['isFinite'](ai)&&ai>0x0){if(ad['stats']['first_created_ms']===null||ai<ad['stats']['first_created_ms'])ad['stats']['first_created_ms']=ai;if(ad['stats']['last_created_ms']===null||ai>ad['stats']['last_created_ms'])ad['stats']['last_created_ms']=ai;}}const ag=af['slice'](-0x3)['reverse']();for(const aj of ag){const ak=str(aj?.['object'])??str(aj?.['id'])??'';if(!ak)continue;const al=Number(aj?.['status']);ad['items']['push']({'arb':ak,'order':str(aj?.['order'])??null,'status':ARB_STATUS_NAMES[al]??str(aj?.['status'])??null,'time':Number['isFinite'](Number(aj?.['time']))?Number(aj?.['time']):null});}ad['preview_truncated']=ad['count']>ad['items']['length'],ad['preview_truncated']&&(ad['drilldown']={'total_count':ad['count'],'analyzed_count':ad['items']['length'],'prompt':'Analyze\x20ALL\x20dispute\x20cases\x20of\x20Arbitration\x20'+f+'\x20('+d+')\x20one\x20by\x20one,\x20newest\x20first.\x20'+('The\x20cases\x20live\x20on\x20the\x20arbitration\x27s\x20CORE\x20affiliation\x20window\x20(enumerateArbs\x20is\x20the\x20authoritative\x20source\x20—\x20currently\x20'+ad['count']+(ad['window_saturated']?',\x20more\x20pages\x20beyond\x20this\x20window':'')+').\x20')+'For\x20each\x20case\x20call\x20object_panorama\x20with\x20the\x20Arb\x20case\x27s\x20FULL\x200x\x20address\x20(collect\x20the\x20addresses\x20from\x20the\x20same\x20enumeration\x20source;\x20work\x20newest-first)\x20and\x20render\x20ONE\x20table\x20row\x20per\x20case:\x20'+'case\x20address\x20chip\x20(first\x20column)\x20|\x20disputed\x20order\x20address\x20chip\x20ON\x20THE\x20SAME\x20ROW\x20(the\x20order\x20is\x20the\x20case\x27s\x20child\x20plane)\x20|\x20status\x20|\x20created\x20(local\x20date)\x20|\x20indemnity\x20(the\x20display\x20value\x20with\x20its\x20token\x20symbol\x20—\x20never\x20reconvert\x20from\x20raw)\x20|\x20arbitrator\x20feedback.\x20'+'Close\x20with\x20the\x203\x20most\x20valuable\x20patterns\x20across\x20the\x20rows\x20(outcomes,\x20indemnity\x20distribution,\x20case\x20age).\x20Cases\x20only\x20—\x20do\x20not\x20re-analyze\x20the\x20Arbitration\x20itself.'});}catch{h['push']('cases:\x20affiliation-window\x20lookup\x20failed\x20(non-blocking)');}return{'action':'object_panorama','object':f,'object_type':'Arbitration','network':d,'head':j,'coin_type':a6,'fields':{'location':str(e['location']),'um':str(e['um']),'permission':str(e['permission']),'fee':a7,'fee_display':a8['display'],'fee_tip':a8['tip'],'balance':a9,'balance_display':aa['display'],'balance_tip':aa['tip'],'paused':typeof e['bPaused']==='boolean'?e['bPaused']:null,'usage_guard':str(e['usage_guard'])},'voting_guards':ac,'cases':ad,'data_gaps':h};}if(k==='Repository')return{'action':'object_panorama','object':f,'object_type':'Repository','network':d,'head':j,'fields':{'um':str(e['um']),'permission':str(e['permission']),'data_count':num(e['data_count'])},'policies':arr(e['policies'])['map'](am=>{const an=am,ao=arr(an['write_guard'])['map'](ap=>{const aq=ap,ar=typeof ap==='string'?ap:aq?.['guard'];return typeof ar==='string'&&ar['startsWith']('0x')?ar['toLowerCase']():null;})['filter'](ap=>ap!==null);return{'name':str(an['name'])??'','description':str(an['description']),'id_from':str(an['id_from']),'value_type':str(an['value_type']),'write_guards':arr(an['write_guard'])['length'],'write_guard_addresses':ao,'quote_guard':str(an['quote_guard']),'write_once':an['write_once']===!![]};}),'rewards':arr(e['rewards'])['map'](am=>String(am)),'data_entries':await buildRepositoryData(f,d,h),'data_gaps':h};if(k==='Proof'){const am=au=>typeof au==='string'&&au?createHash('sha256')['update'](au)['digest']('hex')['slice'](0x0,0x10):null,an=str(e['server_pubkey']),ao=str(e['server_signature']),ap=num(e['time']),aq=num(e['proof_type']),ar=str(e['proof']),as={'action':'object_panorama','object':f,'object_type':'Proof','network':d,'head':j,'fields':{'description':str(e['description']),'anchored_root':ar,'item_count':num(e['item_count']),'proof_type':aq,'proof_type_label':aq===0x1?'1\x20=\x20WTS\x20message\x20proof\x20(WOWOK_WTS_PROOF_TYPE)\x20—\x20convention,\x20not\x20chain-validated':(aq??'unset')+'\x20—\x20unvalidated\x20by\x20the\x20contract\x20(the\x20contract\x20checks\x20lengths,\x20not\x20type)','about':ownerAddr(e['about_address']??e['about']),'signer':ownerAddr(e['signer'])??str(e['signer']),'time_ms':ap,'time_iso':ap!==null?new Date(ap)['toISOString']():null},'server_pubkey':{'present':!!an,'length':an?an['length']:null,'fingerprint':am(e['server_pubkey'])},'server_signature':{'present':!!ao,'length':ao?ao['length']:null,'fingerprint':am(e['server_signature'])},'data_gaps':[...h,'server_pubkey\x20/\x20server_signature\x20are\x20shown\x20as\x20sha256\x20fingerprints\x20+\x20length\x20only\x20(a\x20signature\x20is\x20up\x20to\x2040,480\x20bytes)\x20—\x20pass\x20wts_file_path\x20to\x20have\x20this\x20Proof\x20compared\x20against\x20the\x20packet\x20instead\x20of\x20copying\x20the\x20material\x20out']},at=b['wts_file_path'];if(at){const au=await readWtsDocument(at);au===undefined?as['wts_anchor_check']={'root_matched':![],'matched_leaf_indices':[],'key_matched':![],'anchored_before_packet':null,'verdict':'wts_file_path\x20\x22'+at+'\x22\x20could\x20not\x20be\x20read\x20as\x20a\x20local\x20JSON\x20WTS\x20packet\x20—\x20no\x20cross-check\x20performed.'}:as['wts_anchor_check']=checkWtsProofAnchor(au,{'proof':ar,'server_pubkey':an,'time':ap,'signer':as['fields']['signer'],'address':f});}return as;}if(k==='Allocation'){const av=str(e['balance']);let aw=coinOfTypeRaw(e['type_raw']??e['type']);const ax=arr(e['allocators']),ay=e['allocators'],az=str(ay?.['threshold'])??str(e['threshold']);if(!aw){const aF=str(e['payment_info']?.['for_object']);if(aF)try{const aG=await query_objects({'objects':[aF],'network':d}),aH=(aG?.['objects']??[])['find'](aJ=>aJ?.['object']===aF),aI=str(aH?.['service']);if(aI){const aJ=await query_objects({'objects':[aI],'network':d}),aK=(aJ?.['objects']??[])['find'](aL=>aL?.['object']===aI);aw=coinOfTypeRaw(aK?.['type_raw']??aK?.['type']);}}catch{}}const aA=await formatMoneyAnnotation(av,aw,d),aB=e['payment_info'],aC={0x0:'0=Amount\x20(fixed\x20raw\x20units)',0x1:'1=Rate\x20(per-10000\x20of\x20the\x20pool\x20base)',0x2:'2=Surplus\x20(everything\x20left\x20after\x20fixed\x20rows)',0x3:'3=RateGross\x20(per-10000\x20of\x20the\x20GROSS\x20pool)'},aD=await buildRelatedList(f,f,d,h,'allocation');let aE=null;try{const aL=await query_object_last_updated({'object':f,'network':d,'previous_transaction':str(e['previousTransaction'])});aE=aL?.['timestamp_ms']?Number(aL['timestamp_ms'])||null:null;}catch{}return{'action':'object_panorama','object':f,'object_type':'Allocation','network':d,'head':j,'coin_type':aw,'fields':{'balance':av,'balance_display':aA['display'],'balance_tip':aA['tip'],'threshold':az,'for_object':str(aB?.['for_object']),'for_guard':str(aB?.['for_guard']),'remark':str(aB?.['remark']),'index':str(aB?.['index'])},'allocators':ax['map'](aM=>{const aN=aM;return{'guard':str(aN['guard']),'sharing':arr(aN['sharing'])['map'](aO=>{const aP=aO,aQ=aP['who'];let aR='unknown',aS=null;if(aQ&&typeof aQ==='object'){if(typeof aQ['GuardIdentifier']==='number'||typeof aQ['GuardIdentifier']==='string')aR='guard_identifier',aS=num(aQ['GuardIdentifier']);else{if(aQ['Entity']&&typeof aQ['Entity']==='object')aR='entity',aS=str(aQ['Entity']['name_or_address']);else typeof aQ['Signer']==='string'&&(aR='signer',aS=aQ['Signer']);}}const aT=num(aP['mode']);return{'who_kind':aR,'who_value':aS,'resolution_note':aR==='guard_identifier'?'slot\x20'+String(aS)+':\x20reads\x20the\x20rail\x20guard\x27s\x20SUBMITTED\x20value\x20for\x20this\x20slot\x20at\x20spend\x20time\x20(order-scoped\x20rails\x20submit\x20the\x20Order\x20address\x20—\x20for_object\x20above).\x20A\x20STATIC\x20row\x20in\x20this\x20slot\x20is\x20the\x20F21\x20bricked\x20shape;\x20cross-check\x20the\x20guard\x27s\x20declared\x20submission\x20slots.':aR==='entity'?'static\x20address:\x20pins\x20this\x20literal\x20recipient\x20regardless\x20of\x20the\x20guard\x27s\x20submitted\x20slots.':aR==='signer'?'signer:\x20resolves\x20to\x20whoever\x20executes\x20the\x20spend\x20transaction.':'unrecognized\x20recipient\x20variant\x20—\x20SDK\x20decode\x20gap;\x20report\x20with\x20the\x20raw\x20object.','sharing':str(aP['sharing']),'mode':aT,'mode_label':aC[aT??-0x1]??(aT??'?')+'\x20=\x20unrecognized\x20mode'};})};}),'updated_ms':aE,'related':aD,'data_gaps':h};}if(k==='Reward'){const aM=coinOfTypeRaw(e['type_raw']??k),aN=str(e['balance']);let aO={'display':null,'tip':null};try{aO=await formatMoneyAnnotation(aN,aM,d);}catch{}const aP=[];for(const aQ of arr(e['guards'])){const aR=aQ,aS=aR?.['amount'],aT=aS!=null&&(aS['type']===0x1||aS['type']==='Fixed'),aU=aS!=null&&(aS['type']===0x2||aS['type']==='GuardU64Identifier'),aV=num(aR?.['expiration_time']);aP['push']({'guard':str(aR?.['guard'])??'','amount_type':aT?'fixed':aU?'guard_submission':'unknown','amount':aT?str(aS?.['value']):aU?'submission\x20identifier\x20'+(str(aS?.['value'])??'?'):null,'amount_display':aT?(await formatMoneyAnnotation(str(aS?.['value']),aM,d))['display']:null,'expiration_time':aV,'expiration_display':aV!=null?new Date(aV)['toISOString']():null,'expired':aV!=null?Date['now']()>aV:null});}return{'action':'object_panorama','object':f,'object_type':'Reward','network':d,'head':j,'freshness':freshnessOf(e),'coin_type':aM,'fields':{'pool_balance':aN,'pool_balance_display':aO['display'],'claims':aP},'claim_records':{'count':null,'note':'Claim\x20history\x20is\x20recipient-keyed\x20on\x20this\x20Reward\x27s\x20table\x20—\x20read\x20via\x20onchain_table\x20(parent\x20=\x20this\x20Reward\x20address).'},'data_gaps':h};}return h['push']('No\x20semantic\x20decoder\x20for\x20type\x20\x27'+(k||'unknown')+'\x27\x20—\x20fields\x20below\x20are\x20the\x20RAW\x20on-chain\x20payload,\x20not\x20interpreted.\x20'+'Semantic\x20decoders\x20exist\x20for:\x20Progress\x20/\x20Demand\x20/\x20Order\x20/\x20Allocation\x20/\x20Arb\x20/\x20Arbitration\x20/\x20Repository\x20/\x20Reward\x20/\x20Proof.'),{'action':'object_panorama','object':f,'network':d,'head':j,'freshness':freshnessOf(e),'object_type':'Unknown','raw_type':k||'unknown','coin_type':coinOfTypeRaw(k),'fields':js(e),'data_gaps':h};}
1
+ import{Config,LocalMark,query_objects,query_object_last_updated,query_table,objectTypeFromAddress}from'@wowok/wowok';import{createHash}from'node:crypto';import{checkWtsProofAnchor,readWtsDocument}from'../../communication/wts-attestation.js';import{resolveAddress as a422a}from'../../tools/handlers/name-resolution.js';import{parseStructuredLines,firstStructuredValue}from'../../evaluation/structured-lines.js';import{batchReadAddressKeyedFields,batchQueryObjectsByIds,batchQueryTableItems,fetchObjectLinkerTx,ringWindowSaturated}from'../../graph/onchain/sdk-batch.js';import{enumerateArbs}from'../../knowledge/jsonrpc-enum.js';import{formatMoneyAnnotation}from'./facet-money.js';const js=a=>{if(typeof a==='bigint')return a['toString']();if(a&&typeof a==='object'&&!Array['isArray'](a)){const b={};for(const [c,d]of Object['entries'](a)){b[c]=js(d);}return b;}if(Array['isArray'](a))return a['map'](js);return a;},str=a=>a===null||a===undefined?null:String(a);function freshnessOf(a){const b=a?a['version']??a['data']?.['version']:undefined;return{'read_at_ms':Date['now'](),'version':b===undefined||b===null||String(b)===''?null:String(b),'note':'live\x20read\x20(cache\x20bypassed);\x20a\x20read\x20issued\x20in\x20the\x20same\x20second\x20as\x20a\x20committing\x20transaction\x20can\x20trail\x20the\x20committed\x20effect\x20by\x20one\x20checkpoint\x20—\x20if\x20any\x20field\x20contradicts\x20a\x20transaction\x20just\x20submitted,\x20re-query\x20once\x20(compare\x20version\x20across\x20reads)\x20before\x20concluding'};}const 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'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;},num=a=>{if(typeof a==='bigint')return Number(a);if(typeof a==='number')return Number['isFinite'](a)?a:null;if(typeof a==='string'&&a['trim']()!==''){const b=Number(a);return Number['isFinite'](b)?b:null;}return null;},arr=a=>Array['isArray'](a)?a:[],scalarValueStr=a=>{if(a==null)return null;if(typeof a==='string')return a;if(typeof a==='number'||typeof a==='boolean')return String(a);if(typeof a==='bigint')return a['toString']();if(a instanceof Uint8Array)try{return new TextDecoder()['decode'](a);}catch{return Array['from'](a['slice'](0x0,0x20))['map'](c=>c['toString'](0x10)['padStart'](0x2,'0'))['join']('')+(a['length']>0x20?'...':'');}try{return JSON['stringify'](a,(b,c)=>typeof c==='bigint'?c['toString']():c);}catch{return null;}};export function coinOfTypeRaw(a){if(typeof a!=='string'||!a)return null;const b=a['match'](/<(.+)>$/),c=b?.[0x1]?.['trim']();return c&&c['includes']('::')?c:null;}const RELATED_PREVIEW_CAP=0x32;async function buildRelatedList(a,b,c,d,e){const f={'key':a,'items':[],'count':0x0,'window_saturated':![],'preview_truncated':![]};if(!a)return f;try{const g=await fetchObjectLinkerTx(a,c,!![]),h=g?.['items']??[];f['window_saturated']=ringWindowSaturated(h['length']);const j=[];for(const k of h){const l=typeof k?.['who']==='string'?k['who']:'';if(!l||l['toLowerCase']()===b['toLowerCase']())continue;let m;try{m=objectTypeFromAddress(l);}catch{}if(!m)continue;j['push']({'address':l,'object_type':m,'time':typeof k?.['time']==='number'?k['time']:null});}f['count']=j['length'],f['items']=j['slice'](-RELATED_PREVIEW_CAP)['reverse'](),f['preview_truncated']=j['length']>f['items']['length'];}catch{d['push']('related:\x20ObjectLinkerTx('+e+')\x20lookup\x20failed');}return f;}const ARB_STATUS_NAMES={0x0:'Principal_confirming',0x1:'Arbitrator_confirming',0x2:'Voting',0x3:'Arbitrated',0x4:'Objectionable',0x5:'Finished',0x6:'Withdrawn'};async function resolveObject(a,b,c=!![]){const d=await a422a(a,'object_address');let f=b??undefined,g=null;if(!f)f=await Config['Instance']()['network_get']();try{const h=await query_objects({'objects':[d],'network':f,...c?{'no_cache':!![]}:{}});g=h?.['objects']?.[0x0]??null;if(!g&&b){const i=await Config['Instance']()['network_get']();if(i&&i!==f){const j=await query_objects({'objects':[d],'network':i,'no_cache':!![]}),k=j?.['objects']?.[0x0]??null;k&&(g=k,f=i);}}}catch(l){throw new Error('Failed\x20to\x20query\x20'+d+'\x20on\x20'+f+':\x20'+(l instanceof Error?l['message']:String(l)));}if(!g)throw new Error(d+'\x20not\x20found\x20on\x20'+f+(b?'':'\x20(session\x20default\x20network\x20—\x20not\x20an\x20explicit\x20request)')+'.\x20Verify\x20BOTH\x20the\x20object\x20ID\x20and\x20the\x20network:\x20an\x20object\x20that\x20exists\x20on\x20'+'one\x20network\x20answers\x20\x22not\x20found\x22\x20on\x20the\x20other.\x20Pass\x20context_network\x20'+'to\x20query\x20a\x20specific\x20network\x20before\x20concluding\x20the\x20object\x20does\x20not\x20exist.');return g['object']=g['object']??d,{'network':String(f),'obj':g};}async function resolveHead(a,b,c){let d=null,e=[];try{const f=await LocalMark['Instance']()['list']({'address':a});f['length']>0x0&&(d=f[0x0]['name']??null,e=(f[0x0]['tags']??[])['map'](g=>String(g)));}catch{c['push']('head:\x20LocalMark\x20lookup\x20failed');}return{'name':d,'tags':e,'description':str(b['description'])};}async function buildPresenters(a,b,c){const d=[];let e=0x0,f=![];const g=0xc8;let h=![];try{const {items:i,truncated:j}=await batchQueryTableItems(a,{'network':b,'noCache':!![],'maxItems':g});f=j;const k=i['map'](m=>m['object'])['filter'](m=>m?.['type']==='TableItem_DemandPresenter');e=k['length'];const l=k['map'](m=>({'presenter':str(m?.['address'])??'','service':str(m?.['service'])??'','recommend':str(m?.['recommend']),'acceptance_score':num(m?.['acceptance_score']),'feedback':str(m?.['feedback']),'feedback_time':num(m?.['feedback_time']),'update_time':num(m?.['update_time'])}))['sort']((m,n)=>(n['update_time']??0x0)-(m['update_time']??0x0))['slice'](0x0,0x32);for(const m of l){const n=parseStructuredLines(m['recommend']??'');d['push']({'presenter':m['presenter'],'service':m['service'],'recommend':m['recommend'],'acceptance_score':m['acceptance_score'],'feedback':m['feedback'],'feedback_time':m['feedback_time'],'update_time':m['update_time'],'structured':n,'quote':firstStructuredValue(n,['quote','price']),'score_covers_current_service':m['acceptance_score']==null?null:m['feedback_time']!=null&&m['update_time']!=null?m['feedback_time']>=m['update_time']:null});}}catch{h=!![];}if(h&&d['length']===0x0){try{const o=await fetchObjectLinkerTx(a,b,!![]),p=Array['isArray'](o?.['items'])?o['items']:[];f=ringWindowSaturated(p['length']);const q=p['map'](v=>({'who':String(v?.['who']??''),'time':typeof v?.['time']==='number'?v['time']:null}))['filter'](v=>v['who']['startsWith']('0x'));e=q['length'];const t=q['slice'](-0x32)['reverse'](),u=await batchReadAddressKeyedFields(a,t['map'](v=>v['who']),b,!![]);for(const v of t){const w=u['get'](v['who']['toLowerCase']()),x=num(w?.['acceptance_score']),y=num(w?.['feedback_time']),z=num(w?.['update_time'])??v['time'],A=str(w?.['recommend']),B=parseStructuredLines(A);d['push']({'presenter':v['who'],'service':str(w?.['service'])??'','recommend':A,'acceptance_score':x,'feedback':str(w?.['feedback']),'feedback_time':y,'update_time':z,'structured':B,'quote':firstStructuredValue(B,['quote','price']),'score_covers_current_service':x==null?null:y!=null&&z!=null?y>=z:null});}}catch{return c['push']('presenters:\x20presenter-table\x20walk\x20and\x20tx-ring\x20fallback\x20both\x20failed\x20(non-blocking)'),{'count':e,'window_saturated':f,'preview_truncated':e>d['length'],'items':d};}c['push']('presenters:\x20presenter-table\x20walk\x20failed;\x20served\x20tx-ring\x20fallback\x20rows');}return{'count':e,'window_saturated':f,'preview_truncated':e>d['length'],'items':d};}export async function buildRepositoryData(a,b,c){const d=0x32,f=0xc8,g=0x32,h=[];let i=0x0,j=!![];try{const l=[];let m=null;for(;;){const n=await query_table({'parent':a,'cursor':m,'limit':g,'no_cache':!![],'network':b}),o=Array['isArray'](n?.['items'])?n['items']:[];for(const p of o){if(typeof p?.['object']==='string')l['push'](p['object']);}i+=o['length'];if(n?.['hasNextPage']===!![]&&typeof n?.['nextCursor']==='string'&&i<f){m=n['nextCursor'];continue;}j=n?.['hasNextPage']!==!![];break;}if(l['length']>0x0){const q=await batchQueryObjectsByIds(l,b,!![]);for(const s of Array['isArray'](q)?q:[]){const t=s,u=t?.['data'];if(t?.['entity']===undefined&&t?.['name']===undefined)continue;h['push']({'entity':str(t?.['entity']),'name':str(t?.['name']),'value':scalarValueStr(u?.['value']??t?.['value']),'value_type':str(u?.['value_type'])});}}}catch(v){return c['push']('data:\x20table\x20enumeration\x20failed\x20('+(v instanceof Error?v['message']:String(v))+')\x20—\x20entries\x20below\x20are\x20NOT\x20the\x20full\x20set;\x20audit\x20via\x20onchain_table\x20(parent\x20=\x20this\x20Repository).'),{'count':null,'items':h['slice'](0x0,d)};}if(i===0x0)return{'count':0x0,'items':[]};const k=h['slice'](0x0,d);return(!j||i>d)&&c['push']('data:\x20showing\x20'+k['length']+'\x20of\x20'+i+'\x20row(s)'+(j?'':'\x20(walk\x20capped\x20at\x20'+f+')')+'\x20—\x20full\x20audit\x20via\x20onchain_table\x20(parent\x20=\x20this\x20Repository).'),{'count':i,'items':k};}export async function handleObjectPanorama(b){const c=b['object_address']??b['filter']??b['object']??b['service_address'];if(!c)throw new Error('\x27object_address\x27\x20is\x20required\x20for\x20object_panorama\x20(a\x20LocalMark\x20NAME\x20is\x20also\x20accepted;\x20\x27object\x27\x20and\x20\x27service_address\x27\x20are\x20tolerated\x20as\x20aliases).\x20Example:\x20{\x22query_type\x22:\x20\x22object_panorama\x22,\x20\x22object_address\x22:\x20\x220x...\x22}');const {network:d,obj:e}=await resolveObject(c,b['context_network'],b['no_cache']!==![]),f=String(e['object']),h=[],j=await resolveHead(f,e,h),k=String(e['type']??'');if(k==='Progress'){const l=arr(e['session'])[0x0],m=l?{'next_node':str(l['next_node']),'weights':num(l['weights']),'threshold':num(l['threshold']),'forwards':arr(l['forwards'])['map'](q=>{const r=q;return{'forward':str(r['forward'])??'','who':str(r['who']),'accomplished':r['accomplished']===!![],'msg':str(r['msg']),'time':num(r['time'])};})}:null,n=await buildRelatedList(typeof e['machine']==='string'?e['machine']:null,f,d,h,'machine');return{'action':'object_panorama','object':f,'object_type':'Progress','network':d,'head':j,'fields':{'machine':str(e['machine']),'current':str(e['current']),'task':str(e['task']),'history_count':num(e['history_count']),'current_time':num(e['current_time'])},'context_repositories':arr(e['context_repositories'])['map'](q=>String(q)),'operators':arr(e['namedOperator'])['map'](q=>{const r=q;return{'name':str(r['name'])??'','operators':arr(r['operators'])['map'](u=>String(u))};}),'session':m,'related':n,'freshness':freshnessOf(e),'data_gaps':h};}if(k==='Demand'){const q=num(e['presenters_count']),r=await buildPresenters(f,d,h);return q!=null&&q>0x0&&r['count']===0x0&&h['push']('presenters:\x20the\x20Demand\x20object\x20reports\x20'+q+'\x20presenter(s)\x20on-chain,\x20but\x20the\x20'+'presenter-table\x20walk\x20returned\x20NONE\x20—\x20this\x20is\x20a\x20READ\x20GAP,\x20not\x20an\x20absence.\x20Presenter\x20reputation\x20'+'(acceptance_score\x20/\x20feedback)\x20is\x20UNREADABLE\x20here;\x20verify\x20via\x20onchain_table\x20on\x20the\x20DemandPresenter\x20'+'entries\x20before\x20any\x20match/recall\x20decision'),{'action':'object_panorama','object':f,'object_type':'Demand','network':d,'head':j,'fields':{'location':str(e['location']),'um':str(e['um']),'permission':str(e['permission']),'presenters_count':q},'rewards':arr(e['rewards'])['map'](u=>String(u)),'guards':arr(e['guards'])['map'](u=>({'guard':str(u['guard'])??''})),'presenters':r,'data_gaps':h};}if(k==='Order'){let u=null;try{const L=await query_object_last_updated({'object':f,'network':d,'previous_transaction':str(e['previousTransaction'])});u=L?.['timestamp_ms']?Number(L['timestamp_ms'])||null:null;}catch{}let w='none',x=null,y=null,z=null,A,B=null;const C=str(e['allocation']),D=str(e['progress']),E=str(e['service']),F=[C,D,E]['filter'](M=>!!M);let G=null;if(F['length']>0x0)try{const M=await query_objects({'objects':F,'network':d}),N=M?.['objects']??[];if(C){w='pending';const O=N['find'](Q=>Q?.['object']===C),P=Number(O?.['balance']??NaN);B=Number['isFinite'](P)?P:null,Number['isFinite'](P)&&P===0x0&&(w='allocated');}if(D){const Q=N['find'](R=>R?.['object']===D);x=str(Q?.['current']),y=num(Q?.['current_time']);}if(E){const R=N['find'](S=>S?.['object']===E);G=coinOfTypeRaw(R?.['type_raw']??R?.['type']);}}catch{}const H=await buildRelatedList(f,f,d,h,'order'),I=str(e['amount']);if(w==='allocated')z='0';else{if(w==='pending'&&B!==null){const S=Number(I||NaN);Number['isFinite'](S)?z=String(Math['max'](0x0,S-B)):A='order\x20amount\x20unreadable\x20—\x20deficit\x20not\x20computable';}else w==='pending'?A='allocation\x20balance\x20unavailable\x20(read\x20failed)\x20—\x20deficit\x20not\x20computable':A='no\x20Allocation\x20bound\x20to\x20this\x20order\x20—\x20no\x20escrow\x20pool\x20exists';}const J=await formatMoneyAnnotation(I,G,d),K=await Promise['all'](arr(e['items'])['map'](async T=>{const U=T,V=str(U['price']),W=await formatMoneyAnnotation(V,G,d);return{'name':str(U['name']),'price':V,'price_display':W['display'],'price_tip':W['tip'],'quantity':str(U['quantity']),'wip_hash':str(U['wip_hash'])};}));return{'action':'object_panorama','object':f,'object_type':'Order','network':d,'head':j,'coin_type':G,'fields':{'service':E,'machine':str(e['machine']),'progress':D,'allocation':C,'discount':str(e['discount']),'amount':I,'amount_display':J['display'],'amount_tip':J['tip'],'owner':ownerAddr(e['builder']??e['owner']),'claimed_by':str(e['claimed_by']),'required_info':str(e['required_info']),'time':num(e['time'])},'updated_ms':u,'related':H,'allocation_state':w,'progress_current':x,'progress_next':x,'progress_since':y,'escrow_deficit':z,...A!==undefined?{'escrow_deficit_note':A}:{},'items':K,'disputes':arr(e['dispute'])['map'](T=>String(T)),'agents':arr(e['agent'])['map'](T=>String(T)),'data_gaps':h};}if(k==='Arb'){const T=e['indemnity'];let U=null;try{const a3=await query_object_last_updated({'object':f,'network':d,'previous_transaction':str(e['previousTransaction'])});U=a3?.['timestamp_ms']?Number(a3['timestamp_ms'])||null:null;}catch{}const V=str(e['order']);let W=null;if(V)try{const a4=await query_objects({'objects':[V],'network':d}),a5=a4?.['objects']?.[0x0];W=str(a5?.['service']);}catch{}const X=await buildRelatedList(f,f,d,h,'arb'),Y=coinOfTypeRaw(e['type_raw']),Z=str(e['fee']),a0=await formatMoneyAnnotation(Z,Y,d),a1=T?str(T['amount']):null,a2=await formatMoneyAnnotation(a1,Y,d);return{'action':'object_panorama','object':f,'object_type':'Arb','network':d,'head':j,'coin_type':Y,'fields':{'arbitration':str(e['arbitration']),'order':str(e['order']),'service':W,'fee':Z,'fee_display':a0['display'],'fee_tip':a0['tip'],'feedback':str(e['feedback']),'indemnity':T?{'amount':a1,'amount_display':a2['display'],'amount_tip':a2['tip'],'time':num(T['time'])}:null,'voting_deadline':num(e['voting_deadline']),'objection':str(e['objection']),'status':ARB_STATUS_NAMES[num(e['status'])??-0x1]??str(e['status']),'compensation_time':num(e['compensation_time']),'time':num(e['time']),'type_raw':str(e['type_raw'])},'voted':arr(e['voted'])['map'](a6=>{const a7=a6;return{'voter':str(a7['voter'])??'','agrees':arr(a7['agrees'])['map'](a8=>Number(a8)),'weight':num(a7['weight'])??0x0,'time':num(a7['time'])??0x0};}),'proposition':arr(e['proposition'])['map'](a6=>{const a7=a6;return{'name':str(a7['name'])??'','votes':num(a7['votes'])??0x0};}),'related':X,'updated_ms':U,'freshness':freshnessOf(e),'data_gaps':h};}if(k==='Arbitration'){const a6=coinOfTypeRaw(e['type_raw']??e['type']),a7=str(e['fee']),a8=await formatMoneyAnnotation(a7,a6,d),a9=str(e['balance']),aa=await formatMoneyAnnotation(a9,a6,d),ab=ae=>{if(ae&&typeof ae==='object'){const af=ae;if(af['GuardIdentifier']!==undefined)return'guard\x20identifier\x20#'+String(af['GuardIdentifier']);if(af['FixedValue']!==undefined)return'fixed\x20weight\x20'+String(af['FixedValue']);}return typeof ae==='number'||typeof ae==='string'?String(ae):null;},ac=arr(e['voting_guard'])['map'](ae=>{const af=ae;return{'guard':str(af['guard'])??'','vote_weight':ab(af['vote_weight'])};}),ad={'count':0x0,'window_saturated':![],'preview_truncated':![],'stats':{'first_created_ms':null,'last_created_ms':null},'items':[]};try{const ae=await enumerateArbs(d,{'arbitration':f,'no_cache':!![],'max_objects':0xc8}),af=ae['arbs']??[];ad['window_saturated']=ae['has_more']===!![],ad['count']=ae['total_enumerated']??af['length'];for(const ah of af){const ai=Number(ah?.['time']);if(Number['isFinite'](ai)&&ai>0x0){if(ad['stats']['first_created_ms']===null||ai<ad['stats']['first_created_ms'])ad['stats']['first_created_ms']=ai;if(ad['stats']['last_created_ms']===null||ai>ad['stats']['last_created_ms'])ad['stats']['last_created_ms']=ai;}}const ag=af['slice'](-0x3)['reverse']();for(const aj of ag){const ak=str(aj?.['object'])??str(aj?.['id'])??'';if(!ak)continue;const al=Number(aj?.['status']);ad['items']['push']({'arb':ak,'order':str(aj?.['order'])??null,'status':ARB_STATUS_NAMES[al]??str(aj?.['status'])??null,'time':Number['isFinite'](Number(aj?.['time']))?Number(aj?.['time']):null});}ad['preview_truncated']=ad['count']>ad['items']['length'],ad['preview_truncated']&&(ad['drilldown']={'total_count':ad['count'],'analyzed_count':ad['items']['length'],'prompt':'Analyze\x20ALL\x20dispute\x20cases\x20of\x20Arbitration\x20'+f+'\x20('+d+')\x20one\x20by\x20one,\x20newest\x20first.\x20'+('The\x20cases\x20live\x20on\x20the\x20arbitration\x27s\x20CORE\x20affiliation\x20window\x20(enumerateArbs\x20is\x20the\x20authoritative\x20source\x20—\x20currently\x20'+ad['count']+(ad['window_saturated']?',\x20more\x20pages\x20beyond\x20this\x20window':'')+').\x20')+'For\x20each\x20case\x20call\x20object_panorama\x20with\x20the\x20Arb\x20case\x27s\x20FULL\x200x\x20address\x20(collect\x20the\x20addresses\x20from\x20the\x20same\x20enumeration\x20source;\x20work\x20newest-first)\x20and\x20render\x20ONE\x20table\x20row\x20per\x20case:\x20'+'case\x20address\x20chip\x20(first\x20column)\x20|\x20disputed\x20order\x20address\x20chip\x20ON\x20THE\x20SAME\x20ROW\x20(the\x20order\x20is\x20the\x20case\x27s\x20child\x20plane)\x20|\x20status\x20|\x20created\x20(local\x20date)\x20|\x20indemnity\x20(the\x20display\x20value\x20with\x20its\x20token\x20symbol\x20—\x20never\x20reconvert\x20from\x20raw)\x20|\x20arbitrator\x20feedback.\x20'+'Close\x20with\x20the\x203\x20most\x20valuable\x20patterns\x20across\x20the\x20rows\x20(outcomes,\x20indemnity\x20distribution,\x20case\x20age).\x20Cases\x20only\x20—\x20do\x20not\x20re-analyze\x20the\x20Arbitration\x20itself.'});}catch{h['push']('cases:\x20affiliation-window\x20lookup\x20failed\x20(non-blocking)');}return{'action':'object_panorama','object':f,'object_type':'Arbitration','network':d,'head':j,'coin_type':a6,'fields':{'location':str(e['location']),'um':str(e['um']),'permission':str(e['permission']),'fee':a7,'fee_display':a8['display'],'fee_tip':a8['tip'],'balance':a9,'balance_display':aa['display'],'balance_tip':aa['tip'],'paused':typeof e['bPaused']==='boolean'?e['bPaused']:null,'usage_guard':str(e['usage_guard'])},'voting_guards':ac,'cases':ad,'data_gaps':h};}if(k==='Repository')return{'action':'object_panorama','object':f,'object_type':'Repository','network':d,'head':j,'fields':{'um':str(e['um']),'permission':str(e['permission']),'data_count':num(e['data_count'])},'policies':arr(e['policies'])['map'](am=>{const an=am,ao=arr(an['write_guard'])['map'](ap=>{const aq=ap,ar=typeof ap==='string'?ap:aq?.['guard'];return typeof ar==='string'&&ar['startsWith']('0x')?ar['toLowerCase']():null;})['filter'](ap=>ap!==null);return{'name':str(an['name'])??'','description':str(an['description']),'id_from':str(an['id_from']),'value_type':str(an['value_type']),'write_guards':arr(an['write_guard'])['length'],'write_guard_addresses':ao,'quote_guard':str(an['quote_guard']),'write_once':an['write_once']===!![]};}),'rewards':arr(e['rewards'])['map'](am=>String(am)),'data_entries':await buildRepositoryData(f,d,h),'data_gaps':h};if(k==='Proof'){const am=au=>typeof au==='string'&&au?createHash('sha256')['update'](au)['digest']('hex')['slice'](0x0,0x10):null,an=str(e['server_pubkey']),ao=str(e['server_signature']),ap=num(e['time']),aq=num(e['proof_type']),ar=str(e['proof']),as={'action':'object_panorama','object':f,'object_type':'Proof','network':d,'head':j,'fields':{'description':str(e['description']),'anchored_root':ar,'item_count':num(e['item_count']),'proof_type':aq,'proof_type_label':aq===0x1?'1\x20=\x20WTS\x20message\x20proof\x20(WOWOK_WTS_PROOF_TYPE)\x20—\x20convention,\x20not\x20chain-validated':(aq??'unset')+'\x20—\x20unvalidated\x20by\x20the\x20contract\x20(the\x20contract\x20checks\x20lengths,\x20not\x20type)','about':ownerAddr(e['about_address']??e['about']),'signer':ownerAddr(e['signer'])??str(e['signer']),'time_ms':ap,'time_iso':ap!==null?new Date(ap)['toISOString']():null},'server_pubkey':{'present':!!an,'length':an?an['length']:null,'fingerprint':am(e['server_pubkey'])},'server_signature':{'present':!!ao,'length':ao?ao['length']:null,'fingerprint':am(e['server_signature'])},'data_gaps':[...h,'server_pubkey\x20/\x20server_signature\x20are\x20shown\x20as\x20sha256\x20fingerprints\x20+\x20length\x20only\x20(a\x20signature\x20is\x20up\x20to\x2040,480\x20bytes)\x20—\x20pass\x20wts_file_path\x20to\x20have\x20this\x20Proof\x20compared\x20against\x20the\x20packet\x20instead\x20of\x20copying\x20the\x20material\x20out']},at=b['wts_file_path'];if(at){const au=await readWtsDocument(at);au===undefined?as['wts_anchor_check']={'root_matched':![],'matched_leaf_indices':[],'key_matched':![],'anchored_before_packet':null,'verdict':'wts_file_path\x20\x22'+at+'\x22\x20could\x20not\x20be\x20read\x20as\x20a\x20local\x20JSON\x20WTS\x20packet\x20—\x20no\x20cross-check\x20performed.'}:as['wts_anchor_check']=checkWtsProofAnchor(au,{'proof':ar,'server_pubkey':an,'time':ap,'signer':as['fields']['signer'],'address':f});}return as;}if(k==='Allocation'){const av=str(e['balance']);let aw=coinOfTypeRaw(e['type_raw']??e['type']);const ax=arr(e['allocators']),ay=e['allocators'],az=str(ay?.['threshold'])??str(e['threshold']);if(!aw){const aF=str(e['payment_info']?.['for_object']);if(aF)try{const aG=await query_objects({'objects':[aF],'network':d}),aH=(aG?.['objects']??[])['find'](aJ=>aJ?.['object']===aF),aI=str(aH?.['service']);if(aI){const aJ=await query_objects({'objects':[aI],'network':d}),aK=(aJ?.['objects']??[])['find'](aL=>aL?.['object']===aI);aw=coinOfTypeRaw(aK?.['type_raw']??aK?.['type']);}}catch{}}const aA=await formatMoneyAnnotation(av,aw,d),aB=e['payment_info'],aC={0x0:'0=Amount\x20(fixed\x20raw\x20units)',0x1:'1=Rate\x20(per-10000\x20of\x20the\x20pool\x20base)',0x2:'2=Surplus\x20(everything\x20left\x20after\x20fixed\x20rows)',0x3:'3=RateGross\x20(per-10000\x20of\x20the\x20GROSS\x20pool)'},aD=await buildRelatedList(f,f,d,h,'allocation');let aE=null;try{const aL=await query_object_last_updated({'object':f,'network':d,'previous_transaction':str(e['previousTransaction'])});aE=aL?.['timestamp_ms']?Number(aL['timestamp_ms'])||null:null;}catch{}return{'action':'object_panorama','object':f,'object_type':'Allocation','network':d,'head':j,'coin_type':aw,'fields':{'balance':av,'balance_display':aA['display'],'balance_tip':aA['tip'],'threshold':az,'for_object':str(aB?.['for_object']),'for_guard':str(aB?.['for_guard']),'remark':str(aB?.['remark']),'index':str(aB?.['index'])},'allocators':ax['map'](aM=>{const aN=aM;return{'guard':str(aN['guard']),'sharing':arr(aN['sharing'])['map'](aO=>{const aP=aO,aQ=aP['who'];let aR='unknown',aS=null;if(aQ&&typeof aQ==='object'){if(typeof aQ['GuardIdentifier']==='number'||typeof aQ['GuardIdentifier']==='string')aR='guard_identifier',aS=num(aQ['GuardIdentifier']);else{if(aQ['Entity']&&typeof aQ['Entity']==='object')aR='entity',aS=str(aQ['Entity']['name_or_address']);else typeof aQ['Signer']==='string'&&(aR='signer',aS=aQ['Signer']);}}const aT=num(aP['mode']);return{'who_kind':aR,'who_value':aS,'resolution_note':aR==='guard_identifier'?'slot\x20'+String(aS)+':\x20reads\x20the\x20rail\x20guard\x27s\x20SUBMITTED\x20value\x20for\x20this\x20slot\x20at\x20spend\x20time\x20(order-scoped\x20rails\x20submit\x20the\x20Order\x20address\x20—\x20for_object\x20above).\x20A\x20STATIC\x20row\x20in\x20this\x20slot\x20is\x20the\x20F21\x20bricked\x20shape;\x20cross-check\x20the\x20guard\x27s\x20declared\x20submission\x20slots.':aR==='entity'?'static\x20address:\x20pins\x20this\x20literal\x20recipient\x20regardless\x20of\x20the\x20guard\x27s\x20submitted\x20slots.':aR==='signer'?'signer:\x20resolves\x20to\x20whoever\x20executes\x20the\x20spend\x20transaction.':'unrecognized\x20recipient\x20variant\x20—\x20SDK\x20decode\x20gap;\x20report\x20with\x20the\x20raw\x20object.','sharing':str(aP['sharing']),'mode':aT,'mode_label':aC[aT??-0x1]??(aT??'?')+'\x20=\x20unrecognized\x20mode'};})};}),'updated_ms':aE,'related':aD,'data_gaps':h};}if(k==='Reward'){const aM=coinOfTypeRaw(e['type_raw']??k),aN=str(e['balance']);let aO={'display':null,'tip':null};try{aO=await formatMoneyAnnotation(aN,aM,d);}catch{}const aP=[];for(const aQ of arr(e['guards'])){const aR=aQ,aS=aR?.['amount'],aT=aS!=null&&(aS['type']===0x1||aS['type']==='Fixed'),aU=aS!=null&&(aS['type']===0x2||aS['type']==='GuardU64Identifier'),aV=num(aR?.['expiration_time']);aP['push']({'guard':str(aR?.['guard'])??'','amount_type':aT?'fixed':aU?'guard_submission':'unknown','amount':aT?str(aS?.['value']):aU?'submission\x20identifier\x20'+(str(aS?.['value'])??'?'):null,'amount_display':aT?(await formatMoneyAnnotation(str(aS?.['value']),aM,d))['display']:null,'expiration_time':aV,'expiration_display':aV!=null?new Date(aV)['toISOString']():null,'expired':aV!=null?Date['now']()>aV:null});}return{'action':'object_panorama','object':f,'object_type':'Reward','network':d,'head':j,'freshness':freshnessOf(e),'coin_type':aM,'fields':{'pool_balance':aN,'pool_balance_display':aO['display'],'claims':aP},'claim_records':{'count':null,'note':'Claim\x20history\x20is\x20recipient-keyed\x20on\x20this\x20Reward\x27s\x20table\x20—\x20read\x20via\x20onchain_table\x20(parent\x20=\x20this\x20Reward\x20address).'},'data_gaps':h};}return h['push']('No\x20semantic\x20decoder\x20for\x20type\x20\x27'+(k||'unknown')+'\x27\x20—\x20fields\x20below\x20are\x20the\x20RAW\x20on-chain\x20payload,\x20not\x20interpreted.\x20'+'Semantic\x20decoders\x20exist\x20for:\x20Progress\x20/\x20Demand\x20/\x20Order\x20/\x20Allocation\x20/\x20Arb\x20/\x20Arbitration\x20/\x20Repository\x20/\x20Reward\x20/\x20Proof.'),{'action':'object_panorama','object':f,'network':d,'head':j,'freshness':freshnessOf(e),'object_type':'Unknown','raw_type':k||'unknown','coin_type':coinOfTypeRaw(k),'fields':js(e),'data_gaps':h};}
@@ -1 +1 @@
1
- import{watch_conversations}from'@wowok/wowok';import{analyzeOrderParticipation,aggregateRadar,isConsequenceNode}from'../../participation/radar-core.js';import{workflowSubgraphFromRows}from'../../graph/onchain/index.js';import{Config}from'@wowok/wowok/w/local';import{resolveAddress as a420a}from'../../tools/handlers/name-resolution.js';import{monitorOrder}from'../../customer/order-monitor.js';import{buildNodeActionAdvice}from'../../participation/node-action-advisor.js';import{isTerminalArbStatus}from'../../knowledge/arbitration-ledger.js';import{fetchMachineNodes}from'./machine-nodes.js';import{extractGenericTokenType,registryDisplayHint}from'../../knowledge/fund-layer.js';import{classifyRecipient,derivePayoffFromSharing}from'../../knowledge/recipient-constraint.js';import{batchQueryObjectsByIds,batchQueryTableItems}from'../../graph/onchain/sdk-batch.js';import{deriveTimeWindow,autoAcceptCountdown}from'../../participation/time-window.js';function fld(a,b){return a?.[b]??a?.['data']?.[b];}async function resolveAddress(a,b){return a420a(a,b);}function balanceStr(a){if(a==null)return undefined;if(typeof a==='object'&&'balance'in a)return String(a['balance']);return String(a);}function balanceToken(a){if(a!=null&&typeof a==='object'&&typeof a['token_type']==='string')return a['token_type'];return undefined;}function allocatorGuardAddresses(b){const c=Array['isArray'](b)?b:Array['isArray'](b?.['allocators'])?b['allocators']:[],d=[];for(const e of c){const f=e?.['guard'];if(typeof f==='string'&&f['startsWith']('0x'))d['push'](f);}return d;}async function fetchAllocatorGuardDefs(a,b,c){const d=new Map(),f=[...new Set(allocatorGuardAddresses(a))];if(f['length']===0x0)return d;try{const h=await batchQueryObjectsByIds(f,b);for(const i of h){const j=fld(i,'object'),k=fld(i,'root');if(j&&k!==undefined&&k!==null){const l=fld(i,'table'),m=Array['isArray'](l)?l['filter'](n=>n!=null&&typeof n==='object')['filter'](n=>typeof n['identifier']==='number')['map'](n=>({'identifier':n['identifier'],'value_type':n['value_type'],'value':n['value'],'name':typeof n['name']==='string'?n['name']:undefined,'b_submission':n['b_submission']===!![]})):undefined;d['set'](j,{'root':k,...m&&m['length']>0x0?{'table':m}:{}});}}}catch(n){c['push']('Allocator\x20guard\x20fetch\x20failed:\x20'+n['message']+'\x20—\x20Signer-recipient\x20payoff\x20stays\x20conservative\x20'+'(unresolved\x20guards\x20cannot\x20clear\x20an\x20RC-FIND-01\x20suspicion).');}return d;}function summarizeAllocation(a,b,c){const d=Array['isArray'](a)?a:Array['isArray'](a?.['allocators'])?a['allocators']:[];if(d['length']===0x0)return undefined;let e=0x0,f=0x0,g=0x0,h=0x0;const i=[],j=b['toLowerCase']();for(const k of d){const l=k?.['sharing']??[];for(const n of l){e++;const o=classifyRecipient(n['who']);if(!o)continue;if(o['kind']==='submission')f++;else{if(o['kind']==='signer')h++;else{if(o['kind']==='entity'&&o['address']['toLowerCase']()===j)g++;}}}const m=typeof k?.['guard']==='string'?c['get'](k['guard']):undefined;i['push'](derivePayoffFromSharing(l,'service_order_allocators',m));}return{'recipient_slots':e,'guard_gated_slots':f,'direct_to_me_slots':g,'to_payer_slots':h,'payoffs':i};}export async function fetchEntityPermissions(a,b){const c=new Map(),{items:d}=await batchQueryTableItems(a,{'network':b});for(const e of d){const f=e['object'];if(f?.['type']!=='TableItem_PermissionPerm')continue;const g=fld(f,'address'),h=fld(f,'perm')??[],i=h['map'](j=>typeof j==='number'?j:typeof j?.['index']==='number'?j['index']:null)['filter'](j=>j!==null);if(g)c['set'](g,i);}return c;}function toWorkflowSubgraph(a,b){return workflowSubgraphFromRows(a,b);}export async function handleParticipationRadar(b){if(!b['radar_account'])throw new Error('\x27radar_account\x27\x20is\x20required\x20for\x20participation_radar');if(!b['radar_targets']||b['radar_targets']['length']===0x0)throw new Error('\x27radar_targets\x27\x20(1-20\x20in-flight\x20orders)\x20is\x20required\x20for\x20participation_radar');const d=b['context_network']??await Config['Instance']()['network_get'](),f=b['radar_include_alerts']??!![],h=[],i=await resolveAddress(b['radar_account'],'radar_account'),j=await Promise['all'](b['radar_targets']['map'](async O=>({'progress':await resolveAddress(O['progress'],'progress'),'order':O['order']?await resolveAddress(O['order'],'order'):undefined}))),k=j['flatMap'](O=>O['order']?[O['progress'],O['order']]:[O['progress']]),l=await batchQueryObjectsByIds(k,d,!![]),m=new Map();for(const O of l){const P=fld(O,'object');if(P)m['set'](P,O);}const q=new Map(),s=new Map();for(const Q of j){const R=m['get'](Q['progress']);if(!R){h['push']('Progress\x20'+Q['progress']+'\x20not\x20found\x20on\x20'+d+'\x20—\x20target\x20skipped.');continue;}q['set'](Q['progress'],R);if(Q['order']){const S=m['get'](Q['order']);if(S)s['set'](Q['order'],S);else h['push']('Order\x20'+Q['order']+'\x20not\x20found\x20on\x20'+d+'\x20—\x20order-holder\x20detection\x20disabled\x20for\x20'+Q['progress']+'.');}}j['length']>0x0&&q['size']===0x0&&h['push']('NETWORK\x20MISMATCH\x20SUSPECTED:\x200/'+j['length']+'\x20radar\x20targets\x20exist\x20on\x20network=\x27'+d+'\x27.\x20'+'These\x20objects\x20most\x20likely\x20live\x20on\x20a\x20different\x20network\x20—\x20re-run\x20with\x20the\x20matching\x20\x27network\x27\x20parameter.');const u=[...new Set([...q['values']()]['map'](T=>fld(T,'machine'))['filter'](T=>!!T))],w=[...new Set([...s['values']()]['map'](T=>fld(T,'service'))['filter'](T=>!!T))],x=[...new Set([...s['values']()]['flatMap'](T=>{const U=fld(T,'dispute');return Array['isArray'](U)?U:[];}))],y=[...new Set([...s['values']()]['map'](T=>fld(T,'allocation'))['filter'](T=>!!T&&T['startsWith']('0x')))],z=new Map(),A=new Map(),B=new Map(),C=new Map(),D=new Map();await Promise['all']([...u['map'](async T=>{try{const [U,V]=await Promise['all']([batchQueryObjectsByIds([T],d),fetchMachineNodes(T,d,!![])]);if(U[0x0])z['set'](T,U[0x0]);A['set'](T,toWorkflowSubgraph(V,T));}catch(W){h['push']('Machine\x20'+T+'\x20fetch\x20failed:\x20'+W['message']+'\x20—\x20workflow\x20unknown\x20for\x20its\x20orders.');}}),((async()=>{if(w['length']===0x0)return;try{const T=await batchQueryObjectsByIds(w,d);for(const U of T){const V=fld(U,'object');if(V)B['set'](V,U);}}catch(W){h['push']('Service\x20query\x20failed:\x20'+W['message']+'\x20—\x20compensation/reward\x20context\x20degraded.');}})()),((async()=>{if(x['length']===0x0)return;try{const T=await batchQueryObjectsByIds(x,d);for(const U of T){const V=fld(U,'object');if(V)C['set'](V,U);}}catch(W){h['push']('Arb\x20query\x20failed:\x20'+W['message']+'\x20—\x20compensation\x20claim\x20detection\x20disabled.');}})()),((async()=>{if(y['length']===0x0)return;try{const T=await batchQueryObjectsByIds(y,d,!![]);for(const U of T){const V=fld(U,'object');if(V)D['set'](V,U);}}catch(W){h['push']('Allocation\x20pool\x20query\x20failed:\x20'+W['message']+'\x20—\x20fund-state\x20advice\x20degraded\x20to\x20template\x20level.');}})())]);const E=new Map(),F=[...new Set(u['map'](T=>fld(z['get'](T),'permission'))['filter'](T=>!!T))],G=new Map();await Promise['all'](F['map'](async T=>{try{const [U,V]=await Promise['all']([batchQueryObjectsByIds([T],d),fetchEntityPermissions(T,d)]),W=U[0x0];G['set'](T,{'address':T,'entity_count':fld(W,'entity_count'),'perm_remark':fld(W,'perm_remark'),'entityPermissions':V,'owner':fld(W,'builder')});}catch(X){h['push']('Permission\x20'+T+'\x20fetch\x20failed:\x20'+X['message']+'\x20—\x20operator\x20permission\x20matching\x20degraded.');}}));for(const T of u){const U=fld(z['get'](T),'permission');if(U&&G['has'](U))E['set'](T,G['get'](U));}const H=new Map();await Promise['all']([...B['entries']()]['map'](async([V,W])=>{H['set'](V,await fetchAllocatorGuardDefs(fld(W,'order_allocators'),d,h));}));let I=0x0;const J=new Map();try{const V=await watch_conversations({'account':i,'unreadOnly':!![],'previewMessageCount':0x0,'skipAutoMarkViewed':!![]}),W=Array['isArray'](V)?V:V?.['conversations']??[];for(const X of W){const Y=X?.['peerAddress'],Z=typeof X?.['unreadCount']==='number'?X['unreadCount']:0x0;typeof Y==='string'&&Z>0x0&&(J['set'](Y['toLowerCase'](),Z),I+=Z);}}catch{h['push']('Messenger\x20unread\x20unavailable\x20(radar\x20account\x20is\x20not\x20a\x20local\x20messenger\x20account,\x20or\x20messenger\x20storage\x20offline)\x20'+'—\x20unread_messages_total\x20reported\x20as\x200.');}const K=[],L=Date['now'](),M=new Map();for(const a0 of j){const a1=q['get'](a0['progress']);if(!a1)continue;const a2=a0['order']?s['get'](a0['order']):undefined;!a0['order']&&h['push']('Target\x20progress\x20'+a0['progress']+'\x20carries\x20NO\x20order\x20address\x20—\x20order-holder\x20identity,\x20'+'buyer/customer\x20perspective\x20routing\x20and\x20order-scoped\x20amounts\x20are\x20UNVERIFIED\x20for\x20this\x20'+'target;\x20the\x20participation\x20stance\x20below\x20is\x20downgraded\x20accordingly.\x20Pass\x20the\x20order\x20'+'address\x20to\x20restore\x20full\x20analysis.');const a3=fld(a1,'machine'),a4=fld(a1,'current')??'',a5=fld(a1,'namedOperator')??[],a6={};for(const ao of a5){if(ao?.['name'])a6[ao['name']]=Array['isArray'](ao['operators'])?ao['operators']:[];}const a7=a2?fld(a2,'service'):undefined,a8=a7?B['get'](a7):undefined;let a9;const aa=a2?fld(a2,'builder'):undefined;if(a2&&aa===i){const ap=fld(a2,'dispute')??[];for(const aq of ap){const ar=C['get'](aq);if(!ar)continue;const as=fld(ar,'indemnity');if(as){a9={'arbitration':fld(ar,'arbitration')??aq,'note':'Arbitration\x20verdict\x20recorded\x20an\x20indemnity\x20(Arb\x20'+aq+').\x20'+'Claim\x20via\x20order\x20op=\x27arb_claim_compensation\x27\x20—\x20paid\x20directly\x20from\x20the\x20Service\x20compensation_fund.\x20'+'(Claimed-status\x20is\x20not\x20readable\x20from\x20the\x20Arb\x20object;\x20the\x20contract\x20rejects\x20double-claims.)'};break;}}}const ab=isConsequenceNode(a4,'completed'),ac=isConsequenceNode(a4,'refunded'),ad=[];if(a8&&aa===i){if(ac)h['push']('Rewards\x20suppressed\x20for\x20order\x20'+(a0['order']??a0['progress'])+':\x20the\x20order\x20sits\x20on\x20a\x20refund/exception\x20'+('terminal\x20node\x20('+(a4||'unknown')+'),\x20so\x20Service\x20rewards\x20are\x20not\x20advertised\x20as\x20claimable\x20against\x20it.'));else{const at=fld(a8,'rewards')??[];for(const au of at){ad['push']({'address':au,'description':'Service\x20reward\x20'+au+'\x20(guard-gated\x20—\x20eligibility\x20verified\x20at\x20claim\x20time)'});}}}let ae=0x0;if(J['size']>0x0){const av=new Set();if(aa)av['add'](aa['toLowerCase']());for(const aw of Object['values'](a6)){for(const ax of aw)av['add'](ax['toLowerCase']());}av['delete'](i['toLowerCase']());for(const ay of av){ae+=J['get'](ay)??0x0;}}const af={'account':i,'progress_address':a0['progress'],'order_address':a0['order'],'current_node':a4,'order_holder':aa,'workflow':a3?A['get'](a3):undefined,'permission':a3?E['get'](a3)??null:null,'named_accounts':a6,'claimable_rewards':ad['length']>0x0?ad:undefined,'pending_compensation':a9,'rating_pending':ab&&aa===i,'review_summary':b['radar_review_summary'],'unread_messages':ae>0x0?ae:undefined,'last_progress_at':fld(a1,'current_time')??undefined,'now':L},ag=analyzeOrderParticipation(af),ah=(fld(a8,'arbitrations')??[])['length']>0x0,ai=a2?fld(a2,'dispute')??[]:[],aj=ai['map'](az=>C['get'](az))['filter'](az=>az!=null),ak=aj['find'](az=>{const aA=fld(az,'status');return aA==null||!isTerminalArbStatus(aA);}),al=summarizeAllocation(fld(a8,'order_allocators'),i,a7?H['get'](a7)??new Map():new Map()),am=a2?fld(a2,'allocation'):undefined,an=a2&&am?D['get'](am['toLowerCase']()):undefined;try{const az=buildNodeActionAdvice({'radar':ag,'is_order_holder':aa===i,'order_amount':balanceStr(fld(a2,'amount')),'token_type':balanceToken(fld(a2,'amount')),'compensation_fund':balanceStr(fld(a8,'compensation_fund')),'arbitration_bound':ah,'has_dispute':ai['length']>0x0,'dispute_active':ak!=null,'arb_status':ak?fld(ak,'status'):undefined,'rewards_count':(fld(a8,'rewards')??[])['length'],'completed':ab,'refunded':ac,'allocation_pool':an&&am?{'address':am,'balance':fld(an,'balance'),'allocators':fld(an,'allocators'),'threshold':fld(an,'threshold'),'payment':fld(an,'payment'),'for_object':fld(an,'payment_info')!==undefined?fld(an,'payment_info')?.['for_object']:fld(an,'for_object')}:undefined,'allocation_summary':al,'last_progress_at':af['last_progress_at'],'now':L,'unread_messages':ae>0x0?ae:undefined,'auto_accept':ag['auto_accept_countdown']});ag['interest_analysis']=az['interest_analysis'],ag['fund_advice']=az['fund_advice'],ag['advice']={'context':az['context'],'kernels_run':az['kernels_run'],'node_game':az['node_game'],'arb_game':az['arb_game'],'actions':az['actions']};for(const aA of az['advisory_gaps'])h['push'](aA);}catch(aB){h['push']('Action\x20advice\x20failed\x20for\x20'+a0['progress']+':\x20'+aB['message']+'.');}a2&&am&&!an&&h['push']('Allocation\x20pool\x20'+am+'\x20not\x20found\x20—\x20fund-state\x20advice\x20unavailable\x20for\x20'+a0['progress']+'.');if(f&&a2){const aC={'order_id':a0['order'],'service_id':a7??'','current_node':a4||undefined,'created_at':Number(fld(a2,'time')??L)||L,'last_progress_at':fld(a1,'current_time')??undefined,'now':L,'order_amount':((()=>{try{return BigInt(fld(a2,'amount')??0x0);}catch{return undefined;}})()),'compensation_balance':((()=>{try{const aD=fld(a8,'compensation_fund');return aD!=null?BigInt(aD):undefined;}catch{return undefined;}})()),'token':registryDisplayHint(extractGenericTokenType(fld(a8,'type_raw'))),'has_arbitration':(fld(a8,'arbitrations')??[])['length']>0x0,'pending_user_action':ag['operable']['some'](aD=>aD['execution_path']==='order_holder'),'completed':ab,'refunded':ac};try{const aD=monitorOrder({'current':aC,'thresholds':b['radar_monitor_thresholds']});aD['length']>0x0&&(ag['attached_alerts']=aD);}catch(aE){h['push']('Order\x20monitor\x20failed\x20for\x20'+a0['order']+':\x20'+aE['message']+'.');}}{const aF=a3?A['get'](a3):undefined;if(aF&&a4){const aG=aF['transitions']['filter'](aK=>aK['prevNode']===a4&&aK['guard']),aH=[...new Set(aG['map'](aK=>aK['guard']))],aI=aH['filter'](aK=>!M['has'](aK['toLowerCase']()));if(aI['length']>0x0){try{const aK=await batchQueryObjectsByIds(aI,d);for(const aL of aK){const aM=fld(aL,'object'),aN=fld(aL,'root');if(!aM||aN==null)continue;const aO=fld(aL,'table'),aP=Array['isArray'](aO)?aO['filter'](aQ=>aQ!=null&&typeof aQ==='object')['filter'](aQ=>typeof aQ['identifier']==='number')['map'](aQ=>({'identifier':aQ['identifier'],'value':aQ['value'],'value_type':aQ['value_type'],'name':typeof aQ['name']==='string'?aQ['name']:undefined,'b_submission':aQ['b_submission']===!![]})):undefined;M['set'](aM['toLowerCase'](),{'root':aN,...aP&&aP['length']>0x0?{'table':aP}:{}});}}catch(aQ){h['push']('Time-window\x20guard\x20fetch\x20failed:\x20'+aQ['message']+'\x20—\x20time_window\x20unavailable\x20for\x20'+a0['progress']+'.');}for(const aR of aI){if(!M['has'](aR['toLowerCase']()))M['set'](aR['toLowerCase'](),null);}}const aJ=aG['map'](aS=>{const aT=M['get'](aS['guard']['toLowerCase']());return aT?{'guard':aS['guard'],'forward':aS['forward']??null,'def':aT}:null;})['filter'](aS=>aS!=null);if(aJ['length']>0x0)try{const aS=deriveTimeWindow({'guards':aJ,'current_node':a4,'last_progress_at':af['last_progress_at']}),aT=autoAcceptCountdown(aS,aG['map'](aV=>({'forward':aV['forward']??null,'node':aV['node']})),a4,af['last_progress_at'],L),aU=ag;aU['time_window']=aS;if(aT)aU['auto_accept_countdown']=aT;}catch(aV){h['push']('Time-window\x20derivation\x20failed\x20for\x20'+a0['progress']+':\x20'+aV['message']+'.');}}}K['push'](ag);}const N=aggregateRadar(K,I);return{'action':'participation_radar','account':i,'now_ms':L,'orders_analyzed':N['orders_analyzed'],'actionable':N['actionable'],'waiting':N['waiting'],'all_pending_claims':N['all_pending_claims'],'unread_messages_total':N['unread_messages_total'],'data_gaps':h,'summary':N['summary']};}
1
+ import{watch_conversations}from'@wowok/wowok';import{analyzeOrderParticipation,aggregateRadar,isConsequenceNode}from'../../participation/radar-core.js';import{workflowSubgraphFromRows}from'../../graph/onchain/index.js';import{Config}from'@wowok/wowok/w/local';import{resolveAddress as a424a}from'../../tools/handlers/name-resolution.js';import{monitorOrder}from'../../customer/order-monitor.js';import{buildNodeActionAdvice}from'../../participation/node-action-advisor.js';import{isTerminalArbStatus}from'../../knowledge/arbitration-ledger.js';import{fetchMachineNodes}from'./machine-nodes.js';import{extractGenericTokenType,registryDisplayHint}from'../../knowledge/fund-layer.js';import{classifyRecipient,derivePayoffFromSharing}from'../../knowledge/recipient-constraint.js';import{batchQueryObjectsByIds,batchQueryTableItems}from'../../graph/onchain/sdk-batch.js';import{deriveTimeWindow,autoAcceptCountdown}from'../../participation/time-window.js';function fld(a,b){return a?.[b]??a?.['data']?.[b];}async function resolveAddress(a,b){return a424a(a,b);}function balanceStr(a){if(a==null)return undefined;if(typeof a==='object'&&'balance'in a)return String(a['balance']);return String(a);}function balanceToken(a){if(a!=null&&typeof a==='object'&&typeof a['token_type']==='string')return a['token_type'];return undefined;}function allocatorGuardAddresses(b){const c=Array['isArray'](b)?b:Array['isArray'](b?.['allocators'])?b['allocators']:[],d=[];for(const e of c){const f=e?.['guard'];if(typeof f==='string'&&f['startsWith']('0x'))d['push'](f);}return d;}async function fetchAllocatorGuardDefs(a,b,c){const d=new Map(),f=[...new Set(allocatorGuardAddresses(a))];if(f['length']===0x0)return d;try{const h=await batchQueryObjectsByIds(f,b);for(const i of h){const j=fld(i,'object'),k=fld(i,'root');if(j&&k!==undefined&&k!==null){const l=fld(i,'table'),m=Array['isArray'](l)?l['filter'](n=>n!=null&&typeof n==='object')['filter'](n=>typeof n['identifier']==='number')['map'](n=>({'identifier':n['identifier'],'value_type':n['value_type'],'value':n['value'],'name':typeof n['name']==='string'?n['name']:undefined,'b_submission':n['b_submission']===!![]})):undefined;d['set'](j,{'root':k,...m&&m['length']>0x0?{'table':m}:{}});}}}catch(n){c['push']('Allocator\x20guard\x20fetch\x20failed:\x20'+n['message']+'\x20—\x20Signer-recipient\x20payoff\x20stays\x20conservative\x20'+'(unresolved\x20guards\x20cannot\x20clear\x20an\x20RC-FIND-01\x20suspicion).');}return d;}function summarizeAllocation(a,b,c){const d=Array['isArray'](a)?a:Array['isArray'](a?.['allocators'])?a['allocators']:[];if(d['length']===0x0)return undefined;let e=0x0,f=0x0,g=0x0,h=0x0;const i=[],j=b['toLowerCase']();for(const k of d){const l=k?.['sharing']??[];for(const n of l){e++;const o=classifyRecipient(n['who']);if(!o)continue;if(o['kind']==='submission')f++;else{if(o['kind']==='signer')h++;else{if(o['kind']==='entity'&&o['address']['toLowerCase']()===j)g++;}}}const m=typeof k?.['guard']==='string'?c['get'](k['guard']):undefined;i['push'](derivePayoffFromSharing(l,'service_order_allocators',m));}return{'recipient_slots':e,'guard_gated_slots':f,'direct_to_me_slots':g,'to_payer_slots':h,'payoffs':i};}export async function fetchEntityPermissions(a,b){const c=new Map(),{items:d}=await batchQueryTableItems(a,{'network':b});for(const e of d){const f=e['object'];if(f?.['type']!=='TableItem_PermissionPerm')continue;const g=fld(f,'address'),h=fld(f,'perm')??[],i=h['map'](j=>typeof j==='number'?j:typeof j?.['index']==='number'?j['index']:null)['filter'](j=>j!==null);if(g)c['set'](g,i);}return c;}function toWorkflowSubgraph(a,b){return workflowSubgraphFromRows(a,b);}export async function handleParticipationRadar(b){if(!b['radar_account'])throw new Error('\x27radar_account\x27\x20is\x20required\x20for\x20participation_radar');if(!b['radar_targets']||b['radar_targets']['length']===0x0)throw new Error('\x27radar_targets\x27\x20(1-20\x20in-flight\x20orders)\x20is\x20required\x20for\x20participation_radar');const d=b['context_network']??await Config['Instance']()['network_get'](),f=b['radar_include_alerts']??!![],h=[],i=await resolveAddress(b['radar_account'],'radar_account'),j=await Promise['all'](b['radar_targets']['map'](async O=>({'progress':await resolveAddress(O['progress'],'progress'),'order':O['order']?await resolveAddress(O['order'],'order'):undefined}))),k=j['flatMap'](O=>O['order']?[O['progress'],O['order']]:[O['progress']]),l=await batchQueryObjectsByIds(k,d,!![]),m=new Map();for(const O of l){const P=fld(O,'object');if(P)m['set'](P,O);}const q=new Map(),s=new Map();for(const Q of j){const R=m['get'](Q['progress']);if(!R){h['push']('Progress\x20'+Q['progress']+'\x20not\x20found\x20on\x20'+d+'\x20—\x20target\x20skipped.');continue;}q['set'](Q['progress'],R);if(Q['order']){const S=m['get'](Q['order']);if(S)s['set'](Q['order'],S);else h['push']('Order\x20'+Q['order']+'\x20not\x20found\x20on\x20'+d+'\x20—\x20order-holder\x20detection\x20disabled\x20for\x20'+Q['progress']+'.');}}j['length']>0x0&&q['size']===0x0&&h['push']('NETWORK\x20MISMATCH\x20SUSPECTED:\x200/'+j['length']+'\x20radar\x20targets\x20exist\x20on\x20network=\x27'+d+'\x27.\x20'+'These\x20objects\x20most\x20likely\x20live\x20on\x20a\x20different\x20network\x20—\x20re-run\x20with\x20the\x20matching\x20\x27network\x27\x20parameter.');const u=[...new Set([...q['values']()]['map'](T=>fld(T,'machine'))['filter'](T=>!!T))],w=[...new Set([...s['values']()]['map'](T=>fld(T,'service'))['filter'](T=>!!T))],x=[...new Set([...s['values']()]['flatMap'](T=>{const U=fld(T,'dispute');return Array['isArray'](U)?U:[];}))],y=[...new Set([...s['values']()]['map'](T=>fld(T,'allocation'))['filter'](T=>!!T&&T['startsWith']('0x')))],z=new Map(),A=new Map(),B=new Map(),C=new Map(),D=new Map();await Promise['all']([...u['map'](async T=>{try{const [U,V]=await Promise['all']([batchQueryObjectsByIds([T],d),fetchMachineNodes(T,d,!![])]);if(U[0x0])z['set'](T,U[0x0]);A['set'](T,toWorkflowSubgraph(V,T));}catch(W){h['push']('Machine\x20'+T+'\x20fetch\x20failed:\x20'+W['message']+'\x20—\x20workflow\x20unknown\x20for\x20its\x20orders.');}}),((async()=>{if(w['length']===0x0)return;try{const T=await batchQueryObjectsByIds(w,d);for(const U of T){const V=fld(U,'object');if(V)B['set'](V,U);}}catch(W){h['push']('Service\x20query\x20failed:\x20'+W['message']+'\x20—\x20compensation/reward\x20context\x20degraded.');}})()),((async()=>{if(x['length']===0x0)return;try{const T=await batchQueryObjectsByIds(x,d);for(const U of T){const V=fld(U,'object');if(V)C['set'](V,U);}}catch(W){h['push']('Arb\x20query\x20failed:\x20'+W['message']+'\x20—\x20compensation\x20claim\x20detection\x20disabled.');}})()),((async()=>{if(y['length']===0x0)return;try{const T=await batchQueryObjectsByIds(y,d,!![]);for(const U of T){const V=fld(U,'object');if(V)D['set'](V,U);}}catch(W){h['push']('Allocation\x20pool\x20query\x20failed:\x20'+W['message']+'\x20—\x20fund-state\x20advice\x20degraded\x20to\x20template\x20level.');}})())]);const E=new Map(),F=[...new Set(u['map'](T=>fld(z['get'](T),'permission'))['filter'](T=>!!T))],G=new Map();await Promise['all'](F['map'](async T=>{try{const [U,V]=await Promise['all']([batchQueryObjectsByIds([T],d),fetchEntityPermissions(T,d)]),W=U[0x0];G['set'](T,{'address':T,'entity_count':fld(W,'entity_count'),'perm_remark':fld(W,'perm_remark'),'entityPermissions':V,'owner':fld(W,'builder')});}catch(X){h['push']('Permission\x20'+T+'\x20fetch\x20failed:\x20'+X['message']+'\x20—\x20operator\x20permission\x20matching\x20degraded.');}}));for(const T of u){const U=fld(z['get'](T),'permission');if(U&&G['has'](U))E['set'](T,G['get'](U));}const H=new Map();await Promise['all']([...B['entries']()]['map'](async([V,W])=>{H['set'](V,await fetchAllocatorGuardDefs(fld(W,'order_allocators'),d,h));}));let I=0x0;const J=new Map();try{const V=await watch_conversations({'account':i,'unreadOnly':!![],'previewMessageCount':0x0,'skipAutoMarkViewed':!![]}),W=Array['isArray'](V)?V:V?.['conversations']??[];for(const X of W){const Y=X?.['peerAddress'],Z=typeof X?.['unreadCount']==='number'?X['unreadCount']:0x0;typeof Y==='string'&&Z>0x0&&(J['set'](Y['toLowerCase'](),Z),I+=Z);}}catch{h['push']('Messenger\x20unread\x20unavailable\x20(radar\x20account\x20is\x20not\x20a\x20local\x20messenger\x20account,\x20or\x20messenger\x20storage\x20offline)\x20'+'—\x20unread_messages_total\x20reported\x20as\x200.');}const K=[],L=Date['now'](),M=new Map();for(const a0 of j){const a1=q['get'](a0['progress']);if(!a1)continue;const a2=a0['order']?s['get'](a0['order']):undefined;!a0['order']&&h['push']('Target\x20progress\x20'+a0['progress']+'\x20carries\x20NO\x20order\x20address\x20—\x20order-holder\x20identity,\x20'+'buyer/customer\x20perspective\x20routing\x20and\x20order-scoped\x20amounts\x20are\x20UNVERIFIED\x20for\x20this\x20'+'target;\x20the\x20participation\x20stance\x20below\x20is\x20downgraded\x20accordingly.\x20Pass\x20the\x20order\x20'+'address\x20to\x20restore\x20full\x20analysis.');const a3=fld(a1,'machine'),a4=fld(a1,'current')??'',a5=fld(a1,'namedOperator')??[],a6={};for(const ao of a5){if(ao?.['name'])a6[ao['name']]=Array['isArray'](ao['operators'])?ao['operators']:[];}const a7=a2?fld(a2,'service'):undefined,a8=a7?B['get'](a7):undefined;let a9;const aa=a2?fld(a2,'builder'):undefined;if(a2&&aa===i){const ap=fld(a2,'dispute')??[];for(const aq of ap){const ar=C['get'](aq);if(!ar)continue;const as=fld(ar,'indemnity');if(as){a9={'arbitration':fld(ar,'arbitration')??aq,'note':'Arbitration\x20verdict\x20recorded\x20an\x20indemnity\x20(Arb\x20'+aq+').\x20'+'Claim\x20via\x20order\x20op=\x27arb_claim_compensation\x27\x20—\x20paid\x20directly\x20from\x20the\x20Service\x20compensation_fund.\x20'+'(Claimed-status\x20is\x20not\x20readable\x20from\x20the\x20Arb\x20object;\x20the\x20contract\x20rejects\x20double-claims.)'};break;}}}const ab=isConsequenceNode(a4,'completed'),ac=isConsequenceNode(a4,'refunded'),ad=[];if(a8&&aa===i){if(ac)h['push']('Rewards\x20suppressed\x20for\x20order\x20'+(a0['order']??a0['progress'])+':\x20the\x20order\x20sits\x20on\x20a\x20refund/exception\x20'+('terminal\x20node\x20('+(a4||'unknown')+'),\x20so\x20Service\x20rewards\x20are\x20not\x20advertised\x20as\x20claimable\x20against\x20it.'));else{const at=fld(a8,'rewards')??[];for(const au of at){ad['push']({'address':au,'description':'Service\x20reward\x20'+au+'\x20(guard-gated\x20—\x20eligibility\x20verified\x20at\x20claim\x20time)'});}}}let ae=0x0;if(J['size']>0x0){const av=new Set();if(aa)av['add'](aa['toLowerCase']());for(const aw of Object['values'](a6)){for(const ax of aw)av['add'](ax['toLowerCase']());}av['delete'](i['toLowerCase']());for(const ay of av){ae+=J['get'](ay)??0x0;}}const af={'account':i,'progress_address':a0['progress'],'order_address':a0['order'],'current_node':a4,'order_holder':aa,'workflow':a3?A['get'](a3):undefined,'permission':a3?E['get'](a3)??null:null,'named_accounts':a6,'claimable_rewards':ad['length']>0x0?ad:undefined,'pending_compensation':a9,'rating_pending':ab&&aa===i,'review_summary':b['radar_review_summary'],'unread_messages':ae>0x0?ae:undefined,'last_progress_at':fld(a1,'current_time')??undefined,'now':L},ag=analyzeOrderParticipation(af),ah=(fld(a8,'arbitrations')??[])['length']>0x0,ai=a2?fld(a2,'dispute')??[]:[],aj=ai['map'](az=>C['get'](az))['filter'](az=>az!=null),ak=aj['find'](az=>{const aA=fld(az,'status');return aA==null||!isTerminalArbStatus(aA);}),al=summarizeAllocation(fld(a8,'order_allocators'),i,a7?H['get'](a7)??new Map():new Map()),am=a2?fld(a2,'allocation'):undefined,an=a2&&am?D['get'](am['toLowerCase']()):undefined;try{const az=buildNodeActionAdvice({'radar':ag,'is_order_holder':aa===i,'order_amount':balanceStr(fld(a2,'amount')),'token_type':balanceToken(fld(a2,'amount')),'compensation_fund':balanceStr(fld(a8,'compensation_fund')),'arbitration_bound':ah,'has_dispute':ai['length']>0x0,'dispute_active':ak!=null,'arb_status':ak?fld(ak,'status'):undefined,'rewards_count':(fld(a8,'rewards')??[])['length'],'completed':ab,'refunded':ac,'allocation_pool':an&&am?{'address':am,'balance':fld(an,'balance'),'allocators':fld(an,'allocators'),'threshold':fld(an,'threshold'),'payment':fld(an,'payment'),'for_object':fld(an,'payment_info')!==undefined?fld(an,'payment_info')?.['for_object']:fld(an,'for_object')}:undefined,'allocation_summary':al,'last_progress_at':af['last_progress_at'],'now':L,'unread_messages':ae>0x0?ae:undefined,'auto_accept':ag['auto_accept_countdown']});ag['interest_analysis']=az['interest_analysis'],ag['fund_advice']=az['fund_advice'],ag['advice']={'context':az['context'],'kernels_run':az['kernels_run'],'node_game':az['node_game'],'arb_game':az['arb_game'],'actions':az['actions']};for(const aA of az['advisory_gaps'])h['push'](aA);}catch(aB){h['push']('Action\x20advice\x20failed\x20for\x20'+a0['progress']+':\x20'+aB['message']+'.');}a2&&am&&!an&&h['push']('Allocation\x20pool\x20'+am+'\x20not\x20found\x20—\x20fund-state\x20advice\x20unavailable\x20for\x20'+a0['progress']+'.');if(f&&a2){const aC={'order_id':a0['order'],'service_id':a7??'','current_node':a4||undefined,'created_at':Number(fld(a2,'time')??L)||L,'last_progress_at':fld(a1,'current_time')??undefined,'now':L,'order_amount':((()=>{try{return BigInt(fld(a2,'amount')??0x0);}catch{return undefined;}})()),'compensation_balance':((()=>{try{const aD=fld(a8,'compensation_fund');return aD!=null?BigInt(aD):undefined;}catch{return undefined;}})()),'token':registryDisplayHint(extractGenericTokenType(fld(a8,'type_raw'))),'has_arbitration':(fld(a8,'arbitrations')??[])['length']>0x0,'pending_user_action':ag['operable']['some'](aD=>aD['execution_path']==='order_holder'),'completed':ab,'refunded':ac};try{const aD=monitorOrder({'current':aC,'thresholds':b['radar_monitor_thresholds']});aD['length']>0x0&&(ag['attached_alerts']=aD);}catch(aE){h['push']('Order\x20monitor\x20failed\x20for\x20'+a0['order']+':\x20'+aE['message']+'.');}}{const aF=a3?A['get'](a3):undefined;if(aF&&a4){const aG=aF['transitions']['filter'](aK=>aK['prevNode']===a4&&aK['guard']),aH=[...new Set(aG['map'](aK=>aK['guard']))],aI=aH['filter'](aK=>!M['has'](aK['toLowerCase']()));if(aI['length']>0x0){try{const aK=await batchQueryObjectsByIds(aI,d);for(const aL of aK){const aM=fld(aL,'object'),aN=fld(aL,'root');if(!aM||aN==null)continue;const aO=fld(aL,'table'),aP=Array['isArray'](aO)?aO['filter'](aQ=>aQ!=null&&typeof aQ==='object')['filter'](aQ=>typeof aQ['identifier']==='number')['map'](aQ=>({'identifier':aQ['identifier'],'value':aQ['value'],'value_type':aQ['value_type'],'name':typeof aQ['name']==='string'?aQ['name']:undefined,'b_submission':aQ['b_submission']===!![]})):undefined;M['set'](aM['toLowerCase'](),{'root':aN,...aP&&aP['length']>0x0?{'table':aP}:{}});}}catch(aQ){h['push']('Time-window\x20guard\x20fetch\x20failed:\x20'+aQ['message']+'\x20—\x20time_window\x20unavailable\x20for\x20'+a0['progress']+'.');}for(const aR of aI){if(!M['has'](aR['toLowerCase']()))M['set'](aR['toLowerCase'](),null);}}const aJ=aG['map'](aS=>{const aT=M['get'](aS['guard']['toLowerCase']());return aT?{'guard':aS['guard'],'forward':aS['forward']??null,'def':aT}:null;})['filter'](aS=>aS!=null);if(aJ['length']>0x0)try{const aS=deriveTimeWindow({'guards':aJ,'current_node':a4,'last_progress_at':af['last_progress_at']}),aT=autoAcceptCountdown(aS,aG['map'](aV=>({'forward':aV['forward']??null,'node':aV['node']})),a4,af['last_progress_at'],L),aU=ag;aU['time_window']=aS;if(aT)aU['auto_accept_countdown']=aT;}catch(aV){h['push']('Time-window\x20derivation\x20failed\x20for\x20'+a0['progress']+':\x20'+aV['message']+'.');}}}K['push'](ag);}const N=aggregateRadar(K,I);return{'action':'participation_radar','account':i,'now_ms':L,'orders_analyzed':N['orders_analyzed'],'actionable':N['actionable'],'waiting':N['waiting'],'all_pending_claims':N['all_pending_claims'],'unread_messages_total':N['unread_messages_total'],'data_gaps':h,'summary':N['summary']};}
@@ -1 +1 @@
1
- import{Config}from'@wowok/wowok/w/local';import{resolveAddress as a423a}from'../../tools/handlers/name-resolution.js';import{deriveRelationshipProfile}from'../../relationship/index.js';import{analyzeDemanderInterest}from'../../participation/demander-interest.js';import{GUARD_BINDING_REGISTRY,OWNER_RECEIVE_COGNITION}from'../../knowledge/guard-bindings.js';import{detectBridgesForObjects,summarizeBridge}from'../../knowledge/scenario-topology.js';import{SdkDataPlane,expandTopology,projectRelationshipFacts}from'../../graph/onchain/index.js';export async function resolveAddress(a,b){return a423a(a,b);}export async function handleRelationshipProfile(a){if(!a['radar_account'])throw new Error('\x27radar_account\x27\x20is\x20required\x20for\x20relationship_profile');const b=a['context_network']??await Config['Instance']()['network_get'](),c=await resolveAddress(a['radar_account'],'radar_account'),d=new SdkDataPlane(b),e=await expandTopology(d,{'network':b,'seed':c,'budget':{'maxDepth':0x4,'maxNodes':0x384,'maxRpcs':0xa0,'perKindCaps':{'eoa.permission':0x19,'permission.core_binding':0x3c,'permission.tx_binding':0x3c,'eoa.order':0x28,'service.order':0x28,'order.allocation':0x28,'demand.presenter':0x3c,'machine.node':0x78}},'edges':{'tableEdges':['permission.entity','demand.presenter','machine.node']}}),f=[...e['gaps']];for(const z of e['truncations']){f['push']('truncated\x20'+z['schema']+'\x20at\x20'+z['nodeId']+':\x20observed\x20at\x20least\x20'+z['observed']+'\x20edge(s)');}if(e['budgetExhausted']['rpcs'])f['push']('RPC\x20batch\x20budget\x20exhausted\x20—\x20topology\x20is\x20partial\x20(see\x20budget\x20settings).');if(e['budgetExhausted']['nodes'])f['push']('Node\x20budget\x20exhausted\x20—\x20topology\x20is\x20partial.');const g=projectRelationshipFacts(e,c),{machines:h,orders:i,demands:j,allocations:k,contacts:l,arbitrations:m}={'machines':g['machines']??[],'orders':g['orders']??[],'demands':g['demands']??[],'allocations':g['allocations']??[],'contacts':g['contacts']??[],'arbitrations':g['arbitrations']??[]},n=deriveRelationshipProfile(g),o=new Set();if(k['length']>0x0)o['add']('Allocation');if(j['length']>0x0)o['add']('Demand');if(h['some'](A=>(A['forwards']??[])['some'](B=>B['guard'])))o['add']('MachineForward');if(m['length']>0x0)o['add']('Arbitration');for(const A of o){const B=GUARD_BINDING_REGISTRY['filter'](D=>D['object']===A);if(B['length']===0x0)continue;const C=B['map'](D=>{const E=D['preset_kind']==='amount'&&D['object']==='Allocation'?'\x20(Rate\x20is\x20basis\x20points;\x20rates\x20must\x20complete\x2010000\x20unless\x20a\x20Surplus\x20entry\x20exists)':'';return''+D['slot']+E+'\x20['+D['preset_kind']+']\x20—\x20creator:\x20'+D['creator']['split']('\x20—\x20')[0x0]['split']('.\x20')[0x0]+';\x20user:\x20'+D['user'];})['join']('\x20|\x20');n['notes']['push']('Guard-preset\x20deep\x20context\x20on\x20the\x20'+A+'(s)\x20in\x20this\x20topology:\x20'+C+'.');}k['length']>0x0&&n['notes']['push']('Cognition\x20fixed:\x20'+OWNER_RECEIVE_COGNITION);m['some'](D=>D['object_kind']==='service')&&f['push']('Arbitration\x20service\x20voting-guard\x20member\x20resolution\x20is\x20not\x20implemented\x20yet\x20—\x20arbitration\x20services\x20contribute\x20binding\x20presence\x20only\x20(Arb\x20CASE\x20votes\x20ARE\x20parsed\x20into\x20arbitration_delegation/dispute_resolution\x20edges).');const p=['Permission'];if(i['length']>0x0)p['push']('Order');if(h['length']>0x0)p['push']('Machine','Progress');if(k['length']>0x0)p['push']('Allocation','Payment');if(j['length']>0x0)p['push']('Demand');if(m['length']>0x0)p['push']('Arbitration','Arb');if(l['length']>0x0)p['push']('Contact');if(Object['keys'](g['service_owners']??{})['length']>0x0)p['push']('Service','Guard');const q=detectBridgesForObjects(p);if(q['length']>0x0){const D=q['slice'](0x0,0x8)['map'](E=>summarizeBridge(E))['join']('\x0a-\x20');n['notes']['push']('Scenario\x20topology\x20('+q['length']+'\x20bridge(s)\x20implied\x20by\x20the\x20touched\x20objects\x20—\x20capability\x20comes\x20from\x20the\x20'+('\x22integration,\x20not\x20from\x20any\x20single\x20object):\x0a-\x20'+D));}const r=a['relation_kinds']?new Set(a['relation_kinds']):undefined,s=r?n['edges']['filter'](E=>r['has'](E['kind'])):n['edges'],u=s['reduce']((E,F)=>{return E[F['kind']]=(E[F['kind']]??0x0)+0x1,E;},{});let w=c+'\x20holds\x20'+s['length']+'\x20relationship\x20edge(s)\x20across\x20'+Object['keys'](n['by_counterparty'])['length']+'\x20counterparty(ies)'+(Object['keys'](u)['length']>0x0?':\x20'+Object['entries'](u)['map'](([E,F])=>E+'×'+F)['join'](',\x20')+'.':'.');s['length']===0x0&&f['length']>0x0&&(w+='\x20No\x20edges\x20derived\x20—\x20check\x20data_gaps\x20(the\x20account\x20may\x20have\x20no\x20on-chain\x20power\x20carriers\x20on\x20this\x20network).');const x=(E,F)=>E['toLowerCase']()===F['toLowerCase'](),y=j['filter'](E=>E['owner']&&x(E['owner'],c))['map'](E=>({'demand':E['address'],...analyzeDemanderInterest({'account':c,'demand':E['address'],'presenters':E['presenters']??[],'rewards':(E['rewards']??[])['map'](F=>({'address':F})),'guards':E['guards']??[],'open':!(E['presenters']??[])['some'](F=>F['acceptance_score']!==undefined)})}));return y['length']>0x0&&(w+='\x20Anchor\x20demands\x20'+y['length']+'\x20demand(s)\x20—\x20demander-interest\x20analysis\x20attached.'),{'action':'relationship_profile','account':c,'edges':s,'by_counterparty':n['by_counterparty'],'notes':n['notes'],'data_gaps':f,'summary':w,...y['length']>0x0?{'demander_interest':y}:{}};}
1
+ import{Config}from'@wowok/wowok/w/local';import{resolveAddress as a427a}from'../../tools/handlers/name-resolution.js';import{deriveRelationshipProfile}from'../../relationship/index.js';import{analyzeDemanderInterest}from'../../participation/demander-interest.js';import{GUARD_BINDING_REGISTRY,OWNER_RECEIVE_COGNITION}from'../../knowledge/guard-bindings.js';import{detectBridgesForObjects,summarizeBridge}from'../../knowledge/scenario-topology.js';import{SdkDataPlane,expandTopology,projectRelationshipFacts}from'../../graph/onchain/index.js';export async function resolveAddress(a,b){return a427a(a,b);}export async function handleRelationshipProfile(a){if(!a['radar_account'])throw new Error('\x27radar_account\x27\x20is\x20required\x20for\x20relationship_profile');const b=a['context_network']??await Config['Instance']()['network_get'](),c=await resolveAddress(a['radar_account'],'radar_account'),d=new SdkDataPlane(b),e=await expandTopology(d,{'network':b,'seed':c,'budget':{'maxDepth':0x4,'maxNodes':0x384,'maxRpcs':0xa0,'perKindCaps':{'eoa.permission':0x19,'permission.core_binding':0x3c,'permission.tx_binding':0x3c,'eoa.order':0x28,'service.order':0x28,'order.allocation':0x28,'demand.presenter':0x3c,'machine.node':0x78}},'edges':{'tableEdges':['permission.entity','demand.presenter','machine.node']}}),f=[...e['gaps']];for(const z of e['truncations']){f['push']('truncated\x20'+z['schema']+'\x20at\x20'+z['nodeId']+':\x20observed\x20at\x20least\x20'+z['observed']+'\x20edge(s)');}if(e['budgetExhausted']['rpcs'])f['push']('RPC\x20batch\x20budget\x20exhausted\x20—\x20topology\x20is\x20partial\x20(see\x20budget\x20settings).');if(e['budgetExhausted']['nodes'])f['push']('Node\x20budget\x20exhausted\x20—\x20topology\x20is\x20partial.');const g=projectRelationshipFacts(e,c),{machines:h,orders:i,demands:j,allocations:k,contacts:l,arbitrations:m}={'machines':g['machines']??[],'orders':g['orders']??[],'demands':g['demands']??[],'allocations':g['allocations']??[],'contacts':g['contacts']??[],'arbitrations':g['arbitrations']??[]},n=deriveRelationshipProfile(g),o=new Set();if(k['length']>0x0)o['add']('Allocation');if(j['length']>0x0)o['add']('Demand');if(h['some'](A=>(A['forwards']??[])['some'](B=>B['guard'])))o['add']('MachineForward');if(m['length']>0x0)o['add']('Arbitration');for(const A of o){const B=GUARD_BINDING_REGISTRY['filter'](D=>D['object']===A);if(B['length']===0x0)continue;const C=B['map'](D=>{const E=D['preset_kind']==='amount'&&D['object']==='Allocation'?'\x20(Rate\x20is\x20basis\x20points;\x20rates\x20must\x20complete\x2010000\x20unless\x20a\x20Surplus\x20entry\x20exists)':'';return''+D['slot']+E+'\x20['+D['preset_kind']+']\x20—\x20creator:\x20'+D['creator']['split']('\x20—\x20')[0x0]['split']('.\x20')[0x0]+';\x20user:\x20'+D['user'];})['join']('\x20|\x20');n['notes']['push']('Guard-preset\x20deep\x20context\x20on\x20the\x20'+A+'(s)\x20in\x20this\x20topology:\x20'+C+'.');}k['length']>0x0&&n['notes']['push']('Cognition\x20fixed:\x20'+OWNER_RECEIVE_COGNITION);m['some'](D=>D['object_kind']==='service')&&f['push']('Arbitration\x20service\x20voting-guard\x20member\x20resolution\x20is\x20not\x20implemented\x20yet\x20—\x20arbitration\x20services\x20contribute\x20binding\x20presence\x20only\x20(Arb\x20CASE\x20votes\x20ARE\x20parsed\x20into\x20arbitration_delegation/dispute_resolution\x20edges).');const p=['Permission'];if(i['length']>0x0)p['push']('Order');if(h['length']>0x0)p['push']('Machine','Progress');if(k['length']>0x0)p['push']('Allocation','Payment');if(j['length']>0x0)p['push']('Demand');if(m['length']>0x0)p['push']('Arbitration','Arb');if(l['length']>0x0)p['push']('Contact');if(Object['keys'](g['service_owners']??{})['length']>0x0)p['push']('Service','Guard');const q=detectBridgesForObjects(p);if(q['length']>0x0){const D=q['slice'](0x0,0x8)['map'](E=>summarizeBridge(E))['join']('\x0a-\x20');n['notes']['push']('Scenario\x20topology\x20('+q['length']+'\x20bridge(s)\x20implied\x20by\x20the\x20touched\x20objects\x20—\x20capability\x20comes\x20from\x20the\x20'+('\x22integration,\x20not\x20from\x20any\x20single\x20object):\x0a-\x20'+D));}const r=a['relation_kinds']?new Set(a['relation_kinds']):undefined,s=r?n['edges']['filter'](E=>r['has'](E['kind'])):n['edges'],u=s['reduce']((E,F)=>{return E[F['kind']]=(E[F['kind']]??0x0)+0x1,E;},{});let w=c+'\x20holds\x20'+s['length']+'\x20relationship\x20edge(s)\x20across\x20'+Object['keys'](n['by_counterparty'])['length']+'\x20counterparty(ies)'+(Object['keys'](u)['length']>0x0?':\x20'+Object['entries'](u)['map'](([E,F])=>E+'×'+F)['join'](',\x20')+'.':'.');s['length']===0x0&&f['length']>0x0&&(w+='\x20No\x20edges\x20derived\x20—\x20check\x20data_gaps\x20(the\x20account\x20may\x20have\x20no\x20on-chain\x20power\x20carriers\x20on\x20this\x20network).');const x=(E,F)=>E['toLowerCase']()===F['toLowerCase'](),y=j['filter'](E=>E['owner']&&x(E['owner'],c))['map'](E=>({'demand':E['address'],...analyzeDemanderInterest({'account':c,'demand':E['address'],'presenters':E['presenters']??[],'rewards':(E['rewards']??[])['map'](F=>({'address':F})),'guards':E['guards']??[],'open':!(E['presenters']??[])['some'](F=>F['acceptance_score']!==undefined)})}));return y['length']>0x0&&(w+='\x20Anchor\x20demands\x20'+y['length']+'\x20demand(s)\x20—\x20demander-interest\x20analysis\x20attached.'),{'action':'relationship_profile','account':c,'edges':s,'by_counterparty':n['by_counterparty'],'notes':n['notes'],'data_gaps':f,'summary':w,...y['length']>0x0?{'demander_interest':y}:{}};}
@@ -1 +1 @@
1
- import{Config,LocalMark,query_serviceContext,query_object_last_updated,query_affiliations,objectTypeFromAddress,ObjectType,WowClient,getFullnodeUrl}from'@wowok/wowok';import{resolveAddress as a426a}from'../../tools/handlers/name-resolution.js';import{generateBusinessReport}from'./reverse-mapping.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{batchQueryObjectsByIds,batchQueryObjectsByRef,fetchServiceOrders,ringWindowSaturated,parseMachineNodeItems}from'../../graph/onchain/sdk-batch.js';import{buildRepositoryData}from'./object-panorama.js';import{evaluateSettlementPending}from'../../keeper/detectors.js';import{computeFundListingWall}from'../../graph/onchain/facts.js';import{classifyFundWaterLevelUnits,fundWaterReminder}from'../../knowledge/fund-layer.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 function buildPendingAllocations(a,b,c,d){const e=[];for(const f of a){try{const g=typeof f?.['allocation']==='string'?f['allocation']:undefined;if(!g)continue;const h=b['get'](g['toLowerCase']());if(!h)continue;const i=typeof f?.['progress']==='string'?f['progress']:undefined,j=i?c['get'](i['toLowerCase']()):undefined,k=h?.['data']??h,l=j?.['data']??j,m=evaluateSettlementPending(f,k,l,d);if(!m)continue;e['push']({'allocation':g,'order':typeof f?.['object']==='string'?f['object']:'','balance':m['balance']['toString'](),'terminal_node':m['terminal_node'],'is_refund_terminal':m['is_refund_terminal'],'candidate_guards':m['guards']});}catch{continue;}}return e;}export async function handleServicePanorama(b){const c=b['object_address']??b['service_address']??requireField(undefined,'object_address\x20(or\x20service_address)'),h=b['context_network']??undefined;let j=h??await Config['Instance']()['network_get']();const k=[];let l=await a426a(c,'service'),m=await query_serviceContext({'service':l,'include_machine_nodes':!![],'network':j});if(!m?.['service']&&h){const ai=await Config['Instance']()['network_get']();ai&&ai!==j&&(j=ai,m=await query_serviceContext({'service':l,'include_machine_nodes':!![],'network':j}));}const q=m['service'];l=q['object']??l;const w=new Set(),x=aj=>{if(aj)w['add'](aj);};x(l),x(q['machine']),x(q['permission']),x(q['um']);for(const aj of q['arbitrations']??[])x(aj);for(const ak of q['rewards']??[])x(ak);for(const al of q['repositories']??[])x(al);const y=m['permission'];if(y){const am=Array['isArray'](y['admin'])?y['admin']:[];am[0x0]&&x(typeof am[0x0]==='string'?am[0x0]:am[0x0]?.['account']);if(y['builder'])x(y['builder']);}const z=await markOfMany([...w]),A=z['get'](l)??{'name':null,'tags':[],'updated_at_ms':null},B=A['name'],C=an=>an?z['get'](an)??{'name':null,'tags':[],'updated_at_ms':null}:{'name':null,'tags':[],'updated_at_ms':null};let D=null;const E=m['machine'],F=m['machine_nodes']??[];if(E||F['length']>0x0){const {nodes:an,edges:ao}=buildMachineGraph(F);D={'address':E?.['object']??q['machine']??'','name':C(E?.['object']??q['machine'])['name'],'description':E?.['description']??null,'published':typeof E?.['bPublished']==='boolean'?E['bPublished']:null,'paused':typeof E?.['bPaused']==='boolean'?E['bPaused']:null,'node_count':typeof E?.['node_count']==='number'?E['node_count']:null,'consensus_repositories':Array['isArray'](E?.['consensus_repositories'])?E['consensus_repositories']:[],'nodes':an,'edges':ao};}let G=null;try{const ap=await query_object_last_updated({'object':l,'network':j});ap?.['timestamp_ms']&&(G={'timestamp_ms':ap['timestamp_ms'],'digest':ap['digest']??null,'sender':ap['sender']??null});}catch{k['push']('onchain_last_updated:\x20query\x20failed\x20(non-blocking)');}let H=null;try{H=await resolveSupplyChainGraph(l,j);}catch{k['push']('supply_chain:\x20resolution\x20failed\x20(non-blocking)');}let I=null,J=[];const K=q?.['type_raw']??q?.['type']??'',L=K['match'](/<(.+)>$/),M=L?L[0x1]:null,N=(aq,ar)=>{const as=[];return aq?as['push']('Pricing\x20&\x20settlement\x20coin:\x20'+aq+'\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.'):as['push']('Pricing\x20&\x20settlement\x20coin:\x20unavailable\x20from\x20the\x20Service\x20type\x20(no\x20generic\x20found)\x20—\x20treat\x20amounts\x20as\x20raw\x20smallest\x20units.'),as['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'](ar)?as['push']('Testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20testnet\x20services\x20stay\x20WOW-denominated;\x20multi-token\x20pricing\x20is\x20a\x20mainnet\x20capability.'):as['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.'),as['join']('\x20');},O=aq=>formatMoneyAnnotation(aq,M,j),P=0x3,Q=0x32;let R=null,S=[];try{const aq=await fetchServiceOrders(l,j,!![]),ar=Array['isArray'](aq?.['items'])?aq['items']:[],as=ar['slice'](-Q),at=ar['slice'](-P),au=as['map'](aT=>typeof aT?.['who']==='string'?aT['who']:'')['filter'](aT=>aT!==''),av=at['map'](aT=>typeof aT?.['who']==='string'?aT['who']:'')['filter'](aT=>aT!==''),aw=new Map();try{if(au['length']>0x0){const aT=await batchQueryObjectsByIds(au,j,!![]);for(const aU of aT){aU&&aU['type']===ObjectType['Order']&&aw['set'](aU['object'],aU);}}}catch{k['push']('recent_orders:\x20order\x20details\x20unavailable\x20(non-blocking)');}const ax=new Map(),ay=new Map();try{const aV=new Set();for(const aW of aw['values']()){if(aW?.['allocation'])aV['add'](aW['allocation']);}if(aV['size']>0x0){const aX=await batchQueryObjectsByIds(Array['from'](aV),j,!![]);for(const aY of aX){if(!aY?.['object'])continue;if(aY['type']===ObjectType['Allocation']){ay['set'](String(aY['object'])['toLowerCase'](),aY);const aZ=Number(aY?.['balance']??0x0);ax['set'](aY['object'],Number['isFinite'](aZ)&&aZ===0x0?'allocated':'pending');}}}}catch{k['push']('recent_orders:\x20allocation\x20details\x20unavailable\x20(non-blocking)');}const az=new Map(),aA=new Map();try{const b0=new Set();for(const b1 of av){const b2=aw['get'](b1);if(b2?.['progress'])b0['add'](b2['progress']);}if(b0['size']>0x0){const b3=await batchQueryObjectsByIds(Array['from'](b0),j,!![]);for(const b4 of b3){if(!b4?.['object'])continue;if(b4['type']===ObjectType['Progress']){const b5=b4?.['current'];az['set'](b4['object'],typeof b5==='string'&&b5!==''?b5:null),aA['set'](b4['object'],Number(b4?.['current_time'])||null);}}}}catch{k['push']('recent_orders:\x20progress\x20details\x20unavailable\x20(non-blocking)');}J=Array['from'](aw['values']())['map'](b6=>({'id':b6['object'],'created_at_ms':Number(b6['time'])||undefined,'claimed_by':b6['claimed_by']??null,'current_node':b6['progress']?az['get'](b6['progress'])??null:null}));const aB=new Map();try{const b6=av,b7=await Promise['allSettled'](b6['map'](b8=>query_object_last_updated({'object':b8,'network':j})));for(let b8=0x0;b8<b6['length'];b8++){const b9=b7[b8];aB['set'](b6[b8],b9['status']==='fulfilled'&&b9['value']?.['timestamp_ms']?Number(b9['value']['timestamp_ms'])||null:null);}}catch{k['push']('recent_orders:\x20order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const aC=await Promise['all'](at['map'](async ba=>{const bb=typeof ba?.['who']==='string'?ba['who']:'',bc=aw['get'](bb),bd=bc?.['amount']!==null&&bc?.['amount']!==undefined?String(bc['amount']):'',be=await O(bd);return{'order':bb,'time':typeof ba?.['time']==='number'?ba['time']:0x0,'updated_ms':aB['get'](bb)??null,'amount':bd,'amount_display':be['display'],'amount_tip':be['tip'],'progress':bc?.['progress']??null,'allocation':bc?.['allocation']??null,'disputes':Array['isArray'](bc?.['dispute'])?bc['dispute']:[],'agent':Array['isArray'](bc?.['agent'])?bc['agent']:[],'owner':ownerAddr(bc?.['builder']??bc?.['owner']),'claimed_by':bc?.['claimed_by']??null,'required_info':bc?.['required_info']??null,'progress_next':bc?.['progress']?az['get'](bc['progress'])??null:null,'progress_since':bc?.['progress']?aA['get'](bc['progress'])??null:null,'allocation_state':bc?.['allocation']?ax['get'](bc['allocation'])??'pending':'none','bought':await Promise['all']((Array['isArray'](bc?.['items'])?bc['items']:[])['map'](async bf=>({'name':String(bf?.['name']??''),'price_display':(await O(bf?.['price']!==null&&bf?.['price']!==undefined?String(bf['price']):null))['display'],'quantity':String(bf?.['quantity']??'0'),'wip_hash':String(bf?.['wip_hash']??'')})))};})),aD=aC['filter'](ba=>ba['order']!==''),aE=au['map'](ba=>aw['get'](ba))['filter'](ba=>!!ba);let aF=0x0n,aG=0x0,aH=0x0,aI=0x0,aJ=0x0,aK=0x0,aL=null,aM=null;for(const ba of aE){const bb=ba?.['amount']!==null&&ba?.['amount']!==undefined?String(ba['amount']):'';/^\d+$/['test'](bb)&&(aF+=BigInt(bb),aG++);if(Array['isArray'](ba?.['dispute'])&&ba['dispute']['length']>0x0)aH++;const bc=ba?.['allocation']?ax['get'](ba['allocation'])??'pending':'none';if(bc==='pending')aI++;else{if(bc==='allocated')aJ++;else aK++;}}for(const bd of as){if(typeof bd?.['time']==='number'){if(aL===null||bd['time']<aL)aL=bd['time'];if(aM===null||bd['time']>aM)aM=bd['time'];}}try{const be=aE['filter'](bh=>typeof bh?.['allocation']==='string'&&ay['has'](bh['allocation']['toLowerCase']())),bf=new Map(),bg=new Set();for(const bh of be){typeof bh?.['progress']==='string'&&bh['progress']['startsWith']('0x')&&bg['add'](bh['progress']);}if(bg['size']>0x0){const bi=await batchQueryObjectsByIds(Array['from'](bg),j,!![]);for(const bj of bi){if(bj?.['object'])bf['set'](String(bj['object'])['toLowerCase'](),bj);}}S=buildPendingAllocations(be,ay,bf,parseMachineNodeItems(F));}catch(bk){k['push']('pending_allocations:\x20settlement\x20probe\x20unavailable\x20(non-blocking):\x20'+String(bk?.['message']??bk));}const aN=aG>0x0?aF['toString']():null,aO=aN!==null?await O(aN):null,aP=ar['length'],aQ=aq?.['ring_saturated']??ringWindowSaturated(aP),aR=aD['length'],aS='Analyze\x20ALL\x20orders\x20of\x20Service\x20'+l+'\x20('+j+')\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'+aP+(aQ?',\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.';R={'count':aP,'window_saturated':aQ,'preview_truncated':aP>aR,'stats':{'scope_count':aE['length'],'scoped':aE['length']<aP,'amount_sum_raw':aN,'amount_sum_display':aO?.['display']??null,'amount_sum_tip':aO?.['tip']??null,'amount_known_count':aG,'disputed_order_count':aH,'allocation_pending_count':aI,'allocation_allocated_count':aJ,'allocation_none_count':aK,'allocation_settlement_pending_count':S['length'],'first_created_ms':aL,'last_created_ms':aM},...aP>aR?{'drilldown':{'total_count':aP,'analyzed_count':aR,'stats_scope_count':aE['length'],'prompt':aS},'order_addresses':aE['map'](bl=>bl['object'])}:{},'items':aD};}catch{k['push']('recent_orders:\x20reverse-index\x20query\x20failed\x20(non-blocking)');}try{const bl=[q,m['machine'],m['buy_guard'],...m['allocator_guards']??[]]['filter'](Boolean),bm=Object['values'](m['referenced']??{}),bn=(q['arbitrations']??[])['map'](bo=>{const bp=bm['find'](br=>br?.['object']===bo||br?.['id']===bo),bq=typeof bp?.['bPaused']==='boolean'?bp['bPaused']:undefined;return{'found':bq!==undefined,'paused':bq};});I=generateBusinessReport({'objects':bl,'machine_nodes':F['map'](bo=>({'name':bo['name']})),'machine_edges':D?.['edges']?D['edges']['map'](bo=>({'from':bo['from'],'to':bo['to'],'forward_count':bo['forwards']?.['length']??0x0,'unguarded_forward_count':(bo['forwards']??[])['filter'](bp=>bp?.['guard']==null)['length']})):undefined,'orders':J['length']>0x0?J:undefined,'now_ms':Date['now'](),...bn['length']>0x0?{'arbitrations':bn}:{}});}catch{k['push']('business_report:\x20generation\x20failed\x20(non-blocking)');}const T=[];try{const bo=await query_affiliations({'address':l,'no_cache':!![],'network':j}),bp=new Set(),bq=new Map();for(const bs of bo?.['entries']??[]){const bt=typeof bs?.['who']==='string'?bs['who']:'';if(!bt||bp['has'](bt))continue;bp['add'](bt);const bu=objectTypeFromAddress(bt);if(!bu)continue;if(bu===ObjectType['Order'])continue;const bv=String(bu);let bw=bq['get'](bv);!bw&&(bw=[],bq['set'](bv,bw)),bw['push']({'address':bt,'type_label':bv,'name':C(bt)['name'],'time':typeof bs?.['time']==='number'?bs['time']:null,'via':typeof bs?.['table']==='string'?bs['table']:null});}const br=['Progress','Allocation','Payment','Guard'];for(const bx of br){const by=bq['get'](bx);by&&by['length']>0x0&&(T['push']({'type_label':bx,'items':by}),bq['delete'](bx));}for(const [bz,bA]of bq){if(bA['length']>0x0)T['push']({'type_label':bz,'items':bA});}}catch{k['push']('related:\x20global-table\x20lookup\x20failed\x20(non-blocking)');}const U=new Set(),V=bB=>{typeof bB==='string'&&/^0x[0-9a-fA-F]{40,64}$/['test'](bB)&&U['add'](bB['toLowerCase']());};V(q['buy_guard']);for(const bB of F){for(const bC of bB?.['pairs']??[]){for(const bD of bC?.['forwards']??[])V(bD?.['guard']);}}for(const bE of q['order_allocators']?.['allocators']??[])V(bE?.['guard']);for(const bF of m['allocator_guards']??[])V(bF?.['object']);for(const bG of Object['values'](m['referenced']??{})){const bH=bG;if(!bH||typeof bH!=='object')continue;if(bH['type']===ObjectType['Reward']){for(const bI of bH['guards']??[])V(bI?.['guard']);}if(bH['type']===ObjectType['Treasury']){for(const bJ of bH['external_withdraw_guard']??[])V(bJ?.['guard']);for(const bK of bH['external_deposit_guard']??[])V(bK?.['guard']);}(bH['type']===ObjectType['Arbitration']||bH['type']===ObjectType['Arb'])&&V(bH['voting_guard']);}const W=T['find'](bL=>bL['type_label']===String(ObjectType['Guard']));if(W){W['items']=W['items']['filter'](bL=>!U['has'](bL['address']['toLowerCase']()));if(W['items']['length']===0x0)T['splice'](T['indexOf'](W),0x1);else{const bL=W['items'];try{const bM=await batchQueryObjectsByIds(bL['map'](bO=>bO['address']),j,!![]),bN=new Map();for(const bO of bM){if(bO?.['object'])bN['set'](String(bO['object'])['toLowerCase'](),bO);}for(const bP of bL){const bQ=bN['get'](bP['address']['toLowerCase']());if(!bQ){bP['explanation']=null;continue;}const bR=Array['isArray'](bQ['table'])?bQ['table']:[],bS=[];let bT=0x0;for(const bV of bR){if(bV?.['b_submission']===!![]){bT++;continue;}bV?.['value_type']==='Address'&&typeof bV?.['value']==='string'&&bV['value']['startsWith']('0x')&&bS['push'](bV['value']);}const bU=bS['some'](bW=>bW['toLowerCase']()===l['toLowerCase']());bP['explanation']={'description':typeof bQ['description']==='string'?bQ['description']:null,'table_refs':bS,'references_this_service':bU,'submission_slots':bT,'note':bU?'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{k['push']('related:\x20unbound-guard\x20explanation\x20unavailable\x20(non-blocking)');}}}const X=new Map();for(const bW of m['allocator_guards']??[]){const bX=bW;if(bX?.['object'])X['set'](String(bX['object'])['toLowerCase'](),bX);}const Y=[];for(const bY of Array['isArray'](q['sales'])?q['sales']:[]){const bZ=balanceStr(bY?.['price']),c0=await O(bZ);Y['push']({'name':typeof bY?.['name']==='string'?bY['name']:'','price':bZ,'price_display':c0['display'],'price_tip':c0['tip'],'stock':balanceStr(bY?.['stock']),'suspension':bY?.['suspension']===!![],'restock_on_refund':bY?.['restock_on_refund']===!![],'wip':typeof bY?.['wip']==='string'?bY['wip']:'','wip_hash':typeof bY?.['wip_hash']==='string'?bY['wip_hash']:''});}const Z=c1=>c1===0x0?'amount':c1===0x2?'surplus':'rate',a0=c1=>{const c2=c1?.['who'];if(c2&&typeof c2==='object'&&'Entity'in c2){const c3=c2['Entity'],c4=typeof c3==='string'?c3:typeof c3?.['name_or_address']==='string'?c3['name_or_address']:null;return{'who':c4?'Entity\x20'+c4:'Entity','entity':c4&&/^0x[0-9a-fA-F]{6,64}$/['test'](c4)?c4:null,'mode':Z(c1?.['mode']),'value':balanceStr(c1?.['sharing'])};}if(c2&&typeof c2==='object'&&'GuardIdentifier'in c2)return{'who':'Guard\x20identifier\x20#'+c2['GuardIdentifier'],'entity':null,'mode':Z(c1?.['mode']),'value':balanceStr(c1?.['sharing'])};return{'who':'Signer','entity':null,'mode':Z(c1?.['mode']),'value':balanceStr(c1?.['sharing'])};},a1=q['order_allocators']?{'description':q['order_allocators']['description']??'','threshold':balanceStr(q['order_allocators']['threshold']),'allocators':(q['order_allocators']['allocators']??[])['map'](c1=>({'guard':c1['guard'],'sharing_count':Array['isArray'](c1['sharing'])?c1['sharing']['length']:0x0,'sharing':(Array['isArray'](c1['sharing'])?c1['sharing']:[])['map'](a0),'max':balanceStr(c1['max']??null),'guard_summary':summarizeGuard(X['get'](String(c1['guard']??'')['toLowerCase']()))}))}:null,a2=[];{const c1=new Map();for(const c2 of q['order_allocators']?.['allocators']??[]){for(const c3 of Array['isArray'](c2['sharing'])?c2['sharing']:[]){const c4=a0(c3);if(c4['entity']){const c5=c4['entity']['toLowerCase'](),c6=c1['get'](c5)??{'raw':c4['entity'],'guards':[]};c6['guards']['push'](c2['guard']??''),c1['set'](c5,c6);}}}if(c1['size']>0x0)try{const c7=await batchQueryObjectsByIds([...c1['keys']()],j,!![]),c8=new Map();for(const c9 of c7){if(c9?.['object'])c8['set'](String(c9['object'])['toLowerCase'](),c9);}for(const [ca,cb]of c1){const cc=c8['get'](ca),cd='order_allocators\x20sharing\x20of\x20allocator\x20guard\x20'+cb['guards'][0x0];if(cc&&cc['permission']!==undefined){const ce=balanceStr(cc['balance']),cf=await O(ce);a2['push']({'address':String(cc['object']),'kind':'treasury','description':typeof cc['description']==='string'?cc['description']:null,'permission':typeof cc['permission']==='string'?cc['permission']:null,'balance':ce,'balance_display':cf['display'],'balance_tip':cf['tip'],'external_deposit_guard_count':Array['isArray'](cc['external_deposit_guard'])?cc['external_deposit_guard']['length']:null,'external_withdraw_guard_count':Array['isArray'](cc['external_withdraw_guard'])?cc['external_withdraw_guard']['length']:null,'via':cd});}else a2['push']({'address':cb['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':cd});}}catch{k['push']('income_recipients:\x20Sharing\x20entity\x20read\x20failed\x20(non-blocking)');}}const a3=summarizePermission(m['permission'],C(q['permission'])),a4=a3?.['owner']??G?.['sender']??null,a5=a4?await markOf(a4):null,a6=await O(balanceStr(q['compensation_fund'])),a7=balanceStr(q['compensation_fund']),a8=/^\d+$/['test'](a7?.['trim']()??'')?BigInt(a7['trim']()):null,a9=a8===null?null:(a8/0x3n)['toString'](),aa=a9===null?null:await O(a9),ab=a8===null?null:a8===0x0n?'No\x20compensation\x20fund:\x20this\x20Service\x20carries\x20NO\x20payout\x20protection\x20—\x20a\x20won\x20arbitration\x20award\x20cannot\x20be\x20paid\x20(the\x20claim\x20aborts,\x20code\x2027).\x20Running\x20without\x20a\x20fund\x20is\x20a\x20legitimate\x20merchant\x20choice,\x20but\x20it\x20is\x20one\x20a\x20buyer\x20should\x20see\x20before\x20ordering.':'Orders\x20at\x20or\x20under\x20this\x20cap\x20are\x20fully\x20protected\x20(award\x20ceiling\x203x\x20order).\x20Above\x20the\x20cap\x20there\x20is\x20NO\x20partial\x20payout\x20—\x20settlement\x20is\x20all-or-nothing\x20and\x20the\x20claim\x20aborts\x20(code\x2027)\x20until\x20the\x20fund\x20covers\x20the\x20award;\x20the\x20order\x20itself\x20is\x20unaffected.';let ac=null;if(a8!==null){const cg=Y['filter'](co=>!co['suspension']&&/^\d+$/['test'](co['price']?.['trim']()??''))['map'](co=>({'name':co['name'],'price':BigInt(co['price']['trim']())})),ch=computeFundListingWall(a8,cg),ci=await Promise['all'](ch['blocked']['map'](async co=>({'name':co['name'],'price':co['price']['toString'](),'price_display':(await O(co['price']['toString']()))['display']}))),cj=ci['length']===0x0?null:'The\x20fund\x20currently\x20backs\x20orders\x20up\x20to\x20'+(aa?.['display']??a9)+'.\x20'+((ci['length']===0x1?'1\x20listing\x20is':ci['length']+'\x20listings\x20are')+'\x20priced\x20above\x20that\x20and\x20check\x20out\x20UNDER-COVERED\x20—\x20the\x20order\x20proceeds\x20with\x20a\x20buy-time\x20warning\x20(拍板⑤\x20dm-mtw-261027\x20demoted\x20the\x20refusal;\x20no\x20money\x20is\x20blocked),\x20but\x20the\x20fund\x20cannot\x20back\x20its\x20maximum\x20award:\x20a\x20ruling\x20at\x20the\x20cap\x20aborts\x20code\x2027\x20(claim\x20NOT\x20consumed)\x20until\x20a\x20top-up.\x20')+'The\x20highest-priced\x20listing\x20is\x20affected\x20first;\x20top\x20the\x20fund\x20above\x203x\x20a\x20listing\x27s\x20price\x20(service.compensation_fund_add)\x20or\x20cut\x20the\x20price\x20to\x20fully\x20cover\x20it.\x20'+'This\x20recomputes\x20on\x20every\x20read:\x20after\x20every\x20award\x20that\x20spends\x20the\x20fund,\x20re-check\x20your\x20top\x20listing.',ck=cg['reduce']((co,cp)=>cp['price']>co?cp['price']:co,0x0n),cl=ck*0x3n,cm=a8<=0x0n?'depleted':classifyFundWaterLevelUnits(a8,cl)??'healthy';let cn=null;cm!=='healthy'&&(cn=fundWaterReminder(cm,{'balance':a8<=0x0n?'0':(await O(a8['toString']()))['display'],'threshold':(await O(cl['toString']()))['display']})),ac={'blocked':ci,'note':cj,'water_level':cm,'water_reminder':cn};}const ad='Coupons\x20are\x20Discount\x20objects\x20minted\x20PER\x20RECIPIENT:\x20only\x20the\x20current\x20holder\x20can\x20redeem\x20(order_new.buy.discount,\x20by\x20name\x20or\x20object\x20id\x20—\x20a\x20holder\x20transfer\x20goes\x20via\x20service\x20discount_send);\x20redemption\x20is\x20computed\x20on-chain\x20at\x20buy,\x20the\x20coupon\x20BURNS\x20on\x20use,\x20and\x20a\x20refund\x20returns\x20MONEY\x20only\x20—\x20a\x20spent\x20coupon\x20is\x20never\x20restored\x20(the\x20chain\x20has\x20no\x20coupon-restore\x20primitive).';let ae=null,af=null;if(a4&&a4['startsWith']('0x'))try{const co=await Config['Instance']()['network_get'](j),cp=new WowClient({'url':getFullnodeUrl(co),'network':co}),cq=await cp['getOwnedObjects']({'owner':a4,'options':{'showContent':!![],'showType':!![]},'limit':0x33}),cr=Array['isArray'](cq?.['data'])?cq['data']:[],cs=cr['length']>0x32||cq?.['hasNextPage']===!![],ct=cr['slice'](0x0,0x32)['map'](cu=>cu?.['data'])['filter'](cu=>typeof cu?.['type']==='string'&&cu['type']['includes']('::service::Discount')&&cu?.['content']?.['fields'])['filter'](cu=>{const cv=cu['content']['fields']['service'],cw=typeof cv==='string'?cv:cv&&typeof cv==='object'?String(cv['id']??''):'';return!cw||cw['toLowerCase']()===l['toLowerCase']();});ae=await Promise['all'](ct['map'](async cu=>{const cv=cu['content']?.['fields']??{},cw=Number(cv['discount_type'])===0x0,cx=balanceStr(cv['off'])??'0',cy=cw?(Number(BigInt(cx))/0x64)['toFixed'](0x2)+'%\x20off':(await O(cx))['display']+'\x20off';return{'object':String(cu['objectId']),'name':typeof cv['name']==='string'&&cv['name']['length']>0x0?cv['name']:null,'kind_display':cy,'expires_at_ms':cv['time_ms_end']!=null?String(cv['time_ms_end']):null,'transferable':cv['transferable']===!![]?!![]:cv['transferable']===![]?![]:null};})),af=ct['length']===0x0?null:ct['length']+'\x20undistributed\x20coupon(s)\x20still\x20held\x20by\x20the\x20service\x20owner'+(cs?'\x20(first\x20page\x20of\x20the\x20owner\x27s\x20objects\x20scanned\x20—\x20more\x20stock\x20may\x20exist;\x20re-check\x20with\x20query_objects)':'')+'.\x20Buyers\x20redeem\x20at\x20buy\x20via\x20order_new.buy.discount\x20(coupon\x20name\x20or\x20object\x20id).';}catch{k['push']('available_discounts:\x20owner\x20coupon\x20scan\x20failed\x20(non-blocking)');}let ag=null;if(Array['isArray'](q['repositories'])&&q['repositories']['length']>0x0)try{const cu=await batchQueryObjectsByRef(q['repositories']['map'](cw=>String(cw)),j,!![]);let cv=null;for(const [cw,cx]of cu){const cy=cx?.['data']??cx,cz=Array['isArray'](cy?.['policies'])?cy['policies']:[];if(cz['some'](cA=>String(cA?.['name']??'')['toLowerCase']()==='rating')){cv=String(cx?.['object']??cw);break;}}if(cv!==null){const cA=await buildRepositoryData(cv,j,k),cB=Array['isArray'](cA['items'])?cA['items']:[],cC=cB['filter'](cJ=>String(cJ['name']??'')['toLowerCase']()==='rating'&&/^\d+(\.\d+)?$/['test'](String(cJ['value']??''))),cD=new Map();for(const cJ of cB){String(cJ['name']??'')['toLowerCase']()==='review'&&typeof cJ['entity']==='string'&&cD['set'](cJ['entity'],String(cJ['value']??''));}const cE=cC['map'](cK=>Number(cK['value'])),cF=new Map();for(const cK of cE){const cL=Math['min'](0x5,Math['max'](0x1,Math['round'](cK)));cF['set'](cL,(cF['get'](cL)??0x0)+0x1);}const cG=cE['length']>0x0?(cE['reduce']((cM,cN)=>cM+cN,0x0)/cE['length'])['toFixed'](0x1):null,cH=0x5,cI=cC['slice'](-cH)['map'](cM=>({'order':String(cM['entity']??''),'stars':Number(cM['value']),'comment':cD['get'](String(cM['entity']??''))?.['slice'](0x0,0x118)??null}));ag={'repository':cv,'count':cC['length'],'average':cG,'distribution':[0x5,0x4,0x3,0x2,0x1]['map'](cM=>({'stars':cM,'count':cF['get'](cM)??0x0}))['filter'](cM=>cM['count']>0x0||cE['length']>0x0),'samples':cI,'truncated':(cA['count']??0x0)>cB['length']};}}catch(cM){k['push']('reviews:\x20review-repository\x20aggregation\x20failed\x20('+(cM instanceof Error?cM['message']:String(cM))+')\x20—\x20non-blocking');}const ah=projectExploration([],{'truncations':[],'budgetExhausted':{},'dataGaps':k});return{'action':'service_panorama','network':j,'now_ms':Date['now'](),'service':{'address':l,'name':B,'description':q['description']??'','location':q['location']??'','published':q['bPublished']===!![],'paused':q['bPaused']===!![],'paused_time':typeof q['paused_time']==='number'?q['paused_time']:typeof q['paused_time']==='string'&&/^\d+$/['test'](q['paused_time'])?Number(q['paused_time']):null,'setting_lock_duration':balanceStr(q['setting_lock_duration']),'customer_required':Array['isArray'](q['customer_required'])?q['customer_required']:[],'compensation_fund':balanceStr(q['compensation_fund']),'compensation_fund_display':a6['display'],'compensation_fund_tip':a6['tip'],'compensation_fund_cover_cap':a9,'compensation_fund_cover_cap_display':aa?.['display']??null,'compensation_fund_cover_cap_note':ab,'compensation_fund_listing_wall':ac,'available_discounts':ae,'available_discounts_note':af,'coupon_model':ad,'sales':Y,'machine':q['machine']??null,'buy_guard':q['buy_guard']??null,'permission':q['permission']??'','um':q['um']??null,'arbitrations':Array['isArray'](q['arbitrations'])?q['arbitrations']:[],'rewards':Array['isArray'](q['rewards'])?q['rewards']:[],'reward_terms_hint':{'reward_count':Array['isArray'](q['rewards'])?q['rewards']['length']:0x0,'reward_objects':Array['isArray'](q['rewards'])?q['rewards']:[],'how':'Decode\x20the\x20incentive\x20terms\x20(per-claim\x20amount,\x20min\x20rating\x20floor,\x20claim\x20opens/closes\x20windows)\x20with\x20service_quote\x20on\x20an\x20order\x20of\x20this\x20service\x20—\x20the\x20quote\x20response\x20carries\x20the\x20full\x20reward_terms\x20block\x20per\x20reward\x20object.'},'reviews':ag,'repositories':Array['isArray'](q['repositories'])?q['repositories']:[],'order_allocators':a1,'income_recipients':a2,'payment_token':{'coin_type':M,'guidance':N(M,j)},'onchain_last_updated':G,'tags':A['tags']??[],'owner':a4,'owner_name':a5?.['name']??null},'machine_graph':D,'buy_guard':summarizeGuard(m['buy_guard']),'permission':a3,'related':{'groups':T},'supply_chain':H,'business_report':I,'recent_orders':R,'pending_allocations':S,'data_gaps':k,...ah['open_questions']['length']>0x0?{'exploration':ah}:{}};}
1
+ import{Config,LocalMark,query_serviceContext,query_object_last_updated,query_affiliations,objectTypeFromAddress,ObjectType,WowClient,getFullnodeUrl}from'@wowok/wowok';import{resolveAddress as a430a}from'../../tools/handlers/name-resolution.js';import{generateBusinessReport}from'./reverse-mapping.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{batchQueryObjectsByIds,batchQueryObjectsByRef,fetchServiceOrders,ringWindowSaturated,parseMachineNodeItems}from'../../graph/onchain/sdk-batch.js';import{buildRepositoryData}from'./object-panorama.js';import{evaluateEscrowStranded,evaluateSettlementPending}from'../../keeper/detectors.js';import{computeFundListingWall}from'../../graph/onchain/facts.js';import{classifyFundWaterLevelUnits,fundWaterReminder}from'../../knowledge/fund-layer.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;}export function buildEscrowStranded(a,b,c,d,e){const f=[];for(const g of a){try{const h=typeof g?.['allocation']==='string'?g['allocation']:undefined;if(!h)continue;const i=b['get'](h['toLowerCase']());if(!i)continue;const j=typeof g?.['progress']==='string'?g['progress']:undefined,k=j?c['get'](j['toLowerCase']()):undefined,l=i?.['data']??i,m=k?.['data']??k,n=evaluateEscrowStranded(g,l,m,d,e);if(!n)continue;f['push']({'allocation':h,'order':typeof g?.['object']==='string'?g['object']:'','current':n['current'],'history_len':n['history_len'],'balance':n['balance']['toString'](),'age_ms':n['age_ms'],'hint':n['current']===''&&n['history_len']===0x0?'never\x20advanced\x20from\x20genesis\x20—\x20if\x20age_ms\x20is\x20out\x20of\x20line\x20with\x20the\x20entry\x20flow,\x20screen\x20the\x20ENTRY\x20edge\x27s\x20guard\x20legs\x20(an\x20absolute\x20deadline\x20or\x20an\x20identity\x20window\x20the\x20buy\x20layer\x20does\x20not\x20re-check\x20—\x20the\x20Move\x20buy\x20face\x20has\x20no\x20machine-clock\x20gate);\x20the\x20escrow\x20needs\x20an\x20entry→refund\x20rail\x20or\x20an\x20operator\x20refund\x20to\x20move':'resting\x20at\x20\x27'+n['current']+'\x27\x20with\x20'+n['outgoing']+'\x20outgoing\x20forward(s)\x20—\x20if\x20age_ms\x20is\x20out\x20of\x20line,\x20screen\x20that\x20node\x27s\x20edge\x20guards\x20(closing\x20windows\x20/\x20deadlines);\x20the\x20escrow\x20moves\x20only\x20when\x20one\x20of\x20them\x20becomes\x20satisfiable'});}catch{continue;}}return f;}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 function buildPendingAllocations(a,b,c,d){const e=[];for(const f of a){try{const g=typeof f?.['allocation']==='string'?f['allocation']:undefined;if(!g)continue;const h=b['get'](g['toLowerCase']());if(!h)continue;const i=typeof f?.['progress']==='string'?f['progress']:undefined,j=i?c['get'](i['toLowerCase']()):undefined,k=h?.['data']??h,l=j?.['data']??j,m=evaluateSettlementPending(f,k,l,d);if(!m)continue;e['push']({'allocation':g,'order':typeof f?.['object']==='string'?f['object']:'','balance':m['balance']['toString'](),'terminal_node':m['terminal_node'],'is_refund_terminal':m['is_refund_terminal'],'candidate_guards':m['guards']});}catch{continue;}}return e;}export async function handleServicePanorama(b){const c=b['object_address']??b['service_address']??requireField(undefined,'object_address\x20(or\x20service_address)'),h=b['context_network']??undefined;let j=h??await Config['Instance']()['network_get']();const k=[];let l=await a430a(c,'service'),m=await query_serviceContext({'service':l,'include_machine_nodes':!![],'network':j});if(!m?.['service']&&h){const ai=await Config['Instance']()['network_get']();ai&&ai!==j&&(j=ai,m=await query_serviceContext({'service':l,'include_machine_nodes':!![],'network':j}));}const q=m['service'];l=q['object']??l;const w=new Set(),x=aj=>{if(aj)w['add'](aj);};x(l),x(q['machine']),x(q['permission']),x(q['um']);for(const aj of q['arbitrations']??[])x(aj);for(const ak of q['rewards']??[])x(ak);for(const al of q['repositories']??[])x(al);const y=m['permission'];if(y){const am=Array['isArray'](y['admin'])?y['admin']:[];am[0x0]&&x(typeof am[0x0]==='string'?am[0x0]:am[0x0]?.['account']);if(y['builder'])x(y['builder']);}const z=await markOfMany([...w]),A=z['get'](l)??{'name':null,'tags':[],'updated_at_ms':null},B=A['name'],C=an=>an?z['get'](an)??{'name':null,'tags':[],'updated_at_ms':null}:{'name':null,'tags':[],'updated_at_ms':null};let D=null;const E=m['machine'],F=m['machine_nodes']??[];if(E||F['length']>0x0){const {nodes:an,edges:ao}=buildMachineGraph(F);D={'address':E?.['object']??q['machine']??'','name':C(E?.['object']??q['machine'])['name'],'description':E?.['description']??null,'published':typeof E?.['bPublished']==='boolean'?E['bPublished']:null,'paused':typeof E?.['bPaused']==='boolean'?E['bPaused']:null,'node_count':typeof E?.['node_count']==='number'?E['node_count']:null,'consensus_repositories':Array['isArray'](E?.['consensus_repositories'])?E['consensus_repositories']:[],'nodes':an,'edges':ao};}let G=null;try{const ap=await query_object_last_updated({'object':l,'network':j});ap?.['timestamp_ms']&&(G={'timestamp_ms':ap['timestamp_ms'],'digest':ap['digest']??null,'sender':ap['sender']??null});}catch{k['push']('onchain_last_updated:\x20query\x20failed\x20(non-blocking)');}let H=null;try{H=await resolveSupplyChainGraph(l,j);}catch{k['push']('supply_chain:\x20resolution\x20failed\x20(non-blocking)');}let I=null,J=[];const K=q?.['type_raw']??q?.['type']??'',L=K['match'](/<(.+)>$/),M=L?L[0x1]:null,N=(aq,ar)=>{const as=[];return aq?as['push']('Pricing\x20&\x20settlement\x20coin:\x20'+aq+'\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.'):as['push']('Pricing\x20&\x20settlement\x20coin:\x20unavailable\x20from\x20the\x20Service\x20type\x20(no\x20generic\x20found)\x20—\x20treat\x20amounts\x20as\x20raw\x20smallest\x20units.'),as['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'](ar)?as['push']('Testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20testnet\x20services\x20stay\x20WOW-denominated;\x20multi-token\x20pricing\x20is\x20a\x20mainnet\x20capability.'):as['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.'),as['join']('\x20');},O=aq=>formatMoneyAnnotation(aq,M,j),P=0x3,Q=0x32;let R=null,S=[];try{const aq=await fetchServiceOrders(l,j,!![]),ar=Array['isArray'](aq?.['items'])?aq['items']:[],as=ar['slice'](-Q),at=ar['slice'](-P),au=as['map'](aT=>typeof aT?.['who']==='string'?aT['who']:'')['filter'](aT=>aT!==''),av=at['map'](aT=>typeof aT?.['who']==='string'?aT['who']:'')['filter'](aT=>aT!==''),aw=new Map();try{if(au['length']>0x0){const aT=await batchQueryObjectsByIds(au,j,!![]);for(const aU of aT){aU&&aU['type']===ObjectType['Order']&&aw['set'](aU['object'],aU);}}}catch{k['push']('recent_orders:\x20order\x20details\x20unavailable\x20(non-blocking)');}const ax=new Map(),ay=new Map();try{const aV=new Set();for(const aW of aw['values']()){if(aW?.['allocation'])aV['add'](aW['allocation']);}if(aV['size']>0x0){const aX=await batchQueryObjectsByIds(Array['from'](aV),j,!![]);for(const aY of aX){if(!aY?.['object'])continue;if(aY['type']===ObjectType['Allocation']){ay['set'](String(aY['object'])['toLowerCase'](),aY);const aZ=Number(aY?.['balance']??0x0);ax['set'](aY['object'],Number['isFinite'](aZ)&&aZ===0x0?'allocated':'pending');}}}}catch{k['push']('recent_orders:\x20allocation\x20details\x20unavailable\x20(non-blocking)');}const az=new Map(),aA=new Map();try{const b0=new Set();for(const b1 of av){const b2=aw['get'](b1);if(b2?.['progress'])b0['add'](b2['progress']);}if(b0['size']>0x0){const b3=await batchQueryObjectsByIds(Array['from'](b0),j,!![]);for(const b4 of b3){if(!b4?.['object'])continue;if(b4['type']===ObjectType['Progress']){const b5=b4?.['current'];az['set'](b4['object'],typeof b5==='string'&&b5!==''?b5:null),aA['set'](b4['object'],Number(b4?.['current_time'])||null);}}}}catch{k['push']('recent_orders:\x20progress\x20details\x20unavailable\x20(non-blocking)');}J=Array['from'](aw['values']())['map'](b6=>({'id':b6['object'],'created_at_ms':Number(b6['time'])||undefined,'claimed_by':b6['claimed_by']??null,'current_node':b6['progress']?az['get'](b6['progress'])??null:null}));const aB=new Map();try{const b6=av,b7=await Promise['allSettled'](b6['map'](b8=>query_object_last_updated({'object':b8,'network':j})));for(let b8=0x0;b8<b6['length'];b8++){const b9=b7[b8];aB['set'](b6[b8],b9['status']==='fulfilled'&&b9['value']?.['timestamp_ms']?Number(b9['value']['timestamp_ms'])||null:null);}}catch{k['push']('recent_orders:\x20order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const aC=await Promise['all'](at['map'](async ba=>{const bb=typeof ba?.['who']==='string'?ba['who']:'',bc=aw['get'](bb),bd=bc?.['amount']!==null&&bc?.['amount']!==undefined?String(bc['amount']):'',be=await O(bd);return{'order':bb,'time':typeof ba?.['time']==='number'?ba['time']:0x0,'updated_ms':aB['get'](bb)??null,'amount':bd,'amount_display':be['display'],'amount_tip':be['tip'],'progress':bc?.['progress']??null,'allocation':bc?.['allocation']??null,'disputes':Array['isArray'](bc?.['dispute'])?bc['dispute']:[],'agent':Array['isArray'](bc?.['agent'])?bc['agent']:[],'owner':ownerAddr(bc?.['builder']??bc?.['owner']),'claimed_by':bc?.['claimed_by']??null,'required_info':bc?.['required_info']??null,'progress_next':bc?.['progress']?az['get'](bc['progress'])??null:null,'progress_since':bc?.['progress']?aA['get'](bc['progress'])??null:null,'allocation_state':bc?.['allocation']?ax['get'](bc['allocation'])??'pending':'none','bought':await Promise['all']((Array['isArray'](bc?.['items'])?bc['items']:[])['map'](async bf=>({'name':String(bf?.['name']??''),'price_display':(await O(bf?.['price']!==null&&bf?.['price']!==undefined?String(bf['price']):null))['display'],'quantity':String(bf?.['quantity']??'0'),'wip_hash':String(bf?.['wip_hash']??'')})))};})),aD=aC['filter'](ba=>ba['order']!==''),aE=au['map'](ba=>aw['get'](ba))['filter'](ba=>!!ba);let aF=0x0n,aG=0x0,aH=0x0,aI=0x0,aJ=0x0,aK=0x0,aL=null,aM=null;for(const ba of aE){const bb=ba?.['amount']!==null&&ba?.['amount']!==undefined?String(ba['amount']):'';/^\d+$/['test'](bb)&&(aF+=BigInt(bb),aG++);if(Array['isArray'](ba?.['dispute'])&&ba['dispute']['length']>0x0)aH++;const bc=ba?.['allocation']?ax['get'](ba['allocation'])??'pending':'none';if(bc==='pending')aI++;else{if(bc==='allocated')aJ++;else aK++;}}for(const bd of as){if(typeof bd?.['time']==='number'){if(aL===null||bd['time']<aL)aL=bd['time'];if(aM===null||bd['time']>aM)aM=bd['time'];}}try{const be=aE['filter'](bh=>typeof bh?.['allocation']==='string'&&ay['has'](bh['allocation']['toLowerCase']())),bf=new Map(),bg=new Set();for(const bh of be){typeof bh?.['progress']==='string'&&bh['progress']['startsWith']('0x')&&bg['add'](bh['progress']);}if(bg['size']>0x0){const bi=await batchQueryObjectsByIds(Array['from'](bg),j,!![]);for(const bj of bi){if(bj?.['object'])bf['set'](String(bj['object'])['toLowerCase'](),bj);}}S=buildPendingAllocations(be,ay,bf,parseMachineNodeItems(F));}catch(bk){k['push']('pending_allocations:\x20settlement\x20probe\x20unavailable\x20(non-blocking):\x20'+String(bk?.['message']??bk));}const aN=aG>0x0?aF['toString']():null,aO=aN!==null?await O(aN):null,aP=ar['length'],aQ=aq?.['ring_saturated']??ringWindowSaturated(aP),aR=aD['length'],aS='Analyze\x20ALL\x20orders\x20of\x20Service\x20'+l+'\x20('+j+')\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'+aP+(aQ?',\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.';R={'count':aP,'window_saturated':aQ,'preview_truncated':aP>aR,'stats':{'scope_count':aE['length'],'scoped':aE['length']<aP,'amount_sum_raw':aN,'amount_sum_display':aO?.['display']??null,'amount_sum_tip':aO?.['tip']??null,'amount_known_count':aG,'disputed_order_count':aH,'allocation_pending_count':aI,'allocation_allocated_count':aJ,'allocation_none_count':aK,'allocation_settlement_pending_count':S['length'],'first_created_ms':aL,'last_created_ms':aM},...aP>aR?{'drilldown':{'total_count':aP,'analyzed_count':aR,'stats_scope_count':aE['length'],'prompt':aS},'order_addresses':aE['map'](bl=>bl['object'])}:{},'items':aD};}catch{k['push']('recent_orders:\x20reverse-index\x20query\x20failed\x20(non-blocking)');}try{const bl=[q,m['machine'],m['buy_guard'],...m['allocator_guards']??[]]['filter'](Boolean),bm=Object['values'](m['referenced']??{}),bn=(q['arbitrations']??[])['map'](bo=>{const bp=bm['find'](br=>br?.['object']===bo||br?.['id']===bo),bq=typeof bp?.['bPaused']==='boolean'?bp['bPaused']:undefined;return{'found':bq!==undefined,'paused':bq};});I=generateBusinessReport({'objects':bl,'machine_nodes':F['map'](bo=>({'name':bo['name']})),'machine_edges':D?.['edges']?D['edges']['map'](bo=>({'from':bo['from'],'to':bo['to'],'forward_count':bo['forwards']?.['length']??0x0,'unguarded_forward_count':(bo['forwards']??[])['filter'](bp=>bp?.['guard']==null)['length']})):undefined,'orders':J['length']>0x0?J:undefined,'now_ms':Date['now'](),...bn['length']>0x0?{'arbitrations':bn}:{}});}catch{k['push']('business_report:\x20generation\x20failed\x20(non-blocking)');}const T=[];try{const bo=await query_affiliations({'address':l,'no_cache':!![],'network':j}),bp=new Set(),bq=new Map();for(const bs of bo?.['entries']??[]){const bt=typeof bs?.['who']==='string'?bs['who']:'';if(!bt||bp['has'](bt))continue;bp['add'](bt);const bu=objectTypeFromAddress(bt);if(!bu)continue;if(bu===ObjectType['Order'])continue;const bv=String(bu);let bw=bq['get'](bv);!bw&&(bw=[],bq['set'](bv,bw)),bw['push']({'address':bt,'type_label':bv,'name':C(bt)['name'],'time':typeof bs?.['time']==='number'?bs['time']:null,'via':typeof bs?.['table']==='string'?bs['table']:null});}const br=['Progress','Allocation','Payment','Guard'];for(const bx of br){const by=bq['get'](bx);by&&by['length']>0x0&&(T['push']({'type_label':bx,'items':by}),bq['delete'](bx));}for(const [bz,bA]of bq){if(bA['length']>0x0)T['push']({'type_label':bz,'items':bA});}}catch{k['push']('related:\x20global-table\x20lookup\x20failed\x20(non-blocking)');}const U=new Set(),V=bB=>{typeof bB==='string'&&/^0x[0-9a-fA-F]{40,64}$/['test'](bB)&&U['add'](bB['toLowerCase']());};V(q['buy_guard']);for(const bB of F){for(const bC of bB?.['pairs']??[]){for(const bD of bC?.['forwards']??[])V(bD?.['guard']);}}for(const bE of q['order_allocators']?.['allocators']??[])V(bE?.['guard']);for(const bF of m['allocator_guards']??[])V(bF?.['object']);for(const bG of Object['values'](m['referenced']??{})){const bH=bG;if(!bH||typeof bH!=='object')continue;if(bH['type']===ObjectType['Reward']){for(const bI of bH['guards']??[])V(bI?.['guard']);}if(bH['type']===ObjectType['Treasury']){for(const bJ of bH['external_withdraw_guard']??[])V(bJ?.['guard']);for(const bK of bH['external_deposit_guard']??[])V(bK?.['guard']);}(bH['type']===ObjectType['Arbitration']||bH['type']===ObjectType['Arb'])&&V(bH['voting_guard']);}const W=T['find'](bL=>bL['type_label']===String(ObjectType['Guard']));if(W){W['items']=W['items']['filter'](bL=>!U['has'](bL['address']['toLowerCase']()));if(W['items']['length']===0x0)T['splice'](T['indexOf'](W),0x1);else{const bL=W['items'];try{const bM=await batchQueryObjectsByIds(bL['map'](bO=>bO['address']),j,!![]),bN=new Map();for(const bO of bM){if(bO?.['object'])bN['set'](String(bO['object'])['toLowerCase'](),bO);}for(const bP of bL){const bQ=bN['get'](bP['address']['toLowerCase']());if(!bQ){bP['explanation']=null;continue;}const bR=Array['isArray'](bQ['table'])?bQ['table']:[],bS=[];let bT=0x0;for(const bV of bR){if(bV?.['b_submission']===!![]){bT++;continue;}bV?.['value_type']==='Address'&&typeof bV?.['value']==='string'&&bV['value']['startsWith']('0x')&&bS['push'](bV['value']);}const bU=bS['some'](bW=>bW['toLowerCase']()===l['toLowerCase']());bP['explanation']={'description':typeof bQ['description']==='string'?bQ['description']:null,'table_refs':bS,'references_this_service':bU,'submission_slots':bT,'note':bU?'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{k['push']('related:\x20unbound-guard\x20explanation\x20unavailable\x20(non-blocking)');}}}const X=new Map();for(const bW of m['allocator_guards']??[]){const bX=bW;if(bX?.['object'])X['set'](String(bX['object'])['toLowerCase'](),bX);}const Y=[];for(const bY of Array['isArray'](q['sales'])?q['sales']:[]){const bZ=balanceStr(bY?.['price']),c0=await O(bZ);Y['push']({'name':typeof bY?.['name']==='string'?bY['name']:'','price':bZ,'price_display':c0['display'],'price_tip':c0['tip'],'stock':balanceStr(bY?.['stock']),'suspension':bY?.['suspension']===!![],'restock_on_refund':bY?.['restock_on_refund']===!![],'wip':typeof bY?.['wip']==='string'?bY['wip']:'','wip_hash':typeof bY?.['wip_hash']==='string'?bY['wip_hash']:''});}const Z=c1=>c1===0x0?'amount':c1===0x2?'surplus':'rate',a0=c1=>{const c2=c1?.['who'];if(c2&&typeof c2==='object'&&'Entity'in c2){const c3=c2['Entity'],c4=typeof c3==='string'?c3:typeof c3?.['name_or_address']==='string'?c3['name_or_address']:null;return{'who':c4?'Entity\x20'+c4:'Entity','entity':c4&&/^0x[0-9a-fA-F]{6,64}$/['test'](c4)?c4:null,'mode':Z(c1?.['mode']),'value':balanceStr(c1?.['sharing'])};}if(c2&&typeof c2==='object'&&'GuardIdentifier'in c2)return{'who':'Guard\x20identifier\x20#'+c2['GuardIdentifier'],'entity':null,'mode':Z(c1?.['mode']),'value':balanceStr(c1?.['sharing'])};return{'who':'Signer','entity':null,'mode':Z(c1?.['mode']),'value':balanceStr(c1?.['sharing'])};},a1=q['order_allocators']?{'description':q['order_allocators']['description']??'','threshold':balanceStr(q['order_allocators']['threshold']),'allocators':(q['order_allocators']['allocators']??[])['map'](c1=>({'guard':c1['guard'],'sharing_count':Array['isArray'](c1['sharing'])?c1['sharing']['length']:0x0,'sharing':(Array['isArray'](c1['sharing'])?c1['sharing']:[])['map'](a0),'max':balanceStr(c1['max']??null),'guard_summary':summarizeGuard(X['get'](String(c1['guard']??'')['toLowerCase']()))}))}:null,a2=[];{const c1=new Map();for(const c2 of q['order_allocators']?.['allocators']??[]){for(const c3 of Array['isArray'](c2['sharing'])?c2['sharing']:[]){const c4=a0(c3);if(c4['entity']){const c5=c4['entity']['toLowerCase'](),c6=c1['get'](c5)??{'raw':c4['entity'],'guards':[]};c6['guards']['push'](c2['guard']??''),c1['set'](c5,c6);}}}if(c1['size']>0x0)try{const c7=await batchQueryObjectsByIds([...c1['keys']()],j,!![]),c8=new Map();for(const c9 of c7){if(c9?.['object'])c8['set'](String(c9['object'])['toLowerCase'](),c9);}for(const [ca,cb]of c1){const cc=c8['get'](ca),cd='order_allocators\x20sharing\x20of\x20allocator\x20guard\x20'+cb['guards'][0x0];if(cc&&cc['permission']!==undefined){const ce=balanceStr(cc['balance']),cf=await O(ce);a2['push']({'address':String(cc['object']),'kind':'treasury','description':typeof cc['description']==='string'?cc['description']:null,'permission':typeof cc['permission']==='string'?cc['permission']:null,'balance':ce,'balance_display':cf['display'],'balance_tip':cf['tip'],'external_deposit_guard_count':Array['isArray'](cc['external_deposit_guard'])?cc['external_deposit_guard']['length']:null,'external_withdraw_guard_count':Array['isArray'](cc['external_withdraw_guard'])?cc['external_withdraw_guard']['length']:null,'via':cd});}else a2['push']({'address':cb['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':cd});}}catch{k['push']('income_recipients:\x20Sharing\x20entity\x20read\x20failed\x20(non-blocking)');}}const a3=summarizePermission(m['permission'],C(q['permission'])),a4=a3?.['owner']??G?.['sender']??null,a5=a4?await markOf(a4):null,a6=await O(balanceStr(q['compensation_fund'])),a7=balanceStr(q['compensation_fund']),a8=/^\d+$/['test'](a7?.['trim']()??'')?BigInt(a7['trim']()):null,a9=a8===null?null:(a8/0x3n)['toString'](),aa=a9===null?null:await O(a9),ab=a8===null?null:a8===0x0n?'No\x20compensation\x20fund:\x20this\x20Service\x20carries\x20NO\x20payout\x20protection\x20—\x20a\x20won\x20arbitration\x20award\x20cannot\x20be\x20paid\x20(the\x20claim\x20aborts,\x20code\x2027).\x20Running\x20without\x20a\x20fund\x20is\x20a\x20legitimate\x20merchant\x20choice,\x20but\x20it\x20is\x20one\x20a\x20buyer\x20should\x20see\x20before\x20ordering.':'Orders\x20at\x20or\x20under\x20this\x20cap\x20are\x20fully\x20protected\x20(award\x20ceiling\x203x\x20order).\x20Above\x20the\x20cap\x20there\x20is\x20NO\x20partial\x20payout\x20—\x20settlement\x20is\x20all-or-nothing\x20and\x20the\x20claim\x20aborts\x20(code\x2027)\x20until\x20the\x20fund\x20covers\x20the\x20award;\x20the\x20order\x20itself\x20is\x20unaffected.';let ac=null;if(a8!==null){const cg=Y['filter'](co=>!co['suspension']&&/^\d+$/['test'](co['price']?.['trim']()??''))['map'](co=>({'name':co['name'],'price':BigInt(co['price']['trim']())})),ch=computeFundListingWall(a8,cg),ci=await Promise['all'](ch['blocked']['map'](async co=>({'name':co['name'],'price':co['price']['toString'](),'price_display':(await O(co['price']['toString']()))['display']}))),cj=ci['length']===0x0?null:'The\x20fund\x20currently\x20backs\x20orders\x20up\x20to\x20'+(aa?.['display']??a9)+'.\x20'+((ci['length']===0x1?'1\x20listing\x20is':ci['length']+'\x20listings\x20are')+'\x20priced\x20above\x20that\x20and\x20check\x20out\x20UNDER-COVERED\x20—\x20the\x20order\x20proceeds\x20with\x20a\x20buy-time\x20warning\x20(拍板⑤\x20dm-mtw-261027\x20demoted\x20the\x20refusal;\x20no\x20money\x20is\x20blocked),\x20but\x20the\x20fund\x20cannot\x20back\x20its\x20maximum\x20award:\x20a\x20ruling\x20at\x20the\x20cap\x20aborts\x20code\x2027\x20(claim\x20NOT\x20consumed)\x20until\x20a\x20top-up.\x20')+'The\x20highest-priced\x20listing\x20is\x20affected\x20first;\x20top\x20the\x20fund\x20above\x203x\x20a\x20listing\x27s\x20price\x20(service.compensation_fund_add)\x20or\x20cut\x20the\x20price\x20to\x20fully\x20cover\x20it.\x20'+'This\x20recomputes\x20on\x20every\x20read:\x20after\x20every\x20award\x20that\x20spends\x20the\x20fund,\x20re-check\x20your\x20top\x20listing.',ck=cg['reduce']((co,cp)=>cp['price']>co?cp['price']:co,0x0n),cl=ck*0x3n,cm=a8<=0x0n?'depleted':classifyFundWaterLevelUnits(a8,cl)??'healthy';let cn=null;cm!=='healthy'&&(cn=fundWaterReminder(cm,{'balance':a8<=0x0n?'0':(await O(a8['toString']()))['display'],'threshold':(await O(cl['toString']()))['display']})),ac={'blocked':ci,'note':cj,'water_level':cm,'water_reminder':cn};}const ad='Coupons\x20are\x20Discount\x20objects\x20minted\x20PER\x20RECIPIENT:\x20only\x20the\x20current\x20holder\x20can\x20redeem\x20(order_new.buy.discount,\x20by\x20name\x20or\x20object\x20id\x20—\x20a\x20holder\x20transfer\x20goes\x20via\x20service\x20discount_send);\x20redemption\x20is\x20computed\x20on-chain\x20at\x20buy,\x20the\x20coupon\x20BURNS\x20on\x20use,\x20and\x20a\x20refund\x20returns\x20MONEY\x20only\x20—\x20a\x20spent\x20coupon\x20is\x20never\x20restored\x20(the\x20chain\x20has\x20no\x20coupon-restore\x20primitive).';let ae=null,af=null;if(a4&&a4['startsWith']('0x'))try{const co=await Config['Instance']()['network_get'](j),cp=new WowClient({'url':getFullnodeUrl(co),'network':co}),cq=await cp['getOwnedObjects']({'owner':a4,'options':{'showContent':!![],'showType':!![]},'limit':0x33}),cr=Array['isArray'](cq?.['data'])?cq['data']:[],cs=cr['length']>0x32||cq?.['hasNextPage']===!![],ct=cr['slice'](0x0,0x32)['map'](cu=>cu?.['data'])['filter'](cu=>typeof cu?.['type']==='string'&&cu['type']['includes']('::service::Discount')&&cu?.['content']?.['fields'])['filter'](cu=>{const cv=cu['content']['fields']['service'],cw=typeof cv==='string'?cv:cv&&typeof cv==='object'?String(cv['id']??''):'';return!cw||cw['toLowerCase']()===l['toLowerCase']();});ae=await Promise['all'](ct['map'](async cu=>{const cv=cu['content']?.['fields']??{},cw=Number(cv['discount_type'])===0x0,cx=balanceStr(cv['off'])??'0',cy=cw?(Number(BigInt(cx))/0x64)['toFixed'](0x2)+'%\x20off':(await O(cx))['display']+'\x20off';return{'object':String(cu['objectId']),'name':typeof cv['name']==='string'&&cv['name']['length']>0x0?cv['name']:null,'kind_display':cy,'expires_at_ms':cv['time_ms_end']!=null?String(cv['time_ms_end']):null,'transferable':cv['transferable']===!![]?!![]:cv['transferable']===![]?![]:null};})),af=ct['length']===0x0?null:ct['length']+'\x20undistributed\x20coupon(s)\x20still\x20held\x20by\x20the\x20service\x20owner'+(cs?'\x20(first\x20page\x20of\x20the\x20owner\x27s\x20objects\x20scanned\x20—\x20more\x20stock\x20may\x20exist;\x20re-check\x20with\x20query_objects)':'')+'.\x20Buyers\x20redeem\x20at\x20buy\x20via\x20order_new.buy.discount\x20(coupon\x20name\x20or\x20object\x20id).';}catch{k['push']('available_discounts:\x20owner\x20coupon\x20scan\x20failed\x20(non-blocking)');}let ag=null;if(Array['isArray'](q['repositories'])&&q['repositories']['length']>0x0)try{const cu=await batchQueryObjectsByRef(q['repositories']['map'](cw=>String(cw)),j,!![]);let cv=null;for(const [cw,cx]of cu){const cy=cx?.['data']??cx,cz=Array['isArray'](cy?.['policies'])?cy['policies']:[];if(cz['some'](cA=>String(cA?.['name']??'')['toLowerCase']()==='rating')){cv=String(cx?.['object']??cw);break;}}if(cv!==null){const cA=await buildRepositoryData(cv,j,k),cB=Array['isArray'](cA['items'])?cA['items']:[],cC=cB['filter'](cJ=>String(cJ['name']??'')['toLowerCase']()==='rating'&&/^\d+(\.\d+)?$/['test'](String(cJ['value']??''))),cD=new Map();for(const cJ of cB){String(cJ['name']??'')['toLowerCase']()==='review'&&typeof cJ['entity']==='string'&&cD['set'](cJ['entity'],String(cJ['value']??''));}const cE=cC['map'](cK=>Number(cK['value'])),cF=new Map();for(const cK of cE){const cL=Math['min'](0x5,Math['max'](0x1,Math['round'](cK)));cF['set'](cL,(cF['get'](cL)??0x0)+0x1);}const cG=cE['length']>0x0?(cE['reduce']((cM,cN)=>cM+cN,0x0)/cE['length'])['toFixed'](0x1):null,cH=0x5,cI=cC['slice'](-cH)['map'](cM=>({'order':String(cM['entity']??''),'stars':Number(cM['value']),'comment':cD['get'](String(cM['entity']??''))?.['slice'](0x0,0x118)??null}));ag={'repository':cv,'count':cC['length'],'average':cG,'distribution':[0x5,0x4,0x3,0x2,0x1]['map'](cM=>({'stars':cM,'count':cF['get'](cM)??0x0}))['filter'](cM=>cM['count']>0x0||cE['length']>0x0),'samples':cI,'truncated':(cA['count']??0x0)>cB['length']};}}catch(cM){k['push']('reviews:\x20review-repository\x20aggregation\x20failed\x20('+(cM instanceof Error?cM['message']:String(cM))+')\x20—\x20non-blocking');}const ah=projectExploration([],{'truncations':[],'budgetExhausted':{},'dataGaps':k});return{'action':'service_panorama','network':j,'now_ms':Date['now'](),'service':{'address':l,'name':B,'description':q['description']??'','location':q['location']??'','published':q['bPublished']===!![],'paused':q['bPaused']===!![],'paused_time':typeof q['paused_time']==='number'?q['paused_time']:typeof q['paused_time']==='string'&&/^\d+$/['test'](q['paused_time'])?Number(q['paused_time']):null,'setting_lock_duration':balanceStr(q['setting_lock_duration']),'customer_required':Array['isArray'](q['customer_required'])?q['customer_required']:[],'compensation_fund':balanceStr(q['compensation_fund']),'compensation_fund_display':a6['display'],'compensation_fund_tip':a6['tip'],'compensation_fund_cover_cap':a9,'compensation_fund_cover_cap_display':aa?.['display']??null,'compensation_fund_cover_cap_note':ab,'compensation_fund_listing_wall':ac,'available_discounts':ae,'available_discounts_note':af,'coupon_model':ad,'sales':Y,'machine':q['machine']??null,'buy_guard':q['buy_guard']??null,'permission':q['permission']??'','um':q['um']??null,'arbitrations':Array['isArray'](q['arbitrations'])?q['arbitrations']:[],'rewards':Array['isArray'](q['rewards'])?q['rewards']:[],'reward_terms_hint':{'reward_count':Array['isArray'](q['rewards'])?q['rewards']['length']:0x0,'reward_objects':Array['isArray'](q['rewards'])?q['rewards']:[],'how':'Decode\x20the\x20incentive\x20terms\x20(per-claim\x20amount,\x20min\x20rating\x20floor,\x20claim\x20opens/closes\x20windows)\x20with\x20service_quote\x20on\x20an\x20order\x20of\x20this\x20service\x20—\x20the\x20quote\x20response\x20carries\x20the\x20full\x20reward_terms\x20block\x20per\x20reward\x20object.'},'reviews':ag,'repositories':Array['isArray'](q['repositories'])?q['repositories']:[],'order_allocators':a1,'income_recipients':a2,'payment_token':{'coin_type':M,'guidance':N(M,j)},'onchain_last_updated':G,'tags':A['tags']??[],'owner':a4,'owner_name':a5?.['name']??null},'machine_graph':D,'buy_guard':summarizeGuard(m['buy_guard']),'permission':a3,'related':{'groups':T},'supply_chain':H,'business_report':I,'recent_orders':R,'pending_allocations':S,'data_gaps':k,...ah['open_questions']['length']>0x0?{'exploration':ah}:{}};}