@wowok/agent-mcp 3.1.0 → 3.1.3

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 (337) hide show
  1. package/dist/config/runtime.js +1 -1
  2. package/dist/customer/index.d.ts +3 -9
  3. package/dist/customer/index.js +1 -1
  4. package/dist/customer/industry-risks.d.ts +3 -17
  5. package/dist/customer/industry-risks.js +1 -1
  6. package/dist/customer/types.d.ts +1 -165
  7. package/dist/customer/types.js +1 -1
  8. package/dist/customer/user-preferences.d.ts +0 -49
  9. package/dist/customer/user-preferences.js +1 -1
  10. package/dist/evaluation/arbitration-game.js +1 -1
  11. package/dist/evaluation/architecture.spec.d.ts +1 -0
  12. package/dist/evaluation/architecture.spec.js +1 -0
  13. package/dist/evaluation/builtins/graph-service.d.ts +16 -0
  14. package/dist/evaluation/builtins/graph-service.js +1 -0
  15. package/dist/evaluation/builtins/graph-service.spec.d.ts +1 -0
  16. package/dist/evaluation/builtins/graph-service.spec.js +1 -0
  17. package/dist/evaluation/builtins/index.d.ts +1 -1
  18. package/dist/evaluation/builtins/index.js +1 -1
  19. package/dist/evaluation/builtins/purity.spec.d.ts +1 -0
  20. package/dist/evaluation/builtins/purity.spec.js +1 -0
  21. package/dist/evaluation/engine.js +1 -1
  22. package/dist/evaluation/facets/catalog.d.ts +19 -0
  23. package/dist/evaluation/facets/catalog.js +1 -0
  24. package/dist/evaluation/guard-scan.d.ts +10 -0
  25. package/dist/evaluation/guard-scan.js +1 -0
  26. package/dist/evaluation/location-match.js +1 -1
  27. package/dist/evaluation/standards.d.ts +31 -0
  28. package/dist/evaluation/standards.js +1 -0
  29. package/dist/evaluation/standards.spec.d.ts +1 -0
  30. package/dist/evaluation/standards.spec.js +1 -0
  31. package/dist/evaluation/types.d.ts +9 -0
  32. package/dist/experience/realtime-feedback.js +1 -1
  33. package/dist/extensions/index.d.ts +1 -1
  34. package/dist/extensions/index.js +1 -1
  35. package/dist/extensions/industry-layers.d.ts +6 -5
  36. package/dist/extensions/industry-layers.js +1 -1
  37. package/dist/extensions/industry-pack.js +1 -1
  38. package/dist/goal/GoalClassifier.js +1 -1
  39. package/dist/graph/onchain/analyze.d.ts +16 -3
  40. package/dist/graph/onchain/analyze.js +1 -1
  41. package/dist/graph/onchain/analyze.spec.js +1 -1
  42. package/dist/graph/onchain/dataplane.d.ts +1 -1
  43. package/dist/graph/onchain/dataplane.js +1 -1
  44. package/dist/graph/onchain/edge-batch.spec.d.ts +1 -0
  45. package/dist/graph/onchain/edge-batch.spec.js +1 -0
  46. package/dist/graph/onchain/edge-schema.d.ts +11 -3
  47. package/dist/graph/onchain/edge-schema.js +1 -1
  48. package/dist/graph/onchain/entity-profile.spec.d.ts +1 -0
  49. package/dist/graph/onchain/entity-profile.spec.js +1 -0
  50. package/dist/graph/onchain/event-history.spec.d.ts +1 -0
  51. package/dist/graph/onchain/event-history.spec.js +1 -0
  52. package/dist/graph/onchain/expand.js +1 -1
  53. package/dist/graph/onchain/extract-deep.spec.d.ts +1 -0
  54. package/dist/graph/onchain/extract-deep.spec.js +1 -0
  55. package/dist/graph/onchain/extract.d.ts +11 -3
  56. package/dist/graph/onchain/extract.js +1 -1
  57. package/dist/graph/onchain/facet-projection.d.ts +99 -0
  58. package/dist/graph/onchain/facet-projection.js +1 -0
  59. package/dist/graph/onchain/facet-projection.spec.d.ts +1 -0
  60. package/dist/graph/onchain/facet-projection.spec.js +1 -0
  61. package/dist/graph/onchain/facts.d.ts +103 -0
  62. package/dist/graph/onchain/facts.js +1 -0
  63. package/dist/graph/onchain/facts.spec.d.ts +1 -0
  64. package/dist/graph/onchain/facts.spec.js +1 -0
  65. package/dist/graph/onchain/field-manifest.d.ts +29 -0
  66. package/dist/graph/onchain/field-manifest.js +1 -0
  67. package/dist/graph/onchain/field-manifest.spec.d.ts +1 -0
  68. package/dist/graph/onchain/field-manifest.spec.js +1 -0
  69. package/dist/graph/onchain/fixtures.d.ts +80 -0
  70. package/dist/graph/onchain/fixtures.js +1 -0
  71. package/dist/graph/onchain/fixtures.spec.d.ts +1 -0
  72. package/dist/graph/onchain/fixtures.spec.js +1 -0
  73. package/dist/graph/onchain/index.d.ts +8 -2
  74. package/dist/graph/onchain/index.js +1 -1
  75. package/dist/graph/onchain/interest.js +1 -1
  76. package/dist/graph/onchain/label-lint.spec.d.ts +1 -0
  77. package/dist/graph/onchain/label-lint.spec.js +1 -0
  78. package/dist/graph/onchain/names.d.ts +23 -0
  79. package/dist/graph/onchain/names.js +1 -0
  80. package/dist/graph/onchain/names.spec.d.ts +1 -0
  81. package/dist/graph/onchain/names.spec.js +1 -0
  82. package/dist/graph/onchain/onchain.spec.js +1 -1
  83. package/dist/graph/onchain/proposal-graph.d.ts +11 -0
  84. package/dist/graph/onchain/proposal-graph.js +1 -0
  85. package/dist/graph/onchain/proposal-graph.spec.d.ts +1 -0
  86. package/dist/graph/onchain/proposal-graph.spec.js +1 -0
  87. package/dist/graph/onchain/sdk-batch.d.ts +5 -1
  88. package/dist/graph/onchain/sdk-batch.js +1 -1
  89. package/dist/graph/onchain/sdk-dataplane.js +1 -1
  90. package/dist/graph/onchain/strategy.d.ts +16 -0
  91. package/dist/graph/onchain/strategy.js +1 -1
  92. package/dist/graph/onchain/strategy.spec.js +1 -1
  93. package/dist/graph/onchain/table-ledger.spec.d.ts +1 -0
  94. package/dist/graph/onchain/table-ledger.spec.js +1 -0
  95. package/dist/graph/onchain/types.d.ts +51 -11
  96. package/dist/graph/onchain/viewport.d.ts +1 -0
  97. package/dist/graph/onchain/viewport.js +1 -1
  98. package/dist/harness/index.d.ts +1 -5
  99. package/dist/harness/index.js +1 -1
  100. package/dist/harness/verify.d.ts +6 -1
  101. package/dist/harness/verify.js +1 -1
  102. package/dist/index.js +1 -1
  103. package/dist/knowledge/allocation-ledger.d.ts +2 -0
  104. package/dist/knowledge/allocation-ledger.js +1 -1
  105. package/dist/knowledge/allocation-puzzle.js +1 -1
  106. package/dist/knowledge/allocation-risk.d.ts +2 -3
  107. package/dist/knowledge/allocation-risk.js +1 -1
  108. package/dist/knowledge/arb-risk.d.ts +0 -1
  109. package/dist/knowledge/arb-risk.js +1 -1
  110. package/dist/knowledge/arbitration-risk.d.ts +0 -2
  111. package/dist/knowledge/arbitration-risk.js +1 -1
  112. package/dist/knowledge/baselines/evaluation-baselines.json +79 -0
  113. package/dist/knowledge/baselines/guard-lint-baseline.spec.d.ts +1 -0
  114. package/dist/knowledge/baselines/guard-lint-baseline.spec.js +1 -0
  115. package/dist/knowledge/baselines/risk-baselines.spec.d.ts +1 -0
  116. package/dist/knowledge/baselines/risk-baselines.spec.js +1 -0
  117. package/dist/knowledge/baselines/risk-cases.d.ts +8 -0
  118. package/dist/knowledge/baselines/risk-cases.js +1 -0
  119. package/dist/knowledge/bridge-risk.d.ts +0 -1
  120. package/dist/knowledge/bridge-risk.js +1 -1
  121. package/dist/knowledge/contact-risk.d.ts +0 -1
  122. package/dist/knowledge/contact-risk.js +1 -1
  123. package/dist/knowledge/contract-invariants.d.ts +1 -0
  124. package/dist/knowledge/contract-invariants.js +1 -1
  125. package/dist/knowledge/demand-risk.d.ts +0 -1
  126. package/dist/knowledge/demand-risk.js +1 -1
  127. package/dist/knowledge/getting-started.js +1 -1
  128. package/dist/knowledge/guard-design-patterns.js +1 -1
  129. package/dist/knowledge/guard-eval.d.ts +15 -0
  130. package/dist/knowledge/guard-eval.js +1 -0
  131. package/dist/knowledge/guard-eval.spec.d.ts +1 -0
  132. package/dist/knowledge/guard-eval.spec.js +1 -0
  133. package/dist/knowledge/guard-field-cognition.d.ts +48 -0
  134. package/dist/knowledge/guard-field-cognition.js +1 -0
  135. package/dist/knowledge/guard-lint.d.ts +1 -1
  136. package/dist/knowledge/guard-lint.js +1 -1
  137. package/dist/knowledge/guard-risk.d.ts +4 -19
  138. package/dist/knowledge/guard-risk.js +1 -1
  139. package/dist/knowledge/index.d.ts +42 -43
  140. package/dist/knowledge/index.js +1 -1
  141. package/dist/knowledge/industry-registry.js +1 -1
  142. package/dist/knowledge/industry-rule-node.d.ts +7 -0
  143. package/dist/knowledge/industry-rule-node.js +1 -0
  144. package/dist/knowledge/industry-strategy.js +1 -1
  145. package/dist/knowledge/jsonrpc-enum.js +1 -1
  146. package/dist/knowledge/machine-risk.d.ts +0 -6
  147. package/dist/knowledge/machine-risk.js +1 -1
  148. package/dist/knowledge/order-risk.d.ts +1 -9
  149. package/dist/knowledge/order-risk.js +1 -1
  150. package/dist/knowledge/payment-risk.d.ts +0 -1
  151. package/dist/knowledge/payment-risk.js +1 -1
  152. package/dist/knowledge/permission-risk.d.ts +0 -3
  153. package/dist/knowledge/permission-risk.js +1 -1
  154. package/dist/knowledge/personal-risk.d.ts +0 -1
  155. package/dist/knowledge/personal-risk.js +1 -1
  156. package/dist/knowledge/progress-risk.d.ts +0 -2
  157. package/dist/knowledge/progress-risk.js +1 -1
  158. package/dist/knowledge/proof-risk.d.ts +0 -1
  159. package/dist/knowledge/proof-risk.js +1 -1
  160. package/dist/knowledge/puzzle-projections.d.ts +11 -0
  161. package/dist/knowledge/puzzle-projections.js +1 -0
  162. package/dist/knowledge/recipient-constraint.d.ts +6 -1
  163. package/dist/knowledge/recipient-constraint.js +1 -1
  164. package/dist/knowledge/registrar-risk.d.ts +0 -1
  165. package/dist/knowledge/registrar-risk.js +1 -1
  166. package/dist/knowledge/repository-risk.d.ts +0 -1
  167. package/dist/knowledge/repository-risk.js +1 -1
  168. package/dist/knowledge/resource-risk.d.ts +0 -1
  169. package/dist/knowledge/resource-risk.js +1 -1
  170. package/dist/knowledge/reward-risk.d.ts +1 -5
  171. package/dist/knowledge/reward-risk.js +1 -1
  172. package/dist/knowledge/rule-node-analyzers.d.ts +43 -0
  173. package/dist/knowledge/rule-node-analyzers.js +1 -0
  174. package/dist/knowledge/rule-node-analyzers.spec.d.ts +1 -0
  175. package/dist/knowledge/rule-node-analyzers.spec.js +1 -0
  176. package/dist/knowledge/rule-outcome.d.ts +5 -0
  177. package/dist/knowledge/rule-outcome.js +1 -0
  178. package/dist/knowledge/safety-rules.js +1 -1
  179. package/dist/knowledge/scenario-topology.js +1 -1
  180. package/dist/knowledge/service-allocator-audit-node.d.ts +3 -0
  181. package/dist/knowledge/service-allocator-audit-node.js +1 -0
  182. package/dist/knowledge/service-risk-node.js +1 -1
  183. package/dist/knowledge/service-risk.d.ts +0 -3
  184. package/dist/knowledge/service-risk.js +1 -1
  185. package/dist/knowledge/template-registry.js +1 -1
  186. package/dist/knowledge/tools-reference.js +1 -1
  187. package/dist/knowledge/treasury-risk.d.ts +2 -3
  188. package/dist/knowledge/treasury-risk.js +1 -1
  189. package/dist/knowledge/util-risk.d.ts +0 -1
  190. package/dist/knowledge/util-risk.js +1 -1
  191. package/dist/knowledge/workflow-guidance.d.ts +2 -0
  192. package/dist/knowledge/workflow-guidance.js +1 -1
  193. package/dist/monitor/MonitorLoop.js +1 -1
  194. package/dist/persona/bridge.js +1 -1
  195. package/dist/persona/facet-profile.d.ts +33 -0
  196. package/dist/persona/facet-profile.js +1 -0
  197. package/dist/persona/model.d.ts +2 -1
  198. package/dist/persona/model.js +1 -1
  199. package/dist/persona/strategy-intent.js +1 -1
  200. package/dist/persona/topology-focus.d.ts +2 -2
  201. package/dist/persona/topology-focus.js +1 -1
  202. package/dist/persona/types.d.ts +12 -0
  203. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  204. package/dist/playbooks/service-build/facet-money.d.ts +22 -0
  205. package/dist/playbooks/service-build/facet-money.js +1 -0
  206. package/dist/playbooks/service-build/facet-money.spec.d.ts +1 -0
  207. package/dist/playbooks/service-build/facet-money.spec.js +1 -0
  208. package/dist/playbooks/service-build/intent-analyzer.js +1 -1
  209. package/dist/playbooks/service-build/machine-panorama.d.ts +3 -0
  210. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  211. package/dist/playbooks/service-build/object-panorama.d.ts +27 -27
  212. package/dist/playbooks/service-build/object-panorama.js +1 -1
  213. package/dist/playbooks/service-build/pipeline-actions.d.ts +2 -2
  214. package/dist/playbooks/service-build/pipeline-actions.js +1 -1
  215. package/dist/playbooks/service-build/risk-aggregator.d.ts +2 -1
  216. package/dist/playbooks/service-build/risk-aggregator.js +1 -1
  217. package/dist/playbooks/service-build/service-panorama.d.ts +4 -9
  218. package/dist/playbooks/service-build/service-panorama.js +1 -1
  219. package/dist/playbooks/service-build/topology-evaluation.spec.d.ts +1 -0
  220. package/dist/playbooks/service-build/topology-evaluation.spec.js +1 -0
  221. package/dist/playbooks/service-build/topology-query.d.ts +13 -2
  222. package/dist/playbooks/service-build/topology-query.js +1 -1
  223. package/dist/review/arb.d.ts +0 -2
  224. package/dist/review/arb.js +1 -1
  225. package/dist/review/order.d.ts +0 -1
  226. package/dist/review/order.js +1 -1
  227. package/dist/role/profiles.js +1 -1
  228. package/dist/rules.d.ts +1 -2
  229. package/dist/rules.js +1 -1
  230. package/dist/safety/confirm-gate.js +1 -1
  231. package/dist/safety/preview.js +1 -1
  232. package/dist/schema/call/base.d.ts +3372 -668
  233. package/dist/schema/call/base.js +1 -1
  234. package/dist/schema/call/handler.js +1 -1
  235. package/dist/schema/call/receipt.d.ts +28 -0
  236. package/dist/schema/call/receipt.js +1 -0
  237. package/dist/schema/call/semantic-customer-advice.spec.d.ts +1 -0
  238. package/dist/schema/call/semantic-customer-advice.spec.js +1 -0
  239. package/dist/schema/call/semantic.d.ts +5 -2
  240. package/dist/schema/call/semantic.js +1 -1
  241. package/dist/schema/call/treasury.js +1 -1
  242. package/dist/schema/common/index.js +1 -1
  243. package/dist/schema/evaluation/index.d.ts +289 -211
  244. package/dist/schema/evaluation/index.js +1 -1
  245. package/dist/schema/goal/index.d.ts +1 -1
  246. package/dist/schema/goal/planning.d.ts +2 -2
  247. package/dist/schema/index.d.ts +0 -1
  248. package/dist/schema/index.js +1 -1
  249. package/dist/schema/industry-pack/index.d.ts +1 -1
  250. package/dist/schema/keeper/index.d.ts +1 -1
  251. package/dist/schema/local/index.js +1 -1
  252. package/dist/schema/operations.d.ts +28 -10
  253. package/dist/schema/operations.js +1 -1
  254. package/dist/schema/persona/index.d.ts +24 -24
  255. package/dist/schema/query/bi.d.ts +629 -14
  256. package/dist/schema/query/bi.js +1 -1
  257. package/dist/schema/query/index.d.ts +9 -9
  258. package/dist/schema/query/index.js +1 -1
  259. package/dist/schema/schema-version.js +1 -1
  260. package/dist/schema/workspace/index.d.ts +2 -2
  261. package/dist/schema-query-impl/index.js +1 -1
  262. package/dist/schemas/account_operation.output.json +10 -10
  263. package/dist/schemas/account_operation.schema.json +3 -3
  264. package/dist/schemas/bridge_operation.output.json +10 -10
  265. package/dist/schemas/evaluation_operation.output.json +697 -169
  266. package/dist/schemas/evaluation_operation.schema.json +5 -434
  267. package/dist/schemas/index.json +1 -7
  268. package/dist/schemas/keeper_operation.output.json +10 -10
  269. package/dist/schemas/local_history_operation.output.json +10 -10
  270. package/dist/schemas/local_info_operation.output.json +10 -10
  271. package/dist/schemas/local_mark_operation.output.json +10 -10
  272. package/dist/schemas/messenger_operation.output.json +10 -10
  273. package/dist/schemas/monitor_events.output.json +10 -10
  274. package/dist/schemas/monitor_subscription.output.json +10 -10
  275. package/dist/schemas/onchain_events.output.json +11 -11
  276. package/dist/schemas/onchain_operations.output.json +6369 -3736
  277. package/dist/schemas/onchain_operations.schema.json +48 -48
  278. package/dist/schemas/onchain_operations_allocation.schema.json +5 -5
  279. package/dist/schemas/onchain_operations_arbitration.schema.json +3 -3
  280. package/dist/schemas/onchain_operations_contact.schema.json +2 -2
  281. package/dist/schemas/onchain_operations_demand.schema.json +2 -2
  282. package/dist/schemas/onchain_operations_machine.schema.json +2 -2
  283. package/dist/schemas/onchain_operations_order.schema.json +2 -2
  284. package/dist/schemas/onchain_operations_payment.schema.json +2 -2
  285. package/dist/schemas/onchain_operations_permission.schema.json +2 -2
  286. package/dist/schemas/onchain_operations_progress.schema.json +2 -2
  287. package/dist/schemas/onchain_operations_repository.schema.json +2 -2
  288. package/dist/schemas/onchain_operations_reward.schema.json +6 -6
  289. package/dist/schemas/onchain_operations_service.schema.json +8 -8
  290. package/dist/schemas/onchain_operations_treasury.schema.json +10 -10
  291. package/dist/schemas/onchain_table_data.output.json +78 -84
  292. package/dist/schemas/query_toolkit.output.json +1087 -254
  293. package/dist/schemas/query_toolkit.schema.json +65 -3
  294. package/dist/strategy/collectors.js +1 -1
  295. package/dist/strategy/metrics.js +1 -1
  296. package/dist/task/playbook.js +1 -1
  297. package/dist/tools/handlers/bridge.js +1 -1
  298. package/dist/tools/handlers/config.js +1 -1
  299. package/dist/tools/handlers/dispatch-expectations.d.ts +3 -0
  300. package/dist/tools/handlers/dispatch-expectations.js +1 -0
  301. package/dist/tools/handlers/evaluation.js +1 -1
  302. package/dist/tools/handlers/evaluation.spec.js +1 -1
  303. package/dist/tools/handlers/onchain.js +1 -1
  304. package/dist/tools/handlers/query.js +1 -1
  305. package/dist/tools/index.js +1 -1
  306. package/dist/tools/registry/evaluation.d.ts +2 -0
  307. package/dist/tools/registry/evaluation.js +1 -0
  308. package/dist/tools/registry/monitor.js +1 -1
  309. package/dist/tools/registry/query.js +1 -1
  310. package/dist/tools/shared.d.ts +0 -1
  311. package/dist/tools/shared.js +1 -1
  312. package/dist/tools/wrap.js +1 -1
  313. package/package.json +4 -3
  314. package/dist/customer/customer-advice.d.ts +0 -32
  315. package/dist/customer/customer-advice.js +0 -1
  316. package/dist/customer/info-puzzle.d.ts +0 -146
  317. package/dist/customer/info-puzzle.js +0 -1
  318. package/dist/customer/order-strategy.d.ts +0 -17
  319. package/dist/customer/order-strategy.js +0 -1
  320. package/dist/customer/preorder-compare.d.ts +0 -24
  321. package/dist/customer/preorder-compare.js +0 -1
  322. package/dist/customer/reminder-system.d.ts +0 -42
  323. package/dist/customer/reminder-system.js +0 -1
  324. package/dist/customer/risk-assessment.d.ts +0 -13
  325. package/dist/customer/risk-assessment.js +0 -1
  326. package/dist/evaluation/builtins/service-risk.d.ts +0 -7
  327. package/dist/evaluation/builtins/service-risk.js +0 -1
  328. package/dist/knowledge/trust-metrics.d.ts +0 -66
  329. package/dist/knowledge/trust-metrics.js +0 -1
  330. package/dist/schema/trust/index.d.ts +0 -334
  331. package/dist/schema/trust/index.js +0 -1
  332. package/dist/schemas/trust_score.output.json +0 -847
  333. package/dist/schemas/trust_score.schema.json +0 -364
  334. package/dist/tools/handlers/trust.d.ts +0 -16
  335. package/dist/tools/handlers/trust.js +0 -1
  336. package/dist/tools/registry/trust.d.ts +0 -2
  337. package/dist/tools/registry/trust.js +0 -1
@@ -0,0 +1 @@
1
+ import{PackageAddress}from'@wowok/wowok';const SYS=a=>({'field':'id','disposition':{'kind':'nonAddress','note':'Object\x20identity\x20(UID);\x20system-managed,\x20never\x20a\x20business\x20reference'},'evidence':a}),SERVICE={'object':'Service','moveStruct':'service.move\x20L174-193\x20Service<T>','fields':[SYS('service.move\x20L174-193'),{'field':'description','disposition':{'kind':'attribute','note':'Shop\x20self-description;\x20node\x20property'},'evidence':'service.move\x20L174-193'},{'field':'location','disposition':{'kind':'attribute','note':'Service\x20area\x20/\x20market-opportunity\x20routing\x20key'},'evidence':'service.move\x20L174-193'},{'field':'sales','disposition':{'kind':'attribute','note':'Catalog\x20items\x20for\x20sale\x20(what\x20the\x20shop\x20sells)'},'evidence':'service.move\x20L174-193'},{'field':'repositories','disposition':{'kind':'edge','schema':'service.repository'},'evidence':'service.move\x20L174-193\x20(<=100)'},{'field':'buy_guard','disposition':{'kind':'edge','schema':'service.buy_guard'},'evidence':'service.move\x20L174-193'},{'field':'machine','disposition':{'kind':'edge','schema':'service.machine'},'evidence':'service.move\x20L174-193'},{'field':'bPublished','disposition':{'kind':'attribute','note':'Publish\x20flag;\x20freezes\x20machine/guard\x20settings;\x20analyzer\x20input'},'evidence':'service.move\x20L174-193'},{'field':'bPaused','disposition':{'kind':'attribute','note':'Pause\x20flag;\x20purchasability;\x20analyzer\x20input'},'evidence':'service.move\x20L174-193'},{'field':'customer_required','disposition':{'kind':'attribute','note':'Custom\x20info\x20fields\x20the\x20shop\x20requires\x20from\x20buyers'},'evidence':'service.move\x20L174-193'},{'field':'arbitrations','disposition':{'kind':'edge','schema':'service.arbitration'},'evidence':'service.move\x20L174-193\x20(<=20)'},{'field':'compensation_fund','disposition':{'kind':'attribute','note':'Escrowed\x20compensation\x20balance\x20(arbitration\x20solvency\x20signal)'},'evidence':'service.move\x20L174-193'},{'field':'paused_time','disposition':{'kind':'attribute','note':'When\x20the\x20shop\x20was\x20paused\x20(timestamp-ms)'},'evidence':'service.move\x20L174-193'},{'field':'setting_lock_duration','disposition':{'kind':'attribute','note':'Lock\x20duration\x20gating\x20post-pause\x20setting\x20changes'},'evidence':'service.move\x20L174-193'},{'field':'order_allocators','disposition':{'kind':'edge','schema':'service.order_allocator_guard','note':'Allocators\x20container;\x20guard\x20members\x20are\x20the\x20edge,\x20sharing\x20amounts\x20ride\x20the\x20payload'},'evidence':'service.move\x20L174-193;\x20allocation.move\x20L194-200'},{'field':'rewards','disposition':{'kind':'edge','schema':'service.reward'},'evidence':'service.move\x20L174-193\x20(<=20)'},{'field':'um','disposition':{'kind':'edge','schema':'service.um'},'evidence':'service.move\x20L174-193'},{'field':'permission','disposition':{'kind':'edge','schema':'service.permission'},'evidence':'service.move\x20L174-193'}]},ORDER={'object':'Order','moveStruct':'order.move\x20L59-74\x20Order','fields':[SYS('order.move\x20L59-74'),{'field':'items','disposition':{'kind':'attribute','note':'Purchased\x20line\x20items\x20(what\x20was\x20bought)'},'evidence':'order.move\x20L59-74'},{'field':'discount','disposition':{'kind':'edge','schema':'order.discount'},'evidence':'order.move\x20L59-74'},{'field':'progress','disposition':{'kind':'edge','schema':'order.progress'},'evidence':'order.move\x20L59-74,L130'},{'field':'machine','disposition':{'kind':'edge','schema':'order.machine'},'evidence':'order.move\x20L59-74,L130'},{'field':'amount','disposition':{'kind':'attribute','note':'Total\x20paid\x20(order\x20value\x20signal)'},'evidence':'order.move\x20L59-74'},{'field':'owner','disposition':{'kind':'edge','schema':'order.builder','note':'SDK\x20normalizes\x20owner\x20to\x20builder'},'evidence':'order.move\x20L59-74\x20(owner)'},{'field':'service','disposition':{'kind':'edge','schema':'order.service'},'evidence':'order.move\x20L59-74'},{'field':'dispute','disposition':{'kind':'edge','schema':'order.dispute'},'evidence':'order.move\x20L59-74'},{'field':'agent','disposition':{'kind':'edge','schema':'order.agent'},'evidence':'order.move\x20L59-74,L179\x20(<=10)'},{'field':'allocation','disposition':{'kind':'edge','schema':'order.allocation'},'evidence':'order.move\x20L59-74,L130'},{'field':'claimed_by','disposition':{'kind':'edge','schema':'order.claimed_by'},'evidence':'order.move\x20L59-74,L86-96'},{'field':'required_info','disposition':{'kind':'edge','schema':'order.required_info'},'evidence':'order.move\x20L73,L77-80','oq':'IM\x20book\x20or\x20WTS\x20proof\x20(b11/b12)'},{'field':'time','disposition':{'kind':'attribute','note':'Creation\x20time\x20(timestamp-ms)'},'evidence':'order.move\x20L59-74'}]},DISCOUNT={'object':'Discount','moveStruct':'service.move\x20L109-119\x20Discount','fields':[SYS('service.move\x20L109-119'),{'field':'name','disposition':{'kind':'attribute','note':'Discount\x20campaign\x20name'},'evidence':'service.move\x20L109-119'},{'field':'discount_type','disposition':{'kind':'attribute','note':'RATIO\x20(off%)\x20or\x20MINUS\x20(-N)\x20pricing\x20mode'},'evidence':'service.move\x20L109-119'},{'field':'benchmark','disposition':{'kind':'attribute','note':'Minimum-spend\x20condition\x20for\x20the\x20discount'},'evidence':'service.move\x20L109-119'},{'field':'off','disposition':{'kind':'attribute','note':'Discount\x20magnitude\x20(rate\x20or\x20fixed\x20amount)'},'evidence':'service.move\x20L109-119'},{'field':'time_start','disposition':{'kind':'attribute','note':'Validity\x20window\x20start\x20(timestamp-ms)'},'evidence':'service.move\x20L109-119'},{'field':'time_end','disposition':{'kind':'attribute','note':'Validity\x20window\x20end\x20/\x20expiry'},'evidence':'service.move\x20L109-119'},{'field':'service','disposition':{'kind':'edge','schema':'discount.service'},'evidence':'service.move\x20L117','oq':'OQ-3\x20(Discount\x20joins\x20COVERED\x20types)'},{'field':'transferable','disposition':{'kind':'attribute','note':'Whether\x20the\x20discount\x20may\x20be\x20handed\x20to\x20a\x20receiver'},'evidence':'service.move\x20L109-119'}]},PROGRESS={'object':'Progress','moveStruct':'progress.move\x20L75-85\x20Progress','fields':[SYS('progress.move\x20L75-85'),{'field':'machine','disposition':{'kind':'edge','schema':'progress.machine'},'evidence':'progress.move\x20L75-85'},{'field':'context_repositories','disposition':{'kind':'edge','schema':'progress.context_repository'},'evidence':'progress.move\x20L78,L199-208'},{'field':'current','disposition':{'kind':'attribute','note':'Current\x20node\x20name\x20(completion\x20determination\x20input)'},'evidence':'progress.move\x20L75-85'},{'field':'task','disposition':{'kind':'edge','schema':'progress.task'},'evidence':'progress.move\x20L80'},{'field':'namedOperator','disposition':{'kind':'edge','schema':'progress.named_operator','note':'Container\x20struct;\x20operators[]\x20members\x20are\x20the\x20edge'},'evidence':'progress.move\x20L81\x20(<=80)'},{'field':'session','disposition':{'kind':'attribute','note':'Per-node\x20session\x20records\x20(runtime\x20state)'},'evidence':'progress.move\x20L82'},{'field':'history','disposition':{'kind':'attribute','note':'Node-history\x20ParentTableVec\x20(runtime\x20audit\x20trail,\x20not\x20enumerated\x20as\x20edges)'},'evidence':'progress.move\x20L83'},{'field':'current_time','disposition':{'kind':'attribute','note':'Last\x20activity\x20clock\x20(staleness\x20signal)'},'evidence':'progress.move\x20L84'}]},MACHINE={'object':'Machine','moveStruct':'machine.move\x20L298-307\x20Machine','fields':[SYS('machine.move\x20L298-307'),{'field':'description','disposition':{'kind':'attribute','note':'Workflow\x20description'},'evidence':'machine.move\x20L298-307'},{'field':'nodes','disposition':{'kind':'edge','schema':'machine.node','coSchemas':['wf.transition','wf.forward_guard'],'note':'ParentLinkedTable\x20walk\x20yields\x20node\x20rows;\x20transitions\x20and\x20forward\x20guards\x20derive\x20from\x20the\x20same\x20rows'},'evidence':'machine.move\x20L301'},{'field':'consensus_repositories','disposition':{'kind':'edge','schema':'machine.consensus_repository'},'evidence':'machine.move\x20L302'},{'field':'bPaused','disposition':{'kind':'attribute','note':'Workflow\x20pause\x20flag'},'evidence':'machine.move\x20L298-307'},{'field':'bPublished','disposition':{'kind':'attribute','note':'Publish\x20flag;\x20freezes\x20the\x20node\x20table'},'evidence':'machine.move\x20L298-307'},{'field':'um','disposition':{'kind':'edge','schema':'machine.um'},'evidence':'machine.move\x20L305'},{'field':'permission','disposition':{'kind':'edge','schema':'machine.permission'},'evidence':'machine.move\x20L306'}]},ALLOCATION={'object':'Allocation','moveStruct':'allocation.move\x20L196-202\x20Allocation<T>','fields':[SYS('allocation.move\x20L196-202'),{'field':'balance','disposition':{'kind':'attribute','note':'Remaining\x20pool\x20balance\x20(solvency\x20signal)'},'evidence':'allocation.move\x20L196-202'},{'field':'allocators','disposition':{'kind':'edge','schema':'allocation.guard','note':'Allocator\x20segments;\x20guard\x20members\x20are\x20the\x20edge,\x20sharing\x20amounts\x20ride\x20the\x20payload'},'evidence':'allocation.move\x20L199,L194-200'},{'field':'payment_info','disposition':{'kind':'edge','schema':'allocation.for_object','coSchemas':['allocation.for_guard'],'note':'PaymentInfo\x20captured\x20at\x20pool\x20create;\x20remark/index\x20are\x20attributes'},'evidence':'allocation.move\x20L200;\x20payment.move\x20L66-71'},{'field':'payment','disposition':{'kind':'edge','schema':'allocation.payment'},'evidence':'allocation.move\x20L201,L307-316'}]},ARBITRATION={'object':'Arbitration','moveStruct':'arbitration.move\x20L47-58\x20Arbitration<T>','fields':[SYS('arbitration.move\x20L47-58'),{'field':'description','disposition':{'kind':'attribute','note':'Arbitration\x20service\x20self-description'},'evidence':'arbitration.move\x20L47-58'},{'field':'location','disposition':{'kind':'attribute','note':'Jurisdiction\x20/\x20service\x20area'},'evidence':'arbitration.move\x20L47-58'},{'field':'voting_guard','disposition':{'kind':'edge','schema':'arbitration.voting_guard','note':'Empty\x20vector\x20=\x20open\x20voting;\x20members\x20carry\x20vote\x20weight'},'evidence':'arbitration.move\x20L51'},{'field':'usage_guard','disposition':{'kind':'edge','schema':'arbitration.usage_guard'},'evidence':'arbitration.move\x20L52'},{'field':'fee','disposition':{'kind':'attribute','note':'Case\x20filing\x20fee'},'evidence':'arbitration.move\x20L53'},{'field':'balance','disposition':{'kind':'attribute','note':'Service\x20balance\x20(solvency\x20signal)'},'evidence':'arbitration.move\x20L54'},{'field':'bPaused','disposition':{'kind':'attribute','note':'Service\x20pause\x20flag'},'evidence':'arbitration.move\x20L55'},{'field':'um','disposition':{'kind':'edge','schema':'arbitration.um'},'evidence':'arbitration.move\x20L56'},{'field':'permission','disposition':{'kind':'edge','schema':'arbitration.permission'},'evidence':'arbitration.move\x20L57'}]},ARB={'object':'Arb','moveStruct':'arb.move\x20L95-110\x20Arb<T>','fields':[SYS('arb.move\x20L95-110'),{'field':'description','disposition':{'kind':'attribute','note':'Case\x20description'},'evidence':'arb.move\x20L95-110'},{'field':'order','disposition':{'kind':'edge','schema':'arb.order'},'evidence':'arb.move\x20L98'},{'field':'arbitration','disposition':{'kind':'edge','schema':'arb.arbitration_service'},'evidence':'arb.move\x20L99'},{'field':'voted','disposition':{'kind':'edge','schema':'arb.voter','note':'Voter\x20members\x20are\x20the\x20edge;\x20weights/agrees\x20ride\x20the\x20payload'},'evidence':'arb.move\x20L100\x20(<=520)'},{'field':'proposition','disposition':{'kind':'attribute','note':'Propositions\x20and\x20votes\x20(state-machine\x20input)'},'evidence':'arb.move\x20L101'},{'field':'fee','disposition':{'kind':'attribute','note':'Escrowed\x20case\x20fee'},'evidence':'arb.move\x20L102'},{'field':'feedback','disposition':{'kind':'attribute','note':'Ruling\x20feedback\x20text'},'evidence':'arb.move\x20L103'},{'field':'indemnity','disposition':{'kind':'attribute','note':'Ruled\x20indemnity\x20(compensation\x20outcome)'},'evidence':'arb.move\x20L104'},{'field':'voting_deadline','disposition':{'kind':'attribute','note':'Voting\x20deadline\x20(timestamp-ms)'},'evidence':'arb.move\x20L105'},{'field':'objection','disposition':{'kind':'attribute','note':'Objection\x20record'},'evidence':'arb.move\x20L106'},{'field':'status','disposition':{'kind':'attribute','note':'Case\x20state-machine\x20stage\x20(analyzer\x20input)'},'evidence':'arb.move\x20L107'},{'field':'compensation_time','disposition':{'kind':'attribute','note':'When\x20compensation\x20executed\x20(timestamp-ms)'},'evidence':'arb.move\x20L108'},{'field':'time','disposition':{'kind':'attribute','note':'Case\x20creation\x20time\x20(timestamp-ms)'},'evidence':'arb.move\x20L109'}]},DEMAND={'object':'Demand','moveStruct':'demand.move\x20L67-76\x20Demand','fields':[SYS('demand.move\x20L67-76'),{'field':'description','disposition':{'kind':'attribute','note':'What\x20the\x20demanding\x20side\x20asks\x20for'},'evidence':'demand.move\x20L67-76'},{'field':'location','disposition':{'kind':'attribute','note':'Demand\x20area'},'evidence':'demand.move\x20L67-76'},{'field':'rewards','disposition':{'kind':'edge','schema':'demand.reward'},'evidence':'demand.move\x20L71'},{'field':'guards','disposition':{'kind':'edge','schema':'demand.guard','note':'Empty\x20=\x20bare\x20present\x20(no\x20acceptance\x20gate)'},'evidence':'demand.move\x20L72'},{'field':'presenters','disposition':{'kind':'edge','schema':'demand.presenter','coSchemas':['demand.presenter_service'],'note':'One\x20ParentTable\x20read\x20backs\x20both\x20the\x20presenter\x20edge\x20and\x20the\x20same-row\x20sub-service\x20co-edge'},'evidence':'demand.move\x20L73,L46-54'},{'field':'um','disposition':{'kind':'edge','schema':'demand.um'},'evidence':'demand.move\x20L74'},{'field':'permission','disposition':{'kind':'edge','schema':'demand.permission'},'evidence':'demand.move\x20L75'}]},REWARD={'object':'Reward','moveStruct':'reward.move\x20L129-138\x20Reward<T>','fields':[SYS('reward.move\x20L129-138'),{'field':'description','disposition':{'kind':'attribute','note':'Pool\x20purpose\x20description'},'evidence':'reward.move\x20L129-138'},{'field':'guards','disposition':{'kind':'edge','schema':'reward.guard','note':'Members\x20carry\x20recipient/amount/expiration\x20semantics\x20in\x20the\x20payload'},'evidence':'reward.move\x20L132'},{'field':'balance','disposition':{'kind':'attribute','note':'Remaining\x20pool\x20balance\x20(solvency\x20signal)'},'evidence':'reward.move\x20L133'},{'field':'guard_not_added_expiration_time','disposition':{'kind':'attribute','note':'Claim-window\x20expiry\x20when\x20guards\x20were\x20never\x20added'},'evidence':'reward.move\x20L134'},{'field':'record','disposition':{'kind':'edge','schema':'reward.claim'},'evidence':'reward.move\x20L135,L117-138'},{'field':'um','disposition':{'kind':'edge','schema':'reward.um'},'evidence':'reward.move\x20L136'},{'field':'permission','disposition':{'kind':'edge','schema':'reward.permission'},'evidence':'reward.move\x20L137'}]},REPOSITORY={'object':'Repository','moveStruct':'repository.move\x20L461-469\x20Repository','fields':[SYS('repository.move\x20L461-469'),{'field':'description','disposition':{'kind':'attribute','note':'Repository\x20description'},'evidence':'repository.move\x20L461-469'},{'field':'policies','disposition':{'kind':'edge','schema':'repository.policy_guard','coSchemas':['repository.quote_guard'],'note':'PolicyRule\x20vector;\x20write_guard[].guard\x20members\x20and\x20quote_guard\x20are\x20two\x20deep\x20edges;\x20policy\x20name\x20is\x20an\x20attribute'},'evidence':'repository.move\x20L464,L106-113'},{'field':'data','disposition':{'kind':'edge','schema':'repository.data_about','note':'DataKey.id\x20carries\x20the\x20about-object;\x20row\x20key\x20name\x20rides\x20the\x20payload'},'evidence':'repository.move\x20L465,L456-459'},{'field':'rewards','disposition':{'kind':'edge','schema':'repository.reward'},'evidence':'repository.move\x20L466'},{'field':'um','disposition':{'kind':'edge','schema':'repository.um'},'evidence':'repository.move\x20L467'},{'field':'permission','disposition':{'kind':'edge','schema':'repository.permission'},'evidence':'repository.move\x20L468'}]},CONTACT={'object':'Contact','moveStruct':'contact.move\x20L25-31\x20Contact','fields':[SYS('contact.move\x20L25-31'),{'field':'description','disposition':{'kind':'attribute','note':'Roster\x20description'},'evidence':'contact.move\x20L25-31'},{'field':'location','disposition':{'kind':'attribute','note':'Roster\x20area'},'evidence':'contact.move\x20L25-31'},{'field':'ims','disposition':{'kind':'edge','schema':'contact.im','note':'Im.at\x20members\x20are\x20the\x20edge;\x20status/join_time/description\x20ride\x20the\x20payload'},'evidence':'contact.move\x20L29,L18-23,L85-105','oq':'OQ-1\x20(at\x20verified\x20EOA)'},{'field':'permission','disposition':{'kind':'edge','schema':'contact.permission'},'evidence':'contact.move\x20L30'}]},PERMISSION={'object':'Permission','moveStruct':'permission.move\x20L33-41\x20Permission','fields':[SYS('permission.move\x20L33-41'),{'field':'owner','disposition':{'kind':'edge','schema':'permission.owner'},'evidence':'permission.move\x20L35,L537-543'},{'field':'admin','disposition':{'kind':'edge','schema':'permission.admin'},'evidence':'permission.move\x20L36'},{'field':'description','disposition':{'kind':'attribute','note':'Group\x20description'},'evidence':'permission.move\x20L37'},{'field':'remark','disposition':{'kind':'attribute','note':'Permission\x20remark\x20records'},'evidence':'permission.move\x20L38'},{'field':'table','disposition':{'kind':'edge','schema':'permission.entity','note':'ParentLinkedTable\x20of\x20EOA/Guard\x20members\x20with\x20perm-index\x20bits'},'evidence':'permission.move\x20L39'},{'field':'um','disposition':{'kind':'edge','schema':'permission.um'},'evidence':'permission.move\x20L40'}]},GUARD={'object':'Guard','moveStruct':'guard.move\x20L84-94\x20Guard','fields':[SYS('guard.move\x20L84-94'),{'field':'description','disposition':{'kind':'attribute','note':'Gate\x20description'},'evidence':'guard.move\x20L84-94'},{'field':'table','disposition':{'kind':'attribute','note':'Submission\x20slot\x20definitions\x20(identifier\x20->\x20type\x20mapping;\x20Gate\x20analysis\x20property)'},'evidence':'guard.move\x20L87'},{'field':'validated','disposition':{'kind':'attribute','note':'Validated\x20slot\x20types\x20(Gate\x20analysis\x20property)'},'evidence':'guard.move\x20L88'},{'field':'input','disposition':{'kind':'attribute','note':'Static\x20input\x20bytes\x20for\x20the\x20gate\x20predicate'},'evidence':'guard.move\x20L89'},{'field':'relies','disposition':{'kind':'edge','schema':'guard.relies'},'evidence':'guard.move\x20L90\x20(<=4,\x20one\x20level)'},{'field':'relies_logic_and','disposition':{'kind':'attribute','note':'AND/OR\x20combination\x20of\x20relied\x20gates'},'evidence':'guard.move\x20L91'},{'field':'immutable','disposition':{'kind':'attribute','note':'Whether\x20the\x20gate\x20definition\x20is\x20frozen'},'evidence':'guard.move\x20L92'},{'field':'rep','disposition':{'kind':'attribute','note':'Last\x20query-validation\x20outcome\x20flag'},'evidence':'guard.move\x20L93'}]},PASSPORT={'object':'Passport','moveStruct':'passport.move\x20L41-50\x20Passport','fields':[SYS('passport.move\x20L41-50'),{'field':'guard','disposition':{'kind':'edge','schema':'passport.guard','coSchemas':['passport.ticket_relies'],'note':'GuardInfo\x20tickets;\x20ticket.guard\x20is\x20the\x20primary\x20edge,\x20ticket.relies\x20the\x20same-ticket\x20co-edge;\x20result/impack\x20flags\x20are\x20attributes'},'evidence':'passport.move\x20L43,L32-39'},{'field':'result','disposition':{'kind':'attribute','note':'Overall\x20verification\x20outcome'},'evidence':'passport.move\x20L44'},{'field':'tx_hash','disposition':{'kind':'attribute','note':'Verification\x20transaction\x20digest'},'evidence':'passport.move\x20L45'},{'field':'impack','disposition':{'kind':'edge','schema':'passport.impack'},'evidence':'passport.move\x20L46,L227-242'},{'field':'time','disposition':{'kind':'attribute','note':'Verification\x20time\x20(timestamp-ms)'},'evidence':'passport.move\x20L47'},{'field':'signer','disposition':{'kind':'edge','schema':'passport.signer'},'evidence':'passport.move\x20L48,L94-98'},{'field':'has_verified','disposition':{'kind':'attribute','note':'Whether\x20the\x20credential\x20was\x20consumed'},'evidence':'passport.move\x20L49'}]},PROOF={'object':'Proof','moveStruct':'proof.move\x20L13-24\x20Proof','fields':[SYS('proof.move\x20L13-24'),{'field':'description','disposition':{'kind':'attribute','note':'Evidence\x20description'},'evidence':'proof.move\x20L13-24'},{'field':'proof','disposition':{'kind':'attribute','note':'Evidence\x20payload\x20string'},'evidence':'proof.move\x20L13-24'},{'field':'item_count','disposition':{'kind':'attribute','note':'Item\x20count\x20covered\x20by\x20the\x20evidence'},'evidence':'proof.move\x20L13-24'},{'field':'server_pubkey','disposition':{'kind':'attribute','note':'Witness\x20server\x20public\x20key'},'evidence':'proof.move\x20L13-24'},{'field':'server_signature','disposition':{'kind':'attribute','note':'Witness\x20server\x20signature'},'evidence':'proof.move\x20L13-24'},{'field':'about','disposition':{'kind':'edge','schema':'proof.about'},'evidence':'proof.move\x20L20'},{'field':'signer','disposition':{'kind':'edge','schema':'proof.signer'},'evidence':'proof.move\x20L21'},{'field':'proof_type','disposition':{'kind':'attribute','note':'Evidence\x20kind\x20discriminator'},'evidence':'proof.move\x20L22'},{'field':'time','disposition':{'kind':'attribute','note':'Signing\x20time\x20(timestamp-ms)'},'evidence':'proof.move\x20L23'}]},TREASURY={'object':'Treasury','moveStruct':'treasury.move\x20L72-83\x20Treasury<T>','fields':[SYS('treasury.move\x20L72-83'),{'field':'description','disposition':{'kind':'attribute','note':'Treasury\x20description'},'evidence':'treasury.move\x20L72-83'},{'field':'balance','disposition':{'kind':'attribute','note':'Current\x20balance\x20(solvency\x20signal)'},'evidence':'treasury.move\x20L75'},{'field':'history','disposition':{'kind':'edge','schema':'treasury.record'},'evidence':'treasury.move\x20L76,L39-46'},{'field':'external_deposit_guard','disposition':{'kind':'edge','schema':'treasury.deposit_guard'},'evidence':'treasury.move\x20L77,L61-65,L138-194'},{'field':'external_withdraw_guard','disposition':{'kind':'edge','schema':'treasury.withdraw_guard'},'evidence':'treasury.move\x20L78,L67-71,L197-250'},{'field':'inflow','disposition':{'kind':'attribute','note':'Lifetime\x20inflow\x20(throughput\x20signal)'},'evidence':'treasury.move\x20L79'},{'field':'outflow','disposition':{'kind':'attribute','note':'Lifetime\x20outflow\x20(throughput\x20signal)'},'evidence':'treasury.move\x20L80'},{'field':'um','disposition':{'kind':'edge','schema':'treasury.um'},'evidence':'treasury.move\x20L81'},{'field':'permission','disposition':{'kind':'edge','schema':'treasury.permission'},'evidence':'treasury.move\x20L82'}]},PAYMENT={'object':'Payment','moveStruct':'payment.move\x20L93-101\x20Payment<T>','fields':[SYS('payment.move\x20L93-101'),{'field':'amount','disposition':{'kind':'attribute','note':'Total\x20payment\x20amount'},'evidence':'payment.move\x20L93-101'},{'field':'time','disposition':{'kind':'attribute','note':'Payment\x20time\x20(timestamp-ms)'},'evidence':'payment.move\x20L93-101'},{'field':'info','disposition':{'kind':'edge','schema':'payment.for_object','coSchemas':['payment.for_guard'],'note':'PaymentInfo\x20struct;\x20for_object/for_guard\x20are\x20the\x20two\x20routing\x20edges;\x20remark/index\x20are\x20attributes'},'evidence':'payment.move\x20L97,L66-71'},{'field':'from_object','disposition':{'kind':'edge','schema':'payment.from_object'},'evidence':'payment.move\x20L98,L149-161'},{'field':'signer','disposition':{'kind':'edge','schema':'payment.signer'},'evidence':'payment.move\x20L99,L111'},{'field':'record','disposition':{'kind':'edge','schema':'payment.recipient','note':'Revenue\x20entries;\x20recipient\x20members\x20are\x20the\x20edge,\x20amounts\x20ride\x20the\x20payload'},'evidence':'payment.move\x20L100,L93-101\x20(<=200)'}]},COIN_WRAPPER={'object':'CoinWrapper','moveStruct':'payment.move\x20L40-44\x20CoinWrapper<T>','fields':[SYS('payment.move\x20L40-44'),{'field':'balance','disposition':{'kind':'transient','note':'Escrowed\x20coin\x20inside\x20the\x20in-flight\x20wrapper;\x20consumed\x20by\x20unwrap'},'evidence':'payment.move\x20L42'},{'field':'payment','disposition':{'kind':'transient','note':'Back-reference\x20to\x20the\x20Payment\x20under\x20construction;\x20process\x20object,\x20deliberately\x20not\x20a\x20graph\x20edge'},'evidence':'payment.move\x20L43,L46-53'}]},RESOURCE={'object':'Resource','moveStruct':'resource.move\x20L18-21\x20Resource','fields':[SYS('resource.move\x20L18-21'),{'field':'table','disposition':{'kind':'nonAddress','note':'AddressTag\x20rows\x20(user\x20tags/nick);\x20projected\x20as\x20node\x20attributes\x20for\x20display,\x20deliberately\x20no\x20structural\x20edge'},'evidence':'resource.move\x20L20'}]},ENTITY_ORDERS={'object':'EntityOrders','moveStruct':'entity_order.move\x20L31-34\x20EntityOrders','fields':[SYS('entity_order.move\x20L31-34'),{'field':'table','disposition':{'kind':'edge','schema':'eoa.order','note':'Per-entity\x20FIFO\x205200\x20order-membership\x20rows\x20(role\x20bits\x20in\x20payload)'},'evidence':'entity_order.move\x20L33,L12'}]},ENTITY_PERMISSION={'object':'EntityPermission','moveStruct':'entity_permission.move\x20L32-35\x20EntityPermission','fields':[SYS('entity_permission.move\x20L32-35'),{'field':'table','disposition':{'kind':'edge','schema':'eoa.permission'},'evidence':'entity_permission.move\x20L34,L32\x20(role\x20bits)'}]},ENTITY_CONTACT={'object':'EntityContact','moveStruct':'entity_contact.move\x20L24-27\x20EntityContact','fields':[SYS('entity_contact.move\x20L24-27'),{'field':'table','disposition':{'kind':'edge','schema':'eoa.contact'},'evidence':'entity_contact.move\x20L26'}]},ENTITY={'object':'Entity','moveStruct':'registrar.move\x20L176-179\x20Entity\x20(0xaab)','fields':[SYS('registrar.move\x20L176-179'),{'field':'table','disposition':{'kind':'edge','schema':'entity.profile','coSchemas':['entity.referrer','entity.resource'],'note':'One\x20AddressInfo\x20row\x20per\x20account\x20backs\x20three\x20co-edges;\x20description/records\x20are\x20attributes'},'evidence':'registrar.move\x20L178,L146-152,L236-242'}]},REGISTRAR={'object':'Registrar','moveStruct':'registrar.move\x20L171-174\x20Registrar\x20(0xaaa)','fields':[SYS('registrar.move\x20L171-174'),{'field':'table','disposition':{'kind':'edge','schema':'target.vote','note':'Per-target\x20ring\x205200\x20of\x20like/dislike/favor\x20votes'},'evidence':'registrar.move\x20L173,L154-171'}]},OBJECT_LINKER_CORE={'object':'ObjectLinkerCore','moveStruct':'object_linker.move\x20L37-40\x20ObjectLinkerCore','fields':[SYS('object_linker.move\x20L37-40'),{'field':'table','disposition':{'kind':'edge','schema':'permission.core_binding','note':'Exact\x20(non-evicting)\x20linker\x20registry'},'evidence':'object_linker.move\x20L39,L88'}]},OBJECT_LINKER_TX={'object':'ObjectLinkerTx','moveStruct':'object_linker.move\x20L43-46\x20ObjectLinkerTx','fields':[SYS('object_linker.move\x20L43-46'),{'field':'table','disposition':{'kind':'edge','schema':'permission.tx_binding','coSchemas':['service.order'],'note':'FIFO\x205200\x20runtime\x20buffer;\x20service.order\x20is\x20the\x20Order-filtered\x20view\x20of\x20the\x20same\x20rows'},'evidence':'object_linker.move\x20L45,L136-140'}]},EVENT_STREAMS={'object':'EventStreams','moveStruct':'append-only\x20event\x20streams\x20(channel\x20D;\x20no\x20struct\x20fields)','fields':[{'field':PackageAddress+'::order::NewOrderEvent','disposition':{'kind':'edge','schema':'service.order_history','coSchemas':['eoa.order_history']},'evidence':'order.move\x20L51-58,L142','oq':'OQ-2/OQ-4'},{'field':PackageAddress+'::arb::ArbEvent','disposition':{'kind':'edge','schema':'arb.history'},'evidence':'arb.move\x20L33-43,L122,L227','oq':'OQ-4'}]};export const FIELD_MANIFEST=[SERVICE,ORDER,DISCOUNT,PROGRESS,MACHINE,ALLOCATION,ARBITRATION,ARB,DEMAND,REWARD,REPOSITORY,CONTACT,PERMISSION,GUARD,PASSPORT,PROOF,TREASURY,PAYMENT,COIN_WRAPPER,RESOURCE,ENTITY_ORDERS,ENTITY_PERMISSION,ENTITY_CONTACT,ENTITY,REGISTRAR,OBJECT_LINKER_CORE,OBJECT_LINKER_TX,EVENT_STREAMS];export const MANIFEST_BY_OBJECT=new Map(FIELD_MANIFEST['map'](a=>[a['object'],a]));export const BUSINESS_OBJECTS=['Service','Order','Discount','Progress','Machine','Allocation','Arbitration','Arb','Demand','Reward','Repository','Contact','Permission','Guard','Passport','Proof','Treasury','Payment'];
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{describe,expect,it}from'vitest';import{EDGE_SCHEMAS,EDGE_SCHEMA_BY_ID}from'./edge-schema.js';import{BUSINESS_OBJECTS,FIELD_MANIFEST,MANIFEST_BY_OBJECT}from'./field-manifest.js';import{fullServiceObjects}from'./fixtures.js';const HAS_KEY_STRUCTS={'Service':['id','description','location','sales','repositories','buy_guard','machine','bPublished','bPaused','customer_required','arbitrations','compensation_fund','paused_time','setting_lock_duration','order_allocators','rewards','um','permission'],'Order':['id','items','discount','progress','machine','amount','owner','service','dispute','agent','allocation','claimed_by','required_info','time'],'Discount':['id','name','discount_type','benchmark','off','time_start','time_end','service','transferable'],'Progress':['id','machine','context_repositories','current','task','namedOperator','session','history','current_time'],'Machine':['id','description','nodes','consensus_repositories','bPaused','bPublished','um','permission'],'Allocation':['id','balance','allocators','payment_info','payment'],'Arbitration':['id','description','location','voting_guard','usage_guard','fee','balance','bPaused','um','permission'],'Arb':['id','description','order','arbitration','voted','proposition','fee','feedback','indemnity','voting_deadline','objection','status','compensation_time','time'],'Demand':['id','description','location','rewards','guards','presenters','um','permission'],'Reward':['id','description','guards','balance','guard_not_added_expiration_time','record','um','permission'],'Repository':['id','description','policies','data','rewards','um','permission'],'Contact':['id','description','location','ims','permission'],'Permission':['id','owner','admin','description','remark','table','um'],'Guard':['id','description','table','validated','input','relies','relies_logic_and','immutable','rep'],'Passport':['id','guard','result','tx_hash','impack','time','signer','has_verified'],'Proof':['id','description','proof','item_count','server_pubkey','server_signature','about','signer','proof_type','time'],'Treasury':['id','description','balance','history','external_deposit_guard','external_withdraw_guard','inflow','outflow','um','permission'],'Payment':['id','amount','time','info','from_object','signer','record'],'CoinWrapper':['id','balance','payment'],'Resource':['id','table'],'EntityOrders':['id','table'],'EntityPermission':['id','table'],'EntityContact':['id','table'],'Entity':['id','table'],'Registrar':['id','table'],'ObjectLinkerCore':['id','table'],'ObjectLinkerTx':['id','table']},NON_STRUCT_KEYS=new Set(['EventStreams']);function walk(a,b){if(b['length']===0x0)return a!==undefined;if(a===null||a===undefined)return![];if(Array['isArray'](a))return a['some'](c=>walk(c,b));if(typeof a==='object'){const c=a[b[0x0]];if(c===undefined)return![];return walk(c,b['slice'](0x1));}return![];}function readResolves(a,b){switch(a['kind']){case'field':case'fields':case'structFields':return walk(b,a['path']['split']('.'));case'deep':{if(!walk(b,a['segments']))return![];return a['field']===''||walk(b,[...a['segments'],a['field']]);}default:return!![];}}describe('field\x20manifest\x20—\x20coverage\x20(TR-12.1)',()=>{it('manifest\x20keys\x20equal\x20the\x20audited\x20has-key\x20struct\x20registry\x20plus\x20EventStreams',()=>{const a=FIELD_MANIFEST['map'](c=>c['object'])['sort'](),b=[...Object['keys'](HAS_KEY_STRUCTS),...NON_STRUCT_KEYS]['sort']();expect(a)['toEqual'](b);}),it('every\x20manifest\x20object\x27s\x20field\x20set\x20matches\x20its\x20audited\x20Move\x20struct\x20(both\x20directions)',()=>{for(const [a,b]of Object['entries'](HAS_KEY_STRUCTS)){const c=MANIFEST_BY_OBJECT['get'](a);expect(c,'missing\x20manifest\x20for\x20'+a)['toBeDefined']();const d=c['fields']['map'](e=>e['field'])['sort']();expect(d,a+'\x20field\x20mismatch')['toEqual']([...b]['sort']());}}),it('no\x20field\x20row\x20is\x20left\x20unclassified\x20(TR-12.2)',()=>{for(const a of FIELD_MANIFEST){for(const b of a['fields']){expect(['edge','attribute','transient','nonAddress'],a['object']+'.'+b['field']+'\x20kind')['toContain'](b['disposition']['kind']),b['disposition']['kind']!=='edge'&&expect(b['disposition']['note']['trim']()['length'],a['object']+'.'+b['field']+'\x20note\x20empty')['toBeGreaterThan'](0x0);}}});}),describe('field\x20manifest\x20—\x20schema\x20cross-reference',()=>{it('every\x20referenced\x20schema\x20id\x20is\x20registered\x20(primary\x20and\x20co-edges)',()=>{for(const a of FIELD_MANIFEST){for(const b of a['fields']){if(b['disposition']['kind']!=='edge')continue;expect(EDGE_SCHEMA_BY_ID['has'](b['disposition']['schema']),a['object']+'.'+b['field']+':\x20unknown\x20schema\x20'+b['disposition']['schema'])['toBe'](!![]);for(const c of b['disposition']['coSchemas']??[]){expect(EDGE_SCHEMA_BY_ID['has'](c),a['object']+'.'+b['field']+':\x20unknown\x20co-schema\x20'+c)['toBe'](!![]);}}}}),it('every\x20non-E\x20schema\x20is\x20referenced\x20by\x20the\x20manifest\x20(registry\x20completeness)',()=>{const a=new Set();for(const c of FIELD_MANIFEST){for(const d of c['fields']){if(d['disposition']['kind']!=='edge')continue;a['add'](d['disposition']['schema']);for(const e of d['disposition']['coSchemas']??[])a['add'](e);}}const b=EDGE_SCHEMAS['filter'](g=>g['family']!=='E'&&!a['has'](g['id']));expect(b['map'](g=>g['id']),'schemas\x20with\x20no\x20manifest\x20row')['toEqual']([]);}),it('business-object\x20edge\x20rows\x20are\x20sourced\x20from\x20their\x20own\x20object',()=>{for(const a of BUSINESS_OBJECTS){const b=MANIFEST_BY_OBJECT['get'](a);for(const c of b['fields']){if(c['disposition']['kind']!=='edge')continue;const d=EDGE_SCHEMA_BY_ID['get'](c['disposition']['schema']);expect(d['source'],a+'.'+c['field']+'\x20->\x20'+d['id'])['toBe'](a);}}});}),describe('field\x20manifest\x20—\x20fixture\x20resolvability',()=>{const a=fullServiceObjects();function b(c){return a['filter'](d=>d['type']===c||(d['type_raw']??'')['startsWith'](c+'<'));}it('every\x20field-family\x20read\x20path\x20resolves\x20on\x20at\x20least\x20one\x20fixture\x20instance',()=>{let c=0x0;for(const d of BUSINESS_OBJECTS){const e=MANIFEST_BY_OBJECT['get'](d),g=b(d);expect(g['length'],'no\x20fixture\x20instance\x20for\x20'+d)['toBeGreaterThan'](0x0);for(const h of e['fields']){if(h['disposition']['kind']!=='edge')continue;const i=EDGE_SCHEMA_BY_ID['get'](h['disposition']['schema']);if(i['read']['kind']!=='field'&&i['read']['kind']!=='fields'&&i['read']['kind']!=='structFields'&&i['read']['kind']!=='deep')continue;const j=g['some'](k=>readResolves(i['read'],k['data']));expect(j,i['id']+':\x20read\x20path\x20unresolvable\x20on\x20any\x20'+d+'\x20fixture')['toBe'](!![]),c+=0x1;}}expect(c,'sanity:\x20fixture-checked\x20field-family\x20edges')['toBeGreaterThan'](0x32);});});
@@ -0,0 +1,80 @@
1
+ import type { RawObject, TableItem } from "./types.js";
2
+ import type { FakePlaneState } from "./dataplane.js";
3
+ export declare const T_USDT = "0x2::wow::coins::USDT";
4
+ export interface FullAddrs {
5
+ merchant: string;
6
+ buyer: string;
7
+ agent: string;
8
+ voter1: string;
9
+ voter2: string;
10
+ member: string;
11
+ supplier: string;
12
+ claimant: string;
13
+ signer: string;
14
+ buyer2: string;
15
+ svc: string;
16
+ mac: string;
17
+ perm: string;
18
+ permArb: string;
19
+ permRew: string;
20
+ permRepo: string;
21
+ permT: string;
22
+ permDem: string;
23
+ ctShop: string;
24
+ ctMac: string;
25
+ ctArb: string;
26
+ ctRew: string;
27
+ ctRepo: string;
28
+ ctT: string;
29
+ ctDem: string;
30
+ gBuy: string;
31
+ gAlloc: string;
32
+ gShip: string;
33
+ gRel: string;
34
+ gDeep: string;
35
+ gVote: string;
36
+ gUsage: string;
37
+ gClaim: string;
38
+ gWrite: string;
39
+ gQuote: string;
40
+ gSub: string;
41
+ gDep: string;
42
+ gWd: string;
43
+ arbsvc: string;
44
+ arb1: string;
45
+ rew: string;
46
+ repo: string;
47
+ tres: string;
48
+ alloc: string;
49
+ disc: string;
50
+ o1: string;
51
+ o2: string;
52
+ pr1: string;
53
+ pr2: string;
54
+ pay1: string;
55
+ pay2: string;
56
+ proof1: string;
57
+ pp: string;
58
+ dem: string;
59
+ resource: string;
60
+ }
61
+ export declare const FULL: FullAddrs;
62
+ export declare function rowObject(type: string, data: Record<string, unknown>): {
63
+ objectId: string;
64
+ object: RawObject;
65
+ };
66
+ export declare function fullServiceObjects(): RawObject[];
67
+ export declare function fullServiceTables(): Map<string, TableItem[]>;
68
+ export declare function fullServiceKeyedFields(): Map<string, Map<string, unknown>>;
69
+ export declare function fullServiceState(): FakePlaneState;
70
+ export interface GapAddrs {
71
+ merchant: string;
72
+ svc: string;
73
+ perm: string;
74
+ macMissing: string;
75
+ bareOrder: string;
76
+ }
77
+ export declare const GAP: GapAddrs;
78
+ export declare function gapServiceState(): FakePlaneState;
79
+ export declare const TRUNC_EXTRA_ORDERS = 250;
80
+ export declare function truncatedServiceState(): FakePlaneState;
@@ -0,0 +1 @@
1
+ function mk(a,b){return'0x'+a['toString'](0x10)['padStart'](0x2,'0')+b['toString'](0x10)['padStart'](0x3e,'0');}const eoa=a=>mk(0x0,a),obj=(a,b)=>mk(0x10+a,b);export const T_USDT='0x2::wow::coins::USDT';export const FULL={'merchant':eoa(0x1),'buyer':eoa(0x2),'agent':eoa(0x3),'voter1':eoa(0x4),'voter2':eoa(0x5),'member':eoa(0x6),'supplier':eoa(0x7),'claimant':eoa(0x8),'signer':eoa(0x9),'buyer2':eoa(0xa),'svc':obj(0x4,0xa),'mac':obj(0x5,0xb),'perm':obj(0x0,0x33),'permArb':obj(0x0,0x34),'permRew':obj(0x0,0x35),'permRepo':obj(0x0,0x36),'permT':obj(0x0,0x37),'permDem':obj(0x0,0x38),'ctShop':obj(0x14,0x3c),'ctMac':obj(0x14,0x3d),'ctArb':obj(0x14,0x3e),'ctRew':obj(0x14,0x3f),'ctRepo':obj(0x14,0x40),'ctT':obj(0x14,0x41),'ctDem':obj(0x14,0x42),'gBuy':obj(0xa,0x46),'gAlloc':obj(0xa,0x47),'gShip':obj(0xa,0x48),'gRel':obj(0xa,0x49),'gDeep':obj(0xa,0x4a),'gVote':obj(0xa,0x4b),'gUsage':obj(0xa,0x4c),'gClaim':obj(0xa,0x4d),'gWrite':obj(0xa,0x4e),'gQuote':obj(0xa,0x4f),'gSub':obj(0xa,0x50),'gDep':obj(0xa,0x51),'gWd':obj(0xa,0x52),'arbsvc':obj(0x3,0x5a),'arb1':obj(0x2,0x5b),'rew':obj(0xf,0x5c),'repo':obj(0x1,0x5d),'tres':obj(0x9,0x5e),'alloc':obj(0xd,0x5f),'disc':obj(0x10,0x60),'o1':obj(0x6,0x15),'o2':obj(0x6,0x16),'pr1':obj(0x7,0x1f),'pr2':obj(0x7,0x20),'pay1':obj(0x8,0x29),'pay2':obj(0x8,0x2a),'proof1':obj(0x13,0x2d),'pp':obj(0xc,0x2e),'dem':obj(0xb,0x2f),'resource':obj(0xe,0x61)};function raw(a,b,c,d){return{'object':a,'type':b,'data':c,...d?{'type_raw':d}:{}};}let tableSeq=0x0;export function rowObject(a,b){tableSeq+=0x1;const c='0x9'+tableSeq['toString'](0x10)['padStart'](0x3f,'0');return{'objectId':c,'object':raw(c,a,b)};}function nodeRow(a,b,c){return{'key':a,...rowObject('TableItem_MachineNode',{'name':b,'value':c})};}function permRow(a,b){return{'key':a,...rowObject('TableItem_PermissionPerm',{'address':a,'perm':b})};}export function fullServiceObjects(){const a=FULL;return[raw(a['svc'],'Service',{'permission':a['perm'],'machine':a['mac'],'buy_guard':a['gBuy'],'arbitrations':[a['arbsvc']],'rewards':[a['rew']],'repositories':[a['repo']],'um':a['ctShop'],'order_allocators':{'allocators':[{'guard':a['gAlloc'],'mode':0x0}]},'bPublished':!![],'bPaused':![],'sales':'1000000','description':'three-body\x20signature\x20service\x20(fixture)','location':'test-location','customer_required':[],'balances':{'available':'500000'}},'0x2::service::Service<'+T_USDT+'>'),raw(a['mac'],'Machine',{'permission':a['perm'],'consensus_repositories':[a['repo']],'um':a['ctMac'],'bPublished':!![]}),raw(a['gBuy'],'Guard',{'relies':[],'identifier':0x0,'table':[]}),raw(a['gAlloc'],'Guard',{'relies':[],'identifier':0x1,'table':[]}),raw(a['gShip'],'Guard',{'relies':[a['gRel']],'identifier':0x2,'table':[]}),raw(a['gRel'],'Guard',{'relies':[a['gDeep']],'identifier':0x3,'table':[]}),raw(a['gDeep'],'Guard',{'relies':[],'identifier':0x4,'table':[]}),raw(a['gVote'],'Guard',{'relies':[],'identifier':0x5,'table':[]}),raw(a['gUsage'],'Guard',{'relies':[],'identifier':0x6,'table':[]}),raw(a['gClaim'],'Guard',{'relies':[],'identifier':0x7,'table':[]}),raw(a['gWrite'],'Guard',{'relies':[],'identifier':0x8,'table':[]}),raw(a['gQuote'],'Guard',{'relies':[],'identifier':0x9,'table':[]}),raw(a['gSub'],'Guard',{'relies':[],'identifier':0xa,'table':[]}),raw(a['gDep'],'Guard',{'relies':[],'identifier':0xb,'table':[]}),raw(a['gWd'],'Guard',{'relies':[],'identifier':0xc,'table':[]}),raw(a['perm'],'Permission',{'admin':[a['merchant']],'owner':a['merchant'],'um':a['ctShop'],'remark':'shop'}),raw(a['permArb'],'Permission',{'admin':[a['merchant']],'owner':a['merchant'],'um':a['ctArb'],'remark':'arb'}),raw(a['permRew'],'Permission',{'admin':[a['merchant']],'owner':a['merchant'],'um':a['ctRew'],'remark':'reward'}),raw(a['permRepo'],'Permission',{'admin':[a['merchant']],'owner':a['merchant'],'um':a['ctRepo'],'remark':'repo'}),raw(a['permT'],'Permission',{'admin':[a['merchant']],'owner':a['merchant'],'um':a['ctT'],'remark':'treasury'}),raw(a['permDem'],'Permission',{'admin':[a['supplier']],'owner':a['supplier'],'um':a['ctDem'],'remark':'demand'}),...[a['ctShop'],a['ctMac'],a['ctArb'],a['ctRew'],a['ctRepo'],a['ctT'],a['ctDem']]['map']((b,d)=>raw(b,'Contact',{'permission':[a['perm'],a['permArb'],a['permRew'],a['permRepo'],a['permT'],a['permDem']][d]??a['perm'],'description':'contact\x20book\x20'+d,'location':'','ims':[{'at':a['member'],'status':'active','join_time':0x18bcfe56800+d,'description':'ops\x20im'}]})),raw(a['arbsvc'],'Arbitration',{'permission':a['permArb'],'voting_guard':[{'guard':a['gVote'],'vote_weight':0x1}],'usage_guard':a['gUsage'],'um':a['ctArb'],'bPaused':![],'fee':'1000'},'0x2::arbitration::Arbitration<'+T_USDT+'>'),raw(a['arb1'],'Arb',{'order':a['o1'],'arbitration':a['arbsvc'],'voted':[{'voter':a['voter1'],'weight':0x3,'agrees':[0x1]},{'voter':a['voter2'],'weight':0x1,'agrees':[0x0]}],'status':0x2,'proposition':'fixture\x20case','indemnity':'100000'},'0x2::arb::Arb<'+T_USDT+'>'),raw(a['rew'],'Reward',{'permission':a['permRew'],'guards':[{'guard':a['gClaim'],'recipient':a['supplier'],'amount':'1000','expiration':null}],'um':a['ctRew'],'balance':'200000'},'0x2::reward::Reward<'+T_USDT+'>'),raw(a['repo'],'Repository',{'permission':a['permRepo'],'rewards':[a['rew']],'um':a['ctRepo'],'policies':[{'name':'default','write_guard':[{'guard':a['gWrite'],'retained_submission':[]}],'quote_guard':a['gQuote']}]}),raw(a['tres'],'Treasury',{'permission':a['permT'],'external_deposit_guard':[{'guard':a['gDep'],'identifier':0x1,'store_from_id':null}],'external_withdraw_guard':[{'guard':a['gWd'],'recipient':0x0,'identifier':0x1,'store_from_id':null}],'um':a['ctT'],'balance':'1000000','inflow':'5000000','outflow':'4000000'},'0x2::treasury::Treasury<'+T_USDT+'>'),raw(a['alloc'],'Allocation',{'allocators':{'threshold':0x1,'allocators':[{'guard':a['gAlloc'],'mode':0x0,'sharing':[{'who':a['merchant'],'sharing':'10000'}]}]},'payment':[a['pay1'],a['pay2']],'payment_info':{'for_object':a['o1'],'for_guard':a['gAlloc'],'remark':'order\x20split','index':0x0},'balance':'0'},'0x2::allocation::Allocation<'+T_USDT+'>'),raw(a['o1'],'Order',{'builder':a['buyer'],'agent':[a['agent']],'service':a['svc'],'machine':a['mac'],'progress':a['pr1'],'allocation':a['alloc'],'discount':a['disc'],'dispute':[a['arb1']],'claimed_by':a['claimant'],'required_info':a['proof1'],'items':[{'name':'signature','amount':'1000000','quantity':0x1}],'amount':'1000000','time':0x18bcfe56800}),raw(a['o2'],'Order',{'builder':a['buyer'],'agent':[],'service':a['svc'],'machine':a['mac'],'progress':a['pr2'],'dispute':[],'items':[],'amount':'0','time':0x18bcfe6eea0}),raw(a['pr1'],'Progress',{'machine':a['mac'],'task':a['o1'],'current':'done','namedOperator':[{'name':'ops','operators':[a['member']]}],'context_repositories':[a['repo']],'session':[],'history':[]}),raw(a['pr2'],'Progress',{'machine':a['mac'],'task':a['o2'],'current':'shipping','namedOperator':[],'context_repositories':[]}),raw(a['disc'],'Discount',{'service':a['svc'],'rules':{'amount':'1000','transferable':![],'time_window':0x7,'benchmark':!![]}}),raw(a['pay1'],'Payment',{'record':[{'recipient':a['merchant'],'amount':'990000'},{'recipient':a['supplier'],'amount':'10000'}],'from_object':a['alloc'],'signer':a['buyer'],'info':{'for_object':a['o1'],'for_guard':a['gAlloc'],'remark':'split','index':0x0},'amount':'1000000','time':0x18bcfe58f10},'0x2::payment::Payment<'+T_USDT+'>'),raw(a['pay2'],'Payment',{'record':[{'recipient':a['merchant'],'amount':'50000'}],'from_object':a['tres'],'signer':a['merchant'],'info':{'for_object':a['tres'],'for_guard':a['gWd'],'remark':'withdraw','index':0x0},'amount':'50000','time':0x18bcfe5b620},'0x2::payment::Payment<'+T_USDT+'>'),raw(a['proof1'],'Proof',{'signer':a['signer'],'about':a['o1'],'proof':'0x'+'ab'['repeat'](0x20),'urls':['https://example.test/proof/1'],'timestamps':[0x18bcfe56800]}),raw(a['pp'],'Passport',{'signer':a['buyer'],'guard':[{'guard':a['gVote'],'relies':[a['gSub']],'retained_submission':[]}],'impack':[a['o1']],'result':0x1,'tx_hash':'0xdeadbeef','time':0x18bcfe56800}),raw(a['dem'],'Demand',{'permission':a['permDem'],'guards':[{'guard':a['gQuote'],'service_identifier':0x9}],'rewards':[a['rew']],'um':a['ctDem'],'description':'need\x20three\x20signatures','location':'test-location'}),raw(a['resource'],'Resource',{})];}export function fullServiceTables(){const a=FULL;return new Map([[a['mac']['toLowerCase'](),[nodeRow('start','start',[]),nodeRow('shipping','shipping',[{'prev_node':'start','threshold':0x0,'forwards':[{'name':'f_ship','weight':0x1,'guard':a['gShip']}]}]),nodeRow('done','done',[{'prev_node':'shipping','threshold':0x0,'forwards':[{'name':'f_done','weight':0x1}]}])]],[a['perm']['toLowerCase'](),[permRow(a['merchant'],[0x1,0x2]),permRow(a['member'],[0x2])]],[a['permArb']['toLowerCase'](),[permRow(a['merchant'],[0x1,0x2])]],[a['permRew']['toLowerCase'](),[permRow(a['merchant'],[0x1,0x2])]],[a['permRepo']['toLowerCase'](),[permRow(a['merchant'],[0x1,0x2])]],[a['permT']['toLowerCase'](),[permRow(a['merchant'],[0x1,0x2])]],[a['permDem']['toLowerCase'](),[permRow(a['supplier'],[0x1,0x2])]],[a['dem']['toLowerCase'](),[{'key':a['supplier'],...rowObject('TableItem_DemandPresenter',{'address':a['supplier'],'recommend':'can\x20deliver\x20via\x20sub-service','service':a['svc'],'update_time':0x18bcfe56800,'acceptance_score':0x5a,'feedback':'','feedback_time':0x0})},{'key':a['member'],...rowObject('TableItem_DemandPresenter',{'address':a['member'],'recommend':'bare\x20present','service':null,'update_time':0x18bcfe58f10,'acceptance_score':null,'feedback':'','feedback_time':0x0})}]],[a['tres']['toLowerCase'](),[{'key':a['pay2'],...rowObject('TableItem_TreasuryHistory',{'op':0x0,'signer':a['merchant'],'external_guard':a['gWd'],'amount':'50000','time':0x18bcfe5b620,'store_from_id':null})}]],[a['rew']['toLowerCase'](),[{'key':a['claimant'],...rowObject('TableItem_RewardRecord',{'total':'1000','amount':[{'guard':a['gClaim'],'amount':'1000','time':0x18bcfe5dd30,'store_from_id':null}]})}]],[a['repo']['toLowerCase'](),[{'key':'01',...rowObject('TableItem_RepositoryData',{'id':a['o1'],'name':'delivery-proof','data':'0x'+'cd'['repeat'](0x20)})}]]]);}export function fullServiceKeyedFields(){const a=FULL,b=new Map();return b['set']('0xaa8',new Map([[a['buyer'],{'items':[{'role':0x1,'order':a['o1'],'time':0x18bcfe56800},{'role':0x1,'order':a['o2'],'time':0x18bcfe6eea0}]}]])),b['set']('0xaa9',new Map([[a['member'],{'items':[{'contact':a['ctShop'],'time':0x18bcfe56800}]}]])),b['set']('0xaaa',new Map([[a['svc'],{'votes':[{'who':a['voter1'],'like':!![],'dislike':![],'favor':!![]},{'who':a['voter2'],'like':![],'dislike':!![],'favor':![]}]}]])),b['set']('0xaad',new Map([[a['merchant'],{'items':[{'role':0x1,'permission':a['perm'],'time':0x1},{'role':0x1,'permission':a['permArb'],'time':0x2}]}]])),b['set']('0xaae',new Map([[a['perm'],{'items':[{'who':a['svc'],'time':0x1}]}],[a['permArb'],{'items':[{'who':a['arbsvc'],'time':0x1}]}],[a['permT'],{'items':[{'who':a['tres'],'time':0x1}]}]])),b['set']('0xaaf',new Map([[a['svc'],{'items':[{'who':a['o1'],'time':0x18bcfe56800},{'who':a['o2'],'time':0x18bcfe6eea0}]}]])),b['set']('0xaab',new Map([[a['supplier'],{'description':'Acme\x20logistics\x20co.','time':0x18bcfe57b88,'referrer':a['merchant'],'mark_object':a['resource'],'records':[{'name':'region','value_type':0x1,'value':'cn-east'}]}],[a['member'],{'description':'warehouse\x20member','time':0x18bcfe57f70,'referrer':null,'resource':null,'records':[]}]])),b;}export function fullServiceState(){return{'objects':new Map(fullServiceObjects()['map'](a=>[a['object']['toLowerCase'](),a])),'keyedFields':fullServiceKeyedFields(),'tables':fullServiceTables(),'events':new Map()};}export const GAP={'merchant':eoa(0x14),'svc':obj(0x4,0x6e),'perm':obj(0x0,0x97),'macMissing':obj(0x5,0x6f),'bareOrder':obj(0x6,0x79)};export function gapServiceState(){const a=GAP,b=[raw(a['svc'],'Service',{'permission':a['perm'],'machine':a['macMissing'],'arbitrations':[],'rewards':[],'repositories':[],'order_allocators':{'allocators':[]},'bPublished':!![],'bPaused':![],'sales':'','description':'','location':''},'0x2::service::Service<'+T_USDT+'>'),raw(a['perm'],'Permission',{'admin':[a['merchant']],'owner':a['merchant']}),raw(a['bareOrder'],'Order',{'builder':a['merchant'],'agent':[],'service':a['svc'],'dispute':[],'items':[],'amount':'0'})],c=new Map();return c['set']('0xaaf',new Map([[a['svc'],{'items':[{'who':a['bareOrder'],'time':0x18bcfe56800}]}]])),{'objects':new Map(b['map'](d=>[d['object']['toLowerCase'](),d])),'keyedFields':c,'tables':new Map(),'events':new Map()};}export const TRUNC_EXTRA_ORDERS=0xfa;export function truncatedServiceState(){const a=fullServiceState(),b=FULL,c=[],d=[{'who':b['o1'],'time':0x1},{'who':b['o2'],'time':0x2}],e=[];for(let f=0x0;f<TRUNC_EXTRA_ORDERS;f+=0x1){const g=obj(0x6,0x3e8+f);c['push'](raw(g,'Order',{'builder':b['buyer2'],'agent':[],'service':b['svc'],'dispute':[],'items':[],'amount':'1000','time':0x18bcfe56800+f})),d['push']({'who':g,'time':0x18bcfe56800+f}),e['push']({'role':0x1,'order':g,'time':0x18bcfe56800+f});}for(const h of c)a['objects']['set'](h['object']['toLowerCase'](),h);return a['keyedFields']['set']('0xaaf',new Map([[b['svc'],{'items':d}]])),a['keyedFields']['set']('0xaa8',new Map([[b['buyer2'],{'items':e}]])),a;}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{describe,expect,it}from'vitest';import{ENTRYPOINT}from'@wowok/wowok';import{FakeDataPlane}from'./dataplane.js';import{expandTopology}from'./expand.js';import{FULL,GAP,TRUNC_EXTRA_ORDERS,fullServiceState,gapServiceState,truncatedServiceState}from'./fixtures.js';const TABLE_EDGES={'tableEdges':['machine.node','permission.entity','demand.presenter']};describe('fixtures\x20—\x20fully\x20hooked\x20shop',()=>{it('expands\x20service→machine→wfnode→guard(relies)\x20and\x20the\x20arbitration/order/payment\x20subtree',async()=>{const a=new FakeDataPlane(fullServiceState()),b=await expandTopology(a,{'network':ENTRYPOINT['Mainnet'],'seed':FULL['svc'],'edges':TABLE_EDGES}),c=new Set(b['edges']['map'](f=>f['schema']));for(const f of['service.machine','service.buy_guard','service.arbitration','service.reward','service.repository','service.um','service.order_allocator_guard','machine.permission','machine.consensus_repository','machine.um','machine.node','wf.transition','wf.forward_guard','guard.relies','arbitration.permission','arbitration.voting_guard','arbitration.usage_guard','arb.order','arb.voter','reward.guard','repository.reward','service.order','order.progress','order.allocation','order.dispute','allocation.guard','permission.admin','permission.entity']){expect(c['has'](f),'missing\x20edge\x20'+f)['toBe'](!![]);}const d=b['edges']['filter'](g=>g['schema']==='guard.relies');expect(d['some'](g=>g['from']===FULL['gShip']&&g['to']===FULL['gRel']))['toBe'](!![]),expect(d['some'](g=>g['from']===FULL['gRel']&&g['to']===FULL['gDeep']))['toBe'](![]),expect(b['nodes']['has'](FULL['gDeep']),'second-hop\x20relied\x20guard\x20must\x20not\x20be\x20fetched')['toBe'](![]);const e=b['truncations']['filter'](g=>g['reason']==='schema_hops');expect(e)['toEqual']([{'nodeId':FULL['gRel'],'schema':'guard.relies','observed':0x1,'limit':0x1,'reason':'schema_hops'}]),expect(b['gaps'])['toEqual']([]);});}),describe('fixtures\x20—\x20shell\x20merchant\x20with\x20gaps',()=>{it('distinguishes\x20configured-empty\x20lists\x20from\x20a\x20dangling\x20machine\x20fetch',async()=>{const a=new FakeDataPlane(gapServiceState()),b=await expandTopology(a,{'network':ENTRYPOINT['Mainnet'],'seed':GAP['svc']});expect(b['nodes']['get'](GAP['macMissing'])?.['state']??'absent')['not']['toBe']('ok'),expect(b['gaps'])['toContain'](GAP['macMissing']),expect(b['edges']['some'](d=>d['schema']==='service.order'&&d['to']===GAP['bareOrder']))['toBe'](!![]);const c=new Set(b['edges']['map'](d=>d['schema']));for(const d of['service.arbitration','service.reward','service.repository']){expect(c['has'](d))['toBe'](![]);}});}),describe('fixtures\x20—\x20window\x20truncation',()=>{it('caps\x20service\x20order\x20fanout\x20under\x20the\x20default\x20budget\x20and\x20records\x20truncation',async()=>{const a=new FakeDataPlane(truncatedServiceState()),b=await expandTopology(a,{'network':ENTRYPOINT['Mainnet'],'seed':FULL['svc']}),c=b['edges']['filter'](d=>d['schema']==='service.order');expect(c['length'])['toBeLessThan'](0x2+TRUNC_EXTRA_ORDERS),expect(b['truncations']['some'](d=>d['schema']==='service.order'))['toBe'](!![]),expect(c['every'](d=>d['truncated']))['toBe'](!![]);}),it('caps\x20buyer\x20order\x20fanout\x20(eoa.order=100)\x20when\x20seeded\x20from\x20the\x20EOA',async()=>{const a=new FakeDataPlane(truncatedServiceState()),b=await expandTopology(a,{'network':ENTRYPOINT['Mainnet'],'seed':FULL['buyer2'],'budget':{'maxFanoutPerNode':0xc8}}),c=b['edges']['filter'](d=>d['schema']==='eoa.order');expect(c['length'])['toBe'](0x64),expect(b['truncations']['some'](d=>d['schema']==='eoa.order'))['toBe'](!![]);});});
@@ -7,11 +7,17 @@ export type { FakePlaneState } from "./dataplane.js";
7
7
  export { SdkDataPlane } from "./sdk-dataplane.js";
8
8
  export * from "./sdk-batch.js";
9
9
  export { expandTopology, orderCompletionInGraph } from "./expand.js";
10
- export { TOPOLOGY_INTENTS, INTENT_PRESETS, resolveExpansionStrategy, isTopologyIntent, normalizeTopologyFocusPref, type TopologyIntent, type IntentPreset, type StrategyFragment, type ExpansionStrategy, type StrategyResolutionInput, type ExplicitExpansionParams, type TopologyFocusPref, } from "./strategy.js";
10
+ export { TOPOLOGY_INTENTS, INTENT_PRESETS, EVALUATION_SERVICE_INTENTS, EVALUATION_SERVICE_BUDGET, EVALUATION_SERVICE_EDGES, resolveExpansionStrategy, withEvaluationBundle, isTopologyIntent, normalizeTopologyFocusPref, normalizeSchemaHops, type TopologyIntent, type IntentPreset, type StrategyFragment, type ExpansionStrategy, type StrategyResolutionInput, type ExplicitExpansionParams, type TopologyFocusPref, } from "./strategy.js";
11
11
  export { detectFakeOrders, detectFakeReviews, detectShellMerchant, reputationTradeNote, assessAntiCheat, } from "./anti-cheat.js";
12
12
  export type { AntiCheatSeverity, AntiCheatSignal, OrderEvidence, ReviewEvidence, MerchantEvidence, } from "./anti-cheat.js";
13
13
  export { buildViewport, edgesOut, edgesInc, nodeOf } from "./viewport.js";
14
14
  export { buildRoleInterest, toCommercialRole, viewerRoleOf, type RoleInterestResult, } from "./interest.js";
15
15
  export { buildControlIndex } from "./analyze.js";
16
+ export { projectEvaluationFacts } from "./facts.js";
17
+ export { projectFacets } from "./facet-projection.js";
18
+ export type { FacetState, FacetMoney, FacetAmount, FacetSignal, FacetScoreRef, FacetGraphRef, FacetGraph, FacetResult, FacetsBlock, FacetProjectionProfile, FacetWorkflowShape, ProjectFacetsInput, } from "./facet-projection.js";
19
+ export type { FactState, EvaluationDimension, FactProvenance, Fact, CoverageSlot, EntityProfileAttributes, GraphEvaluationFacts, ArbitrationBinding, VoteCounts, OrderWindowStats, WorkflowShape, FundPosition, FundExposure, TransparencyProfile, RiskFindingRefs, } from "./facts.js";
16
20
  export { projectRelationshipFacts } from "./project-relationship.js";
17
- export { DEFAULT_ANALYZERS, registerAnalyzer, getAnalyzer, listAnalyzers, runAnalyzers, adaptNodeAnalyzer, runNodeAnalyzers, pathConfidence, type NodeRuleBinding, type NodeRuleOutcome, } from "./analyze.js";
21
+ export { DEFAULT_ANALYZERS, registerAnalyzer, getAnalyzer, listAnalyzers, runAnalyzers, adaptNodeAnalyzer, runNodeAnalyzers, pathConfidence, findingWhere, findingWhereResolved, type NodeRuleBinding, type NodeRuleOutcome, } from "./analyze.js";
22
+ export { buildNameIndex, createNameResolver, humanizeStoredName, humanizeTypeTag, isWfNodeId, shortAddress, wfMachineOf, wfNodeName, type NameIndex, type NameResolver, type ResolvedName, } from "./names.js";
23
+ export { buildProposalGraph, PROPOSAL_GAP_ANALYZER, type ProposalGraphOptions } from "./proposal-graph.js";
@@ -1 +1 @@
1
- export*from'./types.js';export*from'./edge-schema.js';export*from'./extract.js';export*from'./order-status.js';export{MAX_OBJECTS_PER_QUERY,DEFAULT_BUDGET,mergeBudget,chunk50,mapPool,FakeDataPlane}from'./dataplane.js';export{SdkDataPlane}from'./sdk-dataplane.js';export*from'./sdk-batch.js';export{expandTopology,orderCompletionInGraph}from'./expand.js';export{TOPOLOGY_INTENTS,INTENT_PRESETS,resolveExpansionStrategy,isTopologyIntent,normalizeTopologyFocusPref}from'./strategy.js';export{detectFakeOrders,detectFakeReviews,detectShellMerchant,reputationTradeNote,assessAntiCheat}from'./anti-cheat.js';export{buildViewport,edgesOut,edgesInc,nodeOf}from'./viewport.js';export{buildRoleInterest,toCommercialRole,viewerRoleOf}from'./interest.js';export{buildControlIndex}from'./analyze.js';export{projectRelationshipFacts}from'./project-relationship.js';export{DEFAULT_ANALYZERS,registerAnalyzer,getAnalyzer,listAnalyzers,runAnalyzers,adaptNodeAnalyzer,runNodeAnalyzers,pathConfidence}from'./analyze.js';
1
+ export*from'./types.js';export*from'./edge-schema.js';export*from'./extract.js';export*from'./order-status.js';export{MAX_OBJECTS_PER_QUERY,DEFAULT_BUDGET,mergeBudget,chunk50,mapPool,FakeDataPlane}from'./dataplane.js';export{SdkDataPlane}from'./sdk-dataplane.js';export*from'./sdk-batch.js';export{expandTopology,orderCompletionInGraph}from'./expand.js';export{TOPOLOGY_INTENTS,INTENT_PRESETS,EVALUATION_SERVICE_INTENTS,EVALUATION_SERVICE_BUDGET,EVALUATION_SERVICE_EDGES,resolveExpansionStrategy,withEvaluationBundle,isTopologyIntent,normalizeTopologyFocusPref,normalizeSchemaHops}from'./strategy.js';export{detectFakeOrders,detectFakeReviews,detectShellMerchant,reputationTradeNote,assessAntiCheat}from'./anti-cheat.js';export{buildViewport,edgesOut,edgesInc,nodeOf}from'./viewport.js';export{buildRoleInterest,toCommercialRole,viewerRoleOf}from'./interest.js';export{buildControlIndex}from'./analyze.js';export{projectEvaluationFacts}from'./facts.js';export{projectFacets}from'./facet-projection.js';export{projectRelationshipFacts}from'./project-relationship.js';export{DEFAULT_ANALYZERS,registerAnalyzer,getAnalyzer,listAnalyzers,runAnalyzers,adaptNodeAnalyzer,runNodeAnalyzers,pathConfidence,findingWhere,findingWhereResolved}from'./analyze.js';export{buildNameIndex,createNameResolver,humanizeStoredName,humanizeTypeTag,isWfNodeId,shortAddress,wfMachineOf,wfNodeName}from'./names.js';export{buildProposalGraph,PROPOSAL_GAP_ANALYZER}from'./proposal-graph.js';
@@ -1 +1 @@
1
- import{COMMERCIAL_ROLES}from'../../role/types.js';import{resolveInterests,ROLE_INTERESTS}from'../../evaluation/game-strategy.js';import{evaluateNodeGame}from'../../evaluation/node-game.js';import{evaluateArbGame}from'../../evaluation/arbitration-game.js';import{consequenceOf,recommendedCallForExecutionPath}from'../../participation/radar-core.js';import{buildViewport}from'./viewport.js';import{buildControlIndex,pathConfidence,runAnalyzers}from'./analyze.js';import{orderCompletionInGraph}from'./expand.js';const VIEWER_OF={'customer':'buyer','prospect':'buyer','demander':'demander','merchant':'merchant','collaborator':'collaborator','supplier':'supplier','arbitrator':'arbitrator','neutral':'neutral','system':'system'},COMMERCIAL_ROLE_SET=new Set(COMMERCIAL_ROLES);export function toCommercialRole(a){if(a==='buyer')return'customer';return COMMERCIAL_ROLE_SET['has'](a)?a:'neutral';}export function viewerRoleOf(a){return VIEWER_OF[a];}function root(a){const b=a?.['raw'],c=b?.['data']??b;return c&&typeof c==='object'?c:undefined;}function str(a){return typeof a==='string'&&a!=='0x0'?a:undefined;}function objNode(a,b){const c=a['graph']['nodes']['get'](b['toLowerCase']());return c&&a['visibleNodes']['has'](c['id'])&&c['kind']==='object'&&c['raw']?c:undefined;}function visible(a,b){return a['visibleEdges']['filter'](c=>c['schema']===b);}function outEdges(a,b,c){const d=b['toLowerCase']();return a['visibleEdges']['filter'](f=>f['schema']===c&&f['from']===d);}function incEdges(a,b,c){const d=b['toLowerCase']();return a['visibleEdges']['filter'](f=>f['schema']===c&&f['to']===d);}function wfMachineOf(a){const b=a['indexOf']('::node::');return b>=0x0?a['slice'](0x0,b):'';}function wfNodeName(a){const b=a['indexOf']('::node::');return b>=0x0?a['slice'](b+'::node::'['length']):a;}function heldPermissionIndices(a,c){const d=new Map();for(const f of outEdges(a,c,'eoa.permission')){const g=new Set();d['set'](f['to'],g);for(const h of outEdges(a,f['to'],'permission.entity')){for(const i of Array['isArray'](h['payload']?.['permIndices'])?h['payload']['permIndices']:[]){const j=Number(i);if(Number['isInteger'](j))g['add'](j);}}}return d;}const MAX_STAKES=0x10;function orderStake(a,b,c,e){const f=objNode(a,b),g=root(f)??{},h=orderCompletionInGraph(a['graph'],b);return{'object':b['toLowerCase'](),'object_type':f?.['objectType']??'Order','positions':c,...str(g['amount'])?{'amount':String(g['amount'])}:{},...f?.['coinType']?{'coin_type':f['coinType']}:{},...h['status']!=='unknown'||f?{'state':h['status']}:{},'evidence':e};}function arbState(a,b){return str(root(objNode(a,b))?.['status']);}function collectStakes(a,b,c,d){const f=new Map(),g=(j,k,l,m)=>{const n=j['toLowerCase'](),o=f['get'](n);if(o){if(!o['positions']['includes'](k))o['positions']['push'](k);for(const p of l)if(!o['evidence']['includes'](p))o['evidence']['push'](p);return;}if(f['size']>=MAX_STAKES)return;f['set'](n,m([k],l));},h=new Set();for(const j of outEdges(a,b,'eoa.order'))h['add'](j['to']);for(const k of incEdges(a,b,'order.builder'))h['add'](k['from']);for(const l of h){g(l,'buyer',['eoa.order','order.builder'],(m,n)=>orderStake(a,l,m,n));}const i=new Set(d['keys']());for(const m of outEdges(a,b,'eoa.permission'))i['add'](m['to']);for(const [n,o]of c['objectsByEoa']){if(n!==b)continue;for(const p of o){const q=a['graph']['nodes']['get'](p);q?.['objectType']==='Demand'?g(p,'demand_owner',['eoa.permission','demand.permission'],(r,s)=>{const t=outEdges(a,p,'demand.presenter')['length'];return{'object':p['toLowerCase'](),'object_type':'Demand','positions':r,'state':t+'\x20presenter(s)','evidence':s};}):g(p,'controller',['eoa.permission','permission.core_binding'],(r,s)=>({'object':p['toLowerCase'](),'object_type':q?.['objectType']??'object','positions':r,'evidence':s}));}}for(const r of visible(a,'demand.permission')){if(!i['has'](r['to']))continue;g(r['from'],'demand_owner',['demand.permission'],(s,t)=>{const u=outEdges(a,r['from'],'demand.presenter')['length'];return{'object':r['from']['toLowerCase'](),'object_type':'Demand','positions':s,'state':u+'\x20presenter(s)','evidence':t};});}for(const [s,t]of c['objectsByEoa']){if(s!==b)continue;for(const u of t){if(a['graph']['nodes']['get'](u)?.['objectType']!=='Service')continue;for(const w of outEdges(a,u,'service.order')){g(w['to'],'seller',['service.order'],(x,y)=>orderStake(a,w['to'],x,y));}}}for(const x of incEdges(a,b,'demand.presenter')){g(x['from'],'presenter',['demand.presenter'],(y,z)=>({'object':x['from']['toLowerCase'](),'object_type':a['graph']['nodes']['get'](x['from'])?.['objectType']??'Demand','positions':y,'evidence':z}));}for(const y of incEdges(a,b,'arb.voter')){g(y['from'],'voter',['arb.voter'],(z,A)=>{const B=arbState(a,y['from']);return{'object':y['from']['toLowerCase'](),'object_type':'Arb','positions':z,...B?{'state':B}:{},'evidence':A};});}for(const [z,A]of c['objectsByEoa']){if(z!==b)continue;for(const B of A){if(a['graph']['nodes']['get'](B)?.['objectType']!=='Arbitration')continue;for(const C of incEdges(a,B,'arb.arbitration_service')){g(C['from'],'arbitration_owner',['arb.arbitration_service'],(D,E)=>{const F=arbState(a,C['from']);return{'object':C['from']['toLowerCase'](),'object_type':'Arb','positions':D,...F?{'state':F}:{},'evidence':E};});}}}for(const [D,E]of f){if(a['graph']['nodes']['get'](D)?.['objectType']!=='Order')continue;if(outEdges(a,D,'order.dispute')['length']>0x0&&!E['positions']['includes']('disputant')){E['positions']['push']('disputant');if(!E['evidence']['includes']('order.dispute'))E['evidence']['push']('order.dispute');}}return[...f['values']()];}const MAX_ACTION_GROUPS=0x8;function forwardsAt(a,b,c){const d=b['toLowerCase']()+'::node::',f=[];for(const g of a['visibleEdges']){if(g['schema']!=='wf.transition'||!g['from']['startsWith'](d))continue;if(wfNodeName(g['from'])!==c)continue;f['push']({'edge':g,'name':String(g['payload']?.['forward']??g['payload']?.['prevNode']+'→'+g['payload']?.['node']),'toNode':String(g['payload']?.['node']??wfNodeName(g['to'])),'permissionIndex':typeof g['payload']?.['permissionIndex']==='number'?g['payload']['permissionIndex']:null,'namedOperator':typeof g['payload']?.['namedOperator']==='string'?g['payload']['namedOperator']:null,'guard':str(g['payload']?.['guard']),'weight':typeof g['payload']?.['weight']==='number'?g['payload']['weight']:undefined,'threshold':typeof g['payload']?.['threshold']==='number'?g['payload']['threshold']:undefined});}return f;}function executionPathOf(a,b,c){if(a['permissionIndex']!=null)return c['has'](a['permissionIndex'])?'permission':'not_available';if(a['namedOperator']==='')return b?'order_holder':'not_available';return'not_available';}function allocationSummaryOf(a,b,c,e){const f=outEdges(a,b,'order.allocation')[0x0]?.['to'];if(!f)return undefined;const g=root(objNode(a,f)),h=Array['isArray'](g?.['allocators'])?g['allocators']:[];if(h['length']===0x0)return undefined;let i=0x0,j=0x0,k=0x0,l=0x0;const m=o=>{if(typeof o==='string')return o['startsWith']('0x')||o['startsWith']('00')?o['toLowerCase']():undefined;if(o&&typeof o==='object'){const p=o;if('Entity'in p)return typeof p['Entity']==='string'?p['Entity']['toLowerCase']():undefined;}return undefined;},n=o=>(o&&typeof o==='object'&&'GuardIdentifier'in o)===!![];for(const o of h){const p=o??{};for(const q of Array['isArray'](p['sharing'])?p['sharing']:[]){const r=q??{};i++;const t=m(r['who']);if(t===c['toLowerCase']())k++;else{if(e&&t===e['toLowerCase']())l++;else{if(r['who']==='Signer')l++;else{if(n(r['who']))j++;}}}}}if(i===0x0)return undefined;return{'recipient_slots':i,'guard_gated_slots':j,'direct_to_me_slots':k,'to_payer_slots':l};}function actionGroupFor(a,b,c,e,g,h,i){const j=objNode(a,g),k=root(j)??{},l=str(k['progress']),m=str(k['machine'])??wfMachineOf(l??''),n=l?root(objNode(a,l)):undefined,o=str(n?.['current'])??'';if(!m||!o||!l)return undefined;const p=forwardsAt(a,m,o);if(p['length']===0x0)return undefined;const q=outEdges(a,g,'order.service')[0x0]?.['to'],r=q?root(objNode(a,q)):undefined,s=outEdges(a,g,'order.builder')[0x0]?.['to'],t=[],u=[],w=new Map(),x=[];for(const A of p){const B=executionPathOf(A,h,i);if(B==='not_available'){const D=A['permissionIndex']!=null?'requires\x20permission\x20index\x20'+A['permissionIndex']+'\x20(not\x20held\x20by\x20the\x20observer\x20in\x20this\x20view)':A['namedOperator']!=null&&A['namedOperator']!==''?'named\x20operator\x20\x27'+A['namedOperator']+'\x27\x20resolves\x20off-chain\x20(LocalMark)\x20—\x20not\x20decidable\x20from\x20graph\x20evidence':'unbound\x20forward\x20—\x20only\x20a\x20guard\x20or\x20the\x20payer\x27s\x20transaction\x20can\x20advance\x20it';u['push']({'forward':A['name'],'reason':D});const E=A['permissionIndex']!=null?'permission\x20index\x20'+A['permissionIndex']:A['namedOperator']!=null&&A['namedOperator']!==''?'named\x20operator\x20\x27'+A['namedOperator']+'\x27':'guard/payer-direct\x20only',F=w['get'](E)??[];F['push'](A['name']),w['set'](E,F);continue;}const C=recommendedCallForExecutionPath(B,A['guard']!=null);t['push']({'name':A['name'],'to_node':A['toNode'],'execution_path':B,...A['guard']?{'guard':A['guard']}:{},'consequence':consequenceOf(A['toNode'],undefined),...A['weight']!==undefined?{'weight':A['weight']}:{}});if(C)x['push']({'forward':A['name'],'call':C});}const y=Math['max'](0x1,...p['map'](G=>G['threshold']??0x1)),z=evaluateNodeGame({'current_node':o,'perspective':c,...e?.['risk_appetite']?{'appetite':e['risk_appetite']}:{},...y>0x1?{'threshold':y}:{},'allocation':allocationSummaryOf(a,g,b,s),...e?.['requirements']?{'requirements':e['requirements']}:{},...str(k['amount'])?{'order_amount':String(k['amount'])}:{},...r&&str(r['compensation_fund'])?{'compensation_fund':String(r['compensation_fund'])}:{},'operable':t,'waiting_on':[...w['entries']()]['map'](([G,H])=>({'role':G,'forwards':H}))});return{'order':g['toLowerCase'](),'machine':m['toLowerCase'](),'current_node':o,'advice':z,'recommended_calls':x,'blocked_forwards':u};}function collectActions(a,c,d,e,f,g){const h=new Set();for(const j of g['values']())for(const k of j)h['add'](k);const i=[];for(const l of f){if(i['length']>=MAX_ACTION_GROUPS)break;if(a['graph']['nodes']['get'](l['object'])?.['objectType']!=='Order')continue;const m=l['positions']['includes']('buyer'),n=actionGroupFor(a,c,d,e,l['object'],m,h);n&&(n['advice']['actions']['length']>0x0||n['blocked_forwards']['length']>0x0)&&i['push'](n);}return i;}function arbPerspectiveOf(a,b,c){if(c['positions']['includes']('voter')||c['positions']['includes']('arbitration_owner'))return'arbitrator';if(c['positions']['includes']('buyer')||c['positions']['includes']('disputant'))return'customer';if(c['positions']['includes']('seller'))return'merchant';return undefined;}function collectArbActions(a,b,c,d){const e=[];for(const f of d){if(a['graph']['nodes']['get'](f['object'])?.['objectType']!=='Arb')continue;const g=arbPerspectiveOf(a,b,f),h=arbState(a,f['object']);if(!g||!h)continue;e['push'](evaluateArbGame(h,g,{...c?.['risk_appetite']?{'risk_appetite':c['risk_appetite']}:{},...c?.['requirements']?{'requirements':c['requirements']}:{}}));}return e;}const SEVERITY_RANK={'info':0x0,'low':0x1,'medium':0x2,'high':0x3},MAX_COUNTERPARTIES=0x8;function collectCounterparties(a,b,c,d,e,f){const g=resolveInterests(c,d),h=[],i=(j,k,l)=>{if(h['length']>=MAX_COUNTERPARTIES)return;const m=ROLE_INTERESTS[k],n=[...g['prefer']['filter'](r=>m['avoid']['includes'](r)),...g['avoid']['filter'](r=>m['prefer']['includes'](r))],o=g['prefer']['filter'](r=>m['prefer']['includes'](r)),p=n['length']>0x0?'conflict':o['length']>0x0?'aligned':'neutral',q=p==='conflict'?'结构性利益冲突:你偏好\x20'+(g['prefer']['filter'](r=>m['avoid']['includes'](r))['join']('、')||'(无)')+',而\x20'+k+'\x20将其视为风险;对方追求\x20'+(m['prefer']['join']('、')||'(无)')+'。':p==='aligned'?'利益一致:双方都偏好\x20'+o['join']('、')+'。':'无直接利益交叠('+k+'\x20偏好\x20'+(m['prefer']['join']('、')||'无')+'、回避\x20'+(m['avoid']['join']('、')||'无')+')。';h['push']({'object':j['toLowerCase'](),'counter_role':k,'who':l,'their_prefer':m['prefer'],'their_avoid':m['avoid'],'alignment':p,'noteZh':q});};for(const j of e){if(a['graph']['nodes']['get'](j['object'])?.['objectType']!=='Order')continue;const k=outEdges(a,j['object'],'order.service')[0x0]?.['to'],l=k?[...f['controllers']['get'](k['toLowerCase']())??[]]:[];i(j['object'],'merchant',l);const m=outEdges(a,j['object'],'order.builder')[0x0]?.['to'];if(m&&m!==b['toLowerCase']())i(j['object'],'customer',[m]);if(outEdges(a,j['object'],'order.dispute')['length']>0x0)i(j['object'],'arbitrator',[]);}return h;}const MAX_RISK_REMINDERS=0xa;function collectRiskReminders(a,b){try{return runAnalyzers(a,{'kinds':['risk']})['filter'](c=>c['roles']['includes'](b)||c['roles']['includes']('neutral'))['sort']((c,d)=>SEVERITY_RANK[d['severity']]-SEVERITY_RANK[c['severity']])['slice'](0x0,MAX_RISK_REMINDERS);}catch{return[];}}export function buildRoleInterest(a,b,c,d){const e=b['toLowerCase'](),f=VIEWER_OF[c],g=buildViewport(a,e,f),h=buildControlIndex(g),i=heldPermissionIndices(g,e),j=collectStakes(g,e,h,i),k=collectActions(g,e,c,d,j,i),l=collectArbActions(g,e,d,j),m=collectCounterparties(g,e,c,d,j,h),n=collectRiskReminders(g,f),o=k['find'](y=>y['advice']['actions']['length']>0x0)?.['advice']['actions'][0x0],p=m['find'](y=>y['alignment']==='conflict'),q='以\x20'+c+'\x20身份观察\x20'+e+':'+(j['length']+'\x20项在途利益('+j['map'](y=>y['object_type']+':'+y['positions']['join']('/'))['slice'](0x0,0x4)['join']('、')+(j['length']>0x4?'\x20等':'')+');')+(o?'当前可执行的最优操作为订单\x20'+(k['find'](y=>y['advice']['actions'][0x0]===o)?.['order']??'')+'\x20的\x20\x27'+o['forward']+'\x27('+o['payoff_note']+');':k['length']>0x0?'存在在途订单但无可由本视角执行的操作(等待他方或链下解析);':'当前无可操作的在途订单;')+(l['length']>0x0?l['length']+'\x20个仲裁案件的行动建议;':'')+(p?'最大结构性对手张力:'+p['counter_role']+'('+p['noteZh']+')':'无明显对手张力')+(n['length']>0x0?';'+n['length']+'\x20条角色相关风险提醒。':'。'),r={'role':c,'observer':e,...d&&(d['risk_appetite']||d['requirements']?.['length'])?{'drive':d}:{},'stakes':j,'actions':k,'arb_actions':l,'counterparties':m,'risk_finding_ids':n['map'](y=>y['id']),'summaryZh':q},s=g['visibleEdges']['filter'](y=>['eoa.order','service.order','demand.presenter','arb.voter','order.dispute']['includes'](y['schema'])),{confidence:t,window:u}=pathConfidence(g,s),w=n['length']>0x0&&SEVERITY_RANK[n[0x0]['severity']]>=SEVERITY_RANK['medium']?n[0x0]['severity']:'info',x={'id':'IR:'+c+':'+e,'kind':'game','severity':w,'titleZh':'角色利益视图('+c+'):'+j['length']+'\x20项在途利益'+(o?',最优操作\x20\x27'+o['forward']+'\x27':''),'path':[e,...j['map'](y=>y['object'])],'confidence':t,...u?{'window':u}:{},'roles':[f],'detailZh':q,'suggestionZh':o?'按\x20advice\x20排序执行(\x27'+o['forward']+'\x27\x20需'+(o['guard']?'先通过\x20Guard\x20护照校验、':'')+'经\x20recommended_calls\x20给出的工具路由);对手张力与风险提醒见\x20payload。':'无可执行操作时:关注\x20blocked_forwards\x20的等待条件与对手张力变化,或切换\x20role/context_account\x20重新投影。','interest':r};return{'finding':x,'view':r};}
1
+ import{COMMERCIAL_ROLES}from'../../role/types.js';import{resolveInterests,ROLE_INTERESTS}from'../../evaluation/game-strategy.js';import{evaluateNodeGame}from'../../evaluation/node-game.js';import{evaluateArbGame}from'../../evaluation/arbitration-game.js';import{consequenceOf,recommendedCallForExecutionPath}from'../../participation/radar-core.js';import{buildViewport}from'./viewport.js';import{buildControlIndex,pathConfidence,runAnalyzers}from'./analyze.js';import{orderCompletionInGraph}from'./expand.js';const VIEWER_OF={'customer':'buyer','prospect':'buyer','demander':'demander','merchant':'merchant','collaborator':'collaborator','supplier':'supplier','arbitrator':'arbitrator','neutral':'neutral','system':'system'},COMMERCIAL_ROLE_SET=new Set(COMMERCIAL_ROLES);export function toCommercialRole(a){if(a==='buyer')return'customer';return COMMERCIAL_ROLE_SET['has'](a)?a:'neutral';}export function viewerRoleOf(a){return VIEWER_OF[a];}function root(a){const b=a?.['raw'],c=b?.['data']??b;return c&&typeof c==='object'?c:undefined;}function str(a){return typeof a==='string'&&a!=='0x0'?a:undefined;}function objNode(a,b){const c=a['graph']['nodes']['get'](b['toLowerCase']());return c&&a['visibleNodes']['has'](c['id'])&&c['kind']==='object'&&c['raw']?c:undefined;}function visible(a,b){return a['visibleEdges']['filter'](c=>c['schema']===b);}function outEdges(a,b,c){const d=b['toLowerCase']();return a['visibleEdges']['filter'](f=>f['schema']===c&&f['from']===d);}function incEdges(a,b,c){const d=b['toLowerCase']();return a['visibleEdges']['filter'](f=>f['schema']===c&&f['to']===d);}function wfMachineOf(a){const b=a['indexOf']('::node::');return b>=0x0?a['slice'](0x0,b):'';}function wfNodeName(a){const b=a['indexOf']('::node::');return b>=0x0?a['slice'](b+'::node::'['length']):a;}function heldPermissionIndices(a,c){const d=new Map();for(const f of outEdges(a,c,'eoa.permission')){const g=new Set();d['set'](f['to'],g);for(const h of outEdges(a,f['to'],'permission.entity')){for(const i of Array['isArray'](h['payload']?.['permIndices'])?h['payload']['permIndices']:[]){const j=Number(i);if(Number['isInteger'](j))g['add'](j);}}}return d;}const MAX_STAKES=0x10;function orderStake(a,b,c,e){const f=objNode(a,b),g=root(f)??{},h=orderCompletionInGraph(a['graph'],b);return{'object':b['toLowerCase'](),'object_type':f?.['objectType']??'Order','positions':c,...str(g['amount'])?{'amount':String(g['amount'])}:{},...f?.['coinType']?{'coin_type':f['coinType']}:{},...h['status']!=='unknown'||f?{'state':h['status']}:{},'evidence':e};}function arbState(a,b){return str(root(objNode(a,b))?.['status']);}function collectStakes(a,b,c,d){const f=new Map(),g=(j,k,l,m)=>{const n=j['toLowerCase'](),o=f['get'](n);if(o){if(!o['positions']['includes'](k))o['positions']['push'](k);for(const p of l)if(!o['evidence']['includes'](p))o['evidence']['push'](p);return;}if(f['size']>=MAX_STAKES)return;f['set'](n,m([k],l));},h=new Set();for(const j of outEdges(a,b,'eoa.order'))h['add'](j['to']);for(const k of incEdges(a,b,'order.builder'))h['add'](k['from']);for(const l of h){g(l,'buyer',['eoa.order','order.builder'],(m,n)=>orderStake(a,l,m,n));}const i=new Set(d['keys']());for(const m of outEdges(a,b,'eoa.permission'))i['add'](m['to']);for(const [n,o]of c['objectsByEoa']){if(n!==b)continue;for(const p of o){const q=a['graph']['nodes']['get'](p);q?.['objectType']==='Demand'?g(p,'demand_owner',['eoa.permission','demand.permission'],(r,s)=>{const t=outEdges(a,p,'demand.presenter')['length'];return{'object':p['toLowerCase'](),'object_type':'Demand','positions':r,'state':t+'\x20presenter(s)','evidence':s};}):g(p,'controller',['eoa.permission','permission.core_binding'],(r,s)=>({'object':p['toLowerCase'](),'object_type':q?.['objectType']??'object','positions':r,'evidence':s}));}}for(const r of visible(a,'demand.permission')){if(!i['has'](r['to']))continue;g(r['from'],'demand_owner',['demand.permission'],(s,t)=>{const u=outEdges(a,r['from'],'demand.presenter')['length'];return{'object':r['from']['toLowerCase'](),'object_type':'Demand','positions':s,'state':u+'\x20presenter(s)','evidence':t};});}for(const [s,t]of c['objectsByEoa']){if(s!==b)continue;for(const u of t){if(a['graph']['nodes']['get'](u)?.['objectType']!=='Service')continue;for(const w of outEdges(a,u,'service.order')){g(w['to'],'seller',['service.order'],(x,y)=>orderStake(a,w['to'],x,y));}}}for(const x of incEdges(a,b,'demand.presenter')){g(x['from'],'presenter',['demand.presenter'],(y,z)=>({'object':x['from']['toLowerCase'](),'object_type':a['graph']['nodes']['get'](x['from'])?.['objectType']??'Demand','positions':y,'evidence':z}));}for(const y of incEdges(a,b,'arb.voter')){g(y['from'],'voter',['arb.voter'],(z,A)=>{const B=arbState(a,y['from']);return{'object':y['from']['toLowerCase'](),'object_type':'Arb','positions':z,...B?{'state':B}:{},'evidence':A};});}for(const [z,A]of c['objectsByEoa']){if(z!==b)continue;for(const B of A){if(a['graph']['nodes']['get'](B)?.['objectType']!=='Arbitration')continue;for(const C of incEdges(a,B,'arb.arbitration_service')){g(C['from'],'arbitration_owner',['arb.arbitration_service'],(D,E)=>{const F=arbState(a,C['from']);return{'object':C['from']['toLowerCase'](),'object_type':'Arb','positions':D,...F?{'state':F}:{},'evidence':E};});}}}for(const [D,E]of f){if(a['graph']['nodes']['get'](D)?.['objectType']!=='Order')continue;if(outEdges(a,D,'order.dispute')['length']>0x0&&!E['positions']['includes']('disputant')){E['positions']['push']('disputant');if(!E['evidence']['includes']('order.dispute'))E['evidence']['push']('order.dispute');}}return[...f['values']()];}const MAX_ACTION_GROUPS=0x8;function forwardsAt(a,b,c){const d=b['toLowerCase']()+'::node::',f=[];for(const g of a['visibleEdges']){if(g['schema']!=='wf.transition'||!g['from']['startsWith'](d))continue;if(wfNodeName(g['from'])!==c)continue;f['push']({'edge':g,'name':String(g['payload']?.['forward']??g['payload']?.['prevNode']+'→'+g['payload']?.['node']),'toNode':String(g['payload']?.['node']??wfNodeName(g['to'])),'permissionIndex':typeof g['payload']?.['permissionIndex']==='number'?g['payload']['permissionIndex']:null,'namedOperator':typeof g['payload']?.['namedOperator']==='string'?g['payload']['namedOperator']:null,'guard':str(g['payload']?.['guard']),'weight':typeof g['payload']?.['weight']==='number'?g['payload']['weight']:undefined,'threshold':typeof g['payload']?.['threshold']==='number'?g['payload']['threshold']:undefined});}return f;}function executionPathOf(a,b,c){if(a['permissionIndex']!=null)return c['has'](a['permissionIndex'])?'permission':'not_available';if(a['namedOperator']==='')return b?'order_holder':'not_available';return'not_available';}function allocationSummaryOf(a,b,c,e){const f=outEdges(a,b,'order.allocation')[0x0]?.['to'];if(!f)return undefined;const g=root(objNode(a,f)),h=Array['isArray'](g?.['allocators'])?g['allocators']:[];if(h['length']===0x0)return undefined;let i=0x0,j=0x0,k=0x0,l=0x0;const m=o=>{if(typeof o==='string')return o['startsWith']('0x')||o['startsWith']('00')?o['toLowerCase']():undefined;if(o&&typeof o==='object'){const p=o;if('Entity'in p)return typeof p['Entity']==='string'?p['Entity']['toLowerCase']():undefined;}return undefined;},n=o=>(o&&typeof o==='object'&&'GuardIdentifier'in o)===!![];for(const o of h){const p=o??{};for(const q of Array['isArray'](p['sharing'])?p['sharing']:[]){const r=q??{};i++;const t=m(r['who']);if(t===c['toLowerCase']())k++;else{if(e&&t===e['toLowerCase']())l++;else{if(r['who']==='Signer')l++;else{if(n(r['who']))j++;}}}}}if(i===0x0)return undefined;return{'recipient_slots':i,'guard_gated_slots':j,'direct_to_me_slots':k,'to_payer_slots':l};}function actionGroupFor(a,b,c,e,g,h,i){const j=objNode(a,g),k=root(j)??{},l=str(k['progress']),m=str(k['machine'])??wfMachineOf(l??''),n=l?root(objNode(a,l)):undefined,o=str(n?.['current'])??'';if(!m||!o||!l)return undefined;const p=forwardsAt(a,m,o);if(p['length']===0x0)return undefined;const q=outEdges(a,g,'order.service')[0x0]?.['to'],r=q?root(objNode(a,q)):undefined,s=outEdges(a,g,'order.builder')[0x0]?.['to'],t=[],u=[],w=new Map(),x=[];for(const A of p){const B=executionPathOf(A,h,i);if(B==='not_available'){const D=A['permissionIndex']!=null?'requires\x20permission\x20index\x20'+A['permissionIndex']+'\x20(not\x20held\x20by\x20the\x20observer\x20in\x20this\x20view)':A['namedOperator']!=null&&A['namedOperator']!==''?'named\x20operator\x20\x27'+A['namedOperator']+'\x27\x20resolves\x20off-chain\x20(LocalMark)\x20—\x20not\x20decidable\x20from\x20graph\x20evidence':'unbound\x20forward\x20—\x20only\x20a\x20guard\x20or\x20the\x20payer\x27s\x20transaction\x20can\x20advance\x20it';u['push']({'forward':A['name'],'reason':D});const E=A['permissionIndex']!=null?'permission\x20index\x20'+A['permissionIndex']:A['namedOperator']!=null&&A['namedOperator']!==''?'named\x20operator\x20\x27'+A['namedOperator']+'\x27':'guard/payer-direct\x20only',F=w['get'](E)??[];F['push'](A['name']),w['set'](E,F);continue;}const C=recommendedCallForExecutionPath(B,A['guard']!=null);t['push']({'name':A['name'],'to_node':A['toNode'],'execution_path':B,...A['guard']?{'guard':A['guard']}:{},'consequence':consequenceOf(A['toNode'],undefined),...A['weight']!==undefined?{'weight':A['weight']}:{}});if(C)x['push']({'forward':A['name'],'call':C});}const y=Math['max'](0x1,...p['map'](G=>G['threshold']??0x1)),z=evaluateNodeGame({'current_node':o,'perspective':c,...e?.['risk_appetite']?{'appetite':e['risk_appetite']}:{},...y>0x1?{'threshold':y}:{},'allocation':allocationSummaryOf(a,g,b,s),...e?.['requirements']?{'requirements':e['requirements']}:{},...str(k['amount'])?{'order_amount':String(k['amount'])}:{},...r&&str(r['compensation_fund'])?{'compensation_fund':String(r['compensation_fund'])}:{},'operable':t,'waiting_on':[...w['entries']()]['map'](([G,H])=>({'role':G,'forwards':H}))});return{'order':g['toLowerCase'](),'machine':m['toLowerCase'](),'current_node':o,'advice':z,'recommended_calls':x,'blocked_forwards':u};}function collectActions(a,c,d,e,f,g){const h=new Set();for(const j of g['values']())for(const k of j)h['add'](k);const i=[];for(const l of f){if(i['length']>=MAX_ACTION_GROUPS)break;if(a['graph']['nodes']['get'](l['object'])?.['objectType']!=='Order')continue;const m=l['positions']['includes']('buyer'),n=actionGroupFor(a,c,d,e,l['object'],m,h);n&&(n['advice']['actions']['length']>0x0||n['blocked_forwards']['length']>0x0)&&i['push'](n);}return i;}function arbPerspectiveOf(a,b,c){if(c['positions']['includes']('voter')||c['positions']['includes']('arbitration_owner'))return'arbitrator';if(c['positions']['includes']('buyer')||c['positions']['includes']('disputant'))return'customer';if(c['positions']['includes']('seller'))return'merchant';return undefined;}function collectArbActions(a,b,c,d){const e=[];for(const f of d){if(a['graph']['nodes']['get'](f['object'])?.['objectType']!=='Arb')continue;const g=arbPerspectiveOf(a,b,f),h=arbState(a,f['object']);if(!g||!h)continue;e['push'](evaluateArbGame(h,g,{...c?.['risk_appetite']?{'risk_appetite':c['risk_appetite']}:{},...c?.['requirements']?{'requirements':c['requirements']}:{}}));}return e;}const SEVERITY_RANK={'info':0x0,'low':0x1,'medium':0x2,'high':0x3,'critical':0x4},MAX_COUNTERPARTIES=0x8;function collectCounterparties(a,b,c,d,e,f){const g=resolveInterests(c,d),h=[],i=(j,k,l)=>{if(h['length']>=MAX_COUNTERPARTIES)return;const m=ROLE_INTERESTS[k],n=[...g['prefer']['filter'](r=>m['avoid']['includes'](r)),...g['avoid']['filter'](r=>m['prefer']['includes'](r))],o=g['prefer']['filter'](r=>m['prefer']['includes'](r)),p=n['length']>0x0?'conflict':o['length']>0x0?'aligned':'neutral',q=p==='conflict'?'Structural\x20conflict\x20of\x20interest:\x20you\x20prefer\x20'+(g['prefer']['filter'](r=>m['avoid']['includes'](r))['join'](',\x20')||'(none)')+',\x20which\x20'+k+'\x20treats\x20as\x20a\x20risk;\x20they\x20pursue\x20'+(m['prefer']['join'](',\x20')||'(none)')+'.':p==='aligned'?'Aligned\x20interests:\x20both\x20sides\x20prefer\x20'+o['join'](',\x20')+'.':'No\x20direct\x20interest\x20overlap\x20('+k+'\x20prefers\x20'+(m['prefer']['join'](',\x20')||'none')+'\x20and\x20avoids\x20'+(m['avoid']['join'](',\x20')||'none')+').';h['push']({'object':j['toLowerCase'](),'counter_role':k,'who':l,'their_prefer':m['prefer'],'their_avoid':m['avoid'],'alignment':p,'note':q});};for(const j of e){if(a['graph']['nodes']['get'](j['object'])?.['objectType']!=='Order')continue;const k=outEdges(a,j['object'],'order.service')[0x0]?.['to'],l=k?[...f['controllers']['get'](k['toLowerCase']())??[]]:[];i(j['object'],'merchant',l);const m=outEdges(a,j['object'],'order.builder')[0x0]?.['to'];if(m&&m!==b['toLowerCase']())i(j['object'],'customer',[m]);if(outEdges(a,j['object'],'order.dispute')['length']>0x0)i(j['object'],'arbitrator',[]);}return h;}const MAX_RISK_REMINDERS=0xa;function collectRiskReminders(a,b){try{return runAnalyzers(a,{'kinds':['risk']})['filter'](c=>c['roles']['includes'](b)||c['roles']['includes']('neutral'))['sort']((c,d)=>SEVERITY_RANK[d['severity']]-SEVERITY_RANK[c['severity']])['slice'](0x0,MAX_RISK_REMINDERS);}catch{return[];}}export function buildRoleInterest(a,b,c,d){const e=b['toLowerCase'](),f=VIEWER_OF[c],g=buildViewport(a,e,f),h=buildControlIndex(g),i=heldPermissionIndices(g,e),j=collectStakes(g,e,h,i),k=collectActions(g,e,c,d,j,i),l=collectArbActions(g,e,d,j),m=collectCounterparties(g,e,c,d,j,h),n=collectRiskReminders(g,f),o=k['find'](y=>y['advice']['actions']['length']>0x0)?.['advice']['actions'][0x0],p=m['find'](y=>y['alignment']==='conflict'),q='Viewing\x20'+e+'\x20as\x20'+c+':\x20'+(j['length']+'\x20stake(s)\x20in\x20flight\x20('+j['map'](y=>y['object_type']+':'+y['positions']['join']('/'))['slice'](0x0,0x4)['join'](',\x20')+(j['length']>0x4?'\x20etc.':'')+');\x20')+(o?'the\x20best\x20currently\x20operable\x20action\x20is\x20\x27'+o['forward']+'\x27\x20on\x20order\x20'+(k['find'](y=>y['advice']['actions'][0x0]===o)?.['order']??'')+'\x20('+o['payoff_note']+');\x20':k['length']>0x0?'orders\x20in\x20flight\x20but\x20no\x20action\x20operable\x20from\x20this\x20view\x20(waiting\x20on\x20others\x20or\x20off-chain\x20resolution);\x20':'no\x20operable\x20in-flight\x20orders;\x20')+(l['length']>0x0?l['length']+'\x20arbitration\x20case\x20action\x20suggestion(s);\x20':'')+(p?'largest\x20structural\x20counterparty\x20tension:\x20'+p['counter_role']+'\x20('+p['note']+')':'no\x20notable\x20counterparty\x20tension')+(n['length']>0x0?'\x20'+n['length']+'\x20role-relevant\x20risk\x20reminder(s).':''),r={'role':c,'observer':e,...d&&(d['risk_appetite']||d['requirements']?.['length'])?{'drive':d}:{},'stakes':j,'actions':k,'arb_actions':l,'counterparties':m,'risk_finding_ids':n['map'](y=>y['id']),'summary':q},s=g['visibleEdges']['filter'](y=>['eoa.order','service.order','demand.presenter','arb.voter','order.dispute']['includes'](y['schema'])),{confidence:t,window:u}=pathConfidence(g,s),w=n['length']>0x0&&SEVERITY_RANK[n[0x0]['severity']]>=SEVERITY_RANK['medium']?n[0x0]['severity']:'info',x={'id':'IR:'+c+':'+e,'kind':'game','severity':w,'title':'Role\x20interest\x20view\x20('+c+'):\x20'+j['length']+'\x20stake(s)\x20in\x20flight'+(o?',\x20best\x20action\x20\x27'+o['forward']+'\x27':''),'path':[e,...j['map'](y=>y['object'])],'confidence':t,...u?{'window':u}:{},'roles':[f],'detail':q,'suggestion':o?'Execute\x20in\x20advice\x20order\x20(\x27'+o['forward']+'\x27\x20'+(o['guard']?'requires\x20Guard\x20passport\x20verification\x20first\x20and\x20':'')+'goes\x20through\x20the\x20tool\x20routing\x20in\x20recommended_calls);\x20see\x20the\x20payload\x20for\x20counterparty\x20tension\x20and\x20risk\x20reminders.':'When\x20no\x20action\x20is\x20operable:\x20watch\x20blocked_forwards\x20waiting\x20conditions\x20and\x20counterparty\x20tension\x20changes,\x20or\x20re-project\x20with\x20a\x20different\x20role/context_account.','interest':r};return{'finding':x,'view':r};}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{describe,expect,it}from'vitest';import{EDGE_SCHEMAS}from'./edge-schema.js';const BANNED_LABEL_WORDS=/\b(bound|attached|linked?|track(ed|ing)?)\b/i,MIN_LABEL_LENGTH=0x1e;describe('edge\x20labels\x20—\x20semantic\x20lint\x20(TR-11.2)',()=>{it('every\x20schema\x20has\x20a\x20non-empty\x20label',()=>{for(const a of EDGE_SCHEMAS){expect(a['label']['trim']()['length'],a['id']+'\x20label\x20empty')['toBeGreaterThan'](0x0);}}),it('labels\x20avoid\x20generic\x20wiring\x20verbs\x20(bound/attached/link/track)',()=>{for(const a of EDGE_SCHEMAS){const b=BANNED_LABEL_WORDS['exec'](a['label']);expect(b,a['id']+':\x20label\x20uses\x20banned\x20word\x20\x22'+b?.[0x0]+'\x22:\x20\x22'+a['label']+'\x22')['toBeNull']();}}),it('labels\x20are\x20unique\x20across\x20the\x20registry\x20(dupes\x20signal\x20copy-paste\x20genericism)',()=>{const a=new Map();for(const b of EDGE_SCHEMAS){const c=a['get'](b['label']);expect(c,'label\x20\x22'+b['label']+'\x22\x20shared\x20by\x20'+c+'\x20and\x20'+b['id'])['toBeUndefined'](),a['set'](b['label'],b['id']);}}),it('labels\x20meet\x20the\x20semantic\x20richness\x20floor',()=>{for(const a of EDGE_SCHEMAS){expect(a['label']['length'],a['id']+':\x20label\x20too\x20terse:\x20\x22'+a['label']+'\x22')['toBeGreaterThanOrEqual'](MIN_LABEL_LENGTH);}});});
@@ -0,0 +1,23 @@
1
+ import type { TopologyGraph } from "./types.js";
2
+ export interface ResolvedName {
3
+ label: string;
4
+ full?: string;
5
+ }
6
+ export declare function shortAddress(addr: string): string;
7
+ export declare function isWfNodeId(id: string): boolean;
8
+ export declare function wfMachineOf(id: string): string;
9
+ export declare function wfNodeName(id: string): string;
10
+ export declare function humanizeTypeTag(name: string): string | null;
11
+ export declare function humanizeStoredName(name: string): ResolvedName;
12
+ export interface NameIndex {
13
+ objects: Map<string, string>;
14
+ }
15
+ export declare function buildNameIndex(graph: TopologyGraph): NameIndex;
16
+ export interface NameResolver {
17
+ resolve(ref: string): ResolvedName;
18
+ resolveWf(ref: string): {
19
+ machine: ResolvedName;
20
+ node: ResolvedName;
21
+ } | undefined;
22
+ }
23
+ export declare function createNameResolver(index: NameIndex): NameResolver;
@@ -0,0 +1 @@
1
+ const WF_NODE_MARK='::node::';export function shortAddress(a){const b=a['trim']();if(!b['startsWith']('0x')||b['length']<0xe)return b;return b['slice'](0x0,0x6)+'…'+b['slice'](-0x4);}export function isWfNodeId(a){return a['includes'](WF_NODE_MARK);}export function wfMachineOf(a){const b=a['indexOf'](WF_NODE_MARK);return b>=0x0?a['slice'](0x0,b):'';}export function wfNodeName(a){const b=a['indexOf'](WF_NODE_MARK);return b>=0x0?a['slice'](b+WF_NODE_MARK['length']):a;}const TYPE_TAG_RE=/^(0x[0-9a-fA-F]+)::([A-Za-z0-9_]+)::([A-Za-z0-9_]+)(?:<(.*)>)?$/;export function humanizeTypeTag(a){const b=TYPE_TAG_RE['exec'](a['trim']());if(!b)return null;const [,,,c,d]=b;if(!d)return c;const e=[];let f=0x0,g='';for(const i of d){if(i==='<')f++;else{if(i==='>')f--;}if(i===','&&f===0x0)e['push'](g['trim']()),g='';else g+=i;}if(g['trim']())e['push'](g['trim']());const h=e['map'](j=>humanizeTypeTag(j)??j);return h['length']?c+'<'+h['join'](',\x20')+'>':c;}export function humanizeStoredName(a){const b=humanizeTypeTag(a);return b?{'label':b,'full':a}:{'label':a};}function rootData(a){if(!a||typeof a!=='object')return undefined;const b=a,c=b['data']??b;return c&&typeof c==='object'?c:undefined;}export function buildNameIndex(a){const b=new Map();for(const c of a['nodes']['values']()){if(c['kind']!=='object'||!c['raw'])continue;const e=rootData(c['raw']),f=e?.['name'];if(typeof f==='string'&&f['trim']())b['set'](c['id'],f['trim']());}return{'objects':b};}export function createNameResolver(a){const b=d=>{const e=a['objects']['get'](d);return e?{'label':e}:{'label':shortAddress(d),'full':d};},c=d=>{if(isWfNodeId(d)){const e=wfMachineOf(d),f=humanizeStoredName(wfNodeName(d)),g=a['objects']['get'](e);if(g)return{'label':g+'\x20›\x20'+f['label'],'full':f['full']};return f;}if(d['startsWith']('0x')&&d['length']>=0xe)return b(d['toLowerCase']());return{'label':d};};return{'resolve':c,'resolveWf'(d){if(!isWfNodeId(d))return undefined;return{'machine':b(wfMachineOf(d)),'node':humanizeStoredName(wfNodeName(d))};}};}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{describe,expect,it}from'vitest';import{ENTRYPOINT}from'@wowok/wowok';import{findingWhereResolved}from'./analyze.js';import{buildNameIndex,createNameResolver,humanizeStoredName,humanizeTypeTag,shortAddress}from'./names.js';const MACHINE='0x14b474d65159538031a75d37e4eb2367971fd30743df75e4472894be4f3c0e8f',TYPE_TAG_NODE='0x2::machine::Node<0x2::wow::WOW>';function graphWith(a){return{'network':ENTRYPOINT['Mainnet'],'seed':MACHINE,'builtAt':0x1,'nodes':new Map(a['map'](b=>[b['id'],b])),'edges':[],'out':new Map(),'inc':new Map(),'gaps':[],'truncations':[],'rpcReport':{'batches':0x0,'byChannel':{'objects':0x0,'keyedFields':0x0,'tables':0x0,'events':0x0},'dedupHits':0x0},'budgetExhausted':{}};}function objectNode(a,b){return{'id':a,'kind':'object','objectType':'Machine','state':'fetched','origins':[],'depth':0x0,'raw':{'object':a,'type':'Machine',...b!==undefined?{'data':{'name':b}}:{}}};}describe('humanizeTypeTag',()=>{it('shortens\x20a\x20Move\x20type\x20tag\x20to\x20its\x20struct\x20+\x20generic-param\x20last\x20segments',()=>{expect(humanizeTypeTag(TYPE_TAG_NODE))['toBe']('Node<WOW>'),expect(humanizeTypeTag('0x2::machine::Node'))['toBe']('Node');}),it('passes\x20plain\x20business\x20names\x20through\x20as\x20null',()=>{expect(humanizeTypeTag('Order\x20Confirmed'))['toBeNull'](),expect(humanizeTypeTag('paid'))['toBeNull']();}),it('keeps\x20nested\x20generics\x20depth-correct',()=>{expect(humanizeTypeTag('0x1::a::Box<0x2::b::C<0x3::d::E>,\x200x4::f::G>'))['toBe']('Box<C<E>,\x20G>');});}),describe('humanizeStoredName',()=>{it('carries\x20the\x20verbatim\x20tag\x20as\x20full\x20when\x20humanized',()=>{expect(humanizeStoredName(TYPE_TAG_NODE))['toEqual']({'label':'Node<WOW>','full':TYPE_TAG_NODE}),expect(humanizeStoredName('Order\x20Confirmed'))['toEqual']({'label':'Order\x20Confirmed'});});}),describe('buildNameIndex\x20+\x20createNameResolver',()=>{it('resolves\x20named\x20machines\x20by\x20on-chain\x20name\x20and\x20unnamed\x20to\x20a\x20short\x20address',()=>{const a='0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',b=graphWith([objectNode(MACHINE,'travel_shop_machine'),objectNode(a)]),c=createNameResolver(buildNameIndex(b));expect(c['resolve'](MACHINE)['label'])['toBe']('travel_shop_machine');const d=c['resolve'](a);expect(d['label'])['toBe'](shortAddress(a)),expect(d['full'])['toBe'](a);}),it('resolves\x20synthetic\x20wf\x20node\x20ids:\x20machine\x20name\x20+\x20humanized\x20type-tag\x20node\x20(AC-6)',()=>{const a=graphWith([objectNode(MACHINE,'travel_shop_machine')]),b=createNameResolver(buildNameIndex(a)),c=MACHINE+'::node::'+TYPE_TAG_NODE,d=b['resolveWf'](c);expect(d['machine']['label'])['toBe']('travel_shop_machine'),expect(d['node'])['toEqual']({'label':'Node<WOW>','full':TYPE_TAG_NODE}),expect(b['resolve'](c)['label'])['toContain']('Node<WOW>'),expect(b['resolve'](c)['label'])['not']['toContain']('::node::');}),it('findingWhereResolved\x20renders\x20machine\x20name\x20+\x20node\x20labels\x20in\x20R4\x20lines',()=>{const a=graphWith([objectNode(MACHINE,'travel_shop_machine')]),b=createNameResolver(buildNameIndex(a)),c='R4:'+MACHINE+':'+MACHINE+'::node::'+TYPE_TAG_NODE+'→'+MACHINE+'::node::'+TYPE_TAG_NODE,d=findingWhereResolved({'id':c},b);expect(d)['toBe']('travel_shop_machine:\x20Node<WOW>\x20→\x20Node<WOW>'),expect(d)['not']['toContain']('::node::'),expect(d)['not']['toContain']('0x2::machine::Node');}),it('findingWhereResolved\x20resolves\x20R2/R7\x20object\x20addresses\x20to\x20names',()=>{const a='0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',b=graphWith([objectNode(MACHINE,'svc'),objectNode(a,'reserve_treasury')]),c=createNameResolver(buildNameIndex(b));expect(findingWhereResolved({'id':'R2:'+MACHINE},c))['toBe']('svc'),expect(findingWhereResolved({'id':'R7:treasury:'+a},c))['toBe']('Treasury\x20reserve_treasury');});});