@wowok/agent-mcp 3.0.4 → 3.0.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 (248) hide show
  1. package/dist/evaluation/path-reasoning.d.ts +4 -2
  2. package/dist/evaluation/path-reasoning.js +1 -1
  3. package/dist/extensions/constraint-registry.d.ts +2 -2
  4. package/dist/extensions/constraint-registry.js +1 -1
  5. package/dist/extensions/custom-registry-file.d.ts +22 -0
  6. package/dist/extensions/custom-registry-file.js +1 -0
  7. package/dist/extensions/index.d.ts +2 -1
  8. package/dist/extensions/index.js +1 -1
  9. package/dist/extensions/industry-pack.d.ts +7 -0
  10. package/dist/extensions/industry-pack.js +1 -1
  11. package/dist/extensions/metric-registry.d.ts +2 -2
  12. package/dist/extensions/metric-registry.js +1 -1
  13. package/dist/extensions/modes.js +1 -1
  14. package/dist/extensions/registry.d.ts +2 -2
  15. package/dist/extensions/registry.js +1 -1
  16. package/dist/extensions/types.d.ts +4 -0
  17. package/dist/goal/GoalEngine.d.ts +13 -1
  18. package/dist/goal/GoalEngine.js +1 -1
  19. package/dist/goal/next-steps.d.ts +12 -0
  20. package/dist/goal/next-steps.js +1 -0
  21. package/dist/goal/pursue.d.ts +18 -0
  22. package/dist/goal/pursue.js +1 -0
  23. package/dist/goal/types.d.ts +72 -0
  24. package/dist/goal/types.js +1 -1
  25. package/dist/graph/onchain/analyze.d.ts +44 -0
  26. package/dist/graph/onchain/analyze.js +1 -0
  27. package/dist/graph/onchain/analyze.spec.d.ts +1 -0
  28. package/dist/graph/onchain/analyze.spec.js +1 -0
  29. package/dist/graph/onchain/anti-cheat.d.ts +39 -0
  30. package/dist/graph/onchain/anti-cheat.js +1 -0
  31. package/dist/graph/onchain/anti-cheat.spec.d.ts +1 -0
  32. package/dist/graph/onchain/anti-cheat.spec.js +1 -0
  33. package/dist/graph/onchain/dataplane.d.ts +44 -0
  34. package/dist/graph/onchain/dataplane.js +1 -0
  35. package/dist/graph/onchain/edge-schema.d.ts +60 -0
  36. package/dist/graph/onchain/edge-schema.js +1 -0
  37. package/dist/graph/onchain/expand.d.ts +4 -0
  38. package/dist/graph/onchain/expand.js +1 -0
  39. package/dist/graph/onchain/extract.d.ts +21 -0
  40. package/dist/graph/onchain/extract.js +1 -0
  41. package/dist/graph/onchain/index.d.ts +17 -0
  42. package/dist/graph/onchain/index.js +1 -0
  43. package/dist/graph/onchain/interest.d.ts +10 -0
  44. package/dist/graph/onchain/interest.js +1 -0
  45. package/dist/graph/onchain/interest.spec.d.ts +1 -0
  46. package/dist/graph/onchain/interest.spec.js +1 -0
  47. package/dist/graph/onchain/onchain.spec.d.ts +1 -0
  48. package/dist/graph/onchain/onchain.spec.js +1 -0
  49. package/dist/graph/onchain/order-status.d.ts +53 -0
  50. package/dist/graph/onchain/order-status.js +1 -0
  51. package/dist/graph/onchain/project-relationship.d.ts +3 -0
  52. package/dist/graph/onchain/project-relationship.js +1 -0
  53. package/dist/graph/onchain/sdk-batch.d.ts +117 -0
  54. package/dist/graph/onchain/sdk-batch.js +1 -0
  55. package/dist/graph/onchain/sdk-dataplane.d.ts +40 -0
  56. package/dist/graph/onchain/sdk-dataplane.js +1 -0
  57. package/dist/graph/onchain/strategy.d.ts +54 -0
  58. package/dist/graph/onchain/strategy.js +1 -0
  59. package/dist/graph/onchain/strategy.spec.d.ts +1 -0
  60. package/dist/graph/onchain/strategy.spec.js +1 -0
  61. package/dist/graph/onchain/types.d.ts +238 -0
  62. package/dist/graph/onchain/types.js +1 -0
  63. package/dist/graph/onchain/viewport.d.ts +5 -0
  64. package/dist/graph/onchain/viewport.js +1 -0
  65. package/dist/harness/recover.js +1 -1
  66. package/dist/index.js +1 -1
  67. package/dist/intent/enrich.js +1 -1
  68. package/dist/keeper/detectors.d.ts +1 -1
  69. package/dist/keeper/detectors.js +1 -1
  70. package/dist/knowledge/account-marks.js +1 -1
  71. package/dist/knowledge/anti-cheat.d.ts +2 -37
  72. package/dist/knowledge/anti-cheat.js +1 -1
  73. package/dist/knowledge/contract-invariants.js +1 -1
  74. package/dist/knowledge/getting-started.d.ts +37 -0
  75. package/dist/knowledge/getting-started.js +1 -0
  76. package/dist/knowledge/goal-completion.js +1 -1
  77. package/dist/knowledge/guard-render.d.ts +1 -0
  78. package/dist/knowledge/guard-render.js +1 -1
  79. package/dist/knowledge/guard-submission-brief.d.ts +83 -0
  80. package/dist/knowledge/guard-submission-brief.js +1 -0
  81. package/dist/knowledge/guard-submission-prompt.d.ts +13 -0
  82. package/dist/knowledge/guard-submission-prompt.js +1 -1
  83. package/dist/knowledge/index.d.ts +6 -4
  84. package/dist/knowledge/index.js +1 -1
  85. package/dist/knowledge/industry-registry.js +1 -1
  86. package/dist/knowledge/industry-strategy.d.ts +91 -0
  87. package/dist/knowledge/industry-strategy.js +1 -0
  88. package/dist/knowledge/jsonrpc-enum.js +1 -1
  89. package/dist/knowledge/market-metrics.d.ts +14 -3
  90. package/dist/knowledge/market-metrics.js +1 -1
  91. package/dist/knowledge/migration-preflight.js +1 -1
  92. package/dist/knowledge/operation-dictionary.d.ts +1 -1
  93. package/dist/knowledge/safety-rules.js +1 -1
  94. package/dist/knowledge/scenario-topology.d.ts +6 -1
  95. package/dist/knowledge/scenario-topology.js +1 -1
  96. package/dist/knowledge/service-risk-node.d.ts +3 -0
  97. package/dist/knowledge/service-risk-node.js +1 -0
  98. package/dist/knowledge/service-risk.d.ts +2 -0
  99. package/dist/knowledge/service-risk.js +1 -1
  100. package/dist/knowledge/service-templates.d.ts +2 -0
  101. package/dist/knowledge/service-templates.js +1 -1
  102. package/dist/knowledge/strategy-manuals.d.ts +17 -0
  103. package/dist/knowledge/strategy-manuals.js +1 -0
  104. package/dist/knowledge/supply-chain.d.ts +3 -1
  105. package/dist/knowledge/supply-chain.js +1 -1
  106. package/dist/knowledge/template-registry.js +1 -1
  107. package/dist/knowledge/tools-reference.js +1 -1
  108. package/dist/knowledge/workflow-guidance.d.ts +3 -118
  109. package/dist/knowledge/workflow-guidance.js +1 -1
  110. package/dist/knowledge/workspace-lists.js +1 -1
  111. package/dist/monitor/MonitorLoop.js +1 -1
  112. package/dist/monitor/ScopeResolver.js +1 -1
  113. package/dist/participation/radar-core.d.ts +15 -15
  114. package/dist/participation/radar-core.js +1 -1
  115. package/dist/persona/analyzer.d.ts +2 -1
  116. package/dist/persona/bridge.d.ts +5 -1
  117. package/dist/persona/bridge.js +1 -1
  118. package/dist/persona/defaults.js +1 -1
  119. package/dist/persona/distill-goal.d.ts +7 -1
  120. package/dist/persona/distill-goal.js +1 -1
  121. package/dist/persona/index.d.ts +13 -3
  122. package/dist/persona/index.js +1 -1
  123. package/dist/persona/model.d.ts +12 -2
  124. package/dist/persona/model.js +1 -1
  125. package/dist/persona/overrides.d.ts +1 -0
  126. package/dist/persona/overrides.js +1 -1
  127. package/dist/persona/topology-focus.d.ts +29 -0
  128. package/dist/persona/topology-focus.js +1 -0
  129. package/dist/persona/types.d.ts +81 -0
  130. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  131. package/dist/playbooks/service-build/context-assembly.js +1 -1
  132. package/dist/playbooks/service-build/machine-nodes.js +1 -1
  133. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  134. package/dist/playbooks/service-build/object-panorama.js +1 -1
  135. package/dist/playbooks/service-build/participation-radar.js +1 -1
  136. package/dist/playbooks/service-build/relationship-profile.d.ts +1 -0
  137. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  138. package/dist/playbooks/service-build/service-panorama.d.ts +4 -0
  139. package/dist/playbooks/service-build/service-panorama.js +1 -1
  140. package/dist/playbooks/service-build/topology-query.d.ts +14 -0
  141. package/dist/playbooks/service-build/topology-query.js +1 -0
  142. package/dist/role/index.d.ts +1 -0
  143. package/dist/role/index.js +1 -1
  144. package/dist/role/profiles.d.ts +26 -0
  145. package/dist/role/profiles.js +1 -0
  146. package/dist/safety/confirm-gate.d.ts +4 -1
  147. package/dist/safety/confirm-gate.js +1 -1
  148. package/dist/schema/call/allocation.d.ts +6 -6
  149. package/dist/schema/call/bridge.d.ts +1 -1
  150. package/dist/schema/call/guard.d.ts +20 -20
  151. package/dist/schema/call/repository.js +1 -1
  152. package/dist/schema/call/semantic.js +1 -1
  153. package/dist/schema/call/service.d.ts +4 -4
  154. package/dist/schema/common/index.js +1 -1
  155. package/dist/schema/employee/index.d.ts +7 -7
  156. package/dist/schema/evaluation/index.d.ts +22 -9
  157. package/dist/schema/evaluation/index.js +1 -1
  158. package/dist/schema/goal/index.d.ts +37 -1
  159. package/dist/schema/goal/index.js +1 -1
  160. package/dist/schema/goal/planning.d.ts +1 -1
  161. package/dist/schema/index.d.ts +1 -0
  162. package/dist/schema/index.js +1 -1
  163. package/dist/schema/industry-pack/index.d.ts +7 -0
  164. package/dist/schema/industry-pack/index.js +1 -1
  165. package/dist/schema/local/index.d.ts +8 -4
  166. package/dist/schema/local/index.js +1 -1
  167. package/dist/schema/messenger/index.d.ts +318 -64
  168. package/dist/schema/messenger/index.js +1 -1
  169. package/dist/schema/operations.d.ts +146 -11
  170. package/dist/schema/operations.js +1 -1
  171. package/dist/schema/persona/index.d.ts +15743 -0
  172. package/dist/schema/persona/index.js +1 -1
  173. package/dist/schema/query/bi.d.ts +869 -2
  174. package/dist/schema/query/bi.js +1 -1
  175. package/dist/schema/query/index.d.ts +163 -41
  176. package/dist/schema/query/index.js +1 -1
  177. package/dist/schema/schema-query/index.d.ts +16 -0
  178. package/dist/schema/schema-query/index.js +1 -1
  179. package/dist/schema/schema-version.js +1 -1
  180. package/dist/schema/strategy-review/index.d.ts +137 -0
  181. package/dist/schema/strategy-review/index.js +1 -0
  182. package/dist/schema/trust/index.d.ts +6 -6
  183. package/dist/schema/workflow/index.d.ts +2 -2
  184. package/dist/schema-query-impl/index.js +1 -1
  185. package/dist/schemas/account_operation.output.json +8 -4
  186. package/dist/schemas/account_operation.schema.json +6 -2
  187. package/dist/schemas/evaluation_operation.output.json +24 -0
  188. package/dist/schemas/goal_operation.schema.json +124 -0
  189. package/dist/schemas/index.json +7 -1
  190. package/dist/schemas/industry_pack_operation.output.json +39 -0
  191. package/dist/schemas/local_mark_operation.schema.json +2 -2
  192. package/dist/schemas/messenger_operation.output.json +670 -200
  193. package/dist/schemas/messenger_operation.schema.json +66 -239
  194. package/dist/schemas/onchain_operations.schema.json +3 -3
  195. package/dist/schemas/onchain_operations_repository.schema.json +3 -3
  196. package/dist/schemas/onchain_table_data.output.json +184 -0
  197. package/dist/schemas/onchain_table_data.schema.json +43 -43
  198. package/dist/schemas/persona_operation.output.json +37778 -262
  199. package/dist/schemas/persona_operation.schema.json +5960 -1
  200. package/dist/schemas/query_toolkit.output.json +1580 -2
  201. package/dist/schemas/query_toolkit.schema.json +194 -32
  202. package/dist/schemas/schema_query.schema.json +25 -1
  203. package/dist/schemas/strategy_review_operation.output.json +532 -0
  204. package/dist/schemas/strategy_review_operation.schema.json +66 -0
  205. package/dist/schemas/wowok_buildin_info.output.json +188 -6
  206. package/dist/schemas/wowok_buildin_info.schema.json +14 -0
  207. package/dist/strategy/collectors.d.ts +66 -0
  208. package/dist/strategy/collectors.js +1 -0
  209. package/dist/strategy/collectors.spec.d.ts +1 -0
  210. package/dist/strategy/collectors.spec.js +1 -0
  211. package/dist/strategy/index.d.ts +5 -0
  212. package/dist/strategy/index.js +1 -0
  213. package/dist/strategy/metrics.d.ts +20 -0
  214. package/dist/strategy/metrics.js +1 -0
  215. package/dist/strategy/review.d.ts +48 -0
  216. package/dist/strategy/review.js +1 -0
  217. package/dist/strategy/scorecard.d.ts +32 -0
  218. package/dist/strategy/scorecard.js +1 -0
  219. package/dist/strategy/store.d.ts +26 -0
  220. package/dist/strategy/store.js +1 -0
  221. package/dist/tools/handlers/config.js +1 -1
  222. package/dist/tools/handlers/evaluation.js +1 -1
  223. package/dist/tools/handlers/goal.js +1 -1
  224. package/dist/tools/handlers/industry-pack.js +1 -1
  225. package/dist/tools/handlers/local.js +1 -1
  226. package/dist/tools/handlers/messenger.js +1 -1
  227. package/dist/tools/handlers/onchain.js +1 -1
  228. package/dist/tools/handlers/permission.js +1 -1
  229. package/dist/tools/handlers/persona.js +1 -1
  230. package/dist/tools/handlers/query.d.ts +6 -0
  231. package/dist/tools/handlers/query.js +1 -1
  232. package/dist/tools/handlers/schema-query.js +1 -1
  233. package/dist/tools/handlers/strategy-review.d.ts +2 -0
  234. package/dist/tools/handlers/strategy-review.js +1 -0
  235. package/dist/tools/handlers/watch.js +1 -1
  236. package/dist/tools/handlers/workflow.js +1 -1
  237. package/dist/tools/index.d.ts +3 -0
  238. package/dist/tools/index.js +1 -1
  239. package/dist/tools/registry/agent.js +1 -1
  240. package/dist/tools/registry/business.js +1 -1
  241. package/dist/tools/registry/local.js +1 -1
  242. package/dist/tools/registry/messenger.js +1 -1
  243. package/dist/tools/registry/query.js +1 -1
  244. package/dist/tools/rules-hook.js +1 -1
  245. package/dist/tools/shared.d.ts +2 -1
  246. package/dist/tools/shared.js +1 -1
  247. package/dist/tools/wrap.js +1 -1
  248. package/package.json +2 -2
@@ -1 +1 @@
1
- export const TOOLS_REFERENCE=[{'name':'onchain_operations','summary':'On-chain\x20object\x20creation,\x20modification,\x20and\x20publish\x20for\x20all\x2016\x20Wowok\x20object\x20types.','actions':['service','machine','guard','permission','reward','arb','progress','treasury','demand','repository','contact','order','allocation','personal','payment','proof','gen_passport','gen_proof'],'common_params':{'operation_type':'Object\x20type\x20to\x20create/modify\x20(string\x20enum).','data':'Operation\x20payload\x20—\x20shape\x20varies\x20by\x20operation_type.','object':'Object\x20name\x20or\x20address\x20(for\x20modify-by-id).','namedNew':'New\x20object\x20spec\x20(name,\x20description,\x20tags)\x20for\x20create.','env':'Execution\x20environment\x20(account,\x20network,\x20gas_budget).'},'prerequisites':['account_operation\x20(for\x20account\x20setup)'],'follow_ups':['query_toolkit\x20(verify\x20result)','local_mark_operation\x20(tag\x20object)'],'notes':['publish=true\x20is\x20irreversible\x20—\x20use\x20confirm_gate.','Service/Machine\x20require\x20publish\x20after\x20create\x20before\x20they\x20are\x20visible\x20on-chain.','Use\x20schema_query\x20with\x20action=\x27list_operations\x27\x20to\x20see\x20all\x20operation\x20schemas.']},{'name':'account_operation','summary':'Local\x20wallet\x20management\x20—\x20generate,\x20suspend,\x20resume,\x20faucet,\x20sign\x20data.','actions':['gen','resume','suspend','faucet','operate','sign','list','info'],'common_params':{'name':'Account\x20name\x20(local\x20identifier).','network':'mainnet\x20|\x20testnet\x20(determines\x20RPC).'},'prerequisites':[],'follow_ups':['onchain_operations\x20(use\x20account\x20for\x20signing)'],'notes':['100%\x20LOCAL\x20—\x20keys\x20never\x20leave\x20the\x20device.','faucet\x20only\x20works\x20on\x20testnet.']},{'name':'local_mark_operation','summary':'Local\x20address\x20book\x20—\x20map\x20human-readable\x20names\x20to\x20blockchain\x20addresses\x20with\x20tags.','actions':['add','remove','update','list','query'],'common_params':{'name':'Local\x20name.','address':'Blockchain\x20address.','tags':'Tag\x20array.'},'notes':['100%\x20LOCAL\x20—\x20never\x20on-chain.','Names\x20are\x20accepted\x20by\x20most\x20on-chain\x20query/panorama\x20tools\x20in\x20place\x20of\x20raw\x20addresses.']},{'name':'local_info_operation','summary':'Local\x20private\x20data\x20management\x20—\x20delivery\x20addresses,\x20phone\x20numbers,\x20contacts.','actions':['add','remove','update','list'],'notes':['100%\x20LOCAL\x20—\x20sensitive\x20data,\x20never\x20on-chain.']},{'name':'local_history_operation','summary':'Local\x20Explorer\x20visit\x20history\x20—\x20recently\x20viewed\x20objects,\x20newest\x20first.','actions':['list\x20(default)','add\x20(upsert\x20by\x20key)','remove\x20(by\x20keys)','clear'],'common_params':{'add':'Record\x20visits:\x20{op:\x27add\x27,\x20data:[{key,\x20address,\x20object_type?,\x20network,\x20time}]}.','remove':'Delete\x20entries:\x20{op:\x27remove\x27,\x20keys:[...]}.','clear':'Erase\x20all\x20history:\x20{op:\x27clear\x27}.'},'notes':['100%\x20LOCAL\x20—\x20visit\x20records\x20never\x20leave\x20the\x20device;\x20display\x20names\x20are\x20never\x20stored\x20(resolved\x20live\x20at\x20render).','Omit\x20every\x20operation\x20field\x20to\x20list\x20history\x20(newest\x20first,\x20auto-pruned\x20to\x20last\x2030\x20days\x20/\x20300\x20entries).','detail\x20visits\x20keep\x20the\x20object\x20type\x20tag;\x20each\x20entry\x20stores\x20the\x20stable\x20object\x20key\x20+\x20canonical\x200x\x20address\x20+\x20network\x20+\x20timestamp.']},{'name':'wip_file','summary':'Witness\x20Immutable\x20Promise\x20file\x20operations\x20—\x20generate,\x20verify,\x20sign,\x20convert.','actions':['generate','verify','sign','wip2html'],'notes':['WIP\x20hash\x20must\x20be\x20non-empty\x20—\x20compute\x20actual\x20hash\x20before\x20calling.']},{'name':'messenger_operation','summary':'Encrypted\x20messenger\x20—\x20watch/send\x20messages,\x20WTS,\x20friendslist,\x20blacklist,\x20guardlist.','actions':['watch_conversations','send_message','send_file','watch_messages','extract_zip','gen_wts','verify_wts','sign_wts','wts2html','proof_message','manage_blacklist','manage_friendslist','manage_guardlist','settings','mark_viewed','pull_messages'],'notes':['Requires\x20messenger-enabled\x20account.','30s\x20timeout\x20—\x20network\x20operations.']},{'name':'guard2file','summary':'Export\x20a\x20Guard\x20object\x27s\x20definition\x20to\x20local\x20JSON/Markdown\x20for\x20editing.','notes':['Read-only\x20—\x20use\x20query_toolkit\x20for\x20on-chain\x20queries.']},{'name':'machineNode2file','summary':'Export\x20a\x20Machine\x20object\x27s\x20node\x20definition\x20to\x20local\x20JSON/Markdown\x20for\x20editing.','notes':['Read-only\x20—\x20use\x20query_toolkit\x20for\x20on-chain\x20queries.']},{'name':'query_toolkit','summary':'Query\x20toolkit\x20covering\x20local\x20device\x20data,\x20on-chain\x20blockchain\x20data,\x20and\x20one-call\x20business-intelligence\x20panoramas/review\x20packs.','actions':['local_mark_list','account_list','local_info_list','token_list','account_balance','onchain_personal_profile','onchain_objects','onchain_received','onchain_transaction','onchain_object_history','onchain_address_activity','token_value_convert','onchain_last_updated','service_panorama','machine_panorama','object_panorama','review_pack','assemble_context','reverse_map','participation_radar'],'notes':['Read-only\x20—\x20safe\x20to\x20call\x20without\x20confirmation.','BI\x20query\x20types\x20(one-call\x20panoramas):\x20service_panorama\x20(full\x20Service\x20context:\x20workflow\x20graph\x20+\x20guards\x20+\x20trust\x20+\x20supply\x20chain\x20+\x20BusinessReport\x20+\x20recent\x20orders),\x20machine_panorama\x20(head\x20+\x20fields\x20+\x20workflow\x20graph\x20+\x20Progress\x20list),\x20object_panorama\x20(Progress/Demand/Order/Arb/Repository\x20detail\x20pages),\x20review_pack\x20(typed\x20ReviewPack\x20for\x20the\x20client\x27s\x20ReviewPackRenderer),\x20assemble_context\x20(semantic\x20context\x20from\x20on-chain\x20objects),\x20reverse_map\x20(deterministic\x20L4→L1\x20business\x20report\x20—\x20merchant\x20profile\x20/\x20user\x20risk\x20/\x20game\x20theory),\x20participation_radar\x20(in-flight\x20order\x20participation\x20analysis\x20for\x20ONE\x20account).']},{'name':'onchain_table_data','summary':'Dynamic\x20table\x20data\x20queries\x20—\x20paginated\x20table\x20queries\x20and\x20specific\x20table\x20item\x20lookups.','actions':['onchain_table','onchain_table_item_repository_data','onchain_table_item_permission_perm','onchain_table_item_entity_registrar','onchain_table_item_entity_linker','onchain_table_item_entity_contact','onchain_table_item_object_linker_core','onchain_table_item_object_linker_tx','onchain_table_item_reward_record','onchain_table_item_demand_presenter','onchain_table_item_treasury_history','onchain_table_item_machine_node','onchain_table_item_progress_history','onchain_table_item_address_mark','onchain_table_item_entity_order','onchain_orders_of_user','onchain_table_item_generic'],'notes':['Read-only\x20—\x20safe\x20for\x20exploration.','object_linker\x20core\x20(0xaae)\x20=\x20default\x20reverse\x20lookup\x20(bounded\x20core\x20objects);\x20object_linker\x20tx\x20(0xaaf)\x20=\x20operational\x20reverse\x20lookup\x20(orders/progress,\x20lossy\x20FIFO).','entity_order\x20(0xaa8)\x20=\x20global\x20entity->orders\x20reverse\x20index;\x20onchain_orders_of_user\x20resolves\x20each\x20order\x20to\x20its\x20full\x20on-chain\x20Order\x20object\x20with\x20role\x20attributes\x20(is_owner/is_agent).']},{'name':'onchain_events','summary':'Watch\x20on-chain\x20events\x20by\x20type\x20—\x20arbitration,\x20order,\x20progress,\x20demand,\x20entity.','notes':['Read-only\x20—\x20use\x20cursor\x20for\x20pagination.']},{'name':'wowok_buildin_info','summary':'Protocol\x20info\x20—\x20constants,\x20built-in\x20permissions,\x20common\x20mistakes,\x20guard\x20instructions,\x20network,\x20value\x20types,\x20bridge\x20tokens.','actions':['constants','built-in\x20permissions','common\x20mistakes','guard\x20instructions','current\x20network','value\x20types','mainnet\x20bridge\x20tokens'],'notes':['Read-only\x20—\x20authoritative\x20protocol\x20reference.','Use\x20\x27common\x20mistakes\x27\x20before\x20submitting\x20an\x20operation\x20to\x20learn\x20known\x20field-name/unit/workflow\x20pitfalls.']},{'name':'schema_query','summary':'Look\x20up\x20JSON\x20Schemas\x20for\x20MCP\x20tools\x20and\x20on-chain\x20operations\x20—\x20the\x20authoritative\x20reference.\x20Also\x20serves\x20sunk\x20knowledge:\x20tool\x20reference,\x20Guard\x20design\x20patterns,\x20safety\x20rules.','actions':['list','get','get_output','get_field','search','list_operations','get_guard_templates','get_tool_reference','get_guard_design_patterns','get_safety_rules'],'notes':['Always\x20check\x20schema\x20before\x20calling\x20an\x20unfamiliar\x20tool.','get_field\x20takes\x20a\x20dot-path\x20(field_path)\x20for\x20single-field\x20lookup.','get_tool_reference/get_guard_design_patterns/get_safety_rules\x20expose\x20the\x20knowledge\x20sunk\x20from\x20the\x20wowok-tools/guard/safety\x20skills\x20—\x20no\x20skills\x20installation\x20required.']},{'name':'bridge_operation','summary':'Cross-chain\x20bridge\x20between\x20WOW\x20and\x20EVM\x20(Ethereum\x20mainnet).\x20Mainnet\x20only.','actions':['cross_chain_wow_to_evm','cross_chain_evm_to_wow','withdraw','query_active_evm_account','query_supported_evm_chains','query_supported_tokens','query_transfer_list','query_transfer_status','manage_evm_rpc'],'notes':['Only\x20WOW\x20mainnet\x20provides\x20cross-chain\x20functionality.']},{'name':'config_operation','summary':'Runtime\x20service\x20toggles\x20—\x20enable/disable\x20Phase\x202\x20services\x20without\x20restart.','actions':['list','toggle','enable','disable','reset','info'],'notes':['GLM5:\x20harness\x20is\x20default\x20ON\x20with\x20tiered\x20enforcement\x20(off/lightweight/full).']},{'name':'trust_score','summary':'Service\x20trust\x20&\x20risk\x20assessment\x20—\x205\x20trust\x20dimensions\x20+\x204\x20risk\x20dimensions.','notes':['Use\x20when\x20user\x20asks\x20\x27is\x20this\x20service\x20trustworthy?\x27\x20or\x20\x27should\x20I\x20buy?\x27.']},{'name':'evaluation_operation','summary':'Pluggable\x20business\x20evaluations\x20—\x20risk\x20/\x20match\x20/\x20compose\x20/\x20game\x20(node\x20+\x20path)\x20/\x20evidence\x20review\x20/\x20discovery\x20/\x20market\x20/\x20arbitration\x20score\x20with\x20user\x20injection.','actions':['service_risk','demand_match','service_match','capability_gap','compose_service','node_game','arb_game','path_reasoning','evidence_review','discover_services','discover_demands','market_metrics','market_operations','anti_cheat','match_discover','arbitration_score','account_events'],'notes':['Read-only;\x20the\x20role\x20decides\x20and\x20acts\x20via\x20onchain_operations.','path_reasoning\x20=\x20path-level\x20game\x20(full-route\x20enumeration\x20+\x20ranking);\x20node_game\x20=\x20single-node\x20best\x20move.','evidence_review\x20=\x20deterministic\x20off-chain\x20evidence\x20closure\x20gate\x20(auto_pass/auto_reject/manual_review).','discover_services\x20=\x20active\x20supply\x20discovery\x20(GraphQL\x20transport\x20required):\x20enumerate\x20all\x20shared\x20Services,\x20location-gate\x20by\x20sensitivity\x20(strict/near/logistics),\x20ranked\x20+\x20consent-gated\x20scope\x20expansion.\x20Passive\x20side\x20=\x20post\x20a\x20Demand\x20(DemandPresenter).','match_discover\x20=\x20one-shot\x20intent→service\x20orchestration\x20(enumerate\x20+\x20location\x20gate\x20+\x206-dimension\x20scoring);\x20discover_demands\x20=\x20supplier-side\x20demand\x20enumeration;\x20market_metrics/market_operations\x20=\x20market\x20measurement\x20(GraphQL\x20required).','arbitration_score\x20=\x20dual-perspective\x20arbitration\x20trust\x20(user-trust\x20+\x20merchant-fairness,\x20combined\x200-100);\x20anti_cheat\x20=\x20fake-review/wash-order\x20detection;\x20account_events\x20=\x20account\x20attention\x20feed\x20(read-only).']},{'name':'watch_operation','summary':'Identity-centric\x20on-chain\x20console\x20—\x20resolve\x20who\x20the\x20account\x20is\x20against\x20an\x20object,\x20expand\x20its\x20relations,\x20and\x20enumerate\x20actionable\x20operations.','actions':['focus','expand','actions'],'notes':['Read-only;\x20distinct\x20from\x20query_toolkit\x20/\x20onchain_table_data\x20(pure\x20data,\x20no\x20identity).','focus\x20=\x20identity\x20resolution\x20(manifest\x20on-chain\x20role\x20⊕\x20persona)\x20+\x20base\x20data;\x20neutral\x20→\x20objective\x20narration,\x20operative\x20role\x20→\x20game\x20reasoning.','expand\x20=\x20direct\x20relations\x20+\x20Service\x20transparent\x20sub-order\x20purchasing\x20graph\x20(frozen\x20forward\x20guards\x20→\x20purchased\x20sub-services\x20+\x20proofs).','actions\x20=\x20actionable\x20operations\x20with\x20executability\x20judgment\x20(order-holder\x20/\x20permission-index\x20/\x20named-operator\x20paths).']},{'name':'persona_operation','summary':'User\x20identity\x20setting\x20(persona)\x20—\x20preferences,\x20strategy,\x20rules,\x20spec;\x20long-term\x20+\x20current\x20layers\x20+\x20strategy→lever\x20mapping\x20+\x20region\x20hint.','actions':['get','list','set','analyze','apply','sync','remove','strategy','region_hint','distill'],'notes':['Read/write\x20local\x20state;\x20account\x20persona\x20overrides\x20system;\x20current\x20overrides\x20long-term.','strategy\x20resolves\x20merchant\x20strategy\x20statements\x20into\x20deterministic\x20infrastructure\x20levers\x20(discount/reward/buy_guard/machine_design).','region_hint\x20reads\x20the\x20local\x20delivery\x20address\x20as\x20a\x20matching\x20hint;\x20`propose`\x20returns\x20a\x20consent-gated\x20save\x20proposal\x20(never\x20auto-writes).','distill\x20turns\x20one\x20goal\x27s\x20memory\x20(outcome,\x20process\x20problems/feedback,\x20objects)\x20into\x20a\x20CURRENT-layer\x20proposal\x20—\x20never\x20auto-writes;\x20persist\x20via\x20set/apply\x20after\x20user\x20confirmation.\x20Industry\x20pack.json\x20files\x20are\x20read-only\x20knowledge\x20and\x20never\x20receive\x20user\x20data.']},{'name':'employee_operation','summary':'Merchant\x20employee\x20organizational\x20profile\x20(LOCAL)\x20+\x20reaction\x20KPI\x20+\x20liability\x20resolution\x20+\x20incentive\x20suggestion.','actions':['set','get','remove','assess_kpi','resolve_liability','suggest_incentive'],'notes':['LOCAL\x20ONLY\x20—\x20on-chain\x20authorization\x20lives\x20in\x20the\x20merchant\x27s\x20Permission\x20(namedOperator/entity).','assess_kpi:\x20node\x20reaction\x20speed\x20vs\x20budget\x20(explicit\x20>\x20stored\x20profile\x20>\x2048h\x20default).\x20Timestamps\x20explicit\x20OR\x20auto-derived\x20from\x20the\x20progress\x20object\x27s\x20monitored\x20ProgressEvents\x20via\x20`progress`;\x20explicit\x20values\x20override\x20derived.','resolve_liability:\x20internal\x20cost\x20split\x20(merchant/employee,\x20hybrid\x20threshold);\x20outward\x20liability\x20toward\x20the\x20customer\x20is\x20ALWAYS\x20the\x20merchant\x27s;\x20order\x20user\x20must\x20be\x20compensated\x20before\x20the\x20workflow\x20resumes.','suggest_incentive:\x20KPIs\x20+\x20WIP\x20acceptance\x20+\x20liability\x20→\x20Reward\x20suggestion\x20(reward_grant/compensation_offset/correction_notice/none).\x20Suggestion\x20ONLY\x20—\x20merchant\x20confirms\x20and\x20executes\x20the\x20on-chain\x20ops\x20separately.']},{'name':'keeper_operation','summary':'Who-benefits-who-pushes\x20keeper:\x20scans\x20the\x20monitor\x20scope\x20for\x20actionable\x20state\x20(unclaimed\x20payments,\x20advanceable\x20workflow\x20nodes),\x20routes\x20tasks\x20to\x20beneficiaries;\x20manual\x20dismiss/execute\x20+\x20standing\x20auto-execute\x20rules.','actions':['tasks','dismiss','execute','rules','rule_set','rule_remove','config','config_set','scan','status'],'notes':['The\x20chain\x20has\x20NO\x20time-triggered\x20execution\x20—\x20the\x20keeper\x20scans\x20on\x20the\x20monitor\x20loop\x20cadence\x20and\x20surfaces\x20tasks\x20to\x20their\x20beneficiary.','execute\x20runs\x20the\x20on-chain\x20op\x20for\x20one\x20task\x20(user\x20decision);\x20rule_set\x20authorizes\x20auto-execution\x20per\x20detector\x20kind\x20(bounded\x20by\x20config\x20budget/cooldown).','Detectors\x20v1:\x20payment_unclaimed\x20(funds\x20sitting\x20claimable),\x20progress_actionable\x20(a\x20workflow\x20node\x20the\x20beneficiary\x20can\x20advance).']},{'name':'intent_radar','summary':'User\x20business\x20intent\x20×\x20chain\x20event\x20matching\x20—\x20persist\x20intents,\x20score\x20events\x20against\x20them.','actions':['save','list','remove','match'],'notes':['Read-only\x20w.r.t.\x20chain;\x20industry/keywords\x20resolved\x20once\x20at\x20save;\x20events\x20supplied\x20or\x20auto-pulled.']},{'name':'goal_operation','summary':'GoalEngine\x20(K3\x2024)\x20—\x20record\x20a\x20user\x20goal\x20and\x20drive\x20it\x20through\x20the\x20nine-station\x20lifecycle\x20(RECOGNIZE→…→COMPLETE)\x20with\x20monitor\x20auto-binding\x20and\x20plan-approval\x20confirm-gate\x20downgrade;\x20also\x20hosts\x20the\x20C1-C4\x20planning\x20pipeline\x20+\x20merchant\x20onboarding\x20wizard.','actions':['create','list','get','approve','advance','pause','complete','abandon','delete','analyze_intent','aggregate_risks','trace_substeps','merchant_guide'],'common_params':{'id':'Goal\x20id\x20(goal_…)\x20—\x20required\x20for\x20get/approve/advance/pause/complete/abandon/delete.','intent_text':'create:\x20raw\x20user\x20intent;\x20goal_type\x20auto-classified\x20(override\x20with\x20goal_type).','account':'create:\x20bind\x20a\x20local\x20account\x20(preflight;\x20goal\x20starts\x20at\x20\x27bound\x27).','stage':'advance:\x20forward-only\x20target\x20stage;\x20\x27paused\x27\x20holds\x20from\x20anywhere.','objects':'advance:\x20ACT-station\x20objects\x20[{type,\x20object}]\x20(deduped).','force':'complete:\x20skip\x20on-chain\x20completion\x20verification\x20(audited\x20as\x20outcome.forced).'},'follow_ups':['monitor_events\x20(goal\x20progress\x20surfaces\x20in\x20the\x20todo\x20stream)','onchain_operations\x20(execute\x20plan\x20steps\x20with\x20env.plan_approval)'],'notes':['Near-duplicate\x20create\x20ADOPTS\x20the\x20active\x20same-type\x20same-account\x20goal\x20(intent\x20Jaccard\x20≥\x200.6)\x20instead\x20of\x20forking.','approve\x20registers\x20a\x20plan\x20approval:\x20calls\x20carrying\x20env.plan_approval=<goal\x20id>\x20auto-pass\x20fail-open\x20ConfirmGate\x20levels\x20(standard/none);\x20fail-closed\x20levels\x20(irreversible/publish/amount)\x20always\x20still\x20ask.','Entering\x20\x27monitoring\x27\x20auto-binds\x20monitor\x20focus\x20(reason=\x27goal\x27,\x20goal_id-stamped)\x20for\x20the\x20goal\x27s\x20objects;\x20demand\x20goals\x20also\x20open\x20a\x20radar\x20intent.\x20complete/abandon\x20tear\x20down\x20ONLY\x20this\x20goal\x27s\x20bindings.','complete\x20verifies\x20the\x20goal-type\x20completion\x20conjunction\x20against\x20chain\x20state\x20(read-only);\x20force=true\x20bypasses\x20and\x20is\x20audited.','delete\x20removes\x20a\x20terminal\x20goal\x20entirely\x20(record\x20+\x20TaskProcess\x20dir);\x20force=true\x20extends\x20it\x20to\x20non-terminal\x20goals\x20(monitor\x20teardown\x20first).','C1-C4\x20planning\x20pipeline\x20(GLM5-31\x20§V3/V4):\x20analyze_intent\x20(intent\x20→\x20objects\x20+\x20puzzle\x20snapshots)\x20→\x20aggregate_risks\x20(puzzles\x20OR\x20intent\x20→\x20calibrated\x20risks\x20+\x20RISK_BLOCKED\x20status)\x20→\x20trace_substeps\x20(substep\x20records\x20→\x20DAG\x20coherence\x20+\x20D-10\x20verdict);\x20merchant_guide\x20=\x2010-step\x20onboarding\x20wizard\x20(stateless\x20guide_state,\x20never\x20executes\x20on-chain\x20—\x20materialize\x20via\x20onchain_operations).\x20All\x20four\x20are\x20pure\x20transformations.']},{'name':'monitor_events','summary':'Persistent\x20monitor\x20event\x20store\x20(shared\x20with\x20the\x20client\x20Monitor\x20page)\x20—\x20paginated\x20events\x20with\x20read\x20flags;\x20mark\x20read/unread.','actions':['query','mark_read','mark_all_read'],'notes':['Events\x20captured\x20by\x20the\x20resident\x20MonitorLoop\x20(client\x20sidecar,\x20or\x20stdio\x20MCP\x20server\x20with\x20MONITOR_LOOP=1)\x20across\x209\x20modules,\x20stored\x20APPEND-ONLY\x20in\x20SQLite\x20(survives\x20restarts)\x20with\x20per-event\x20read\x20flags.','query\x20=\x20paginated\x20newest-first\x20with\x20module/event_type/since/until\x20filters\x20+\x20module_counts/unread_by_module/total_unread;\x20relevant_only\x20(default\x20true)\x20restricts\x20to\x20scope-closure/focus/filter\x20hits\x20(de-noised\x20todo\x20stream);\x20with_reason\x20attaches\x20the\x20relevance\x20annotation\x20+\x20delivered\x20flag;\x20mark_read\x20=\x20idempotent\x20per-event\x20(\x27<eventSeq>:<txDigest>\x27);\x20mark_all_read\x20=\x20optionally\x20module-scoped.','Cross-process:\x20read\x20state\x20is\x20SHARED\x20with\x20the\x20client\x20app\x20(same\x20SQLite\x20store)\x20—\x20marking\x20read\x20here\x20clears\x20the\x20client\x20Monitor\x20unread\x20badge\x20and\x20vice\x20versa.']},{'name':'monitor_subscription','summary':'Monitor\x20subscription\x20config\x20—\x20scope-closure\x20rules,\x20focus\x20objects,\x20per-type\x20todo\x20switches,\x20conditional\x20filters;\x20scope\x20preview\x20+\x20filter\x20dry-run.','actions':['get','save','reset','scope_preview','test_filter'],'notes':['Single\x20configuration\x20entry\x20point\x20for\x20monitor\x20v4\x20(client\x20settings\x20panel\x20and\x20agents\x20share\x20it);\x20save/reset\x20merge\x20+\x20clamp\x20loop\x20params,\x20then\x20trigger\x20an\x20immediate\x20scope\x20re-resolve\x20and\x20schedule\x20a\x20backfill\x20when\x20the\x20closure\x20changed.','scope_preview\x20lists\x20the\x20resolved\x20closure\x20grouped\x20by\x20layer\x20(accounts/permissions/managed_objects/services/orders/order_children/focus)\x20with\x20pagination\x20—\x20inspect\x20before\x20tuning\x20rule\x20switches.','test_filter\x20dry-runs\x20a\x20filter\x20draft\x20over\x20the\x20most\x20recent\x20captured\x20events\x20(default\x20200,\x20max\x201000)\x20returning\x20matched/scanned\x20counts\x20+\x20up\x20to\x205\x20samples\x20—\x20preview\x20noise\x20BEFORE\x20saving.','Capture\x20is\x20unaffected\x20by\x20delivery\x20switches\x20EXCEPT\x20NewPaymentEvent\x20(captured\x20only\x20when\x20switched\x20ON).']},{'name':'industry_pack_operation','summary':'Industry\x20knowledge\x20pack\x20lifecycle\x20—\x20scaffold\x20(merged\x20v2\x20template),\x20scan/register,\x20layer\x20get,\x20diff,\x20reset-to-template,\x20plus\x20industry-dir\x20file\x20operations\x20and\x20the\x20industry\x20mode\x20registry\x20(GLM6/92\x20§E).','actions':['scaffold','list','scan','resolve','list_files','read_file','write_file','get','diff','reset','delete_file','create_file','create_dir','copy','move','rename','recommend_industry','list_modes','derive_user_mode','evolve_user_mode','register_user_mode','unregister_user_mode','register_custom_metric','register_custom_constraint','list_metrics_constraints'],'notes':['LOCAL\x20ONLY\x20—\x20filesystem\x20+\x20in-memory\x20registry;\x20never\x20mutates\x20chain\x20state.','Merged\x20v2\x20layout:\x20pack.json\x20(annotated\x20with\x20_schema/_doc\x20comment\x20fields\x20+\x20personae)\x20+\x20playbook.md;\x20legacy\x20split-file\x20layouts\x20still\x20read\x20for\x20backward\x20compatibility.','reset\x20restores\x20a\x20file\x20or\x20entire\x20pack\x20folder\x20to\x20its\x20pristine\x20annotated\x20template\x20—\x20user\x20edits\x20beyond\x20the\x20target\x20are\x20preserved.','Mode\x20registry\x20(GLM6/92\x20§E):\x20recommend_industry\x20(top-3\x20similar\x20industries\x20+\x20verified\x20reference\x20examples),\x20list_modes,\x20derive_user_mode\x20(customize\x20a\x20builtin),\x20evolve_user_mode,\x20register_user_mode\x20(fully\x20custom;\x20R-M1-11\x20enforced\x20on\x20machine_shape),\x20unregister_user_mode,\x20register_custom_metric\x20/\x20register_custom_constraint\x20(extend\x20evaluation\x20registries),\x20list_metrics_constraints.']},{'name':'workspace_operation','summary':'Local\x20workspace\x20directory\x20(`.wowok/workspace`)\x20—\x20generated\x20review\x20files\x20(machine/guard/wts/wip\x20JSON)\x20and\x20user\x20documents:\x20list/read/write\x20+\x20file\x20operations.','actions':['resolve','list','read','write','delete','create_file','create_dir','copy','move','rename'],'notes':['LOCAL\x20ONLY\x20—\x20filesystem\x20operations\x20confined\x20to\x20the\x20workspace\x20root;\x20never\x20mutates\x20chain\x20state.','read\x20is\x20the\x20supported\x20way\x20to\x20load\x20a\x20generated\x20JSON\x20as\x20AI\x20context\x20before\x20editing/submitting.']},{'name':'workflow_operation','summary':'Local-account\x20workflow\x20view\x20—\x20list\x20active\x20Progress\x20that\x20at\x20least\x20one\x20local\x20account\x20can\x20advance\x20(permission\x20+\x20guard\x20+\x20executable\x20accounts),\x20advance/hold/unhold\x20a\x20forward,\x20and\x20view\x20a\x20progress\x27s\x20on-chain\x20operation\x20history.','actions':['list','operate','history'],'notes':['list:\x20permission-aware\x20—\x20a\x20forward\x20is\x20executable\x20when\x20(a)\x20namedOperator=\x27\x27\x20and\x20account\x20is\x20order\x20holder,\x20(b)\x20namedOperator=name\x20and\x20account\x20is\x20in\x20progress.namedOperator[name],\x20or\x20(c)\x20permissionIndex\x20set\x20and\x20account\x20is\x20in\x20permission.admin/table.','operate:\x20delegates\x20to\x20the\x20on-chain\x20progress\x20operation\x20(guard-aware);\x20op\x20∈\x20next/hold/unhold/adminUnhold.','history:\x20incrementally\x20syncs\x20a\x20progress\x27s\x20ON-CHAIN\x20Progress.history\x20(append-only\x20u64\x20index)\x20into\x20the\x20local\x20SQLite\x20mirror\x20via\x20a\x20per-progress\x20cursor\x20(only\x20new\x20records\x20pulled),\x20returns\x20the\x20migration\x20timeline\x20newest-first\x20with\x20each\x20migration\x27s\x20session\x20snapshot\x20(forwards\x20/\x20operator\x20/\x20weight\x20/\x20time);\x20runs\x2090-day\x20retention\x20cleanup\x20by\x20default.']},{'name':'permission_operation','summary':'Local-account\x20Permission\x20overview\x20—\x20list\x20Permissions\x20related\x20to\x20local\x20accounts\x20(via\x20entity_permission\x20index)\x20with\x20owner/admin/entity\x20breakdown\x20+\x20related\x20objects\x20via\x20object-linker\x20indexes.','actions':['list'],'notes':['Read-only;\x20reverse-looks-up\x20local\x20accounts\x20via\x20entity_permission\x20@0xaad,\x20then\x20merges/dedups\x20permissions.','Related\x20objects\x20resolved\x20via\x20object-linker\x20reverse\x20indexes\x20(0xaae\x20core\x20/\x200xaaf\x20tx)\x20binding\x20edges,\x20grouped\x20by\x20type\x20via\x20first-byte\x20address\x20tag.','Latest\x20update\x20time\x20derived\x20from\x20the\x20Permission\x27s\x20previousTransaction.']},{'name':'ask_user','summary':'Structured\x20user\x20elicitation\x20—\x20ask\x20the\x20user\x20to\x20choose\x20between\x202-8\x20concrete\x20options\x20and\x20receive\x20a\x20validated\x20structured\x20answer\x20(MCP\x202.0\x20elicitation\x20/\x20desktop\x20option\x20card).','common_params':{'question':'The\x20single\x20decision\x20needed\x20from\x20the\x20user\x20(1-1000\x20chars).','options':'2-8\x20self-contained\x20{id,label,description?}\x20choices.','recommended_id':'id\x20of\x20the\x20professionally\x20recommended\x20option\x20(optional).','multi_select':'true\x20when\x20options\x20are\x20combinable\x20(boolean\x20toggle\x20per\x20option).','allow_freeform':'true\x20to\x20permit\x20an\x20additional\x20free-text\x20answer.','context':'Optional\x20short\x20explanation\x20of\x20why\x20the\x20decision\x20is\x20needed.'},'notes':['Use\x20when\x20a\x20business\x20decision\x20belongs\x20to\x20the\x20user\x20and\x20continuing\x20requires\x20it;\x20never\x20guess\x20or\x20silently\x20default\x20an\x20unanswered\x20choice.','Desktop\x20clients\x20render\x20an\x20option\x20card;\x20MCP\x202.0\x20transports\x20fulfil\x20via\x20elicitation/create;\x20unsupported\x20clients\x20should\x20fall\x20back\x20to\x20a\x20numbered\x20prose\x20question.','action\x20decline/cancel\x20means\x20STOP\x20and\x20ask\x20how\x20to\x20proceed\x20in\x20plain\x20text\x20—\x20do\x20not\x20execute\x20a\x20default\x20path.','Not\x20a\x20safety\x20confirmation\x20—\x20irreversible/publish/amount\x20gates\x20remain\x20handled\x20by\x20confirm_gate.']}];export function getToolReference(a){return TOOLS_REFERENCE['find'](b=>b['name']===a);}export function searchToolReference(a){const b=a['toLowerCase']();return TOOLS_REFERENCE['filter'](c=>{if(c['name']['toLowerCase']()['includes'](b))return!![];if(c['summary']['toLowerCase']()['includes'](b))return!![];if(c['actions']?.['some'](d=>d['toLowerCase']()['includes'](b)))return!![];return![];});}export function getToolSequence(a){const b=getToolReference(a);if(!b)return undefined;return{'prerequisites':b['prerequisites']??[],'tool':b['name'],'follow_ups':b['follow_ups']??[]};}
1
+ export const TOOLS_REFERENCE=[{'name':'onchain_operations','summary':'On-chain\x20object\x20creation,\x20modification,\x20and\x20publish\x20for\x20all\x2016\x20Wowok\x20object\x20types.','actions':['service','machine','guard','permission','reward','arb','progress','treasury','demand','repository','contact','order','allocation','personal','payment','proof','gen_passport','gen_proof'],'common_params':{'operation_type':'Object\x20type\x20to\x20create/modify\x20(string\x20enum).','data':'Operation\x20payload\x20—\x20shape\x20varies\x20by\x20operation_type.','object':'Object\x20name\x20or\x20address\x20(for\x20modify-by-id).','namedNew':'New\x20object\x20spec\x20(name,\x20description,\x20tags)\x20for\x20create.','env':'Execution\x20environment\x20(account,\x20network,\x20gas_budget).'},'prerequisites':['account_operation\x20(for\x20account\x20setup)'],'follow_ups':['query_toolkit\x20(verify\x20result)','local_mark_operation\x20(tag\x20object)'],'notes':['publish=true\x20is\x20irreversible\x20—\x20use\x20confirm_gate.','Service/Machine\x20require\x20publish\x20after\x20create\x20before\x20they\x20are\x20visible\x20on-chain.','Use\x20schema_query\x20with\x20action=\x27list_operations\x27\x20to\x20see\x20all\x20operation\x20schemas.']},{'name':'account_operation','summary':'Local\x20wallet\x20management\x20—\x20generate,\x20suspend,\x20resume,\x20faucet,\x20sign\x20data.','actions':['gen','resume','suspend','faucet','operate','sign','list','info'],'common_params':{'name':'Account\x20name\x20(local\x20identifier).','network':'mainnet\x20|\x20testnet\x20(determines\x20RPC).'},'prerequisites':[],'follow_ups':['onchain_operations\x20(use\x20account\x20for\x20signing)'],'notes':['100%\x20LOCAL\x20—\x20keys\x20never\x20leave\x20the\x20device.','faucet\x20only\x20works\x20on\x20testnet.']},{'name':'local_mark_operation','summary':'Local\x20address\x20book\x20—\x20map\x20human-readable\x20names\x20to\x20blockchain\x20addresses\x20with\x20tags.','actions':['add','remove','update','list','query'],'common_params':{'name':'Local\x20name.','address':'Blockchain\x20address.','tags':'Tag\x20array.'},'notes':['100%\x20LOCAL\x20—\x20never\x20on-chain.','Names\x20are\x20accepted\x20by\x20most\x20on-chain\x20query/panorama\x20tools\x20in\x20place\x20of\x20raw\x20addresses.']},{'name':'local_info_operation','summary':'Local\x20private\x20data\x20management\x20—\x20delivery\x20addresses,\x20phone\x20numbers,\x20contacts.','actions':['add','remove','update','list'],'notes':['100%\x20LOCAL\x20—\x20sensitive\x20data,\x20never\x20on-chain.']},{'name':'local_history_operation','summary':'Local\x20Explorer\x20visit\x20history\x20—\x20recently\x20viewed\x20objects,\x20newest\x20first.','actions':['list\x20(default)','add\x20(upsert\x20by\x20key)','remove\x20(by\x20keys)','clear'],'common_params':{'add':'Record\x20visits:\x20{op:\x27add\x27,\x20data:[{key,\x20address,\x20object_type?,\x20network,\x20time}]}.','remove':'Delete\x20entries:\x20{op:\x27remove\x27,\x20keys:[...]}.','clear':'Erase\x20all\x20history:\x20{op:\x27clear\x27}.'},'notes':['100%\x20LOCAL\x20—\x20visit\x20records\x20never\x20leave\x20the\x20device;\x20display\x20names\x20are\x20never\x20stored\x20(resolved\x20live\x20at\x20render).','Omit\x20every\x20operation\x20field\x20to\x20list\x20history\x20(newest\x20first,\x20auto-pruned\x20to\x20last\x2030\x20days\x20/\x20300\x20entries).','detail\x20visits\x20keep\x20the\x20object\x20type\x20tag;\x20each\x20entry\x20stores\x20the\x20stable\x20object\x20key\x20+\x20canonical\x200x\x20address\x20+\x20network\x20+\x20timestamp.']},{'name':'wip_file','summary':'Witness\x20Immutable\x20Promise\x20file\x20operations\x20—\x20generate,\x20verify,\x20sign,\x20convert.','actions':['generate','verify','sign','wip2html'],'notes':['WIP\x20hash\x20must\x20be\x20non-empty\x20—\x20compute\x20actual\x20hash\x20before\x20calling.']},{'name':'messenger_operation','summary':'Encrypted\x20messenger\x20—\x20watch/send\x20messages,\x20WTS,\x20friendslist,\x20blacklist,\x20guardlist.','actions':['watch_conversations','send_message','send_file','send_required_info','watch_messages','save_attachment','generate_wts','verify_wts','sign_wts','wts2html','proof_message','blacklist','friendslist','guardlist','settings','mark_messages_as_viewed','mark_conversation_as_viewed','pull_messages'],'notes':['Requires\x20messenger-enabled\x20account.','30s\x20timeout\x20—\x20network\x20operations.','Attachment\x20messages\x20return\x20byte-free\x20descriptors\x20(msg.attachment;\x20plaintext\x20is\x20undefined).\x20Use\x20save_attachment\x20{messageId}\x20to\x20persist\x20the\x20file\x20(e.g.\x20before\x20verify_wts);\x20bytes\x20are\x20never\x20embedded\x20in\x20message\x20outputs.','send_required_info\x20assembles\x20selected\x20LocalInfo\x20fields\x20into\x20one\x20E2E\x20message\x20(\x27field:\x20value\x27\x20lines)\x20—\x20the\x20dedicated\x20path\x20for\x20delivering\x20customer_required\x20info.','pull_messages\x20supports\x20allAccounts/accounts\x20for\x20one\x20bounded-concurrency\x20fan-out\x20across\x20accounts.']},{'name':'guard2file','summary':'Export\x20a\x20Guard\x20object\x27s\x20definition\x20to\x20local\x20JSON/Markdown\x20for\x20editing.','notes':['Read-only\x20—\x20use\x20query_toolkit\x20for\x20on-chain\x20queries.']},{'name':'machineNode2file','summary':'Export\x20a\x20Machine\x20object\x27s\x20node\x20definition\x20to\x20local\x20JSON/Markdown\x20for\x20editing.','notes':['Read-only\x20—\x20use\x20query_toolkit\x20for\x20on-chain\x20queries.']},{'name':'query_toolkit','summary':'Query\x20toolkit\x20covering\x20local\x20device\x20data,\x20on-chain\x20blockchain\x20data,\x20and\x20one-call\x20business-intelligence\x20panoramas/review\x20packs.','actions':['local_mark_list','account_list','local_info_list','local_names','token_list','account_balance','onchain_personal_profile','onchain_objects','onchain_received','onchain_transaction','onchain_object_history','onchain_address_activity','address_profile','address_profiles','migration_preflight','token_value_convert','onchain_last_updated','service_panorama','machine_panorama','object_panorama','review_pack','assemble_context','reverse_map','participation_radar'],'notes':['Read-only\x20—\x20safe\x20to\x20call\x20without\x20confirmation.','local_names\x20resolves\x20a\x20batch\x20of\x20addresses\x20to\x20account/local_mark\x20names\x20(canonical\x20name\x20source\x20for\x20display);\x20address_profile(s)\x20is\x20the\x20one-stop\x20\x27who/what\x20is\x20this\x20address\x27\x20query\x20(classification\x20+\x20reputation\x20+\x20memberships\x20+\x20reverse\x20bindings;\x20batch\x20up\x20to\x2050);\x20migration_preflight\x20detects\x20existing\x20builds\x20on\x20another\x20network\x20and\x20returns\x20the\x20testnet→mainnet\x20migration\x20checklist.','BI\x20query\x20types\x20(one-call\x20panoramas):\x20service_panorama\x20(full\x20Service\x20context:\x20workflow\x20graph\x20+\x20guards\x20+\x20trust\x20+\x20supply\x20chain\x20+\x20BusinessReport\x20+\x20recent\x20orders),\x20machine_panorama\x20(head\x20+\x20fields\x20+\x20workflow\x20graph\x20+\x20Progress\x20list),\x20object_panorama\x20(Progress/Demand/Order/Arb/Repository\x20detail\x20pages),\x20review_pack\x20(typed\x20ReviewPack\x20for\x20the\x20client\x27s\x20ReviewPackRenderer),\x20assemble_context\x20(semantic\x20context\x20from\x20on-chain\x20objects),\x20reverse_map\x20(deterministic\x20L4→L1\x20business\x20report\x20—\x20merchant\x20profile\x20/\x20user\x20risk\x20/\x20game\x20theory),\x20participation_radar\x20(in-flight\x20order\x20participation\x20analysis\x20for\x20ONE\x20account).']},{'name':'onchain_table_data','summary':'Dynamic\x20table\x20data\x20queries\x20—\x20paginated\x20table\x20queries\x20and\x20specific\x20table\x20item\x20lookups.','actions':['onchain_table','onchain_table_item_repository_data','onchain_table_item_permission_perm','onchain_table_item_entity_registrar','onchain_table_item_entity_linker','onchain_table_item_entity_contact','onchain_table_item_object_linker_core','onchain_table_item_object_linker_tx','onchain_table_item_reward_record','onchain_table_item_demand_presenter','onchain_table_item_treasury_history','onchain_table_item_machine_node','onchain_table_item_progress_history','onchain_table_item_address_mark','onchain_table_item_entity_order','onchain_orders_of_user','onchain_orders_of_users','onchain_affiliations_of_object','onchain_table_item_generic'],'notes':['Read-only\x20—\x20safe\x20for\x20exploration.','object_linker\x20core\x20(0xaae)\x20=\x20default\x20reverse\x20lookup\x20(bounded\x20core\x20objects);\x20object_linker\x20tx\x20(0xaaf)\x20=\x20operational\x20reverse\x20lookup\x20(orders/progress,\x20lossy\x20FIFO).','entity_order\x20(0xaa8)\x20=\x20global\x20entity->orders\x20reverse\x20index;\x20onchain_orders_of_user\x20resolves\x20each\x20order\x20to\x20its\x20full\x20on-chain\x20Order\x20object\x20with\x20role\x20attributes\x20(is_owner/is_agent).']},{'name':'onchain_events','summary':'Watch\x20on-chain\x20events\x20by\x20type\x20—\x20arbitration,\x20order,\x20progress,\x20demand,\x20entity.','notes':['Read-only\x20—\x20use\x20cursor\x20for\x20pagination.']},{'name':'wowok_buildin_info','summary':'Protocol\x20info\x20—\x20constants,\x20built-in\x20permissions,\x20common\x20mistakes,\x20guard\x20instructions,\x20network,\x20value\x20types,\x20bridge\x20tokens.','actions':['constants','built-in\x20permissions','common\x20mistakes','guard\x20instructions','current\x20network','value\x20types','mainnet\x20bridge\x20tokens'],'notes':['Read-only\x20—\x20authoritative\x20protocol\x20reference.','Use\x20\x27common\x20mistakes\x27\x20before\x20submitting\x20an\x20operation\x20to\x20learn\x20known\x20field-name/unit/workflow\x20pitfalls.']},{'name':'schema_query','summary':'Look\x20up\x20JSON\x20Schemas\x20for\x20MCP\x20tools\x20and\x20on-chain\x20operations\x20—\x20the\x20authoritative\x20reference.\x20Also\x20serves\x20sunk\x20knowledge:\x20tool\x20reference,\x20Guard\x20design\x20patterns,\x20safety\x20rules.','actions':['list','get','get_output','get_field','search','list_operations','get_guard_templates','get_tool_reference','get_guard_design_patterns','get_safety_rules'],'notes':['Always\x20check\x20schema\x20before\x20calling\x20an\x20unfamiliar\x20tool.','get_field\x20takes\x20a\x20dot-path\x20(field_path)\x20for\x20single-field\x20lookup.','get_tool_reference/get_guard_design_patterns/get_safety_rules\x20expose\x20the\x20knowledge\x20sunk\x20from\x20the\x20wowok-tools/guard/safety\x20skills\x20—\x20no\x20skills\x20installation\x20required.']},{'name':'bridge_operation','summary':'Cross-chain\x20bridge\x20between\x20WOW\x20and\x20EVM\x20(Ethereum\x20mainnet).\x20Mainnet\x20only.','actions':['cross_chain_wow_to_evm','cross_chain_evm_to_wow','withdraw','query_active_evm_account','query_supported_evm_chains','query_supported_tokens','query_transfer_list','query_transfer_status','manage_evm_rpc'],'notes':['Only\x20WOW\x20mainnet\x20provides\x20cross-chain\x20functionality.']},{'name':'config_operation','summary':'Runtime\x20service\x20toggles\x20—\x20enable/disable\x20Phase\x202\x20services\x20without\x20restart.','actions':['list','toggle','enable','disable','reset','info'],'notes':['GLM5:\x20harness\x20is\x20default\x20ON\x20with\x20tiered\x20enforcement\x20(off/lightweight/full).']},{'name':'trust_score','summary':'Service\x20trust\x20&\x20risk\x20assessment\x20—\x205\x20trust\x20dimensions\x20+\x204\x20risk\x20dimensions.','notes':['Use\x20when\x20user\x20asks\x20\x27is\x20this\x20service\x20trustworthy?\x27\x20or\x20\x27should\x20I\x20buy?\x27.']},{'name':'evaluation_operation','summary':'Pluggable\x20business\x20evaluations\x20—\x20risk\x20/\x20match\x20/\x20compose\x20/\x20game\x20(node\x20+\x20path)\x20/\x20evidence\x20review\x20/\x20discovery\x20/\x20market\x20/\x20arbitration\x20score\x20with\x20user\x20injection.','actions':['service_risk','demand_match','service_match','capability_gap','compose_service','node_game','arb_game','path_reasoning','evidence_review','discover_services','discover_demands','market_metrics','market_operations','anti_cheat','match_discover','arbitration_score','account_events'],'notes':['Read-only;\x20the\x20role\x20decides\x20and\x20acts\x20via\x20onchain_operations.','path_reasoning\x20=\x20path-level\x20game\x20(full-route\x20enumeration\x20+\x20ranking);\x20node_game\x20=\x20single-node\x20best\x20move.','evidence_review\x20=\x20deterministic\x20off-chain\x20evidence\x20closure\x20gate\x20(auto_pass/auto_reject/manual_review).','discover_services\x20=\x20active\x20supply\x20discovery\x20(GraphQL\x20transport\x20required):\x20enumerate\x20all\x20shared\x20Services,\x20location-gate\x20by\x20sensitivity\x20(strict/near/logistics),\x20ranked\x20+\x20consent-gated\x20scope\x20expansion.\x20Passive\x20side\x20=\x20post\x20a\x20Demand\x20(DemandPresenter).','match_discover\x20=\x20one-shot\x20intent→service\x20orchestration\x20(enumerate\x20+\x20location\x20gate\x20+\x206-dimension\x20scoring);\x20discover_demands\x20=\x20supplier-side\x20demand\x20enumeration;\x20market_metrics/market_operations\x20=\x20market\x20measurement\x20(GraphQL\x20required).','arbitration_score\x20=\x20dual-perspective\x20arbitration\x20trust\x20(user-trust\x20+\x20merchant-fairness,\x20combined\x200-100);\x20anti_cheat\x20=\x20fake-review/wash-order\x20detection;\x20account_events\x20=\x20account\x20attention\x20feed\x20(read-only).']},{'name':'watch_operation','summary':'Identity-centric\x20on-chain\x20console\x20—\x20resolve\x20who\x20the\x20account\x20is\x20against\x20an\x20object,\x20expand\x20its\x20relations,\x20and\x20enumerate\x20actionable\x20operations.','actions':['focus','expand','actions'],'notes':['Read-only;\x20distinct\x20from\x20query_toolkit\x20/\x20onchain_table_data\x20(pure\x20data,\x20no\x20identity).','focus\x20=\x20identity\x20resolution\x20(manifest\x20on-chain\x20role\x20⊕\x20persona)\x20+\x20base\x20data;\x20neutral\x20→\x20objective\x20narration,\x20operative\x20role\x20→\x20game\x20reasoning.','expand\x20=\x20direct\x20relations\x20+\x20Service\x20transparent\x20sub-order\x20purchasing\x20graph\x20(frozen\x20forward\x20guards\x20→\x20purchased\x20sub-services\x20+\x20proofs).','actions\x20=\x20actionable\x20operations\x20with\x20executability\x20judgment\x20(order-holder\x20/\x20permission-index\x20/\x20named-operator\x20paths).']},{'name':'persona_operation','summary':'User\x20identity\x20setting\x20(persona)\x20—\x20preferences,\x20strategy,\x20rules,\x20spec;\x20long-term\x20+\x20current\x20layers\x20+\x20strategy→lever\x20mapping\x20+\x20region\x20hint.','actions':['get','list','set','analyze','apply','sync','remove','strategy','region_hint','distill'],'notes':['Read/write\x20local\x20state;\x20account\x20persona\x20overrides\x20system;\x20current\x20overrides\x20long-term.','strategy\x20resolves\x20merchant\x20strategy\x20statements\x20into\x20deterministic\x20infrastructure\x20levers\x20(discount/reward/buy_guard/machine_design).','region_hint\x20reads\x20the\x20local\x20delivery\x20address\x20as\x20a\x20matching\x20hint;\x20`propose`\x20returns\x20a\x20consent-gated\x20save\x20proposal\x20(never\x20auto-writes).','distill\x20turns\x20one\x20goal\x27s\x20memory\x20(outcome,\x20process\x20problems/feedback,\x20objects)\x20into\x20a\x20CURRENT-layer\x20proposal\x20—\x20never\x20auto-writes;\x20persist\x20via\x20set/apply\x20after\x20user\x20confirmation.\x20Industry\x20pack.json\x20files\x20are\x20read-only\x20knowledge\x20and\x20never\x20receive\x20user\x20data.']},{'name':'employee_operation','summary':'Merchant\x20employee\x20organizational\x20profile\x20(LOCAL)\x20+\x20reaction\x20KPI\x20+\x20liability\x20resolution\x20+\x20incentive\x20suggestion.','actions':['set','get','remove','assess_kpi','resolve_liability','suggest_incentive'],'notes':['LOCAL\x20ONLY\x20—\x20on-chain\x20authorization\x20lives\x20in\x20the\x20merchant\x27s\x20Permission\x20(namedOperator/entity).','assess_kpi:\x20node\x20reaction\x20speed\x20vs\x20budget\x20(explicit\x20>\x20stored\x20profile\x20>\x2048h\x20default).\x20Timestamps\x20explicit\x20OR\x20auto-derived\x20from\x20the\x20progress\x20object\x27s\x20monitored\x20ProgressEvents\x20via\x20`progress`;\x20explicit\x20values\x20override\x20derived.','resolve_liability:\x20internal\x20cost\x20split\x20(merchant/employee,\x20hybrid\x20threshold);\x20outward\x20liability\x20toward\x20the\x20customer\x20is\x20ALWAYS\x20the\x20merchant\x27s;\x20order\x20user\x20must\x20be\x20compensated\x20before\x20the\x20workflow\x20resumes.','suggest_incentive:\x20KPIs\x20+\x20WIP\x20acceptance\x20+\x20liability\x20→\x20Reward\x20suggestion\x20(reward_grant/compensation_offset/correction_notice/none).\x20Suggestion\x20ONLY\x20—\x20merchant\x20confirms\x20and\x20executes\x20the\x20on-chain\x20ops\x20separately.']},{'name':'keeper_operation','summary':'Who-benefits-who-pushes\x20keeper:\x20scans\x20the\x20monitor\x20scope\x20for\x20actionable\x20state\x20(unclaimed\x20payments,\x20advanceable\x20workflow\x20nodes),\x20routes\x20tasks\x20to\x20beneficiaries;\x20manual\x20dismiss/execute\x20+\x20standing\x20auto-execute\x20rules.','actions':['tasks','dismiss','execute','rules','rule_set','rule_remove','config','config_set','scan','status'],'notes':['The\x20chain\x20has\x20NO\x20time-triggered\x20execution\x20—\x20the\x20keeper\x20scans\x20on\x20the\x20monitor\x20loop\x20cadence\x20and\x20surfaces\x20tasks\x20to\x20their\x20beneficiary.','execute\x20runs\x20the\x20on-chain\x20op\x20for\x20one\x20task\x20(user\x20decision);\x20rule_set\x20authorizes\x20auto-execution\x20per\x20detector\x20kind\x20(bounded\x20by\x20config\x20budget/cooldown).','Detectors\x20v1:\x20payment_unclaimed\x20(funds\x20sitting\x20claimable),\x20progress_actionable\x20(a\x20workflow\x20node\x20the\x20beneficiary\x20can\x20advance).']},{'name':'intent_radar','summary':'User\x20business\x20intent\x20×\x20chain\x20event\x20matching\x20—\x20persist\x20intents,\x20score\x20events\x20against\x20them.','actions':['save','list','remove','match'],'notes':['Read-only\x20w.r.t.\x20chain;\x20industry/keywords\x20resolved\x20once\x20at\x20save;\x20events\x20supplied\x20or\x20auto-pulled.']},{'name':'goal_operation','summary':'GoalEngine\x20(K3\x2024)\x20—\x20record\x20a\x20user\x20goal\x20and\x20drive\x20it\x20through\x20the\x20nine-station\x20lifecycle\x20(RECOGNIZE→…→COMPLETE)\x20with\x20monitor\x20auto-binding\x20and\x20plan-approval\x20confirm-gate\x20downgrade;\x20also\x20hosts\x20the\x20C1-C4\x20planning\x20pipeline\x20+\x20merchant\x20onboarding\x20wizard.','actions':['create','list','get','approve','advance','pause','complete','abandon','delete','analyze_intent','aggregate_risks','trace_substeps','merchant_guide'],'common_params':{'id':'Goal\x20id\x20(goal_…)\x20—\x20required\x20for\x20get/approve/advance/pause/complete/abandon/delete.','intent_text':'create:\x20raw\x20user\x20intent;\x20goal_type\x20auto-classified\x20(override\x20with\x20goal_type).','account':'create:\x20bind\x20a\x20local\x20account\x20(preflight;\x20goal\x20starts\x20at\x20\x27bound\x27).','stage':'advance:\x20forward-only\x20target\x20stage;\x20\x27paused\x27\x20holds\x20from\x20anywhere.','objects':'advance:\x20ACT-station\x20objects\x20[{type,\x20object}]\x20(deduped).','force':'complete:\x20skip\x20on-chain\x20completion\x20verification\x20(audited\x20as\x20outcome.forced).'},'follow_ups':['monitor_events\x20(goal\x20progress\x20surfaces\x20in\x20the\x20todo\x20stream)','onchain_operations\x20(execute\x20plan\x20steps\x20with\x20env.plan_approval)'],'notes':['Near-duplicate\x20create\x20ADOPTS\x20the\x20active\x20same-type\x20same-account\x20goal\x20(intent\x20Jaccard\x20≥\x200.6)\x20instead\x20of\x20forking.','approve\x20registers\x20a\x20plan\x20approval:\x20calls\x20carrying\x20env.plan_approval=<goal\x20id>\x20auto-pass\x20fail-open\x20ConfirmGate\x20levels\x20(standard/none);\x20fail-closed\x20levels\x20(irreversible/publish/amount)\x20always\x20still\x20ask.','Entering\x20\x27monitoring\x27\x20auto-binds\x20monitor\x20focus\x20(reason=\x27goal\x27,\x20goal_id-stamped)\x20for\x20the\x20goal\x27s\x20objects;\x20demand\x20goals\x20also\x20open\x20a\x20radar\x20intent.\x20complete/abandon\x20tear\x20down\x20ONLY\x20this\x20goal\x27s\x20bindings.','complete\x20verifies\x20the\x20goal-type\x20completion\x20conjunction\x20against\x20chain\x20state\x20(read-only);\x20force=true\x20bypasses\x20and\x20is\x20audited.','delete\x20removes\x20a\x20terminal\x20goal\x20entirely\x20(record\x20+\x20TaskProcess\x20dir);\x20force=true\x20extends\x20it\x20to\x20non-terminal\x20goals\x20(monitor\x20teardown\x20first).','C1-C4\x20planning\x20pipeline\x20(GLM5-31\x20§V3/V4):\x20analyze_intent\x20(intent\x20→\x20objects\x20+\x20puzzle\x20snapshots)\x20→\x20aggregate_risks\x20(puzzles\x20OR\x20intent\x20→\x20calibrated\x20risks\x20+\x20RISK_BLOCKED\x20status)\x20→\x20trace_substeps\x20(substep\x20records\x20→\x20DAG\x20coherence\x20+\x20D-10\x20verdict);\x20merchant_guide\x20=\x2010-step\x20onboarding\x20wizard\x20(stateless\x20guide_state,\x20never\x20executes\x20on-chain\x20—\x20materialize\x20via\x20onchain_operations).\x20All\x20four\x20are\x20pure\x20transformations.']},{'name':'monitor_events','summary':'Persistent\x20monitor\x20event\x20store\x20(shared\x20with\x20the\x20client\x20Monitor\x20page)\x20—\x20paginated\x20events\x20with\x20read\x20flags;\x20mark\x20read/unread.','actions':['query','mark_read','mark_all_read'],'notes':['Events\x20captured\x20by\x20the\x20resident\x20MonitorLoop\x20(client\x20sidecar,\x20or\x20stdio\x20MCP\x20server\x20with\x20MONITOR_LOOP=1)\x20across\x209\x20modules,\x20stored\x20APPEND-ONLY\x20in\x20SQLite\x20(survives\x20restarts)\x20with\x20per-event\x20read\x20flags.','query\x20=\x20paginated\x20newest-first\x20with\x20module/event_type/since/until\x20filters\x20+\x20module_counts/unread_by_module/total_unread;\x20relevant_only\x20(default\x20true)\x20restricts\x20to\x20scope-closure/focus/filter\x20hits\x20(de-noised\x20todo\x20stream);\x20with_reason\x20attaches\x20the\x20relevance\x20annotation\x20+\x20delivered\x20flag;\x20mark_read\x20=\x20idempotent\x20per-event\x20(\x27<eventSeq>:<txDigest>\x27);\x20mark_all_read\x20=\x20optionally\x20module-scoped.','Cross-process:\x20read\x20state\x20is\x20SHARED\x20with\x20the\x20client\x20app\x20(same\x20SQLite\x20store)\x20—\x20marking\x20read\x20here\x20clears\x20the\x20client\x20Monitor\x20unread\x20badge\x20and\x20vice\x20versa.']},{'name':'monitor_subscription','summary':'Monitor\x20subscription\x20config\x20—\x20scope-closure\x20rules,\x20focus\x20objects,\x20per-type\x20todo\x20switches,\x20conditional\x20filters;\x20scope\x20preview\x20+\x20filter\x20dry-run.','actions':['get','save','reset','scope_preview','test_filter'],'notes':['Single\x20configuration\x20entry\x20point\x20for\x20monitor\x20v4\x20(client\x20settings\x20panel\x20and\x20agents\x20share\x20it);\x20save/reset\x20merge\x20+\x20clamp\x20loop\x20params,\x20then\x20trigger\x20an\x20immediate\x20scope\x20re-resolve\x20and\x20schedule\x20a\x20backfill\x20when\x20the\x20closure\x20changed.','scope_preview\x20lists\x20the\x20resolved\x20closure\x20grouped\x20by\x20layer\x20(accounts/permissions/managed_objects/services/orders/order_children/focus)\x20with\x20pagination\x20—\x20inspect\x20before\x20tuning\x20rule\x20switches.','test_filter\x20dry-runs\x20a\x20filter\x20draft\x20over\x20the\x20most\x20recent\x20captured\x20events\x20(default\x20200,\x20max\x201000)\x20returning\x20matched/scanned\x20counts\x20+\x20up\x20to\x205\x20samples\x20—\x20preview\x20noise\x20BEFORE\x20saving.','Capture\x20is\x20unaffected\x20by\x20delivery\x20switches\x20EXCEPT\x20NewPaymentEvent\x20(captured\x20only\x20when\x20switched\x20ON).']},{'name':'industry_pack_operation','summary':'Industry\x20knowledge\x20pack\x20lifecycle\x20—\x20scaffold\x20(merged\x20v2\x20template),\x20scan/register,\x20layer\x20get,\x20diff,\x20reset-to-template,\x20plus\x20industry-dir\x20file\x20operations\x20and\x20the\x20industry\x20mode\x20registry\x20(GLM6/92\x20§E).','actions':['scaffold','list','scan','resolve','list_files','read_file','write_file','get','diff','reset','delete_file','create_file','create_dir','copy','move','rename','recommend_industry','list_modes','derive_user_mode','evolve_user_mode','register_user_mode','unregister_user_mode','register_custom_metric','register_custom_constraint','list_metrics_constraints'],'notes':['LOCAL\x20ONLY\x20—\x20filesystem\x20+\x20in-memory\x20registry;\x20never\x20mutates\x20chain\x20state.','Merged\x20v2\x20layout:\x20pack.json\x20(annotated\x20with\x20_schema/_doc\x20comment\x20fields\x20+\x20personae)\x20+\x20playbook.md;\x20legacy\x20split-file\x20layouts\x20still\x20read\x20for\x20backward\x20compatibility.','reset\x20restores\x20a\x20file\x20or\x20entire\x20pack\x20folder\x20to\x20its\x20pristine\x20annotated\x20template\x20—\x20user\x20edits\x20beyond\x20the\x20target\x20are\x20preserved.','Mode\x20registry\x20(GLM6/92\x20§E):\x20recommend_industry\x20(top-3\x20similar\x20industries\x20+\x20verified\x20reference\x20examples),\x20list_modes,\x20derive_user_mode\x20(customize\x20a\x20builtin),\x20evolve_user_mode,\x20register_user_mode\x20(fully\x20custom;\x20R-M1-11\x20enforced\x20on\x20machine_shape),\x20unregister_user_mode,\x20register_custom_metric\x20/\x20register_custom_constraint\x20(extend\x20evaluation\x20registries),\x20list_metrics_constraints.']},{'name':'strategy_review_operation','summary':'Posture-weighted\x20operating\x20scorecard\x20for\x20one\x20(account,\x20industry):\x20collect\x20evidence\x20into\x20append-only\x20local\x20snapshots,\x20assemble\x20periodic\x20reviews\x20with\x20deterministic\x20pricing/posture\x20advice\x20and\x20current-layer-only\x20persona\x20proposals\x20(never\x20auto-applied).','actions':['collect','review','list_snapshots'],'notes':['Chain\x20reads\x20+\x20local\x20SQLite\x20KV\x20snapshots\x20only;\x20never\x20mutates\x20chain\x20state\x20and\x20never\x20writes\x20the\x20persona.','collect\x20gathers\x2013\x20catalog\x20metrics\x20from\x206\x20evidence\x20sources\x20(journey\x20funnel/order\x20flow/market\x20metrics/discovery\x20competitor\x20count/arbitration\x20trust/account\x20attention);\x20source\x20failures\x20degrade\x20metrics\x20to\x20unavailable/error,\x20never\x20zero-filled;\x20snapshot\x20append\x20failure\x20is\x20fail-soft\x20(stored:false).','review\x20does\x20NOT\x20persist:\x20fresh\x20collection\x20+\x20delta\x20against\x20latest\x20stored\x20snapshot;\x200–100\x20score\x20renormalized\x20over\x20available\x20anchored\x20metrics\x20under\x20volume/balanced/margin\x20weights;\x20cadence\x20from\x20the\x20industry\x20catalog\x20(weekly/two-week/monthly);\x20≤2\x20proposals,\x20each\x20target_layer=\x27current\x27\x20with\x20apply_via\x20persona_operation\x20apply\x20—\x20the\x20user\x20must\x20apply\x20explicitly.','Posture\x20resolution:\x20explicit\x20posture\x20arg\x20→\x20merchant\x20posture\x20in\x20the\x20effective\x20persona\x20→\x20balanced.']},{'name':'workspace_operation','summary':'Local\x20workspace\x20directory\x20(`.wowok/workspace`)\x20—\x20generated\x20review\x20files\x20(machine/guard/wts/wip\x20JSON)\x20and\x20user\x20documents:\x20list/read/write\x20+\x20file\x20operations.','actions':['resolve','list','read','write','delete','create_file','create_dir','copy','move','rename'],'notes':['LOCAL\x20ONLY\x20—\x20filesystem\x20operations\x20confined\x20to\x20the\x20workspace\x20root;\x20never\x20mutates\x20chain\x20state.','read\x20is\x20the\x20supported\x20way\x20to\x20load\x20a\x20generated\x20JSON\x20as\x20AI\x20context\x20before\x20editing/submitting.']},{'name':'workflow_operation','summary':'Local-account\x20workflow\x20view\x20—\x20list\x20active\x20Progress\x20that\x20at\x20least\x20one\x20local\x20account\x20can\x20advance\x20(permission\x20+\x20guard\x20+\x20executable\x20accounts),\x20advance/hold/unhold\x20a\x20forward,\x20and\x20view\x20a\x20progress\x27s\x20on-chain\x20operation\x20history.','actions':['list','operate','history'],'notes':['list:\x20permission-aware\x20—\x20a\x20forward\x20is\x20executable\x20when\x20(a)\x20namedOperator=\x27\x27\x20and\x20account\x20is\x20order\x20holder,\x20(b)\x20namedOperator=name\x20and\x20account\x20is\x20in\x20progress.namedOperator[name],\x20or\x20(c)\x20permissionIndex\x20set\x20and\x20account\x20is\x20in\x20permission.admin/table.','operate:\x20delegates\x20to\x20the\x20on-chain\x20progress\x20operation\x20(guard-aware);\x20op\x20∈\x20next/hold/unhold/adminUnhold.','history:\x20incrementally\x20syncs\x20a\x20progress\x27s\x20ON-CHAIN\x20Progress.history\x20(append-only\x20u64\x20index)\x20into\x20the\x20local\x20SQLite\x20mirror\x20via\x20a\x20per-progress\x20cursor\x20(only\x20new\x20records\x20pulled),\x20returns\x20the\x20migration\x20timeline\x20newest-first\x20with\x20each\x20migration\x27s\x20session\x20snapshot\x20(forwards\x20/\x20operator\x20/\x20weight\x20/\x20time);\x20runs\x2090-day\x20retention\x20cleanup\x20by\x20default.']},{'name':'permission_operation','summary':'Local-account\x20Permission\x20overview\x20—\x20list\x20Permissions\x20related\x20to\x20local\x20accounts\x20(via\x20entity_permission\x20index)\x20with\x20owner/admin/entity\x20breakdown\x20+\x20related\x20objects\x20via\x20object-linker\x20indexes.','actions':['list'],'notes':['Read-only;\x20reverse-looks-up\x20local\x20accounts\x20via\x20entity_permission\x20@0xaad,\x20then\x20merges/dedups\x20permissions.','Related\x20objects\x20resolved\x20via\x20object-linker\x20reverse\x20indexes\x20(0xaae\x20core\x20/\x200xaaf\x20tx)\x20binding\x20edges,\x20grouped\x20by\x20type\x20via\x20first-byte\x20address\x20tag.','Latest\x20update\x20time\x20derived\x20from\x20the\x20Permission\x27s\x20previousTransaction.']},{'name':'ask_user','summary':'Structured\x20user\x20elicitation\x20—\x20ask\x20the\x20user\x20to\x20choose\x20between\x202-8\x20concrete\x20options\x20and\x20receive\x20a\x20validated\x20structured\x20answer\x20(MCP\x202.0\x20elicitation\x20/\x20desktop\x20option\x20card).','common_params':{'question':'The\x20single\x20decision\x20needed\x20from\x20the\x20user\x20(1-1000\x20chars).','options':'2-8\x20self-contained\x20{id,label,description?}\x20choices.','recommended_id':'id\x20of\x20the\x20professionally\x20recommended\x20option\x20(optional).','multi_select':'true\x20when\x20options\x20are\x20combinable\x20(boolean\x20toggle\x20per\x20option).','allow_freeform':'true\x20to\x20permit\x20an\x20additional\x20free-text\x20answer.','context':'Optional\x20short\x20explanation\x20of\x20why\x20the\x20decision\x20is\x20needed.'},'notes':['Use\x20when\x20a\x20business\x20decision\x20belongs\x20to\x20the\x20user\x20and\x20continuing\x20requires\x20it;\x20never\x20guess\x20or\x20silently\x20default\x20an\x20unanswered\x20choice.','Desktop\x20clients\x20render\x20an\x20option\x20card;\x20MCP\x202.0\x20transports\x20fulfil\x20via\x20elicitation/create;\x20unsupported\x20clients\x20should\x20fall\x20back\x20to\x20a\x20numbered\x20prose\x20question.','action\x20decline/cancel\x20means\x20STOP\x20and\x20ask\x20how\x20to\x20proceed\x20in\x20plain\x20text\x20—\x20do\x20not\x20execute\x20a\x20default\x20path.','Not\x20a\x20safety\x20confirmation\x20—\x20irreversible/publish/amount\x20gates\x20remain\x20handled\x20by\x20confirm_gate.']}];export function getToolReference(a){return TOOLS_REFERENCE['find'](b=>b['name']===a);}export function searchToolReference(a){const b=a['toLowerCase']();return TOOLS_REFERENCE['filter'](c=>{if(c['name']['toLowerCase']()['includes'](b))return!![];if(c['summary']['toLowerCase']()['includes'](b))return!![];if(c['actions']?.['some'](d=>d['toLowerCase']()['includes'](b)))return!![];return![];});}export function getToolSequence(a){const b=getToolReference(a);if(!b)return undefined;return{'prerequisites':b['prerequisites']??[],'tool':b['name'],'follow_ups':b['follow_ups']??[]};}
@@ -1,52 +1,7 @@
1
- export interface ParsedForward {
2
- name: string;
3
- weight: number;
4
- namedOperator?: string | null;
5
- permissionIndex?: number | null;
6
- guard?: string;
7
- }
8
- export interface ParsedPair {
9
- prev_node: string;
10
- threshold: number;
11
- forwards: ParsedForward[];
12
- }
13
- export interface ParsedMachineNode {
14
- name: string;
15
- pairs: ParsedPair[];
16
- }
1
+ import { type RecommendedCall } from "../participation/radar-core.js";
2
+ import { type OrderContext, type ParsedForward, type ParsedMachineNode, type PermissionContext } from "../graph/onchain/sdk-batch.js";
17
3
  export type NameResolver = (addr: string | undefined | null) => string | undefined;
18
4
  export declare function resolvePermissionRole(index: number | undefined | null, permissionDescription?: string): string;
19
- export declare const QUERY_OBJECTS_BATCH = 50;
20
- export interface TableFieldEntry {
21
- key: string;
22
- objectId: string;
23
- }
24
- export interface BatchTableItem extends TableFieldEntry {
25
- object?: any;
26
- }
27
- export interface BatchTableResult {
28
- items: BatchTableItem[];
29
- truncated: boolean;
30
- }
31
- interface FetchTableEntriesResult {
32
- entries: TableFieldEntry[];
33
- truncated: boolean;
34
- }
35
- export declare function fetchTableEntries(parent: string, opts?: {
36
- network?: string;
37
- noCache?: boolean;
38
- limit?: number;
39
- maxItems?: number;
40
- }): Promise<FetchTableEntriesResult>;
41
- export declare function fetchAllFieldObjectIds(parent: string, network?: string, noCache?: boolean): Promise<string[]>;
42
- export declare function batchQueryObjectsByIds(ids: string[], network?: string, noCache?: boolean): Promise<any[]>;
43
- export declare function batchQueryTableItems(parent: string, opts?: {
44
- network?: string;
45
- noCache?: boolean;
46
- limit?: number;
47
- maxItems?: number;
48
- }): Promise<BatchTableResult>;
49
- export declare function fetchMachineNodes(machine: string, network?: string, noCache?: boolean): Promise<ParsedMachineNode[]>;
50
5
  export interface GuidanceInput {
51
6
  current: string;
52
7
  nodes: ParsedMachineNode[];
@@ -68,6 +23,7 @@ export interface OperatorInfo {
68
23
  role_name?: string;
69
24
  account_name?: string;
70
25
  named_operator?: string;
26
+ recommended_call?: RecommendedCall;
71
27
  }
72
28
  export interface OptionInfo {
73
29
  next_node: string;
@@ -155,80 +111,10 @@ export interface LocalAccountInfo {
155
111
  address: string;
156
112
  name?: string;
157
113
  }
158
- export interface PermissionContext {
159
- admin: Set<string>;
160
- table: Map<string, Set<number>>;
161
- }
162
- export interface OrderContext {
163
- builder: string;
164
- agent: Set<string>;
165
- }
166
- export declare const ENTITY_REGISTRAR_OBJECT_ID = "0x0000000000000000000000000000000000000000000000000000000000000aab";
167
- export declare const ENTITY_LINKER_OBJECT_ID = "0x0000000000000000000000000000000000000000000000000000000000000aaa";
168
- export declare function batchReadAddressKeyedFields(parent: string, addresses: string[], network?: string, noCache?: boolean): Promise<Map<string, any>>;
169
- export declare function batchReadU64KeyedFields(parent: string, indices: Array<number | string | bigint>, network?: string, noCache?: boolean): Promise<Map<string, any>>;
170
- export declare function batchFetchEntityRegistrar(addresses: string[], network?: string, noCache?: boolean): Promise<Map<string, any>>;
171
- export declare function batchFetchEntityLinker(addresses: string[], network?: string, noCache?: boolean): Promise<Map<string, any>>;
172
- export declare const ENTITY_PERMISSION_OBJECT_ID = "0xaad";
173
- export declare const ENTITY_PERMISSION_ROLES: {
174
- readonly OWNER: 1;
175
- readonly ADMIN: 2;
176
- readonly ENTITY: 4;
177
- };
178
- export interface EntityPermissionItem {
179
- role: number;
180
- permission: string;
181
- time: number;
182
- }
183
- export interface EntityPermissionContext {
184
- items: EntityPermissionItem[];
185
- byPermission: Map<string, number>;
186
- }
187
- export declare function fetchEntityPermission(entityAddr: string, network?: string, noCache?: boolean): Promise<EntityPermissionContext | undefined>;
188
- export declare const ENTITY_CONTACT_OBJECT_ID = "0xaa9";
189
- export interface EntityContactItem {
190
- contact: string;
191
- time: number;
192
- }
193
- export interface EntityContactContext {
194
- items: EntityContactItem[];
195
- byContact: Map<string, number>;
196
- }
197
- export declare function fetchEntityContact(entityAddr: string, network?: string, noCache?: boolean): Promise<EntityContactContext | undefined>;
198
- export declare const ENTITY_ORDER_OBJECT_ID = "0xaa8";
199
- export declare const ENTITY_ORDER_ROLES: {
200
- readonly OWNER: 1;
201
- readonly AGENT: 2;
202
- };
203
- export interface EntityOrderItem {
204
- role: number;
205
- order: string;
206
- time: number;
207
- }
208
- export interface EntityOrderContext {
209
- items: EntityOrderItem[];
210
- byOrder: Map<string, number>;
211
- }
212
- export declare function fetchOrdersOfUser(entityAddr: string, network?: string, noCache?: boolean): Promise<any[] | undefined>;
213
114
  export interface ResolvedLocalNames {
214
115
  byAddress: Map<string, string>;
215
116
  }
216
117
  export declare function resolveLocalNamesFor(addresses: string[]): Promise<ResolvedLocalNames>;
217
- export declare const OBJECT_LINKER_CORE_OBJECT_ID = "0xaae";
218
- export declare const OBJECT_LINKER_TX_OBJECT_ID = "0xaaf";
219
- export interface ObjectLinkerItem {
220
- who: string;
221
- time: number;
222
- }
223
- export interface ObjectLinkerContext {
224
- items: ObjectLinkerItem[];
225
- byWho: Map<string, number>;
226
- }
227
- export declare function fetchObjectLinkerCore(targetAddr: string, network?: string, noCache?: boolean): Promise<ObjectLinkerContext | undefined>;
228
- export declare function fetchObjectLinkerTx(targetAddr: string, network?: string, noCache?: boolean): Promise<ObjectLinkerContext | undefined>;
229
- export declare function fetchServiceOrders(targetAddr: string, network?: string, noCache?: boolean): Promise<ObjectLinkerContext | undefined>;
230
- export declare function fetchPermissionContext(permAddr: string, network?: string, noCache?: boolean): Promise<PermissionContext | undefined>;
231
- export declare function fetchOrderContext(orderAddr: string, network?: string, noCache?: boolean): Promise<OrderContext | undefined>;
232
118
  export declare function listLocalAccounts(): Promise<LocalAccountInfo[]>;
233
119
  export declare function accountCanExecuteForward(f: ParsedForward, account: string, progressNamedOperator: {
234
120
  name: string;
@@ -254,4 +140,3 @@ export declare function enumerateActionableForwards(progress: {
254
140
  name: string;
255
141
  operators: string[];
256
142
  }[], orderCtx: OrderContext | undefined, permCtx: PermissionContext | undefined): ActionableForwardOption[];
257
- export {};
@@ -1 +1 @@
1
- import{query_objects,query_table,query_account_list,LocalMark,GetLocalNamesByAddresses,bcs,deriveDynamicFieldID,queryOrdersByUser,objectTypeFromAddress,ObjectType}from'@wowok/wowok';import{REPOSITORY_PERMISSIONS,REWARD_PERMISSIONS,MACHINE_PERMISSIONS,PROGRESS_PERMISSIONS,TREASURY_PERMISSIONS,SERVICE_PERMISSIONS,ARBITRATION_PERMISSIONS,DEMAND_PERMISSIONS,CONTACT_PERMISSIONS}from'./permission-ledger.js';import{formatShortAddress}from'../persona/address-format.js';const BUILTIN_PERMISSION_MAP=new Map();for(const entry of[...REPOSITORY_PERMISSIONS,...REWARD_PERMISSIONS,...MACHINE_PERMISSIONS,...PROGRESS_PERMISSIONS,...TREASURY_PERMISSIONS,...SERVICE_PERMISSIONS,...ARBITRATION_PERMISSIONS,...DEMAND_PERMISSIONS,...CONTACT_PERMISSIONS]){BUILTIN_PERMISSION_MAP['set'](entry['index'],entry['name']);}export function resolvePermissionRole(a,b){if(a===undefined||a===null)return'unknown\x20role';if(b){const d=/([A-Za-z][A-Za-z0-9_]*)\s*=\s*(\d+)/g;let e;while((e=d['exec'](b))!==null){if(Number(e[0x2])===a)return e[0x1]+'\x20(permission\x20'+a+')';}}const c=BUILTIN_PERMISSION_MAP['get'](a);if(c)return c+'\x20(permission\x20'+a+')';return'permission\x20'+a;}export const QUERY_OBJECTS_BATCH=0x32;export async function fetchTableEntries(a,b){const c=[],d=b?.['maxItems'];let e=![],f=undefined;for(;;){const g=await query_table({'parent':a,'cursor':f??undefined,'limit':b?.['limit'],'no_cache':b?.['noCache'],'network':b?.['network']});for(const i of g?.['items']??[]){if(d!==undefined&&c['length']>=d)break;const j=String(i?.['object']??'');if(!j['startsWith']('0x'))continue;c['push']({'key':String(i?.['key']?.['value']??''),'objectId':j});}const h=g?.['hasNextPage']===!![]&&!!g?.['nextCursor'];if(d!==undefined&&c['length']>=d){e=h;break;}if(!h)break;f=String(g['nextCursor']);}return{'entries':c,'truncated':e};}export async function fetchAllFieldObjectIds(a,b,c){const {entries:d}=await fetchTableEntries(a,{'network':b,'noCache':c});return d['map'](f=>f['objectId']);}export async function batchQueryObjectsByIds(a,b,c){const d=[];for(let e=0x0;e<a['length'];e+=QUERY_OBJECTS_BATCH){const f=a['slice'](e,e+QUERY_OBJECTS_BATCH),g=await query_objects({'objects':f,'no_cache':c,'network':b});d['push'](...g?.['objects']??[]);}return d;}export async function batchQueryTableItems(a,b){const {entries:c,truncated:d}=await fetchTableEntries(a,b),e=c['length']>0x0?await batchQueryObjectsByIds(c['map'](h=>h['objectId']),b?.['network'],b?.['noCache']):[],f=new Map();for(const h of e){const i=String(h?.['object']??'')['toLowerCase']();if(i)f['set'](i,h);}const g=c['map'](j=>({...j,'object':f['get'](j['objectId']['toLowerCase']())}));return{'items':g,'truncated':d};}export async function fetchMachineNodes(a,b,c){const d=await query_objects({'objects':[a],'no_cache':c,'network':b}),e=d?.['objects']?.[0x0],f=e?.['object']??(typeof a==='string'&&a['startsWith']('0x')?a:undefined);if(!f)return[];const {items:g}=await batchQueryTableItems(f,{'network':b,'noCache':c});return g['map'](h=>h['object'])['filter'](h=>h?.['type']==='TableItem_MachineNode')['map'](h=>{const i=h?.['data']??h,j=typeof i?.['name']==='string'?i['name']:'',k=Array['isArray'](i?.['value'])?i['value']:Array['isArray'](i?.['pairs'])?i['pairs']:[];if(!j)return null;return{'name':j,'pairs':k['map'](l=>({'prev_node':String(l?.['prev_node']??''),'threshold':Number(l?.['threshold']??0x0),'forwards':Array['isArray'](l?.['forwards'])?l['forwards']['map'](m=>{const n=typeof m?.['guard']==='object'&&m?.['guard']!==null?m['guard']['guard']??undefined:typeof m?.['guard']==='string'?m['guard']:undefined;return{'name':String(m?.['name']??''),'weight':Number(m?.['weight']??0x0),'namedOperator':m?.['namedOperator']!==undefined&&m?.['namedOperator']!==null?String(m['namedOperator']):undefined,'permissionIndex':m?.['permissionIndex']!==undefined&&m?.['permissionIndex']!==null?Number(m['permissionIndex']):undefined,'guard':n};}):[]}))};})['filter'](h=>h!==null);}const COMPLETE_RE=/(^|_)(completed?|done|finished|received|delivered|accepted|confirmed|finalized|success|approved)(_|$)/i,REFUND_RE=/(^|_)(cancel(led)?|refund(ed)?|return(ed|_approved)?)(_|$)/i,EXCEPTION_RE=/(^|_)(interrupt(ed)?|exception|dispute(d)?|fail(ed)?|abort(ed)?|reject(ed)?)(_|$)/i;function classifyNode(a){if(COMPLETE_RE['test'](a))return'complete';if(REFUND_RE['test'](a))return'refund';if(EXCEPTION_RE['test'](a))return'exception';return'advance';}function businessMeaning(a,b){switch(b){case'complete':return'Service/deliverable\x20accepted\x20at\x20\x22'+a+'\x22\x20—\x20triggers\x20settlement\x20allocation\x20(funds\x20released\x20to\x20the\x20provider)';case'refund':return'Order\x20cancelled/returned\x20at\x20\x22'+a+'\x22\x20—\x20triggers\x20refund\x20allocation\x20(funds\x20back\x20to\x20the\x20customer)';case'exception':return'Exception\x20path\x20at\x20\x22'+a+'\x22\x20—\x20typically\x20routes\x20to\x20arbitration\x20or\x20partial-refund\x20handling';default:return'Progress\x20to\x20\x22'+a+'\x22';}}function shortAddr(a){if(!a)return undefined;return formatShortAddress(a);}function callerIsOrderHolder(a,b){if(!a||!b?.['length'])return![];const d=a['toLowerCase']();return b['some'](e=>e?.['toLowerCase']()===d);}function resolveOperator(a,b,c,d){if(a['namedOperator']===''){const e=b?.[0x0];return{'kind':'order_holder','role_name':'order\x20holder\x20(customer)','account_name':d?d(e):shortAddr(e)};}if(typeof a['namedOperator']==='string'&&a['namedOperator']['length']>0x0)return{'kind':'named_operator','named_operator':a['namedOperator'],'role_name':'named\x20operator\x20\x22'+a['namedOperator']+'\x22'};if(a['permissionIndex']!==undefined&&a['permissionIndex']!==null)return{'kind':'permission_index','permission_index':a['permissionIndex'],'role_name':resolvePermissionRole(a['permissionIndex'],c)};return{'kind':'order_holder','role_name':'unknown\x20operator'};}function gainsRisksFor(a,b,c){if(!c)return{'gains':[],'risks':[]};if(b)switch(a){case'complete':return{'gains':['Flow\x20advances','Settlement\x20triggered\x20(funds\x20released)'],'risks':['Funds\x20released\x20to\x20provider','Refund\x20leverage\x20lost\x20—\x20confirm\x20only\x20if\x20service\x20verified']};case'refund':return{'gains':['Funds\x20returned\x20to\x20you'],'risks':['If\x20service\x20was\x20already\x20rendered,\x20cancellation\x20may\x20be\x20disputed']};case'exception':return{'gains':['Avoids\x20stalemate'],'risks':['May\x20trigger\x20arbitration\x20/\x20reputation\x20impact']};default:return{'gains':['Flow\x20advances'],'risks':[]};}switch(a){case'complete':return{'gains':['Settlement\x20triggered\x20—\x20funds\x20released\x20to\x20provider'],'risks':[]};case'refund':return{'gains':['Clean\x20closure'],'risks':['Lost\x20revenue\x20for\x20this\x20order']};case'exception':return{'gains':['Avoids\x20stalemate'],'risks':['May\x20trigger\x20arbitration\x20/\x20compensation\x20fund']};default:return{'gains':['Flow\x20advances'],'risks':[]};}}function consistencyFor(a,b,c,d,e){let f;if(!e)f=a==='exception'?0x2d:0x32;else b?f=a==='refund'?0x46:a==='complete'?0x37:a==='exception'?0x23:0x32:f=a==='complete'?0x4b:a==='refund'?0x1e:a==='exception'?0x23:0x32;if(e&&c)f+=0x14;if(d)f-=0xa;return Math['max'](0x0,Math['min'](0x64,f));}export function buildWorkflowGuidance(a){const b=[];for(const i of a['nodes']){for(const j of i['pairs']){if(j['prev_node']!==a['current'])continue;for(const k of j['forwards']){if(!k['name'])continue;const l=resolveOperator(k,a['orderHolderAddresses'],a['permissionDescription'],a['nameResolver']),m=callerIsOrderHolder(a['callerAddress']??a['caller'],a['orderHolderAddresses']);let n=![];a['callerAddress']&&(n=accountCanExecuteForward(k,a['callerAddress'],a['progressNamedOperator']??[],a['orderContext'],a['permissionContext']));const p=classifyNode(i['name']),q=!!a['caller'],{gains:r,risks:s}=gainsRisksFor(p,m,q),t=consistencyFor(p,m,n,!!k['guard'],q);b['push']({'next_node':i['name'],'forward':k['name'],'weight':k['weight'],'operator':l,'guard':k['guard'],'business_meaning':businessMeaning(i['name'],p),'gains':r,'risks':s,'consistency':t,'recommended':![]});}}}if(b['length']===0x0)return{'current_node':a['current'],'caller':a['caller'],'options':[],'note':'Node\x20\x22'+a['current']+'\x22\x20has\x20no\x20outgoing\x20forwards\x20—\x20it\x20is\x20a\x20terminal\x20node\x20(or\x20the\x20workflow\x20is\x20stuck).\x20No\x20further\x20progress\x20operation\x20is\x20available\x20here.'};b['sort']((u,v)=>v['consistency']-u['consistency']);const c=b[0x0];b[0x0]={...c,'recommended':!![]};const d=[];for(const u of b){u!==c&&u['consistency']>0x0&&u['forward']!==c['forward']&&d['push']('Choosing\x20\x22'+u['forward']+'\x20→\x20'+u['next_node']+'\x22\x20forfeits\x20the\x20faster/more\x20aligned\x20path\x20\x22'+c['forward']+'\x20→\x20'+c['next_node']+'\x22');}const e=[],g=b['filter'](v=>v['operator']['kind']==='order_holder'&&v['forward']!==c['forward']&&c['forward']!==v['forward']),h=b['filter'](v=>v['operator']['account_name']&&v['operator']['account_name']!==a['caller']);return h['length']>0x0&&!b['some'](v=>v['recommended']&&v['operator']['account_name']===a['caller'])&&e['push']('The\x20recommended\x20action\x20is\x20executed\x20by\x20another\x20account\x20('+h[0x0]['operator']['account_name']+');\x20switch\x20the\x20signing\x20account\x20(env.account)\x20before\x20operating.'),{'current_node':a['current'],'caller':a['caller'],'options':b,'recommendation':{'best':c['forward']+'\x20→\x20'+c['next_node'],'rationale':'Highest\x20consistency\x20('+c['consistency']+'/100)\x20with\x20the\x20caller\x27s\x20interests.\x20Gains:\x20'+(c['gains']['join'](';\x20')||'none')+'.\x20Risks:\x20'+(c['risks']['join'](';\x20')||'none')+'.\x20Operator:\x20'+(c['operator']['role_name']??c['operator']['kind'])+(c['operator']['account_name']?'\x20('+c['operator']['account_name']+')':'')+'.'+(c['guard']?'\x20Guard\x20to\x20satisfy:\x20'+c['guard']+'.':''),'caveat':d['length']?d['join']('.\x20'):undefined},'note':e['length']?e['join']('\x20'):undefined};}export function buildWorkflowReceipt(a){const b=a['current']===a['targetNode'],c={'account':a['callerName'],'action':a['callerName']+'\x20executed\x20'+a['forward']+'\x20(→\x20'+a['targetNode']+')','forward':a['forward'],'target_node':a['targetNode'],'op':a['op'],'migrated':b,'current_node':a['current']};if(!b){const e=a['nodes']['filter'](j=>j['name']===a['targetNode'])['flatMap'](j=>j['pairs'])['find'](j=>j['prev_node']===a['current']),g=a['session']?.['slice'](-0x1)[0x0],h=g?.['threshold']??e?.['threshold']??0x0,i=g?.['weights']??0x0;if(h>0x0){c['threshold']=h,c['accumulated_weight']=i,c['remaining']=Math['max'](0x0,h-i);const j=new Set((g?.['forwards']??[])['filter'](l=>l?.['accomplished']!==![])['map'](l=>l?.['forward'])['filter'](l=>!!l)),k=[];for(const l of e?.['forwards']??[]){if(!l['name']||j['has'](l['name']))continue;k['push']({'forward':l['name'],'operator':resolveOperator(l,a['orderHolderAddresses'],a['permissionDescription'],a['nameResolver'])});}if(k['length'])c['waiting_on']=k;c['note']='Node\x20did\x20not\x20migrate:\x20threshold\x20'+h+',\x20accumulated\x20weight\x20'+i+',\x20remaining\x20'+Math['max'](0x0,h-i)+'.\x20'+(k['length']?'Waiting\x20for:\x20'+k['map'](m=>m['forward']+'\x20('+(m['operator']['role_name']??m['operator']['kind'])+')')['join'](';\x20'):'All\x20forwards\x20on\x20this\x20pair\x20are\x20accomplished\x20—\x20the\x20node\x20should\x20migrate\x20on\x20the\x20next\x20operation.');}else c['note']='Node\x20did\x20not\x20migrate\x20(threshold\x200)\x20—\x20no\x20further\x20weight\x20cooperation\x20required;\x20verify\x20the\x20operation\x20outcome.';}const d=buildWorkflowGuidance({'current':a['current'],'nodes':a['nodes'],'caller':a['caller'],'callerAddress':a['callerAddress'],'orderHolderAddresses':a['orderHolderAddresses'],'progressNamedOperator':a['progressNamedOperator'],'permissionContext':a['permissionContext'],'orderContext':a['orderContext'],'permissionDescription':a['permissionDescription'],'nameResolver':a['nameResolver']});if(d['options']['length']>0x0)c['next_guidance']=d;return c;}function operatorText(a){const b=[a['role_name']??a['kind']];if(a['account_name'])b['push'](a['account_name']);return b['join']('\x20/\x20');}export function renderGuidanceText(a){const b=['[WORKFLOW\x20GUIDANCE]\x20current\x20node:\x20\x22'+a['current_node']+'\x22'+(a['caller']?'\x20(caller:\x20'+a['caller']+')':'')];if(a['options']['length']===0x0)return b['push']('\x20\x20•\x20'+(a['note']??'No\x20reachable\x20next\x20nodes.')),b['join']('\x0a');for(const c of a['options']){const d=['\x22'+c['forward']+'\x22\x20→\x20\x22'+c['next_node']+'\x22','operator:\x20'+operatorText(c['operator']),'weight:\x20'+c['weight'],'consistency:\x20'+c['consistency']+'/100'+(c['recommended']?'\x20[RECOMMENDED]':'')];if(c['guard'])d['push']('guard:\x20'+c['guard']);d['push']('meaning:\x20'+c['business_meaning']);if(c['gains']['length'])d['push']('gains:\x20'+c['gains']['join'](';\x20'));if(c['risks']['length'])d['push']('risks:\x20'+c['risks']['join'](';\x20'));b['push']('\x20\x20•\x20'+d['join']('\x20|\x20'));}if(a['recommendation']?.['best']){b['push']('\x20\x20RECOMMENDED:\x20'+a['recommendation']['best']+'.\x20'+(a['recommendation']['rationale']??''));if(a['recommendation']['caveat'])b['push']('\x20\x20CAVEAT\x20(opportunity\x20cost):\x20'+a['recommendation']['caveat']);}if(a['note'])b['push']('\x20\x20NOTE:\x20'+a['note']);return b['push']('\x20\x20(AI\x20recommendation\x20only\x20—\x20the\x20account\x20decides;\x20switch\x20env.account\x20if\x20another\x20operator\x20must\x20act.)'),b['join']('\x0a');}export function renderReceiptText(a){const b=['[WORKFLOW\x20RECEIPT]\x20'+a['action']];b['push']('\x20\x20•\x20node\x20migrated:\x20'+(a['migrated']?'yes\x20→\x20current:\x20\x22'+a['current_node']+'\x22':'no\x20→\x20current:\x20\x22'+a['current_node']+'\x22'));if(!a['migrated']){a['threshold']!==undefined&&a['threshold']>0x0&&(b['push']('\x20\x20•\x20threshold:\x20'+a['threshold']+'\x20|\x20accumulated\x20weight:\x20'+(a['accumulated_weight']??0x0)+'\x20|\x20remaining:\x20'+(a['remaining']??0x0)),a['waiting_on']?.['length']&&b['push']('\x20\x20•\x20waiting\x20on:\x20'+a['waiting_on']['map'](c=>'\x22'+c['forward']+'\x22\x20('+operatorText(c['operator'])+')')['join'](';\x20')));if(a['note'])b['push']('\x20\x20•\x20note:\x20'+a['note']);}return a['next_guidance']&&a['next_guidance']['options']['length']>0x0&&b['push'](renderGuidanceText(a['next_guidance'])),b['join']('\x0a');}async function makeNameResolver(a){const b=[...new Set(a['filter'](d=>!!d))],c=new Map();if(b['length'])try{const d=await GetLocalNamesByAddresses(b);for(const e of d){const f=e?.['account']??e?.['local_mark'];if(f)c['set'](e['address']['toLowerCase'](),f);}}catch{}return g=>{if(!g)return undefined;const h=c['get'](g['toLowerCase']());return h??shortAddr(g);};}export async function enrichWorkflowGuidance(a){try{let b;if(a['progressRef']['startsWith']('0x'))b=a['progressRef'];else b=await LocalMark['Instance']()['get_address'](a['progressRef'])??undefined;if(!b)return undefined;const c=await query_objects({'objects':[b],'no_cache':a['noCache'],'network':a['network']}),d=c?.['objects']?.[0x0],e=d?.['data']??d;if((d?.['type']??e?.['type'])!=='Progress')return undefined;const f=e['current']??'',g=e['machine'],h=Array['isArray'](e['session'])?e['session']:[],i=(Array['isArray'](e['namedOperator'])?e['namedOperator']['find'](v=>v?.['name']==='')?.['operators']:undefined)??[];if(!g)return undefined;const j=await fetchMachineNodes(g,a['network'],![]);let k,l;try{const v=await query_objects({'objects':[g],'no_cache':a['noCache'],'network':a['network']}),w=v?.['objects']?.[0x0],x=w?.['data']??w,y=x?.['permission'];if(y){const z=await query_objects({'objects':[y],'no_cache':a['noCache'],'network':a['network']}),A=z?.['objects']?.[0x0];k=(A?.['data']??A)?.['description']??undefined,l=await fetchPermissionContext(y,a['network'],a['noCache']);}}catch{}const m=(Array['isArray'](e['namedOperator'])?e['namedOperator']:[])['map'](B=>({'name':String(B?.['name']??''),'operators':(B?.['operators']??[])['map'](C=>String(C))}));let n;e['task']&&(n=await fetchOrderContext(e['task'],a['network'],a['noCache']));const o=n?Array['from'](new Set([n['builder'],...n['agent']])['values']()):i;let p;try{p=await LocalMark['Instance']()['get_address'](a['accountName'])??undefined;}catch{p=undefined;}const q=await makeNameResolver([a['accountName'],...o]),r={'current':f,'nodes':j,'caller':a['accountName'],'callerAddress':p,'orderHolderAddresses':o,'progressNamedOperator':m,'permissionContext':l,'orderContext':n,'permissionDescription':k,'nameResolver':q},s=buildWorkflowGuidance(r);let t;a['operate']?.['forward']&&a['operate']?.['next_node_name']&&(t=buildWorkflowReceipt({...r,'callerName':a['accountName']??b,'forward':a['operate']['forward'],'targetNode':a['operate']['next_node_name'],'op':a['operate']['op'],'session':h}));const u=[t?renderReceiptText(t):undefined,s['options']['length']&&!t?.['next_guidance']?.['options']['length']?renderGuidanceText(s):undefined]['filter'](B=>!!B)['join']('\x0a\x0a');return{'guidance':s,'receipt':t,'text':u};}catch{return undefined;}}export function mergeGuidanceIntoOutput(a,b){if(!b)return a;try{const c=a?.['structuredContent'];if(c&&typeof c==='object'){const d=c['semantic'];if(d&&typeof d==='object'){if(b['guidance'])d['workflow_guidance']=b['guidance'];if(b['receipt'])d['workflow_receipt']=b['receipt'];}}b['text']&&Array['isArray'](a?.['content'])&&a['content'][0x0]?.['text']!==undefined&&(a['content'][0x0]['text']=b['text']+'\x0a\x0a'+a['content'][0x0]['text']);}catch{}return a;}export const ENTITY_REGISTRAR_OBJECT_ID='0x0000000000000000000000000000000000000000000000000000000000000aab';export const ENTITY_LINKER_OBJECT_ID='0x0000000000000000000000000000000000000000000000000000000000000aaa';async function batchReadDerivedFields(a,b,c,d){const e=new Map();if(b['length']===0x0)return e;const f=new Map();for(const h of b){const i=deriveDynamicFieldID(a,h['typeTag'],h['keyBytes'])['toLowerCase']();f['set'](i,h['joinKey']);}const g=await batchQueryObjectsByIds([...f['keys']()],c,d);for(const j of g){const l=String(j?.['object']??'')['toLowerCase'](),m=f['get'](l);if(!m)continue;e['set'](m,j?.['data']??j);}return e;}export async function batchReadAddressKeyedFields(a,b,c,d){const e=[...new Set((b??[])['map'](f=>String(f)['toLowerCase']())['filter'](f=>f['startsWith']('0x')))];return batchReadDerivedFields(a,e['map'](f=>({'typeTag':'address','keyBytes':bcs['Address']['serialize'](f)['toBytes'](),'joinKey':f})),c,d);}export async function batchReadU64KeyedFields(a,b,c,d){const e=[...new Set((b??[])['map'](f=>String(f))['filter'](f=>f!==''&&Number['isFinite'](Number(f))))];return batchReadDerivedFields(a,e['map'](f=>({'typeTag':'u64','keyBytes':bcs['u64']()['serialize'](Number(f))['toBytes'](),'joinKey':f})),c,d);}export async function batchFetchEntityRegistrar(a,b,c){try{return await batchReadAddressKeyedFields(ENTITY_REGISTRAR_OBJECT_ID,a,b,c);}catch{return new Map();}}export async function batchFetchEntityLinker(a,b,c){try{return await batchReadAddressKeyedFields(ENTITY_LINKER_OBJECT_ID,a,b,c);}catch{return new Map();}}export const ENTITY_PERMISSION_OBJECT_ID='0xaad';export const ENTITY_PERMISSION_ROLES={'OWNER':0x1,'ADMIN':0x2,'ENTITY':0x4};export async function fetchEntityPermission(a,b,c){try{const e=await batchReadAddressKeyedFields(ENTITY_PERMISSION_OBJECT_ID,[a],b,c),f=e['get'](String(a)['toLowerCase']()),g=[],h=new Map(),i=Array['isArray'](f?.['items'])?f['items']:[];for(const j of i){const k=Number(j?.['role']??0x0),l=String(j?.['permission']??'')['toLowerCase'](),m=Number(j?.['time']??0x0);l&&(g['push']({'role':k,'permission':l,'time':m}),h['set'](l,(h['get'](l)??0x0)|k));}return{'items':g,'byPermission':h};}catch{return undefined;}}export const ENTITY_CONTACT_OBJECT_ID='0xaa9';export async function fetchEntityContact(a,b,c){try{const e=await batchReadAddressKeyedFields(ENTITY_CONTACT_OBJECT_ID,[a],b,c),f=e['get'](String(a)['toLowerCase']()),g=[],h=new Map(),i=Array['isArray'](f?.['items'])?f['items']:[];for(const j of i){const k=String(j?.['contact']??'')['toLowerCase'](),l=Number(j?.['time']??0x0);k&&(g['push']({'contact':k,'time':l}),h['set'](k,(h['get'](k)??l)||l));}return{'items':g,'byContact':h};}catch{return undefined;}}export const ENTITY_ORDER_OBJECT_ID='0xaa8';export const ENTITY_ORDER_ROLES={'OWNER':0x1,'AGENT':0x2};export async function fetchOrdersOfUser(a,b,c){try{return await queryOrdersByUser({'address':a,'no_cache':c,'network':b});}catch{return undefined;}}export async function resolveLocalNamesFor(a){const b=new Map();try{const c=[...new Set((a??[])['filter'](e=>typeof e==='string'&&e['startsWith']('0x')))];if(c['length']===0x0)return{'byAddress':b};const d=await GetLocalNamesByAddresses(c);for(const e of d??[]){const f=e?.['account']||e?.['local_mark'];if(f)b['set'](String(e['address'])['toLowerCase'](),f);}}catch{}return{'byAddress':b};}export const OBJECT_LINKER_CORE_OBJECT_ID='0xaae';export const OBJECT_LINKER_TX_OBJECT_ID='0xaaf';async function fetchObjectLinker(a,b,c,e){try{const f=await batchReadAddressKeyedFields(a,[b],c,e),g=f['get'](String(b)['toLowerCase']()),h=[],i=new Map(),j=Array['isArray'](g?.['items'])?g['items']:[];for(const k of j){const l=String(k?.['who']??'')['toLowerCase'](),m=Number(k?.['time']??0x0);l&&(h['push']({'who':l,'time':m}),i['set'](l,m));}return{'items':h,'byWho':i};}catch{return undefined;}}export async function fetchObjectLinkerCore(a,b,c){return fetchObjectLinker(OBJECT_LINKER_CORE_OBJECT_ID,a,b,c);}export async function fetchObjectLinkerTx(a,b,c){return fetchObjectLinker(OBJECT_LINKER_TX_OBJECT_ID,a,b,c);}export async function fetchServiceOrders(a,b,c){const d=await fetchObjectLinkerTx(a,b,c);if(!d)return undefined;const e=d['items']['filter'](f=>objectTypeFromAddress(f['who'])===ObjectType['Order']);return{'items':e,'byWho':new Map(e['map'](f=>[f['who'],f['time']]))};}export async function fetchPermissionContext(a,b,c){try{const e=await query_objects({'objects':[a],'no_cache':c,'network':b}),f=e?.['objects']?.[0x0],g=f?.['data']??f,h=new Set((g?.['admin']??[])['map'](k=>String(k)['toLowerCase']())),i=new Map(),{items:j}=await batchQueryTableItems(a,{'network':b,'noCache':c});for(const k of j){const l=k['object'];if(!l)continue;const m=l?.['data']??l,n=m?.['address'],p=m?.['perm'];n!=null&&Array['isArray'](p)&&i['set'](String(n)['toLowerCase'](),new Set(p['map'](q=>Number(q))));}return{'admin':h,'table':i};}catch{return undefined;}}export async function fetchOrderContext(a,b,c){try{const e=await query_objects({'objects':[a],'no_cache':c,'network':b}),f=e?.['objects']?.[0x0];if((f?.['type']??f?.['data']?.['type'])!=='Order')return undefined;const g=f?.['data']??f;return{'builder':String(g?.['builder']??g?.['owner']??''),'agent':new Set((g?.['agent']??[])['map'](h=>String(h)['toLowerCase']()))};}catch{return undefined;}}export async function listLocalAccounts(){try{const a=await query_account_list({'suspended':![]});return(a??[])['filter'](b=>b?.['address'])['map'](b=>({'address':String(b['address']),'name':b['name']??undefined}));}catch{return[];}}export function accountCanExecuteForward(a,b,c,d,e){const g=b['toLowerCase']();if(a['namedOperator']!==undefined&&a['namedOperator']!==null){if(a['namedOperator']===''){if(d&&(g===d['builder']['toLowerCase']()||d['agent']['has'](g)))return!![];}else{if(a['namedOperator']['length']>0x0){const h=a['namedOperator'],i=c['find'](j=>String(j?.['name']??'')===h);if(i?.['operators']?.['some'](j=>String(j)['toLowerCase']()===g))return!![];}}}if(a['permissionIndex']!==undefined&&a['permissionIndex']!==null&&e){if(e['admin']['has'](g))return!![];const j=e['table']['get'](g);if(j?.['has'](a['permissionIndex']))return!![];}return![];}export function forwardOperatorKind(a){if(a['namedOperator']==='')return'order_holder';if(typeof a['namedOperator']==='string'&&a['namedOperator']['length']>0x0)return'named_operator';return'permission_index';}export function enumerateActionableForwards(a,b,c,d,e,g){const h=typeof a?.['current']==='string'?a['current']:'',i=new Map();for(const k of Array['isArray'](a?.['session'])?a['session']:[]){const l=String(k?.['next_node']??'');for(const m of Array['isArray'](k?.['forwards'])?k['forwards']:[]){i['set'](l+'|'+String(m?.['forward']??''),{'who':m?.['who']?String(m['who'])['toLowerCase']():null,'accomplished':!!m?.['accomplished']});}}const j=[];for(const n of b){for(const o of n['pairs']){if(o['prev_node']!==h)continue;for(const p of o['forwards']){if(!p['name'])continue;const q=i['get'](n['name']+'|'+p['name']);if(q?.['accomplished'])continue;let r=c['filter'](t=>accountCanExecuteForward(p,t,d,e,g));q?.['who']&&(r=r['filter'](t=>t['toLowerCase']()===q['who'])),j['push']({'next_node':n['name'],'forward':p['name'],'weight':p['weight'],'threshold':o['threshold'],'guard':p['guard'],'operator_kind':forwardOperatorKind(p),'permission_index':p['permissionIndex']??undefined,'named_operator':typeof p['namedOperator']==='string'&&p['namedOperator']['length']>0x0?p['namedOperator']:undefined,'executable_accounts':r['map'](t=>t['toLowerCase']())});}}}return j;}
1
+ import{query_account_list,LocalMark,GetLocalNamesByAddresses}from'@wowok/wowok';import{REPOSITORY_PERMISSIONS,REWARD_PERMISSIONS,MACHINE_PERMISSIONS,PROGRESS_PERMISSIONS,TREASURY_PERMISSIONS,SERVICE_PERMISSIONS,ARBITRATION_PERMISSIONS,DEMAND_PERMISSIONS,CONTACT_PERMISSIONS}from'./permission-ledger.js';import{formatShortAddress}from'../persona/address-format.js';import{recommendedCallForForwardBinding}from'../participation/radar-core.js';import{batchQueryObjectsByIds,fetchMachineNodes,fetchOrderContext,fetchPermissionContext}from'../graph/onchain/sdk-batch.js';const BUILTIN_PERMISSION_MAP=new Map();for(const entry of[...REPOSITORY_PERMISSIONS,...REWARD_PERMISSIONS,...MACHINE_PERMISSIONS,...PROGRESS_PERMISSIONS,...TREASURY_PERMISSIONS,...SERVICE_PERMISSIONS,...ARBITRATION_PERMISSIONS,...DEMAND_PERMISSIONS,...CONTACT_PERMISSIONS]){BUILTIN_PERMISSION_MAP['set'](entry['index'],entry['name']);}export function resolvePermissionRole(a,b){if(a===undefined||a===null)return'unknown\x20role';if(b){const d=/([A-Za-z][A-Za-z0-9_]*)\s*=\s*(\d+)/g;let e;while((e=d['exec'](b))!==null){if(Number(e[0x2])===a)return e[0x1]+'\x20(permission\x20'+a+')';}}const c=BUILTIN_PERMISSION_MAP['get'](a);if(c)return c+'\x20(permission\x20'+a+')';return'permission\x20'+a;}const COMPLETE_RE=/(^|_)(completed?|done|finished|received|delivered|accepted|confirmed|finalized|success|approved)(_|$)/i,REFUND_RE=/(^|_)(cancel(led)?|refund(ed)?|return(ed|_approved)?)(_|$)/i,EXCEPTION_RE=/(^|_)(interrupt(ed)?|exception|dispute(d)?|fail(ed)?|abort(ed)?|reject(ed)?)(_|$)/i;function classifyNode(a){if(COMPLETE_RE['test'](a))return'complete';if(REFUND_RE['test'](a))return'refund';if(EXCEPTION_RE['test'](a))return'exception';return'advance';}function businessMeaning(a,b){switch(b){case'complete':return'Service/deliverable\x20accepted\x20at\x20\x22'+a+'\x22\x20—\x20triggers\x20settlement\x20allocation\x20(funds\x20released\x20to\x20the\x20provider)';case'refund':return'Order\x20cancelled/returned\x20at\x20\x22'+a+'\x22\x20—\x20triggers\x20refund\x20allocation\x20(funds\x20back\x20to\x20the\x20customer)';case'exception':return'Exception\x20path\x20at\x20\x22'+a+'\x22\x20—\x20typically\x20routes\x20to\x20arbitration\x20or\x20partial-refund\x20handling';default:return'Progress\x20to\x20\x22'+a+'\x22';}}function shortAddr(a){if(!a)return undefined;return formatShortAddress(a);}function callerIsOrderHolder(a,b){if(!a||!b?.['length'])return![];const d=a['toLowerCase']();return b['some'](e=>e?.['toLowerCase']()===d);}function resolveOperator(a,b,c,d){const e=recommendedCallForForwardBinding({'permissionIndex':a['permissionIndex'],'namedOperator':a['namedOperator'],'hasGuard':!!a['guard']});if(a['namedOperator']===''){const g=b?.[0x0];return{'kind':'order_holder','role_name':'order\x20holder\x20(customer)','account_name':d?d(g):shortAddr(g),'recommended_call':e};}if(typeof a['namedOperator']==='string'&&a['namedOperator']['length']>0x0)return{'kind':'named_operator','named_operator':a['namedOperator'],'role_name':'named\x20operator\x20\x22'+a['namedOperator']+'\x22','recommended_call':e};if(a['permissionIndex']!==undefined&&a['permissionIndex']!==null)return{'kind':'permission_index','permission_index':a['permissionIndex'],'role_name':resolvePermissionRole(a['permissionIndex'],c),'recommended_call':e};return{'kind':'order_holder','role_name':'unknown\x20operator'};}function gainsRisksFor(a,b,c){if(!c)return{'gains':[],'risks':[]};if(b)switch(a){case'complete':return{'gains':['Flow\x20advances','Settlement\x20triggered\x20(funds\x20released)'],'risks':['Funds\x20released\x20to\x20provider','Refund\x20leverage\x20lost\x20—\x20confirm\x20only\x20if\x20service\x20verified']};case'refund':return{'gains':['Funds\x20returned\x20to\x20you'],'risks':['If\x20service\x20was\x20already\x20rendered,\x20cancellation\x20may\x20be\x20disputed']};case'exception':return{'gains':['Avoids\x20stalemate'],'risks':['May\x20trigger\x20arbitration\x20/\x20reputation\x20impact']};default:return{'gains':['Flow\x20advances'],'risks':[]};}switch(a){case'complete':return{'gains':['Settlement\x20triggered\x20—\x20funds\x20released\x20to\x20provider'],'risks':[]};case'refund':return{'gains':['Clean\x20closure'],'risks':['Lost\x20revenue\x20for\x20this\x20order']};case'exception':return{'gains':['Avoids\x20stalemate'],'risks':['May\x20trigger\x20arbitration\x20/\x20compensation\x20fund']};default:return{'gains':['Flow\x20advances'],'risks':[]};}}function consistencyFor(a,b,c,d,e){let f;if(!e)f=a==='exception'?0x2d:0x32;else b?f=a==='refund'?0x46:a==='complete'?0x37:a==='exception'?0x23:0x32:f=a==='complete'?0x4b:a==='refund'?0x1e:a==='exception'?0x23:0x32;if(e&&c)f+=0x14;if(d)f-=0xa;return Math['max'](0x0,Math['min'](0x64,f));}export function buildWorkflowGuidance(a){const b=[];for(const i of a['nodes']){for(const j of i['pairs']){if(j['prev_node']!==a['current'])continue;for(const k of j['forwards']){if(!k['name'])continue;const l=resolveOperator(k,a['orderHolderAddresses'],a['permissionDescription'],a['nameResolver']),m=callerIsOrderHolder(a['callerAddress']??a['caller'],a['orderHolderAddresses']);let n=![];a['callerAddress']&&(n=accountCanExecuteForward(k,a['callerAddress'],a['progressNamedOperator']??[],a['orderContext'],a['permissionContext']));const p=classifyNode(i['name']),q=!!a['caller'],{gains:r,risks:s}=gainsRisksFor(p,m,q),t=consistencyFor(p,m,n,!!k['guard'],q);b['push']({'next_node':i['name'],'forward':k['name'],'weight':k['weight'],'operator':l,'guard':k['guard'],'business_meaning':businessMeaning(i['name'],p),'gains':r,'risks':s,'consistency':t,'recommended':![]});}}}if(b['length']===0x0)return{'current_node':a['current'],'caller':a['caller'],'options':[],'note':'Node\x20\x22'+a['current']+'\x22\x20has\x20no\x20outgoing\x20forwards\x20—\x20it\x20is\x20a\x20terminal\x20node\x20(or\x20the\x20workflow\x20is\x20stuck).\x20No\x20further\x20progress\x20operation\x20is\x20available\x20here.'};b['sort']((u,v)=>v['consistency']-u['consistency']);const c=b[0x0];b[0x0]={...c,'recommended':!![]};const d=[];for(const u of b){u!==c&&u['consistency']>0x0&&u['forward']!==c['forward']&&d['push']('Choosing\x20\x22'+u['forward']+'\x20→\x20'+u['next_node']+'\x22\x20forfeits\x20the\x20faster/more\x20aligned\x20path\x20\x22'+c['forward']+'\x20→\x20'+c['next_node']+'\x22');}const e=[],g=b['filter'](v=>v['operator']['kind']==='order_holder'&&v['forward']!==c['forward']&&c['forward']!==v['forward']),h=b['filter'](v=>v['operator']['account_name']&&v['operator']['account_name']!==a['caller']);return h['length']>0x0&&!b['some'](v=>v['recommended']&&v['operator']['account_name']===a['caller'])&&e['push']('The\x20recommended\x20action\x20is\x20executed\x20by\x20another\x20account\x20('+h[0x0]['operator']['account_name']+');\x20switch\x20the\x20signing\x20account\x20(env.account)\x20before\x20operating.'),{'current_node':a['current'],'caller':a['caller'],'options':b,'recommendation':{'best':c['forward']+'\x20→\x20'+c['next_node'],'rationale':'Highest\x20consistency\x20('+c['consistency']+'/100)\x20with\x20the\x20caller\x27s\x20interests.\x20Gains:\x20'+(c['gains']['join'](';\x20')||'none')+'.\x20Risks:\x20'+(c['risks']['join'](';\x20')||'none')+'.\x20Operator:\x20'+(c['operator']['role_name']??c['operator']['kind'])+(c['operator']['account_name']?'\x20('+c['operator']['account_name']+')':'')+'.'+(c['guard']?'\x20Guard\x20to\x20satisfy:\x20'+c['guard']+'.':''),'caveat':d['length']?d['join']('.\x20'):undefined},'note':e['length']?e['join']('\x20'):undefined};}export function buildWorkflowReceipt(a){const b=a['current']===a['targetNode'],c={'account':a['callerName'],'action':a['callerName']+'\x20executed\x20'+a['forward']+'\x20(→\x20'+a['targetNode']+')','forward':a['forward'],'target_node':a['targetNode'],'op':a['op'],'migrated':b,'current_node':a['current']};if(!b){const e=a['nodes']['filter'](j=>j['name']===a['targetNode'])['flatMap'](j=>j['pairs'])['find'](j=>j['prev_node']===a['current']),g=a['session']?.['slice'](-0x1)[0x0],h=g?.['threshold']??e?.['threshold']??0x0,i=g?.['weights']??0x0;if(h>0x0){c['threshold']=h,c['accumulated_weight']=i,c['remaining']=Math['max'](0x0,h-i);const j=new Set((g?.['forwards']??[])['filter'](l=>l?.['accomplished']!==![])['map'](l=>l?.['forward'])['filter'](l=>!!l)),k=[];for(const l of e?.['forwards']??[]){if(!l['name']||j['has'](l['name']))continue;k['push']({'forward':l['name'],'operator':resolveOperator(l,a['orderHolderAddresses'],a['permissionDescription'],a['nameResolver'])});}if(k['length'])c['waiting_on']=k;c['note']='Node\x20did\x20not\x20migrate:\x20threshold\x20'+h+',\x20accumulated\x20weight\x20'+i+',\x20remaining\x20'+Math['max'](0x0,h-i)+'.\x20'+(k['length']?'Waiting\x20for:\x20'+k['map'](m=>m['forward']+'\x20('+(m['operator']['role_name']??m['operator']['kind'])+')')['join'](';\x20'):'All\x20forwards\x20on\x20this\x20pair\x20are\x20accomplished\x20—\x20the\x20node\x20should\x20migrate\x20on\x20the\x20next\x20operation.');}else c['note']='Node\x20did\x20not\x20migrate\x20(threshold\x200)\x20—\x20no\x20further\x20weight\x20cooperation\x20required;\x20verify\x20the\x20operation\x20outcome.';}const d=buildWorkflowGuidance({'current':a['current'],'nodes':a['nodes'],'caller':a['caller'],'callerAddress':a['callerAddress'],'orderHolderAddresses':a['orderHolderAddresses'],'progressNamedOperator':a['progressNamedOperator'],'permissionContext':a['permissionContext'],'orderContext':a['orderContext'],'permissionDescription':a['permissionDescription'],'nameResolver':a['nameResolver']});if(d['options']['length']>0x0)c['next_guidance']=d;return c;}function operatorText(a){const b=[a['role_name']??a['kind']];if(a['account_name'])b['push'](a['account_name']);return b['join']('\x20/\x20');}export function renderGuidanceText(a){const b=['[WORKFLOW\x20GUIDANCE]\x20current\x20node:\x20\x22'+a['current_node']+'\x22'+(a['caller']?'\x20(caller:\x20'+a['caller']+')':'')];if(a['options']['length']===0x0)return b['push']('\x20\x20•\x20'+(a['note']??'No\x20reachable\x20next\x20nodes.')),b['join']('\x0a');for(const c of a['options']){const d=['\x22'+c['forward']+'\x22\x20→\x20\x22'+c['next_node']+'\x22','operator:\x20'+operatorText(c['operator']),'weight:\x20'+c['weight'],'consistency:\x20'+c['consistency']+'/100'+(c['recommended']?'\x20[RECOMMENDED]':'')];if(c['guard'])d['push']('guard:\x20'+c['guard']);d['push']('meaning:\x20'+c['business_meaning']);if(c['gains']['length'])d['push']('gains:\x20'+c['gains']['join'](';\x20'));if(c['risks']['length'])d['push']('risks:\x20'+c['risks']['join'](';\x20'));b['push']('\x20\x20•\x20'+d['join']('\x20|\x20'));}if(a['recommendation']?.['best']){b['push']('\x20\x20RECOMMENDED:\x20'+a['recommendation']['best']+'.\x20'+(a['recommendation']['rationale']??''));if(a['recommendation']['caveat'])b['push']('\x20\x20CAVEAT\x20(opportunity\x20cost):\x20'+a['recommendation']['caveat']);}if(a['note'])b['push']('\x20\x20NOTE:\x20'+a['note']);return b['push']('\x20\x20(AI\x20recommendation\x20only\x20—\x20the\x20account\x20decides;\x20switch\x20env.account\x20if\x20another\x20operator\x20must\x20act.)'),b['join']('\x0a');}export function renderReceiptText(a){const b=['[WORKFLOW\x20RECEIPT]\x20'+a['action']];b['push']('\x20\x20•\x20node\x20migrated:\x20'+(a['migrated']?'yes\x20→\x20current:\x20\x22'+a['current_node']+'\x22':'no\x20→\x20current:\x20\x22'+a['current_node']+'\x22'));if(!a['migrated']){a['threshold']!==undefined&&a['threshold']>0x0&&(b['push']('\x20\x20•\x20threshold:\x20'+a['threshold']+'\x20|\x20accumulated\x20weight:\x20'+(a['accumulated_weight']??0x0)+'\x20|\x20remaining:\x20'+(a['remaining']??0x0)),a['waiting_on']?.['length']&&b['push']('\x20\x20•\x20waiting\x20on:\x20'+a['waiting_on']['map'](c=>'\x22'+c['forward']+'\x22\x20('+operatorText(c['operator'])+')')['join'](';\x20')));if(a['note'])b['push']('\x20\x20•\x20note:\x20'+a['note']);}return a['next_guidance']&&a['next_guidance']['options']['length']>0x0&&b['push'](renderGuidanceText(a['next_guidance'])),b['join']('\x0a');}async function makeNameResolver(a){const b=[...new Set(a['filter'](d=>!!d))],c=new Map();if(b['length'])try{const d=await GetLocalNamesByAddresses(b);for(const e of d){const f=e?.['account']??e?.['local_mark'];if(f)c['set'](e['address']['toLowerCase'](),f);}}catch{}return g=>{if(!g)return undefined;const h=c['get'](g['toLowerCase']());return h??shortAddr(g);};}export async function enrichWorkflowGuidance(a){try{let b;if(a['progressRef']['startsWith']('0x'))b=a['progressRef'];else b=await LocalMark['Instance']()['get_address'](a['progressRef'])??undefined;if(!b)return undefined;const c=(await batchQueryObjectsByIds([b],a['network'],a['noCache']))[0x0],d=c?.['data']??c;if((c?.['type']??d?.['type'])!=='Progress')return undefined;const e=d['current']??'',f=d['machine'],g=Array['isArray'](d['session'])?d['session']:[],h=(Array['isArray'](d['namedOperator'])?d['namedOperator']['find'](u=>u?.['name']==='')?.['operators']:undefined)??[];if(!f)return undefined;const i=await fetchMachineNodes(f,a['network'],![]);let j,k;try{const u=await batchQueryObjectsByIds([f],a['network'],a['noCache']),v=u[0x0],w=v?.['data']??v,x=w?.['permission'];if(x){const y=await batchQueryObjectsByIds([x],a['network'],a['noCache']),z=y[0x0];j=(z?.['data']??z)?.['description']??undefined,k=await fetchPermissionContext(x,a['network'],a['noCache']);}}catch{}const l=(Array['isArray'](d['namedOperator'])?d['namedOperator']:[])['map'](A=>({'name':String(A?.['name']??''),'operators':(A?.['operators']??[])['map'](B=>String(B))}));let m;d['task']&&(m=await fetchOrderContext(d['task'],a['network'],a['noCache']));const n=m?Array['from'](new Set([m['builder'],...m['agent']])['values']()):h;let o;try{o=await LocalMark['Instance']()['get_address'](a['accountName'])??undefined;}catch{o=undefined;}const p=await makeNameResolver([a['accountName'],...n]),q={'current':e,'nodes':i,'caller':a['accountName'],'callerAddress':o,'orderHolderAddresses':n,'progressNamedOperator':l,'permissionContext':k,'orderContext':m,'permissionDescription':j,'nameResolver':p},r=buildWorkflowGuidance(q);let s;a['operate']?.['forward']&&a['operate']?.['next_node_name']&&(s=buildWorkflowReceipt({...q,'callerName':a['accountName']??b,'forward':a['operate']['forward'],'targetNode':a['operate']['next_node_name'],'op':a['operate']['op'],'session':g}));const t=[s?renderReceiptText(s):undefined,r['options']['length']&&!s?.['next_guidance']?.['options']['length']?renderGuidanceText(r):undefined]['filter'](A=>!!A)['join']('\x0a\x0a');return{'guidance':r,'receipt':s,'text':t};}catch{return undefined;}}export function mergeGuidanceIntoOutput(a,b){if(!b)return a;try{const c=a?.['structuredContent'];if(c&&typeof c==='object'){const d=c['semantic'];if(d&&typeof d==='object'){if(b['guidance'])d['workflow_guidance']=b['guidance'];if(b['receipt'])d['workflow_receipt']=b['receipt'];}}b['text']&&Array['isArray'](a?.['content'])&&a['content'][0x0]?.['text']!==undefined&&(a['content'][0x0]['text']=b['text']+'\x0a\x0a'+a['content'][0x0]['text']);}catch{}return a;}export async function resolveLocalNamesFor(a){const b=new Map();try{const c=[...new Set((a??[])['filter'](e=>typeof e==='string'&&e['startsWith']('0x')))];if(c['length']===0x0)return{'byAddress':b};const d=await GetLocalNamesByAddresses(c);for(const e of d??[]){const f=e?.['account']||e?.['local_mark'];if(f)b['set'](String(e['address'])['toLowerCase'](),f);}}catch{}return{'byAddress':b};}export async function listLocalAccounts(){try{const a=await query_account_list({'suspended':![]});return(a??[])['filter'](b=>b?.['address'])['map'](b=>({'address':String(b['address']),'name':b['name']??undefined}));}catch{return[];}}export function accountCanExecuteForward(a,b,c,d,e){const g=b['toLowerCase']();if(a['namedOperator']!==undefined&&a['namedOperator']!==null){if(a['namedOperator']===''){if(d&&(g===d['builder']['toLowerCase']()||d['agent']['has'](g)))return!![];}else{if(a['namedOperator']['length']>0x0){const h=a['namedOperator'],i=c['find'](j=>String(j?.['name']??'')===h);if(i?.['operators']?.['some'](j=>String(j)['toLowerCase']()===g))return!![];}}}if(a['permissionIndex']!==undefined&&a['permissionIndex']!==null&&e){if(e['admin']['has'](g))return!![];const j=e['table']['get'](g);if(j?.['has'](a['permissionIndex']))return!![];}return![];}export function forwardOperatorKind(a){if(a['namedOperator']==='')return'order_holder';if(typeof a['namedOperator']==='string'&&a['namedOperator']['length']>0x0)return'named_operator';return'permission_index';}export function enumerateActionableForwards(a,b,c,d,e,g){const h=typeof a?.['current']==='string'?a['current']:'',i=new Map();for(const k of Array['isArray'](a?.['session'])?a['session']:[]){const l=String(k?.['next_node']??'');for(const m of Array['isArray'](k?.['forwards'])?k['forwards']:[]){i['set'](l+'|'+String(m?.['forward']??''),{'who':m?.['who']?String(m['who'])['toLowerCase']():null,'accomplished':!!m?.['accomplished']});}}const j=[];for(const n of b){for(const o of n['pairs']){if(o['prev_node']!==h)continue;for(const p of o['forwards']){if(!p['name'])continue;const q=i['get'](n['name']+'|'+p['name']);if(q?.['accomplished'])continue;let r=c['filter'](t=>accountCanExecuteForward(p,t,d,e,g));q?.['who']&&(r=r['filter'](t=>t['toLowerCase']()===q['who'])),j['push']({'next_node':n['name'],'forward':p['name'],'weight':p['weight'],'threshold':o['threshold'],'guard':p['guard'],'operator_kind':forwardOperatorKind(p),'permission_index':p['permissionIndex']??undefined,'named_operator':typeof p['namedOperator']==='string'&&p['namedOperator']['length']>0x0?p['namedOperator']:undefined,'executable_accounts':r['map'](t=>t['toLowerCase']())});}}}return j;}
@@ -1 +1 @@
1
- import{objectTypeFromAddress,query_affiliations,query_local_mark_list,query_table}from'@wowok/wowok';import{ObjectType}from'@wowok/wowok';import{batchFetchEntityLinker,batchFetchEntityRegistrar,batchQueryObjectsByIds,fetchEntityPermission,fetchEntityContact,fetchObjectLinkerCore,fetchObjectLinkerTx,listLocalAccounts,resolveLocalNamesFor}from'./workflow-guidance.js';import{fetchMachineNodes,buildMachineGraph}from'../playbooks/service-build/machine-nodes.js';const AGG_TTL_MS=0x1d4c0,AGG_CACHE_MAX=0x8,aggCache=new Map(),aggInflight=new Map(),CLASSIFIED_TYPES=new Set([ObjectType['Permission'],ObjectType['Service'],ObjectType['Machine'],ObjectType['Treasury'],ObjectType['Repository'],ObjectType['Reward'],ObjectType['Demand'],ObjectType['Arbitration'],ObjectType['Arb'],ObjectType['Contact'],ObjectType['Order'],ObjectType['Progress']]);function sortItems(a){return a['sort']((c,d)=>(d['time']??0x0)-(c['time']??0x0)||c['object']['localeCompare'](d['object']));}export async function buildWorkspaceLists(a){const b=a['network'],c=a['account']?.['trim']()['toLowerCase']()||undefined,d=a['no_cache']===!![],e=(b??'')+'|'+(c??'');if(!d){const g=aggCache['get'](e);if(g&&Date['now']()-g['at']<AGG_TTL_MS)return{...g['value'],'cached':!![]};const h=aggInflight['get'](e);if(h)return h;}const f=((async()=>{const i=c?[{'address':c,'name':undefined}]:await listLocalAccounts(),j={'action':'workspace_lists','network':b,'updated_at_ms':Date['now'](),'cached':![],'treasuries':[],'repositories':[],'contacts':[],'machines':[],'rewards':[],'others':[],'counts':{'treasuries':0x0,'repositories':0x0,'contacts':0x0,'machines':0x0,'rewards':0x0,'others':0x0},'note':i['length']===0x0?'No\x20local\x20accounts\x20found\x20—\x20create\x20or\x20import\x20an\x20account\x20first.':undefined};if(i['length']===0x0)return aggCache['set'](e,{'at':Date['now'](),'value':j}),j;const [k,l,n]=await Promise['all']([Promise['all'](i['map'](S=>fetchEntityPermission(S['address'],b,d))),Promise['all'](i['map'](S=>fetchEntityContact(S['address'],b,d))),Promise['all'](i['map'](S=>fetchObjectLinkerTx(S['address'],b,d)))]),p=[],q=new Set();for(const S of k){for(const T of S?.['items']??[]){!q['has'](T['permission'])&&(q['add'](T['permission']),p['push'](T['permission']));}}const s=await Promise['all'](p['map'](U=>fetchObjectLinkerCore(U,b,d))),u={'treasuries':new Map(),'repositories':new Map(),'contacts':new Map(),'machines':new Map(),'rewards':new Map()},v=(U,V,W)=>{const X=V['toLowerCase'](),Y=U['get'](X);if(Y===undefined||(W??0x0)>Y)U['set'](X,W??0x0);};s['forEach'](U=>{for(const V of U?.['items']??[]){const W=objectTypeFromAddress(V['who']);if(W===ObjectType['Treasury'])v(u['treasuries'],V['who'],V['time']);else{if(W===ObjectType['Repository'])v(u['repositories'],V['who'],V['time']);else{if(W===ObjectType['Machine'])v(u['machines'],V['who'],V['time']);else{if(W===ObjectType['Reward'])v(u['rewards'],V['who'],V['time']);else{if(W===ObjectType['Contact'])v(u['contacts'],V['who'],V['time']);}}}}}});for(const U of l){for(const V of U?.['items']??[])v(u['contacts'],V['contact'],V['time']);}const w=new Map();for(const W of n){for(const X of W?.['items']??[]){const Y=objectTypeFromAddress(X['who']);if(Y&&CLASSIFIED_TYPES['has'](Y))continue;v(w,X['who'],X['time']);}}const x=[...u['treasuries']['keys'](),...u['repositories']['keys'](),...u['contacts']['keys'](),...u['machines']['keys'](),...u['rewards']['keys'](),...w['keys']()],y=Z=>Z['startsWith']('0x00'),z=[],A=[];for(const Z of x){if(y(Z))A['push'](Z);else z['push'](Z);}const B=await resolveLocalNamesFor(x);if(a['light']){const a0=a2=>sortItems([...a2['entries']()]['map'](([a3,a4])=>({'object':a3,'object_type':objectTypeFromAddress(a3)??null,'name':B['byAddress']['get'](a3),'time':a4||undefined}))),a1={'treasuries':u['treasuries']['size'],'repositories':u['repositories']['size'],'contacts':u['contacts']['size'],'machines':u['machines']['size'],'rewards':u['rewards']['size'],'others':w['size']};return{'action':'workspace_lists','network':b,'updated_at_ms':Date['now'](),'cached':![],'treasuries':a0(u['treasuries']),'repositories':a0(u['repositories']),'contacts':a0(u['contacts']),'machines':a0(u['machines']),'rewards':a0(u['rewards']),'others':a0(w),'counts':a1,'note':i['length']===0x0?'No\x20local\x20accounts\x20found\x20—\x20create\x20or\x20import\x20an\x20account\x20first.':undefined};}const C=new Map(),D=new Map(),E=new Map(),F=new Map(),G=new Map(),H=new Map(),I=new Map();let J=![];try{const [a2,a3,a4,a5]=await Promise['all']([z['length']>0x0?batchQueryObjectsByIds(z,b,d)['then'](ab=>({'objects':ab})):Promise['resolve']({'objects':[]}),batchFetchEntityRegistrar(A,b,d),query_local_mark_list(undefined),listLocalAccounts()]),a6=new Set((a5??[])['map'](ab=>String(ab?.['address']??'')['toLowerCase']())),a7=new Set((a2?.['objects']??[])['map'](ab=>String(ab?.['object']??ab?.['address']??'')['toLowerCase']())['filter'](Boolean));for(const [ab,ac]of a3){a7['add'](ab);const ad=ac?.['description']??ac?.['info']?.['description'];if(typeof ad==='string'&&ad['trim']())C['set'](ab,ad['trim']());}if(a7['size']>0x0){const ae=af=>{for(const ag of[...af['keys']()])if(!a7['has'](ag))af['delete'](ag);};ae(u['treasuries']),ae(u['repositories']),ae(u['contacts']),ae(u['machines']),ae(u['rewards']),ae(w);}const a8=new Set([...u['treasuries']['keys'](),...u['repositories']['keys'](),...u['contacts']['keys'](),...u['machines']['keys'](),...u['rewards']['keys'](),...w['keys']()]);try{const af=await batchFetchEntityLinker([...a8],b,d);J=!![];for(const [ag,ah]of af){const ai=Array['isArray'](ah?.['votes'])?ah['votes']:[];I['set'](ag,{'like':ai['filter'](aj=>aj&&aj['like'])['length'],'dislike':ai['filter'](aj=>aj&&aj['dislike'])['length'],'favor':ai['filter'](aj=>aj&&aj['favor'])['length'],...ai['length']>0x0?{'votes':ai['map'](aj=>({'who':aj?.['who']??null,'like':!!aj?.['like'],'dislike':!!aj?.['dislike'],'favor':!!aj?.['favor']}))}:{}});}}catch{}for(const aj of a2?.['objects']??[]){const ak=String(aj?.['object']??aj?.['address']??'')['toLowerCase'](),al=aj?.['description']??aj?.['data']?.['description'];ak&&typeof al==='string'&&al['trim']()&&C['set'](ak,al['trim']());if(ak&&u['contacts']['has'](ak)){const am=Array['isArray'](aj?.['ims'])?aj['ims']:[],an=typeof aj?.['location']==='string'?aj['location']['trim']():'';E['set'](ak,{...an?{'location':an}:{},'members_total':am['length'],'members_mine':am['filter'](ao=>a6['has'](String(ao?.['at']??'')['toLowerCase']()))['length']});}if(ak&&u['rewards']['has'](ak)){const ao=/<([0-9a-zA-Z_:]+)>\s*$/['exec'](String(aj?.['type_raw']??'')),ap=Array['isArray'](aj?.['guards'])?aj['guards']:[],aq=Number(aj?.['record_count']);H['set'](ak,{...ao?{'token':ao[0x1]['split']('::')['pop']()}:{},'guards_total':ap['length'],...Number['isFinite'](aq)?{'claimers':aq}:{},...aj?.['balance']!=null?{'balance_total':String(aj['balance'])}:{},...aj?.['type_raw']!=null?{'type_raw':String(aj['type_raw'])}:{}});}if(ak&&u['treasuries']['has'](ak)){const ar=/<([0-9a-zA-Z_:]+)>\s*$/['exec'](String(aj?.['type_raw']??'')),as=at=>at===null||at===undefined||at===''?undefined:String(at);H['set'](ak,{...ar?{'token':ar[0x1]['split']('::')['pop']()}:{},...aj?.['balance']!=null?{'balance_total':String(aj['balance'])}:{},...aj?.['type_raw']!=null?{'type_raw':String(aj['type_raw'])}:{},...aj?.['inflow']!=null?{'inflow':as(aj['inflow'])}:{},...aj?.['outflow']!=null?{'outflow':as(aj['outflow'])}:{}});}if(ak&&u['repositories']['has'](ak)){const at=Number(aj?.['data_count']),au=Array['isArray'](aj?.['policies'])?aj['policies']:[],av=Array['isArray'](aj?.['rewards'])?aj['rewards']:[];F['set'](ak,{...Number['isFinite'](at)?{'records_total':at}:{},'policies_total':au['length'],'rewards_total':av['length']});}ak&&u['machines']['has'](ak)&&(aj?.['bPublished']!=null||aj?.['bPaused']!=null||aj?.['node_count']!=null)&&G['set'](ak,{'status':aj['bPublished']===!![]?aj['bPaused']===!![]?'PAUSED':'LIVE':'UNPUBLISHED',...Number['isFinite'](Number(aj?.['node_count']))?{'nodes':Number(aj['node_count'])}:{}});}for(const aw of a4??[]){const ax=String(aw?.['address']??'')['toLowerCase']();ax&&Array['isArray'](aw?.['tags'])&&aw['tags']['length']>0x0&&D['set'](ax,aw['tags']['map'](String));}await Promise['all']([...E['keys'](),...F['keys'](),...[...H['keys']()]['filter'](ay=>u['treasuries']['has'](ay)||u['rewards']['has'](ay))]['map'](async ay=>{try{const az=await query_affiliations({'address':ay,'no_cache':d,'network':b}),aA=new Set();let aB=0x0;for(const aD of az?.['entries']??[]){const aE=String(aD?.['who']??'')['toLowerCase']();if(!aE||aE==='0x0')continue;if(objectTypeFromAddress(aE)===undefined)continue;const aF=(aD?.['table']??'')+':'+aE;if(aA['has'](aF))continue;aA['add'](aF),aB++;}const aC=E['get'](ay)??F['get'](ay)??(u['treasuries']['has'](ay)||u['rewards']['has'](ay)?H['get'](ay):undefined);if(aC)aC['related_objects']=aB;}catch{}})),await Promise['all']([...u['machines']['keys']()]['map'](async ay=>{try{const [az,aA]=await Promise['all']([fetchMachineNodes(ay,b)['catch'](()=>undefined),fetchObjectLinkerTx(ay,b,d)]);if(!G['has'](ay))G['set'](ay,{});const aB=G['get'](ay);if(az){const aC=buildMachineGraph(az);!Number['isFinite'](Number(aB['nodes']))&&(aB['nodes']=aC['nodes']['filter'](aD=>!aD['is_start']&&aD['name']!=='')['length']),aB['edges']=aC['edges']['length'];}else Number(aB['nodes'])===0x0&&(aB['edges']=0x0);if(aA){const aD=new Set();let aE=0x0,aF=0x0;for(const aG of aA['items']??[]){const aH=String(aG?.['who']??'')['toLowerCase']();if(!aH||aH==='0x0'||aD['has'](aH))continue;aD['add'](aH);if(objectTypeFromAddress(aH)===undefined)continue;aE++;if(objectTypeFromAddress(aH)===ObjectType['Progress'])aF++;}aB['related_objects']=aE,aB['progresses']=aF;}}catch{}}));const a9=0x12c,aa=0xc8;await Promise['all']([...F['keys']()]['map'](async ay=>{try{let az=undefined,aA=0x0;for(;;){const aC=await query_table({'parent':ay,'cursor':az,'limit':aa,'no_cache':d,'network':b});aA+=Array['isArray'](aC?.['items'])?aC['items']['length']:0x0;if(!aC?.['hasNextPage']||!aC?.['nextCursor']||aA>=a9)break;az=String(aC['nextCursor']);}const aB=F['get'](ay);if(aB)aB['records_total']=Math['min'](aA,a9);}catch(aD){if(/query\.parent/i['test'](String(aD?.['message']??aD))){const aE=F['get'](ay);if(aE)aE['records_total']=0x0;}}}));}catch{}const K=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az)}))),L=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az),...E['get'](az)??{}}))),M=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az),...H['get'](az)??{}}))),N=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az),...H['get'](az)??{}}))),O=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az),...F['get'](az)??{}}))),P=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az),...G['get'](az)??{}}))),Q={'action':'workspace_lists','network':b,'updated_at_ms':Date['now'](),'cached':![],'treasuries':N(u['treasuries']),'repositories':O(u['repositories']),'contacts':L(u['contacts']),'machines':P(u['machines']),'rewards':M(u['rewards']),'others':K(w),'counts':{'treasuries':u['treasuries']['size'],'repositories':u['repositories']['size'],'contacts':u['contacts']['size'],'machines':u['machines']['size'],'rewards':u['rewards']['size'],'others':w['size']}},R={'like':0x0,'dislike':0x0,'favor':0x0};for(const ay of[Q['treasuries'],Q['repositories'],Q['contacts'],Q['machines'],Q['rewards'],Q['others']]){for(const az of ay){const aA=I['get'](az['object']);if(aA)az['rep']=aA;else{if(J)az['rep']=R;}}}aggCache['set'](e,{'at':Date['now'](),'value':Q});if(aggCache['size']>AGG_CACHE_MAX){const aB=aggCache['keys']()['next']()['value'];if(aB!==undefined)aggCache['delete'](aB);}return Q;})());if(!d)aggInflight['set'](e,f);try{return await f;}finally{if(!d)aggInflight['delete'](e);}}
1
+ import{objectTypeFromAddress,query_affiliations,query_local_mark_list,query_table}from'@wowok/wowok';import{ObjectType}from'@wowok/wowok';import{batchFetchEntityLinker,batchFetchEntityRegistrar,batchQueryObjectsByIds,fetchEntityPermission,fetchEntityContact,fetchObjectLinkerCore,fetchObjectLinkerTx}from'../graph/onchain/sdk-batch.js';import{listLocalAccounts,resolveLocalNamesFor}from'./workflow-guidance.js';import{fetchMachineNodes,buildMachineGraph}from'../playbooks/service-build/machine-nodes.js';const AGG_TTL_MS=0x1d4c0,AGG_CACHE_MAX=0x8,aggCache=new Map(),aggInflight=new Map(),CLASSIFIED_TYPES=new Set([ObjectType['Permission'],ObjectType['Service'],ObjectType['Machine'],ObjectType['Treasury'],ObjectType['Repository'],ObjectType['Reward'],ObjectType['Demand'],ObjectType['Arbitration'],ObjectType['Arb'],ObjectType['Contact'],ObjectType['Order'],ObjectType['Progress']]);function sortItems(a){return a['sort']((c,d)=>(d['time']??0x0)-(c['time']??0x0)||c['object']['localeCompare'](d['object']));}export async function buildWorkspaceLists(a){const b=a['network'],c=a['account']?.['trim']()['toLowerCase']()||undefined,d=a['no_cache']===!![],e=(b??'')+'|'+(c??'');if(!d){const g=aggCache['get'](e);if(g&&Date['now']()-g['at']<AGG_TTL_MS)return{...g['value'],'cached':!![]};const h=aggInflight['get'](e);if(h)return h;}const f=((async()=>{const i=c?[{'address':c,'name':undefined}]:await listLocalAccounts(),j={'action':'workspace_lists','network':b,'updated_at_ms':Date['now'](),'cached':![],'treasuries':[],'repositories':[],'contacts':[],'machines':[],'rewards':[],'others':[],'counts':{'treasuries':0x0,'repositories':0x0,'contacts':0x0,'machines':0x0,'rewards':0x0,'others':0x0},'note':i['length']===0x0?'No\x20local\x20accounts\x20found\x20—\x20create\x20or\x20import\x20an\x20account\x20first.':undefined};if(i['length']===0x0)return aggCache['set'](e,{'at':Date['now'](),'value':j}),j;const [k,l,n]=await Promise['all']([Promise['all'](i['map'](S=>fetchEntityPermission(S['address'],b,d))),Promise['all'](i['map'](S=>fetchEntityContact(S['address'],b,d))),Promise['all'](i['map'](S=>fetchObjectLinkerTx(S['address'],b,d)))]),p=[],q=new Set();for(const S of k){for(const T of S?.['items']??[]){!q['has'](T['permission'])&&(q['add'](T['permission']),p['push'](T['permission']));}}const s=await Promise['all'](p['map'](U=>fetchObjectLinkerCore(U,b,d))),u={'treasuries':new Map(),'repositories':new Map(),'contacts':new Map(),'machines':new Map(),'rewards':new Map()},v=(U,V,W)=>{const X=V['toLowerCase'](),Y=U['get'](X);if(Y===undefined||(W??0x0)>Y)U['set'](X,W??0x0);};s['forEach'](U=>{for(const V of U?.['items']??[]){const W=objectTypeFromAddress(V['who']);if(W===ObjectType['Treasury'])v(u['treasuries'],V['who'],V['time']);else{if(W===ObjectType['Repository'])v(u['repositories'],V['who'],V['time']);else{if(W===ObjectType['Machine'])v(u['machines'],V['who'],V['time']);else{if(W===ObjectType['Reward'])v(u['rewards'],V['who'],V['time']);else{if(W===ObjectType['Contact'])v(u['contacts'],V['who'],V['time']);}}}}}});for(const U of l){for(const V of U?.['items']??[])v(u['contacts'],V['contact'],V['time']);}const w=new Map();for(const W of n){for(const X of W?.['items']??[]){const Y=objectTypeFromAddress(X['who']);if(Y&&CLASSIFIED_TYPES['has'](Y))continue;v(w,X['who'],X['time']);}}const x=[...u['treasuries']['keys'](),...u['repositories']['keys'](),...u['contacts']['keys'](),...u['machines']['keys'](),...u['rewards']['keys'](),...w['keys']()],y=Z=>Z['startsWith']('0x00'),z=[],A=[];for(const Z of x){if(y(Z))A['push'](Z);else z['push'](Z);}const B=await resolveLocalNamesFor(x);if(a['light']){const a0=a2=>sortItems([...a2['entries']()]['map'](([a3,a4])=>({'object':a3,'object_type':objectTypeFromAddress(a3)??null,'name':B['byAddress']['get'](a3),'time':a4||undefined}))),a1={'treasuries':u['treasuries']['size'],'repositories':u['repositories']['size'],'contacts':u['contacts']['size'],'machines':u['machines']['size'],'rewards':u['rewards']['size'],'others':w['size']};return{'action':'workspace_lists','network':b,'updated_at_ms':Date['now'](),'cached':![],'treasuries':a0(u['treasuries']),'repositories':a0(u['repositories']),'contacts':a0(u['contacts']),'machines':a0(u['machines']),'rewards':a0(u['rewards']),'others':a0(w),'counts':a1,'note':i['length']===0x0?'No\x20local\x20accounts\x20found\x20—\x20create\x20or\x20import\x20an\x20account\x20first.':undefined};}const C=new Map(),D=new Map(),E=new Map(),F=new Map(),G=new Map(),H=new Map(),I=new Map();let J=![];try{const [a2,a3,a4,a5]=await Promise['all']([z['length']>0x0?batchQueryObjectsByIds(z,b,d)['then'](ab=>({'objects':ab})):Promise['resolve']({'objects':[]}),batchFetchEntityRegistrar(A,b,d),query_local_mark_list(undefined),listLocalAccounts()]),a6=new Set((a5??[])['map'](ab=>String(ab?.['address']??'')['toLowerCase']())),a7=new Set((a2?.['objects']??[])['map'](ab=>String(ab?.['object']??ab?.['address']??'')['toLowerCase']())['filter'](Boolean));for(const [ab,ac]of a3){a7['add'](ab);const ad=ac?.['description']??ac?.['info']?.['description'];if(typeof ad==='string'&&ad['trim']())C['set'](ab,ad['trim']());}if(a7['size']>0x0){const ae=af=>{for(const ag of[...af['keys']()])if(!a7['has'](ag))af['delete'](ag);};ae(u['treasuries']),ae(u['repositories']),ae(u['contacts']),ae(u['machines']),ae(u['rewards']),ae(w);}const a8=new Set([...u['treasuries']['keys'](),...u['repositories']['keys'](),...u['contacts']['keys'](),...u['machines']['keys'](),...u['rewards']['keys'](),...w['keys']()]);try{const af=await batchFetchEntityLinker([...a8],b,d);J=!![];for(const [ag,ah]of af){const ai=Array['isArray'](ah?.['votes'])?ah['votes']:[];I['set'](ag,{'like':ai['filter'](aj=>aj&&aj['like'])['length'],'dislike':ai['filter'](aj=>aj&&aj['dislike'])['length'],'favor':ai['filter'](aj=>aj&&aj['favor'])['length'],...ai['length']>0x0?{'votes':ai['map'](aj=>({'who':aj?.['who']??null,'like':!!aj?.['like'],'dislike':!!aj?.['dislike'],'favor':!!aj?.['favor']}))}:{}});}}catch{}for(const aj of a2?.['objects']??[]){const ak=String(aj?.['object']??aj?.['address']??'')['toLowerCase'](),al=aj?.['description']??aj?.['data']?.['description'];ak&&typeof al==='string'&&al['trim']()&&C['set'](ak,al['trim']());if(ak&&u['contacts']['has'](ak)){const am=Array['isArray'](aj?.['ims'])?aj['ims']:[],an=typeof aj?.['location']==='string'?aj['location']['trim']():'';E['set'](ak,{...an?{'location':an}:{},'members_total':am['length'],'members_mine':am['filter'](ao=>a6['has'](String(ao?.['at']??'')['toLowerCase']()))['length']});}if(ak&&u['rewards']['has'](ak)){const ao=/<([0-9a-zA-Z_:]+)>\s*$/['exec'](String(aj?.['type_raw']??'')),ap=Array['isArray'](aj?.['guards'])?aj['guards']:[],aq=Number(aj?.['record_count']);H['set'](ak,{...ao?{'token':ao[0x1]['split']('::')['pop']()}:{},'guards_total':ap['length'],...Number['isFinite'](aq)?{'claimers':aq}:{},...aj?.['balance']!=null?{'balance_total':String(aj['balance'])}:{},...aj?.['type_raw']!=null?{'type_raw':String(aj['type_raw'])}:{}});}if(ak&&u['treasuries']['has'](ak)){const ar=/<([0-9a-zA-Z_:]+)>\s*$/['exec'](String(aj?.['type_raw']??'')),as=at=>at===null||at===undefined||at===''?undefined:String(at);H['set'](ak,{...ar?{'token':ar[0x1]['split']('::')['pop']()}:{},...aj?.['balance']!=null?{'balance_total':String(aj['balance'])}:{},...aj?.['type_raw']!=null?{'type_raw':String(aj['type_raw'])}:{},...aj?.['inflow']!=null?{'inflow':as(aj['inflow'])}:{},...aj?.['outflow']!=null?{'outflow':as(aj['outflow'])}:{}});}if(ak&&u['repositories']['has'](ak)){const at=Number(aj?.['data_count']),au=Array['isArray'](aj?.['policies'])?aj['policies']:[],av=Array['isArray'](aj?.['rewards'])?aj['rewards']:[];F['set'](ak,{...Number['isFinite'](at)?{'records_total':at}:{},'policies_total':au['length'],'rewards_total':av['length']});}ak&&u['machines']['has'](ak)&&(aj?.['bPublished']!=null||aj?.['bPaused']!=null||aj?.['node_count']!=null)&&G['set'](ak,{'status':aj['bPublished']===!![]?aj['bPaused']===!![]?'PAUSED':'LIVE':'UNPUBLISHED',...Number['isFinite'](Number(aj?.['node_count']))?{'nodes':Number(aj['node_count'])}:{}});}for(const aw of a4??[]){const ax=String(aw?.['address']??'')['toLowerCase']();ax&&Array['isArray'](aw?.['tags'])&&aw['tags']['length']>0x0&&D['set'](ax,aw['tags']['map'](String));}await Promise['all']([...E['keys'](),...F['keys'](),...[...H['keys']()]['filter'](ay=>u['treasuries']['has'](ay)||u['rewards']['has'](ay))]['map'](async ay=>{try{const az=await query_affiliations({'address':ay,'no_cache':d,'network':b}),aA=new Set();let aB=0x0;for(const aD of az?.['entries']??[]){const aE=String(aD?.['who']??'')['toLowerCase']();if(!aE||aE==='0x0')continue;if(objectTypeFromAddress(aE)===undefined)continue;const aF=(aD?.['table']??'')+':'+aE;if(aA['has'](aF))continue;aA['add'](aF),aB++;}const aC=E['get'](ay)??F['get'](ay)??(u['treasuries']['has'](ay)||u['rewards']['has'](ay)?H['get'](ay):undefined);if(aC)aC['related_objects']=aB;}catch{}})),await Promise['all']([...u['machines']['keys']()]['map'](async ay=>{try{const [az,aA]=await Promise['all']([fetchMachineNodes(ay,b)['catch'](()=>undefined),fetchObjectLinkerTx(ay,b,d)]);if(!G['has'](ay))G['set'](ay,{});const aB=G['get'](ay);if(az){const aC=buildMachineGraph(az);!Number['isFinite'](Number(aB['nodes']))&&(aB['nodes']=aC['nodes']['filter'](aD=>!aD['is_start']&&aD['name']!=='')['length']),aB['edges']=aC['edges']['length'];}else Number(aB['nodes'])===0x0&&(aB['edges']=0x0);if(aA){const aD=new Set();let aE=0x0,aF=0x0;for(const aG of aA['items']??[]){const aH=String(aG?.['who']??'')['toLowerCase']();if(!aH||aH==='0x0'||aD['has'](aH))continue;aD['add'](aH);if(objectTypeFromAddress(aH)===undefined)continue;aE++;if(objectTypeFromAddress(aH)===ObjectType['Progress'])aF++;}aB['related_objects']=aE,aB['progresses']=aF;}}catch{}}));const a9=0x12c,aa=0xc8;await Promise['all']([...F['keys']()]['map'](async ay=>{try{let az=undefined,aA=0x0;for(;;){const aC=await query_table({'parent':ay,'cursor':az,'limit':aa,'no_cache':d,'network':b});aA+=Array['isArray'](aC?.['items'])?aC['items']['length']:0x0;if(!aC?.['hasNextPage']||!aC?.['nextCursor']||aA>=a9)break;az=String(aC['nextCursor']);}const aB=F['get'](ay);if(aB)aB['records_total']=Math['min'](aA,a9);}catch(aD){if(/query\.parent/i['test'](String(aD?.['message']??aD))){const aE=F['get'](ay);if(aE)aE['records_total']=0x0;}}}));}catch{}const K=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az)}))),L=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az),...E['get'](az)??{}}))),M=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az),...H['get'](az)??{}}))),N=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az),...H['get'](az)??{}}))),O=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az),...F['get'](az)??{}}))),P=ay=>sortItems([...ay['entries']()]['map'](([az,aA])=>({'object':az,'object_type':objectTypeFromAddress(az)??null,'name':B['byAddress']['get'](az),'time':aA||undefined,'description':C['get'](az),'tags':D['get'](az),...G['get'](az)??{}}))),Q={'action':'workspace_lists','network':b,'updated_at_ms':Date['now'](),'cached':![],'treasuries':N(u['treasuries']),'repositories':O(u['repositories']),'contacts':L(u['contacts']),'machines':P(u['machines']),'rewards':M(u['rewards']),'others':K(w),'counts':{'treasuries':u['treasuries']['size'],'repositories':u['repositories']['size'],'contacts':u['contacts']['size'],'machines':u['machines']['size'],'rewards':u['rewards']['size'],'others':w['size']}},R={'like':0x0,'dislike':0x0,'favor':0x0};for(const ay of[Q['treasuries'],Q['repositories'],Q['contacts'],Q['machines'],Q['rewards'],Q['others']]){for(const az of ay){const aA=I['get'](az['object']);if(aA)az['rep']=aA;else{if(J)az['rep']=R;}}}aggCache['set'](e,{'at':Date['now'](),'value':Q});if(aggCache['size']>AGG_CACHE_MAX){const aB=aggCache['keys']()['next']()['value'];if(aB!==undefined)aggCache['delete'](aB);}return Q;})());if(!d)aggInflight['set'](e,f);try{return await f;}finally{if(!d)aggInflight['delete'](e);}}