@wowok/agent-mcp 3.1.3 → 3.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/dist/config/config-audit.spec.d.ts +1 -0
  2. package/dist/config/config-audit.spec.js +1 -0
  3. package/dist/config/exposure.d.ts +108 -0
  4. package/dist/config/exposure.js +1 -0
  5. package/dist/config/index.d.ts +2 -0
  6. package/dist/config/index.js +1 -1
  7. package/dist/config/judgment.d.ts +1228 -0
  8. package/dist/config/judgment.js +1 -0
  9. package/dist/config/judgment.spec.d.ts +1 -0
  10. package/dist/config/judgment.spec.js +1 -0
  11. package/dist/config/rule-engine.d.ts +299 -0
  12. package/dist/config/rule-engine.js +1 -0
  13. package/dist/config/rule-engine.spec.d.ts +1 -0
  14. package/dist/config/rule-engine.spec.js +1 -0
  15. package/dist/config/severity.d.ts +7 -0
  16. package/dist/config/severity.js +1 -0
  17. package/dist/customer/order-monitor.d.ts +3 -1
  18. package/dist/customer/order-monitor.js +1 -1
  19. package/dist/evaluation/acceptance.d.ts +1 -0
  20. package/dist/evaluation/acceptance.js +1 -1
  21. package/dist/evaluation/arbitration-game.js +1 -1
  22. package/dist/evaluation/builtins/demand-match.js +1 -1
  23. package/dist/evaluation/builtins/graph-service.js +1 -1
  24. package/dist/evaluation/builtins/graph-service.spec.js +1 -1
  25. package/dist/evaluation/engine.js +1 -1
  26. package/dist/evaluation/game-strategy.d.ts +2 -2
  27. package/dist/evaluation/game-strategy.js +1 -1
  28. package/dist/evaluation/match-operation.d.ts +2 -2
  29. package/dist/evaluation/match-operation.js +1 -1
  30. package/dist/evaluation/standards.d.ts +3 -25
  31. package/dist/evaluation/standards.js +1 -1
  32. package/dist/evaluation/types.d.ts +2 -1
  33. package/dist/experience/realtime-feedback.js +1 -1
  34. package/dist/extensions/business-modules.js +1 -1
  35. package/dist/extensions/custom-registry-file.js +1 -1
  36. package/dist/extensions/industry-audit.spec.d.ts +1 -0
  37. package/dist/extensions/industry-audit.spec.js +1 -0
  38. package/dist/extensions/industry-layers.d.ts +8 -0
  39. package/dist/extensions/industry-layers.js +1 -1
  40. package/dist/extensions/industry-pack.d.ts +2 -0
  41. package/dist/extensions/industry-pack.js +1 -1
  42. package/dist/extensions/mode-evaluator.js +1 -1
  43. package/dist/extensions/modes.js +1 -1
  44. package/dist/graph/onchain/analyze.d.ts +3 -1
  45. package/dist/graph/onchain/analyze.js +1 -1
  46. package/dist/graph/onchain/analyze.spec.js +1 -1
  47. package/dist/graph/onchain/edge-schema.d.ts +1 -0
  48. package/dist/graph/onchain/edge-schema.js +1 -1
  49. package/dist/graph/onchain/expand.js +1 -1
  50. package/dist/graph/onchain/exploration.d.ts +28 -0
  51. package/dist/graph/onchain/exploration.js +1 -0
  52. package/dist/graph/onchain/exploration.spec.d.ts +1 -0
  53. package/dist/graph/onchain/exploration.spec.js +1 -0
  54. package/dist/graph/onchain/exposure.d.ts +18 -0
  55. package/dist/graph/onchain/exposure.js +1 -0
  56. package/dist/graph/onchain/exposure.spec.d.ts +1 -0
  57. package/dist/graph/onchain/exposure.spec.js +1 -0
  58. package/dist/graph/onchain/graph-policy.spec.d.ts +1 -0
  59. package/dist/graph/onchain/graph-policy.spec.js +1 -0
  60. package/dist/graph/onchain/index.d.ts +6 -0
  61. package/dist/graph/onchain/index.js +1 -1
  62. package/dist/graph/onchain/interest.js +1 -1
  63. package/dist/graph/onchain/interest.spec.js +1 -1
  64. package/dist/graph/onchain/names.js +1 -1
  65. package/dist/graph/onchain/names.spec.js +1 -1
  66. package/dist/graph/onchain/policy.d.ts +8 -0
  67. package/dist/graph/onchain/policy.js +1 -0
  68. package/dist/graph/onchain/proposal-graph.js +1 -1
  69. package/dist/graph/onchain/proposal-graph.spec.js +1 -1
  70. package/dist/graph/onchain/synthesis.d.ts +20 -0
  71. package/dist/graph/onchain/synthesis.js +1 -0
  72. package/dist/graph/onchain/synthesis.spec.d.ts +1 -0
  73. package/dist/graph/onchain/synthesis.spec.js +1 -0
  74. package/dist/graph/onchain/types.d.ts +11 -1
  75. package/dist/keeper/keeper.spec.js +1 -1
  76. package/dist/knowledge/alloc-audit-policy.spec.d.ts +1 -0
  77. package/dist/knowledge/alloc-audit-policy.spec.js +1 -0
  78. package/dist/knowledge/allocation-ledger.js +1 -1
  79. package/dist/knowledge/allocation-puzzle.d.ts +1 -1
  80. package/dist/knowledge/allocation-puzzle.js +1 -1
  81. package/dist/knowledge/allocation-risk.d.ts +4 -1
  82. package/dist/knowledge/allocation-risk.js +1 -1
  83. package/dist/knowledge/allocation-templates.js +1 -1
  84. package/dist/knowledge/arb-risk.d.ts +6 -5
  85. package/dist/knowledge/arb-risk.js +1 -1
  86. package/dist/knowledge/arbitration-ledger.d.ts +4 -4
  87. package/dist/knowledge/arbitration-ledger.js +1 -1
  88. package/dist/knowledge/arbitration-puzzle.d.ts +1 -1
  89. package/dist/knowledge/arbitration-puzzle.js +1 -1
  90. package/dist/knowledge/arbitration-risk.d.ts +4 -1
  91. package/dist/knowledge/arbitration-risk.js +1 -1
  92. package/dist/knowledge/arbitration-templates.js +1 -1
  93. package/dist/knowledge/baselines/judgment-baselines.json +289 -0
  94. package/dist/knowledge/baselines/risk-baselines.spec.js +1 -1
  95. package/dist/knowledge/baselines/rules/alloc_audit.json +290 -0
  96. package/dist/knowledge/baselines/rules/allocation.json +492 -0
  97. package/dist/knowledge/baselines/rules/arb.json +155 -0
  98. package/dist/knowledge/baselines/rules/arbitration.json +366 -0
  99. package/dist/knowledge/baselines/rules/bridge.json +197 -0
  100. package/dist/knowledge/baselines/rules/contact.json +152 -0
  101. package/dist/knowledge/baselines/rules/demand.json +158 -0
  102. package/dist/knowledge/baselines/rules/graph.json +453 -0
  103. package/dist/knowledge/baselines/rules/guard.json +981 -0
  104. package/dist/knowledge/baselines/rules/machine.json +706 -0
  105. package/dist/knowledge/baselines/rules/order.json +549 -0
  106. package/dist/knowledge/baselines/rules/payment.json +205 -0
  107. package/dist/knowledge/baselines/rules/permission.json +330 -0
  108. package/dist/knowledge/baselines/rules/personal.json +139 -0
  109. package/dist/knowledge/baselines/rules/progress.json +346 -0
  110. package/dist/knowledge/baselines/rules/proof.json +158 -0
  111. package/dist/knowledge/baselines/rules/registrar.json +159 -0
  112. package/dist/knowledge/baselines/rules/repository.json +244 -0
  113. package/dist/knowledge/baselines/rules/resource.json +117 -0
  114. package/dist/knowledge/baselines/rules/reward.json +471 -0
  115. package/dist/knowledge/baselines/rules/service.json +595 -0
  116. package/dist/knowledge/baselines/rules/treasury.json +440 -0
  117. package/dist/knowledge/baselines/rules/util.json +101 -0
  118. package/dist/knowledge/bridge-risk.d.ts +6 -5
  119. package/dist/knowledge/bridge-risk.js +1 -1
  120. package/dist/knowledge/builtin-templates.d.ts +26 -0
  121. package/dist/knowledge/builtin-templates.js +1 -0
  122. package/dist/knowledge/contact-risk.d.ts +6 -5
  123. package/dist/knowledge/contact-risk.js +1 -1
  124. package/dist/knowledge/demand-risk.d.ts +6 -5
  125. package/dist/knowledge/demand-risk.js +1 -1
  126. package/dist/knowledge/event-semantics.js +1 -1
  127. package/dist/knowledge/facts-sync.spec.d.ts +1 -0
  128. package/dist/knowledge/facts-sync.spec.js +1 -0
  129. package/dist/knowledge/getting-started.js +1 -1
  130. package/dist/knowledge/guard-design-patterns.js +1 -1
  131. package/dist/knowledge/guard-field-cognition.d.ts +1 -1
  132. package/dist/knowledge/guard-field-cognition.js +1 -1
  133. package/dist/knowledge/guard-ledger.js +1 -1
  134. package/dist/knowledge/guard-risk.d.ts +4 -1
  135. package/dist/knowledge/guard-risk.js +1 -1
  136. package/dist/knowledge/guard-templates.js +1 -1
  137. package/dist/knowledge/guard-translation.js +1 -1
  138. package/dist/knowledge/index.d.ts +10 -2
  139. package/dist/knowledge/index.js +1 -1
  140. package/dist/knowledge/industry-registry.js +1 -1
  141. package/dist/knowledge/industry-strategy.js +1 -1
  142. package/dist/knowledge/jsonrpc-enum.js +1 -1
  143. package/dist/knowledge/machine-ledger.js +1 -1
  144. package/dist/knowledge/machine-risk.d.ts +4 -1
  145. package/dist/knowledge/machine-risk.js +1 -1
  146. package/dist/knowledge/machine-templates.js +1 -1
  147. package/dist/knowledge/machine-translation.js +1 -1
  148. package/dist/knowledge/migration-preflight.js +1 -1
  149. package/dist/knowledge/operation-dictionary.js +1 -1
  150. package/dist/knowledge/order-ledger.js +1 -1
  151. package/dist/knowledge/order-puzzle.d.ts +3 -3
  152. package/dist/knowledge/order-puzzle.js +1 -1
  153. package/dist/knowledge/order-risk.d.ts +6 -3
  154. package/dist/knowledge/order-risk.js +1 -1
  155. package/dist/knowledge/order-templates.js +1 -1
  156. package/dist/knowledge/passport-ledger.js +1 -1
  157. package/dist/knowledge/passport-templates.js +1 -1
  158. package/dist/knowledge/payment-risk.d.ts +8 -6
  159. package/dist/knowledge/payment-risk.js +1 -1
  160. package/dist/knowledge/payment-tracker.js +1 -1
  161. package/dist/knowledge/permission-ledger.js +1 -1
  162. package/dist/knowledge/permission-puzzle.d.ts +12 -12
  163. package/dist/knowledge/permission-puzzle.js +1 -1
  164. package/dist/knowledge/permission-risk.d.ts +4 -7
  165. package/dist/knowledge/permission-risk.js +1 -1
  166. package/dist/knowledge/permission-templates.js +1 -1
  167. package/dist/knowledge/personal-risk.d.ts +6 -5
  168. package/dist/knowledge/personal-risk.js +1 -1
  169. package/dist/knowledge/progress-ledger.js +1 -1
  170. package/dist/knowledge/progress-puzzle.d.ts +2 -2
  171. package/dist/knowledge/progress-puzzle.js +1 -1
  172. package/dist/knowledge/progress-risk.d.ts +4 -1
  173. package/dist/knowledge/progress-risk.js +1 -1
  174. package/dist/knowledge/progress-templates.js +1 -1
  175. package/dist/knowledge/proof-risk.d.ts +6 -5
  176. package/dist/knowledge/proof-risk.js +1 -1
  177. package/dist/knowledge/puzzle-projections.js +1 -1
  178. package/dist/knowledge/recipient-constraint.d.ts +20 -1
  179. package/dist/knowledge/recipient-constraint.js +1 -1
  180. package/dist/knowledge/registrar-risk.d.ts +6 -5
  181. package/dist/knowledge/registrar-risk.js +1 -1
  182. package/dist/knowledge/repository-risk.d.ts +7 -6
  183. package/dist/knowledge/repository-risk.js +1 -1
  184. package/dist/knowledge/resource-risk.d.ts +6 -5
  185. package/dist/knowledge/resource-risk.js +1 -1
  186. package/dist/knowledge/reward-ledger.d.ts +1 -1
  187. package/dist/knowledge/reward-ledger.js +1 -1
  188. package/dist/knowledge/reward-puzzle.d.ts +2 -2
  189. package/dist/knowledge/reward-puzzle.js +1 -1
  190. package/dist/knowledge/reward-risk.d.ts +4 -1
  191. package/dist/knowledge/reward-risk.js +1 -1
  192. package/dist/knowledge/rule-node-analyzers.spec.js +1 -1
  193. package/dist/knowledge/rule-outcome.js +1 -1
  194. package/dist/knowledge/scenario-modes.d.ts +2 -2
  195. package/dist/knowledge/scenario-modes.js +1 -1
  196. package/dist/knowledge/scenario-topology.js +1 -1
  197. package/dist/knowledge/service-allocator-audit-node.js +1 -1
  198. package/dist/knowledge/service-ledger.js +1 -1
  199. package/dist/knowledge/service-puzzle.d.ts +2 -2
  200. package/dist/knowledge/service-puzzle.js +1 -1
  201. package/dist/knowledge/service-risk-node.js +1 -1
  202. package/dist/knowledge/service-risk.d.ts +4 -1
  203. package/dist/knowledge/service-risk.js +1 -1
  204. package/dist/knowledge/service-templates.js +1 -1
  205. package/dist/knowledge/strategy-manuals.d.ts +1 -1
  206. package/dist/knowledge/strategy-manuals.js +1 -1
  207. package/dist/knowledge/template-loader.d.ts +84 -0
  208. package/dist/knowledge/template-loader.js +1 -0
  209. package/dist/knowledge/template-loader.spec.d.ts +1 -0
  210. package/dist/knowledge/template-loader.spec.js +1 -0
  211. package/dist/knowledge/template-registry.js +1 -1
  212. package/dist/knowledge/template-scanner.d.ts +17 -0
  213. package/dist/knowledge/template-scanner.js +1 -0
  214. package/dist/knowledge/template-scanner.spec.d.ts +1 -0
  215. package/dist/knowledge/template-scanner.spec.js +1 -0
  216. package/dist/knowledge/tools-reference.js +1 -1
  217. package/dist/knowledge/treasury-ledger.d.ts +1 -1
  218. package/dist/knowledge/treasury-ledger.js +1 -1
  219. package/dist/knowledge/treasury-puzzle.d.ts +3 -3
  220. package/dist/knowledge/treasury-puzzle.js +1 -1
  221. package/dist/knowledge/treasury-risk.d.ts +4 -1
  222. package/dist/knowledge/treasury-risk.js +1 -1
  223. package/dist/knowledge/treasury-templates.js +1 -1
  224. package/dist/knowledge/util-risk.d.ts +6 -5
  225. package/dist/knowledge/util-risk.js +1 -1
  226. package/dist/knowledge/workflow-guidance.d.ts +4 -0
  227. package/dist/knowledge/workflow-guidance.js +1 -1
  228. package/dist/knowledge/workspace-lists.js +1 -1
  229. package/dist/monitor/MonitorLoop.js +1 -1
  230. package/dist/participation/arbitrator-interest.js +1 -1
  231. package/dist/participation/radar-core.js +1 -1
  232. package/dist/persona/analyzer.js +1 -1
  233. package/dist/persona/index.js +1 -1
  234. package/dist/persona/model.js +1 -1
  235. package/dist/persona/persona-audit.spec.d.ts +1 -0
  236. package/dist/persona/persona-audit.spec.js +1 -0
  237. package/dist/persona/types.d.ts +2 -0
  238. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  239. package/dist/playbooks/service-build/facet-money.d.ts +11 -0
  240. package/dist/playbooks/service-build/facet-money.js +1 -1
  241. package/dist/playbooks/service-build/machine-panorama.d.ts +17 -0
  242. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  243. package/dist/playbooks/service-build/merchant-guide.d.ts +2 -2
  244. package/dist/playbooks/service-build/migration-planner.d.ts +43 -0
  245. package/dist/playbooks/service-build/migration-planner.js +1 -0
  246. package/dist/playbooks/service-build/object-panorama.d.ts +42 -1
  247. package/dist/playbooks/service-build/object-panorama.js +1 -1
  248. package/dist/playbooks/service-build/participation-radar.js +1 -1
  249. package/dist/playbooks/service-build/pipeline-actions.d.ts +1 -1
  250. package/dist/playbooks/service-build/reverse-mapping.d.ts +1 -0
  251. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  252. package/dist/playbooks/service-build/risk-aggregator.d.ts +2 -1
  253. package/dist/playbooks/service-build/risk-aggregator.js +1 -1
  254. package/dist/playbooks/service-build/semantic-graph.js +1 -1
  255. package/dist/playbooks/service-build/service-panorama.d.ts +53 -1
  256. package/dist/playbooks/service-build/service-panorama.js +1 -1
  257. package/dist/playbooks/service-build/topology-evaluation.spec.js +1 -1
  258. package/dist/playbooks/service-build/topology-query.js +1 -1
  259. package/dist/playbooks/service-build/workflow-design-assessment.d.ts +2 -2
  260. package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
  261. package/dist/relationship/registry.js +1 -1
  262. package/dist/review/machine.js +1 -1
  263. package/dist/review/order.js +1 -1
  264. package/dist/review/service.js +1 -1
  265. package/dist/review/types.d.ts +7 -0
  266. package/dist/safety/confirm-gate.js +1 -1
  267. package/dist/schema/benchmark-migration/index.d.ts +207 -0
  268. package/dist/schema/benchmark-migration/index.js +1 -0
  269. package/dist/schema/call/allocation.d.ts +1 -1
  270. package/dist/schema/call/allocation.js +1 -1
  271. package/dist/schema/call/arbitration.d.ts +1 -1
  272. package/dist/schema/call/arbitration.js +1 -1
  273. package/dist/schema/call/base.d.ts +5 -5
  274. package/dist/schema/call/base.js +1 -1
  275. package/dist/schema/call/contact.d.ts +1 -1
  276. package/dist/schema/call/demand.d.ts +1 -1
  277. package/dist/schema/call/guard.d.ts +3 -3
  278. package/dist/schema/call/machine.d.ts +5 -5
  279. package/dist/schema/call/order.d.ts +3 -3
  280. package/dist/schema/call/payment.js +1 -1
  281. package/dist/schema/call/permission-handler.d.ts +1 -1
  282. package/dist/schema/call/permission-handler.js +1 -1
  283. package/dist/schema/call/permission.d.ts +16 -16
  284. package/dist/schema/call/permission.js +1 -1
  285. package/dist/schema/call/personal.d.ts +8 -8
  286. package/dist/schema/call/personal.js +1 -1
  287. package/dist/schema/call/progress.d.ts +3 -3
  288. package/dist/schema/call/repository.d.ts +11 -11
  289. package/dist/schema/call/repository.js +1 -1
  290. package/dist/schema/call/reward.d.ts +1 -1
  291. package/dist/schema/call/semantic.js +1 -1
  292. package/dist/schema/call/service.d.ts +7 -7
  293. package/dist/schema/call/service.js +1 -1
  294. package/dist/schema/call/treasury.d.ts +1 -1
  295. package/dist/schema/common/index.d.ts +6 -6
  296. package/dist/schema/common/index.js +1 -1
  297. package/dist/schema/config/index.d.ts +50 -1
  298. package/dist/schema/config/index.js +1 -1
  299. package/dist/schema/evaluation/index.d.ts +27 -11
  300. package/dist/schema/evaluation/index.js +1 -1
  301. package/dist/schema/goal/index.d.ts +5 -5
  302. package/dist/schema/goal/planning.d.ts +15 -15
  303. package/dist/schema/goal/planning.js +1 -1
  304. package/dist/schema/index.d.ts +1 -0
  305. package/dist/schema/index.js +1 -1
  306. package/dist/schema/interaction/index.d.ts +1 -1
  307. package/dist/schema/local/index.js +1 -1
  308. package/dist/schema/messenger/index.d.ts +26 -26
  309. package/dist/schema/operations.d.ts +33 -33
  310. package/dist/schema/operations.js +1 -1
  311. package/dist/schema/persona/index.d.ts +4708 -0
  312. package/dist/schema/persona/index.js +1 -1
  313. package/dist/schema/query/bi.d.ts +232 -25
  314. package/dist/schema/query/bi.js +1 -1
  315. package/dist/schema/query/index.d.ts +35 -35
  316. package/dist/schema/query/index.js +1 -1
  317. package/dist/schema/schema-version.js +1 -1
  318. package/dist/schema/workflow/index.d.ts +1 -1
  319. package/dist/schema/workspace/index.d.ts +53 -0
  320. package/dist/schema/workspace/index.js +1 -1
  321. package/dist/schema-query-impl/index.d.ts +9 -0
  322. package/dist/schema-query-impl/index.js +1 -1
  323. package/dist/schemas/benchmark_migration_operation.output.json +793 -0
  324. package/dist/schemas/benchmark_migration_operation.schema.json +83 -0
  325. package/dist/schemas/bridge_operation.schema.json +5 -5
  326. package/dist/schemas/config_operation.output.json +252 -0
  327. package/dist/schemas/config_operation.schema.json +21 -1
  328. package/dist/schemas/evaluation_operation.output.json +22 -10
  329. package/dist/schemas/goal_operation.schema.json +8 -8
  330. package/dist/schemas/guard2file.schema.json +1 -1
  331. package/dist/schemas/index.json +7 -1
  332. package/dist/schemas/machineNode2file.schema.json +1 -1
  333. package/dist/schemas/messenger_operation.schema.json +24 -12
  334. package/dist/schemas/onchain_events.output.json +1 -1
  335. package/dist/schemas/onchain_operations.output.json +4 -2
  336. package/dist/schemas/onchain_operations.schema.json +189 -139
  337. package/dist/schemas/onchain_operations_allocation.schema.json +13 -11
  338. package/dist/schemas/onchain_operations_arbitration.schema.json +10 -8
  339. package/dist/schemas/onchain_operations_contact.schema.json +7 -5
  340. package/dist/schemas/onchain_operations_demand.schema.json +7 -5
  341. package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -3
  342. package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
  343. package/dist/schemas/onchain_operations_guard.schema.json +5 -3
  344. package/dist/schemas/onchain_operations_machine.schema.json +22 -18
  345. package/dist/schemas/onchain_operations_order.schema.json +11 -7
  346. package/dist/schemas/onchain_operations_payment.schema.json +3 -3
  347. package/dist/schemas/onchain_operations_permission.schema.json +19 -11
  348. package/dist/schemas/onchain_operations_personal.schema.json +16 -10
  349. package/dist/schemas/onchain_operations_progress.schema.json +11 -7
  350. package/dist/schemas/onchain_operations_proof.schema.json +5 -3
  351. package/dist/schemas/onchain_operations_repository.schema.json +12 -8
  352. package/dist/schemas/onchain_operations_reward.schema.json +11 -9
  353. package/dist/schemas/onchain_operations_service.schema.json +28 -22
  354. package/dist/schemas/onchain_operations_treasury.schema.json +11 -9
  355. package/dist/schemas/onchain_table_data.output.json +27 -17
  356. package/dist/schemas/persona_operation.output.json +15875 -1
  357. package/dist/schemas/persona_operation.schema.json +3056 -478
  358. package/dist/schemas/query_toolkit.output.json +343 -63
  359. package/dist/schemas/query_toolkit.schema.json +1 -1
  360. package/dist/schemas/workflow_operation.schema.json +4 -2
  361. package/dist/schemas/workspace_operation.output.json +181 -1
  362. package/dist/schemas/workspace_operation.schema.json +61 -2
  363. package/dist/strategy/scorecard.js +1 -1
  364. package/dist/tools/handlers/benchmark-migration.d.ts +2 -0
  365. package/dist/tools/handlers/benchmark-migration.js +1 -0
  366. package/dist/tools/handlers/config.js +1 -1
  367. package/dist/tools/handlers/industry-pack.js +1 -1
  368. package/dist/tools/handlers/onchain.js +1 -1
  369. package/dist/tools/handlers/query.js +1 -1
  370. package/dist/tools/handlers/schema-query.js +1 -1
  371. package/dist/tools/handlers/workspace.js +1 -1
  372. package/dist/tools/index.js +1 -1
  373. package/dist/tools/move-fn-index.gen.d.ts +3 -0
  374. package/dist/tools/move-fn-index.gen.js +1 -0
  375. package/dist/tools/registry/business.js +1 -1
  376. package/dist/tools/registry/config.js +1 -1
  377. package/dist/tools/registry/evaluation.js +1 -1
  378. package/dist/tools/registry/onchain.js +1 -1
  379. package/dist/tools/sanitize-output.d.ts +3 -0
  380. package/dist/tools/sanitize-output.js +1 -0
  381. package/dist/tools/sanitize-output.spec.d.ts +1 -0
  382. package/dist/tools/sanitize-output.spec.js +1 -0
  383. package/package.json +9 -4
  384. package/dist/knowledge/baselines/evaluation-baselines.json +0 -79
@@ -1,4 +1,5 @@
1
- export type ArbRiskLevel = "CRITICAL" | "HIGH" | "MEDIUM" | "LOW" | "INFO";
1
+ import { type Facts } from "../config/rule-engine.js";
2
+ export type ArbRiskLevel = "critical" | "high" | "medium" | "low" | "info";
2
3
  export type ArbRiskCategory = "structural" | "lifecycle" | "semantic" | "permission" | "knowledge";
3
4
  export type ArbStakeholder = "principal" | "arbitrator" | "voter" | "system";
4
5
  export interface ArbRisk {
@@ -28,9 +29,9 @@ export interface ArbRiskCheckContext {
28
29
  order_mismatch?: boolean;
29
30
  constants_synced?: boolean;
30
31
  }
31
- export declare const ARB_RISK_RULES: {
32
- rule: ArbRisk;
33
- check: (ctx: ArbRiskCheckContext) => ArbRisk | null;
34
- }[];
32
+ export declare function arbRiskFacts(ctx: ArbRiskCheckContext): Facts;
35
33
  export declare const ARB_RISK_VERSION = "1.0.0";
34
+ export declare const ARB_RISK_RULES: Array<ArbRisk & {
35
+ trigger?: string;
36
+ }>;
36
37
  export declare function checkArbRisks(ctx: ArbRiskCheckContext): ArbRisk[];
@@ -1 +1 @@
1
- import{MAX_VOTOR_COUNT,WITHDRAW_DURATION_TIME}from'@wowok/wowok';const R_A_01={'rule':{'id':'R-ARB-01','level':'HIGH','category':'lifecycle','title':'7-state\x20machine\x20—\x20invalid\x20transitions\x20can\x20deadlock\x20the\x20arbitration','description':'Arb\x20has\x20a\x207-state\x20machine:\x20Principal_confirming(0)\x20→\x20Arbitrator_confirming(1)\x20→\x20'+'Voting(2)\x20→\x20Arbitrated(3)\x20→\x20Objectionable(4)\x20→\x20Finished(5)\x20→\x20Withdrawn(6).\x20reset()\x20'+'can\x20revert\x20from\x20{1,\x204}\x20back\x20to\x200.\x20Each\x20op\x20asserts\x20the\x20current\x20status;\x20calling\x20an\x20op\x20'+'out\x20of\x20order\x20aborts\x20with\x20E_STATUS_NOT_MATCH\x20(3).\x20Repeated\x20mis-calls\x20leave\x20the\x20Arb\x20'+'stuck\x20in\x20a\x20non-terminal\x20state\x20with\x20no\x20automatic\x20recovery.','affected_stakeholders':['principal','arbitrator','voter'],'scenario':'Caller\x20calls\x20vote()\x20when\x20status\x20is\x20still\x20Arbitrator_confirming;\x20abort\x20blocks\x20progress','mitigation':'Strictly\x20validate\x20the\x20current\x20status\x20before\x20submitting\x20any\x20Arb\x20op.\x20The\x20SDK\x20should\x20'+'expose\x20a\x20status-aware\x20state\x20machine\x20helper.\x20Provide\x20a\x20recovery\x20path\x20(reset)\x20for\x20'+'Arbitrator_confirming\x20and\x20Objectionable\x20states.','related_move_error':'E_STATUS_NOT_MATCH\x20(3)','auto_fixable':![]},'check':a=>{if(!a['invalid_transition'])return null;return{...R_A_01['rule'],'evidence':'invalid_transition=true\x20(status='+(a['status']??'?')+')'};}},R_A_02={'rule':{'id':'R-ARB-02','level':'MEDIUM','category':'lifecycle','title':'WITHDRAW_DURATION_TIME='+WITHDRAW_DURATION_TIME+'ms\x20(30\x20days)\x20—\x20funds\x20locked','description':'After\x20arbitration,\x20the\x20fee\x20Balance\x20can\x20only\x20be\x20withdrawn\x20after\x20'+('WITHDRAW_DURATION_TIME='+WITHDRAW_DURATION_TIME+'ms\x20(30\x20days)\x20when\x20status\x20is\x20')+'Arbitrated(3)\x20or\x20Objectionable(4).\x20From\x20Finished(5),\x20withdraw\x20is\x20immediate.\x20'+'The\x2030-day\x20lock\x20is\x20a\x20dispute-window\x20safeguard,\x20but\x20it\x20locks\x20funds\x20for\x20a\x20long\x20time\x20'+'and\x20users\x20may\x20not\x20understand\x20why.','affected_stakeholders':['principal','arbitrator'],'scenario':'Arbitrator\x20finishes\x20a\x20case\x20but\x20must\x20wait\x2030\x20days\x20to\x20claim\x20the\x20fee','mitigation':'Surface\x20the\x20unlock\x20timestamp\x20in\x20the\x20UI.\x20To\x20shorten\x20the\x20lock,\x20drive\x20the\x20case\x20to\x20'+'Finished(5)\x20via\x20finish()\x20rather\x20than\x20leaving\x20it\x20in\x20Arbitrated/Objectionable.','related_move_error':'E_WITHDRAW_DURATION_TIME_NOT_PASSED\x20(8)','auto_fixable':![]},'check':a=>{if(!a['withdraw_too_early'])return null;return{...R_A_02['rule'],'evidence':'withdraw_too_early=true\x20(limit='+WITHDRAW_DURATION_TIME+'ms)'};}},R_A_03={'rule':{'id':'R-ARB-03','level':'MEDIUM','category':'structural','title':'MAX_VOTOR_COUNT='+MAX_VOTOR_COUNT+'\x20permissive\x20—\x20voting\x20efficiency\x20cost','description':'A\x20single\x20Arb\x20may\x20record\x20up\x20to\x20MAX_VOTOR_COUNT='+MAX_VOTOR_COUNT+'\x20voters\x20(arb.move:236).\x20'+'The\x20limit\x20aborts\x20with\x20E_MAX_VOTOR_COUNT\x20(6)\x20only\x20at\x20the\x20boundary.\x20520\x20voters\x20in\x20one\x20'+'Arb\x20inflates\x20the\x20voted\x20vector,\x20slowing\x20tally\x20and\x20gas,\x20and\x20complicates\x20weighted-quorum\x20'+'reasoning.','affected_stakeholders':['voter','arbitrator'],'scenario':'Arbitration\x20allows\x20520\x20voters;\x20tallying\x20the\x20vote\x20vector\x20is\x20slow\x20and\x20gas-heavy','mitigation':'Business\x20layer\x20should\x20self-limit\x20voter\x20count\x20based\x20on\x20the\x20Arbitration\x20rule\x27s\x20quorum.\x20'+'For\x20large\x20juries,\x20shard\x20across\x20multiple\x20Arb\x20instances\x20or\x20aggregate\x20off-chain.','related_move_error':'E_MAX_VOTOR_COUNT\x20(6)','auto_fixable':![]},'check':a=>{if(a['votor_count']===undefined)return null;if(a['votor_count']<MAX_VOTOR_COUNT)return null;return{...R_A_03['rule'],'evidence':'votor_count='+a['votor_count']+',\x20limit='+MAX_VOTOR_COUNT};}},R_A_04={'rule':{'id':'R-ARB-04','level':'LOW','category':'semantic','title':'proposition_change\x20may\x20not\x20emit\x20a\x20discrete\x20event\x20—\x20indexers\x20must\x20infer','description':'proposition_change\x20(arb.move)\x20updates\x20the\x20proposition\x20vector\x20in\x20place.\x20Unlike\x20'+'state\x20transitions\x20(which\x20emit\x20ArbEvent),\x20proposition\x20edits\x20may\x20not\x20produce\x20a\x20'+'discrete\x20event\x20—\x20indexers\x20must\x20infer\x20changes\x20by\x20diffing\x20the\x20proposition\x20vector\x20'+'across\x20polls.','affected_stakeholders':['arbitrator','voter'],'scenario':'Indexer\x20expects\x20a\x20PropositionChangedEvent;\x20none\x20is\x20emitted,\x20UI\x20fails\x20to\x20refresh','mitigation':'External\x20indexers\x20should\x20poll\x20the\x20proposition\x20vector.\x20UI\x20should\x20display\x20\x27propositions\x20'+'may\x20have\x20changed\x27\x20on\x20each\x20poll\x20rather\x20than\x20relying\x20on\x20event-driven\x20refresh.','auto_fixable':![]},'check':a=>{if(!a['expects_proposition_event'])return null;return{...R_A_04['rule'],'evidence':'expects_proposition_event=true\x20(poll\x20instead)'};}},R_A_05={'rule':{'id':'R-ARB-05','level':'MEDIUM','category':'semantic','title':'voting_deadline\x20is\x20Option<u64>\x20—\x20None\x20means\x20open-ended\x20vote','description':'voting_deadline\x20is\x20Option<u64>.\x20When\x20None,\x20voting\x20has\x20no\x20deadline\x20(open-ended)\x20and\x20'+'E_VOTING_DEADLINE_PASSED\x20(7)\x20never\x20triggers.\x20When\x20Some(t),\x20vote()\x20aborts\x20if\x20'+'clock.timestamp_ms()\x20>\x20t.\x20Callers\x20who\x20assume\x20a\x20default\x20deadline\x20may\x20be\x20surprised\x20by\x20'+'an\x20open-ended\x20vote\x20that\x20never\x20finalizes.','affected_stakeholders':['voter','arbitrator'],'scenario':'Voter\x20assumes\x20a\x20deadline;\x20voting_deadline\x20is\x20None\x20and\x20the\x20case\x20stalls\x20indefinitely','mitigation':'Document\x20that\x20None\x20means\x20open-ended.\x20Arbitrators\x20should\x20set\x20an\x20explicit\x20deadline\x20via\x20'+'arbitrator_confirm\x20unless\x20they\x20intend\x20an\x20open\x20vote.\x20SDK\x20should\x20surface\x20voting_deadline\x20'+'prominently.','related_move_error':'E_VOTING_DEADLINE_PASSED\x20(7)\x20/\x20E_VOTING_DEADLINE_NOT_PASSED\x20(4)','auto_fixable':![]},'check':a=>{if(!a['voting_deadline_none'])return null;return{...R_A_05['rule'],'evidence':'voting_deadline_none=true\x20(open-ended\x20vote)'};}},R_A_06={'rule':{'id':'R-ARB-06','level':'LOW','category':'semantic','title':'indemnity\x20is\x20Option<Indemnity>\x20—\x20None\x20means\x20no\x20compensation','description':'indemnity\x20is\x20Option<Indemnity>.\x20When\x20None,\x20the\x20arbitration\x20produces\x20no\x20compensation\x20'+'(e.g.\x20a\x20pure\x20declaratory\x20ruling).\x20Consumers\x20who\x20assume\x20a\x20non-null\x20indemnity\x20will\x20'+'mis-handle\x20None\x20cases.\x20finish()\x20returns\x20the\x20indemnity\x20amount\x20(0\x20when\x20None).','affected_stakeholders':['principal'],'scenario':'Principal\x20expects\x20compensation;\x20indemnity\x20is\x20None\x20and\x20finish()\x20returns\x200','mitigation':'Document\x20that\x20None\x20means\x20no\x20compensation.\x20UI\x20should\x20show\x20\x27no\x20compensation\x20awarded\x27\x20'+'rather\x20than\x20\x27compensation\x20pending\x27.','auto_fixable':![]},'check':a=>{if(!a['indemnity_none'])return null;return{...R_A_06['rule'],'evidence':'indemnity_none=true\x20(no\x20compensation)'};}},R_A_07={'rule':{'id':'R-ARB-07','level':'MEDIUM','category':'permission','title':'Voted.weight\x20is\x20set\x20by\x20the\x20Arbitration\x20rule\x20—\x20concentrated\x20weight\x20risk','description':'Voted.weight\x20(u32)\x20is\x20assigned\x20by\x20the\x20Arbitration\x20object\x27s\x20voting_guard\x20logic,\x20not\x20'+'by\x20the\x20voter.\x20If\x20the\x20Arbitration\x20rule\x20concentrates\x20weight\x20in\x20one\x20voter\x20(e.g.\x20an\x20'+'admin\x20with\x20weight\x201000\x20vs.\x20others\x20with\x20weight\x201),\x20a\x20single\x20voter\x20can\x20dictate\x20the\x20'+'outcome.\x20The\x20Arb\x20contract\x20itself\x20does\x20not\x20detect\x20concentration\x20—\x20that\x20is\x20the\x20'+'Arbitration\x20designer\x27s\x20responsibility.','affected_stakeholders':['voter','arbitrator'],'scenario':'Arbitration\x20rule\x20gives\x20one\x20voter\x20weight\x201000;\x20that\x20voter\x20single-handedly\x20decides\x20the\x20case','mitigation':'When\x20designing\x20the\x20Arbitration\x20rule,\x20cap\x20individual\x20voter\x20weight\x20and\x20require\x20a\x20'+'quorum.\x20Audit\x20the\x20voting_guard\x20to\x20ensure\x20no\x20single\x20voter\x20can\x20exceed\x20the\x20quorum\x20alone.','auto_fixable':![]},'check':a=>{if(!a['weight_concentrated'])return null;return{...R_A_07['rule'],'evidence':'weight_concentrated=true\x20(rule-level\x20risk)'};}},R_A_08={'rule':{'id':'R-ARB-08','level':'LOW','category':'semantic','title':'Status\x20uses\x20u8\x20constants\x20—\x20Move\x20enum\x20is\x20commented\x20out','description':'The\x207\x20statuses\x20are\x20defined\x20as\x20u8\x20constants\x20(Status_Principal_confirming=0,\x20etc.).\x20'+'The\x20Move\x20enum\x20definition\x20is\x20commented\x20out\x20(arb.move).\x20Consumers\x20cannot\x20rely\x20on\x20a\x20'+'type-safe\x20enum\x20and\x20must\x20compare\x20against\x20magic\x20numbers.\x20A\x20future\x20Wow\x20release\x20enabling\x20'+'the\x20enum\x20would\x20be\x20a\x20breaking\x20change\x20to\x20downstream\x20code.','affected_stakeholders':['system'],'scenario':'Developer\x20expects\x20a\x20Status\x20enum;\x20only\x20u8\x20constants\x20are\x20available,\x20causing\x20type\x20errors','mitigation':'SDK\x20should\x20expose\x20a\x20TypeScript\x20enum\x20mirroring\x20the\x20u8\x20constants.\x20Document\x20that\x20the\x20'+'Move\x20enum\x20is\x20intentionally\x20disabled\x20and\x20may\x20be\x20enabled\x20in\x20a\x20future\x20version.','auto_fixable':![]},'check':a=>{if(!a['expects_status_enum'])return null;return{...R_A_08['rule'],'evidence':'expects_status_enum=true\x20(only\x20u8\x20constants\x20exist)'};}};export const ARB_RISK_RULES=[R_A_01,R_A_02,R_A_03,R_A_04,R_A_05,R_A_06,R_A_07,R_A_08];export const ARB_RISK_VERSION='1.0.0';export function checkArbRisks(a){const b=[];for(const c of ARB_RISK_RULES){const d=c['check'](a);if(d)b['push'](d);}return b;}
1
+ import{getJudgmentDoc,factoryRulePack}from'../config/judgment.js';import{evaluateRuleBook,interpolate}from'../config/rule-engine.js';import{MAX_VOTOR_COUNT,WITHDRAW_DURATION_TIME}from'@wowok/wowok';export function arbRiskFacts(a){return{'status_display':a['status']===undefined?'?':String(a['status']),'invalid_transition':a['invalid_transition'],'withdraw_too_early':a['withdraw_too_early'],'votor_count':a['votor_count'],'votor_count_at_limit':a['votor_count']!==undefined&&a['votor_count']>=MAX_VOTOR_COUNT,'voting_deadline_none':a['voting_deadline_none'],'expects_proposition_event':a['expects_proposition_event'],'indemnity_none':a['indemnity_none'],'weight_concentrated':a['weight_concentrated'],'expects_status_enum':a['expects_status_enum'],'max_votor_count':MAX_VOTOR_COUNT,'withdraw_duration_time_ms':WITHDRAW_DURATION_TIME};}function arbRuleBook(){const a=getJudgmentDoc()['rules']['domains']['arb'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27arb\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function findingToArbRisk(a){return{'id':a['rule_id'],'level':a['level'],'category':a['dimension']??'semantic','title':a['title'],'description':a['description'],'affected_stakeholders':a['stakeholders']??[],'scenario':a['scenario']??'','mitigation':a['mitigation']??'','evidence':a['evidence'],'auto_fixable':![]};}export const ARB_RISK_VERSION='1.0.0';export const ARB_RISK_RULES=((()=>{const a=factoryRulePack('arb');if(!a)return[];const b=arbRiskFacts({});return a['rules']['map'](d=>{const e=d['cases'][0x0];return{'id':d['rule_id'],'level':e['level'],'category':d['dimension']??'semantic','title':interpolate(e['title'],b),'description':interpolate(e['description'],b),'affected_stakeholders':e['stakeholders']??[],'scenario':e['scenario']===undefined?'':interpolate(e['scenario'],b),'mitigation':e['mitigation']===undefined?'':interpolate(e['mitigation'],b),'auto_fixable':![],...d['trigger']===undefined?{}:{'trigger':d['trigger']}};});})());export function checkArbRisks(a){const {findings:b}=evaluateRuleBook(arbRuleBook(),arbRiskFacts(a));return b['map'](findingToArbRisk);}
@@ -35,9 +35,9 @@ export interface VotingGuardEntry {
35
35
  }
36
36
  export interface DualGuardMatrix {
37
37
  voting_guard_empty: boolean;
38
- usage_guard_none: boolean;
39
- dispute_method: "dispute" | "dispute_with_passport";
40
- vote_method: "vote" | "vote_with_voting_guard";
38
+ usage_guard_empty: boolean;
39
+ dispute_method: "dispute" | "dispute_via_passport";
40
+ vote_method: "vote" | "vote_weighted_by_guard";
41
41
  scenario: string;
42
42
  }
43
43
  export declare const DUAL_GUARD_MATRIX: DualGuardMatrix[];
@@ -52,7 +52,7 @@ export declare function isReservedIndex(index: number): boolean;
52
52
  export declare function isUsedPermissionIndex(index: number): boolean;
53
53
  export declare function getActivePermissionCount(): number;
54
54
  export declare function inferSceneFromIntent(intent: string): ArbitrationScene | undefined;
55
- export declare function getDualGuardMatrixEntry(votingGuardEmpty: boolean, usageGuardNone: boolean): DualGuardMatrix;
55
+ export declare function getDualGuardMatrixEntry(votingGuardEmpty: boolean, usageGuardEmpty: boolean): DualGuardMatrix;
56
56
  export declare function isValidArbStatusTransition(from: ArbStatus, to: ArbStatus): boolean;
57
57
  export declare function isTerminalArbStatus(status: ArbStatus): boolean;
58
58
  export declare function getScenesProducingStatus(status: ArbStatus): ArbitrationScene[];
@@ -1 +1 @@
1
- export const ARB_STATUS_CODE={'Principal_confirming':0x0,'Arbitrator_confirming':0x1,'Voting':0x2,'Arbitrated':0x3,'Objectionable':0x4,'Finished':0x5,'Withdrawn':0x6};export const ARB_TERMINAL_STATUSES=['Finished','Withdrawn'];export const ARB_STATUS_ALIASES={'created':'Principal_confirming','voting':'Voting','feedback':'Arbitrator_confirming','confirmed':'Arbitrated','completed':'Finished','reset':'Objectionable','disputed':'Withdrawn'};export const ARBITRATION_PERMISSIONS=[{'index':0x15e,'name':'ARBITRATION_NEW','description':'Create\x20new\x20Arbitration\x20object','governed_operations':['arbitration::new','arbitration::new_with_passport']},{'index':0x15f,'name':'ARBITRATION_DESCRIPTION','description':'Modify\x20Arbitration\x20description','governed_operations':['arbitration::description_set','arbitration::description_set_with_passport']},{'index':0x160,'name':'ARBITRATION_ENDPOINT','description':'Reserved\x20placeholder\x20—\x20not\x20used\x20on-chain\x20(SDK\x20commented\x20out)','governed_operations':[],'is_reserved':!![]},{'index':0x161,'name':'ARBITRATION_LOCATION','description':'Set\x20Arbitration\x20location','governed_operations':['arbitration::location_set','arbitration::location_set_with_passport']},{'index':0x162,'name':'ARBITRATION_VOTING_GUARD','description':'Manage\x20voting_guard\x20list\x20(add\x20/\x20remove\x20/\x20clear)\x20—\x20controls\x20vote\x20weight','governed_operations':['arbitration::voting_guard_by_id_add','arbitration::voting_guard_fixed_add','arbitration::voting_guard_remove','arbitration::voting_guard_clear','(+\x20_with_passport\x20variants)']},{'index':0x163,'name':'ARBITRATION_USAGE_GUARD','description':'Set\x20/\x20clear\x20usage_guard\x20—\x20controls\x20who\x20can\x20file\x20disputes','governed_operations':['arbitration::usage_guard_set','arbitration::usage_guard_none','(+\x20_with_passport\x20variants)']},{'index':0x164,'name':'ARBITRATION_PAUSE','description':'Pause\x20/\x20resume\x20Arbitration\x20(bPaused\x20default\x20true)','governed_operations':['arbitration::pause','arbitration::pause_with_passport']},{'index':0x165,'name':'ARBITRATION_FEE','description':'Set\x20dispute\x20application\x20fee\x20(u64)','governed_operations':['arbitration::fee_set','arbitration::fee_set_with_passport']},{'index':0x166,'name':'ARBITRATION_VOTE','description':'Open\x20vote\x20(no\x20voting_guard\x20configured\x20—\x201\x20person\x201\x20vote)','governed_operations':['arbitration::vote','arbitration::vote_with_passport']},{'index':0x167,'name':'ARBITRATION_ARBITRATION','description':'Make\x20definitive\x20arbitration\x20ruling\x20(with\x20indemnity)','governed_operations':['arbitration::arbitration','arbitration::arbitration_with_passport']},{'index':0x168,'name':'ARBITRATION_FEEDBACK','description':'Provide\x20feedback\x20on\x20Arb\x20case','governed_operations':['arbitration::feedback','arbitration::feedback_with_passport']},{'index':0x169,'name':'ARBITRATION_CONFIRM','description':'Confirm\x20materials\x20submitted\x20by\x20principal\x20(starts\x20voting\x20phase)','governed_operations':['arbitration::confirm','arbitration::confirm_with_passport']},{'index':0x16a,'name':'ARBITRATION_VOTING_DEADLINE_CHANGE','description':'Change\x20voting\x20deadline\x20for\x20an\x20Arb\x20case','governed_operations':['arbitration::voting_deadline_change','arbitration::voting_deadline_change_with_passport']},{'index':0x16b,'name':'ARBITRATION_RESET','description':'Reset\x20arbitration\x20—\x20principal\x20resubmits\x20materials,\x20restart\x20lifecycle','governed_operations':['arbitration::reset','arbitration::reset_with_passport']},{'index':0x16c,'name':'ARBITRATION_ARB_WITHDRAW','description':'Withdraw\x20arbitration\x20fees\x20from\x20Arb\x20into\x20Arbitration.balance','governed_operations':['arbitration::arb_withdraw','arbitration::arb_withdraw_with_passport']},{'index':0x16d,'name':'ARBITRATION_FEES_ALLOC','description':'Allocate\x20arbitration\x20fees\x20to\x20Allocation\x20object','governed_operations':['arbitration::fees_alloc','arbitration::fees_alloc_with_passport']},{'index':0x16e,'name':'ARBITRATION_FEES_TRANSFER','description':'Transfer\x20arbitration\x20fees\x20to\x20Treasury\x20object','governed_operations':['arbitration::fees_transfer','arbitration::fees_transfer_with_passport']},{'index':0x16f,'name':'ARBITRATION_OWNER_RECEIVE','description':'Owner\x20receive\x20(unwrap\x20received\x20Coin/Object\x20and\x20send\x20to\x20Permission\x20owner)','governed_operations':['arbitration::owner_receive','arbitration::owner_receive_object']},{'index':0x170,'name':'ARBITRATION_UM','description':'Set\x20/\x20clear\x20User\x20Manager\x20(Contact\x20object)','governed_operations':['arbitration::um_set','arbitration::um_none','(+\x20_with_passport\x20variants)']}];export const DUAL_GUARD_MATRIX=[{'voting_guard_empty':!![],'usage_guard_none':!![],'dispute_method':'dispute','vote_method':'vote','scenario':'Open\x20dispute\x20+\x20open\x20voting\x20(1\x20person\x201\x20vote)'},{'voting_guard_empty':!![],'usage_guard_none':![],'dispute_method':'dispute_with_passport','vote_method':'vote','scenario':'Restricted\x20dispute\x20+\x20open\x20voting'},{'voting_guard_empty':![],'usage_guard_none':!![],'dispute_method':'dispute','vote_method':'vote_with_voting_guard','scenario':'Open\x20dispute\x20+\x20weighted\x20voting'},{'voting_guard_empty':![],'usage_guard_none':![],'dispute_method':'dispute_with_passport','vote_method':'vote_with_voting_guard','scenario':'Restricted\x20dispute\x20+\x20weighted\x20voting\x20(most\x20controlled)'}];export const ARBITRATION_SCENES=[{'id':'arbitration_create','name':'Create\x20new\x20Arbitration\x20service','operation_category':'lifecycle','permission_index':0x15e,'permission_name':'ARBITRATION_NEW','requires_voting_guard':'any','requires_usage_guard':'any','has_passport_variant':!![],'governed_operations':['arbitration::new','arbitration::new_with_passport'],'common_patterns':['Pre-publish\x20config:\x20create\x20Arbitration\x20+\x20Permission\x20together','bPaused\x20defaults\x20to\x20true\x20—\x20must\x20call\x20pause(false)\x20to\x20enable','Generic\x20T:\x20choose\x20Coin\x20type\x20(e.g.\x200x2::wow::WOW)\x20at\x20creation','object-linker\x20binding\x20(core):\x20permission\x20+\x20arbitration\x20linked\x20via\x20object_linker::affiliation_core'],'recommended_templates':['T-AB-01','T-AB-02']},{'id':'arbitration_dispute','name':'File\x20dispute\x20against\x20an\x20Order\x20(creates\x20Arb\x20case)','operation_category':'dispute','permission_index':0x0,'permission_name':'(order\x20op\x20permission\x20—\x20no\x20ARBITRATION_*\x20index)','required_arb_status':[],'resulting_arb_status':'Arbitrator_confirming','requires_voting_guard':'any','requires_usage_guard':'any','has_passport_variant':!![],'governed_operations':['arbitration::dispute','arbitration::dispute_with_passport'],'common_patterns':['Fee\x20gate:\x20coin::value(&fee)\x20>=\x20self.fee,\x20else\x20E_FEE_NOT_ENOUGH','Order\x20op\x20permission:\x20order::assert_op_permission(order,\x20ctx)\x20required','Creates\x20independent\x20Arb<T>\x20object\x20with\x20its\x20own\x20lifecycle','If\x20usage_guard\x20is\x20Some\x20→\x20must\x20use\x20dispute_with_passport','Order.dispute\x20list:\x20appends\x20new\x20Arb\x20(max\x2010\x20per\x20Order)'],'recommended_templates':['T-AB-01','T-AB-03','T-AB-04']},{'id':'arbitration_vote','name':'Vote\x20on\x20Arb\x20propositions','operation_category':'voting','permission_index':0x166,'permission_name':'ARBITRATION_VOTE','required_arb_status':['Voting'],'requires_voting_guard':'any','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['arbitration::vote','arbitration::vote_with_passport','arbitration::vote_with_voting_guard'],'common_patterns':['Open\x20vote:\x20voting_guard\x20empty\x20→\x20vote()\x20/\x20vote_with_passport()','Weighted\x20vote:\x20voting_guard\x20non-empty\x20→\x20vote_with_voting_guard()','votes:\x20u8\x20array\x20—\x20index\x20into\x20proposition\x20list\x20(0..N-1)','Mismatch:\x20vote()\x20with\x20non-empty\x20voting_guard\x20→\x20E_VOTING_GUARD_USED','Guard\x20not\x20in\x20list:\x20E_VOTING_GUARD_NOT_FOUND'],'recommended_templates':['T-AB-02','T-AB-03']},{'id':'arbitration_confirm','name':'Confirm\x20principal\x20materials\x20and\x20start\x20voting\x20phase','operation_category':'ruling','permission_index':0x169,'permission_name':'ARBITRATION_CONFIRM','required_arb_status':['Arbitrator_confirming'],'resulting_arb_status':'Voting','requires_voting_guard':'any','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['arbitration::confirm','arbitration::confirm_with_passport'],'common_patterns':['Transitions\x20Arb\x20from\x20Arbitrator_confirming\x20→\x20Voting','voting_deadline:\x20u64\x20timestamp_ms\x20(null\x20=\x20no\x20deadline)','Once\x20in\x20Voting,\x20only\x20vote\x20/\x20voting_deadline_change\x20/\x20reset\x20allowed'],'recommended_templates':['T-AB-01','T-AB-02']},{'id':'arbitration_feedback','name':'Provide\x20feedback\x20on\x20Arb\x20case','operation_category':'ruling','permission_index':0x168,'permission_name':'ARBITRATION_FEEDBACK','required_arb_status':['Principal_confirming','Arbitrator_confirming','Voting','Arbitrated','Objectionable'],'requires_voting_guard':'not_applicable','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['arbitration::feedback','arbitration::feedback_with_passport'],'common_patterns':['Feedback\x20is\x20informational\x20—\x20does\x20not\x20change\x20Arb\x20status','Used\x20by\x20principal\x20/\x20arbitrator\x20/\x20voters\x20to\x20attach\x20notes','No\x20state\x20transition;\x20supplements\x20the\x20case\x20record'],'recommended_templates':['T-AB-01','T-AB-07']},{'id':'arbitration_ruling','name':'Make\x20definitive\x20arbitration\x20ruling\x20with\x20indemnity','operation_category':'ruling','permission_index':0x167,'permission_name':'ARBITRATION_ARBITRATION','required_arb_status':['Voting'],'resulting_arb_status':'Arbitrated','requires_voting_guard':'any','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['arbitration::arbitration','arbitration::arbitration_with_passport'],'common_patterns':['Ruling\x20produces:\x20feedback\x20(string)\x20+\x20indemnity\x20(u64)','indemnity\x20is\x20compensation\x20amount\x20—\x20paid\x20via\x20order::compensate','compensate\x20is\x20public(package)\x20—\x20only\x20order.move\x20can\x20trigger\x20it','Once\x20Arbitrated,\x20case\x20enters\x20Objectionable\x20window\x20(reset\x20possible)'],'recommended_templates':['T-AB-01','T-AB-05']},{'id':'arbitration_reset','name':'Reset\x20arbitration\x20—\x20principal\x20resubmits\x20materials','operation_category':'ruling','permission_index':0x16b,'permission_name':'ARBITRATION_RESET','required_arb_status':['Objectionable','Arbitrator_confirming'],'resulting_arb_status':'Principal_confirming','requires_voting_guard':'any','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['arbitration::reset','arbitration::reset_with_passport'],'common_patterns':['Resets\x20Arb\x20from\x20Objectionable/Arbitrator_confirming\x20→\x20Principal_confirming','Used\x20when\x20principal\x20objects\x20to\x20ruling\x20and\x20resubmits\x20materials','Feedback\x20required\x20(string\x20explaining\x20reset\x20reason)','Restart\x20full\x20lifecycle:\x20Principal_confirming\x20→\x20...\x20→\x20Finished'],'recommended_templates':['T-AB-07']},{'id':'arbitration_arb_withdraw','name':'Withdraw\x20arbitration\x20fees\x20from\x20Arb\x20into\x20Arbitration.balance','operation_category':'fund','permission_index':0x16c,'permission_name':'ARBITRATION_ARB_WITHDRAW','required_arb_status':['Finished','Arbitrated','Objectionable'],'requires_voting_guard':'not_applicable','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['arbitration::arb_withdraw','arbitration::arb_withdraw_with_passport'],'common_patterns':['Calls\x20arb::withdraw(arb,\x20clock)\x20—\x20moves\x20fees\x20from\x20Arb\x20to\x20Arbitration','Finished:\x20withdraw\x20immediately','Arbitrated/Objectionable:\x20must\x20wait\x20WITHDRAW_DURATION_TIME\x20(30d)\x20past\x20indemnity.time','Increases\x20Arbitration.balance\x20—\x20funds\x20available\x20for\x20fees_alloc/fees_transfer'],'recommended_templates':['T-AB-06']},{'id':'arbitration_fees_alloc','name':'Allocate\x20arbitration\x20fees\x20to\x20Allocation\x20object','operation_category':'fund','permission_index':0x16d,'permission_name':'ARBITRATION_FEES_ALLOC','requires_voting_guard':'not_applicable','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['arbitration::fees_alloc','arbitration::fees_alloc_with_passport'],'common_patterns':['Destination:\x20Allocation\x20object\x20(parameterized\x20fund\x20distribution)','payment_remark\x20+\x20payment_index:\x20bookkeeping\x20for\x20Payment\x20object','May\x20create\x20new\x20Payment\x20object\x20if\x20newPayment\x20name\x20provided','Triggers\x20balance::withdraw_all\x20—\x20extracts\x20ALL\x20balance'],'recommended_templates':['T-AB-06']},{'id':'arbitration_fees_transfer','name':'Transfer\x20arbitration\x20fees\x20to\x20Treasury\x20object','operation_category':'fund','permission_index':0x16e,'permission_name':'ARBITRATION_FEES_TRANSFER','requires_voting_guard':'not_applicable','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['arbitration::fees_transfer','arbitration::fees_transfer_with_passport'],'common_patterns':['Destination:\x20Treasury\x20object\x20(general\x20fund\x20pool)','Same\x20bookkeeping\x20as\x20fees_alloc\x20(remark\x20+\x20index\x20+\x20newPayment)','Triggers\x20balance::withdraw_all\x20—\x20extracts\x20ALL\x20balance','Choose\x20Allocation\x20vs\x20Treasury\x20by\x20distribution\x20need'],'recommended_templates':['T-AB-06']},{'id':'arbitration_voting_guard_config','name':'Configure\x20voting_guard\x20list\x20(add\x20/\x20set\x20/\x20remove\x20/\x20clear)','operation_category':'guard','permission_index':0x162,'permission_name':'ARBITRATION_VOTING_GUARD','requires_voting_guard':'any','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['arbitration::voting_guard_by_id_add\x20(+\x20_with_passport)','arbitration::voting_guard_fixed_add\x20(+\x20_with_passport)','arbitration::voting_guard_remove\x20(+\x20_with_passport)','arbitration::voting_guard_clear\x20(+\x20_with_passport)'],'common_patterns':['Max\x2050\x20guards:\x20MAX_VOTING_GUARD_COUNT=50\x20(off-by-one-safe:\x20len<50\x20allows\x20add)','GuardIdentifier(u8):\x20dynamic\x20weight\x20from\x20Passport\x20submission\x20value','FixedValue(u32):\x20static\x20weight\x20(e.g.\x20100\x20votes\x20per\x20holder)','Add\x20same\x20guard\x20twice\x20→\x20updates\x20vote_weight\x20(no\x20duplicate)','op=\x27set\x27\x20=\x20clear\x20then\x20add;\x20op=\x27add\x27\x20=\x20append;\x20op=\x27remove\x27\x20=\x20by\x20address'],'recommended_templates':['T-AB-02','T-AB-03']},{'id':'arbitration_usage_guard_config','name':'Configure\x20usage_guard\x20(set\x20/\x20clear)','operation_category':'guard','permission_index':0x163,'permission_name':'ARBITRATION_USAGE_GUARD','requires_voting_guard':'not_applicable','requires_usage_guard':'any','has_passport_variant':!![],'governed_operations':['arbitration::usage_guard_set\x20(+\x20_with_passport)','arbitration::usage_guard_none\x20(+\x20_with_passport)'],'common_patterns':['Single\x20guard\x20(Option<address>)\x20—\x20not\x20a\x20list','Some(guard):\x20dispute\x20must\x20use\x20_with_passport\x20variant','None:\x20dispute\x20can\x20use\x20either\x20variant\x20(no\x20passport\x20needed)','object_linker::affiliation_change_core:\x20updates\x20link\x20when\x20guard\x20changes'],'recommended_templates':['T-AB-04']},{'id':'arbitration_pause','name':'Pause\x20/\x20resume\x20Arbitration\x20service','operation_category':'lifecycle','permission_index':0x164,'permission_name':'ARBITRATION_PAUSE','requires_voting_guard':'not_applicable','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['arbitration::pause','arbitration::pause_with_passport'],'common_patterns':['bPaused\x20default\x20true\x20—\x20new\x20Arbitration\x20cannot\x20accept\x20disputes','pause(false)\x20to\x20enable,\x20pause(true)\x20to\x20disable','Paused\x20Arbitration\x20rejects\x20dispute\x20(E_PAUSED)','Does\x20not\x20affect\x20already-open\x20Arb\x20cases'],'recommended_templates':['T-AB-01']}];export const ARBITRATION_LEDGER_VERSION='1.0.0';export function getScenesByCategory(a){return ARBITRATION_SCENES['filter'](b=>b['operation_category']===a);}export function findSceneById(a){return ARBITRATION_SCENES['find'](b=>b['id']===a);}export function findSceneByPermissionIndex(a){return ARBITRATION_SCENES['find'](b=>b['permission_index']===a);}export function getPermissionByIndex(a){return ARBITRATION_PERMISSIONS['find'](b=>b['index']===a);}export function getPermissionByName(a){return ARBITRATION_PERMISSIONS['find'](b=>b['name']===a);}export function isReservedIndex(a){const b=getPermissionByIndex(a);return!!b?.['is_reserved'];}export function isUsedPermissionIndex(a){const b=getPermissionByIndex(a);return!!b&&!b['is_reserved'];}export function getActivePermissionCount(){return ARBITRATION_PERMISSIONS['filter'](a=>!a['is_reserved'])['length'];}export function inferSceneFromIntent(a){const b=a['toLowerCase'](),c=[{'keywords':['create','new'],'sceneId':'arbitration_create'},{'keywords':['dispute','file','complaint'],'sceneId':'arbitration_dispute'},{'keywords':['vote','voting','decide'],'sceneId':'arbitration_vote'},{'keywords':['confirm','materials'],'sceneId':'arbitration_confirm'},{'keywords':['feedback','opinion'],'sceneId':'arbitration_feedback'},{'keywords':['ruling','arbitration','verdict'],'sceneId':'arbitration_ruling'},{'keywords':['reset','resubmit'],'sceneId':'arbitration_reset'},{'keywords':['arb_withdraw','withdraw','withdraw\x20fees'],'sceneId':'arbitration_arb_withdraw'},{'keywords':['fees_alloc','allocate','allocate\x20fees'],'sceneId':'arbitration_fees_alloc'},{'keywords':['fees_transfer','transfer','transfer\x20in'],'sceneId':'arbitration_fees_transfer'},{'keywords':['voting_guard','voting\x20guard'],'sceneId':'arbitration_voting_guard_config'},{'keywords':['usage_guard','usage\x20guard'],'sceneId':'arbitration_usage_guard_config'},{'keywords':['pause','enable'],'sceneId':'arbitration_pause'}];for(const {keywords:d,sceneId:e}of c){if(d['some'](f=>b['includes'](f['toLowerCase']()))){const f=findSceneById(e);if(f)return f;}}return undefined;}export function getDualGuardMatrixEntry(a,b){return DUAL_GUARD_MATRIX['find'](c=>c['voting_guard_empty']===a&&c['usage_guard_none']===b);}export function isValidArbStatusTransition(a,b){const c={'Principal_confirming':['Arbitrator_confirming'],'Arbitrator_confirming':['Voting','Principal_confirming'],'Voting':['Arbitrated'],'Arbitrated':['Objectionable','Finished','Withdrawn'],'Objectionable':['Principal_confirming','Withdrawn'],'Finished':['Withdrawn'],'Withdrawn':[]};return c[a]?.['includes'](b)??![];}export function isTerminalArbStatus(a){return ARB_TERMINAL_STATUSES['includes'](a);}export function getScenesProducingStatus(a){return ARBITRATION_SCENES['filter'](b=>b['resulting_arb_status']===a);}export function getScenesRequiringStatus(a){return ARBITRATION_SCENES['filter'](b=>b['required_arb_status']?.['includes'](a));}export function getArbitrationScenesCount(){return ARBITRATION_SCENES['length'];}export function getAllArbitrationPermissions(){return[...ARBITRATION_PERMISSIONS];}export function getActiveArbitrationPermissions(){return ARBITRATION_PERMISSIONS['filter'](a=>!a['is_reserved']);}
1
+ export const ARB_STATUS_CODE={'Principal_confirming':0x0,'Arbitrator_confirming':0x1,'Voting':0x2,'Arbitrated':0x3,'Objectionable':0x4,'Finished':0x5,'Withdrawn':0x6};export const ARB_TERMINAL_STATUSES=['Finished','Withdrawn'];export const ARB_STATUS_ALIASES={'created':'Principal_confirming','voting':'Voting','feedback':'Arbitrator_confirming','confirmed':'Arbitrated','completed':'Finished','reset':'Objectionable','disputed':'Withdrawn'};export const ARBITRATION_PERMISSIONS=[{'index':0x15e,'name':'ARBITRATION_NEW','description':'Create\x20new\x20Arbitration\x20object','governed_operations':['create\x20a\x20new\x20arbitration\x20service']},{'index':0x15f,'name':'ARBITRATION_DESCRIPTION','description':'Modify\x20Arbitration\x20description','governed_operations':['modify\x20the\x20arbitration\x20description']},{'index':0x160,'name':'ARBITRATION_ENDPOINT','description':'Reserved\x20placeholder\x20—\x20not\x20used\x20on-chain\x20(SDK\x20commented\x20out)','governed_operations':[],'is_reserved':!![]},{'index':0x161,'name':'ARBITRATION_LOCATION','description':'Set\x20Arbitration\x20location','governed_operations':['set\x20the\x20arbitration\x20location']},{'index':0x162,'name':'ARBITRATION_VOTING_GUARD','description':'Manage\x20voting_guard\x20list\x20(add\x20/\x20remove\x20/\x20clear)\x20—\x20controls\x20vote\x20weight','governed_operations':['add\x20a\x20passport-identifier\x20voting\x20guard\x20(dynamic\x20weight)','add\x20a\x20fixed-weight\x20voting\x20guard','remove\x20a\x20voting\x20guard','clear\x20the\x20voting\x20guard\x20list']},{'index':0x163,'name':'ARBITRATION_USAGE_GUARD','description':'Set\x20/\x20clear\x20usage_guard\x20—\x20controls\x20who\x20can\x20file\x20disputes','governed_operations':['set\x20the\x20usage\x20guard\x20(restrict\x20who\x20can\x20file\x20disputes)','clear\x20the\x20usage\x20guard']},{'index':0x164,'name':'ARBITRATION_PAUSE','description':'Pause\x20/\x20resume\x20Arbitration\x20(bPaused\x20default\x20true)','governed_operations':['pause/resume\x20the\x20arbitration\x20service']},{'index':0x165,'name':'ARBITRATION_FEE','description':'Set\x20dispute\x20application\x20fee\x20(u64)','governed_operations':['set\x20the\x20dispute\x20application\x20fee']},{'index':0x166,'name':'ARBITRATION_VOTE','description':'Open\x20vote\x20(no\x20voting_guard\x20configured\x20—\x201\x20person\x201\x20vote)','governed_operations':['open\x20a\x20vote\x20(1\x20person\x201\x20vote)']},{'index':0x167,'name':'ARBITRATION_ARBITRATION','description':'Make\x20definitive\x20arbitration\x20ruling\x20(with\x20indemnity)','governed_operations':['issue\x20the\x20definitive\x20arbitration\x20ruling\x20(with\x20indemnity)']},{'index':0x168,'name':'ARBITRATION_FEEDBACK','description':'Provide\x20feedback\x20on\x20Arb\x20case','governed_operations':['attach\x20feedback\x20to\x20the\x20Arb\x20case']},{'index':0x169,'name':'ARBITRATION_CONFIRM','description':'Confirm\x20materials\x20submitted\x20by\x20principal\x20(starts\x20voting\x20phase)','governed_operations':['confirm\x20the\x20principal\x27s\x20materials\x20(starts\x20the\x20voting\x20phase)']},{'index':0x16a,'name':'ARBITRATION_VOTING_DEADLINE_CHANGE','description':'Change\x20voting\x20deadline\x20for\x20an\x20Arb\x20case','governed_operations':['change\x20the\x20voting\x20deadline\x20for\x20an\x20Arb\x20case']},{'index':0x16b,'name':'ARBITRATION_RESET','description':'Reset\x20arbitration\x20—\x20principal\x20resubmits\x20materials,\x20restart\x20lifecycle','governed_operations':['reset\x20the\x20arbitration\x20(principal\x20resubmits\x20materials)']},{'index':0x16c,'name':'ARBITRATION_ARB_WITHDRAW','description':'Withdraw\x20arbitration\x20fees\x20from\x20Arb\x20into\x20Arbitration.balance','governed_operations':['withdraw\x20arbitration\x20fees\x20from\x20the\x20Arb\x20into\x20Arbitration.balance']},{'index':0x16d,'name':'ARBITRATION_FEES_ALLOC','description':'Allocate\x20arbitration\x20fees\x20to\x20Allocation\x20object','governed_operations':['allocate\x20arbitration\x20fees\x20to\x20an\x20Allocation\x20object']},{'index':0x16e,'name':'ARBITRATION_FEES_TRANSFER','description':'Transfer\x20arbitration\x20fees\x20to\x20Treasury\x20object','governed_operations':['transfer\x20arbitration\x20fees\x20to\x20a\x20Treasury\x20object']},{'index':0x16f,'name':'ARBITRATION_OWNER_RECEIVE','description':'Owner\x20receive\x20(unwrap\x20received\x20Coin/Object\x20and\x20send\x20to\x20Permission\x20owner)','governed_operations':['owner\x20receipt\x20of\x20payments\x20(unwrapped\x20to\x20the\x20owner)','owner\x20receipt\x20of\x20whole\x20objects']},{'index':0x170,'name':'ARBITRATION_UM','description':'Set\x20/\x20clear\x20User\x20Manager\x20(Contact\x20object)','governed_operations':['bind\x20a\x20Contact\x20as\x20the\x20UM\x20coordinator','unbind\x20the\x20UM\x20Contact']}];export const DUAL_GUARD_MATRIX=[{'voting_guard_empty':!![],'usage_guard_empty':!![],'dispute_method':'dispute','vote_method':'vote','scenario':'Open\x20dispute\x20+\x20open\x20voting\x20(1\x20person\x201\x20vote)'},{'voting_guard_empty':!![],'usage_guard_empty':![],'dispute_method':'dispute_via_passport','vote_method':'vote','scenario':'Restricted\x20dispute\x20+\x20open\x20voting'},{'voting_guard_empty':![],'usage_guard_empty':!![],'dispute_method':'dispute','vote_method':'vote_weighted_by_guard','scenario':'Open\x20dispute\x20+\x20weighted\x20voting'},{'voting_guard_empty':![],'usage_guard_empty':![],'dispute_method':'dispute_via_passport','vote_method':'vote_weighted_by_guard','scenario':'Restricted\x20dispute\x20+\x20weighted\x20voting\x20(most\x20controlled)'}];export const ARBITRATION_SCENES=[{'id':'arbitration_create','name':'Create\x20new\x20Arbitration\x20service','operation_category':'lifecycle','permission_index':0x15e,'permission_name':'ARBITRATION_NEW','requires_voting_guard':'any','requires_usage_guard':'any','has_passport_variant':!![],'governed_operations':['create\x20a\x20new\x20arbitration\x20service'],'common_patterns':['Pre-publish\x20config:\x20create\x20Arbitration\x20+\x20Permission\x20together','bPaused\x20defaults\x20to\x20true\x20—\x20must\x20call\x20pause(false)\x20to\x20enable','Generic\x20T:\x20choose\x20Coin\x20type\x20(e.g.\x200x2::wow::WOW)\x20at\x20creation','object-linker\x20binding\x20(core):\x20permission\x20+\x20arbitration\x20linked\x20by\x20an\x20affiliation\x20core\x20binding'],'recommended_templates':['T-AB-01','T-AB-02']},{'id':'arbitration_dispute','name':'File\x20dispute\x20against\x20an\x20Order\x20(creates\x20Arb\x20case)','operation_category':'dispute','permission_index':0x0,'permission_name':'(order\x20op\x20permission\x20—\x20no\x20ARBITRATION_*\x20index)','required_arb_status':[],'resulting_arb_status':'Arbitrator_confirming','requires_voting_guard':'any','requires_usage_guard':'any','has_passport_variant':!![],'governed_operations':['file\x20a\x20dispute\x20against\x20an\x20Order\x20(creates\x20the\x20Arb\x20case)'],'common_patterns':['Fee\x20gate:\x20coin::value(&fee)\x20>=\x20self.fee,\x20else\x20E_FEE_NOT_ENOUGH','Order\x20op\x20permission\x20check\x20required\x20(caller\x20must\x20hold\x20the\x20matching\x20order\x20operation\x20permission)','Creates\x20independent\x20Arb<T>\x20object\x20with\x20its\x20own\x20lifecycle','If\x20usage_guard\x20is\x20Some\x20→\x20the\x20dispute\x20must\x20go\x20through\x20passport\x20verification','Order.dispute\x20list:\x20appends\x20new\x20Arb\x20(max\x2010\x20per\x20Order)'],'recommended_templates':['T-AB-01','T-AB-03','T-AB-04']},{'id':'arbitration_vote','name':'Vote\x20on\x20Arb\x20propositions','operation_category':'voting','permission_index':0x166,'permission_name':'ARBITRATION_VOTE','required_arb_status':['Voting'],'requires_voting_guard':'any','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['open\x20a\x20vote\x20(1\x20person\x201\x20vote)','cast\x20a\x20weighted\x20vote\x20(weights\x20resolved\x20from\x20the\x20voting\x20guard)'],'common_patterns':['Open\x20vote:\x20voting_guard\x20empty\x20→\x20plain\x20vote\x20(passport\x20variant\x20supported)','Weighted\x20vote:\x20voting_guard\x20non-empty\x20→\x20vote\x20weight\x20resolved\x20per\x20voting\x20guard','votes:\x20u8\x20array\x20—\x20index\x20into\x20proposition\x20list\x20(0..N-1)','Mismatch:\x20vote()\x20with\x20non-empty\x20voting_guard\x20→\x20E_VOTING_GUARD_USED','Guard\x20not\x20in\x20list:\x20E_VOTING_GUARD_NOT_FOUND'],'recommended_templates':['T-AB-02','T-AB-03']},{'id':'arbitration_confirm','name':'Confirm\x20principal\x20materials\x20and\x20start\x20voting\x20phase','operation_category':'ruling','permission_index':0x169,'permission_name':'ARBITRATION_CONFIRM','required_arb_status':['Arbitrator_confirming'],'resulting_arb_status':'Voting','requires_voting_guard':'any','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['confirm\x20the\x20principal\x27s\x20materials\x20(starts\x20the\x20voting\x20phase)'],'common_patterns':['Transitions\x20Arb\x20from\x20Arbitrator_confirming\x20→\x20Voting','voting_deadline:\x20u64\x20timestamp_ms\x20(null\x20=\x20no\x20deadline)','Once\x20in\x20Voting,\x20only\x20vote\x20/\x20voting_deadline_change\x20/\x20reset\x20allowed'],'recommended_templates':['T-AB-01','T-AB-02']},{'id':'arbitration_feedback','name':'Provide\x20feedback\x20on\x20Arb\x20case','operation_category':'ruling','permission_index':0x168,'permission_name':'ARBITRATION_FEEDBACK','required_arb_status':['Principal_confirming','Arbitrator_confirming','Voting','Arbitrated','Objectionable'],'requires_voting_guard':'not_applicable','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['attach\x20feedback\x20to\x20the\x20Arb\x20case'],'common_patterns':['Feedback\x20is\x20informational\x20—\x20does\x20not\x20change\x20Arb\x20status','Used\x20by\x20principal\x20/\x20arbitrator\x20/\x20voters\x20to\x20attach\x20notes','No\x20state\x20transition;\x20supplements\x20the\x20case\x20record'],'recommended_templates':['T-AB-01','T-AB-07']},{'id':'arbitration_ruling','name':'Make\x20definitive\x20arbitration\x20ruling\x20with\x20indemnity','operation_category':'ruling','permission_index':0x167,'permission_name':'ARBITRATION_ARBITRATION','required_arb_status':['Voting'],'resulting_arb_status':'Arbitrated','requires_voting_guard':'any','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['issue\x20the\x20definitive\x20arbitration\x20ruling\x20(with\x20indemnity)'],'common_patterns':['Ruling\x20produces:\x20feedback\x20(string)\x20+\x20indemnity\x20(u64)','indemnity\x20is\x20compensation\x20amount\x20—\x20paid\x20through\x20the\x20order\x20compensation\x20flow','compensation\x20is\x20package-internal\x20—\x20only\x20the\x20order\x20lifecycle\x20can\x20trigger\x20it','Once\x20Arbitrated,\x20case\x20enters\x20Objectionable\x20window\x20(reset\x20possible)'],'recommended_templates':['T-AB-01','T-AB-05']},{'id':'arbitration_reset','name':'Reset\x20arbitration\x20—\x20principal\x20resubmits\x20materials','operation_category':'ruling','permission_index':0x16b,'permission_name':'ARBITRATION_RESET','required_arb_status':['Objectionable','Arbitrator_confirming'],'resulting_arb_status':'Principal_confirming','requires_voting_guard':'any','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['reset\x20the\x20arbitration\x20(principal\x20resubmits\x20materials)'],'common_patterns':['Resets\x20Arb\x20from\x20Objectionable/Arbitrator_confirming\x20→\x20Principal_confirming','Used\x20when\x20principal\x20objects\x20to\x20ruling\x20and\x20resubmits\x20materials','Feedback\x20required\x20(string\x20explaining\x20reset\x20reason)','Restart\x20full\x20lifecycle:\x20Principal_confirming\x20→\x20...\x20→\x20Finished'],'recommended_templates':['T-AB-07']},{'id':'arbitration_arb_withdraw','name':'Withdraw\x20arbitration\x20fees\x20from\x20Arb\x20into\x20Arbitration.balance','operation_category':'fund','permission_index':0x16c,'permission_name':'ARBITRATION_ARB_WITHDRAW','required_arb_status':['Finished','Arbitrated','Objectionable'],'requires_voting_guard':'not_applicable','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['withdraw\x20arbitration\x20fees\x20from\x20the\x20Arb\x20into\x20Arbitration.balance'],'common_patterns':['Moves\x20fees\x20from\x20the\x20Arb\x20object\x20into\x20Arbitration.balance\x20(clock-checked)','Finished:\x20withdraw\x20immediately','Arbitrated/Objectionable:\x20must\x20wait\x20WITHDRAW_DURATION_TIME\x20(30d)\x20past\x20indemnity.time','Increases\x20Arbitration.balance\x20—\x20funds\x20available\x20for\x20fee\x20allocation/transfer'],'recommended_templates':['T-AB-06']},{'id':'arbitration_fees_alloc','name':'Allocate\x20arbitration\x20fees\x20to\x20Allocation\x20object','operation_category':'fund','permission_index':0x16d,'permission_name':'ARBITRATION_FEES_ALLOC','requires_voting_guard':'not_applicable','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['allocate\x20arbitration\x20fees\x20to\x20an\x20Allocation\x20object'],'common_patterns':['Destination:\x20Allocation\x20object\x20(parameterized\x20fund\x20distribution)','payment_remark\x20+\x20payment_index:\x20bookkeeping\x20for\x20Payment\x20object','May\x20create\x20new\x20Payment\x20object\x20if\x20newPayment\x20name\x20provided','Triggers\x20balance::withdraw_all\x20—\x20extracts\x20ALL\x20balance'],'recommended_templates':['T-AB-06']},{'id':'arbitration_fees_transfer','name':'Transfer\x20arbitration\x20fees\x20to\x20Treasury\x20object','operation_category':'fund','permission_index':0x16e,'permission_name':'ARBITRATION_FEES_TRANSFER','requires_voting_guard':'not_applicable','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['transfer\x20arbitration\x20fees\x20to\x20a\x20Treasury\x20object'],'common_patterns':['Destination:\x20Treasury\x20object\x20(general\x20fund\x20pool)','Same\x20bookkeeping\x20as\x20fee\x20allocation\x20(remark\x20+\x20index\x20+\x20newPayment)','Triggers\x20balance::withdraw_all\x20—\x20extracts\x20ALL\x20balance','Choose\x20Allocation\x20vs\x20Treasury\x20by\x20distribution\x20need'],'recommended_templates':['T-AB-06']},{'id':'arbitration_voting_guard_config','name':'Configure\x20voting_guard\x20list\x20(add\x20/\x20set\x20/\x20remove\x20/\x20clear)','operation_category':'guard','permission_index':0x162,'permission_name':'ARBITRATION_VOTING_GUARD','requires_voting_guard':'any','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['add\x20a\x20passport-identifier\x20voting\x20guard\x20(dynamic\x20weight)','add\x20a\x20fixed-weight\x20voting\x20guard','remove\x20a\x20voting\x20guard','clear\x20the\x20voting\x20guard\x20list'],'common_patterns':['Max\x2050\x20guards:\x20MAX_VOTING_GUARD_COUNT=50\x20(off-by-one-safe:\x20len<50\x20allows\x20add)','GuardIdentifier(u8):\x20dynamic\x20weight\x20from\x20Passport\x20submission\x20value','FixedValue(u32):\x20static\x20weight\x20(e.g.\x20100\x20votes\x20per\x20holder)','Add\x20same\x20guard\x20twice\x20→\x20updates\x20vote_weight\x20(no\x20duplicate)','op=\x27set\x27\x20=\x20clear\x20then\x20add;\x20op=\x27add\x27\x20=\x20append;\x20op=\x27remove\x27\x20=\x20by\x20address'],'recommended_templates':['T-AB-02','T-AB-03']},{'id':'arbitration_usage_guard_config','name':'Configure\x20usage_guard\x20(set\x20/\x20clear)','operation_category':'guard','permission_index':0x163,'permission_name':'ARBITRATION_USAGE_GUARD','requires_voting_guard':'not_applicable','requires_usage_guard':'any','has_passport_variant':!![],'governed_operations':['set\x20the\x20usage\x20guard\x20(restrict\x20who\x20can\x20file\x20disputes)','clear\x20the\x20usage\x20guard'],'common_patterns':['Single\x20guard\x20(Option<address>)\x20—\x20not\x20a\x20list','Some(guard):\x20the\x20dispute\x20must\x20go\x20through\x20passport\x20verification','None:\x20dispute\x20can\x20use\x20either\x20variant\x20(no\x20passport\x20needed)','object-linker\x20affiliation\x20change:\x20updates\x20link\x20when\x20guard\x20changes'],'recommended_templates':['T-AB-04']},{'id':'arbitration_pause','name':'Pause\x20/\x20resume\x20Arbitration\x20service','operation_category':'lifecycle','permission_index':0x164,'permission_name':'ARBITRATION_PAUSE','requires_voting_guard':'not_applicable','requires_usage_guard':'not_applicable','has_passport_variant':!![],'governed_operations':['pause/resume\x20the\x20arbitration\x20service'],'common_patterns':['bPaused\x20default\x20true\x20—\x20new\x20Arbitration\x20cannot\x20accept\x20disputes','pause(false)\x20to\x20enable,\x20pause(true)\x20to\x20disable','Paused\x20Arbitration\x20rejects\x20dispute\x20(E_PAUSED)','Does\x20not\x20affect\x20already-open\x20Arb\x20cases'],'recommended_templates':['T-AB-01']}];export const ARBITRATION_LEDGER_VERSION='1.0.0';export function getScenesByCategory(a){return ARBITRATION_SCENES['filter'](b=>b['operation_category']===a);}export function findSceneById(a){return ARBITRATION_SCENES['find'](b=>b['id']===a);}export function findSceneByPermissionIndex(a){return ARBITRATION_SCENES['find'](b=>b['permission_index']===a);}export function getPermissionByIndex(a){return ARBITRATION_PERMISSIONS['find'](b=>b['index']===a);}export function getPermissionByName(a){return ARBITRATION_PERMISSIONS['find'](b=>b['name']===a);}export function isReservedIndex(a){const b=getPermissionByIndex(a);return!!b?.['is_reserved'];}export function isUsedPermissionIndex(a){const b=getPermissionByIndex(a);return!!b&&!b['is_reserved'];}export function getActivePermissionCount(){return ARBITRATION_PERMISSIONS['filter'](a=>!a['is_reserved'])['length'];}export function inferSceneFromIntent(a){const b=a['toLowerCase'](),c=[{'keywords':['create','new'],'sceneId':'arbitration_create'},{'keywords':['dispute','file','complaint'],'sceneId':'arbitration_dispute'},{'keywords':['vote','voting','decide'],'sceneId':'arbitration_vote'},{'keywords':['confirm','materials'],'sceneId':'arbitration_confirm'},{'keywords':['feedback','opinion'],'sceneId':'arbitration_feedback'},{'keywords':['ruling','arbitration','verdict'],'sceneId':'arbitration_ruling'},{'keywords':['reset','resubmit'],'sceneId':'arbitration_reset'},{'keywords':['arb_withdraw','withdraw','withdraw\x20fees'],'sceneId':'arbitration_arb_withdraw'},{'keywords':['allocate','allocate\x20fees','fees\x20allocation'],'sceneId':'arbitration_fees_alloc'},{'keywords':['fees_transfer','transfer','transfer\x20in'],'sceneId':'arbitration_fees_transfer'},{'keywords':['voting_guard','voting\x20guard'],'sceneId':'arbitration_voting_guard_config'},{'keywords':['usage_guard','usage\x20guard'],'sceneId':'arbitration_usage_guard_config'},{'keywords':['pause','enable'],'sceneId':'arbitration_pause'}];for(const {keywords:d,sceneId:e}of c){if(d['some'](f=>b['includes'](f['toLowerCase']()))){const f=findSceneById(e);if(f)return f;}}return undefined;}export function getDualGuardMatrixEntry(a,b){return DUAL_GUARD_MATRIX['find'](c=>c['voting_guard_empty']===a&&c['usage_guard_empty']===b);}export function isValidArbStatusTransition(a,b){const c={'Principal_confirming':['Arbitrator_confirming'],'Arbitrator_confirming':['Voting','Principal_confirming'],'Voting':['Arbitrated'],'Arbitrated':['Objectionable','Finished','Withdrawn'],'Objectionable':['Principal_confirming','Withdrawn'],'Finished':['Withdrawn'],'Withdrawn':[]};return c[a]?.['includes'](b)??![];}export function isTerminalArbStatus(a){return ARB_TERMINAL_STATUSES['includes'](a);}export function getScenesProducingStatus(a){return ARBITRATION_SCENES['filter'](b=>b['resulting_arb_status']===a);}export function getScenesRequiringStatus(a){return ARBITRATION_SCENES['filter'](b=>b['required_arb_status']?.['includes'](a));}export function getArbitrationScenesCount(){return ARBITRATION_SCENES['length'];}export function getAllArbitrationPermissions(){return[...ARBITRATION_PERMISSIONS];}export function getActiveArbitrationPermissions(){return ARBITRATION_PERMISSIONS['filter'](a=>!a['is_reserved']);}
@@ -75,7 +75,7 @@ export declare function initPuzzleFromIntent(intent: Partial<IntentPuzzle>): Arb
75
75
  export declare function checkPuzzleCompleteness(puzzle: ArbitrationPuzzle): PuzzleCompleteness;
76
76
  export interface ConstraintViolation {
77
77
  constraint_id: string;
78
- severity: "CRITICAL" | "HIGH" | "MEDIUM" | "LOW";
78
+ severity: "critical" | "high" | "medium" | "low";
79
79
  message: string;
80
80
  current_value?: string | number;
81
81
  limit?: string | number;
@@ -1 +1 @@
1
- import{MAX_VOTING_GUARD_COUNT}from'@wowok/wowok';import{getDualGuardMatrixEntry,isValidArbStatusTransition}from'./arbitration-ledger.js';export function initPuzzleFromIntent(a){const b={};return(a['action']||a['rule_sentence'])&&(b['intent']={'action':a['action']??'create_arbitration','target_arb':a['target_arb'],'target_order':a['target_order'],'rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}),b['constraints']={'F_AB_01_coin_type_valid':!![],'F_AB_02_permission_address_valid':!![],'F_AB_03_bPaused_default_true':!![],'F_AB_04_fee_u64_nonneg':!![],'F_AB_05_voting_guard_count_le_50':!![],'F_AB_06_voting_guard_no_duplicate':!![],'F_AB_07_usage_guard_single':!![],'F_AB_08_arb_status_transition_valid':!![],'F_AB_09_arb_belongs_to_arbitration':!![],'F_AB_10_order_op_permission':!![],'F_AB_11_dispute_fee_sufficient':!![],'F_AB_12_dual_guard_coherent':!![]},b['voting_guard']={'guards':[],'weight_mode':'none'},b['usage_guard']={'guard':null,'passport_required':![],'filter_rules':[]},b;}export function checkPuzzleCompleteness(a){const b=[],c=[];if(!a['intent'])b['push']('A'),c['push']({'dimension':'A','reason':'Intent\x20not\x20specified\x20(action\x20+\x20rule_sentence)'});else{if(!a['intent']['rule_sentence'])b['push']('A'),c['push']({'dimension':'A','reason':'rule_sentence\x20is\x20empty'});else{const d=a['intent']['action'];(d==='file_dispute'||d==='vote'||d==='confirm_materials'||d==='provide_feedback'||d==='make_ruling'||d==='reset_arbitration'||d==='withdraw_fees')&&!a['intent']['target_arb']&&!a['intent']['target_order']&&(b['push']('A'),c['push']({'dimension':'A','reason':d+'\x20requires\x20target_arb\x20or\x20target_order'})),d==='file_dispute'&&!a['intent']['target_order']&&(b['push']('A'),c['push']({'dimension':'A','reason':'file_dispute\x20requires\x20target_order'}));}}if(!a['arbitration_config']){const e=a['intent']?.['action']==='create_arbitration'||a['intent']?.['action']==='configure';e&&(b['push']('B'),c['push']({'dimension':'B','reason':'Arbitration\x20config\x20not\x20specified'}));}else a['intent']?.['action']==='create_arbitration'&&(!a['arbitration_config']['coin_type']&&(b['push']('B'),c['push']({'dimension':'B','reason':'coin_type\x20(generic\x20T)\x20required\x20for\x20create_arbitration'})),!a['arbitration_config']['permission_address']&&(b['push']('B'),c['push']({'dimension':'B','reason':'permission_address\x20required\x20for\x20create_arbitration'})));if(!a['voting_guard'])(a['intent']?.['action']==='configure_voting_guard'||a['intent']?.['action']==='vote')&&(b['push']('C'),c['push']({'dimension':'C','reason':'voting_guard\x20config\x20not\x20specified'}));else a['intent']?.['action']==='vote'&&a['voting_guard']['guards']['length']>0x0&&(a['voting_guard']['weight_mode']==='none'&&(b['push']('C'),c['push']({'dimension':'C','reason':'weight_mode\x20must\x20be\x20set\x20when\x20guards\x20non-empty'})));!a['usage_guard']&&((a['intent']?.['action']==='configure_usage_guard'||a['intent']?.['action']==='file_dispute')&&(b['push']('D'),c['push']({'dimension':'D','reason':'usage_guard\x20config\x20not\x20specified'})));if(!a['arbiter_config'])(a['intent']?.['action']==='vote'||a['intent']?.['action']==='make_ruling')&&(b['push']('E'),c['push']({'dimension':'E','reason':'Arbiter\x20config\x20not\x20specified'}));else a['intent']?.['action']==='vote'&&a['arbiter_config']['arbitrators']['length']===0x0&&(b['push']('E'),c['push']({'dimension':'E','reason':'At\x20least\x20one\x20arbitrator\x20required\x20for\x20voting'}));if(!a['constraints'])b['push']('F'),c['push']({'dimension':'F','reason':'Constraints\x20not\x20checked'});else{const f=['confirm_materials','vote','provide_feedback','make_ruling','reset_arbitration','withdraw_fees'];a['intent']&&f['includes'](a['intent']['action'])&&(!a['current_arb_status']&&(b['push']('F'),c['push']({'dimension':'F','reason':'current_arb_status\x20required\x20for\x20Arb\x20operations'})),!a['expected_arb_status']&&a['intent']['action']!=='provide_feedback'&&(b['push']('F'),c['push']({'dimension':'F','reason':'expected_arb_status\x20required\x20(non-feedback\x20Arb\x20ops)'})));}return{'dimensions':['A','B','C','D','E','F'],'missing':b,'missing_details':c,'complete':b['length']===0x0,'next_step':b['length']===0x0?'Puzzle\x20complete\x20—\x20ready\x20for\x20confirmation\x20text\x20generation':'Next:\x20complete\x20dimension\x20'+b[0x0]+'\x20—\x20'+c[0x0]['reason']};}export function validateConstraints(a){const b=[];a['voting_guard']&&a['voting_guard']['guards']['length']>MAX_VOTING_GUARD_COUNT&&b['push']({'constraint_id':'F-AB-05','severity':'HIGH','message':'voting_guard\x20count\x20'+a['voting_guard']['guards']['length']+'\x20exceeds\x20MAX_VOTING_GUARD_COUNT\x20'+MAX_VOTING_GUARD_COUNT,'current_value':a['voting_guard']['guards']['length'],'limit':MAX_VOTING_GUARD_COUNT});if(a['voting_guard']&&a['voting_guard']['guards']['length']>0x0){const c=a['voting_guard']['guards']['map'](e=>e['guard']),d=c['filter']((e,f)=>c['indexOf'](e)!==f);d['length']>0x0&&b['push']({'constraint_id':'F-AB-06','severity':'MEDIUM','message':'Duplicate\x20voting_guard\x20addresses:\x20'+d['join'](',\x20'),'current_value':d['join'](',')});}a['current_arb_status']&&a['expected_arb_status']&&(a['current_arb_status']!==a['expected_arb_status']&&!isValidArbStatusTransition(a['current_arb_status'],a['expected_arb_status'])&&b['push']({'constraint_id':'F-AB-08','severity':'CRITICAL','message':'Invalid\x20Arb\x20status\x20transition:\x20'+a['current_arb_status']+'\x20→\x20'+a['expected_arb_status'],'current_value':a['current_arb_status']+'\x20→\x20'+a['expected_arb_status']}));a['intent']?.['action']==='file_dispute'&&a['arbitration_config']?.['fee']&&(a['arbitration_config']['fee']==='0'&&b['push']({'constraint_id':'F-AB-11','severity':'HIGH','message':'Dispute\x20fee\x20is\x200\x20—\x20likely\x20below\x20arbitration.fee\x20threshold','current_value':'0'}));if(a['voting_guard']&&a['usage_guard']){const e=getDualGuardMatrixEntry(a['voting_guard']['guards']['length']===0x0,a['usage_guard']['guard']===null);a['intent']?.['action']==='file_dispute'&&(a['usage_guard']['guard']!==null&&!a['usage_guard']['passport_required']&&b['push']({'constraint_id':'F-AB-12','severity':'HIGH','message':'usage_guard\x20is\x20Some\x20but\x20passport_required=false\x20—\x20dispute\x20will\x20fail\x20with\x20E_NEED_PASSPORT'})),a['intent']?.['action']==='vote'&&(a['voting_guard']['guards']['length']>0x0&&!a['intent']['target_arb']&&b['push']({'constraint_id':'F-AB-12','severity':'HIGH','message':'voting_guard\x20is\x20non-empty\x20but\x20vote\x20target_arb\x20missing\x20—\x20must\x20use\x20vote_with_voting_guard'}));}if(a['intent']?.['action']==='file_dispute'){}return b;}export function generateConfirmationText(a){const b=[];b['push']('═══\x20Arbitration\x20Confirmation\x20═══'),b['push']('');if(a['intent']){b['push']('Action:\x20'+a['intent']['action']);if(a['intent']['target_arb'])b['push']('Target\x20Arb:\x20'+a['intent']['target_arb']);if(a['intent']['target_order'])b['push']('Target\x20Order:\x20'+a['intent']['target_order']);b['push']('Rule:\x20'+a['intent']['rule_sentence']);if(a['intent']['failure_conditions']['length']>0x0){b['push']('Failure\x20conditions:');for(const e of a['intent']['failure_conditions'])b['push']('\x20\x20-\x20'+e);}b['push']('');}if(a['arbitration_config']){b['push']('─\x20Arbitration\x20Config\x20──────────────');const f=a['arbitration_config'];if(f['description'])b['push']('Description:\x20'+f['description']);if(f['location'])b['push']('Location:\x20'+f['location']);if(f['fee']!==undefined)b['push']('Fee:\x20'+f['fee']);if(f['bPaused']!==undefined)b['push']('bPaused:\x20'+f['bPaused']+'\x20(default\x20true\x20on\x20creation)');if(f['coin_type'])b['push']('Coin\x20type\x20(T):\x20'+f['coin_type']);if(f['permission_address'])b['push']('Permission:\x20'+f['permission_address']);if(f['um']!==undefined)b['push']('UM:\x20'+(f['um']??'(none)'));b['push']('');}if(a['voting_guard']&&a['voting_guard']['guards']['length']>0x0){b['push']('─\x20voting_guard\x20Config\x20──────────────'),b['push']('Count:\x20'+a['voting_guard']['guards']['length']+'\x20/\x20'+MAX_VOTING_GUARD_COUNT),b['push']('Weight\x20mode:\x20'+a['voting_guard']['weight_mode']);for(const h of a['voting_guard']['guards']){const i='GuardIdentifier'in h['vote_weight']?'GuardIdentifier('+h['vote_weight']['GuardIdentifier']+')':'FixedValue('+h['vote_weight']['FixedValue']+')';b['push']('\x20\x20'+h['guard']+':\x20'+i);}a['voting_guard']['cooperation_matrix']&&b['push']('Cooperation:\x20'+a['voting_guard']['cooperation_matrix']['scenario']),b['push']('');}if(a['usage_guard']&&a['usage_guard']['guard']!==null){b['push']('─\x20usage_guard\x20Config\x20──────────────'),b['push']('Guard:\x20'+a['usage_guard']['guard']),b['push']('Passport\x20required:\x20'+a['usage_guard']['passport_required']);if(a['usage_guard']['filter_rules']['length']>0x0){b['push']('Filter\x20rules:');for(const j of a['usage_guard']['filter_rules'])b['push']('\x20\x20-\x20'+j);}b['push']('');}if(a['arbiter_config']&&a['arbiter_config']['arbitrators']['length']>0x0){b['push']('─\x20Arbiter\x20Config\x20──────────────'),b['push']('Arbitrators\x20('+a['arbiter_config']['arbitrators']['length']+'):\x20'+a['arbiter_config']['arbitrators']['join'](',\x20')),b['push']('Vote\x20distribution:\x20'+a['arbiter_config']['vote_distribution']),b['push']('Ruling\x20authority:\x20'+a['arbiter_config']['ruling_authority']);if(a['arbiter_config']['fees_split']){b['push']('Fees\x20split:');const k=a['arbiter_config']['fees_split'];if(k['allocation'])b['push']('\x20\x20→\x20Allocation:\x20'+k['allocation']);if(k['treasury'])b['push']('\x20\x20→\x20Treasury:\x20'+k['treasury']);if(k['remark'])b['push']('\x20\x20Remark:\x20'+k['remark']);if(k['payment_index']!==undefined)b['push']('\x20\x20Payment\x20index:\x20'+k['payment_index']);}b['push']('');}if(a['current_arb_status']||a['expected_arb_status']){b['push']('─\x207-State\x20Flow\x20──────────────');if(a['current_arb_status'])b['push']('Current:\x20'+a['current_arb_status']);if(a['expected_arb_status'])b['push']('Expected\x20after:\x20'+a['expected_arb_status']);b['push']('');}const d=validateConstraints(a);if(d['length']>0x0){b['push']('─\x20Constraint\x20Violations\x20──────────────');for(const l of d){b['push']('\x20\x20['+l['severity']+']\x20'+l['constraint_id']+':\x20'+l['message']);}b['push']('');}return b['join']('\x0a');}
1
+ import{MAX_VOTING_GUARD_COUNT}from'@wowok/wowok';import{getDualGuardMatrixEntry,isValidArbStatusTransition}from'./arbitration-ledger.js';export function initPuzzleFromIntent(a){const b={};return(a['action']||a['rule_sentence'])&&(b['intent']={'action':a['action']??'create_arbitration','target_arb':a['target_arb'],'target_order':a['target_order'],'rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}),b['constraints']={'F_AB_01_coin_type_valid':!![],'F_AB_02_permission_address_valid':!![],'F_AB_03_bPaused_default_true':!![],'F_AB_04_fee_u64_nonneg':!![],'F_AB_05_voting_guard_count_le_50':!![],'F_AB_06_voting_guard_no_duplicate':!![],'F_AB_07_usage_guard_single':!![],'F_AB_08_arb_status_transition_valid':!![],'F_AB_09_arb_belongs_to_arbitration':!![],'F_AB_10_order_op_permission':!![],'F_AB_11_dispute_fee_sufficient':!![],'F_AB_12_dual_guard_coherent':!![]},b['voting_guard']={'guards':[],'weight_mode':'none'},b['usage_guard']={'guard':null,'passport_required':![],'filter_rules':[]},b;}export function checkPuzzleCompleteness(a){const b=[],c=[];if(!a['intent'])b['push']('A'),c['push']({'dimension':'A','reason':'Intent\x20not\x20specified\x20(action\x20+\x20rule_sentence)'});else{if(!a['intent']['rule_sentence'])b['push']('A'),c['push']({'dimension':'A','reason':'rule_sentence\x20is\x20empty'});else{const d=a['intent']['action'];(d==='file_dispute'||d==='vote'||d==='confirm_materials'||d==='provide_feedback'||d==='make_ruling'||d==='reset_arbitration'||d==='withdraw_fees')&&!a['intent']['target_arb']&&!a['intent']['target_order']&&(b['push']('A'),c['push']({'dimension':'A','reason':d+'\x20requires\x20target_arb\x20or\x20target_order'})),d==='file_dispute'&&!a['intent']['target_order']&&(b['push']('A'),c['push']({'dimension':'A','reason':'file_dispute\x20requires\x20target_order'}));}}if(!a['arbitration_config']){const e=a['intent']?.['action']==='create_arbitration'||a['intent']?.['action']==='configure';e&&(b['push']('B'),c['push']({'dimension':'B','reason':'Arbitration\x20config\x20not\x20specified'}));}else a['intent']?.['action']==='create_arbitration'&&(!a['arbitration_config']['coin_type']&&(b['push']('B'),c['push']({'dimension':'B','reason':'coin_type\x20(generic\x20T)\x20required\x20for\x20create_arbitration'})),!a['arbitration_config']['permission_address']&&(b['push']('B'),c['push']({'dimension':'B','reason':'permission_address\x20required\x20for\x20create_arbitration'})));if(!a['voting_guard'])(a['intent']?.['action']==='configure_voting_guard'||a['intent']?.['action']==='vote')&&(b['push']('C'),c['push']({'dimension':'C','reason':'voting_guard\x20config\x20not\x20specified'}));else a['intent']?.['action']==='vote'&&a['voting_guard']['guards']['length']>0x0&&(a['voting_guard']['weight_mode']==='none'&&(b['push']('C'),c['push']({'dimension':'C','reason':'weight_mode\x20must\x20be\x20set\x20when\x20guards\x20non-empty'})));!a['usage_guard']&&((a['intent']?.['action']==='configure_usage_guard'||a['intent']?.['action']==='file_dispute')&&(b['push']('D'),c['push']({'dimension':'D','reason':'usage_guard\x20config\x20not\x20specified'})));if(!a['arbiter_config'])(a['intent']?.['action']==='vote'||a['intent']?.['action']==='make_ruling')&&(b['push']('E'),c['push']({'dimension':'E','reason':'Arbiter\x20config\x20not\x20specified'}));else a['intent']?.['action']==='vote'&&a['arbiter_config']['arbitrators']['length']===0x0&&(b['push']('E'),c['push']({'dimension':'E','reason':'At\x20least\x20one\x20arbitrator\x20required\x20for\x20voting'}));if(!a['constraints'])b['push']('F'),c['push']({'dimension':'F','reason':'Constraints\x20not\x20checked'});else{const f=['confirm_materials','vote','provide_feedback','make_ruling','reset_arbitration','withdraw_fees'];a['intent']&&f['includes'](a['intent']['action'])&&(!a['current_arb_status']&&(b['push']('F'),c['push']({'dimension':'F','reason':'current_arb_status\x20required\x20for\x20Arb\x20operations'})),!a['expected_arb_status']&&a['intent']['action']!=='provide_feedback'&&(b['push']('F'),c['push']({'dimension':'F','reason':'expected_arb_status\x20required\x20(non-feedback\x20Arb\x20ops)'})));}return{'dimensions':['A','B','C','D','E','F'],'missing':b,'missing_details':c,'complete':b['length']===0x0,'next_step':b['length']===0x0?'Puzzle\x20complete\x20—\x20ready\x20for\x20confirmation\x20text\x20generation':'Next:\x20complete\x20dimension\x20'+b[0x0]+'\x20—\x20'+c[0x0]['reason']};}export function validateConstraints(a){const b=[];a['voting_guard']&&a['voting_guard']['guards']['length']>MAX_VOTING_GUARD_COUNT&&b['push']({'constraint_id':'F-AB-05','severity':'high','message':'voting_guard\x20count\x20'+a['voting_guard']['guards']['length']+'\x20exceeds\x20MAX_VOTING_GUARD_COUNT\x20'+MAX_VOTING_GUARD_COUNT,'current_value':a['voting_guard']['guards']['length'],'limit':MAX_VOTING_GUARD_COUNT});if(a['voting_guard']&&a['voting_guard']['guards']['length']>0x0){const c=a['voting_guard']['guards']['map'](e=>e['guard']),d=c['filter']((e,f)=>c['indexOf'](e)!==f);d['length']>0x0&&b['push']({'constraint_id':'F-AB-06','severity':'medium','message':'Duplicate\x20voting_guard\x20addresses:\x20'+d['join'](',\x20'),'current_value':d['join'](',')});}a['current_arb_status']&&a['expected_arb_status']&&(a['current_arb_status']!==a['expected_arb_status']&&!isValidArbStatusTransition(a['current_arb_status'],a['expected_arb_status'])&&b['push']({'constraint_id':'F-AB-08','severity':'critical','message':'Invalid\x20Arb\x20status\x20transition:\x20'+a['current_arb_status']+'\x20→\x20'+a['expected_arb_status'],'current_value':a['current_arb_status']+'\x20→\x20'+a['expected_arb_status']}));a['intent']?.['action']==='file_dispute'&&a['arbitration_config']?.['fee']&&(a['arbitration_config']['fee']==='0'&&b['push']({'constraint_id':'F-AB-11','severity':'high','message':'Dispute\x20fee\x20is\x200\x20—\x20likely\x20below\x20arbitration.fee\x20threshold','current_value':'0'}));if(a['voting_guard']&&a['usage_guard']){const e=getDualGuardMatrixEntry(a['voting_guard']['guards']['length']===0x0,a['usage_guard']['guard']===null);a['intent']?.['action']==='file_dispute'&&(a['usage_guard']['guard']!==null&&!a['usage_guard']['passport_required']&&b['push']({'constraint_id':'F-AB-12','severity':'high','message':'usage_guard\x20is\x20Some\x20but\x20passport_required=false\x20—\x20dispute\x20will\x20fail\x20with\x20E_NEED_PASSPORT'})),a['intent']?.['action']==='vote'&&(a['voting_guard']['guards']['length']>0x0&&!a['intent']['target_arb']&&b['push']({'constraint_id':'F-AB-12','severity':'high','message':'voting_guard\x20is\x20non-empty\x20but\x20vote\x20target_arb\x20missing\x20—\x20must\x20use\x20the\x20Passport-verified\x20voting\x20path'}));}if(a['intent']?.['action']==='file_dispute'){}return b;}export function generateConfirmationText(a){const b=[];b['push']('═══\x20Arbitration\x20Confirmation\x20═══'),b['push']('');if(a['intent']){b['push']('Action:\x20'+a['intent']['action']);if(a['intent']['target_arb'])b['push']('Target\x20Arb:\x20'+a['intent']['target_arb']);if(a['intent']['target_order'])b['push']('Target\x20Order:\x20'+a['intent']['target_order']);b['push']('Rule:\x20'+a['intent']['rule_sentence']);if(a['intent']['failure_conditions']['length']>0x0){b['push']('Failure\x20conditions:');for(const e of a['intent']['failure_conditions'])b['push']('\x20\x20-\x20'+e);}b['push']('');}if(a['arbitration_config']){b['push']('─\x20Arbitration\x20Config\x20──────────────');const f=a['arbitration_config'];if(f['description'])b['push']('Description:\x20'+f['description']);if(f['location'])b['push']('Location:\x20'+f['location']);if(f['fee']!==undefined)b['push']('Fee:\x20'+f['fee']);if(f['bPaused']!==undefined)b['push']('bPaused:\x20'+f['bPaused']+'\x20(default\x20true\x20on\x20creation)');if(f['coin_type'])b['push']('Coin\x20type\x20(T):\x20'+f['coin_type']);if(f['permission_address'])b['push']('Permission:\x20'+f['permission_address']);if(f['um']!==undefined)b['push']('UM:\x20'+(f['um']??'(none)'));b['push']('');}if(a['voting_guard']&&a['voting_guard']['guards']['length']>0x0){b['push']('─\x20voting_guard\x20Config\x20──────────────'),b['push']('Count:\x20'+a['voting_guard']['guards']['length']+'\x20/\x20'+MAX_VOTING_GUARD_COUNT),b['push']('Weight\x20mode:\x20'+a['voting_guard']['weight_mode']);for(const h of a['voting_guard']['guards']){const i='GuardIdentifier'in h['vote_weight']?'GuardIdentifier('+h['vote_weight']['GuardIdentifier']+')':'FixedValue('+h['vote_weight']['FixedValue']+')';b['push']('\x20\x20'+h['guard']+':\x20'+i);}a['voting_guard']['cooperation_matrix']&&b['push']('Cooperation:\x20'+a['voting_guard']['cooperation_matrix']['scenario']),b['push']('');}if(a['usage_guard']&&a['usage_guard']['guard']!==null){b['push']('─\x20usage_guard\x20Config\x20──────────────'),b['push']('Guard:\x20'+a['usage_guard']['guard']),b['push']('Passport\x20required:\x20'+a['usage_guard']['passport_required']);if(a['usage_guard']['filter_rules']['length']>0x0){b['push']('Filter\x20rules:');for(const j of a['usage_guard']['filter_rules'])b['push']('\x20\x20-\x20'+j);}b['push']('');}if(a['arbiter_config']&&a['arbiter_config']['arbitrators']['length']>0x0){b['push']('─\x20Arbiter\x20Config\x20──────────────'),b['push']('Arbitrators\x20('+a['arbiter_config']['arbitrators']['length']+'):\x20'+a['arbiter_config']['arbitrators']['join'](',\x20')),b['push']('Vote\x20distribution:\x20'+a['arbiter_config']['vote_distribution']),b['push']('Ruling\x20authority:\x20'+a['arbiter_config']['ruling_authority']);if(a['arbiter_config']['fees_split']){b['push']('Fees\x20split:');const k=a['arbiter_config']['fees_split'];if(k['allocation'])b['push']('\x20\x20→\x20Allocation:\x20'+k['allocation']);if(k['treasury'])b['push']('\x20\x20→\x20Treasury:\x20'+k['treasury']);if(k['remark'])b['push']('\x20\x20Remark:\x20'+k['remark']);if(k['payment_index']!==undefined)b['push']('\x20\x20Payment\x20index:\x20'+k['payment_index']);}b['push']('');}if(a['current_arb_status']||a['expected_arb_status']){b['push']('─\x207-State\x20Flow\x20──────────────');if(a['current_arb_status'])b['push']('Current:\x20'+a['current_arb_status']);if(a['expected_arb_status'])b['push']('Expected\x20after:\x20'+a['expected_arb_status']);b['push']('');}const d=validateConstraints(a);if(d['length']>0x0){b['push']('─\x20Constraint\x20Violations\x20──────────────');for(const l of d){b['push']('\x20\x20['+l['severity']+']\x20'+l['constraint_id']+':\x20'+l['message']);}b['push']('');}return b['join']('\x0a');}
@@ -1,5 +1,6 @@
1
+ import { type Facts, type FindingExposure } from "../config/rule-engine.js";
1
2
  import { type ArbStatus } from "./arbitration-ledger.js";
2
- export type RiskLevel = "CRITICAL" | "HIGH" | "MEDIUM" | "LOW";
3
+ export type RiskLevel = "critical" | "high" | "medium" | "low";
3
4
  export type RiskCategory = "structural" | "semantic" | "authority" | "lifecycle" | "cross_object";
4
5
  export interface ArbitrationRisk {
5
6
  id: string;
@@ -11,6 +12,7 @@ export interface ArbitrationRisk {
11
12
  scenario: string;
12
13
  mitigation: string;
13
14
  evidence?: string;
15
+ exposure?: FindingExposure;
14
16
  }
15
17
  export type ArbitrationStakeholder = "owner" | "arbiter" | "voter" | "disputant" | "system";
16
18
  export interface RiskRule {
@@ -97,6 +99,7 @@ export interface RiskCheckContext {
97
99
  current_timestamp_ms?: number;
98
100
  target_objects_types?: string[];
99
101
  }
102
+ export declare function arbitrationRiskFacts(ctx: RiskCheckContext): Facts;
100
103
  export declare const ARBITRATION_RISK_VERSION = "1.0.0";
101
104
  export declare function getAllRiskRules(): RiskRule[];
102
105
  export interface ArbitrationRiskAssessment {
@@ -1 +1 @@
1
- import{MAX_VOTING_GUARD_COUNT}from'@wowok/wowok';import{isTerminalArbStatus,isValidArbStatusTransition}from'./arbitration-ledger.js';const R_AB_1_01={'id':'R-AB-1-01','category':'structural','trigger':'voting_guard\x20count\x20exceeds\x20MAX_VOTING_GUARD_COUNT\x20(50)','check':a=>{if(!a['voting_guard'])return null;if(a['voting_guard']['op']==='add'||a['voting_guard']['op']==='set'){const b=a['voting_guard']['op']==='set'?a['voting_guard']['guards']['length']:(a['current_voting_guard_count']??0x0)+a['voting_guard']['guards']['length'];if(b>MAX_VOTING_GUARD_COUNT)return{'id':'R-AB-1-01','level':'HIGH','category':'structural','title':'voting_guard\x20count\x20exceeds\x20limit','description':'voting_guard\x20would\x20have\x20'+b+'\x20entries,\x20exceeds\x20MAX_VOTING_GUARD_COUNT\x20'+MAX_VOTING_GUARD_COUNT,'affected_stakeholders':['owner','arbiter'],'scenario':'Adding\x20too\x20many\x20voting\x20guards','mitigation':'Remove\x20unused\x20guards\x20before\x20adding\x20new\x20ones;\x20max\x20'+MAX_VOTING_GUARD_COUNT,'evidence':'count='+b};}return null;}},R_AB_1_02={'id':'R-AB-1-02','category':'structural','trigger':'Dispute\x20fee\x20below\x20arbitration.fee\x20threshold','check':a=>{if(!a['dispute']||a['current_arbitration_fee']===undefined)return null;const b=typeof a['current_arbitration_fee']==='string'?BigInt(a['current_arbitration_fee']):BigInt(a['current_arbitration_fee']),c=typeof a['dispute']['fee']==='object'&&a['dispute']['fee']!==null&&'balance'in a['dispute']['fee']?BigInt(a['dispute']['fee']['balance']??0x0):BigInt(0x0);if(c<b)return{'id':'R-AB-1-02','level':'CRITICAL','category':'structural','title':'Dispute\x20fee\x20insufficient\x20(E_FEE_NOT_ENOUGH)','description':'Provided\x20fee\x20'+c['toString']()+'\x20<\x20required\x20'+b['toString'](),'affected_stakeholders':['disputant'],'scenario':'Filing\x20dispute\x20with\x20insufficient\x20fee','mitigation':'Increase\x20dispute.fee.balance\x20to\x20>=\x20'+b['toString'](),'evidence':'provided='+c['toString']()+',\x20required='+b['toString']()};return null;}},R_AB_1_03={'id':'R-AB-1-03','category':'structural','trigger':'Arbitration\x20paused\x20(bPaused=true)\x20—\x20dispute\x20will\x20fail\x20with\x20E_PAUSED','check':a=>{if(a['dispute']&&a['current_bPaused']===!![])return{'id':'R-AB-1-03','level':'HIGH','category':'structural','title':'Arbitration\x20paused\x20—\x20cannot\x20file\x20dispute','description':'Arbitration.bPaused=true;\x20dispute()\x20will\x20abort\x20with\x20E_PAUSED','affected_stakeholders':['disputant'],'scenario':'Filing\x20dispute\x20against\x20a\x20paused\x20Arbitration','mitigation':'Call\x20pause(false)\x20(requires\x20ARBITRATION_PAUSE=356)\x20to\x20resume','evidence':'bPaused=true'};return null;}},R_AB_1_04={'id':'R-AB-1-04','category':'structural','trigger':'voting_deadline\x20in\x20the\x20past\x20—\x20vote\x20will\x20be\x20rejected','check':a=>{const b=a['confirm']?.['voting_deadline']??a['voting_deadline_change']?.['voting_deadline'];if(b!==undefined&&b!==null&&a['current_timestamp_ms']!==undefined){if(b<a['current_timestamp_ms'])return{'id':'R-AB-1-04','level':'HIGH','category':'structural','title':'voting_deadline\x20in\x20the\x20past','description':'Deadline\x20'+b+'\x20is\x20before\x20current\x20time\x20'+a['current_timestamp_ms'],'affected_stakeholders':['voter','arbiter'],'scenario':'Setting\x20voting\x20deadline\x20to\x20an\x20already-elapsed\x20timestamp','mitigation':'Use\x20a\x20future\x20timestamp\x20(e.g.\x20now\x20+\x207\x20days\x20in\x20ms)','evidence':'deadline='+b+',\x20now='+a['current_timestamp_ms']};}return null;}},R_AB_2_01={'id':'R-AB-2-01','category':'semantic','trigger':'voting_guard\x20misconfiguration\x20—\x20dispute\x20cannot\x20be\x20resolved','check':a=>{if(a['vote']&&a['vote']['voting_guard']){if(!a['current_voting_guard_addresses']||a['current_voting_guard_addresses']['length']===0x0)return{'id':'R-AB-2-01','level':'HIGH','category':'semantic','title':'voting_guard\x20misconfiguration\x20—\x20dispute\x20cannot\x20be\x20resolved','description':'vote.voting_guard\x20provided\x20but\x20Arbitration.voting_guard\x20is\x20empty;\x20E_VOTING_GUARD_NOT_FOUND\x20will\x20abort','affected_stakeholders':['voter','arbiter','disputant'],'scenario':'voting_guard\x20misconfiguration\x20prevents\x20vote\x20—\x20dispute\x20stuck','mitigation':'Either\x20add\x20the\x20Guard\x20to\x20voting_guard\x20list\x20(354)\x20or\x20use\x20open\x20vote()\x20without\x20voting_guard','evidence':'vote.voting_guard='+a['vote']['voting_guard']};if(!a['current_voting_guard_addresses']['includes'](a['vote']['voting_guard']))return{'id':'R-AB-2-01','level':'HIGH','category':'semantic','title':'voting_guard\x20misconfiguration\x20—\x20dispute\x20cannot\x20be\x20resolved','description':'vote.voting_guard\x20'+a['vote']['voting_guard']+'\x20not\x20in\x20Arbitration.voting_guard\x20list','affected_stakeholders':['voter','arbiter','disputant'],'scenario':'Voter\x27s\x20Guard\x20not\x20registered\x20—\x20vote\x20will\x20fail\x20with\x20E_VOTING_GUARD_NOT_FOUND','mitigation':'Add\x20guard\x20'+a['vote']['voting_guard']+'\x20via\x20voting_guard_add\x20(354),\x20or\x20use\x20a\x20registered\x20guard','evidence':'provided='+a['vote']['voting_guard']+',\x20registered='+a['current_voting_guard_addresses']['join'](',')};}return null;}},R_AB_2_03={'id':'R-AB-2-03','category':'semantic','trigger':'VoteValue.GuardIdentifier\x20with\x20non-numeric\x20Guard\x20submission\x20type','check':a=>{if(a['voting_guard']&&(a['voting_guard']['op']==='add'||a['voting_guard']['op']==='set'))for(const b of a['voting_guard']['guards']){const c=b['vote_weight'];if('GuardIdentifier'in c&&c['GuardIdentifier']!==undefined){if(c['GuardIdentifier']>0xff)return{'id':'R-AB-2-03','level':'HIGH','category':'semantic','title':'GuardIdentifier\x20index\x20>\x20u8::max\x20(255)','description':'GuardIdentifier\x20'+c['GuardIdentifier']+'\x20exceeds\x20u8\x20max\x20(255)','affected_stakeholders':['owner'],'scenario':'Setting\x20GuardIdentifier\x20index\x20beyond\x20u8\x20range','mitigation':'Use\x20GuardIdentifier\x20index\x200-255','evidence':'identifier='+c['GuardIdentifier']};}if('FixedValue'in c&&c['FixedValue']!==undefined){if(c['FixedValue']>0xffffffff)return{'id':'R-AB-2-03','level':'HIGH','category':'semantic','title':'FixedValue\x20>\x20u32::max\x20(4294967295)','description':'FixedValue\x20'+c['FixedValue']+'\x20exceeds\x20u32\x20max','affected_stakeholders':['owner'],'scenario':'Setting\x20FixedValue\x20beyond\x20u32\x20range','mitigation':'Use\x20FixedValue\x200-4294967295','evidence':'fixed='+c['FixedValue']};}}return null;}},R_AB_3_01={'id':'R-AB-3-01','category':'authority','trigger':'Arbiter\x20collusion\x20—\x20single\x20voter\x20controls\x20>50%\x20of\x20total\x20weight','check':a=>{if(!a['voting_guard']||a['voting_guard']['op']!=='add'&&a['voting_guard']['op']!=='set')return null;const b=a['voting_guard']['guards'];if(b['length']<0x2)return null;const c=b['filter'](f=>'FixedValue'in f['vote_weight']&&f['vote_weight']['FixedValue']!==undefined)['map'](f=>f['vote_weight']['FixedValue']);if(c['length']===0x0)return null;const d=c['reduce']((f,g)=>f+g,0x0),e=Math['max'](...c);if(d>0x0&&e/d>0.5)return{'id':'R-AB-3-01','level':'MEDIUM','category':'authority','title':'Arbiter\x20collusion\x20risk\x20—\x20single\x20guard\x20controls\x20>50%\x20weight','description':'One\x20voting_guard\x20has\x20'+e+'\x20of\x20'+d+'\x20total\x20weight\x20('+(e/d*0x64)['toFixed'](0x1)+'%)','affected_stakeholders':['owner','disputant'],'scenario':'Weighted\x20voting\x20with\x20dominant\x20arbiter\x20—\x20can\x20single-handedly\x20decide\x20rulings','mitigation':'Distribute\x20weight\x20more\x20evenly,\x20or\x20require\x20multi-arbiter\x20consensus','evidence':'max='+e+',\x20total='+d+',\x20ratio='+(e/d*0x64)['toFixed'](0x1)+'%'};return null;}},R_AB_3_02={'id':'R-AB-3-02','category':'authority','trigger':'Permission\x20over-concentration\x20—\x20single\x20admin\x20(owner)','check':a=>{if(a['builder'])return{'id':'R-AB-3-02','level':'HIGH','category':'authority','title':'Arbitration\x20ownership\x20transfer\x20—\x20IRREVERSIBLE','description':'Transferring\x20Arbitration\x20to\x20'+a['builder']+';\x20original\x20owner\x20loses\x20all\x20control\x20permanently','affected_stakeholders':['owner'],'scenario':'Transferring\x20Arbitration\x20ownership','mitigation':'1)\x20Verify\x20new\x20owner\x20twice.\x202)\x20Confirm\x20new\x20owner\x20has\x20350-368\x20permissions\x20configured.\x203)\x20Coordinate\x20before\x20transfer.','evidence':'new_owner='+a['builder']};return null;}},R_AB_3_03={'id':'R-AB-3-03','category':'authority','trigger':'ARBITRATION_ARBITRATION\x20(359)\x20granted\x20to\x20wide\x20audience','check':a=>{if(a['arbitration']&&!a['current_voting_guard_addresses']?.['length'])return{'id':'R-AB-3-03','level':'MEDIUM','category':'authority','title':'Ruling\x20without\x20voting_guard\x20—\x20single-arbiter\x20can\x20rule\x20unchallenged','description':'make_ruling\x20(359)\x20without\x20voting_guard\x20means\x20any\x20permission\x20holder\x20can\x20unilaterally\x20decide','affected_stakeholders':['disputant','voter'],'scenario':'Single-arbiter\x20Arbitration\x20without\x20consensus\x20check','mitigation':'Configure\x20voting_guard\x20(354)\x20to\x20require\x20multi-arbiter\x20consensus\x20before\x20ruling','evidence':'voting_guard=empty'};return null;}},R_AB_4_01={'id':'R-AB-4-01','category':'lifecycle','trigger':'Invalid\x20Arb\x20status\x20transition\x20(7-state\x20flow\x20violation)','check':a=>{if(!a['current_arb_status']||!a['expected_arb_status'])return null;if(a['current_arb_status']===a['expected_arb_status'])return null;if(!isValidArbStatusTransition(a['current_arb_status'],a['expected_arb_status']))return{'id':'R-AB-4-01','level':'CRITICAL','category':'lifecycle','title':'Invalid\x20Arb\x20status\x20transition','description':a['current_arb_status']+'\x20→\x20'+a['expected_arb_status']+'\x20is\x20not\x20a\x20valid\x207-state\x20flow\x20transition','affected_stakeholders':['arbiter','disputant'],'scenario':'Attempting\x20operation\x20out\x20of\x20order\x20(e.g.\x20vote\x20before\x20confirm)','mitigation':'Follow\x20the\x207-state\x20flow:\x20Principal_confirming\x20→\x20Arbitrator_confirming\x20→\x20Voting\x20→\x20Arbitrated\x20→\x20Objectionable\x20→\x20Finished/Withdrawn','evidence':a['current_arb_status']+'\x20→\x20'+a['expected_arb_status']};return null;}},R_AB_4_02={'id':'R-AB-4-02','category':'lifecycle','trigger':'Operation\x20on\x20terminal\x20Arb\x20status\x20(Finished/Withdrawn)','check':a=>{if(!a['current_arb_status'])return null;if(isTerminalArbStatus(a['current_arb_status'])){const b=a['arb_withdraw'];if(!b&&(a['vote']||a['confirm']||a['arbitration']||a['reset']||a['feedback']))return{'id':'R-AB-4-02','level':'HIGH','category':'lifecycle','title':'Operation\x20on\x20terminal\x20Arb\x20status\x20—\x20irreversible','description':'Arb\x20is\x20in\x20terminal\x20status\x20'+a['current_arb_status']+';\x20only\x20arb_withdraw\x20is\x20allowed','affected_stakeholders':['arbiter','disputant'],'scenario':'Voting/ruling/reset\x20on\x20a\x20Finished\x20or\x20Withdrawn\x20Arb','mitigation':'Open\x20a\x20new\x20Arb\x20case\x20via\x20dispute()\x20if\x20further\x20arbitration\x20is\x20needed','evidence':'status='+a['current_arb_status']};}return null;}},R_AB_4_03={'id':'R-AB-4-03','category':'lifecycle','trigger':'reset\x20operation\x20—\x20may\x20indefinitely\x20extend\x20arbitration','check':a=>{if(!a['reset'])return null;return{'id':'R-AB-4-03','level':'MEDIUM','category':'lifecycle','title':'reset\x20operation\x20—\x20arbitration\x20lifecycle\x20extended','description':'reset\x20on\x20Arb\x20'+a['reset']['arb']+'\x20restarts\x20lifecycle\x20to\x20Principal_confirming;\x20feedback\x20required','affected_stakeholders':['arbiter','disputant'],'scenario':'Disputant\x20objects\x20to\x20ruling\x20and\x20resubmits\x20materials','mitigation':'Track\x20reset\x20count\x20—\x20consider\x20capping\x20resets\x20to\x20prevent\x20abuse','evidence':'arb='+a['reset']['arb']};}},R_AB_5_01={'id':'R-AB-5-01','category':'cross_object','trigger':'fees_alloc/fees_transfer\x20unfair\x20distribution\x20—\x20destination\x20not\x20verified','check':a=>{if(!a['fees_transfer'])return null;const b='allocation'in a['fees_transfer']['to']?'Allocation\x20'+a['fees_transfer']['to']['allocation']:'Treasury\x20'+a['fees_transfer']['to']['treasury'];return{'id':'R-AB-5-01','level':'MEDIUM','category':'cross_object','title':'fees_alloc/fees_transfer\x20—\x20verify\x20destination\x20fairness','description':'All\x20Arbitration.balance\x20will\x20be\x20transferred\x20to\x20'+b+';\x20ensure\x20destination\x20policy\x20is\x20fair\x20to\x20arbiters','affected_stakeholders':['arbiter','owner'],'scenario':'Distributing\x20arbitration\x20fees\x20without\x20verifying\x20allocation\x20rules','mitigation':'Verify\x20'+b+'\x20has\x20fair\x20distribution\x20policy;\x20consider\x20allocating\x20to\x20arbiters\x27\x20Allocation','evidence':'dest='+b+',\x20remark='+a['fees_transfer']['payment_remark']};}},R_AB_5_02={'id':'R-AB-5-02','category':'cross_object','trigger':'Dispute\x20filed\x20but\x20Order\x20op\x20permission\x20not\x20verified\x20—\x20E_NOT_OP_PERMISSION','check':a=>{if(!a['dispute'])return null;return{'id':'R-AB-5-02','level':'HIGH','category':'cross_object','title':'Order\x20op\x20permission\x20required\x20for\x20dispute','description':'dispute\x20on\x20Order\x20'+a['dispute']['order']+'\x20requires\x20order::assert_op_permission;\x20signer\x20must\x20have\x20Order\x27s\x20dispute\x20permission','affected_stakeholders':['disputant'],'scenario':'Filing\x20dispute\x20without\x20Order\x20op\x20permission','mitigation':'Ensure\x20signer\x20has\x20Order\x27s\x20dispute\x20operation\x20permission\x20(custom\x20index\x20or\x20builtin)','evidence':'order='+a['dispute']['order']};}},ALL_RULES=[R_AB_1_01,R_AB_1_02,R_AB_1_03,R_AB_1_04,R_AB_2_01,R_AB_2_03,R_AB_3_01,R_AB_3_02,R_AB_3_03,R_AB_4_01,R_AB_4_02,R_AB_4_03,R_AB_5_01,R_AB_5_02];export const ARBITRATION_RISK_VERSION='1.0.0';export function getAllRiskRules(){return[...ALL_RULES];}export function assessArbitrationRisks(a){const b=[];for(const f of ALL_RULES){const g=f['check'](a);if(g)b['push'](g);}const c=b['length']===0x0?'LOW':b['some'](h=>h['level']==='CRITICAL')?'CRITICAL':b['some'](h=>h['level']==='HIGH')?'HIGH':b['some'](h=>h['level']==='MEDIUM')?'MEDIUM':'LOW',d={};for(const h of b){d[h['category']]=(d[h['category']]??0x0)+0x1;}const e={};for(const i of b){for(const j of i['affected_stakeholders']){if(!e[j])e[j]=[];e[j]['push'](i['id']+':\x20'+i['mitigation']);}}return{'summary':'Assessed\x20'+b['length']+'\x20risk(s)\x20across\x20'+Object['keys'](d)['length']+'\x20categories','risks':b,'overall_risk':c,'risks_by_category':d,'stakeholder_advice':e,'needs_human_review':b['some'](k=>k['level']==='CRITICAL'||k['level']==='HIGH')};}
1
+ import{MAX_VOTING_GUARD_COUNT}from'@wowok/wowok';import{getJudgmentDoc,factoryRulePack}from'../config/judgment.js';import{evaluateRuleBook}from'../config/rule-engine.js';import{isTerminalArbStatus,isValidArbStatusTransition}from'./arbitration-ledger.js';const U8_MAX=0xff,U32_MAX=0xffffffff;export function arbitrationRiskFacts(a){const b=a['voting_guard'],c=!!b&&(b['op']==='add'||b['op']==='set'),d=c?b['op']==='set'?b['guards']['length']:(a['current_voting_guard_count']??0x0)+b['guards']['length']:undefined;let e,f;if(c)for(const E of b['guards']){const F=E??{},G=F['vote_weight'];if(!G||typeof G!=='object')continue;if('GuardIdentifier'in G&&G['GuardIdentifier']!==undefined&&Number(G['GuardIdentifier'])>U8_MAX){e=Number(G['GuardIdentifier']);break;}if('FixedValue'in G&&G['FixedValue']!==undefined&&Number(G['FixedValue'])>U32_MAX){f=Number(G['FixedValue']);break;}}let h=![],i,j,k;if(c){const H=b['guards'];if(H['length']>=0x2){const I=H['filter'](J=>{const K=J?.['vote_weight'];return!!K&&typeof K==='object'&&'FixedValue'in K&&K['FixedValue']!==undefined;})['map'](J=>Number(J['vote_weight']['FixedValue']));if(I['length']>0x0){const J=I['reduce']((L,M)=>L+M,0x0),K=Math['max'](...I);J>0x0&&K/J>0.5&&(h=!![],i=K,j=J,k=(K/J*0x64)['toFixed'](0x1));}}}let l=![],m,n;if(a['dispute']&&a['current_arbitration_fee']!==undefined)try{const L=BigInt(a['current_arbitration_fee']),M=a['dispute']['fee'],N=typeof M==='object'&&M!==null&&'balance'in M?BigInt(M['balance']??0x0):BigInt(0x0);m=N['toString'](),n=L['toString'](),l=N<L;}catch{}const o=!!a['dispute'],p=a['confirm']?.['voting_deadline']??a['voting_deadline_change']?.['voting_deadline'],q=a['current_timestamp_ms'],r=p!==undefined&&p!==null&&q!==undefined&&p<q,s=a['vote']?.['voting_guard'],t=a['current_voting_guard_addresses'],u=!t||t['length']===0x0,v=a['current_arb_status'],x=a['expected_arb_status'],y=!!v&&!!x&&v!==x&&!isValidArbStatusTransition(v,x),z=!!v&&isTerminalArbStatus(v),A=z&&!a['arb_withdraw']&&!!(a['vote']||a['confirm']||a['arbitration']||a['reset']||a['feedback']),B=a['reset']?String(a['reset']['arb']):undefined;let C,D;if(a['fees_transfer']){const O=a['fees_transfer']['to']??{};C='allocation'in O?'Allocation\x20'+O['allocation']:'Treasury\x20'+O['treasury'],D=String(a['fees_transfer']['payment_remark']);}return{'voting_guard_add_set':c,'voting_guard_new_count':d,'max_voting_guard_count':MAX_VOTING_GUARD_COUNT,'voting_guard_count_exceeded':d!==undefined&&d>MAX_VOTING_GUARD_COUNT,'weight_guard_identifier_over':e!==undefined,'weight_guard_identifier_value':e,'weight_fixed_over':f!==undefined,'weight_fixed_value':f,'weight_collusion_dominant':h,'weight_max':i,'weight_total':j,'weight_ratio_pct':k,'dispute_present':o,'dispute_fee_insufficient':l,'dispute_fee_provided':m,'arbitration_fee_required':n,'current_bPaused':a['current_bPaused'],'voting_deadline_selected':p??undefined,'current_timestamp_ms':q,'voting_deadline_in_past':r,'vote_voting_guard':s,'voting_guard_list_empty':u,'vote_guard_registered':!u&&s!==undefined?t['includes'](s):![],'registered_voting_guards':!u?t['join'](','):undefined,'builder':a['builder'],'arbitration_op_present':!!a['arbitration'],'current_arb_status':v,'expected_arb_status':x,'arb_transition_invalid':y,'arb_status_terminal':z,'arb_terminal_op_blocked':A,'reset_present':!!a['reset'],'reset_arb':B,'fees_transfer_present':!!a['fees_transfer'],'fees_transfer_dest':C,'fees_transfer_remark':D,'dispute_order':a['dispute']?String(a['dispute']['order']):undefined};}function arbitrationRuleBook(){const a=getJudgmentDoc()['rules']['domains']['arbitration'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27arbitration\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function findingToArbitrationRisk(a){return{'id':a['rule_id'],'level':a['level'],'category':a['dimension']??'structural','title':a['title'],'description':a['description'],'affected_stakeholders':a['stakeholders']??[],'scenario':a['scenario']??'','mitigation':a['mitigation']??'','evidence':a['evidence'],...a['exposure']!=null?{'exposure':a['exposure']}:{}};}export const ARBITRATION_RISK_VERSION='1.0.0';export function getAllRiskRules(){const a=factoryRulePack('arbitration');if(!a)return[];return a['rules']['map'](b=>({'id':b['rule_id'],'category':b['dimension']??'structural','trigger':b['trigger']??'','check':c=>{const {findings:d}=evaluateRuleBook([b],arbitrationRiskFacts(c));return d['length']>0x0?findingToArbitrationRisk(d[0x0]):null;}}));}export function assessArbitrationRisks(a){const {findings:b}=evaluateRuleBook(arbitrationRuleBook(),arbitrationRiskFacts(a)),c=b['map'](findingToArbitrationRisk),d=c['length']===0x0?'low':c['some'](g=>g['level']==='critical')?'critical':c['some'](g=>g['level']==='high')?'high':c['some'](g=>g['level']==='medium')?'medium':'low',e={};for(const g of c){e[g['category']]=(e[g['category']]??0x0)+0x1;}const f={};for(const h of c){for(const i of h['affected_stakeholders']){if(!f[i])f[i]=[];f[i]['push'](h['id']+':\x20'+h['mitigation']);}}return{'summary':'Assessed\x20'+c['length']+'\x20risk(s)\x20across\x20'+Object['keys'](e)['length']+'\x20categories','risks':c,'overall_risk':d,'risks_by_category':e,'stakeholder_advice':f,'needs_human_review':c['some'](j=>j['level']==='critical'||j['level']==='high')};}
@@ -1 +1 @@
1
- export const ARBITRATION_TEMPLATES=[{'id':'T-AB-01','name':'Single-arbiter\x20quick\x20ruling','description':'Simplest\x20Arbitration:\x20one\x20arbiter\x20makes\x20all\x20rulings.\x20voting_guard\x20empty\x20(open\x20vote,\x20but\x20only\x20arbiter\x20has\x20358\x20perm).\x20Suitable\x20for\x20small-scale\x20/\x20fast\x20dispute\x20resolution.','applicable_scenes':['arbitration_create','arbitration_ruling','arbitration_confirm'],'industry_tags':['retail','freelance','small_business'],'params':[{'name':'owner_address','type':'address','description':'Arbitration\x20owner\x20(also\x20admin)','required':!![]},{'name':'arbiter_address','type':'address','description':'Single\x20arbiter\x20address\x20(gets\x20ARBITRATION_VOTE=358\x20+\x20ARBITRATION_ARBITRATION=359)','required':!![]},{'name':'coin_type','type':'string','description':'Coin\x20type\x20for\x20arbitration\x20fee\x20(e.g.\x200x2::wow::WOW)','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]},{'name':'fee_amount','type':'number','description':'Dispute\x20application\x20fee\x20(u64,\x20in\x20Coin\x20base\x20units)','required':![],'default':0x0},{'name':'arbitration_name','type':'string','description':'Local\x20name\x20for\x20the\x20Arbitration\x20object','required':![]}],'body':a=>({'object':{'name':a['arbitration_name']??'single_arb_arbitration','type_parameter':a['coin_type'],'permission':{'name':(a['arbitration_name']??'single_arb')+'_permission'}},'description':a['description'],'fee':String(a['fee_amount']??0x0),'pause':![]}),'notes':['voting_guard\x20remains\x20empty\x20→\x20vote()\x20uses\x20open\x20vote\x20(1\x20person\x201\x20vote)','Only\x20arbiter_address\x20should\x20be\x20granted\x20ARBITRATION_VOTE\x20(358)\x20+\x20ARBITRATION_ARBITRATION\x20(359)','Fast\x20ruling:\x20arbiter\x20confirms\x20materials\x20→\x20votes\x20→\x20makes\x20ruling\x20in\x20one\x20session','Not\x20suitable\x20for\x20high-value\x20disputes\x20(no\x20consensus\x20check)']},{'id':'T-AB-02','name':'Multi-arbiter\x20voting\x20(weighted)','description':'Multiple\x20arbiters\x20vote\x20with\x20weighted\x20voting_guard.\x20Each\x20arbiter\x27s\x20Guard\x20has\x20FixedValue\x20weight.\x20Ruling\x20requires\x20majority\x20weight.','applicable_scenes':['arbitration_create','arbitration_vote','arbitration_voting_guard_config'],'industry_tags':['governance','dao','committee'],'params':[{'name':'owner_address','type':'address','description':'Arbitration\x20owner','required':!![]},{'name':'arbiter_guards','type':'string[]','description':'Guard\x20addresses\x20for\x20each\x20arbiter\x20(will\x20be\x20added\x20to\x20voting_guard)','required':!![]},{'name':'vote_weights','type':'string[]','description':'FixedValue\x20weights\x20for\x20each\x20arbiter\x20(parallel\x20to\x20arbiter_guards)','required':!![]},{'name':'coin_type','type':'string','description':'Coin\x20type','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]},{'name':'fee_amount','type':'number','description':'Dispute\x20fee','required':![],'default':0x0}],'body':a=>{const b=a['arbiter_guards']['map']((c,d)=>({'guard':c,'vote_weight':{'FixedValue':Number(a['vote_weights'][d]??0x1)}}));return{'object':{'name':'weighted_arbitration','type_parameter':a['coin_type'],'permission':{'name':'weighted_arb_permission'}},'description':a['description'],'fee':String(a['fee_amount']??0x0),'pause':![],'voting_guard':{'op':'set','guards':b}};},'notes':['voting_guard\x20non-empty\x20→\x20vote\x20MUST\x20use\x20vote_with_voting_guard','Each\x20arbiter\x27s\x20Guard\x20must\x20be\x20a\x20valid\x20Guard\x20object\x20they\x20can\x20submit\x20Passport\x20for','Consider:\x20max(arbiter_weights)\x20/\x20total_weights\x20<\x200.5\x20to\x20avoid\x20collusion\x20(see\x20R-AB-3-01)','Max\x2050\x20voting_guards\x20(MAX_VOTING_GUARD_COUNT)']},{'id':'T-AB-03','name':'Public\x20voting\x20arbitration','description':'voting_guard\x20allows\x20public\x20to\x20vote\x20(anyone\x20with\x20a\x20Guard\x20can\x20vote).\x20Suitable\x20for\x20community-driven\x20dispute\x20resolution.','applicable_scenes':['arbitration_create','arbitration_vote','arbitration_voting_guard_config'],'industry_tags':['community','public_goods','social'],'params':[{'name':'owner_address','type':'address','description':'Arbitration\x20owner','required':!![]},{'name':'public_guard','type':'address','description':'Guard\x20address\x20anyone\x20can\x20submit\x20Passport\x20for\x20(e.g.\x20based\x20on\x20account\x20existence)','required':!![]},{'name':'vote_weight','type':'number','description':'FixedValue\x20weight\x20per\x20public\x20voter\x20(e.g.\x201)','required':![],'default':0x1},{'name':'coin_type','type':'string','description':'Coin\x20type','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]}],'body':a=>({'object':{'name':'public_arbitration','type_parameter':a['coin_type'],'permission':{'name':'public_arb_permission'}},'description':a['description'],'fee':'0','pause':![],'voting_guard':{'op':'set','guards':[{'guard':a['public_guard'],'vote_weight':{'FixedValue':Number(a['vote_weight']??0x1)}}]}}),'notes':['Public\x20voting:\x20anyone\x20holding\x20the\x20public_guard\x20can\x20vote','Consider\x20using\x20GuardIdentifier\x20(dynamic\x20weight)\x20for\x20token-weighted\x20voting','Low/zero\x20fee\x20to\x20encourage\x20participation\x20—\x20but\x20watch\x20for\x20spam\x20disputes','Suitable\x20for\x20community\x20moderation,\x20content\x20disputes,\x20public\x20goods\x20arbitration']},{'id':'T-AB-04','name':'Scope-restricted\x20arbitration','description':'usage_guard\x20filters\x20which\x20disputes\x20can\x20be\x20filed.\x20Only\x20users\x20passing\x20the\x20Guard\x20can\x20file\x20disputes.\x20Suitable\x20for\x20verified-merchant\x20/\x20KYC\x20arbitration.','applicable_scenes':['arbitration_create','arbitration_usage_guard_config','arbitration_dispute'],'industry_tags':['kyc','verified_merchant','enterprise'],'params':[{'name':'owner_address','type':'address','description':'Arbitration\x20owner','required':!![]},{'name':'usage_guard_address','type':'address','description':'Guard\x20address\x20that\x20filters\x20who\x20can\x20file\x20disputes\x20(KYC/verification)','required':!![]},{'name':'coin_type','type':'string','description':'Coin\x20type','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]},{'name':'arbiter_address','type':'address','description':'Arbiter\x20address\x20(single\x20arbiter\x20for\x20simplicity)','required':!![]},{'name':'fee_amount','type':'number','description':'Dispute\x20fee\x20(higher\x20to\x20deter\x20spam)','required':![],'default':0x3b9aca00}],'body':a=>({'object':{'name':'restricted_arbitration','type_parameter':a['coin_type'],'permission':{'name':'restricted_arb_permission'}},'description':a['description'],'fee':String(a['fee_amount']??0x3b9aca00),'pause':![],'usage_guard':a['usage_guard_address']}),'notes':['usage_guard\x20set\x20→\x20dispute\x20MUST\x20use\x20dispute_with_passport\x20variant','Guard\x20verifies:\x20KYC\x20/\x20membership\x20/\x20token-balance\x20/\x20etc.','Higher\x20fee\x20(default\x201\x20WOW)\x20to\x20deter\x20spam\x20from\x20verified\x20users','Arbiter\x20should\x20also\x20be\x20Guard-verified\x20for\x20consistency']},{'id':'T-AB-05','name':'Arbitration\x20committee','description':'Multi-arbiter\x20committee\x20with\x20weighted\x20voting\x20+\x20usage_guard.\x20Most\x20controlled\x20configuration\x20—\x20restricted\x20dispute\x20filing\x20+\x20weighted\x20voting\x20+\x20multi-arbiter\x20ruling.','applicable_scenes':['arbitration_create','arbitration_voting_guard_config','arbitration_usage_guard_config','arbitration_ruling'],'industry_tags':['enterprise','legal','high_value'],'params':[{'name':'owner_address','type':'address','description':'Committee\x20owner','required':!![]},{'name':'committee_guards','type':'string[]','description':'Guard\x20addresses\x20for\x20each\x20committee\x20member','required':!![]},{'name':'member_weights','type':'string[]','description':'Vote\x20weights\x20for\x20each\x20member\x20(parallel\x20to\x20committee_guards)','required':!![]},{'name':'membership_guard','type':'address','description':'usage_guard\x20for\x20dispute\x20filing\x20(membership\x20verification)','required':!![]},{'name':'coin_type','type':'string','description':'Coin\x20type','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]},{'name':'fee_amount','type':'number','description':'Dispute\x20fee\x20(high\x20for\x20high-value\x20disputes)','required':![],'default':0x2540be400}],'body':a=>{const b=a['committee_guards']['map']((c,d)=>({'guard':c,'vote_weight':{'FixedValue':Number(a['member_weights'][d]??0x1)}}));return{'object':{'name':'committee_arbitration','type_parameter':a['coin_type'],'permission':{'name':'committee_arb_permission'}},'description':a['description'],'fee':String(a['fee_amount']??0x2540be400),'pause':![],'voting_guard':{'op':'set','guards':b},'usage_guard':a['membership_guard']};},'notes':['Most\x20restrictive\x20config:\x20weighted\x20voting\x20+\x20restricted\x20filing','Suitable\x20for\x20high-value\x20B2B\x20disputes,\x20legal\x20arbitration,\x20enterprise\x20SLA\x20enforcement','Committee\x20members\x20should\x20have\x20clear\x20escalation\x20/\x20tiebreaker\x20rules','All\x20disputes\x20require\x20Passport\x20(both\x20filing\x20and\x20voting)']},{'id':'T-AB-06','name':'Fee-split\x20arbitration','description':'Pre-configured\x20fees_alloc\x20/\x20fees_transfer\x20destination.\x20After\x20arb_withdraw,\x20fees\x20are\x20automatically\x20distributed\x20to\x20Allocation\x20(for\x20arbiter\x20compensation).','applicable_scenes':['arbitration_create','arbitration_arb_withdraw','arbitration_fees_alloc'],'industry_tags':['marketplace','service','platform'],'params':[{'name':'owner_address','type':'address','description':'Arbitration\x20owner','required':!![]},{'name':'allocation_address','type':'address','description':'Allocation\x20object\x20address\x20for\x20fee\x20distribution\x20to\x20arbiters','required':!![]},{'name':'coin_type','type':'string','description':'Coin\x20type','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]},{'name':'arbiter_address','type':'address','description':'Arbiter\x20(single\x20for\x20simplicity)','required':!![]},{'name':'fee_amount','type':'number','description':'Dispute\x20fee\x20(will\x20be\x20split\x20to\x20arbiters\x20via\x20Allocation)','required':![],'default':0x12a05f200}],'body':a=>({'object':{'name':'feesplit_arbitration','type_parameter':a['coin_type'],'permission':{'name':'feesplit_arb_permission'}},'description':a['description'],'fee':String(a['fee_amount']??0x12a05f200),'pause':![]}),'notes':['Fee-split\x20is\x20a\x202-step\x20process:\x20arb_withdraw\x20→\x20fees_transfer','arb_withdraw\x20(364)\x20moves\x20fees\x20from\x20Arb\x20→\x20Arbitration.balance','fees_alloc\x20(365)\x20or\x20fees_transfer\x20(366)\x20moves\x20fees\x20→\x20Allocation/Treasury','Allocation\x20policy\x20determines\x20how\x20fees\x20are\x20split\x20among\x20arbiters','Payment\x20object\x20is\x20created\x20for\x20bookkeeping\x20(payment_remark\x20+\x20payment_index)']},{'id':'T-AB-07','name':'Appeal\x20arbitration\x20(reset\x20flow)','description':'Template\x20for\x20reset\x20operation\x20—\x20disputant\x20objects\x20to\x20ruling\x20and\x20resubmits\x20materials.\x20Restarts\x20Arb\x20lifecycle\x20from\x20Principal_confirming.','applicable_scenes':['arbitration_reset','arbitration_ruling'],'industry_tags':['legal','appeal','high_value'],'params':[{'name':'arbitration_address','type':'address','description':'Existing\x20Arbitration\x20object\x20address','required':!![]},{'name':'arb_address','type':'address','description':'Arb\x20object\x20address\x20to\x20reset\x20(must\x20be\x20in\x20Objectionable/Arbitrated\x20status)','required':!![]},{'name':'reset_feedback','type':'string','description':'Feedback\x20explaining\x20why\x20disputant\x20objects\x20to\x20the\x20ruling','required':!![]}],'body':a=>({'object':a['arbitration_address'],'reset':{'arb':a['arb_address'],'feedback':a['reset_feedback']}}),'notes':['Precondition:\x20Arb\x20must\x20be\x20in\x20Objectionable\x20(4)\x20or\x20Arbitrated\x20(3)\x20status','Post-condition:\x20Arb\x20status\x20→\x20Principal_confirming\x20(0),\x20lifecycle\x20restarts','Original\x20ruling\x20is\x20invalidated\x20—\x20new\x20voting\x20+\x20ruling\x20required','Consider\x20capping\x20reset\x20count\x20to\x20prevent\x20infinite\x20appeals','reset\x20feedback\x20is\x20permanent\x20—\x20recorded\x20on-chain\x20for\x20audit\x20trail']}];export const ARBITRATION_TEMPLATES_VERSION='1.0.0';export function getAllTemplates(){return[...ARBITRATION_TEMPLATES];}export function getTemplateById(a){return ARBITRATION_TEMPLATES['find'](b=>b['id']===a);}export function getTemplatesByScene(a){return ARBITRATION_TEMPLATES['filter'](b=>b['applicable_scenes']['includes'](a));}export function getTemplatesByIndustry(a){return ARBITRATION_TEMPLATES['filter'](b=>b['industry_tags']['includes'](a)||b['industry_tags']['includes']('universal'));}export function suggestTemplateForScene(a){const b=getTemplatesByScene(a);return b['length']>0x0?b[0x0]:undefined;}export function listTemplates(){return ARBITRATION_TEMPLATES['map'](a=>({'id':a['id'],'name':a['name'],'description':a['description'],'scenes':a['applicable_scenes']}));}export function fillTemplate(a,b){const c=getTemplateById(a);if(!c)return{'ok':![],'error':'Template\x20'+a+'\x20not\x20found'};for(const d of c['params']){if(d['required']&&!(d['name']in b))return{'ok':![],'error':'Missing\x20required\x20param:\x20'+d['name']};}return{'ok':!![],'body':c['body'](b)};}
1
+ export const ARBITRATION_TEMPLATES=[{'id':'T-AB-01','name':'Single-arbiter\x20quick\x20ruling','description':'Simplest\x20Arbitration:\x20one\x20arbiter\x20makes\x20all\x20rulings.\x20voting_guard\x20empty\x20(open\x20vote,\x20but\x20only\x20arbiter\x20has\x20358\x20perm).\x20Suitable\x20for\x20small-scale\x20/\x20fast\x20dispute\x20resolution.','applicable_scenes':['arbitration_create','arbitration_ruling','arbitration_confirm'],'industry_tags':['retail','freelance','small_business'],'params':[{'name':'owner_address','type':'address','description':'Arbitration\x20owner\x20(also\x20admin)','required':!![]},{'name':'arbiter_address','type':'address','description':'Single\x20arbiter\x20address\x20(gets\x20ARBITRATION_VOTE=358\x20+\x20ARBITRATION_ARBITRATION=359)','required':!![]},{'name':'coin_type','type':'string','description':'Coin\x20type\x20for\x20arbitration\x20fee\x20(e.g.\x200x2::wow::WOW)','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]},{'name':'fee_amount','type':'number','description':'Dispute\x20application\x20fee\x20(u64,\x20in\x20Coin\x20base\x20units)','required':![],'default':0x0},{'name':'arbitration_name','type':'string','description':'Local\x20name\x20for\x20the\x20Arbitration\x20object','required':![]}],'body':a=>({'object':{'name':a['arbitration_name']??'single_arb_arbitration','type_parameter':a['coin_type'],'permission':{'name':(a['arbitration_name']??'single_arb')+'_permission'}},'description':a['description'],'fee':String(a['fee_amount']??0x0),'pause':![]}),'notes':['voting_guard\x20remains\x20empty\x20→\x20vote()\x20uses\x20open\x20vote\x20(1\x20person\x201\x20vote)','Only\x20arbiter_address\x20should\x20be\x20granted\x20ARBITRATION_VOTE\x20(358)\x20+\x20ARBITRATION_ARBITRATION\x20(359)','Fast\x20ruling:\x20arbiter\x20confirms\x20materials\x20→\x20votes\x20→\x20makes\x20ruling\x20in\x20one\x20session','Not\x20suitable\x20for\x20high-value\x20disputes\x20(no\x20consensus\x20check)']},{'id':'T-AB-02','name':'Multi-arbiter\x20voting\x20(weighted)','description':'Multiple\x20arbiters\x20vote\x20with\x20weighted\x20voting_guard.\x20Each\x20arbiter\x27s\x20Guard\x20has\x20FixedValue\x20weight.\x20Ruling\x20requires\x20majority\x20weight.','applicable_scenes':['arbitration_create','arbitration_vote','arbitration_voting_guard_config'],'industry_tags':['governance','dao','committee'],'params':[{'name':'owner_address','type':'address','description':'Arbitration\x20owner','required':!![]},{'name':'arbiter_guards','type':'string[]','description':'Guard\x20addresses\x20for\x20each\x20arbiter\x20(will\x20be\x20added\x20to\x20voting_guard)','required':!![]},{'name':'vote_weights','type':'string[]','description':'FixedValue\x20weights\x20for\x20each\x20arbiter\x20(parallel\x20to\x20arbiter_guards)','required':!![]},{'name':'coin_type','type':'string','description':'Coin\x20type','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]},{'name':'fee_amount','type':'number','description':'Dispute\x20fee','required':![],'default':0x0}],'body':a=>{const b=a['arbiter_guards']['map']((c,d)=>({'guard':c,'vote_weight':{'FixedValue':Number(a['vote_weights'][d]??0x1)}}));return{'object':{'name':'weighted_arbitration','type_parameter':a['coin_type'],'permission':{'name':'weighted_arb_permission'}},'description':a['description'],'fee':String(a['fee_amount']??0x0),'pause':![],'voting_guard':{'op':'set','guards':b}};},'notes':['voting_guard\x20non-empty\x20→\x20votes\x20MUST\x20be\x20submitted\x20via\x20the\x20Passport-verified\x20voting\x20path','Each\x20arbiter\x27s\x20Guard\x20must\x20be\x20a\x20valid\x20Guard\x20object\x20they\x20can\x20submit\x20Passport\x20for','Consider:\x20max(arbiter_weights)\x20/\x20total_weights\x20<\x200.5\x20to\x20avoid\x20collusion\x20(see\x20R-AB-3-01)','Max\x2050\x20voting_guards\x20(MAX_VOTING_GUARD_COUNT)']},{'id':'T-AB-03','name':'Public\x20voting\x20arbitration','description':'voting_guard\x20allows\x20public\x20to\x20vote\x20(anyone\x20with\x20a\x20Guard\x20can\x20vote).\x20Suitable\x20for\x20community-driven\x20dispute\x20resolution.','applicable_scenes':['arbitration_create','arbitration_vote','arbitration_voting_guard_config'],'industry_tags':['community','public_goods','social'],'params':[{'name':'owner_address','type':'address','description':'Arbitration\x20owner','required':!![]},{'name':'public_guard','type':'address','description':'Guard\x20address\x20anyone\x20can\x20submit\x20Passport\x20for\x20(e.g.\x20based\x20on\x20account\x20existence)','required':!![]},{'name':'vote_weight','type':'number','description':'FixedValue\x20weight\x20per\x20public\x20voter\x20(e.g.\x201)','required':![],'default':0x1},{'name':'coin_type','type':'string','description':'Coin\x20type','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]}],'body':a=>({'object':{'name':'public_arbitration','type_parameter':a['coin_type'],'permission':{'name':'public_arb_permission'}},'description':a['description'],'fee':'0','pause':![],'voting_guard':{'op':'set','guards':[{'guard':a['public_guard'],'vote_weight':{'FixedValue':Number(a['vote_weight']??0x1)}}]}}),'notes':['Public\x20voting:\x20anyone\x20holding\x20the\x20public_guard\x20can\x20vote','Consider\x20using\x20GuardIdentifier\x20(dynamic\x20weight)\x20for\x20token-weighted\x20voting','Low/zero\x20fee\x20to\x20encourage\x20participation\x20—\x20but\x20watch\x20for\x20spam\x20disputes','Suitable\x20for\x20community\x20moderation,\x20content\x20disputes,\x20public\x20goods\x20arbitration']},{'id':'T-AB-04','name':'Scope-restricted\x20arbitration','description':'usage_guard\x20filters\x20which\x20disputes\x20can\x20be\x20filed.\x20Only\x20users\x20passing\x20the\x20Guard\x20can\x20file\x20disputes.\x20Suitable\x20for\x20verified-merchant\x20/\x20KYC\x20arbitration.','applicable_scenes':['arbitration_create','arbitration_usage_guard_config','arbitration_dispute'],'industry_tags':['kyc','verified_merchant','enterprise'],'params':[{'name':'owner_address','type':'address','description':'Arbitration\x20owner','required':!![]},{'name':'usage_guard_address','type':'address','description':'Guard\x20address\x20that\x20filters\x20who\x20can\x20file\x20disputes\x20(KYC/verification)','required':!![]},{'name':'coin_type','type':'string','description':'Coin\x20type','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]},{'name':'arbiter_address','type':'address','description':'Arbiter\x20address\x20(single\x20arbiter\x20for\x20simplicity)','required':!![]},{'name':'fee_amount','type':'number','description':'Dispute\x20fee\x20(higher\x20to\x20deter\x20spam)','required':![],'default':0x3b9aca00}],'body':a=>({'object':{'name':'restricted_arbitration','type_parameter':a['coin_type'],'permission':{'name':'restricted_arb_permission'}},'description':a['description'],'fee':String(a['fee_amount']??0x3b9aca00),'pause':![],'usage_guard':a['usage_guard_address']}),'notes':['usage_guard\x20set\x20→\x20disputes\x20MUST\x20be\x20filed\x20via\x20the\x20Passport-verified\x20dispute\x20variant','Guard\x20verifies:\x20KYC\x20/\x20membership\x20/\x20token-balance\x20/\x20etc.','Higher\x20fee\x20(default\x201\x20WOW)\x20to\x20deter\x20spam\x20from\x20verified\x20users','Arbiter\x20should\x20also\x20be\x20Guard-verified\x20for\x20consistency']},{'id':'T-AB-05','name':'Arbitration\x20committee','description':'Multi-arbiter\x20committee\x20with\x20weighted\x20voting\x20+\x20usage_guard.\x20Most\x20controlled\x20configuration\x20—\x20restricted\x20dispute\x20filing\x20+\x20weighted\x20voting\x20+\x20multi-arbiter\x20ruling.','applicable_scenes':['arbitration_create','arbitration_voting_guard_config','arbitration_usage_guard_config','arbitration_ruling'],'industry_tags':['enterprise','legal','high_value'],'params':[{'name':'owner_address','type':'address','description':'Committee\x20owner','required':!![]},{'name':'committee_guards','type':'string[]','description':'Guard\x20addresses\x20for\x20each\x20committee\x20member','required':!![]},{'name':'member_weights','type':'string[]','description':'Vote\x20weights\x20for\x20each\x20member\x20(parallel\x20to\x20committee_guards)','required':!![]},{'name':'membership_guard','type':'address','description':'usage_guard\x20for\x20dispute\x20filing\x20(membership\x20verification)','required':!![]},{'name':'coin_type','type':'string','description':'Coin\x20type','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]},{'name':'fee_amount','type':'number','description':'Dispute\x20fee\x20(high\x20for\x20high-value\x20disputes)','required':![],'default':0x2540be400}],'body':a=>{const b=a['committee_guards']['map']((c,d)=>({'guard':c,'vote_weight':{'FixedValue':Number(a['member_weights'][d]??0x1)}}));return{'object':{'name':'committee_arbitration','type_parameter':a['coin_type'],'permission':{'name':'committee_arb_permission'}},'description':a['description'],'fee':String(a['fee_amount']??0x2540be400),'pause':![],'voting_guard':{'op':'set','guards':b},'usage_guard':a['membership_guard']};},'notes':['Most\x20restrictive\x20config:\x20weighted\x20voting\x20+\x20restricted\x20filing','Suitable\x20for\x20high-value\x20B2B\x20disputes,\x20legal\x20arbitration,\x20enterprise\x20SLA\x20enforcement','Committee\x20members\x20should\x20have\x20clear\x20escalation\x20/\x20tiebreaker\x20rules','All\x20disputes\x20require\x20Passport\x20(both\x20filing\x20and\x20voting)']},{'id':'T-AB-06','name':'Fee-split\x20arbitration','description':'Pre-configured\x20fee-distribution\x20destination.\x20After\x20the\x20fee\x20withdrawal\x20(364),\x20fees\x20are\x20automatically\x20distributed\x20to\x20the\x20Allocation\x20(for\x20arbiter\x20compensation).','applicable_scenes':['arbitration_create','arbitration_arb_withdraw','arbitration_fees_alloc'],'industry_tags':['marketplace','service','platform'],'params':[{'name':'owner_address','type':'address','description':'Arbitration\x20owner','required':!![]},{'name':'allocation_address','type':'address','description':'Allocation\x20object\x20address\x20for\x20fee\x20distribution\x20to\x20arbiters','required':!![]},{'name':'coin_type','type':'string','description':'Coin\x20type','required':!![]},{'name':'description','type':'string','description':'Arbitration\x20description','required':!![]},{'name':'arbiter_address','type':'address','description':'Arbiter\x20(single\x20for\x20simplicity)','required':!![]},{'name':'fee_amount','type':'number','description':'Dispute\x20fee\x20(will\x20be\x20split\x20to\x20arbiters\x20via\x20Allocation)','required':![],'default':0x12a05f200}],'body':a=>({'object':{'name':'feesplit_arbitration','type_parameter':a['coin_type'],'permission':{'name':'feesplit_arb_permission'}},'description':a['description'],'fee':String(a['fee_amount']??0x12a05f200),'pause':![]}),'notes':['Fee-split\x20is\x20a\x202-step\x20process:\x20withdraw\x20fees\x20from\x20the\x20Arb\x20object\x20(364)\x20→\x20transfer\x20them\x20out\x20of\x20the\x20Arbitration\x20balance\x20(365/366)','Fee\x20withdrawal\x20(364)\x20moves\x20fees\x20from\x20the\x20Arb\x20object\x20into\x20the\x20Arbitration\x20balance','Fee\x20distribution\x20(365)\x20or\x20the\x20balance\x20transfer\x20(366)\x20moves\x20fees\x20to\x20the\x20Allocation/Treasury','Allocation\x20policy\x20determines\x20how\x20fees\x20are\x20split\x20among\x20arbiters','Payment\x20object\x20is\x20created\x20for\x20bookkeeping\x20(payment_remark\x20+\x20payment_index)']},{'id':'T-AB-07','name':'Appeal\x20arbitration\x20(reset\x20flow)','description':'Template\x20for\x20reset\x20operation\x20—\x20disputant\x20objects\x20to\x20ruling\x20and\x20resubmits\x20materials.\x20Restarts\x20Arb\x20lifecycle\x20from\x20Principal_confirming.','applicable_scenes':['arbitration_reset','arbitration_ruling'],'industry_tags':['legal','appeal','high_value'],'params':[{'name':'arbitration_object','type':'address','description':'Existing\x20Arbitration\x20object\x20address','required':!![]},{'name':'arb_address','type':'address','description':'Arb\x20object\x20address\x20to\x20reset\x20(must\x20be\x20in\x20Objectionable/Arbitrated\x20status)','required':!![]},{'name':'reset_feedback','type':'string','description':'Feedback\x20explaining\x20why\x20disputant\x20objects\x20to\x20the\x20ruling','required':!![]}],'body':a=>({'object':a['arbitration_object'],'reset':{'arb':a['arb_address'],'feedback':a['reset_feedback']}}),'notes':['Precondition:\x20Arb\x20must\x20be\x20in\x20Objectionable\x20(4)\x20or\x20Arbitrated\x20(3)\x20status','Post-condition:\x20Arb\x20status\x20→\x20Principal_confirming\x20(0),\x20lifecycle\x20restarts','Original\x20ruling\x20is\x20invalidated\x20—\x20new\x20voting\x20+\x20ruling\x20required','Consider\x20capping\x20reset\x20count\x20to\x20prevent\x20infinite\x20appeals','reset\x20feedback\x20is\x20permanent\x20—\x20recorded\x20on-chain\x20for\x20audit\x20trail']}];export const ARBITRATION_TEMPLATES_VERSION='1.0.0';export function getAllTemplates(){return[...ARBITRATION_TEMPLATES];}export function getTemplateById(a){return ARBITRATION_TEMPLATES['find'](b=>b['id']===a);}export function getTemplatesByScene(a){return ARBITRATION_TEMPLATES['filter'](b=>b['applicable_scenes']['includes'](a));}export function getTemplatesByIndustry(a){return ARBITRATION_TEMPLATES['filter'](b=>b['industry_tags']['includes'](a)||b['industry_tags']['includes']('universal'));}export function suggestTemplateForScene(a){const b=getTemplatesByScene(a);return b['length']>0x0?b[0x0]:undefined;}export function listTemplates(){return ARBITRATION_TEMPLATES['map'](a=>({'id':a['id'],'name':a['name'],'description':a['description'],'scenes':a['applicable_scenes']}));}export function fillTemplate(a,b){const c=getTemplateById(a);if(!c)return{'ok':![],'error':'Template\x20'+a+'\x20not\x20found'};for(const d of c['params']){if(d['required']&&!(d['name']in b))return{'ok':![],'error':'Missing\x20required\x20param:\x20'+d['name']};}return{'ok':!![],'body':c['body'](b)};}