@wowok/agent-mcp 3.0.4 → 3.0.6

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 (305) hide show
  1. package/README.md +25 -20
  2. package/dist/customer/account-events.js +1 -1
  3. package/dist/evaluation/path-reasoning.d.ts +4 -2
  4. package/dist/evaluation/path-reasoning.js +1 -1
  5. package/dist/extensions/constraint-registry.d.ts +2 -2
  6. package/dist/extensions/constraint-registry.js +1 -1
  7. package/dist/extensions/custom-registry-file.d.ts +22 -0
  8. package/dist/extensions/custom-registry-file.js +1 -0
  9. package/dist/extensions/index.d.ts +2 -1
  10. package/dist/extensions/index.js +1 -1
  11. package/dist/extensions/industry-pack.d.ts +7 -0
  12. package/dist/extensions/industry-pack.js +1 -1
  13. package/dist/extensions/metric-registry.d.ts +2 -2
  14. package/dist/extensions/metric-registry.js +1 -1
  15. package/dist/extensions/modes.js +1 -1
  16. package/dist/extensions/registry.d.ts +2 -2
  17. package/dist/extensions/registry.js +1 -1
  18. package/dist/extensions/types.d.ts +4 -0
  19. package/dist/goal/GoalEngine.d.ts +13 -1
  20. package/dist/goal/GoalEngine.js +1 -1
  21. package/dist/goal/next-steps.d.ts +12 -0
  22. package/dist/goal/next-steps.js +1 -0
  23. package/dist/goal/pursue.d.ts +18 -0
  24. package/dist/goal/pursue.js +1 -0
  25. package/dist/goal/types.d.ts +72 -0
  26. package/dist/goal/types.js +1 -1
  27. package/dist/graph/onchain/analyze.d.ts +44 -0
  28. package/dist/graph/onchain/analyze.js +1 -0
  29. package/dist/graph/onchain/analyze.spec.d.ts +1 -0
  30. package/dist/graph/onchain/analyze.spec.js +1 -0
  31. package/dist/graph/onchain/anti-cheat.d.ts +39 -0
  32. package/dist/graph/onchain/anti-cheat.js +1 -0
  33. package/dist/graph/onchain/anti-cheat.spec.d.ts +1 -0
  34. package/dist/graph/onchain/anti-cheat.spec.js +1 -0
  35. package/dist/graph/onchain/dataplane.d.ts +44 -0
  36. package/dist/graph/onchain/dataplane.js +1 -0
  37. package/dist/graph/onchain/edge-schema.d.ts +60 -0
  38. package/dist/graph/onchain/edge-schema.js +1 -0
  39. package/dist/graph/onchain/expand.d.ts +4 -0
  40. package/dist/graph/onchain/expand.js +1 -0
  41. package/dist/graph/onchain/extract.d.ts +21 -0
  42. package/dist/graph/onchain/extract.js +1 -0
  43. package/dist/graph/onchain/index.d.ts +17 -0
  44. package/dist/graph/onchain/index.js +1 -0
  45. package/dist/graph/onchain/interest.d.ts +10 -0
  46. package/dist/graph/onchain/interest.js +1 -0
  47. package/dist/graph/onchain/interest.spec.d.ts +1 -0
  48. package/dist/graph/onchain/interest.spec.js +1 -0
  49. package/dist/graph/onchain/onchain.spec.d.ts +1 -0
  50. package/dist/graph/onchain/onchain.spec.js +1 -0
  51. package/dist/graph/onchain/order-status.d.ts +53 -0
  52. package/dist/graph/onchain/order-status.js +1 -0
  53. package/dist/graph/onchain/project-relationship.d.ts +3 -0
  54. package/dist/graph/onchain/project-relationship.js +1 -0
  55. package/dist/graph/onchain/sdk-batch.d.ts +123 -0
  56. package/dist/graph/onchain/sdk-batch.js +1 -0
  57. package/dist/graph/onchain/sdk-dataplane.d.ts +43 -0
  58. package/dist/graph/onchain/sdk-dataplane.js +1 -0
  59. package/dist/graph/onchain/strategy.d.ts +54 -0
  60. package/dist/graph/onchain/strategy.js +1 -0
  61. package/dist/graph/onchain/strategy.spec.d.ts +1 -0
  62. package/dist/graph/onchain/strategy.spec.js +1 -0
  63. package/dist/graph/onchain/types.d.ts +238 -0
  64. package/dist/graph/onchain/types.js +1 -0
  65. package/dist/graph/onchain/viewport.d.ts +5 -0
  66. package/dist/graph/onchain/viewport.js +1 -0
  67. package/dist/harness/recover.js +1 -1
  68. package/dist/index.js +1 -1
  69. package/dist/intent/enrich.js +1 -1
  70. package/dist/keeper/detectors.d.ts +1 -1
  71. package/dist/keeper/detectors.js +1 -1
  72. package/dist/knowledge/account-marks.js +1 -1
  73. package/dist/knowledge/allocation-risk.js +1 -1
  74. package/dist/knowledge/allocation-templates.js +1 -1
  75. package/dist/knowledge/anti-cheat.d.ts +2 -37
  76. package/dist/knowledge/anti-cheat.js +1 -1
  77. package/dist/knowledge/contract-invariants.js +1 -1
  78. package/dist/knowledge/getting-started.d.ts +37 -0
  79. package/dist/knowledge/getting-started.js +1 -0
  80. package/dist/knowledge/goal-completion.d.ts +12 -0
  81. package/dist/knowledge/goal-completion.js +1 -1
  82. package/dist/knowledge/guard-render.d.ts +1 -0
  83. package/dist/knowledge/guard-render.js +1 -1
  84. package/dist/knowledge/guard-risk.js +1 -1
  85. package/dist/knowledge/guard-submission-brief.d.ts +83 -0
  86. package/dist/knowledge/guard-submission-brief.js +1 -0
  87. package/dist/knowledge/guard-submission-prompt.d.ts +13 -0
  88. package/dist/knowledge/guard-submission-prompt.js +1 -1
  89. package/dist/knowledge/index.d.ts +10 -4
  90. package/dist/knowledge/index.js +1 -1
  91. package/dist/knowledge/industry-registry.js +1 -1
  92. package/dist/knowledge/industry-strategy.d.ts +91 -0
  93. package/dist/knowledge/industry-strategy.js +1 -0
  94. package/dist/knowledge/jsonrpc-enum.js +1 -1
  95. package/dist/knowledge/market-metrics.d.ts +14 -3
  96. package/dist/knowledge/market-metrics.js +1 -1
  97. package/dist/knowledge/migration-preflight.js +1 -1
  98. package/dist/knowledge/operation-dictionary.d.ts +1 -1
  99. package/dist/knowledge/payment-tracker.d.ts +63 -0
  100. package/dist/knowledge/payment-tracker.js +1 -0
  101. package/dist/knowledge/recipient-constraint.d.ts +160 -0
  102. package/dist/knowledge/recipient-constraint.js +1 -0
  103. package/dist/knowledge/safety-rules.d.ts +1 -1
  104. package/dist/knowledge/safety-rules.js +1 -1
  105. package/dist/knowledge/scenario-topology.d.ts +6 -1
  106. package/dist/knowledge/scenario-topology.js +1 -1
  107. package/dist/knowledge/service-risk-node.d.ts +3 -0
  108. package/dist/knowledge/service-risk-node.js +1 -0
  109. package/dist/knowledge/service-risk.d.ts +2 -0
  110. package/dist/knowledge/service-risk.js +1 -1
  111. package/dist/knowledge/service-templates.d.ts +2 -0
  112. package/dist/knowledge/service-templates.js +1 -1
  113. package/dist/knowledge/strategy-manuals.d.ts +17 -0
  114. package/dist/knowledge/strategy-manuals.js +1 -0
  115. package/dist/knowledge/supply-chain.d.ts +3 -1
  116. package/dist/knowledge/supply-chain.js +1 -1
  117. package/dist/knowledge/template-registry.js +1 -1
  118. package/dist/knowledge/tools-reference.js +1 -1
  119. package/dist/knowledge/workflow-guidance.d.ts +3 -118
  120. package/dist/knowledge/workflow-guidance.js +1 -1
  121. package/dist/knowledge/workspace-lists.d.ts +4 -0
  122. package/dist/knowledge/workspace-lists.js +1 -1
  123. package/dist/monitor/MonitorLoop.js +1 -1
  124. package/dist/monitor/ScopeResolver.js +1 -1
  125. package/dist/participation/arbitrator-interest.d.ts +2 -0
  126. package/dist/participation/arbitrator-interest.js +1 -1
  127. package/dist/participation/collaborator-interest.d.ts +2 -0
  128. package/dist/participation/collaborator-interest.js +1 -1
  129. package/dist/participation/customer-interest.d.ts +2 -0
  130. package/dist/participation/customer-interest.js +1 -1
  131. package/dist/participation/merchant-interest.d.ts +2 -0
  132. package/dist/participation/merchant-interest.js +1 -1
  133. package/dist/participation/radar-core.d.ts +15 -15
  134. package/dist/participation/radar-core.js +1 -1
  135. package/dist/participation/supplier-interest.d.ts +2 -0
  136. package/dist/participation/supplier-interest.js +1 -1
  137. package/dist/persona/analyzer.d.ts +2 -1
  138. package/dist/persona/bridge.d.ts +5 -1
  139. package/dist/persona/bridge.js +1 -1
  140. package/dist/persona/defaults.js +1 -1
  141. package/dist/persona/distill-goal.d.ts +7 -1
  142. package/dist/persona/distill-goal.js +1 -1
  143. package/dist/persona/index.d.ts +13 -3
  144. package/dist/persona/index.js +1 -1
  145. package/dist/persona/model.d.ts +12 -2
  146. package/dist/persona/model.js +1 -1
  147. package/dist/persona/overrides.d.ts +1 -0
  148. package/dist/persona/overrides.js +1 -1
  149. package/dist/persona/topology-focus.d.ts +29 -0
  150. package/dist/persona/topology-focus.js +1 -0
  151. package/dist/persona/types.d.ts +81 -0
  152. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  153. package/dist/playbooks/service-build/context-assembly.js +1 -1
  154. package/dist/playbooks/service-build/machine-nodes.js +1 -1
  155. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  156. package/dist/playbooks/service-build/merchant-guide.d.ts +7 -0
  157. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  158. package/dist/playbooks/service-build/object-panorama.js +1 -1
  159. package/dist/playbooks/service-build/participation-radar.js +1 -1
  160. package/dist/playbooks/service-build/pipeline-actions.d.ts +2 -2
  161. package/dist/playbooks/service-build/pipeline-actions.js +1 -1
  162. package/dist/playbooks/service-build/relationship-profile.d.ts +1 -0
  163. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  164. package/dist/playbooks/service-build/risk-aggregator.js +1 -1
  165. package/dist/playbooks/service-build/service-panorama.d.ts +4 -0
  166. package/dist/playbooks/service-build/service-panorama.js +1 -1
  167. package/dist/playbooks/service-build/topology-query.d.ts +14 -0
  168. package/dist/playbooks/service-build/topology-query.js +1 -0
  169. package/dist/relationship/derivation.js +1 -1
  170. package/dist/role/index.d.ts +1 -0
  171. package/dist/role/index.js +1 -1
  172. package/dist/role/profiles.d.ts +26 -0
  173. package/dist/role/profiles.js +1 -0
  174. package/dist/safety/confirm-gate.d.ts +4 -1
  175. package/dist/safety/confirm-gate.js +1 -1
  176. package/dist/schema/call/allocation.d.ts +6 -6
  177. package/dist/schema/call/allocation.js +1 -1
  178. package/dist/schema/call/base.js +1 -1
  179. package/dist/schema/call/bridge.d.ts +1 -1
  180. package/dist/schema/call/guard.d.ts +20 -20
  181. package/dist/schema/call/repository.js +1 -1
  182. package/dist/schema/call/semantic.js +1 -1
  183. package/dist/schema/call/service.d.ts +4 -4
  184. package/dist/schema/call/service.js +1 -1
  185. package/dist/schema/common/index.js +1 -1
  186. package/dist/schema/employee/index.d.ts +7 -7
  187. package/dist/schema/evaluation/index.d.ts +26 -13
  188. package/dist/schema/evaluation/index.js +1 -1
  189. package/dist/schema/goal/index.d.ts +53 -17
  190. package/dist/schema/goal/index.js +1 -1
  191. package/dist/schema/goal/planning.d.ts +7 -7
  192. package/dist/schema/index.d.ts +1 -0
  193. package/dist/schema/index.js +1 -1
  194. package/dist/schema/industry-pack/index.d.ts +13 -6
  195. package/dist/schema/industry-pack/index.js +1 -1
  196. package/dist/schema/industry-pack/modes.d.ts +6 -6
  197. package/dist/schema/intent-radar/index.d.ts +16 -16
  198. package/dist/schema/local/index.d.ts +8 -4
  199. package/dist/schema/local/index.js +1 -1
  200. package/dist/schema/messenger/index.d.ts +428 -72
  201. package/dist/schema/messenger/index.js +1 -1
  202. package/dist/schema/operations.d.ts +177 -34
  203. package/dist/schema/operations.js +1 -1
  204. package/dist/schema/persona/index.d.ts +15744 -1
  205. package/dist/schema/persona/index.js +1 -1
  206. package/dist/schema/query/bi.d.ts +891 -24
  207. package/dist/schema/query/bi.js +1 -1
  208. package/dist/schema/query/index.d.ts +168 -43
  209. package/dist/schema/query/index.js +1 -1
  210. package/dist/schema/schema-query/index.d.ts +16 -0
  211. package/dist/schema/schema-query/index.js +1 -1
  212. package/dist/schema/schema-version.js +1 -1
  213. package/dist/schema/strategy-review/index.d.ts +137 -0
  214. package/dist/schema/strategy-review/index.js +1 -0
  215. package/dist/schema/trust/index.d.ts +6 -6
  216. package/dist/schema/workflow/index.d.ts +2 -2
  217. package/dist/schema-query-impl/index.js +1 -1
  218. package/dist/schemas/account_operation.output.json +8 -4
  219. package/dist/schemas/account_operation.schema.json +6 -2
  220. package/dist/schemas/bridge_operation.schema.json +10 -10
  221. package/dist/schemas/evaluation_operation.output.json +24 -0
  222. package/dist/schemas/evaluation_operation.schema.json +7 -7
  223. package/dist/schemas/goal_operation.schema.json +124 -0
  224. package/dist/schemas/guard2file.schema.json +2 -2
  225. package/dist/schemas/index.json +7 -1
  226. package/dist/schemas/industry_pack_operation.output.json +39 -0
  227. package/dist/schemas/local_mark_operation.schema.json +2 -2
  228. package/dist/schemas/machineNode2file.schema.json +2 -2
  229. package/dist/schemas/messenger_operation.output.json +934 -236
  230. package/dist/schemas/messenger_operation.schema.json +93 -242
  231. package/dist/schemas/onchain_events.schema.json +1 -1
  232. package/dist/schemas/onchain_operations.schema.json +54 -54
  233. package/dist/schemas/onchain_operations_allocation.schema.json +5 -5
  234. package/dist/schemas/onchain_operations_arbitration.schema.json +2 -2
  235. package/dist/schemas/onchain_operations_contact.schema.json +2 -2
  236. package/dist/schemas/onchain_operations_demand.schema.json +2 -2
  237. package/dist/schemas/onchain_operations_gen_passport.schema.json +2 -2
  238. package/dist/schemas/onchain_operations_gen_proof.schema.json +2 -2
  239. package/dist/schemas/onchain_operations_guard.schema.json +2 -2
  240. package/dist/schemas/onchain_operations_machine.schema.json +8 -8
  241. package/dist/schemas/onchain_operations_order.schema.json +2 -2
  242. package/dist/schemas/onchain_operations_payment.schema.json +3 -3
  243. package/dist/schemas/onchain_operations_permission.schema.json +2 -2
  244. package/dist/schemas/onchain_operations_personal.schema.json +2 -2
  245. package/dist/schemas/onchain_operations_progress.schema.json +2 -2
  246. package/dist/schemas/onchain_operations_proof.schema.json +2 -2
  247. package/dist/schemas/onchain_operations_repository.schema.json +5 -5
  248. package/dist/schemas/onchain_operations_reward.schema.json +2 -2
  249. package/dist/schemas/onchain_operations_service.schema.json +5 -5
  250. package/dist/schemas/onchain_operations_treasury.schema.json +4 -4
  251. package/dist/schemas/onchain_table_data.output.json +197 -13
  252. package/dist/schemas/onchain_table_data.schema.json +43 -43
  253. package/dist/schemas/persona_operation.output.json +37778 -262
  254. package/dist/schemas/persona_operation.schema.json +5960 -1
  255. package/dist/schemas/query_toolkit.output.json +1615 -10
  256. package/dist/schemas/query_toolkit.schema.json +232 -42
  257. package/dist/schemas/schema_query.schema.json +25 -1
  258. package/dist/schemas/strategy_review_operation.output.json +532 -0
  259. package/dist/schemas/strategy_review_operation.schema.json +66 -0
  260. package/dist/schemas/wowok_buildin_info.output.json +188 -6
  261. package/dist/schemas/wowok_buildin_info.schema.json +14 -0
  262. package/dist/strategy/collectors.d.ts +66 -0
  263. package/dist/strategy/collectors.js +1 -0
  264. package/dist/strategy/collectors.spec.d.ts +1 -0
  265. package/dist/strategy/collectors.spec.js +1 -0
  266. package/dist/strategy/index.d.ts +5 -0
  267. package/dist/strategy/index.js +1 -0
  268. package/dist/strategy/metrics.d.ts +20 -0
  269. package/dist/strategy/metrics.js +1 -0
  270. package/dist/strategy/review.d.ts +48 -0
  271. package/dist/strategy/review.js +1 -0
  272. package/dist/strategy/scorecard.d.ts +32 -0
  273. package/dist/strategy/scorecard.js +1 -0
  274. package/dist/strategy/store.d.ts +26 -0
  275. package/dist/strategy/store.js +1 -0
  276. package/dist/tools/handlers/config.js +1 -1
  277. package/dist/tools/handlers/evaluation.js +1 -1
  278. package/dist/tools/handlers/goal.js +1 -1
  279. package/dist/tools/handlers/industry-pack.js +1 -1
  280. package/dist/tools/handlers/local.js +1 -1
  281. package/dist/tools/handlers/messenger.js +1 -1
  282. package/dist/tools/handlers/onchain.js +1 -1
  283. package/dist/tools/handlers/permission.js +1 -1
  284. package/dist/tools/handlers/persona.js +1 -1
  285. package/dist/tools/handlers/query.d.ts +6 -0
  286. package/dist/tools/handlers/query.js +1 -1
  287. package/dist/tools/handlers/schema-query.js +1 -1
  288. package/dist/tools/handlers/strategy-review.d.ts +2 -0
  289. package/dist/tools/handlers/strategy-review.js +1 -0
  290. package/dist/tools/handlers/watch.js +1 -1
  291. package/dist/tools/handlers/workflow.js +1 -1
  292. package/dist/tools/index.d.ts +3 -0
  293. package/dist/tools/index.js +1 -1
  294. package/dist/tools/registry/agent.js +1 -1
  295. package/dist/tools/registry/business.js +1 -1
  296. package/dist/tools/registry/local.js +1 -1
  297. package/dist/tools/registry/messenger.js +1 -1
  298. package/dist/tools/registry/onchain.js +1 -1
  299. package/dist/tools/registry/query.js +1 -1
  300. package/dist/tools/rules-hook.d.ts +2 -0
  301. package/dist/tools/rules-hook.js +1 -1
  302. package/dist/tools/shared.d.ts +2 -1
  303. package/dist/tools/shared.js +1 -1
  304. package/dist/tools/wrap.js +1 -1
  305. package/package.json +2 -2
@@ -1 +1 @@
1
- import{strictParse,WatchQueryOperationsSchema,OnchainTableDataSchema,OnchainEventsInputSchema,ProtocolInfoQuerySchema}from'../../schema/index.js';import{checkUpgrade}from'../upgrade-check.js';import{getUniversalTemplate}from'../../knowledge/universal-template.js';import{query_local_mark_list,query_account_list,query_local_info_list,query_local_token_list,query_account,GetLocalNamesByAddresses,query_personal,query_table,query_tableItem,queryTableItem_RepositoryData,queryTableItem_PermissionPerm,queryTableItem_RewardRecord,queryTableItem_DemandPresenter,queryTableItem_TreasuryHistory,queryTableItem_MachineNode,queryTableItem_ProgressHistory,queryTableItem_AddressMark,queryTableItem_EntityRegistrar,queryTableItem_EntityLinker,queryTableItem_EntityContact,queryTableItem_ObjectLinkerCore,queryTableItem_ObjectLinkerTx,queryTableItem_EntityOrder,queryOrdersByUser,query_affiliations,query_address_profile,query_address_profiles,objectTypeFromAddress,ObjectType,query_received,queryProtocolInfo,query_events,query_transaction,query_object_history,query_address_activity,generateNodeComments,query_object_last_updated}from'@wowok/wowok';import{computeServiceTrustSummary}from'./trust.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{SCENARIO_CHAINS,SCENARIO_BRIDGE_REGISTRY,SCENARIO_TOPOLOGY_VERSION}from'../../knowledge/scenario-topology.js';import{assembleContext}from'../../playbooks/service-build/context-assembly.js';import{generateBusinessReport}from'../../playbooks/service-build/reverse-mapping.js';import{handleServicePanorama}from'../../playbooks/service-build/service-panorama.js';import{handleMachinePanorama}from'../../playbooks/service-build/machine-panorama.js';import{handleObjectPanorama}from'../../playbooks/service-build/object-panorama.js';import{handleParticipationRadar}from'../../playbooks/service-build/participation-radar.js';import{handleRelationshipProfile}from'../../playbooks/service-build/relationship-profile.js';import{handleReviewPack}from'../../review/index.js';import{buildWorkspaceLists}from'../../knowledge/workspace-lists.js';import{buildAccountMarks}from'../../knowledge/account-marks.js';import{migrationPreflight}from'../../knowledge/migration-preflight.js';import{buildDataSemantic}from'../../schema/call/semantic.js';import{enrichWorkflowGuidance,batchQueryObjectsByIds}from'../../knowledge/workflow-guidance.js';import{formatChainValue,annotateObjectMonetaryFields,annotateTableItemMonetaryFields,annotateEventsMonetaryFields,annotateBalanceChanges,resolveParentObjectTokenType,convertTokenValue}from'../../knowledge/fund-layer.js';import{normalizeAccountOrMark}from'./messenger.js';function ownerAddrOf(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;}const serviceCoinTypeCache=new Map();async function coinTypesOfServices(a,b){const c=new Map();if(!a||a['length']===0x0)return c;const d=[];for(const e of a){const f=(b??'')+'|'+e['toLowerCase'](),h=serviceCoinTypeCache['get'](f);if(h!==undefined)c['set'](e,h);else d['push'](e);}if(d['length']===0x0)return c;try{const i=await batchQueryObjectsByIds(d,b);for(const j of i){if(!j?.['object'])continue;const k=j?.['type_raw']??j?.['type']??'',l=k['match'](/<(.+)>$/);if(!l)continue;serviceCoinTypeCache['set']((b??'')+'|'+String(j['object'])['toLowerCase'](),l[0x1]),c['set'](j['object'],l[0x1]);}}catch{}return c;}async function mergeServiceAnalysis(a,b){const c=a?.['object'],d=a?.['kind']==='Service'||c&&(c['type']==='Service'||(c['type_raw']??'')['includes']('::service::'));if(!d||!a)return;let e=null;try{const t=await query_object_last_updated({'object':a['address'],'network':b['network']});t?.['timestamp_ms']&&(e={'timestamp_ms':t['timestamp_ms'],'digest':t['digest'],'sender':t['sender']});}catch{}let f=null;try{f=await computeServiceTrustSummary({'service':a['address'],'depth':'evaluate','network':b['network'],'no_cache':b['no_cache']});}catch{}const g=a?.['reverse_core'],h=a?.['reverse_tx'],i=Array['isArray'](g?.['items'])?g['items']['length']:0x0,j=Array['isArray'](h?.['items'])?h['items']['length']:0x0,k=(j>0x0?h['items']:[])['filter'](u=>objectTypeFromAddress(u?.['who'])===ObjectType['Order']),l=k['length'],m=![],n=Array['isArray'](a?.['reputation']?.['votes'])?a['reputation']['votes']:[],o=c?.['type_raw']??c?.['type']??'',p=o['match'](/<(.+)>$/),q=p?p[0x1]:null,r=q?(q['split']('::')['pop']()??q)['toUpperCase']():null,s=Array['isArray'](c?.['sales'])?c['sales']:[];a['service_analysis']={'description':c?.['description']??null,'sales_count':s['length'],'live_sales_count':s['filter'](u=>u&&!u['suspension'])['length'],'paused_sales_count':s['filter'](u=>u&&u['suspension'])['length'],'orders_count':l,'orders_count_truncated':m,'like_count':n['filter'](u=>u&&u['like'])['length'],'dislike_count':n['filter'](u=>u&&u['dislike'])['length'],'favor_count':n['filter'](u=>u&&u['favor'])['length'],'votes':n['map'](u=>({'who':u?.['who']??null,'like':!!u?.['like'],'dislike':!!u?.['dislike'],'favor':!!u?.['favor'],'time':u?.['time']??null})),'coin_type':q,'token_symbol':r,'location':c?.['location']??null,'bPublished':c?.['bPublished']??null,'bPaused':c?.['bPaused']??null,'related_core_count':i,'related_tx_count':j,'related_object_count':i+j,'onchain_last_updated':e,'trust':f};}async function annotateAccountBalance(a,b){if(!a||typeof a!=='object')return;const e={},f=(j,k)=>{if(j===null||j===undefined)return undefined;if(typeof j!=='string'&&typeof j!=='number'&&typeof j!=='bigint')return undefined;if(typeof k!=='string'||!k)return undefined;return formatChainValue(j,k,b);},g=a['balance'];if(g&&typeof g==='object'){const j=g['coinType'],k=await f(g['totalBalance'],j);if(k)e['balance.totalBalance']=k;if(g['lockedBalance']!==undefined){const l=await f(g['lockedBalance'],j);if(l)e['balance.lockedBalance']=l;}}const h=a['coin']?.['data'];if(Array['isArray'](h))for(let m=0x0;m<h['length'];m++){const n=h[m],o=await f(n?.['balance'],n?.['coinType']);if(o)e['coin.data['+m+'].balance']=o;}Object['keys'](e)['length']>0x0&&(a['_money_display']=e);}export async function handleWatchQueryOperations(a){const c=strictParse(WatchQueryOperationsSchema,a,'watch_and_query\x20input');let d;switch(c['query_type']){case'local_mark_list':{const e=await query_local_mark_list(c['filter']||{});d={'query_type':'local_mark_list','result':e};break;}case'account_list':{const f=await query_account_list(c['filter']);d={'query_type':'account_list','result':f};break;}case'local_info_list':{const g=await query_local_info_list(c['filter']);d={'query_type':'local_info_list','result':g};break;}case'token_list':{const h=await query_local_token_list(c['filter']||{});d={'query_type':'token_list','result':h};break;}case'account_balance':{const j=await query_account({'name_or_address':c['name_or_address'],'token_type':c['token_type'],'balance':c['balance'],'coin':c['coin'],'network':c['network']});await annotateAccountBalance(j,c['network']),d={'query_type':'account_balance','result':j};break;}case'local_names':{const k=await GetLocalNamesByAddresses(c['addresses']);d={'query_type':'local_names','result':k};break;}case'onchain_personal_profile':{const l=await query_personal({'account':c['account'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_personal_profile','result':l};break;}case'onchain_objects':{const m={'objects':await batchQueryObjectsByIds(c['objects'],c['network'],c['no_cache'])};if(m&&m['objects']&&Array['isArray'](m['objects'])){m['objects']=m['objects']['map'](n=>{if(n&&n['data']&&n['data']['type']==='Guard'&&n['data']['root'])try{const o=generateNodeComments(n['data']['root']);return{...n,'_guard_node_comments':o};}catch(p){return n;}return n;}),m['objects']=m['objects']['map'](n=>{if(n&&n['data']&&n['data']['type']==='Progress'&&n['data']['current']===''){const o=n['data']['machine'],p=n['data']['task'];return{...n,'_diagnostic':{'issue':'Progress.current\x20is\x20empty\x20—\x20order\x20workflow\x20is\x20stuck\x20at\x20the\x20initial\x20state','cause':'The\x20Machine\x27s\x20entry\x20node\x20(prev_node=\x27\x27)\x20likely\x20has\x20no\x20forwards\x20defined.\x20'+'When\x20Progress\x20starts,\x20it\x20looks\x20up\x20the\x20entry\x20node\x27s\x20forwards\x20to\x20determine\x20'+'the\x20next\x20node.\x20Without\x20forwards,\x20Progress\x20cannot\x20advance\x20and\x20the\x20order\x20'+'is\x20permanently\x20stuck.','machine_object_id':o??null,'bound_order_id':p??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](o)+']).','2.\x20Inspect\x20node.pairs\x20for\x20the\x20entry\x20node\x20(prev_node=\x27\x27).','3.\x20If\x20forwards\x20is\x20empty:\x20this\x20is\x20the\x20root\x20cause.\x20The\x20Machine\x20must\x20be\x20republished\x20with\x20at\x20least\x20one\x20forward\x20on\x20the\x20entry\x20node.','4.\x20To\x20republish:\x20clone\x20the\x20Machine\x20nodes,\x20add\x20a\x20forward\x20to\x20the\x20entry\x20node\x27s\x20pairs,\x20then\x20create\x20a\x20new\x20Machine\x20(Machine\x20nodes\x20are\x20immutable\x20after\x20publish\x20—\x20see\x20P0-2\x20schema\x20validation\x20that\x20now\x20blocks\x20this).','5.\x20Rebind\x20the\x20new\x20Machine\x20to\x20the\x20Service\x20(service.machine\x20field)\x20and\x20create\x20a\x20new\x20Order\x20to\x20test.'],'reference':'P0-2\x20schema\x20refinement\x20in\x20MachineNodePairSchema\x20ensures\x20new\x20Machines\x20cannot\x20be\x20published\x20with\x20empty\x20entry-node\x20forwards.\x20This\x20diagnostic\x20catches\x20legacy\x20Machines\x20that\x20predate\x20the\x20fix.'}};}return n;});for(const n of m['objects']){const o=n?.['data']??n;if((n?.['type']??o?.['type'])!=='Progress')continue;const p=n?.['object']??o?.['object'];if(!p)continue;try{const q=await enrichWorkflowGuidance({'progressRef':p,'network':c['network'],'noCache':c['no_cache']});if(q?.['guidance']){n['_workflow_guidance']=q['guidance'];if(q['text'])n['_workflow_guidance_text']=q['text'];}}catch{}}for(const r of m['objects']){try{await annotateObjectMonetaryFields(r,c['network']);}catch{}}}d={'query_type':'onchain_objects','result':m};break;}case'onchain_received':{const s=await query_received({'name_or_address':normalizeAccountOrMark(c['name_or_address']),'type':c['type'],'cursor':c['cursor'],'limit':c['limit'],'no_cache':c['no_cache'],'network':c['network']}),t=s;if(t&&typeof t==='object'&&typeof t['balance']==='bigint'){const u=t['token_type'];t['balance']=t['balance']['toString']();if(Array['isArray'](t['received']))for(const v of t['received']){v&&typeof v['balance']==='bigint'&&(v['balance']=v['balance']['toString']());}if(u)try{const w={'balance':await formatChainValue(t['balance'],u,c['network'])};if(Array['isArray'](t['received']))for(let x=0x0;x<t['received']['length'];x++){const y=t['received'][x]?.['balance'];y!==undefined&&y!==null&&(w['received['+x+'].balance']=await formatChainValue(y,u,c['network']));}t['_money_display']=w;}catch{}}d={'query_type':'onchain_received','result':t};break;}case'onchain_transaction':{const z=await query_transaction({'digest':c['digest'],'no_cache':c['no_cache'],'network':c['network']});try{await annotateBalanceChanges(z?.['balance_changes'],c['network']);}catch{}d={'query_type':'onchain_transaction','result':z};break;}case'onchain_object_history':{const A=await query_object_history({'object':c['object'],'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_object_history','result':A};break;}case'onchain_last_updated':{const B=c['objects']??[],C=await Promise['allSettled'](B['map'](E=>query_object_last_updated({'object':E,'network':c['network']}))),D=B['map']((E,F)=>{const G=C[F],H=G['status']==='fulfilled'?G['value']:null;return{'object':E,'timestamp_ms':H?.['timestamp_ms']?String(H['timestamp_ms']):null,'digest':H?.['digest']??null,'sender':H?.['sender']??null};});d={'query_type':'onchain_last_updated','result':{'items':D}};break;}case'onchain_address_activity':{const E=typeof c['name_or_address']==='string'?c['name_or_address']:c['name_or_address']['name_or_address'],F=await query_address_activity({'name_or_address':E,'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_address_activity','result':F};break;}case'token_value_convert':{const G=c['raw']!==undefined,H=c['unit']!==undefined;if(G===H)throw new Error('token_value_convert:\x20provide\x20EXACTLY\x20ONE\x20of\x20\x27raw\x27\x20(u64\x20smallest\x20units\x20→\x20unit\x20value)\x20'+('or\x20\x27unit\x27\x20(unit\x20value\x20→\x20u64\x20raw).\x20Received\x20raw='+JSON['stringify'](c['raw'])+',\x20')+('unit='+JSON['stringify'](c['unit'])+'.'));const I=await convertTokenValue(c['token_type'],G?{'raw':c['raw']}:{'unit':c['unit']},c['network']);d={'query_type':'token_value_convert','result':I};break;}case'address_profile':{const J=await query_address_profile({'address':c['address'],'no_cache':c['no_cache'],'network':c['network']});await mergeServiceAnalysis(J,{'no_cache':c['no_cache'],'network':c['network']}),d={'query_type':'address_profile','result':J};break;}case'address_profiles':{const K=await query_address_profiles({'addresses':c['addresses'],'no_cache':c['no_cache'],'network':c['network']});await Promise['all'](K['map'](L=>mergeServiceAnalysis(L,{'no_cache':c['no_cache'],'network':c['network']}))),d={'query_type':'address_profiles','result':K};break;}case'service_supply_chain':{const L=await resolveSupplyChainGraph(typeof c['address']==='string'?c['address']:c['address']?.['name_or_address']??String(c['address']),c['network']);d={'query_type':'service_supply_chain','result':L};break;}case'assemble_context':{d={'query_type':'assemble_context','result':await assembleContext(c)};break;}case'reverse_map':{if(!c['context_objects']||c['context_objects']['length']===0x0)throw new Error('reverse_map\x20requires\x20\x27context_objects\x27\x20—\x20an\x20array\x20of\x20object\x20IDs\x20or\x20LocalMark\x20names\x20(include\x20the\x20Service;\x20add\x20Machine/Allocation\x20for\x20refund-path\x20detection).');const M=c['context_network']??'testnet',N=await batchQueryObjectsByIds(c['context_objects'],M,![]);d={'query_type':'reverse_map','result':{'action':'reverse_map','objects_queried':N['length'],'report':generateBusinessReport({'objects':N,'order_amount':c['reverse_order_amount']})}};break;}case'service_panorama':d={'query_type':'service_panorama','result':await handleServicePanorama(c)};break;case'machine_panorama':d={'query_type':'machine_panorama','result':await handleMachinePanorama(c)};break;case'object_panorama':d={'query_type':'object_panorama','result':await handleObjectPanorama(c)};break;case'review_pack':d={'query_type':'review_pack','result':await handleReviewPack(c)};break;case'participation_radar':d={'query_type':'participation_radar','result':await handleParticipationRadar(c)};break;case'relationship_profile':d={'query_type':'relationship_profile','result':await handleRelationshipProfile(c)};break;case'workspace_lists':d={'query_type':'workspace_lists','result':await buildWorkspaceLists({'network':c['context_network'],'no_cache':c['no_cache'],'account':c['account'],'light':c['light']})};break;case'marks_of_account':d={'query_type':'marks_of_account','result':await buildAccountMarks({'network':c['context_network'],'no_cache':c['no_cache'],'account':c['account'],'light':c['light']})};break;case'migration_preflight':d={'query_type':'migration_preflight','result':await migrationPreflight({'account':c['account'],'source_network':c['source_network'],'target_network':c['target_network'],'no_cache':c['no_cache']})};break;case'scenario_topology':{const O=c['chain_id'];d={'query_type':'scenario_topology','result':{'version':SCENARIO_TOPOLOGY_VERSION,'chains':O?SCENARIO_CHAINS['filter'](P=>P['id']===O):SCENARIO_CHAINS,'bridges':SCENARIO_BRIDGE_REGISTRY}};break;}default:throw new Error('Unknown\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22local_mark_list\x22,\x20\x22account_list\x22,\x20\x22local_info_list\x22,\x20\x22token_list\x22,\x20\x22account_balance\x22,\x20\x22local_names\x22,\x20\x22onchain_personal_profile\x22,\x20\x22onchain_objects\x22,\x20\x22onchain_received\x22,\x20\x22onchain_transaction\x22,\x20\x22onchain_object_history\x22,\x20\x22onchain_last_updated\x22,\x20\x22onchain_address_activity\x22,\x20\x22token_value_convert\x22,\x20\x22address_profile\x22,\x20\x22address_profiles\x22,\x20\x22service_supply_chain\x22,\x20\x22workspace_lists\x22,\x20\x22marks_of_account\x22,\x20\x22migration_preflight\x22.\x20For\x20table\x20queries,\x20use\x20the\x20\x22onchain_table_data\x22\x20tool.');}return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d,'semantic':buildDataSemantic(d,{'operation_type':'query_toolkit','data':c})}};}export async function handleOnchainTableData(a){const b=strictParse(OnchainTableDataSchema,a,'onchain_table_data\x20input');let c;switch(b['query_type']){case'onchain_table':{const d=await query_table({'parent':b['parent'],'cursor':b['cursor'],'limit':b['limit'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table','result':d};break;}case'onchain_table_item_repository_data':{const f=await queryTableItem_RepositoryData({'parent':b['parent'],'name':b['name'],'entity':b['entity'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_repository_data','result':f};break;}case'onchain_table_item_permission_perm':{const g=await queryTableItem_PermissionPerm({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_permission_perm','result':g};break;}case'onchain_table_item_reward_record':{const h=await queryTableItem_RewardRecord({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(h)try{const j=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(h,j,b['network']);}catch{}c={'query_type':'onchain_table_item_reward_record','result':h};break;}case'onchain_table_item_demand_presenter':{const k=await queryTableItem_DemandPresenter({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_demand_presenter','result':k};break;}case'onchain_table_item_treasury_history':{const l=await queryTableItem_TreasuryHistory({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(l)try{const m=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(l,m,b['network']);}catch{}c={'query_type':'onchain_table_item_treasury_history','result':l};break;}case'onchain_table_item_machine_node':{const n=await queryTableItem_MachineNode({'parent':b['parent'],'key':b['key'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_machine_node','result':n};break;}case'onchain_table_item_progress_history':{const p=await queryTableItem_ProgressHistory({'parent':b['parent'],'u64':b['u64'],'no_cache':![],'network':b['network']});c={'query_type':'onchain_table_item_progress_history','result':p};break;}case'onchain_table_item_address_mark':{const q=await queryTableItem_AddressMark({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_address_mark','result':q};break;}case'onchain_table_item_entity_registrar':{const s=await queryTableItem_EntityRegistrar({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_registrar','result':s};break;}case'onchain_table_item_entity_linker':{const t=await queryTableItem_EntityLinker({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_linker','result':t};break;}case'onchain_table_item_entity_contact':{const u=await queryTableItem_EntityContact({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_contact','result':u};break;}case'onchain_table_item_entity_order':{const v=await queryTableItem_EntityOrder({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_order','result':v};break;}case'onchain_orders_of_user':{let w;try{w=await queryOrdersByUser({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});}catch(x){const y=x instanceof Error?x['message']:String(x);if(/dynamicFieldNotFound/i['test'](y))w=[];else throw x;}c={'query_type':'onchain_orders_of_user','result':w};break;}case'onchain_orders_of_users':{const z=b['addresses']??[],A=[],B=await Promise['allSettled'](z['map'](async M=>{try{const N=await queryOrdersByUser({'address':M,'no_cache':b['no_cache'],'network':b['network']});return{'account':String(M?.['name_or_address']??''),'views':Array['isArray'](N)?N:[]};}catch(O){const P=O instanceof Error?O['message']:String(O);if(/dynamicFieldNotFound/i['test'](P))return{'account':String(M?.['name_or_address']??''),'views':[]};throw O;}})),C=[];for(let M=0x0;M<z['length'];M++){const N=B[M];if(N['status']==='fulfilled')C['push'](N['value']);else{const O=N['reason']instanceof Error?N['reason']['message']:String(N['reason']);A['push'](String(z[M]?.['name_or_address']??'?')+':\x20'+O);}}const D=Array['from'](new Set(C['flatMap'](P=>P['views']['map'](Q=>typeof Q?.['order']?.['object']==='string'?Q['order']['object']:typeof Q?.['order']==='string'?Q['order']:'')['filter'](Boolean)))),E=new Map();try{if(D['length']>0x0){const P=await batchQueryObjectsByIds(D,b['network']);for(const Q of P){if(Q&&Q['type']===ObjectType['Order'])E['set'](Q['object'],Q);}}}catch{A['push']('order\x20details\x20unavailable\x20(non-blocking)');}const F=new Map(),G=new Map(),H=new Map();try{const R=new Set();for(const S of E['values']()){if(S?.['progress'])R['add'](S['progress']);if(S?.['allocation'])R['add'](S['allocation']);}if(R['size']>0x0){const T=await batchQueryObjectsByIds(Array['from'](R),b['network']);for(const U of T){if(!U?.['object'])continue;if(U['type']===ObjectType['Progress']){const V=U?.['current'];F['set'](U['object'],typeof V==='string'&&V!==''?V:null),G['set'](U['object'],Number(U?.['current_time'])||null);}else{if(U['type']===ObjectType['Allocation']){const W=Number(U?.['balance']??0x0);H['set'](U['object'],Number['isFinite'](W)&&W===0x0?'allocated':'pending');}}}}}catch{A['push']('progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const I=new Map();try{const X=await Promise['allSettled'](D['map'](Y=>query_object_last_updated({'object':Y,'network':b['network'],'previous_transaction':E['get'](Y)?.['previousTransaction']??null})));for(let Y=0x0;Y<D['length'];Y++){const Z=X[Y];I['set'](D[Y],Z['status']==='fulfilled'&&Z['value']?.['timestamp_ms']?Number(Z['value']['timestamp_ms'])||null:null);}}catch{A['push']('order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const J=await coinTypesOfServices(Array['from'](new Set(Array['from'](E['values']())['map'](a0=>typeof a0?.['service']==='string'?a0['service']:'')['filter'](Boolean))),b['network']),K=async(a0,a1)=>{if(a1===null||a1===undefined||a1==='')return{'display':'','tip':''};if(!a0)return{'display':a1,'tip':''};try{const a2=await formatChainValue(a1,a0,b['network']);if(a2['precision_known'])return{'display':a2['symbol']?a2['display']+'\x20'+a2['symbol']:a2['display'],'tip':a2['text']};return{'display':a1,'tip':''};}catch{return{'display':a1,'tip':''};}},L=[];for(const a0 of D){const a1=E['get'](a0),a2=C['filter'](a6=>a6['views']['some'](a7=>(typeof a7?.['order']?.['object']==='string'?a7['order']['object']:a7?.['order'])===a0))['map'](a6=>{const a7=a6['views']['find'](a8=>(typeof a8?.['order']?.['object']==='string'?a8['order']['object']:a8?.['order'])===a0);return{'account':a6['account'],'is_owner':!!a7?.['is_owner'],'is_agent':!!a7?.['is_agent'],'time':a7?.['time']};}),a3=J['get'](String(a1?.['service']??''))??null,a4=a1?.['amount']!==null&&a1?.['amount']!==undefined?String(a1['amount']):'',a5=await K(a3,a4);L['push']({'order':a0,'roles':a2,'time':a1?Number(a1['time'])||0x0:0x0,'updated_ms':I['get'](a0)??null,'amount':a4,'amount_display':a5['display'],'amount_tip':a5['tip'],'service':a1?.['service']??null,'machine':a1?.['machine']??null,'progress':a1?.['progress']??null,'allocation':a1?.['allocation']??null,'owner':ownerAddrOf(a1?.['builder']??a1?.['owner']),'claimed_by':a1?.['claimed_by']??null,'required_info':a1?.['required_info']??null,'progress_next':a1?.['progress']?F['get'](a1['progress'])??null:null,'progress_since':a1?.['progress']?G['get'](a1['progress'])??null:null,'allocation_state':a1?.['allocation']?H['get'](a1['allocation'])??'pending':'none','disputes':Array['isArray'](a1?.['dispute'])?a1['dispute']:[],'agents':Array['isArray'](a1?.['agent'])?a1['agent']:[],'items':await Promise['all']((Array['isArray'](a1?.['items'])?a1['items']:[])['map'](async a6=>{const a7=a6?.['price']!==null&&a6?.['price']!==undefined?String(a6['price']):'0';return{'name':String(a6?.['name']??''),'price':a7,'price_display':(await K(a3,a7))['display'],'quantity':String(a6?.['quantity']??'0'),'wip_hash':String(a6?.['wip_hash']??'')};}))});}c={'query_type':'onchain_orders_of_users','result':L,...A['length']>0x0?{'account_errors':A}:{}};break;}case'onchain_table_item_object_linker_core':{const a6=await queryTableItem_ObjectLinkerCore({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_core','result':a6};break;}case'onchain_table_item_object_linker_tx':{const a7=await queryTableItem_ObjectLinkerTx({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_tx','result':a7};break;}case'onchain_affiliations_of_object':{const a8=await query_affiliations({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']}),a9=a8?.['entries'];Array['isArray'](a9)&&(a8['entries']=a9['filter'](aa=>{const ab=typeof aa?.['who']==='string'?aa['who']:'';return!!ab&&objectTypeFromAddress(ab)!==undefined;}));c={'query_type':'onchain_affiliations_of_object','result':a8};break;}case'onchain_table_item_generic':{const aa=await query_tableItem({'parent':b['parent'],'key':{'type':b['key_type'],'value':b['key_value']},'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_generic','result':aa};break;}default:throw new Error('Unknown\x20table\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22onchain_table\x22,\x20\x22onchain_table_item_repository_data\x22,\x20\x22onchain_table_item_permission_perm\x22,\x20\x22onchain_table_item_reward_record\x22,\x20\x22onchain_table_item_demand_presenter\x22,\x20\x22onchain_table_item_treasury_history\x22,\x20\x22onchain_table_item_machine_node\x22,\x20\x22onchain_table_item_progress_history\x22,\x20\x22onchain_table_item_address_mark\x22,\x20\x22onchain_table_item_entity_registrar\x22,\x20\x22onchain_table_item_entity_linker\x22,\x20\x22onchain_table_item_entity_contact\x22,\x20\x22onchain_table_item_entity_order\x22,\x20\x22onchain_orders_of_user\x22,\x20\x22onchain_orders_of_users\x22,\x20\x22onchain_table_item_object_linker_core\x22,\x20\x22onchain_table_item_object_linker_tx\x22,\x20\x22onchain_table_item_generic\x22.\x20For\x20address\x20profiles,\x20use\x20the\x20\x22query_toolkit\x22\x20tool\x20with\x20query_type=\x22address_profile\x22.');}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_table_data','data':b})}};}export async function handleOnchainEvents(a){const b=strictParse(OnchainEventsInputSchema,a,'onchain_events\x20input'),c=await query_events({'type':b['type'],'cursor':b['cursor']?{'eventSeq':String(b['cursor']['eventSeq']),'txDigest':b['cursor']['txDigest']}:null,'limit':b['limit']??null,'order':b['order']??null,'no_cache':b['no_cache'],'network':b['network']});try{await annotateEventsMonetaryFields(c?.['data'],b['network']);}catch{}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_events','data':b})}};}export async function handleWowokInfo(a){const b=strictParse(ProtocolInfoQuerySchema,a,'wowok_buildin_info\x20input');if(b['info']==='upgrade_check'){const d=await checkUpgrade(),e={'info':'upgrade_check','result':d};return{'content':[{'type':'text','text':JSON['stringify']({'result':e})}],'structuredContent':{'result':e}};}if(b['info']==='universal_template'){const f={'info':'universal_template','result':getUniversalTemplate()};return{'content':[{'type':'text','text':JSON['stringify']({'result':f})}],'structuredContent':{'result':f}};}const c=await queryProtocolInfo(b);return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
1
+ import{strictParse,WatchQueryOperationsSchema,OnchainTableDataSchema,OnchainEventsInputSchema,ProtocolInfoQuerySchema}from'../../schema/index.js';import{checkUpgrade}from'../upgrade-check.js';import{getUniversalTemplate}from'../../knowledge/universal-template.js';import{getGettingStarted}from'../../knowledge/getting-started.js';import{query_local_mark_list,query_account_list,query_local_info_list,query_local_token_list,query_account,GetLocalNamesByAddresses,query_personal,query_table,query_tableItem,queryTableItem_RepositoryData,queryTableItem_PermissionPerm,queryTableItem_RewardRecord,queryTableItem_DemandPresenter,queryTableItem_TreasuryHistory,queryTableItem_MachineNode,queryTableItem_ProgressHistory,queryTableItem_AddressMark,queryTableItem_EntityRegistrar,queryTableItem_EntityLinker,queryTableItem_EntityContact,queryTableItem_ObjectLinkerCore,queryTableItem_ObjectLinkerTx,queryTableItem_EntityOrder,queryOrdersByUser,query_affiliations,query_address_profile,query_address_profiles,objectTypeFromAddress,ObjectType,query_received,queryProtocolInfo,query_events,query_transaction,query_object_history,query_address_activity,query_checkpoint,generateNodeComments,query_object_last_updated,Config}from'@wowok/wowok';import{computeServiceTrustSummary}from'./trust.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{SCENARIO_CHAINS,SCENARIO_BRIDGE_REGISTRY,SCENARIO_TOPOLOGY_VERSION}from'../../knowledge/scenario-topology.js';import{assembleContext}from'../../playbooks/service-build/context-assembly.js';import{generateBusinessReport}from'../../playbooks/service-build/reverse-mapping.js';import{handleServicePanorama}from'../../playbooks/service-build/service-panorama.js';import{handleMachinePanorama}from'../../playbooks/service-build/machine-panorama.js';import{handleObjectPanorama}from'../../playbooks/service-build/object-panorama.js';import{handleParticipationRadar}from'../../playbooks/service-build/participation-radar.js';import{handleRelationshipProfile}from'../../playbooks/service-build/relationship-profile.js';import{handleOnchainTopology}from'../../playbooks/service-build/topology-query.js';import{handleReviewPack}from'../../review/index.js';import{buildWorkspaceLists}from'../../knowledge/workspace-lists.js';import{buildAccountMarks}from'../../knowledge/account-marks.js';import{migrationPreflight}from'../../knowledge/migration-preflight.js';import{buildDataSemantic}from'../../schema/call/semantic.js';import{enrichWorkflowGuidance}from'../../knowledge/workflow-guidance.js';import{batchQueryObjectsByIds}from'../../graph/onchain/sdk-batch.js';import{formatChainValue,annotateObjectMonetaryFields,annotateTableItemMonetaryFields,annotateEventsMonetaryFields,annotateBalanceChanges,resolveParentObjectTokenType,convertTokenValue}from'../../knowledge/fund-layer.js';import{normalizeAccountOrMark}from'./messenger.js';function ownerAddrOf(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;}const serviceCoinTypeCache=new Map();async function coinTypesOfServices(a,b){const c=new Map();if(!a||a['length']===0x0)return c;const d=[];for(const e of a){const f=(b??'')+'|'+e['toLowerCase'](),h=serviceCoinTypeCache['get'](f);if(h!==undefined)c['set'](e,h);else d['push'](e);}if(d['length']===0x0)return c;try{const i=await batchQueryObjectsByIds(d,b);for(const j of i){if(!j?.['object'])continue;const k=j?.['type_raw']??j?.['type']??'',l=k['match'](/<(.+)>$/);if(!l)continue;serviceCoinTypeCache['set']((b??'')+'|'+String(j['object'])['toLowerCase'](),l[0x1]),c['set'](j['object'],l[0x1]);}}catch{}return c;}async function mergeServiceAnalysis(a,b){const c=a?.['object'],d=a?.['kind']==='Service'||c&&(c['type']==='Service'||(c['type_raw']??'')['includes']('::service::'));if(!d||!a)return;let e=null;try{const t=await query_object_last_updated({'object':a['address'],'network':b['network']});t?.['timestamp_ms']&&(e={'timestamp_ms':t['timestamp_ms'],'digest':t['digest'],'sender':t['sender']});}catch{}let f=null;try{f=await computeServiceTrustSummary({'service':a['address'],'depth':'evaluate','network':b['network'],'no_cache':b['no_cache']});}catch{}const g=a?.['reverse_core'],h=a?.['reverse_tx'],i=Array['isArray'](g?.['items'])?g['items']['length']:0x0,j=Array['isArray'](h?.['items'])?h['items']['length']:0x0,k=(j>0x0?h['items']:[])['filter'](u=>objectTypeFromAddress(u?.['who'])===ObjectType['Order']),l=k['length'],m=![],n=Array['isArray'](a?.['reputation']?.['votes'])?a['reputation']['votes']:[],o=c?.['type_raw']??c?.['type']??'',p=o['match'](/<(.+)>$/),q=p?p[0x1]:null,r=q?(q['split']('::')['pop']()??q)['toUpperCase']():null,s=Array['isArray'](c?.['sales'])?c['sales']:[];a['service_analysis']={'description':c?.['description']??null,'sales_count':s['length'],'live_sales_count':s['filter'](u=>u&&!u['suspension'])['length'],'paused_sales_count':s['filter'](u=>u&&u['suspension'])['length'],'orders_count':l,'orders_count_truncated':m,'like_count':n['filter'](u=>u&&u['like'])['length'],'dislike_count':n['filter'](u=>u&&u['dislike'])['length'],'favor_count':n['filter'](u=>u&&u['favor'])['length'],'votes':n['map'](u=>({'who':u?.['who']??null,'like':!!u?.['like'],'dislike':!!u?.['dislike'],'favor':!!u?.['favor'],'time':u?.['time']??null})),'coin_type':q,'token_symbol':r,'location':c?.['location']??null,'bPublished':c?.['bPublished']??null,'bPaused':c?.['bPaused']??null,'related_core_count':i,'related_tx_count':j,'related_object_count':i+j,'onchain_last_updated':e,'trust':f};}export function buildProfileFollowUps(a){if(!a||typeof a!=='object')return[];const b=typeof a['address']==='string'?a['address']:undefined;if(!b)return[];const c=a['kind']==='user'||!a['is_system_singleton']&&!a['object'],d=[];if(c){const e=Array['isArray'](a['permission_membership']?.['items'])?a['permission_membership']['items']:[],f=Array['isArray'](a['order_membership']?.['items'])?a['order_membership']['items']:[];e['length']>0x0&&d['push']({'label':'Permission\x20organizations\x20('+e['length']+')','detail':'Expand\x20each\x20Permission\x20the\x20address\x20belongs\x20to\x20—\x20owner/admin/entity\x20standing\x20and\x20what\x20the\x20org\x20governs.','call':{'query_type':'onchain_objects','objects':e['map'](g=>g['who'])['filter'](Boolean)}}),f['length']>0x0&&d['push']({'label':'Order\x20footprint\x20('+f['length']+')','detail':'The\x20orders\x20this\x20address\x20participates\x20in\x20(buyer\x20vs\x20operator\x20roles).','call':{'query_type':'onchain_table_item_entity_order','address':b}}),d['push']({'label':'Public\x20personal\x20profile','detail':'Social/IM\x20links,\x20public\x20info\x20records,\x20voting\x20history,\x20referrer.','call':{'query_type':'onchain_personal_profile','address':b}}),d['push']({'label':'Reverse\x20map','detail':'Related\x20objects\x20and\x20the\x20deterministic\x20business\x20report\x20for\x20this\x20address.','call':{'query_type':'reverse_map','context_objects':[b]}});}else a['object']&&d['push']({'label':'Full\x20object\x20body','detail':'The\x20complete\x20on-chain\x20object\x20fields\x20(one\x20targeted\x20read).','call':{'query_type':'onchain_objects','objects':[b]}}),d['push']({'label':'Reverse\x20map','detail':'Related\x20objects\x20and\x20the\x20deterministic\x20business\x20report.','call':{'query_type':'reverse_map','context_objects':[b]}});return d['push']({'label':'Recent\x20on-chain\x20activity','detail':'Newest\x20transactions\x20touching\x20this\x20address.','call':{'query_type':'onchain_address_activity','address':b}}),d['slice'](0x0,0x3);}async function annotateAccountBalance(a,b){if(!a||typeof a!=='object')return;const e={},f=(j,k)=>{if(j===null||j===undefined)return undefined;if(typeof j!=='string'&&typeof j!=='number'&&typeof j!=='bigint')return undefined;if(typeof k!=='string'||!k)return undefined;return formatChainValue(j,k,b);},g=a['balance'];if(g&&typeof g==='object'){const j=g['coinType'],k=await f(g['totalBalance'],j);if(k)e['balance.totalBalance']=k;if(g['lockedBalance']!==undefined){const l=await f(g['lockedBalance'],j);if(l)e['balance.lockedBalance']=l;}}const h=a['coin']?.['data'];if(Array['isArray'](h))for(let m=0x0;m<h['length'];m++){const n=h[m],o=await f(n?.['balance'],n?.['coinType']);if(o)e['coin.data['+m+'].balance']=o;}if(Object['keys'](e)['length']>0x0){if(b)for(const p of Object['keys'](e)){const q=e[p];e[p]={...q,'text':q['text']+'\x20—\x20network:\x20'+b};}a['_money_display']=e;}}const NETWORK_FIELD_BY_QUERY={'account_balance':'network','onchain_personal_profile':'network','onchain_objects':'network','onchain_received':'network','onchain_transaction':'network','onchain_block':'network','onchain_object_history':'network','onchain_last_updated':'network','onchain_address_activity':'network','token_value_convert':'network','address_profile':'network','address_profiles':'network','service_supply_chain':'network','assemble_context':'context_network','reverse_map':'context_network','service_panorama':'context_network','machine_panorama':'context_network','object_panorama':'context_network','review_pack':'context_network','participation_radar':'context_network','relationship_profile':'context_network','onchain_topology':'context_network','workspace_lists':'context_network','marks_of_account':'context_network'};function requestedNetworkForQuery(a,b){const c=NETWORK_FIELD_BY_QUERY[b];if(!c)return undefined;const d=a[c];return typeof d==='string'&&d['length']>0x0?d:undefined;}export async function handleWatchQueryOperations(a){const c=strictParse(WatchQueryOperationsSchema,a,'watch_and_query\x20input');let d;switch(c['query_type']){case'local_mark_list':{const g=await query_local_mark_list(c['filter']||{});d={'query_type':'local_mark_list','result':g};break;}case'account_list':{const h=await query_account_list(c['filter']);d={'query_type':'account_list','result':h};break;}case'local_info_list':{const j=await query_local_info_list(c['filter']);d={'query_type':'local_info_list','result':j};break;}case'token_list':{const k=await query_local_token_list(c['filter']||{});d={'query_type':'token_list','result':k};break;}case'account_balance':{const l=await query_account({'name_or_address':c['name_or_address'],'token_type':c['token_type'],'balance':c['balance'],'coin':c['coin'],'network':c['network']}),m=c['network']??await Config['Instance']()['network_get']();await annotateAccountBalance(l,m),d={'query_type':'account_balance','result':l};break;}case'local_names':{const n=await GetLocalNamesByAddresses(c['addresses']);d={'query_type':'local_names','result':n};break;}case'onchain_personal_profile':{const o=await query_personal({'account':c['account'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_personal_profile','result':o};break;}case'onchain_objects':{const p={'objects':await batchQueryObjectsByIds(c['objects'],c['network'],c['no_cache'])};if(p&&p['objects']&&Array['isArray'](p['objects'])){p['objects']=p['objects']['map'](q=>{if(q&&q['data']&&q['data']['type']==='Guard'&&q['data']['root'])try{const r=generateNodeComments(q['data']['root']);return{...q,'_guard_node_comments':r};}catch(s){return q;}return q;}),p['objects']=p['objects']['map'](q=>{if(q&&q['data']&&q['data']['type']==='Progress'&&q['data']['current']===''){const r=q['data']['machine'],s=q['data']['task'];return{...q,'_diagnostic':{'issue':'Progress.current\x20is\x20empty\x20—\x20order\x20workflow\x20is\x20stuck\x20at\x20the\x20initial\x20state','cause':'The\x20Machine\x27s\x20entry\x20node\x20(prev_node=\x27\x27)\x20likely\x20has\x20no\x20forwards\x20defined.\x20'+'When\x20Progress\x20starts,\x20it\x20looks\x20up\x20the\x20entry\x20node\x27s\x20forwards\x20to\x20determine\x20'+'the\x20next\x20node.\x20Without\x20forwards,\x20Progress\x20cannot\x20advance\x20and\x20the\x20order\x20'+'is\x20permanently\x20stuck.','machine_object_id':r??null,'bound_order_id':s??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](r)+']).','2.\x20Inspect\x20node.pairs\x20for\x20the\x20entry\x20node\x20(prev_node=\x27\x27).','3.\x20If\x20forwards\x20is\x20empty:\x20this\x20is\x20the\x20root\x20cause.\x20The\x20Machine\x20must\x20be\x20republished\x20with\x20at\x20least\x20one\x20forward\x20on\x20the\x20entry\x20node.','4.\x20To\x20republish:\x20clone\x20the\x20Machine\x20nodes,\x20add\x20a\x20forward\x20to\x20the\x20entry\x20node\x27s\x20pairs,\x20then\x20create\x20a\x20new\x20Machine\x20(Machine\x20nodes\x20are\x20immutable\x20after\x20publish\x20—\x20see\x20P0-2\x20schema\x20validation\x20that\x20now\x20blocks\x20this).','5.\x20Rebind\x20the\x20new\x20Machine\x20to\x20the\x20Service\x20(service.machine\x20field)\x20and\x20create\x20a\x20new\x20Order\x20to\x20test.'],'reference':'P0-2\x20schema\x20refinement\x20in\x20MachineNodePairSchema\x20ensures\x20new\x20Machines\x20cannot\x20be\x20published\x20with\x20empty\x20entry-node\x20forwards.\x20This\x20diagnostic\x20catches\x20legacy\x20Machines\x20that\x20predate\x20the\x20fix.'}};}return q;});for(const q of p['objects']){const r=q?.['data']??q;if((q?.['type']??r?.['type'])!=='Progress')continue;const s=q?.['object']??r?.['object'];if(!s)continue;try{const t=await enrichWorkflowGuidance({'progressRef':s,'network':c['network'],'noCache':c['no_cache']});if(t?.['guidance']){q['_workflow_guidance']=t['guidance'];if(t['text'])q['_workflow_guidance_text']=t['text'];}}catch{}}for(const u of p['objects']){try{await annotateObjectMonetaryFields(u,c['network']);}catch{}}}d={'query_type':'onchain_objects','result':p};break;}case'onchain_received':{const v=await query_received({'name_or_address':normalizeAccountOrMark(c['name_or_address']),'type':c['type'],'cursor':c['cursor'],'limit':c['limit'],'no_cache':c['no_cache'],'network':c['network']}),w=v;if(w&&typeof w==='object'&&typeof w['balance']==='bigint'){const x=w['token_type'];w['balance']=w['balance']['toString']();if(Array['isArray'](w['received']))for(const y of w['received']){y&&typeof y['balance']==='bigint'&&(y['balance']=y['balance']['toString']());}if(x)try{const z={'balance':await formatChainValue(w['balance'],x,c['network'])};if(Array['isArray'](w['received']))for(let A=0x0;A<w['received']['length'];A++){const B=w['received'][A]?.['balance'];B!==undefined&&B!==null&&(z['received['+A+'].balance']=await formatChainValue(B,x,c['network']));}w['_money_display']=z;}catch{}}d={'query_type':'onchain_received','result':w};break;}case'onchain_transaction':{const C=await query_transaction({'digest':c['digest'],'no_cache':c['no_cache'],'network':c['network']});try{await annotateBalanceChanges(C?.['balance_changes'],c['network']);}catch{}d={'query_type':'onchain_transaction','result':C};break;}case'onchain_block':{const D=await query_checkpoint({'block':c['block'],'network':c['network']});d={'query_type':'onchain_block','result':D};break;}case'onchain_object_history':{const E=await query_object_history({'object':c['object'],'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_object_history','result':E};break;}case'onchain_last_updated':{const F=c['objects']??[],G=await Promise['allSettled'](F['map'](I=>query_object_last_updated({'object':I,'network':c['network']}))),H=F['map']((I,J)=>{const K=G[J],L=K['status']==='fulfilled'?K['value']:null;return{'object':I,'timestamp_ms':L?.['timestamp_ms']?String(L['timestamp_ms']):null,'digest':L?.['digest']??null,'sender':L?.['sender']??null};});d={'query_type':'onchain_last_updated','result':{'items':H}};break;}case'onchain_address_activity':{const I=typeof c['name_or_address']==='string'?c['name_or_address']:c['name_or_address']['name_or_address'],J=await query_address_activity({'name_or_address':I,'direction':c['direction'],'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_address_activity','result':J};break;}case'token_value_convert':{const K=c['raw']!==undefined,L=c['unit']!==undefined;if(K===L)throw new Error('token_value_convert:\x20provide\x20EXACTLY\x20ONE\x20of\x20\x27raw\x27\x20(u64\x20smallest\x20units\x20→\x20unit\x20value)\x20'+('or\x20\x27unit\x27\x20(unit\x20value\x20→\x20u64\x20raw).\x20Received\x20raw='+JSON['stringify'](c['raw'])+',\x20')+('unit='+JSON['stringify'](c['unit'])+'.'));const M=await convertTokenValue(c['token_type'],K?{'raw':c['raw']}:{'unit':c['unit']},c['network']);d={'query_type':'token_value_convert','result':M};break;}case'address_profile':{const N=await query_address_profile({'address':c['address'],'no_cache':c['no_cache'],'network':c['network']});await mergeServiceAnalysis(N,{'no_cache':c['no_cache'],'network':c['network']});N&&typeof N==='object'&&(N['follow_ups']=buildProfileFollowUps(N));d={'query_type':'address_profile','result':N};break;}case'address_profiles':{const O=await query_address_profiles({'addresses':c['addresses'],'no_cache':c['no_cache'],'network':c['network']});await Promise['all'](O['map'](P=>mergeServiceAnalysis(P,{'no_cache':c['no_cache'],'network':c['network']})));for(const P of O??[]){P&&typeof P==='object'&&(P['follow_ups']=buildProfileFollowUps(P));}d={'query_type':'address_profiles','result':O};break;}case'service_supply_chain':{const Q=await resolveSupplyChainGraph(typeof c['address']==='string'?c['address']:c['address']?.['name_or_address']??String(c['address']),c['network']);d={'query_type':'service_supply_chain','result':Q};break;}case'assemble_context':{d={'query_type':'assemble_context','result':await assembleContext(c)};break;}case'reverse_map':{if(!c['context_objects']||c['context_objects']['length']===0x0)throw new Error('reverse_map\x20requires\x20\x27context_objects\x27\x20—\x20an\x20array\x20of\x20object\x20IDs\x20or\x20LocalMark\x20names\x20(include\x20the\x20Service;\x20add\x20Machine/Allocation\x20for\x20refund-path\x20detection).');const R=c['context_network']??await Config['Instance']()['network_get'](),S=await batchQueryObjectsByIds(c['context_objects'],R,![]);d={'query_type':'reverse_map','result':{'action':'reverse_map','objects_queried':S['length'],'report':generateBusinessReport({'objects':S,'order_amount':c['reverse_order_amount']})}};break;}case'service_panorama':d={'query_type':'service_panorama','result':await handleServicePanorama(c)};break;case'machine_panorama':d={'query_type':'machine_panorama','result':await handleMachinePanorama(c)};break;case'object_panorama':d={'query_type':'object_panorama','result':await handleObjectPanorama(c)};break;case'review_pack':d={'query_type':'review_pack','result':await handleReviewPack(c)};break;case'participation_radar':d={'query_type':'participation_radar','result':await handleParticipationRadar(c)};break;case'relationship_profile':d={'query_type':'relationship_profile','result':await handleRelationshipProfile(c)};break;case'onchain_topology':d={'query_type':'onchain_topology','result':await handleOnchainTopology(c)};break;case'workspace_lists':d={'query_type':'workspace_lists','result':await buildWorkspaceLists({'network':c['context_network'],'no_cache':c['no_cache'],'account':c['account'],'light':c['light']})};break;case'marks_of_account':d={'query_type':'marks_of_account','result':await buildAccountMarks({'network':c['context_network'],'no_cache':c['no_cache'],'account':c['account'],'light':c['light']})};break;case'migration_preflight':d={'query_type':'migration_preflight','result':await migrationPreflight({'account':c['account'],'source_network':c['source_network'],'target_network':c['target_network'],'no_cache':c['no_cache']})};break;case'scenario_topology':{const T=c['chain_id'];d={'query_type':'scenario_topology','result':{'version':SCENARIO_TOPOLOGY_VERSION,'chains':T?SCENARIO_CHAINS['filter'](U=>U['id']===T):SCENARIO_CHAINS,'bridges':SCENARIO_BRIDGE_REGISTRY}};break;}default:throw new Error('Unknown\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22local_mark_list\x22,\x20\x22account_list\x22,\x20\x22local_info_list\x22,\x20\x22token_list\x22,\x20\x22account_balance\x22,\x20\x22local_names\x22,\x20\x22onchain_personal_profile\x22,\x20\x22onchain_objects\x22,\x20\x22onchain_received\x22,\x20\x22onchain_transaction\x22,\x20\x22onchain_object_history\x22,\x20\x22onchain_last_updated\x22,\x20\x22onchain_address_activity\x22,\x20\x22token_value_convert\x22,\x20\x22address_profile\x22,\x20\x22address_profiles\x22,\x20\x22service_supply_chain\x22,\x20\x22relationship_profile\x22,\x20\x22onchain_topology\x22,\x20\x22workspace_lists\x22,\x20\x22marks_of_account\x22,\x20\x22migration_preflight\x22.\x20For\x20table\x20queries,\x20use\x20the\x20\x22onchain_table_data\x22\x20tool.');}const e=requestedNetworkForQuery(c,d['query_type']);let f;if(NETWORK_FIELD_BY_QUERY[d['query_type']]){const U=e??(d['query_type']==='reverse_map'?'testnet':await Config['Instance']()['network_get']());f={'network':U,'network_source':e?'explicit':'default'};}return{'content':[{'type':'text','text':JSON['stringify']({...f,'result':d})}],'structuredContent':{'result':d,...f??{},'semantic':buildDataSemantic(d,{'operation_type':'query_toolkit','data':c})}};}export async function handleOnchainTableData(a){const b=strictParse(OnchainTableDataSchema,a,'onchain_table_data\x20input');let c;switch(b['query_type']){case'onchain_table':{const d=await query_table({'parent':b['parent'],'cursor':b['cursor'],'limit':b['limit'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table','result':d};break;}case'onchain_table_item_repository_data':{const f=await queryTableItem_RepositoryData({'parent':b['parent'],'name':b['name'],'entity':b['entity'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_repository_data','result':f};break;}case'onchain_table_item_permission_perm':{const g=await queryTableItem_PermissionPerm({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_permission_perm','result':g};break;}case'onchain_table_item_reward_record':{const h=await queryTableItem_RewardRecord({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(h)try{const j=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(h,j,b['network']);}catch{}c={'query_type':'onchain_table_item_reward_record','result':h};break;}case'onchain_table_item_demand_presenter':{const k=await queryTableItem_DemandPresenter({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_demand_presenter','result':k};break;}case'onchain_table_item_treasury_history':{const l=await queryTableItem_TreasuryHistory({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(l)try{const m=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(l,m,b['network']);}catch{}c={'query_type':'onchain_table_item_treasury_history','result':l};break;}case'onchain_table_item_machine_node':{const n=await queryTableItem_MachineNode({'parent':b['parent'],'key':b['key'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_machine_node','result':n};break;}case'onchain_table_item_progress_history':{const p=await queryTableItem_ProgressHistory({'parent':b['parent'],'u64':b['u64'],'no_cache':![],'network':b['network']});c={'query_type':'onchain_table_item_progress_history','result':p};break;}case'onchain_table_item_address_mark':{const q=await queryTableItem_AddressMark({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_address_mark','result':q};break;}case'onchain_table_item_entity_registrar':{const s=await queryTableItem_EntityRegistrar({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_registrar','result':s};break;}case'onchain_table_item_entity_linker':{const t=await queryTableItem_EntityLinker({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_linker','result':t};break;}case'onchain_table_item_entity_contact':{const u=await queryTableItem_EntityContact({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_contact','result':u};break;}case'onchain_table_item_entity_order':{const v=await queryTableItem_EntityOrder({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_order','result':v};break;}case'onchain_orders_of_user':{let w;try{w=await queryOrdersByUser({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});}catch(x){const y=x instanceof Error?x['message']:String(x);if(/dynamicFieldNotFound/i['test'](y))w=[];else throw x;}c={'query_type':'onchain_orders_of_user','result':w};break;}case'onchain_orders_of_users':{const z=b['addresses']??[],A=[],B=await Promise['allSettled'](z['map'](async M=>{try{const N=await queryOrdersByUser({'address':M,'no_cache':b['no_cache'],'network':b['network']});return{'account':String(M?.['name_or_address']??''),'views':Array['isArray'](N)?N:[]};}catch(O){const P=O instanceof Error?O['message']:String(O);if(/dynamicFieldNotFound/i['test'](P))return{'account':String(M?.['name_or_address']??''),'views':[]};throw O;}})),C=[];for(let M=0x0;M<z['length'];M++){const N=B[M];if(N['status']==='fulfilled')C['push'](N['value']);else{const O=N['reason']instanceof Error?N['reason']['message']:String(N['reason']);A['push'](String(z[M]?.['name_or_address']??'?')+':\x20'+O);}}const D=Array['from'](new Set(C['flatMap'](P=>P['views']['map'](Q=>typeof Q?.['order']?.['object']==='string'?Q['order']['object']:typeof Q?.['order']==='string'?Q['order']:'')['filter'](Boolean)))),E=new Map();try{if(D['length']>0x0){const P=await batchQueryObjectsByIds(D,b['network']);for(const Q of P){if(Q&&Q['type']===ObjectType['Order'])E['set'](Q['object'],Q);}}}catch{A['push']('order\x20details\x20unavailable\x20(non-blocking)');}const F=new Map(),G=new Map(),H=new Map();try{const R=new Set();for(const S of E['values']()){if(S?.['progress'])R['add'](S['progress']);if(S?.['allocation'])R['add'](S['allocation']);}if(R['size']>0x0){const T=await batchQueryObjectsByIds(Array['from'](R),b['network']);for(const U of T){if(!U?.['object'])continue;if(U['type']===ObjectType['Progress']){const V=U?.['current'];F['set'](U['object'],typeof V==='string'&&V!==''?V:null),G['set'](U['object'],Number(U?.['current_time'])||null);}else{if(U['type']===ObjectType['Allocation']){const W=Number(U?.['balance']??0x0);H['set'](U['object'],Number['isFinite'](W)&&W===0x0?'allocated':'pending');}}}}}catch{A['push']('progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const I=new Map();try{const X=await Promise['allSettled'](D['map'](Y=>query_object_last_updated({'object':Y,'network':b['network'],'previous_transaction':E['get'](Y)?.['previousTransaction']??null})));for(let Y=0x0;Y<D['length'];Y++){const Z=X[Y];I['set'](D[Y],Z['status']==='fulfilled'&&Z['value']?.['timestamp_ms']?Number(Z['value']['timestamp_ms'])||null:null);}}catch{A['push']('order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const J=await coinTypesOfServices(Array['from'](new Set(Array['from'](E['values']())['map'](a0=>typeof a0?.['service']==='string'?a0['service']:'')['filter'](Boolean))),b['network']),K=async(a0,a1)=>{if(a1===null||a1===undefined||a1==='')return{'display':'','tip':''};if(!a0)return{'display':a1,'tip':''};try{const a2=await formatChainValue(a1,a0,b['network']);if(a2['precision_known'])return{'display':a2['symbol']?a2['display']+'\x20'+a2['symbol']:a2['display'],'tip':a2['text']};return{'display':a1,'tip':''};}catch{return{'display':a1,'tip':''};}},L=[];for(const a0 of D){const a1=E['get'](a0),a2=C['filter'](a6=>a6['views']['some'](a7=>(typeof a7?.['order']?.['object']==='string'?a7['order']['object']:a7?.['order'])===a0))['map'](a6=>{const a7=a6['views']['find'](a8=>(typeof a8?.['order']?.['object']==='string'?a8['order']['object']:a8?.['order'])===a0);return{'account':a6['account'],'is_owner':!!a7?.['is_owner'],'is_agent':!!a7?.['is_agent'],'time':a7?.['time']};}),a3=J['get'](String(a1?.['service']??''))??null,a4=a1?.['amount']!==null&&a1?.['amount']!==undefined?String(a1['amount']):'',a5=await K(a3,a4);L['push']({'order':a0,'roles':a2,'time':a1?Number(a1['time'])||0x0:0x0,'updated_ms':I['get'](a0)??null,'amount':a4,'amount_display':a5['display'],'amount_tip':a5['tip'],'service':a1?.['service']??null,'machine':a1?.['machine']??null,'progress':a1?.['progress']??null,'allocation':a1?.['allocation']??null,'owner':ownerAddrOf(a1?.['builder']??a1?.['owner']),'claimed_by':a1?.['claimed_by']??null,'required_info':a1?.['required_info']??null,'progress_next':a1?.['progress']?F['get'](a1['progress'])??null:null,'progress_since':a1?.['progress']?G['get'](a1['progress'])??null:null,'allocation_state':a1?.['allocation']?H['get'](a1['allocation'])??'pending':'none','disputes':Array['isArray'](a1?.['dispute'])?a1['dispute']:[],'agents':Array['isArray'](a1?.['agent'])?a1['agent']:[],'items':await Promise['all']((Array['isArray'](a1?.['items'])?a1['items']:[])['map'](async a6=>{const a7=a6?.['price']!==null&&a6?.['price']!==undefined?String(a6['price']):'0';return{'name':String(a6?.['name']??''),'price':a7,'price_display':(await K(a3,a7))['display'],'quantity':String(a6?.['quantity']??'0'),'wip_hash':String(a6?.['wip_hash']??'')};}))});}c={'query_type':'onchain_orders_of_users','result':L,...A['length']>0x0?{'account_errors':A}:{}};break;}case'onchain_table_item_object_linker_core':{const a6=await queryTableItem_ObjectLinkerCore({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_core','result':a6};break;}case'onchain_table_item_object_linker_tx':{const a7=await queryTableItem_ObjectLinkerTx({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_tx','result':a7};break;}case'onchain_affiliations_of_object':{const a8=await query_affiliations({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']}),a9=a8?.['entries'];Array['isArray'](a9)&&(a8['entries']=a9['filter'](aa=>{const ab=typeof aa?.['who']==='string'?aa['who']:'';return!!ab&&objectTypeFromAddress(ab)!==undefined;}));c={'query_type':'onchain_affiliations_of_object','result':a8};break;}case'onchain_table_item_generic':{const aa=await query_tableItem({'parent':b['parent'],'key':{'type':b['key_type'],'value':b['key_value']},'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_generic','result':aa};break;}default:throw new Error('Unknown\x20table\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22onchain_table\x22,\x20\x22onchain_table_item_repository_data\x22,\x20\x22onchain_table_item_permission_perm\x22,\x20\x22onchain_table_item_reward_record\x22,\x20\x22onchain_table_item_demand_presenter\x22,\x20\x22onchain_table_item_treasury_history\x22,\x20\x22onchain_table_item_machine_node\x22,\x20\x22onchain_table_item_progress_history\x22,\x20\x22onchain_table_item_address_mark\x22,\x20\x22onchain_table_item_entity_registrar\x22,\x20\x22onchain_table_item_entity_linker\x22,\x20\x22onchain_table_item_entity_contact\x22,\x20\x22onchain_table_item_entity_order\x22,\x20\x22onchain_orders_of_user\x22,\x20\x22onchain_orders_of_users\x22,\x20\x22onchain_table_item_object_linker_core\x22,\x20\x22onchain_table_item_object_linker_tx\x22,\x20\x22onchain_table_item_generic\x22.\x20For\x20address\x20profiles,\x20use\x20the\x20\x22query_toolkit\x22\x20tool\x20with\x20query_type=\x22address_profile\x22.');}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_table_data','data':b})}};}export async function handleOnchainEvents(a){const b=strictParse(OnchainEventsInputSchema,a,'onchain_events\x20input'),c=await query_events({'type':b['type'],'cursor':b['cursor']?{'eventSeq':String(b['cursor']['eventSeq']),'txDigest':b['cursor']['txDigest']}:null,'limit':b['limit']??null,'order':b['order']??null,'no_cache':b['no_cache'],'network':b['network']});try{await annotateEventsMonetaryFields(c?.['data'],b['network']);}catch{}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_events','data':b})}};}function mcpLayerInfoResponse(a){return{'content':[{'type':'text','text':JSON['stringify']({'result':a})}],'structuredContent':{'result':a}};}export async function handleWowokInfo(a){const b=strictParse(ProtocolInfoQuerySchema,a,'wowok_buildin_info\x20input'),c=b['info'];if(c==='upgrade_check')return mcpLayerInfoResponse({'info':'upgrade_check','result':await checkUpgrade()});if(c==='universal_template')return mcpLayerInfoResponse({'info':'universal_template','result':getUniversalTemplate()});if(c==='getting\x20started')return mcpLayerInfoResponse({'info':'getting\x20started','result':getGettingStarted()});const d=await queryProtocolInfo(b);return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d}};}
@@ -1 +1 @@
1
- import{processSchemaQuery,analyzeGuardSemantics,formatLintResult}from'../../schema-query-impl/index.js';import{strictParse}from'../../schema/index.js';import{SchemaQueryInputSchema}from'../../schema/schema-query/index.js';export async function handleSchemaQuery(a){const b=strictParse(SchemaQueryInputSchema,a,'schema_query\x20input');if(b['action']==='analyze_guard_semantics')return handleAnalyzeGuardSemantics(b['guard']);const c={'action':b['action'],'name':b['name'],'query':b['query'],'field_path':b['field_path'],'template':b['template'],'object_type':b['object_type'],'params':b['params'],'output_file':b['output_file']},d=processSchemaQuery(c);let e=d['message'];d['output_file_path']&&(e+='\x0a\x0a📄\x20Full\x20data\x20written\x20to:\x20'+d['output_file_path'],e+='\x0a\x20\x20\x20Use\x20the\x20Read\x20tool\x20to\x20access\x20the\x20file\x20content.');const f=d['data'];if(d['success']&&f)switch(c['action']){case'list':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aAll\x20available\x20schemas:\x0a';for(const g of f){e+='\x0a\x20\x20•\x20'+(g['name']??''),g['title']&&(e+='\x20-\x20'+g['title']),g['description']&&(e+='\x0a\x20\x20\x20\x20'+g['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}break;case'list_operations':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aOn-chain\x20operation\x20schemas:\x0a';for(const h of f){e+='\x0a\x20\x20•\x20'+(h['name']??''),h['title']&&(e+='\x20-\x20'+h['title']),h['description']&&(e+='\x0a\x20\x20\x20\x20'+h['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}break;case'get':e+='\x0a\x0a##\x20JSON\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_output':e+='\x0a\x0a##\x20Output\x20JSON\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_guard_templates':e+='\x0a\x0a##\x20Guard\x20Templates\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_field':e+='\x0a\x0a##\x20Field\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'search':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aFound\x20'+f['length']+'\x20schemas\x20matching\x20\x27'+(c['query']??'')+'\x27:\x0a';for(const i of f){e+='\x0a\x20\x20•\x20'+(i['name']??''),i['title']&&(e+='\x20-\x20'+i['title']),i['description']&&(e+='\x0a\x20\x20\x20\x20'+i['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}else e+='\x0a\x0aNo\x20schemas\x20found.\x20Try\x20\x27list\x27\x20to\x20browse\x20all\x20available\x20schemas,\x20or\x20use\x20a\x20broader\x20search\x20term.';break;case'get_tool_reference':{e+='\x0a\x0a##\x20MCP\x20Tool\x20Reference\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_guard_design_patterns':{e+='\x0a\x0a##\x20Guard\x20Design\x20Patterns\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_safety_rules':{e+='\x0a\x0a##\x20Safety\x20Rules\x20(sunk\x20from\x20wowok-safety\x20skill)\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_templates':{e+='\x0a\x0a##\x20Unified\x20Template\x20Registry\x20(92-review\x20D.2)\x0a\x0a';const j=f;if(Array['isArray'](j['templates'])&&!c['template']){e+='\x0a'+(j['total']??j['templates']['length'])+'\x20template(s).\x20',e+='Call\x20with\x20\x27template\x27=<id>\x20for\x20detail;\x20add\x20\x27params\x27\x20(JSON\x20string)\x20to\x20instantiate.\x0a';for(const k of j['templates']){e+='\x0a\x20\x20•\x20'+k['id']+'\x20['+k['object_type']+(k['instantiable']?'':',\x20guidance-only')+']\x20—\x20'+k['name']+'\x20('+(k['parameters']?.['length']??0x0)+'\x20params)';}e+='\x0a';}else e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}default:throw new Error('Unknown\x20schema_query\x20action:\x20'+String(c['action']));}if(d['suggestions']&&d['suggestions']['length']>0x0){e+='\x0a\x0a💡\x20Suggestions:\x0a';for(const l of d['suggestions']){e+='\x20\x20•\x20'+l+'\x0a';}}return{'content':[{'type':'text','text':e}],'structuredContent':d};}async function handleAnalyzeGuardSemantics(a){if(a===undefined||a===null)throw new Error('schema_query\x20action=\x27analyze_guard_semantics\x27\x20requires\x20the\x20\x27guard\x27\x20parameter\x20'+'(Guard\x20JSON\x20object\x20or\x20JSON-encoded\x20string\x20—\x20the\x20guard2file\x20export\x20format:\x20'+'{description?,\x20table:\x20[...],\x20root:\x20{...},\x20rely?,\x20binding_hint?}).');let b;if(typeof a==='string')try{b=JSON['parse'](a);}catch(k){throw new Error('analyze_guard_semantics:\x20\x27guard\x27\x20string\x20is\x20not\x20valid\x20JSON:\x20'+k['message']);}else b=a;if(!b||typeof b!=='object'||!Array['isArray'](b['table'])||!b['root'])throw new Error('analyze_guard_semantics:\x20Guard\x20JSON\x20must\x20contain\x20at\x20least\x20\x27table\x27\x20(array)\x20and\x20\x27root\x27\x20(logic\x20tree\x20object).');const c=await analyzeGuardSemantics(b),{lint:f,party_evaluation:g}=c;let h='Guard\x20semantics\x20analysis\x20(evaluate\x20BEFORE\x20relying\x20on\x20this\x20Guard):\x0a';h+='\x0a##\x20Logic\x20tree\x0a\x0a```\x0a'+c['render']['tree_indented']+'\x0a```\x0a',h+='\x0a##\x20Lint\x20+\x20risk\x20assessment\x0a\x0a```\x0a'+formatLintResult(f)+'\x0a```\x0a';const i=g;h+='\x0a##\x20Party\x20evaluation\x20(facts)\x0a',h+='\x0a\x20\x20•\x20Submission\x20requirements\x20(evidence\x20the\x20caller\x20must\x20submit):\x20'+i['submission_requirements']['length'];for(const l of i['submission_requirements']){h+='\x0a\x20\x20\x20\x20-\x20['+l['identifier']+']\x20'+(l['name']??'')+'\x20('+(l['object_type']??l['value_type']??'unknown')+')';}h+='\x0a\x20\x20•\x20On-chain\x20data\x20sources\x20read:\x20'+i['data_sources']['length'];for(const m of i['data_sources']){const n=m['is_mutable_onchain']?'\x20[MUTABLE\x20on-chain\x20—\x20who\x20controls\x20writes?]':'';h+='\x0a\x20\x20\x20\x20-\x20['+m['identifier']+']\x20'+(m['name']??'')+'\x20('+(m['object_type']??m['value_type']??m['kind'])+')'+n;}h+='\x0a\x20\x20•\x20Query\x20dependencies:\x20'+(i['query_dependencies']['length']>0x0?i['query_dependencies']['join'](',\x20'):'none'),h+='\x0a\x20\x20•\x20Time\x20conditions\x20(Clock):\x20'+(i['has_time_conditions']?'present':'none'),h+='\x0a\x20\x20•\x20Caller\x20identity\x20constraints\x20(Signer):\x20'+(i['has_signer_constraints']?'present':'none'),h+='\x0a\x20\x20•\x20Rely\x20composition\x20(other\x20Guards):\x20'+(i['has_rely_composition']?'present':'none'),h+='\x0a\x20\x20•\x20Lint:\x20'+f['summary']['errors']+'\x20error(s),\x20'+f['summary']['warnings']+'\x20warning(s),\x20ready='+f['summary']['ready'];const j={'action':'analyze_guard_semantics','render':c['render'],'lint':f,'party_evaluation':g};return{'content':[{'type':'text','text':h}],'structuredContent':{'success':!![],'action':'analyze_guard_semantics','data':j,'message':'Guard\x20semantics\x20analysis\x20complete.'}};}
1
+ import{processSchemaQuery,analyzeGuardSemantics,formatLintResult}from'../../schema-query-impl/index.js';import{strictParse}from'../../schema/index.js';import{SchemaQueryInputSchema}from'../../schema/schema-query/index.js';import{GUARD_BINDING_SEMANTICS,loadGuardJsonFromChain}from'../../knowledge/guard-submission-brief.js';export async function handleSchemaQuery(a){const b=strictParse(SchemaQueryInputSchema,a,'schema_query\x20input');if(b['action']==='analyze_guard_semantics')return handleAnalyzeGuardSemantics(b['guard'],b['binding'],b['network']);const c={'action':b['action'],'name':b['name'],'query':b['query'],'field_path':b['field_path'],'template':b['template'],'object_type':b['object_type'],'params':b['params'],'output_file':b['output_file']},d=processSchemaQuery(c);let e=d['message'];d['output_file_path']&&(e+='\x0a\x0a📄\x20Full\x20data\x20written\x20to:\x20'+d['output_file_path'],e+='\x0a\x20\x20\x20Use\x20the\x20Read\x20tool\x20to\x20access\x20the\x20file\x20content.');const f=d['data'];if(d['success']&&f)switch(c['action']){case'list':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aAll\x20available\x20schemas:\x0a';for(const g of f){e+='\x0a\x20\x20•\x20'+(g['name']??''),g['title']&&(e+='\x20-\x20'+g['title']),g['description']&&(e+='\x0a\x20\x20\x20\x20'+g['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}break;case'list_operations':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aOn-chain\x20operation\x20schemas:\x0a';for(const h of f){e+='\x0a\x20\x20•\x20'+(h['name']??''),h['title']&&(e+='\x20-\x20'+h['title']),h['description']&&(e+='\x0a\x20\x20\x20\x20'+h['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}break;case'get':e+='\x0a\x0a##\x20JSON\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_output':e+='\x0a\x0a##\x20Output\x20JSON\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_guard_templates':e+='\x0a\x0a##\x20Guard\x20Templates\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_field':e+='\x0a\x0a##\x20Field\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'search':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aFound\x20'+f['length']+'\x20schemas\x20matching\x20\x27'+(c['query']??'')+'\x27:\x0a';for(const i of f){e+='\x0a\x20\x20•\x20'+(i['name']??''),i['title']&&(e+='\x20-\x20'+i['title']),i['description']&&(e+='\x0a\x20\x20\x20\x20'+i['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}else e+='\x0a\x0aNo\x20schemas\x20found.\x20Try\x20\x27list\x27\x20to\x20browse\x20all\x20available\x20schemas,\x20or\x20use\x20a\x20broader\x20search\x20term.';break;case'get_tool_reference':{e+='\x0a\x0a##\x20MCP\x20Tool\x20Reference\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_guard_design_patterns':{e+='\x0a\x0a##\x20Guard\x20Design\x20Patterns\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_safety_rules':{e+='\x0a\x0a##\x20Safety\x20Rules\x20(sunk\x20from\x20wowok-safety\x20skill)\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_templates':{e+='\x0a\x0a##\x20Unified\x20Template\x20Registry\x20(92-review\x20D.2)\x0a\x0a';const j=f;if(Array['isArray'](j['templates'])&&!c['template']){e+='\x0a'+(j['total']??j['templates']['length'])+'\x20template(s).\x20',e+='Call\x20with\x20\x27template\x27=<id>\x20for\x20detail;\x20add\x20\x27params\x27\x20(JSON\x20string)\x20to\x20instantiate.\x0a';for(const k of j['templates']){e+='\x0a\x20\x20•\x20'+k['id']+'\x20['+k['object_type']+(k['instantiable']?'':',\x20guidance-only')+']\x20—\x20'+k['name']+'\x20('+(k['parameters']?.['length']??0x0)+'\x20params)';}e+='\x0a';}else e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}default:throw new Error('Unknown\x20schema_query\x20action:\x20'+String(c['action']));}if(d['suggestions']&&d['suggestions']['length']>0x0){e+='\x0a\x0a💡\x20Suggestions:\x0a';for(const l of d['suggestions']){e+='\x20\x20•\x20'+l+'\x0a';}}return{'content':[{'type':'text','text':e}],'structuredContent':d};}async function handleAnalyzeGuardSemantics(a,b,c){if(a===undefined||a===null)throw new Error('schema_query\x20action=\x27analyze_guard_semantics\x27\x20requires\x20the\x20\x27guard\x27\x20parameter\x20'+'(Guard\x20JSON\x20object,\x20JSON-encoded\x20string,\x20or\x20an\x20on-chain\x20Guard\x20address/LocalMark\x20name).');let f,g;if(typeof a==='string'){const t=a['trim'](),u=t['startsWith']('{')||t['startsWith']('[');if(u)try{f=JSON['parse'](t);}catch(v){throw new Error('analyze_guard_semantics:\x20\x27guard\x27\x20string\x20looks\x20like\x20JSON\x20but\x20failed\x20to\x20parse:\x20'+v['message']);}else g=t;}else f=a;let h,i;if(!f){if(!g)throw new Error('analyze_guard_semantics:\x20Guard\x20JSON\x20must\x20contain\x20at\x20least\x20\x27table\x27\x20(array)\x20and\x20\x27root\x27\x20(logic\x20tree\x20object).');const x=await loadGuardJsonFromChain(g,c);if(!x)throw new Error('analyze_guard_semantics:\x20cannot\x20load\x20Guard\x20\x22'+g+'\x22\x20from\x20chain\x20(not\x20found,\x20not\x20a\x20Guard\x20object,\x20or\x20LocalMark\x20name\x20unresolvable).\x20'+'Pass\x20the\x20full\x20Guard\x20JSON\x20instead,\x20or\x20check\x20the\x20address/name\x20and\x20network.');f=x['json'],h=x['guard'],i=x['name'];}if(!Array['isArray'](f['table'])||!f['root'])throw new Error('analyze_guard_semantics:\x20Guard\x20JSON\x20must\x20contain\x20at\x20least\x20\x27table\x27\x20(array)\x20and\x20\x27root\x27\x20(logic\x20tree\x20object).');const j=b,k=await analyzeGuardSemantics(f),{lint:l,party_evaluation:m}=k,n=j?GUARD_BINDING_SEMANTICS[j]:undefined,o=[];for(const y of m['data_sources']){y['is_mutable_onchain']&&o['push']('Table\x20['+y['identifier']+']'+(y['name']?'\x20\x22'+y['name']+'\x22':'')+'\x20reads\x20a\x20Repository\x20—\x20MUTABLE\x20on-chain;\x20verify\x20the\x20current\x20entry\x20before\x20relying\x20on\x20the\x20check');}m['has_time_conditions']&&o['push']('The\x20tree\x20contains\x20Clock\x20(time)\x20conditions\x20—\x20results\x20may\x20change\x20over\x20time');m['has_rely_composition']&&o['push']('This\x20Guard\x20composes\x20other\x20Guards\x20via\x20rely\x20—\x20each\x20relied\x20Guard\x27s\x20semantics\x20apply\x20too');let p='Guard\x20semantics\x20analysis\x20(evaluate\x20BEFORE\x20relying\x20on\x20this\x20Guard):\x0a';h&&(p+='\x0a**On-chain\x20Guard**:\x20'+(i??'')+'\x20'+h+'\x0a');n&&(p+='\x0a##\x20Business\x20slot\x0a\x0a'+n['role']+'\x20('+n['host']+'.'+n['binding_field']+')\x0a',p+='\x0a-\x20Your\x20submission\x20means:\x20'+n['submission_meaning']+'\x0a',p+='-\x20If\x20it\x20PASSES:\x20'+n['on_pass']+'\x0a',p+='-\x20If\x20it\x20FAILS:\x20'+n['on_fail']+'\x0a',p+='-\x20Stakes:\x20'+n['stakes']+'\x0a');p+='\x0a##\x20Logic\x20tree\x0a\x0a```\x0a'+k['render']['tree_indented']+'\x0a```\x0a',p+='\x0a##\x20Lint\x20+\x20risk\x20assessment\x0a\x0a```\x0a'+formatLintResult(l)+'\x0a```\x0a';const q=m;p+='\x0a##\x20Party\x20evaluation\x20(facts)\x0a',p+='\x0a\x20\x20•\x20Submission\x20requirements\x20(evidence\x20the\x20caller\x20must\x20submit):\x20'+q['submission_requirements']['length'];for(const z of q['submission_requirements']){p+='\x0a\x20\x20\x20\x20-\x20['+z['identifier']+']\x20'+(z['name']??'')+'\x20('+(z['object_type']??z['value_type']??'unknown')+')';}p+='\x0a\x20\x20•\x20On-chain\x20data\x20sources\x20read:\x20'+q['data_sources']['length'];for(const A of q['data_sources']){const B=A['is_mutable_onchain']?'\x20[MUTABLE\x20on-chain\x20—\x20who\x20controls\x20writes?]':'';p+='\x0a\x20\x20\x20\x20-\x20['+A['identifier']+']\x20'+(A['name']??'')+'\x20('+(A['object_type']??A['value_type']??A['kind'])+')'+B;}p+='\x0a\x20\x20•\x20Query\x20dependencies:\x20'+(q['query_dependencies']['length']>0x0?q['query_dependencies']['join'](',\x20'):'none'),p+='\x0a\x20\x20•\x20Time\x20conditions\x20(Clock):\x20'+(q['has_time_conditions']?'present':'none'),p+='\x0a\x20\x20•\x20Caller\x20identity\x20constraints\x20(Signer):\x20'+(q['has_signer_constraints']?'present':'none'),p+='\x0a\x20\x20•\x20Rely\x20composition\x20(other\x20Guards):\x20'+(q['has_rely_composition']?'present':'none'),p+='\x0a\x20\x20•\x20Lint:\x20'+l['summary']['errors']+'\x20error(s),\x20'+l['summary']['warnings']+'\x20warning(s),\x20ready='+l['summary']['ready'];if(o['length']>0x0){p+='\x0a\x0a##\x20Data-source\x20warnings\x0a';for(const C of o)p+='\x0a\x20\x20⚠\x20'+C+'\x0a';}const r={'action':'analyze_guard_semantics',...h?{'guard':h}:{},...i?{'guard_name':i}:{},...n?{'binding_semantics':{'action':j,'host':n['host'],'binding_field':n['binding_field'],'role':n['role'],'submission_meaning':n['submission_meaning'],'on_pass':n['on_pass'],'on_fail':n['on_fail'],'stakes':n['stakes']}}:{},'render':k['render'],'lint':l,'party_evaluation':m,...o['length']>0x0?{'data_source_warnings':o}:{}};return{'content':[{'type':'text','text':p}],'structuredContent':{'success':!![],'action':'analyze_guard_semantics','data':r,'message':'Guard\x20semantics\x20analysis\x20complete.'}};}
@@ -0,0 +1,2 @@
1
+ import type { ToolDispatchResult } from "../types.js";
2
+ export declare function handleStrategyReviewOperation(args: unknown): Promise<ToolDispatchResult>;
@@ -0,0 +1 @@
1
+ import{strictParse}from'../../schema/index.js';import{StrategyReviewOperationInputSchema}from'../../schema/strategy-review/index.js';import{resolveNetwork}from'./network.js';import{collectScorecard,getScorecardStore,buildReview}from'../../strategy/index.js';import{getEffectivePersona}from'../../persona/index.js';async function readMerchantPosture(a){try{const b=await getEffectivePersona(a);return b['layer']['profiles']?.['merchant']?.['merchant']?.['posture'];}catch{return undefined;}}export async function handleStrategyReviewOperation(a){const b=strictParse(StrategyReviewOperationInputSchema,a,'strategy_review_operation\x20input');let c;switch(b['action']){case'collect':{const d=b['account'],e=b['industry'];if(!d)throw new Error('\x27account\x27\x20is\x20required\x20for\x20action=\x27collect\x27');if(!e)throw new Error('\x27industry\x27\x20is\x20required\x20for\x20action=\x27collect\x27');const f=await collectScorecard({'account':d,'industry':e,'network':await resolveNetwork(b['network']),'limit':b['limit'],'no_cache':b['no_cache'],'discovery_terms':b['discovery_terms']}),g=b['posture']??await readMerchantPosture(d)??'balanced',h=Date['now'](),i='ss_'+h['toString'](0x24)+'_'+Math['random']()['toString'](0x24)['slice'](0x2,0x8),j={'id':i,'account':d,'industry':e,'posture':g,'collected_at':f['collected_at'],'created_at':h,'collection':f};let k=!![],l;try{await getScorecardStore()['append'](j);}catch(m){k=![],l=m instanceof Error?m['message']:String(m);}c={'action':'collect','snapshot_id':i,'stored':k,'posture':g,'collection':f};if(l)c['storage_error']=l;break;}case'review':{const n=b['account'],o=b['industry'];if(!n)throw new Error('\x27account\x27\x20is\x20required\x20for\x20action=\x27review\x27');if(!o)throw new Error('\x27industry\x27\x20is\x20required\x20for\x20action=\x27review\x27');const p=await collectScorecard({'account':n,'industry':o,'network':await resolveNetwork(b['network']),'limit':b['limit'],'no_cache':b['no_cache'],'discovery_terms':b['discovery_terms']}),q=await readMerchantPosture(n);let r=null;try{r=await getScorecardStore()['latest'](n,o);}catch{r=null;}const s=buildReview({'account':n,'industry':o,'posture':b['posture'],'collection':p,'previous':r,'current_merchant_posture':q});c={'action':'review','review':s,'previous_snapshot_id':r?.['id']??null};break;}case'list_snapshots':{const t=b['account'],u=b['industry'];if(!t)throw new Error('\x27account\x27\x20is\x20required\x20for\x20action=\x27list_snapshots\x27');if(!u)throw new Error('\x27industry\x27\x20is\x20required\x20for\x20action=\x27list_snapshots\x27');let v=[];try{v=await getScorecardStore()['list'](t,u);}catch{v=[];}c={'action':'list_snapshots','snapshots':v['map'](w=>({'id':w['id'],'account':w['account'],'industry':w['industry'],'posture':w['posture']??null,'collected_at':w['collected_at'],'created_at':w['created_at']}))};break;}default:throw new Error('Unknown\x20strategy_review_operation\x20action:\x20'+String(b['action']));}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
@@ -1 +1 @@
1
- import{query_objects,query_address_profile}from'@wowok/wowok';import{strictParse}from'../../schema/index.js';import{WatchOperationInputSchema}from'../../schema/watch/index.js';import{resolveWatchRole,CORE_PERMISSION_INDEX,valuePerspectiveOf,gamePowerOf,gameStrategyOf,interestAnalyzerOf,valuePropositionOf,isWeakerParty,isStrongerParty}from'../../role/index.js';import{interestsOf}from'../../evaluation/index.js';import{evaluatePathReasoning}from'../../evaluation/path-reasoning.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{fetchPermissionContext,fetchOrderContext,fetchMachineNodes,accountCanExecuteForward,enumerateObjectOperations,isPermissionIndexType}from'../../knowledge/index.js';import{getEffectivePersona}from'../../persona/index.js';import{normalizeObjectType}from'../../playbooks/service-build/object-type.js';async function readObject(a,b){try{const c=await query_objects({'objects':[a],'network':b}),d=c?.['objects']?.[0x0];if(!d)return undefined;const e=d?.['data']??d,f=d?.['type']??d?.['data']?.['type']??'';return{'address':String(d?.['object']??a),'type':normalizeObjectType(f),'data':e};}catch{return undefined;}}function displayName(a){if(typeof a['name']==='string'&&a['name']['length']>0x0)return a['name'];return undefined;}async function fetchUserProfile(a,b){try{const c=await query_address_profile({'address':a,'network':b});if(c&&c['kind']==='user')return c;return null;}catch{return null;}}function roleHintToCommercial(a){const b=(a??'')['toLowerCase']();if(b['includes']('customer'))return'customer';if(b['includes']('collaborator'))return'collaborator';if(b['includes']('merchant')||b['includes']('supplier'))return'merchant';if(b['includes']('demander'))return'demander';if(b['includes']('arbitrator'))return'arbitrator';return'neutral';}function resolveUserRole(a,b){const c=b['length']>0x0&&b===String(a['address']??'')['toLowerCase'](),d=a?.['role_evidence']?.['role_hint'],e=c&&d?roleHintToCommercial(d):'neutral',f={'manifest_role':e,'latent_role':undefined,'participation_role':e,'evaluation_role':e,'conflicting':![],'reason_direction':e==='neutral'?'objective':'game','derivation':c?'user-address\x20profile:\x20role_hint=\x22'+(d??'none')+'\x22\x20(order/contact/permission\x20memberships\x20+\x20reverse\x20bindings)':'user-address\x20profile\x20viewed\x20without\x20identity\x20binding\x20('+(b?'observer':'no\x20account')+')','note':c?'profile\x20of\x20this\x20address\x20itself\x20—\x20identity\x20derived\x20from\x20on-chain\x20memberships\x20and\x20reverse\x20bindings.':'address\x20profile\x20—\x20objective\x20facts\x20only;\x20supply\x20an\x20account\x20to\x20see\x20identity\x20relations.'};return f;}function toUserWatchObject(a){const b=a,c=b?.['identity'],d=b?.['reputation'],e=b?.['order_membership'],f=b?.['contact_membership'],g=b?.['permission_membership'],h=b?.['reverse_core'],i=b?.['reverse_tx'],j=(k,l)=>Array['isArray'](k)?k['length']:0x0;return{'address':b?.['address'],'object_type':'User','name':c?.['description']??undefined,'fields':{'kind':'user','identity':c?{'description':c['description']??null,'referrer':c['referrer']??null,'resource':c['resource']??null,'time':c['time']??null}:null,'reputation':d?{'like':Array['isArray'](d['votes'])?d['votes']['filter'](k=>k?.['like'])['length']:0x0,'dislike':Array['isArray'](d['votes'])?d['votes']['filter'](k=>k?.['dislike'])['length']:0x0,'favor':Array['isArray'](d['votes'])?d['votes']['filter'](k=>k?.['favor'])['length']:0x0,'voters':j(d?.['votes'],'v')}:null,'orders':e?{'owner':j(e?.['items']?.['filter'](k=>(k?.['role']&0x1)!==0x0),'o'),'agent':j(e?.['items']?.['filter'](k=>(k?.['role']&0x2)!==0x0),'o'),'total':j(e?.['items'],'o')}:null,'contacts':j(f?.['items'],'c'),'permissions':g?{'count':j(g?.['items'],'p'),'roles':(g?.['items']??[])['map'](k=>({'role':k?.['role']??null,'permission':k?.['permission']??null}))}:null,'reverse_bindings':{'core':j(h?.['items'],'c'),'tx':j(i?.['items'],'t'),'total':j(h?.['items'],'c')+j(i?.['items'],'t')},'activity':b?.['activity']??null,'role_evidence':b?.['role_evidence']??null}};}function buildUserRelations(a){const b=a,c=[],d=(e,f,g,h)=>{typeof f==='string'&&f['length']>0x0&&c['push']({'relation':e,'target':f,'target_type':g,'note':h});};for(const e of b?.['order_membership']?.['items']??[]){const f=(e?.['role']??0x0)&0x1?'owner':(e?.['role']??0x0)&0x2?'agent':'member';d('order',e?.['order'],'Order','member\x20as\x20'+f);}for(const g of b?.['contact_membership']?.['items']??[]){d('contact',g?.['contact'],'Contact','member');}for(const h of b?.['permission_membership']?.['items']??[]){const i=h?.['role']===0x1?'owner':h?.['role']===0x2?'admin':'entity';d('permission',h?.['permission'],'Permission','holds\x20role\x20'+i);}for(const j of b?.['reverse_core']?.['items']??[]){d('bound_by',j?.['who'],'Object','core\x20reverse\x20binding\x20(business\x20structure)');}for(const k of b?.['reverse_tx']?.['items']??[]){d('bound_by',k?.['who'],'Object','tx\x20reverse\x20binding\x20(recent\x20activity)');}for(const l of b?.['reputation']?.['votes']??[]){d('reputation',l?.['who'],'Account','voted');}return c;}async function assembleRoleInput(a,b,c,d){const e=c['toLowerCase'](),f={'account':e},g=new Set();switch(a){case'Order':{const h=b['builder'];if(typeof h==='string'&&h['length']>0x0)f['order_holder']=h;break;}case'Service':case'Demand':case'Arbitration':{const i=b['permission'];if(typeof i==='string'&&i['length']>0x0){const j=await fetchPermissionContext(i,d,![]);if(j){const k=await readObject(i,d),l=typeof k?.['data']?.['builder']==='string'?k['data']['builder']:undefined;if(j['admin']['has'](e)||l&&l['toLowerCase']()===e){const n=a==='Service'?CORE_PERMISSION_INDEX['service']:a==='Demand'?CORE_PERMISSION_INDEX['demand']:CORE_PERMISSION_INDEX['arbitration'];g['add'](n);}const m=j['table']['get'](e);if(m){for(const o of m)g['add'](o);}}}break;}case'Progress':{const q=b['namedOperator'];if(Array['isArray'](q)){const r=q['filter'](s=>Array['isArray'](s?.['operators'])&&s['operators']['some'](t=>String(t)['toLowerCase']()===e))['map'](s=>String(s?.['name']??''));if(r['length']>0x0)f['named_operator_names']=r;}break;}default:break;}if(g['size']>0x0)f['held_permission_indexes']=Array['from'](g);return f;}async function resolveRole(a,b,c,d){const e=await assembleRoleInput(a,b,c,d);let f;try{const g=await getEffectivePersona(c);f=g?.['role'];}catch{f=undefined;}return resolveWatchRole({'derivation':e,'latent_role':f});}function toWatchObject(a){if(!a)return null;const b=displayName(a['data']),c={};for(const [d,e]of Object['entries'](a['data'])){if(Array['isArray'](e)&&e['length']>0x14)continue;if(e&&typeof e==='object'&&!Array['isArray'](e))continue;c[d]=e;}return{'address':a['address'],'object_type':a['type'],'name':b,'fields':c};}async function buildRelations(b,c){const d=[],e=(f,g,h,i)=>{typeof g==='string'&&g['length']>0x0&&d['push']({'relation':f,'target':g,'target_type':h,'note':i});};switch(b){case'Service':{e('machine',c['machine'],'Machine','bound\x20workflow\x20(frozen\x20once\x20published)'),e('permission',c['permission'],'Permission','governance\x20owner');for(const f of Array['isArray'](c['arbitrations'])?c['arbitrations']:[])e('arbitration',f,'Arbitration');for(const g of Array['isArray'](c['rewards'])?c['rewards']:[])e('reward',g,'Reward');for(const h of Array['isArray'](c['repositories'])?c['repositories']:[])e('repository',h,'Repository');e('buy_guard',c['buy_guard'],'Guard','purchase\x20validation');break;}case'Order':{e('service',c['service'],'Service'),e('progress',c['progress'],'Progress'),e('machine',c['machine'],'Machine'),e('allocation',c['allocation'],'Allocation');break;}case'Demand':{e('permission',c['permission'],'Permission','governance\x20owner');break;}case'Arbitration':{e('permission',c['permission'],'Permission','governance\x20owner');break;}case'Progress':{e('machine',c['machine'],'Machine'),e('task',c['task'],'Order','bound\x20order');break;}default:break;}return d;}async function handleFocus(a){const b=(a['account']??'')['toLowerCase'](),c=await readObject(a['focus'],a['network']);if(!c){const e=await fetchUserProfile(a['focus'],a['network']);if(e)return{'action':'focus','result':{'object':toUserWatchObject(e),'role':resolveUserRole(e,b)}};}let d;return c&&b?d=await resolveRole(c['type'],c['data'],b,a['network']):d={'manifest_role':'neutral','latent_role':undefined,'participation_role':'neutral','evaluation_role':'neutral','conflicting':![],'reason_direction':'objective','derivation':'no\x20account\x20supplied\x20—\x20neutral\x20observer','note':'No\x20active\x20account;\x20only\x20objective\x20facts\x20are\x20narrated.'},{'action':'focus','result':{'object':toWatchObject(c),'role':d}};}async function handleExpand(a){const b=await readObject(a['focus'],a['network']);if(!b){const e=await fetchUserProfile(a['focus'],a['network']);if(e){const f=buildUserRelations(e);if(a['relation']){const g=f['filter'](h=>h['relation']===a['relation']);return{'action':'expand','result':{'object':toUserWatchObject(e),'relations':g,'supply_chain':undefined}};}return{'action':'expand','result':{'object':toUserWatchObject(e),'relations':f,'supply_chain':undefined}};}return{'action':'expand','result':{'object':null,'relations':[],'supply_chain':undefined}};}let c=await buildRelations(b['type'],b['data']);a['relation']&&(c=c['filter'](h=>h['relation']===a['relation']));let d;if(b['type']==='Service')try{d=await resolveSupplyChainGraph(b['address'],a['network']);}catch{d=undefined;}return{'action':'expand','result':{'object':toWatchObject(b),'relations':c,'supply_chain':d}};}async function readClockNow(a){try{const b=await query_objects({'objects':['0x6'],'network':a}),c=b?.['objects']?.[0x0],d=c?.['data']??c,e=Number(d?.['timestamp_ms']);return Number['isFinite'](e)?e:null;}catch{return null;}}async function collectOperations(a,b,c){const d=[];if(a['type']==='Progress'){const e=typeof a['data']['machine']==='string'?a['data']['machine']:undefined,f=(Array['isArray'](a['data']['namedOperator'])?a['data']['namedOperator']:[])['map'](j=>({'name':String(j?.['name']??''),'operators':(j?.['operators']??[])['map'](k=>String(k))}));let g,h,i;if(e){h=await fetchMachineNodes(e,c,![]),i=typeof a['data']['task']==='string'?await fetchOrderContext(a['data']['task'],c):undefined;if(h&&h['length']>0x0)try{const j=await query_objects({'objects':[e],'network':c}),k=j?.['objects']?.[0x0],l=(k?.['data']??k)?.['permission'];if(typeof l==='string')g=await fetchPermissionContext(l,c,![]);}catch{g=undefined;}}for(const m of h??[]){for(const n of m['pairs']??[]){for(const o of n['forwards']??[]){const p=accountCanExecuteForward(o,b,f,i,g),q=o['namedOperator']!==undefined&&o['namedOperator']!==null?o['namedOperator']===''?'order_holder':'named_operator':'permission_index';d['push']({'operation':'progress_next:'+o['name'],'can_execute':p,'path':q,'note':p?undefined:'guard/permission\x20not\x20satisfied\x20for\x20this\x20account'});}}}d['push'](...enumerateObjectOperations('Progress',a['data'],b,g));}else{let r;if(isPermissionIndexType(a['type'])){const t=a['data']['permission'];typeof t==='string'&&t['length']>0x0&&(r=await fetchPermissionContext(t,c,![]));}const s=a['type']==='Service'?await readClockNow(c):null;d['push'](...enumerateObjectOperations(a['type'],a['data'],b,r,s));}return d;}async function handleActions(a){const b=(a['account']??'')['toLowerCase'](),c=await readObject(a['focus'],a['network']);if(!c){const f=await fetchUserProfile(a['focus'],a['network']);if(f){const g=resolveUserRole(f,b),h=userAddressOperations(f,g);return{'action':'actions','result':{'object':toUserWatchObject(f),'role':g,'operations':h}};}return{'action':'actions','result':{'object':null,'role':null,'operations':[]}};}const d=b?await resolveRole(c['type'],c['data'],b,a['network']):null,e=b?await collectOperations(c,b,a['network']):[];return{'action':'actions','result':{'object':toWatchObject(c),'role':d,'operations':e}};}function userAddressOperations(a,b){const c=a,d=[],e=(i,j,k,l)=>d['push']({'operation':i,'can_execute':j,'path':k,'note':l}),f=Array['isArray'](c?.['permission_membership']?.['items'])?c['permission_membership']['items']['length']:0x0;f>0x0&&e('manage_permission_objects',!![],'permission_index',f+'\x20permission\x20membership(s)\x20—\x20operate\x20the\x20Service/Machine/Treasury/etc.\x20governed\x20by\x20them');const g=Array['isArray'](c?.['order_membership']?.['items'])?c['order_membership']['items']['length']:0x0;if(g>0x0){const i=c['order_membership']['items']['filter'](k=>(k?.['role']??0x0)&0x1)['length'],j=c['order_membership']['items']['filter'](k=>(k?.['role']??0x0)&0x2)['length'];if(i>0x0)e('advance_progress',!![],'order_holder',i+'\x20order(s)\x20as\x20owner\x20—\x20advance/claim');if(j>0x0)e('advance_progress',!![],'order_holder',j+'\x20order(s)\x20as\x20agent');}const h=Array['isArray'](c?.['reverse_tx']?.['items'])?c['reverse_tx']['items']['length']:0x0;return h>0x0&&e('submit_guard',![],'guard_submission',h+'\x20recent\x20tx\x20binding(s)\x20—\x20guard-gated\x20operations\x20require\x20passport\x20submissions'),d['length']===0x0&&e('prospect',b?.['participation_role']==='prospect'||b?.['manifest_role']==='neutral','none','no\x20on-chain\x20memberships\x20yet\x20—\x20explore\x20services\x20to\x20place\x20a\x20first\x20order'),d;}async function handleReason(a){const b=(a['account']??'')['toLowerCase'](),c=await readObject(a['focus'],a['network']);if(!c){const n=await fetchUserProfile(a['focus'],a['network']);if(n){const o=resolveUserRole(n,b),p=toUserWatchObject(n);if(o['reason_direction']==='objective')return{'action':'reason','result':{'object':p,'identity':o,'reason_direction':'objective','value':null,'game':null,'path':null,'objective_note':'user-address\x20profile\x20—\x20objective\x20facts\x20only\x20(identity,\x20reputation,\x20memberships,\x20activity);\x20bind\x20an\x20account\x20to\x20this\x20address\x20to\x20see\x20game/path\x20reasoning.'}};const q={'perspective':valuePerspectiveOf(o['participation_role']),'interest_analyzer':interestAnalyzerOf(o['participation_role']),'prefer':interestsOf(o['evaluation_role'])['prefer'],'avoid':interestsOf(o['evaluation_role'])['avoid'],'sensitivity':interestsOf(o['evaluation_role'])['sensitivity']},r={'power':gamePowerOf(o['participation_role']),'strategy':gameStrategyOf(o['participation_role']),'weaker_party':isWeakerParty(o['participation_role']),'stronger_party':isStrongerParty(o['participation_role'])};return{'action':'reason','result':{'object':p,'identity':o,'reason_direction':'game','value':q,'game':r,'path':{'operations':userAddressOperations(n,o),'summary':'address\x20holds\x20on-chain\x20memberships\x20—\x20'+o['participation_role']+'\x20capability\x20surface\x20listed.'}}};}return{'action':'reason','result':{'object':null,'identity':null,'reason_direction':'objective','value':null,'game':null,'path':null,'objective_note':'focus\x20object\x20unresolvable\x20—\x20no\x20reasoning\x20possible.'}};}const d=b?await resolveRole(c['type'],c['data'],b,a['network']):{'manifest_role':'neutral','latent_role':undefined,'participation_role':'neutral','evaluation_role':'neutral','conflicting':![],'reason_direction':'objective','derivation':'no\x20account\x20supplied\x20—\x20neutral\x20observer','note':'No\x20active\x20account;\x20only\x20objective\x20facts\x20are\x20narrated.'},e=toWatchObject(c);if(d['reason_direction']==='objective')return{'action':'reason','result':{'object':e,'identity':d,'reason_direction':'objective','value':null,'game':null,'path':null,'objective_note':d['participation_role']==='neutral'?'neutral\x20observer\x20—\x20no\x20on-chain\x20relationship;\x20only\x20objective\x20facts\x20are\x20narrated.':'system/observer\x20scope\x20—\x20no\x20game/path/action\x20recommendation\x20is\x20made.'}};const f=d['participation_role'],g=d['evaluation_role'],h=interestsOf(g),i={'perspective':valuePerspectiveOf(g),'interest_analyzer':interestAnalyzerOf(g),'prefer':h['prefer'],'avoid':h['avoid'],'sensitivity':h['sensitivity'],'value_proposition':valuePropositionOf(g)},j={'power':gamePowerOf(f),'strategy':gameStrategyOf(f),'weaker_party':isWeakerParty(f),'stronger_party':isStrongerParty(f)},k=await collectOperations(c,b,a['network']),l=k['filter'](s=>s['can_execute']),m={'operations':k,'summary':k['length']+'\x20operation(s)\x20enumerated;\x20'+l['length']+'\x20executable\x20right\x20now\x20as\x20\x27'+f+'\x27.'};if(c['type']==='Progress'){const s=typeof c['data']['machine']==='string'?c['data']['machine']:undefined,t=typeof c['data']['current']==='string'?c['data']['current']:'';if(s){const u=await fetchMachineNodes(s,a['network'],![]);u&&u['length']>0x0&&(m['path_reasoning']=evaluatePathReasoning({'current_node':t,'perspective':f,'machine_nodes':u}));}}return{'action':'reason','result':{'object':e,'identity':d,'reason_direction':'game','value':i,'game':j,'path':m}};}export async function handleWatchOperation(a){const b=strictParse(WatchOperationInputSchema,a);let c;switch(b['action']){case'focus':c=await handleFocus(b);break;case'expand':c=await handleExpand(b);break;case'actions':c=await handleActions(b);break;case'reason':c=await handleReason(b);break;default:throw new Error('Unknown\x20watch\x20action:\x20'+b['action']);}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
1
+ import{query_objects,query_address_profile}from'@wowok/wowok';import{strictParse}from'../../schema/index.js';import{WatchOperationInputSchema}from'../../schema/watch/index.js';import{resolveWatchRole,CORE_PERMISSION_INDEX,valuePerspectiveOf,gamePowerOf,gameStrategyOf,interestAnalyzerOf,valuePropositionOf,isWeakerParty,isStrongerParty}from'../../role/index.js';import{interestsOf}from'../../evaluation/index.js';import{evaluatePathReasoning}from'../../evaluation/path-reasoning.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{fetchPermissionContext,fetchOrderContext,fetchMachineNodes}from'../../graph/onchain/sdk-batch.js';import{SdkDataPlane,expandTopology,workflowSubgraphFromEdges}from'../../graph/onchain/index.js';import{accountCanExecuteForward,enumerateObjectOperations,isPermissionIndexType}from'../../knowledge/index.js';import{getEffectivePersona}from'../../persona/index.js';import{normalizeObjectType}from'../../playbooks/service-build/object-type.js';async function readObject(a,b){try{const c=await query_objects({'objects':[a],'network':b}),d=c?.['objects']?.[0x0];if(!d)return undefined;const e=d?.['data']??d,f=d?.['type']??d?.['data']?.['type']??'';return{'address':String(d?.['object']??a),'type':normalizeObjectType(f),'data':e};}catch{return undefined;}}function displayName(a){if(typeof a['name']==='string'&&a['name']['length']>0x0)return a['name'];return undefined;}async function fetchUserProfile(a,b){try{const c=await query_address_profile({'address':a,'network':b});if(c&&c['kind']==='user')return c;return null;}catch{return null;}}function roleHintToCommercial(a){const b=(a??'')['toLowerCase']();if(b['includes']('customer'))return'customer';if(b['includes']('collaborator'))return'collaborator';if(b['includes']('merchant')||b['includes']('supplier'))return'merchant';if(b['includes']('demander'))return'demander';if(b['includes']('arbitrator'))return'arbitrator';return'neutral';}function resolveUserRole(a,b){const c=b['length']>0x0&&b===String(a['address']??'')['toLowerCase'](),d=a?.['role_evidence']?.['role_hint'],e=c&&d?roleHintToCommercial(d):'neutral',f={'manifest_role':e,'latent_role':undefined,'participation_role':e,'evaluation_role':e,'conflicting':![],'reason_direction':e==='neutral'?'objective':'game','derivation':c?'user-address\x20profile:\x20role_hint=\x22'+(d??'none')+'\x22\x20(order/contact/permission\x20memberships\x20+\x20reverse\x20bindings)':'user-address\x20profile\x20viewed\x20without\x20identity\x20binding\x20('+(b?'observer':'no\x20account')+')','note':c?'profile\x20of\x20this\x20address\x20itself\x20—\x20identity\x20derived\x20from\x20on-chain\x20memberships\x20and\x20reverse\x20bindings.':'address\x20profile\x20—\x20objective\x20facts\x20only;\x20supply\x20an\x20account\x20to\x20see\x20identity\x20relations.'};return f;}function toUserWatchObject(a){const b=a,c=b?.['identity'],d=b?.['reputation'],e=b?.['order_membership'],f=b?.['contact_membership'],g=b?.['permission_membership'],h=b?.['reverse_core'],i=b?.['reverse_tx'],j=(k,l)=>Array['isArray'](k)?k['length']:0x0;return{'address':b?.['address'],'object_type':'User','name':c?.['description']??undefined,'fields':{'kind':'user','identity':c?{'description':c['description']??null,'referrer':c['referrer']??null,'resource':c['resource']??null,'time':c['time']??null}:null,'reputation':d?{'like':Array['isArray'](d['votes'])?d['votes']['filter'](k=>k?.['like'])['length']:0x0,'dislike':Array['isArray'](d['votes'])?d['votes']['filter'](k=>k?.['dislike'])['length']:0x0,'favor':Array['isArray'](d['votes'])?d['votes']['filter'](k=>k?.['favor'])['length']:0x0,'voters':j(d?.['votes'],'v')}:null,'orders':e?{'owner':j(e?.['items']?.['filter'](k=>(k?.['role']&0x1)!==0x0),'o'),'agent':j(e?.['items']?.['filter'](k=>(k?.['role']&0x2)!==0x0),'o'),'total':j(e?.['items'],'o')}:null,'contacts':j(f?.['items'],'c'),'permissions':g?{'count':j(g?.['items'],'p'),'roles':(g?.['items']??[])['map'](k=>({'role':k?.['role']??null,'permission':k?.['permission']??null}))}:null,'reverse_bindings':{'core':j(h?.['items'],'c'),'tx':j(i?.['items'],'t'),'total':j(h?.['items'],'c')+j(i?.['items'],'t')},'activity':b?.['activity']??null,'role_evidence':b?.['role_evidence']??null}};}function buildUserRelations(a){const b=a,c=[],d=(e,f,g,h)=>{typeof f==='string'&&f['length']>0x0&&c['push']({'relation':e,'target':f,'target_type':g,'note':h});};for(const e of b?.['order_membership']?.['items']??[]){const f=(e?.['role']??0x0)&0x1?'owner':(e?.['role']??0x0)&0x2?'agent':'member';d('order',e?.['order'],'Order','member\x20as\x20'+f);}for(const g of b?.['contact_membership']?.['items']??[]){d('contact',g?.['contact'],'Contact','member');}for(const h of b?.['permission_membership']?.['items']??[]){const i=h?.['role']===0x1?'owner':h?.['role']===0x2?'admin':'entity';d('permission',h?.['permission'],'Permission','holds\x20role\x20'+i);}for(const j of b?.['reverse_core']?.['items']??[]){d('bound_by',j?.['who'],'Object','core\x20reverse\x20binding\x20(business\x20structure)');}for(const k of b?.['reverse_tx']?.['items']??[]){d('bound_by',k?.['who'],'Object','tx\x20reverse\x20binding\x20(recent\x20activity)');}for(const l of b?.['reputation']?.['votes']??[]){d('reputation',l?.['who'],'Account','voted');}return c;}async function assembleRoleInput(a,b,c,d){const e=c['toLowerCase'](),f={'account':e},g=new Set();switch(a){case'Order':{const h=b['builder'];if(typeof h==='string'&&h['length']>0x0)f['order_holder']=h;break;}case'Service':case'Demand':case'Arbitration':{const i=b['permission'];if(typeof i==='string'&&i['length']>0x0){const j=await fetchPermissionContext(i,d,![]);if(j){const k=await readObject(i,d),l=typeof k?.['data']?.['builder']==='string'?k['data']['builder']:undefined;if(j['admin']['has'](e)||l&&l['toLowerCase']()===e){const n=a==='Service'?CORE_PERMISSION_INDEX['service']:a==='Demand'?CORE_PERMISSION_INDEX['demand']:CORE_PERMISSION_INDEX['arbitration'];g['add'](n);}const m=j['table']['get'](e);if(m){for(const o of m)g['add'](o);}}}break;}case'Progress':{const q=b['namedOperator'];if(Array['isArray'](q)){const r=q['filter'](s=>Array['isArray'](s?.['operators'])&&s['operators']['some'](t=>String(t)['toLowerCase']()===e))['map'](s=>String(s?.['name']??''));if(r['length']>0x0)f['named_operator_names']=r;}break;}default:break;}if(g['size']>0x0)f['held_permission_indexes']=Array['from'](g);return f;}async function resolveRole(a,b,c,d){const e=await assembleRoleInput(a,b,c,d);let f;try{const g=await getEffectivePersona(c);f=g?.['role'];}catch{f=undefined;}return resolveWatchRole({'derivation':e,'latent_role':f});}function toWatchObject(a){if(!a)return null;const b=displayName(a['data']),c={};for(const [d,e]of Object['entries'](a['data'])){if(Array['isArray'](e)&&e['length']>0x14)continue;if(e&&typeof e==='object'&&!Array['isArray'](e))continue;c[d]=e;}return{'address':a['address'],'object_type':a['type'],'name':b,'fields':c};}async function buildRelations(b,c){const d=[],e=(f,g,h,i)=>{typeof g==='string'&&g['length']>0x0&&d['push']({'relation':f,'target':g,'target_type':h,'note':i});};switch(b){case'Service':{e('machine',c['machine'],'Machine','bound\x20workflow\x20(frozen\x20once\x20published)'),e('permission',c['permission'],'Permission','governance\x20owner');for(const f of Array['isArray'](c['arbitrations'])?c['arbitrations']:[])e('arbitration',f,'Arbitration');for(const g of Array['isArray'](c['rewards'])?c['rewards']:[])e('reward',g,'Reward');for(const h of Array['isArray'](c['repositories'])?c['repositories']:[])e('repository',h,'Repository');e('buy_guard',c['buy_guard'],'Guard','purchase\x20validation');break;}case'Order':{e('service',c['service'],'Service'),e('progress',c['progress'],'Progress'),e('machine',c['machine'],'Machine'),e('allocation',c['allocation'],'Allocation');break;}case'Demand':{e('permission',c['permission'],'Permission','governance\x20owner');break;}case'Arbitration':{e('permission',c['permission'],'Permission','governance\x20owner');break;}case'Progress':{e('machine',c['machine'],'Machine'),e('task',c['task'],'Order','bound\x20order');break;}default:break;}return d;}async function handleFocus(a){const b=(a['account']??'')['toLowerCase'](),c=await readObject(a['focus'],a['network']);if(!c){const e=await fetchUserProfile(a['focus'],a['network']);if(e)return{'action':'focus','result':{'object':toUserWatchObject(e),'role':resolveUserRole(e,b)}};}let d;return c&&b?d=await resolveRole(c['type'],c['data'],b,a['network']):d={'manifest_role':'neutral','latent_role':undefined,'participation_role':'neutral','evaluation_role':'neutral','conflicting':![],'reason_direction':'objective','derivation':'no\x20account\x20supplied\x20—\x20neutral\x20observer','note':'No\x20active\x20account;\x20only\x20objective\x20facts\x20are\x20narrated.'},{'action':'focus','result':{'object':toWatchObject(c),'role':d}};}async function handleExpand(a){const b=await readObject(a['focus'],a['network']);if(!b){const e=await fetchUserProfile(a['focus'],a['network']);if(e){const f=buildUserRelations(e);if(a['relation']){const g=f['filter'](h=>h['relation']===a['relation']);return{'action':'expand','result':{'object':toUserWatchObject(e),'relations':g,'supply_chain':undefined}};}return{'action':'expand','result':{'object':toUserWatchObject(e),'relations':f,'supply_chain':undefined}};}return{'action':'expand','result':{'object':null,'relations':[],'supply_chain':undefined}};}let c=await buildRelations(b['type'],b['data']);a['relation']&&(c=c['filter'](h=>h['relation']===a['relation']));let d;if(b['type']==='Service')try{d=await resolveSupplyChainGraph(b['address'],a['network']);}catch{d=undefined;}return{'action':'expand','result':{'object':toWatchObject(b),'relations':c,'supply_chain':d}};}async function readClockNow(a){try{const b=await query_objects({'objects':['0x6'],'network':a}),c=b?.['objects']?.[0x0],d=c?.['data']??c,e=Number(d?.['timestamp_ms']);return Number['isFinite'](e)?e:null;}catch{return null;}}async function collectOperations(a,b,c){const d=[];if(a['type']==='Progress'){const e=typeof a['data']['machine']==='string'?a['data']['machine']:undefined,f=(Array['isArray'](a['data']['namedOperator'])?a['data']['namedOperator']:[])['map'](j=>({'name':String(j?.['name']??''),'operators':(j?.['operators']??[])['map'](k=>String(k))}));let g,h,i;if(e){h=await fetchMachineNodes(e,c,![]),i=typeof a['data']['task']==='string'?await fetchOrderContext(a['data']['task'],c):undefined;if(h&&h['length']>0x0)try{const j=await query_objects({'objects':[e],'network':c}),k=j?.['objects']?.[0x0],l=(k?.['data']??k)?.['permission'];if(typeof l==='string')g=await fetchPermissionContext(l,c,![]);}catch{g=undefined;}}for(const m of h??[]){for(const n of m['pairs']??[]){for(const o of n['forwards']??[]){const p=accountCanExecuteForward(o,b,f,i,g),q=o['namedOperator']!==undefined&&o['namedOperator']!==null?o['namedOperator']===''?'order_holder':'named_operator':'permission_index';d['push']({'operation':'progress_next:'+o['name'],'can_execute':p,'path':q,'note':p?undefined:'guard/permission\x20not\x20satisfied\x20for\x20this\x20account'});}}}d['push'](...enumerateObjectOperations('Progress',a['data'],b,g));}else{let r;if(isPermissionIndexType(a['type'])){const t=a['data']['permission'];typeof t==='string'&&t['length']>0x0&&(r=await fetchPermissionContext(t,c,![]));}const s=a['type']==='Service'?await readClockNow(c):null;d['push'](...enumerateObjectOperations(a['type'],a['data'],b,r,s));}return d;}async function handleActions(a){const b=(a['account']??'')['toLowerCase'](),c=await readObject(a['focus'],a['network']);if(!c){const f=await fetchUserProfile(a['focus'],a['network']);if(f){const g=resolveUserRole(f,b),h=userAddressOperations(f,g);return{'action':'actions','result':{'object':toUserWatchObject(f),'role':g,'operations':h}};}return{'action':'actions','result':{'object':null,'role':null,'operations':[]}};}const d=b?await resolveRole(c['type'],c['data'],b,a['network']):null,e=b?await collectOperations(c,b,a['network']):[];return{'action':'actions','result':{'object':toWatchObject(c),'role':d,'operations':e}};}function userAddressOperations(a,b){const c=a,d=[],e=(i,j,k,l)=>d['push']({'operation':i,'can_execute':j,'path':k,'note':l}),f=Array['isArray'](c?.['permission_membership']?.['items'])?c['permission_membership']['items']['length']:0x0;f>0x0&&e('manage_permission_objects',!![],'permission_index',f+'\x20permission\x20membership(s)\x20—\x20operate\x20the\x20Service/Machine/Treasury/etc.\x20governed\x20by\x20them');const g=Array['isArray'](c?.['order_membership']?.['items'])?c['order_membership']['items']['length']:0x0;if(g>0x0){const i=c['order_membership']['items']['filter'](k=>(k?.['role']??0x0)&0x1)['length'],j=c['order_membership']['items']['filter'](k=>(k?.['role']??0x0)&0x2)['length'];if(i>0x0)e('advance_progress',!![],'order_holder',i+'\x20order(s)\x20as\x20owner\x20—\x20advance/claim');if(j>0x0)e('advance_progress',!![],'order_holder',j+'\x20order(s)\x20as\x20agent');}const h=Array['isArray'](c?.['reverse_tx']?.['items'])?c['reverse_tx']['items']['length']:0x0;return h>0x0&&e('submit_guard',![],'guard_submission',h+'\x20recent\x20tx\x20binding(s)\x20—\x20guard-gated\x20operations\x20require\x20passport\x20submissions'),d['length']===0x0&&e('prospect',b?.['participation_role']==='prospect'||b?.['manifest_role']==='neutral','none','no\x20on-chain\x20memberships\x20yet\x20—\x20explore\x20services\x20to\x20place\x20a\x20first\x20order'),d;}async function handleReason(a){const b=(a['account']??'')['toLowerCase'](),c=await readObject(a['focus'],a['network']);if(!c){const n=await fetchUserProfile(a['focus'],a['network']);if(n){const o=resolveUserRole(n,b),p=toUserWatchObject(n);if(o['reason_direction']==='objective')return{'action':'reason','result':{'object':p,'identity':o,'reason_direction':'objective','value':null,'game':null,'path':null,'objective_note':'user-address\x20profile\x20—\x20objective\x20facts\x20only\x20(identity,\x20reputation,\x20memberships,\x20activity);\x20bind\x20an\x20account\x20to\x20this\x20address\x20to\x20see\x20game/path\x20reasoning.'}};const q={'perspective':valuePerspectiveOf(o['participation_role']),'interest_analyzer':interestAnalyzerOf(o['participation_role']),'prefer':interestsOf(o['evaluation_role'])['prefer'],'avoid':interestsOf(o['evaluation_role'])['avoid'],'sensitivity':interestsOf(o['evaluation_role'])['sensitivity']},r={'power':gamePowerOf(o['participation_role']),'strategy':gameStrategyOf(o['participation_role']),'weaker_party':isWeakerParty(o['participation_role']),'stronger_party':isStrongerParty(o['participation_role'])};return{'action':'reason','result':{'object':p,'identity':o,'reason_direction':'game','value':q,'game':r,'path':{'operations':userAddressOperations(n,o),'summary':'address\x20holds\x20on-chain\x20memberships\x20—\x20'+o['participation_role']+'\x20capability\x20surface\x20listed.'}}};}return{'action':'reason','result':{'object':null,'identity':null,'reason_direction':'objective','value':null,'game':null,'path':null,'objective_note':'focus\x20object\x20unresolvable\x20—\x20no\x20reasoning\x20possible.'}};}const d=b?await resolveRole(c['type'],c['data'],b,a['network']):{'manifest_role':'neutral','latent_role':undefined,'participation_role':'neutral','evaluation_role':'neutral','conflicting':![],'reason_direction':'objective','derivation':'no\x20account\x20supplied\x20—\x20neutral\x20observer','note':'No\x20active\x20account;\x20only\x20objective\x20facts\x20are\x20narrated.'},e=toWatchObject(c);if(d['reason_direction']==='objective')return{'action':'reason','result':{'object':e,'identity':d,'reason_direction':'objective','value':null,'game':null,'path':null,'objective_note':d['participation_role']==='neutral'?'neutral\x20observer\x20—\x20no\x20on-chain\x20relationship;\x20only\x20objective\x20facts\x20are\x20narrated.':'system/observer\x20scope\x20—\x20no\x20game/path/action\x20recommendation\x20is\x20made.'}};const f=d['participation_role'],g=d['evaluation_role'],h=interestsOf(g),i={'perspective':valuePerspectiveOf(g),'interest_analyzer':interestAnalyzerOf(g),'prefer':h['prefer'],'avoid':h['avoid'],'sensitivity':h['sensitivity'],'value_proposition':valuePropositionOf(g)},j={'power':gamePowerOf(f),'strategy':gameStrategyOf(f),'weaker_party':isWeakerParty(f),'stronger_party':isStrongerParty(f)},k=await collectOperations(c,b,a['network']),l=k['filter'](s=>s['can_execute']),m={'operations':k,'summary':k['length']+'\x20operation(s)\x20enumerated;\x20'+l['length']+'\x20executable\x20right\x20now\x20as\x20\x27'+f+'\x27.'};if(c['type']==='Progress'){const s=typeof c['data']['machine']==='string'?c['data']['machine']:undefined,t=typeof c['data']['current']==='string'?c['data']['current']:'';if(s)try{const u=a['network'],v=new SdkDataPlane(u),w=await expandTopology(v,{'network':u,'seed':c['address'],'edges':{'schemas':['progress.machine'],'tableEdges':['machine.node']},'budget':{'maxDepth':0x3,'maxNodes':0x190,'maxFanoutPerNode':0x64,'maxRpcs':0x14}}),x=workflowSubgraphFromEdges(w['edges'],s);x['transitions']['length']>0x0&&(m['path_reasoning']=evaluatePathReasoning({'current_node':t,'perspective':f,'workflow':x}));}catch{}}return{'action':'reason','result':{'object':e,'identity':d,'reason_direction':'game','value':i,'game':j,'path':m}};}export async function handleWatchOperation(a){const b=strictParse(WatchOperationInputSchema,a);let c;switch(b['action']){case'focus':c=await handleFocus(b);break;case'expand':c=await handleExpand(b);break;case'actions':c=await handleActions(b);break;case'reason':c=await handleReason(b);break;default:throw new Error('Unknown\x20watch\x20action:\x20'+b['action']);}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
@@ -1 +1 @@
1
- import{query_events}from'@wowok/wowok';import{Cache}from'@wowok/wowok/w/local/cache';import{strictParse,WorkflowOperationInputSchema}from'../../schema/index.js';import{fetchMachineNodes,fetchPermissionContext,fetchOrdersOfUser,resolveLocalNamesFor,listLocalAccounts,enumerateActionableForwards,batchQueryObjectsByIds,batchReadU64KeyedFields}from'../../knowledge/index.js';import{handleOnchainOperations}from'./onchain.js';async function mapWithConcurrency(a,b,c){const d=new Array(a['length']);let e=0x0;const f=Array['from']({'length':Math['max'](0x1,Math['min'](b,a['length']))},async()=>{while(e<a['length']){const g=e++;try{d[g]=await c(a[g]);}catch{}}});return await Promise['all'](f),d;}function progressRelatedToLocalAccount(a,b,c,d){const e=new Set(d['map'](f=>f['address']['toLowerCase']()));if(b?.['builder']&&e['has'](String(b['builder'])['toLowerCase']()))return!![];if(b?.['agent']&&[...b['agent']]['some'](f=>e['has'](f)))return!![];for(const f of c){if(f['operators']['some'](g=>e['has'](String(g)['toLowerCase']())))return!![];}for(const g of Array['isArray'](a['session'])?a['session']:[]){for(const h of Array['isArray'](g?.['forwards'])?g['forwards']:[]){if(h?.['who']&&e['has'](String(h['who'])['toLowerCase']()))return!![];}}return![];}function buildWorkflowTaskFromData(a,b,c,d){const e=b['current']??'',f=b['machine'],g=b['task']??null,h=(Array['isArray'](b['namedOperator'])?b['namedOperator']:[])['map'](s=>({'name':String(s?.['name']??''),'operators':(s?.['operators']??[])['map'](t=>String(t))}));if(!f)return undefined;const i=String(f)['toLowerCase'](),j=c['machineNodes']['get'](i)??[],k=c['permAddrByMachine']['get'](i),l=k?c['permCtxByPermission']['get'](String(k)['toLowerCase']()):undefined,m=g?c['orderCtxByOrder']['get'](String(g)['toLowerCase']()):undefined,n=g?c['serviceByOrder']['get'](String(g)['toLowerCase']()):undefined,o=new Map(d['map'](s=>[s['address']['toLowerCase'](),s['name']])),p=enumerateActionableForwards(b,j,d['map'](s=>s['address']),h,m,l)['map'](s=>({'next_node':s['next_node'],'forward':s['forward'],'weight':s['weight'],'threshold':s['threshold'],'guard':s['guard'],'guard_submissions':s['guard']?c['guardSubsByAddr']['get'](String(s['guard'])['toLowerCase']()):undefined,'operator_kind':s['operator_kind'],'permission_index':s['permission_index'],'named_operator':s['named_operator'],'executable_accounts':s['executable_accounts']['map'](t=>({'address':t,'name':o['get'](t)}))})),q=p['some'](s=>s['executable_accounts']['length']>0x0),r=progressRelatedToLocalAccount(b,m,h,d);if(!q&&!r)return undefined;return{'progress':a,'progress_name':c['localNames']['get'](a['toLowerCase']()),'current':e,'machine':f,'machine_name':c['localNames']['get'](String(f)['toLowerCase']()),'task':g,'task_name':g?c['localNames']['get'](String(g)['toLowerCase']()):undefined,'service':n,'service_name':n?c['localNames']['get'](String(n)['toLowerCase']()):undefined,'context_repositories':(Array['isArray'](b['context_repositories'])?b['context_repositories']:[])['filter'](s=>typeof s==='string'&&s['startsWith']('0x'))['map'](s=>({'address':s,'name':c['localNames']['get'](s['toLowerCase']())})),'options':p,'terminal':p['length']===0x0,'actionable':q,'history_count':Number(b['history_count']??0x0),'current_time':Number(b['current_time']??0x0)||undefined};}async function handleList(a){const b=a['limit']??0x32,c=a['network'],e=a['no_cache'],f=await listLocalAccounts();if(f['length']===0x0){const F={'action':'list','tasks':[],'note':'No\x20local\x20accounts\x20found\x20—\x20create\x20or\x20import\x20an\x20account\x20first.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':F})}],'structuredContent':{'result':F}};}const g=await query_events({'type':'ProgressEvent','order':'descending','limit':b*0x3,'no_cache':e,'network':c}),h=new Set((g?.['data']??[])['map'](G=>G?.['progress'])['filter'](G=>typeof G==='string'&&G['startsWith']('0x'))['map'](G=>G['toLowerCase']()));await mapWithConcurrency(f,0x4,async G=>{const H=await fetchOrdersOfUser(G['address'],c,e);for(const I of H??[]){const J=I?.['order']?.['progress'];if(typeof J==='string'&&J['startsWith']('0x'))h['add'](J['toLowerCase']());}});if(h['size']===0x0){const G={'action':'list','tasks':[]};return{'content':[{'type':'text','text':JSON['stringify']({'result':G})}],'structuredContent':{'result':G}};}const i=[...h],j=await batchQueryObjectsByIds(i,c,e),k=new Map();for(const H of j??[]){const I=H?.['data']??H;H?.['type']==='Progress'&&typeof I?.['machine']==='string'&&k['set'](String(H?.['query_name']??H?.['object']??'')['toLowerCase'](),I);}const l=[...new Set([...k['values']()]['map'](J=>J['machine'])['filter'](J=>typeof J==='string'))],m=[...new Set([...k['values']()]['map'](J=>J['task'])['filter'](J=>typeof J==='string'&&J['startsWith']('0x')))],n=await batchQueryObjectsByIds(l,c,e),p=new Map(),q=new Set();for(const J of n??[]){const K=J?.['data']??J,L=String(J?.['query_name']??J?.['object']??'')['toLowerCase'](),M=typeof K?.['permission']==='string'?K['permission']:undefined;p['set'](L,M);if(M)q['add'](String(M)['toLowerCase']());}const r=new Map();await mapWithConcurrency(l,0x8,async N=>{r['set'](String(N)['toLowerCase'](),await fetchMachineNodes(N,c,![]));});const s=[...new Set([...r['values']()]['flatMap'](N=>N['flatMap'](O=>O['pairs']['flatMap'](P=>P['forwards']['map'](Q=>Q['guard'])['filter'](Q=>typeof Q==='string'&&Q['startsWith']('0x'))))))],t=new Map();if(s['length']>0x0){const N=await batchQueryObjectsByIds(s,c,e);for(const O of N??[]){const P=O?.['data']??O;if(O?.['type']==='Guard'&&Array['isArray'](P?.['table'])){const Q=String(O?.['query_name']??O?.['object']??'')['toLowerCase'](),R=P['table']['filter'](S=>S?.['b_submission'])['map'](S=>({'identifier':Number(S?.['identifier']??0x0),'name':String(S?.['name']??'field\x20'+S?.['identifier']),'value_type':String(S?.['value_type']??''),'object_type':S?.['object_type']?String(S['object_type']):undefined}));if(R['length']>0x0)t['set'](Q,R);}}}const u=new Map();await mapWithConcurrency([...q],0x8,async S=>{u['set'](S,await fetchPermissionContext(S,c,e));});const v=new Map(),w=new Map(),x=await batchQueryObjectsByIds(m,c,e);for(const S of x??[]){const T=S?.['data']??S;if(S?.['type']==='Order'){const U=String(S?.['query_name']??S?.['object']??'')['toLowerCase']();v['set'](U,{'builder':String(T?.['builder']??T?.['owner']??''),'agent':new Set((T?.['agent']??[])['map'](V=>String(V)['toLowerCase']()))});if(typeof T?.['service']==='string')w['set'](U,T['service']);}}const y=[...k['values']()]['flatMap'](V=>Array['isArray'](V?.['context_repositories'])?V['context_repositories']:[]),z=[...i,...l,...m,...[...w['values']()]['filter'](V=>typeof V==='string'),...y['filter'](V=>typeof V==='string')],{byAddress:A}=await resolveLocalNamesFor(z),B={'machineNodes':r,'permAddrByMachine':p,'permCtxByPermission':u,'orderCtxByOrder':v,'serviceByOrder':w,'localNames':A,'guardSubsByAddr':t},C=await mapWithConcurrency(i,0x8,async V=>{try{const W=k['get'](String(V)['toLowerCase']());return W?buildWorkflowTaskFromData(V,W,B,f):undefined;}catch{return undefined;}}),D=C['filter'](V=>V!==undefined)['sort']((V,W)=>Number(W['actionable'])-Number(V['actionable'])),E={'action':'list','tasks':D['slice'](0x0,b)};return{'content':[{'type':'text','text':JSON['stringify']({'result':E})}],'structuredContent':{'result':E}};}async function handleTask(a){const b=a['network'],c=a['no_cache'],e=a['progress'],f=await listLocalAccounts(),g=await batchQueryObjectsByIds([e],b,c),h=(g??[])['find'](y=>y?.['type']==='Progress'),i=h?h?.['data']??h:undefined;if(!h||!i||typeof i?.['machine']!=='string'){const y={'action':'task','note':'Progress\x20'+e+'\x20not\x20found\x20on\x20'+(b??'the\x20current\x20network')+'.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':y})}],'structuredContent':{'result':y}};}const j=i['machine'],k=String(j)['toLowerCase'](),l=await batchQueryObjectsByIds([j],b,c),m=(l??[])['find'](z=>z?.['type']==='Machine'),n=m?m?.['data']??m:undefined,p=n&&typeof n?.['permission']==='string'?n['permission']:undefined,q=await fetchMachineNodes(j,b,![]),r={'machineNodes':new Map([[k,q]]),'permAddrByMachine':new Map([[k,p]]),'permCtxByPermission':new Map(),'orderCtxByOrder':new Map(),'serviceByOrder':new Map(),'localNames':new Map(),'guardSubsByAddr':new Map()},s=[...new Set(q['flatMap'](z=>z['pairs']['flatMap'](A=>A['forwards']['map'](B=>B['guard'])['filter'](B=>typeof B==='string'&&B['startsWith']('0x')))))];if(s['length']>0x0){const z=await batchQueryObjectsByIds(s,b,c);for(const A of z??[]){const B=A?.['data']??A;if(A?.['type']==='Guard'&&Array['isArray'](B?.['table'])){const C=String(A?.['query_name']??A?.['object']??'')['toLowerCase'](),D=B['table']['filter'](E=>E?.['b_submission'])['map'](E=>({'identifier':Number(E?.['identifier']??0x0),'name':String(E?.['name']??'field\x20'+E?.['identifier']),'value_type':String(E?.['value_type']??''),'object_type':E?.['object_type']?String(E['object_type']):undefined}));if(D['length']>0x0)r['guardSubsByAddr']['set'](C,D);}}}p&&r['permCtxByPermission']['set'](String(p)['toLowerCase'](),await fetchPermissionContext(p,b,c));if(typeof i?.['task']==='string'&&i['task']['startsWith']('0x')){const E=await batchQueryObjectsByIds([i['task']],b,c);for(const F of E??[]){if(F?.['type']==='Order'){const G=F?.['data']??F,H=String(F?.['query_name']??F?.['object']??'')['toLowerCase']();r['orderCtxByOrder']['set'](H,{'builder':String(G?.['builder']??G?.['owner']??''),'agent':new Set((G?.['agent']??[])['map'](I=>String(I)['toLowerCase']()))}),typeof G?.['service']==='string'&&r['serviceByOrder']['set'](H,G['service']);}}}const t=Array['isArray'](i?.['context_repositories'])?i['context_repositories']:[],u=[String(h?.['object']??e),i?.['task'],j,...t]['filter'](I=>typeof I==='string'&&I['startsWith']('0x')),{byAddress:v}=await resolveLocalNamesFor(u);r['localNames']=v;const w=buildWorkflowTaskFromData(String(h?.['query_name']??h?.['object']??e),i,r,f),x=w?{'action':'task','tasks':[w]}:{'action':'task','note':'Progress\x20snapshot\x20could\x20not\x20be\x20built.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':x})}],'structuredContent':{'result':x}};}const WORKFLOW_HISTORY_PREFIX='__workflow_history',WORKFLOW_HISTORY_RETENTION_MS=0x5a*0x18*0xe10*0x3e8;async function readHistoryStore(a){const b=await Cache['read']([WORKFLOW_HISTORY_PREFIX,a],async()=>({'expire':'INFINITE','data':{}}));return b?.['data']??{};}async function writeHistoryStore(a,b){await Cache['read']([WORKFLOW_HISTORY_PREFIX,a],async()=>({'expire':'INFINITE','data':b}),!![]);}async function handleHistory(a){const b=String(a['network']??'testnet'),c=a['limit']??0x32,d=a['prune']??!![],g=a['progress'],h=await batchQueryObjectsByIds([g],b,!![]),i=(h??[])[0x0],j=i?.['object']??(typeof g==='string'&&g['startsWith']('0x')?g:undefined),k=i?.['data']??i;if(!j||i?.['type']!=='Progress'){const E={'action':'history','note':'Not\x20a\x20Progress\x20object\x20or\x20not\x20found.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':E})}],'structuredContent':{'result':E}};}const l=Number(k?.['history_count']??0x0),m=await readHistoryStore(b),n=m[j]??{'cursor':-0x1,'lastActivity':0x0,'records':[]},o=[],p=n['cursor']+0x1;if(p<l){const F=[];for(let H=p;H<l;H++)F['push'](H);const G=await batchReadU64KeyedFields(j,F,b,![]);for(let I=p;I<l;I++){const J=G['get'](String(I));if(!J)break;o['push']({'index':I,'node':J['node'],'next_node':J['next_node'],'time':J['time'],'session':J['session']});}}const q=o['length']>0x0?p+o['length']-0x1:n['cursor'],t=[...n['records'],...o],u=o['length']>0x0?Math['max'](n['lastActivity'],...o['map'](K=>K['time'])):n['lastActivity'];m[j]={'cursor':q,'lastActivity':u,'records':t};let v=0x0;if(d){const K=Date['now']()-WORKFLOW_HISTORY_RETENTION_MS;for(const L of Object['keys'](m)){const M=m[L];M['lastActivity']>0x0&&M['lastActivity']<K&&(delete m[L],v++);}}await writeHistoryStore(b,m);const w=typeof k?.['machine']==='string'?k['machine']:undefined,x=new Map();if(w)try{const N=await fetchMachineNodes(w,b,![]);for(const O of N??[]){for(const P of O?.['pairs']??[]){for(const Q of P?.['forwards']??[]){if(Q?.['name'])x['set'](O['name']+'|'+Q['name'],Number(Q?.['weight']??0x0));}}}}catch{}const y=[],z=R=>{for(const S of R??[]){const T=String(S?.['value_type']??'')['toLowerCase'](),U=S?.['value'];if(!T['includes']('address'))continue;if(Array['isArray'](U)){for(const V of U)if(typeof V==='string'&&V['startsWith']('0x'))y['push'](V);}else typeof U==='string'&&U['startsWith']('0x')&&y['push'](U);}};for(const R of t){for(const S of Array['isArray'](R?.['session'])?R['session']:[]){for(const T of Array['isArray'](S?.['forwards'])?S['forwards']:[]){if(T?.['who'])y['push'](String(T['who']));z(T?.['retained_submission']);}}}const {byAddress:A}=await resolveLocalNamesFor([...new Set(y)]),B=U=>{const V=String(U?.['value_type']??'')['toLowerCase'](),W=U?.['value'];if(!V['includes']('address'))return U;const X=Array['isArray'](W)?typeof W[0x0]==='string'?W[0x0]:undefined:typeof W==='string'?W:undefined;return{...U,'display_name':X?A['get'](String(X)['toLowerCase']()):undefined};},C=t['map'](U=>({...U,'session':(Array['isArray'](U?.['session'])?U['session']:[])['map'](V=>({...V,'forwards':(Array['isArray'](V?.['forwards'])?V['forwards']:[])['map'](W=>({...W,'weight':x['get'](V?.['next_node']+'|'+W?.['forward'])??undefined,'who_name':W?.['who']?A['get'](String(W['who'])['toLowerCase']()):undefined,'retained_submission':(Array['isArray'](W?.['retained_submission'])?W['retained_submission']:[])['map'](B)}))}))})),D={'action':'history','history':{'progress':j,'current':k?.['current'],'records':[...C]['sort']((U,V)=>V['index']-U['index'])['slice'](0x0,c),'synced':o['length'],'cursor':q,'pruned':v}};return{'content':[{'type':'text','text':JSON['stringify']({'result':D})}],'structuredContent':{'result':D}};}async function handleOperate(a){const b={'operation_type':'progress','data':{'object':a['progress'],'operate':a['operate']},'env':{'account':a['account']??'','network':a['network'],'no_cache':a['no_cache']}};return a['submission']!==undefined&&(b['submission']=a['submission']),await handleOnchainOperations(b);}export async function handleWorkflowOperation(a){const b=strictParse(WorkflowOperationInputSchema,a,'workflow_operation\x20input');if(b['action']==='list')return await handleList(b);if(b['action']==='task')return await handleTask(b);if(b['action']==='history')return await handleHistory(b);return await handleOperate(b);}
1
+ import{query_events}from'@wowok/wowok';import{Cache}from'@wowok/wowok/w/local/cache';import{strictParse,WorkflowOperationInputSchema}from'../../schema/index.js';import{fetchMachineNodes,fetchPermissionContext,batchFetchEntityOrder,batchQueryObjectsByIds,batchReadU64KeyedFields}from'../../graph/onchain/sdk-batch.js';import{resolveLocalNamesFor,listLocalAccounts,enumerateActionableForwards}from'../../knowledge/index.js';import{handleOnchainOperations}from'./onchain.js';import{resolveNetwork}from'./network.js';async function mapWithConcurrency(a,b,c){const d=new Array(a['length']);let e=0x0;const f=Array['from']({'length':Math['max'](0x1,Math['min'](b,a['length']))},async()=>{while(e<a['length']){const g=e++;try{d[g]=await c(a[g]);}catch{}}});return await Promise['all'](f),d;}function progressRelatedToLocalAccount(a,b,c,d){const e=new Set(d['map'](f=>f['address']['toLowerCase']()));if(b?.['builder']&&e['has'](String(b['builder'])['toLowerCase']()))return!![];if(b?.['agent']&&[...b['agent']]['some'](f=>e['has'](f)))return!![];for(const f of c){if(f['operators']['some'](g=>e['has'](String(g)['toLowerCase']())))return!![];}for(const g of Array['isArray'](a['session'])?a['session']:[]){for(const h of Array['isArray'](g?.['forwards'])?g['forwards']:[]){if(h?.['who']&&e['has'](String(h['who'])['toLowerCase']()))return!![];}}return![];}function buildWorkflowTaskFromData(a,b,c,d){const e=b['current']??'',f=b['machine'],g=b['task']??null,h=(Array['isArray'](b['namedOperator'])?b['namedOperator']:[])['map'](s=>({'name':String(s?.['name']??''),'operators':(s?.['operators']??[])['map'](t=>String(t))}));if(!f)return undefined;const i=String(f)['toLowerCase'](),j=c['machineNodes']['get'](i)??[],k=c['permAddrByMachine']['get'](i),l=k?c['permCtxByPermission']['get'](String(k)['toLowerCase']()):undefined,m=g?c['orderCtxByOrder']['get'](String(g)['toLowerCase']()):undefined,n=g?c['serviceByOrder']['get'](String(g)['toLowerCase']()):undefined,o=new Map(d['map'](s=>[s['address']['toLowerCase'](),s['name']])),p=enumerateActionableForwards(b,j,d['map'](s=>s['address']),h,m,l)['map'](s=>({'next_node':s['next_node'],'forward':s['forward'],'weight':s['weight'],'threshold':s['threshold'],'guard':s['guard'],'guard_submissions':s['guard']?c['guardSubsByAddr']['get'](String(s['guard'])['toLowerCase']()):undefined,'operator_kind':s['operator_kind'],'permission_index':s['permission_index'],'named_operator':s['named_operator'],'executable_accounts':s['executable_accounts']['map'](t=>({'address':t,'name':o['get'](t)}))})),q=p['some'](s=>s['executable_accounts']['length']>0x0),r=progressRelatedToLocalAccount(b,m,h,d);if(!q&&!r)return undefined;return{'progress':a,'progress_name':c['localNames']['get'](a['toLowerCase']()),'current':e,'machine':f,'machine_name':c['localNames']['get'](String(f)['toLowerCase']()),'task':g,'task_name':g?c['localNames']['get'](String(g)['toLowerCase']()):undefined,'service':n,'service_name':n?c['localNames']['get'](String(n)['toLowerCase']()):undefined,'context_repositories':(Array['isArray'](b['context_repositories'])?b['context_repositories']:[])['filter'](s=>typeof s==='string'&&s['startsWith']('0x'))['map'](s=>({'address':s,'name':c['localNames']['get'](s['toLowerCase']())})),'options':p,'terminal':p['length']===0x0,'actionable':q,'history_count':Number(b['history_count']??0x0),'current_time':Number(b['current_time']??0x0)||undefined};}async function handleList(a){const b=a['limit']??0x32,c=a['network'],e=a['no_cache'],f=await listLocalAccounts();if(f['length']===0x0){const J={'action':'list','tasks':[],'note':'No\x20local\x20accounts\x20found\x20—\x20create\x20or\x20import\x20an\x20account\x20first.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':J})}],'structuredContent':{'result':J}};}const g=await query_events({'type':'ProgressEvent','order':'descending','limit':b*0x3,'no_cache':e,'network':c}),h=new Set((g?.['data']??[])['map'](K=>K?.['progress'])['filter'](K=>typeof K==='string'&&K['startsWith']('0x'))['map'](K=>K['toLowerCase']())),i=await batchFetchEntityOrder(f['map'](K=>String(K['address'])['toLowerCase']()),c,e)['catch'](()=>undefined),j=[...new Set((i?[...i['values']()]:[])['flatMap'](K=>K['items']['map'](L=>L['order'])))],k=j['length']>0x0?await batchQueryObjectsByIds(j,c,e):[];for(const K of k??[]){const L=K?.['data']??K,M=L?.['progress'];K?.['type']==='Order'&&typeof M==='string'&&M['startsWith']('0x')&&h['add'](M['toLowerCase']());}if(h['size']===0x0){const N={'action':'list','tasks':[]};return{'content':[{'type':'text','text':JSON['stringify']({'result':N})}],'structuredContent':{'result':N}};}const l=[...h],m=await batchQueryObjectsByIds(l,c,e),n=new Map();for(const O of m??[]){const P=O?.['data']??O;O?.['type']==='Progress'&&typeof P?.['machine']==='string'&&n['set'](String(O?.['query_name']??O?.['object']??'')['toLowerCase'](),P);}const q=[...new Set([...n['values']()]['map'](Q=>Q['machine'])['filter'](Q=>typeof Q==='string'))],r=[...new Set([...n['values']()]['map'](Q=>Q['task'])['filter'](Q=>typeof Q==='string'&&Q['startsWith']('0x')))],s=await batchQueryObjectsByIds(q,c,e),t=new Map(),u=new Set();for(const Q of s??[]){const R=Q?.['data']??Q,S=String(Q?.['query_name']??Q?.['object']??'')['toLowerCase'](),T=typeof R?.['permission']==='string'?R['permission']:undefined;t['set'](S,T);if(T)u['add'](String(T)['toLowerCase']());}const v=new Map();await mapWithConcurrency(q,0x8,async U=>{v['set'](String(U)['toLowerCase'](),await fetchMachineNodes(U,c,![]));});const w=[...new Set([...v['values']()]['flatMap'](U=>U['flatMap'](V=>V['pairs']['flatMap'](W=>W['forwards']['map'](X=>X['guard'])['filter'](X=>typeof X==='string'&&X['startsWith']('0x'))))))],x=new Map();if(w['length']>0x0){const U=await batchQueryObjectsByIds(w,c,e);for(const V of U??[]){const W=V?.['data']??V;if(V?.['type']==='Guard'&&Array['isArray'](W?.['table'])){const X=String(V?.['query_name']??V?.['object']??'')['toLowerCase'](),Y=W['table']['filter'](Z=>Z?.['b_submission'])['map'](Z=>({'identifier':Number(Z?.['identifier']??0x0),'name':String(Z?.['name']??'field\x20'+Z?.['identifier']),'value_type':String(Z?.['value_type']??''),'object_type':Z?.['object_type']?String(Z['object_type']):undefined}));if(Y['length']>0x0)x['set'](X,Y);}}}const y=new Map();await mapWithConcurrency([...u],0x8,async Z=>{y['set'](Z,await fetchPermissionContext(Z,c,e));});const z=new Map(),A=new Map(),B=await batchQueryObjectsByIds(r,c,e);for(const Z of B??[]){const a0=Z?.['data']??Z;if(Z?.['type']==='Order'){const a1=String(Z?.['query_name']??Z?.['object']??'')['toLowerCase']();z['set'](a1,{'builder':String(a0?.['builder']??a0?.['owner']??''),'agent':new Set((a0?.['agent']??[])['map'](a2=>String(a2)['toLowerCase']()))});if(typeof a0?.['service']==='string')A['set'](a1,a0['service']);}}const C=[...n['values']()]['flatMap'](a2=>Array['isArray'](a2?.['context_repositories'])?a2['context_repositories']:[]),D=[...l,...q,...r,...[...A['values']()]['filter'](a2=>typeof a2==='string'),...C['filter'](a2=>typeof a2==='string')],{byAddress:E}=await resolveLocalNamesFor(D),F={'machineNodes':v,'permAddrByMachine':t,'permCtxByPermission':y,'orderCtxByOrder':z,'serviceByOrder':A,'localNames':E,'guardSubsByAddr':x},G=await mapWithConcurrency(l,0x8,async a2=>{try{const a3=n['get'](String(a2)['toLowerCase']());return a3?buildWorkflowTaskFromData(a2,a3,F,f):undefined;}catch{return undefined;}}),H=G['filter'](a2=>a2!==undefined)['sort']((a2,a3)=>Number(a3['actionable'])-Number(a2['actionable'])),I={'action':'list','tasks':H['slice'](0x0,b)};return{'content':[{'type':'text','text':JSON['stringify']({'result':I})}],'structuredContent':{'result':I}};}async function handleTask(a){const b=a['network'],c=a['no_cache'],e=a['progress'],f=await listLocalAccounts(),g=await batchQueryObjectsByIds([e],b,c),h=(g??[])['find'](y=>y?.['type']==='Progress'),i=h?h?.['data']??h:undefined;if(!h||!i||typeof i?.['machine']!=='string'){const y={'action':'task','note':'Progress\x20'+e+'\x20not\x20found\x20on\x20'+(b??'the\x20current\x20network')+'.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':y})}],'structuredContent':{'result':y}};}const j=i['machine'],k=String(j)['toLowerCase'](),l=await batchQueryObjectsByIds([j],b,c),m=(l??[])['find'](z=>z?.['type']==='Machine'),n=m?m?.['data']??m:undefined,p=n&&typeof n?.['permission']==='string'?n['permission']:undefined,q=await fetchMachineNodes(j,b,![]),r={'machineNodes':new Map([[k,q]]),'permAddrByMachine':new Map([[k,p]]),'permCtxByPermission':new Map(),'orderCtxByOrder':new Map(),'serviceByOrder':new Map(),'localNames':new Map(),'guardSubsByAddr':new Map()},s=[...new Set(q['flatMap'](z=>z['pairs']['flatMap'](A=>A['forwards']['map'](B=>B['guard'])['filter'](B=>typeof B==='string'&&B['startsWith']('0x')))))];if(s['length']>0x0){const z=await batchQueryObjectsByIds(s,b,c);for(const A of z??[]){const B=A?.['data']??A;if(A?.['type']==='Guard'&&Array['isArray'](B?.['table'])){const C=String(A?.['query_name']??A?.['object']??'')['toLowerCase'](),D=B['table']['filter'](E=>E?.['b_submission'])['map'](E=>({'identifier':Number(E?.['identifier']??0x0),'name':String(E?.['name']??'field\x20'+E?.['identifier']),'value_type':String(E?.['value_type']??''),'object_type':E?.['object_type']?String(E['object_type']):undefined}));if(D['length']>0x0)r['guardSubsByAddr']['set'](C,D);}}}p&&r['permCtxByPermission']['set'](String(p)['toLowerCase'](),await fetchPermissionContext(p,b,c));if(typeof i?.['task']==='string'&&i['task']['startsWith']('0x')){const E=await batchQueryObjectsByIds([i['task']],b,c);for(const F of E??[]){if(F?.['type']==='Order'){const G=F?.['data']??F,H=String(F?.['query_name']??F?.['object']??'')['toLowerCase']();r['orderCtxByOrder']['set'](H,{'builder':String(G?.['builder']??G?.['owner']??''),'agent':new Set((G?.['agent']??[])['map'](I=>String(I)['toLowerCase']()))}),typeof G?.['service']==='string'&&r['serviceByOrder']['set'](H,G['service']);}}}const t=Array['isArray'](i?.['context_repositories'])?i['context_repositories']:[],u=[String(h?.['object']??e),i?.['task'],j,...t]['filter'](I=>typeof I==='string'&&I['startsWith']('0x')),{byAddress:v}=await resolveLocalNamesFor(u);r['localNames']=v;const w=buildWorkflowTaskFromData(String(h?.['query_name']??h?.['object']??e),i,r,f),x=w?{'action':'task','tasks':[w]}:{'action':'task','note':'Progress\x20snapshot\x20could\x20not\x20be\x20built.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':x})}],'structuredContent':{'result':x}};}const WORKFLOW_HISTORY_PREFIX='__workflow_history',WORKFLOW_HISTORY_RETENTION_MS=0x5a*0x18*0xe10*0x3e8;async function readHistoryStore(a){const b=await Cache['read']([WORKFLOW_HISTORY_PREFIX,a],async()=>({'expire':'INFINITE','data':{}}));return b?.['data']??{};}async function writeHistoryStore(a,b){await Cache['read']([WORKFLOW_HISTORY_PREFIX,a],async()=>({'expire':'INFINITE','data':b}),!![]);}async function handleHistory(a){const b=await resolveNetwork(a['network']),c=a['limit']??0x32,d=a['prune']??!![],g=a['progress'],h=await batchQueryObjectsByIds([g],b,!![]),i=(h??[])[0x0],j=i?.['object']??(typeof g==='string'&&g['startsWith']('0x')?g:undefined),k=i?.['data']??i;if(!j||i?.['type']!=='Progress'){const E={'action':'history','note':'Not\x20a\x20Progress\x20object\x20or\x20not\x20found.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':E})}],'structuredContent':{'result':E}};}const l=Number(k?.['history_count']??0x0),m=await readHistoryStore(b),n=m[j]??{'cursor':-0x1,'lastActivity':0x0,'records':[]},o=[],p=n['cursor']+0x1;if(p<l){const F=[];for(let H=p;H<l;H++)F['push'](H);const G=await batchReadU64KeyedFields(j,F,b,![]);for(let I=p;I<l;I++){const J=G['get'](String(I));if(!J)break;o['push']({'index':I,'node':J['node'],'next_node':J['next_node'],'time':J['time'],'session':J['session']});}}const q=o['length']>0x0?p+o['length']-0x1:n['cursor'],t=[...n['records'],...o],u=o['length']>0x0?Math['max'](n['lastActivity'],...o['map'](K=>K['time'])):n['lastActivity'];m[j]={'cursor':q,'lastActivity':u,'records':t};let v=0x0;if(d){const K=Date['now']()-WORKFLOW_HISTORY_RETENTION_MS;for(const L of Object['keys'](m)){const M=m[L];M['lastActivity']>0x0&&M['lastActivity']<K&&(delete m[L],v++);}}await writeHistoryStore(b,m);const w=typeof k?.['machine']==='string'?k['machine']:undefined,x=new Map();if(w)try{const N=await fetchMachineNodes(w,b,![]);for(const O of N??[]){for(const P of O?.['pairs']??[]){for(const Q of P?.['forwards']??[]){if(Q?.['name'])x['set'](O['name']+'|'+Q['name'],Number(Q?.['weight']??0x0));}}}}catch{}const y=[],z=R=>{for(const S of R??[]){const T=String(S?.['value_type']??'')['toLowerCase'](),U=S?.['value'];if(!T['includes']('address'))continue;if(Array['isArray'](U)){for(const V of U)if(typeof V==='string'&&V['startsWith']('0x'))y['push'](V);}else typeof U==='string'&&U['startsWith']('0x')&&y['push'](U);}};for(const R of t){for(const S of Array['isArray'](R?.['session'])?R['session']:[]){for(const T of Array['isArray'](S?.['forwards'])?S['forwards']:[]){if(T?.['who'])y['push'](String(T['who']));z(T?.['retained_submission']);}}}const {byAddress:A}=await resolveLocalNamesFor([...new Set(y)]),B=U=>{const V=String(U?.['value_type']??'')['toLowerCase'](),W=U?.['value'];if(!V['includes']('address'))return U;const X=Array['isArray'](W)?typeof W[0x0]==='string'?W[0x0]:undefined:typeof W==='string'?W:undefined;return{...U,'display_name':X?A['get'](String(X)['toLowerCase']()):undefined};},C=t['map'](U=>({...U,'session':(Array['isArray'](U?.['session'])?U['session']:[])['map'](V=>({...V,'forwards':(Array['isArray'](V?.['forwards'])?V['forwards']:[])['map'](W=>({...W,'weight':x['get'](V?.['next_node']+'|'+W?.['forward'])??undefined,'who_name':W?.['who']?A['get'](String(W['who'])['toLowerCase']()):undefined,'retained_submission':(Array['isArray'](W?.['retained_submission'])?W['retained_submission']:[])['map'](B)}))}))})),D={'action':'history','history':{'progress':j,'current':k?.['current'],'records':[...C]['sort']((U,V)=>V['index']-U['index'])['slice'](0x0,c),'synced':o['length'],'cursor':q,'pruned':v}};return{'content':[{'type':'text','text':JSON['stringify']({'result':D})}],'structuredContent':{'result':D}};}async function handleOperate(a){const b={'operation_type':'progress','data':{'object':a['progress'],'operate':a['operate']},'env':{'account':a['account']??'','network':a['network'],'no_cache':a['no_cache']}};return a['submission']!==undefined&&(b['submission']=a['submission']),await handleOnchainOperations(b);}export async function handleWorkflowOperation(a){const b=strictParse(WorkflowOperationInputSchema,a,'workflow_operation\x20input');if(b['action']==='list')return await handleList(b);if(b['action']==='task')return await handleTask(b);if(b['action']==='history')return await handleHistory(b);return await handleOperate(b);}
@@ -4,6 +4,9 @@ export { monitorEventStore, MonitorEventStore, monitorEventId } from "../monitor
4
4
  export type { MonitorEventRecord, MonitorEventWithSeen, MonitorEventModule, LegacyMonitorState, } from "../monitor/EventStore.js";
5
5
  export { monitorLoop, MonitorLoop } from "../monitor/MonitorLoop.js";
6
6
  export { MONITOR_CAPTURE_TYPES } from "../monitor/normalize.js";
7
+ export { resolveGateControls, resolveEffectiveOverrides } from "../persona/index.js";
8
+ export { SYSTEM_OVERRIDE_SETTINGS } from "../persona/index.js";
9
+ export type { PersonaPolicy, SystemOverrideValue } from "../persona/index.js";
7
10
  export declare const TOOL_REGISTRY: ToolEntry[];
8
11
  export declare const TOOL_REGISTRY_MAP: Map<string, ToolEntry>;
9
12
  export declare const SUB_TOOL_COUNT: number;